1.4.2.1 Mã hóa dòng
Mật mã dòng (stream cipher) là một kiểu hệ thống mật mã đối xứng có tính chất thay thế. Mật mã dòng dựa trên ý tưởng của mật mã một lần (OTP - One Time Pad) hay còn gọi là mật mã Vernam. Với OTP, khóa k phải đáp ứng 3 điều kiện sau đây: [10]
- Độ dài của khóa phải bằng kích thước bản rõ;
- Khóa phải được chọn hoàn toàn ngẫu nhiên (truly random); - Khóa chỉ được sử dụng một lần.
Nếu thỏa mãn 3 điều kiện trên, hệ mã OTP sẽ là an toàn tuyệt đối (perfect security) theo định lý của Clause Shannon, tức là kẻ tấn công sẽ không thể biết được thông tin gì của bản rõ m chỉ từ bản mã c. Tuy nhiên việc chiều dài khóa phải bằng chiều dài của bản rõ cũng chính là nhược điểm vì nếu có một cách để trao đổi khóa an toàn, thì đã có thể dùng ngay cách đó để trao đổi bản rõ luôn. OTP được coi là không thực tế để sử dụng rộng rãi.
Thuật toán mã hóa dòng giải quyết những vấn đề này bằng cách hy sinh một mức độ bảo mật. Một khóa k ngẫu nhiên được sinh ra từ một chuỗi số có độ dài nhỏ hơn rất nhiều so với bản rõ, và dùng một hàm tạo số ngẫu nhiên (Pseudo Random Generator - PRG) để mở rộng độ dài. Tuy nhiên, thực tế là các khóa này không hoàn toàn ngẫu nhiên gây ra các lo ngại về vấn đề an toàn của thuật toán. Khóa k phải đủ ngẫu nhiên để đảm bảo rằng nếu kẻ tấn công biết keystream cũng không thể khôi phục khóa bí mật hoặc lấy được trạng thái bên trong của mật mã.
Một vấn đề khác của mã hóa dòng là chu kỳ khóa. Chu kỳ khóa được hiểu là số lần khóa sinh ra được sử dụng trước khi khóa được lặp lại. Nếu hết chu kỳ khóa và khóa được lặp lại, kẻ tấn công có khả năng giải mã các bit mã hóa tuần tự. Vì vậy, thời hạn keystream phải lớn hơn kích thước của bản rõ sẽ được mã hóa. Nếu thời kỳ keystream hết, một khóa khác phải được sử dụng để khởi tạo lại mật mã.
Dù mật mã dòng có vấn đề trong việc quản lý và duy trì khóa nhưng với đặc điểm nhanh và nhẹ, mật mã dòng vẫn được phát triển và liên tục cập nhật mới. Điển hình có dự án ECRYPT II eSTREAM tổ chức năm 2004-2008 chọn một danh mục đầu tư đầy hứa hẹn các thuật toán mã dòng mới. Các danh mục đầu tư hiện tại eSTREAM chứa 7 thuật toán Grain‐ 128, Trivium, MICKEY 2.0, MICKEY‐ 128 2.0, …. Ngoài ra còn nhiều thuật toán khác như: BEAN, Quavium, Cavium, A2U2, WG‐ 7, WG‐ 8... đều đang được lên ý tưởng cải tiến và phát triển.
1.4.2.2 Mã hóa khối
Mã mã khối (block cipher) là hệ mật mã dựa trên các phép toán giữa các khối, Khối là những chuỗi bit có kích thước cố định, thông thường là 64,128 hoặc 256 bit. Vì vậy khi đầu vào bản rõ có độ dài không là bội số của khối, cần phải thực hiện thao tác đệm (padding) sao cho số bit của đầu vào phải là bội số của khối. Về mặt tốc độ, thông thường block cipher chậm hơn so với stream cipher, nhưng làm việc tốt với những khối dữ liệu đã biết trước kích thước, ví dụ mã hóa file, mã hóa tin nhắn trên các giao thức như là HTTP ...
Một số hệ mã khối nổi tiếng đó là DES và AES. Kể từ khi giải thuật mã hóa tiên tiến AES đã được lựa chọn, nhiều mã hóa khối với thuộc tính hạng nhẹ đã được
đề xuất. Trong số đó CLEFIA và PRESENT đã được nghiên cứu về độ bảo mật của chúng và được thực hiện, cả hai thuật toán đang được xem xét trong ISO/IEC 29192. Các thuật toán mã hóa sẵn sàng để sử dụng trong các hệ thống thực tế. Các thuật toán mã hóa khối hạng nhẹ tiêu biểu là DESL và DESXL được xây dựng dựa trên việc thay đổi số S-box và kích thước khóa của thuật toán mã hóa khối DES. Một cách phát triển khác là xây dựng một thuật toán mới từ đầu, đại diện là PRESENT – một thuật toán mã hóa mạng thay thế hoán vị (SPN). Một số thuật toán mã hóa khối hạng nhẹ hiện nay: DESXL, HIGHT, KASUMI, KATAN, KTANTAN, mCRYPTON, PRESENT, SEA và XTEA.
1.4.2.3 Hàm băm
Các hàm băm mật mã đóng vai trò quan trọng trong mật mã hiện đại, được dùng để xác thực tính nguyên vẹn dữ liệu, trong quá trình tạo chữ kí số trong giao dịch điện tử. Các hàm băm lấy một thông báo đầu vào và tạo một đầu ra được xem như là: Mã băm (hash code), kết quả băm (hash result), hoặc giá trị băm (hash value).
Vai trò cơ bản của các hàm băm mật mã là một giá trị băm coi như ảnh đại diện thu gọn, đôi khi gọi là một dấu vết (imprint), vân tay số (digital fingerprint), hoặc tóm lược thông báo (message digest) của một xâu đầu vào, và có thể được dùng như là một định danh duy nhất với xâu đó.
Các hàm băm thường được dùng cho toàn vẹn dữ liệu kết hợp với các lược đồ chữ kí số. Một lớp các hàm băm riêng được gọi là mã xác thực thông báo (MAC) cho phép xác thực thông báo bằng các kĩ thuật mã đối xứng.
Thuật toán băm mật mã mới của NIST: "SHA-3" cạnh tranh thu hút nhiều sự chú ý của mọi người. SHA-3 dự kiến sẽ là một hàm băm chuyên dụng nhưng chưa đáp ứng được thuộc tính nhẹ. Nghiên cứu về hàm băm chuyên dụng hạng nhẹ mới chỉ mới bắt đầu. Chúng còn quá mới để áp dụng ngay bây giờ. Có thể xây dựng hàm băm hạng nhẹ dựa trên các giải thuật mật mã khối hạng nhẹ.