Mật mã học 011 – Công cụ: Các thuật toán và Khóa

Nguồn:

  • Chapter 1, Applied Cryptography: Protocols, Algorithms, and Source Code in C, Second Edition, Bruce Schneier, 1996

Keyword

  • Cryptography Algorithms, Keys, Symmetric Algorithm, Public-Key Algorithm, Các thuật toán mã hóa, Thuật toán, Thuật toán đối xứng, Thuật toán công khai

Mở đầu

Một thuật toán mã hóa (cryptographic algorithm), hay gọi là một mật mã (cipher), là các hàm toán học sử dụng trong quá trình mã hóa và giải mã (thông thường, có hai hàm: một hàm để mã hóa và một hàm để giải mã)

Các thuật toán hạn chế (restricted algorithm)

Nếu độ an toàn của một hệ mật mã phụ thuộc vào việc giữ bí mật về thuật toán, thì đó là thuật toán hạn chế (restricted algorithm). Các thuật toán hạn chế có lịch sử rất thú vị, nhưng lại không phù hợp với các tiêu chuẩn của ngày nay. Các tổ chức lớn hoặc các tổ chức hay có sự thay đổi không thể sử dụng chúng, vì mỗi khi một thành viên trong tổ chức rời khỏi, mọi thành viên còn lại phải thay đổi thuật toán. Nếu một thành viên trong nhóm làm lộ thuật toán ra bên ngoài, thuật toán cũng phải thay đổi.

Một tác hại nữa, là các thuật toán hạn chế không yêu cầu bất kì sự kiểm soát hoặc tiêu chuẩn nào. Một nhóm bất kì có thể nghĩ ra một thuật toán của riêng họ. Do đó, các nhóm không thể dùng chung một phần mềm hay phần cứng nào (vì mỗi phần mềm và phần cứng đó lại dùng thuật toán riêng biệt). Với các thuật toán cài đặt trên phần mềm và phần cứng, kẻ xấu có thể mua sản phẩm đó và tìm ra được thuật toán. Nếu không có ai trong nhóm là một nhà mật mã giỏi, họ không thể biết được thuật toán họ sử dụng có an toàn hay không.

Do những nhược điểm đó, những thuật toán hạn chế thường được sử dụng cho các ứng dụng nhỏ.  Người dùng thường không nhận ra hoặc không quan tâm các vấn đề về an toàn trong hệ thống của họ.

Khóa

Mật mã hiện đại giải quyết vấn đề đó bằng khóa (key), ký hiệu là K. Khóa này là một số bất kỳ trong một tập hợp số rất lớn. Tập hợp số rất lớn đó được gọi là không gian khóa (keyspace).  Cả hàm giải mã lẫn hàm mã hóa điều sử dụng khóa, ta biểu diễn như sau

E_{k}(M) = C \\ D_{k}(C)= M

Dễ thấy, các hàm này có tính chất

D_{k}(E_{k}(M))=M

Một số thuật toán dùng khóa để mã hóa (encryption key) khác với khóa để giải mã (decryption key). Ký hiệu khóa để mã hóa là K_1, khóa để giải mã là K_2, ta có các phương trình:

E_{K_1}(M)=C \\D_{K_2}(C)=M\\D_{K2}(E_{K_1}(M))=M

Độ an toàn của các thuật toán này phụ thuộc vào khóa; không phụ thuộc vào chi tiết các thuật toán. Điều này khiến các thuật toán có thể được công bố và phân tích rộng rãi. Do đó, các thuật toán này có thể dùng trong nhiều tổ chức, mà vẫn đảm bảo được tính an toàn. Kẻ xấu biết được về thuật toán, nhưng không có khóa thích hợp, vẫn không thể biết được nội dung của thông điệp.

Một hệ mật mã (cryptosystem) một thuật toán, kèm thêm tất cả các bản rõ, bản mã và khóa.

>> Động não chút nào?

Bạn đã từng gặp hoặc các thuật toán hạn chế nào?

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s