Mật mã học, mật mã học và phân tích mật mã

Hãy chuyển sang kiến ​​thức lý thuyết mà bạn sẽ cần khi viết dự án cuối cùng. Hãy cùng tìm hiểu thêm về mật mã và các bộ phận cấu thành của nó. Đồng thời, chúng ta sẽ tìm hiểu thêm về mật mã mà bạn sẽ sử dụng khi viết dự án cuối cùng.

1. Mật mã học và các bộ phận cấu thành của nó

Mật mã học là một lĩnh vực kiến ​​thức bao gồm:

  • Mật mã học (khoa học về mật mã).

    Mật mã học là mã hóa thông tin để bảo vệ nó khỏi sự truy cập trái phép. Thông tin này có thể là văn bản, hình ảnh kỹ thuật số, tín hiệu âm thanh, v.v. Quá trình mã hóa tạo ra một phiên bản mã hóa của thông tin (dữ liệu), được gọi là bản mã hoặc văn bản mã.

  • Phân tích mật mã (phương pháp bẻ khóa các mật mã này).

    Phân tích mật mã kiểm tra các phương pháp phá mật mã và cách áp dụng các phương pháp này. Nói cách khác, phân tích mật mã thực hiện nhiệm vụ ngược lại, nghiên cứu các cách để biến thông tin được mã hóa thành văn bản rõ ràng.

2. Khóa mật mã

Khóa là một lựa chọn dữ liệu được sử dụng để mã hóa và giải mã thông tin. Khả năng giải mã thành công thông tin phụ thuộc vào khóa nào được sử dụng. Nếu một khóa bị mất vì một lý do nào đó, thì dữ liệu sẽ không thể giải mã được.

Kích thước của các khóa mật mã được đo bằng bit. Và điều này có nghĩa là khóa mật mã có độ dài . Độ mạnh mã hóa tốt được cung cấp với độ dài 128 bit.

Các loại khóa mật mã:

  1. Khóa đối xứng (khóa bí mật). Không có gì ngạc nhiên khi các khóa như vậy được sử dụng trong thuật toán khóa đối xứng. Mục đích chính của chúng là thực hiện các chuyển đổi mật mã xuôi hoặc ngược (mã hóa/giải mã, xác minh mã xác thực thông báo).

  2. Phím bất đối xứng. Chúng được sử dụng trong các thuật toán mã hóa khóa bất đối xứng (ví dụ: khi xác minh chữ ký số điện tử).

Vì chúng ta sẽ làm việc với thuật toán mã hóa khóa đối xứng nên chúng ta sẽ không đi sâu vào chi tiết ở đây.

3. Bảng chữ cái thay thế

Bảng chữ cái thay thế là một tập hợp đầy đủ các ký tự được sử dụng để mã hóa các ký tự đầu vào.

4. Các phương pháp thám mã

Có nhiều cách tiếp cận và phương pháp phá mã khác nhau, tức là các cách để bẻ khóa mật mã.

Chúng tôi sẽ mô tả đơn giản nhất trong số họ:

  1. Lực lượng vũ phu (hoặc tìm kiếm vũ phu) đang thử tất cả các phím có thể cho đến khi chúng tôi tìm thấy đúng. Ưu điểm của phương pháp này là sự đơn giản của nó. Nhược điểm là nó không phù hợp với mật mã liên quan đến một số lượng lớn các khóa có thể.

  2. Phân tích mật mã dựa trên dữ liệu thống kê — theo cách tiếp cận này, chúng tôi thu thập số liệu thống kê về sự xuất hiện của các ký tự khác nhau trong bản mã, sau đó chúng tôi giải mã dựa trên thống kê về tần suất xuất hiện của các ký tự khác nhau trong bản rõ.

    Ví dụ: chúng ta biết rằng tần suất xuất hiện của chữ P trong văn bản tiếng Anh là 1,9%. Khi chúng tôi phân tích bản mã, chúng tôi tìm kiếm một ký hiệu xuất hiện với cùng tần số và sau đó kết luận rằng đó là chữ P.

    Nhược điểm của phương pháp này là phụ thuộc vào ngôn ngữ, tác giả và phong cách cụ thể của văn bản.

5. Mật mã Caesar

Đây là một trong những phương thức mã hóa đơn giản và nổi tiếng nhất. Tất nhiên, tên của nó bắt nguồn từ Hoàng đế Gaius Julius Caesar, người đã sử dụng phương pháp này để bí mật trao đổi thư từ với các tướng lĩnh.

Mật mã Caesar là mật mã thay thế trong đó mỗi ký tự trong bản rõ được thay thế bằng một ký tự nằm ở một số vị trí cố định ở bên trái hoặc bên phải của nó trong bảng chữ cái.

Giả sử chúng ta đặt shift thành 3. Trong trường hợp này, A sẽ được thay thế bằng D, B sẽ trở thành E, v.v.

Đây là lượng lý thuyết tối thiểu bạn sẽ cần để hoàn thành dự án cuối cùng. Hãy chuyển sang phần mô tả nhiệm vụ!

Dự án cuối cùng cho mô-đun Cú pháp Java. Hãy viết một cryptanalyzer

Nhiệm vụ của bạn là viết một chương trình hoạt động với mật mã Caesar.

Hãy để bảng chữ cái mật mã của bạn bao gồm tất cả các chữ cái trong bảng chữ cái tiếng Anh cũng như các dấu chấm câu (. , ”” : - ! ? SPACE). Nếu bạn gặp các ký tự không thuộc bảng chữ cái thay thế của chúng tôi, thì hãy bỏ qua chúng.

Những yêu cầu bắt buộc

Chương trình nên có 2 chế độ:

  1. Mã hóa/giải mã. Chương trình phải mã hóa và giải mã văn bản bằng khóa mật mã đã cho.

    Chương trình sẽ nhận được một đường dẫn đến một tệp văn bản chứa văn bản nguồn và tạo một tệp chứa bản mã tương ứng.

  2. Phân tích mật mã bằng tấn công vũ phu

    Trong chế độ này, chương trình phải bẻ khóa bản mã có trong tệp văn bản đầu vào.

    Nếu người dùng chọn brute force, thì chương trình phải liệt kê độc lập các khóa có thể, chọn đúng khóa và giải mã văn bản.

    Hãy suy nghĩ về những tiêu chí mà chương trình nên sử dụng để xác định thành công khóa chính xác. Bạn có thể cần chú ý đến khoảng cách giữa các từ hoặc cách sử dụng đúng dấu chấm câu.

Yêu cầu bổ sung (không bắt buộc)

1. Phá mã bằng phân tích thống kê

Người dùng có thể chọn một trong hai phương pháp thám mã. Nếu người dùng chọn chế độ phân tích thống kê, sau đó nhắc người dùng tải một tệp văn bản bổ sung ở dạng văn bản gốc, tốt nhất là của cùng một tác giả và theo cùng một kiểu. Dựa trên nội dung của tệp thứ hai, chương trình sẽ tổng hợp số liệu thống kê về sự xuất hiện của các ký tự và sau đó cố gắng sử dụng các số liệu thống kê này để thực hiện phân tích mật mã của bản mã.

2. Giao diện người dùng

Tạo các hộp thoại để tương tác với người dùng theo ý của bạn. Nếu muốn, bạn có thể sử dụng khung đồ họa Swing và JavaFX.

Tải giải pháp đã hoàn thành của bạn lên kho lưu trữ Git công khai.

Dự án sẽ được kiểm tra khi nhóm đi qua nó