Sự khác biệt chính giữa mật mã khối và mật mã luồng là mật mã khối mã hóa và giải mã một khối văn bản tại một thời điểm. Mặt khác, mã hóa dòng mã hóa và giải mã văn bản bằng cách lấy một byte của văn bản tại một thời điểm.
Biểu đồ so sánh
Cơ sở để so sánh | Khóa mật mã | Mật mã dòng |
---|---|---|
Căn bản | Chuyển đổi văn bản đơn giản bằng cách lấy khối của nó tại một thời điểm. | Chuyển đổi văn bản bằng cách lấy một byte của văn bản đơn giản tại một thời điểm. |
Phức tạp | Thiết kế đơn giản | Phức tạp tương đối |
Không có bit nào được sử dụng | 64 bit trở lên | 8 bit |
Nhầm lẫn và khuếch tán | Sử dụng cả nhầm lẫn và khuếch tán | Chỉ dựa vào nhầm lẫn |
Các chế độ thuật toán được sử dụng | ECB (Sách mã điện tử) CBC (Chuỗi khối mã hóa) | CFB (Phản hồi mật mã) OFB (Phản hồi đầu ra) |
Sự đảo ngược | Đảo ngược văn bản được mã hóa là khó. | Nó sử dụng XOR để mã hóa có thể dễ dàng đảo ngược thành văn bản thuần túy. |
Thực hiện | Mật mã Feistel | Mật mã Vernam |
Định nghĩa về mật mã khối
Mã hóa khối nhận một tin nhắn và chia nó thành một khối có kích thước cố định và chuyển đổi một khối tin nhắn ngay lập tức. Ví dụ: chúng tôi có một tin nhắn bằng văn bản đơn giản STREET_BY_STREET 'bắt buộc phải được mã hóa. Sử dụng mật mã bock, lúc đầu, STREET phải được mã hóa, sau đó là mã _BY_ Lần và cuối cùng là tại STREET Lần cuối cùng.
Trong thực tế, giao tiếp chỉ diễn ra trong bit. Do đó, STREET thực sự có nghĩa là tương đương nhị phân của ký tự ASCII của STREET. Sau đó, bất kỳ thuật toán mã hóa những điều này; các bit kết quả được chuyển đổi trở lại thành tương đương ASCII của chúng.
Một vấn đề rõ ràng liên quan đến việc sử dụng thuật toán mã khối là lặp lại văn bản, trong đó mật mã tương tự được tạo ra. Do đó, nó sẽ đưa ra một gợi ý cho nhà phân tích mật mã, giúp dễ dàng tìm ra các chuỗi định kỳ của văn bản thuần túy. Kết quả là, nó có thể tiết lộ toàn bộ tin nhắn.
Để khắc phục vấn đề này, chế độ xích được sử dụng. Trong kỹ thuật này, khối văn bản mật mã trước được trộn với khối hiện tại, do đó, đối với văn bản mật mã mơ hồ, điều này tránh các mẫu khối lặp lại có cùng nội dung.
Định nghĩa về mật mã dòng
Stream Mật mã thường mã hóa một byte tin nhắn tại thời điểm đó thay vì sử dụng các khối. Hãy lấy một ví dụ, giả sử thông điệp gốc (văn bản thuần túy) là màu xanh da trời, màu xanh da trời trong ASCII (tức là định dạng văn bản). Khi bạn chuyển đổi các ASCII này thành các giá trị nhị phân tương đương, nó sẽ cung cấp đầu ra ở dạng 0 và 1. Hãy để nó được dịch trong 010111001.
Để mã hóa và giải mã, một trình tạo bit giả ngẫu nhiên được sử dụng trong đó một khóa và văn bản thuần túy được tải. Trình tạo bit giả ngẫu nhiên tạo ra một luồng các số 8 bit dường như ngẫu nhiên được gọi là luồng chính. Đặt khóa đầu vào là 100101011. Bây giờ khóa và văn bản gốc được XOR. Logic XOR rất đơn giản để hiểu.
XOR tạo ra đầu ra là 1 khi một đầu vào bằng 0 và đầu vào khác là 1. Đầu ra là 0 nếu cả hai đầu vào đều 0 hoặc cả hai đầu vào đều 1.
Nhầm lẫn là một phương pháp đảm bảo rằng một văn bản mật mã không đưa ra manh mối nào về văn bản thuần gốc.
Phổ biến là một chiến lược được sử dụng để tăng cường sự dư thừa của văn bản đơn giản bằng cách trải rộng nó trên các hàng và cột.
Sự khác biệt chính giữa Mật mã khối và Mật mã dòng
- Kỹ thuật mã hóa khối liên quan đến mã hóa một khối văn bản tại một thời điểm, tức là đơn lẻ. Tương tự, giải mã văn bản bằng cách lấy hết khối này đến khối khác. Ngược lại, kỹ thuật mã hóa Stream liên quan đến mã hóa và giải mã một byte văn bản tại một thời điểm.
- Mật mã khối sử dụng cả nhầm lẫn và khuếch tán trong khi mật mã luồng chỉ dựa vào nhầm lẫn.
- Kích thước thông thường của khối có thể là 64 hoặc 128 bit trong mật mã khối. Ngược lại, 1 byte (8 bit) tại một thời điểm được chuyển đổi trong mật mã luồng.
- Mật mã khối sử dụng các chế độ thuật toán ECB (Sách mã điện tử) và CBC (Mã hóa chuỗi khối) . Ngược lại, mật mã Stream sử dụng các chế độ thuật toán CFB (Phản hồi mật mã) và OFB (Phản hồi đầu ra) .
- Mật mã luồng sử dụng chức năng XOR để chuyển đổi văn bản thuần thành văn bản mã hóa, đó là lý do tại sao nó dễ dàng đảo ngược các bit XORed. Trong khi đó, mật mã khối không sử dụng XOR để làm như vậy.
- Mật mã khối sử dụng cùng một khóa để mã hóa từng khối trong khi mật mã luồng sử dụng một khóa khác nhau cho mỗi byte.
Phần kết luận:
Mã hóa khối và mật mã dòng khác nhau theo cách mà văn bản đơn giản được mã hóa và giải mã. Ý tưởng đằng sau mật mã khối là chia văn bản đơn giản thành các khối mã hóa thêm các khối đó. Trong khi mật mã luồng chuyển đổi văn bản đơn giản từng bit tương tự như luồng.