Stream Cipher (Mã dòng)
Mã dòng là mã hóa luồng dữ liệu kỹ thuật số từng bit hoặc từng byte một lần. Stream Cipher thường mã hóa từng byte của thông điệp tại thời điểm đó thay vì sử dụng khối.
Ví dụ, các mã dòng cổ điển là mật mã Vigenère tự khóa và mật mã Vernam. Trong trường hợp khái niệm, phiên bản one-time pad của mật mã Vernam có thể được sử dụng, trong đó luồng khóa được xem xét là luồng bit bản rõ.
Nếu luồng khóa mật mã học là tùy ý, do đó mật mã này không thể phá vỡ bằng bất kỳ phương tiện nào khác ngoài việc nhận ra luồng khóa. Tuy nhiên, luồng khóa nên được cung cấp cho cả hai người dùng trước qua một kênh độc lập và an toàn.
Điều này khuyến khích các vấn đề hậu cần không thể vượt qua nếu lưu lượng dữ liệu dự định rất cao. Bộ tạo bit-stream nên được thực hiện như một quá trình thuật toán, để luồng bit mật mã học có thể được tạo ra bởi cả hai người dùng.
Trong phương pháp này, bộ tạo bit-stream là thuật toán được kiểm soát bởi khóa và nên tạo ra luồng bit mạnh về mặt mật mã học. Bây giờ, hai người dùng chỉ cần chia sẻ khóa tạo, và mỗi người có thể tạo luồng khóa.
Block Cipher (Mã khối)
Mã khối là mã trong đó một khối bản rõ được xem xét như một toàn thể và được sử dụng để tạo một khối bản mã có độ dài bằng nhau. Thường, kích thước khối 64 hoặc 128 bit được sử dụng. Block Cipher lấy một thông điệp và chia nó thành kích thước cố định các khối và thay đổi một khối của thông điệp tại một thời điểm.
Mã khối hoạt động trên khối bản rõ n bit để tạo khối bản mã n bit. Có nhiều khối bản rõ có thể, và để mã hóa có thể thay đổi (tức là giải mã có thể), mỗi khối nên tạo một khối bản mã duy nhất. Chuyển đổi như vậy cũng được gọi là có thể đảo ngược, hoặc không kỳ dị.
Mã khối dựa trên các đối tượng toán học được gọi là Hoán vị Ngẫu nhiên Giả (PRP - Pseudo Random Permutations). Chúng là các hàm có thể đảo ngược tạo đầu vào là giá trị n-bit m và khóa bí mật k, và đầu ra giá trị n-bit c.
Một PRP được coi là an toàn nếu, cố định với khóa k, hàm kết quả giống hệt từ một hàm bijec ngẫu nhiên trên các giá trị n-bit. Mã khối thực hiện một PRP an toàn.
Chúng bao gồm hàm mã hóa có khả năng mã hóa khối bản rõ thành khối bản mã sử dụng khóa bí mật. Hàm giải mã thực hiện phép toán ngược lại và lấy khối bản rõ từ bản mã.
Sự khác biệt chính giữa mã dòng và mã khối dựa trên kích thước thông tin được xử lý trong mỗi lần mã hóa. Mã dòng mã hóa từng bit một từ bitstream và điều này dẫn đến thông điệp được mã hóa có sự đồng thuận bit-đến-bit với thông điệp bản rõ.