- Khóa giải mã (deciphering key) là một hoặc nhiều đối tượng (thường là các con số hay là các hướng dẫn quan trọng nào đó) được dùng trong việc giải mã văn
2.2.1. Tổng quan về mật mã công khai Mật mã khóa công khai (public key
cryptography) còn có tên gọi khác là mật mã bất đối xứng (asymmetric cryptography) hoặc mật mã hai khóa (two- key cryptography) để chỉ tất cả các thuật toán mật mã trong đó dùng hai khóa khác nhau cho quá trình mã hóa và quá trình giải mã. Chúng ta rõ rằng các bên tham gia cần có một khóa mật để mã hóa và giải mã. Đặc trưng của kỹ thuật mật mã bất đối xứng là dùng hai khóa riêng biệt cho hai quá trình mã hóa và giải mã. Một trong hai khóa được phổ biến công khai gọi là khóa công khai (public key hay PU), khóa còn lại được giữ bí mật gọi là khóa riêng (private key hay PR). Nếu quá trình mã hóa dùng khóa PU thì quá trình giải mã dùng khóa PR và ngược lại. Điều này đồng nghĩa với việc trao đổi khóa mật qua kênh. Việc giữ bí mật khóa mật đồng nghĩa với việc giữ mật thông tin. Nên việc trao đổi khóa chỉ diễn ra trên kênh mật thì mới đảm bảo được, thế nhưng việc trao đổi này cũng không phải dễ để đảm bảo độ an toàn cao. Từ đây hình thành nên ý tưởng của mật mã công khai. Tức là không cần phải trao đổi khóa mật qua kênh nữa. Nói chung, mật mã khóa công khai không phải là một kỹ thuật mật mã an toàn so với mật mã đối xứng, mà độ an toàn của thuật toán mã nói chung phụ thuộc vào hai yếu tố: Độ dài của khóa và mức độ phức tạp khi thực hiện thuật toán trên máy tính.
Ý tưởng của hệ mật công khai được Diffie và Hellman đưa ra năm 1976. Còn việc thực hiện hệ mật công khai thì do Rivest, Shamir và Adleman đưa ra đầu tiên năm 1977, họ đề xuất một hệ mật RSA nổi tiếng. Và kể từ đó có một số hệ mật khác được công bố, độ mật của chúng dựa trên bài tính toán khác nhau, như dựa trên độ khó của bài toán phân tích thành nhân tử như hệ mật RSA, dựa vào độ khó logarithm rời rạc như hệ mật ElGamal, hay dựa trên đường cong Elliptíc. Nhưng trước tiên chúng ta đi tìm hiểu sơ đồ và nguyên tắc mã và giải mã của hệ mật công khai.
Sơ đồ của hệ mã công khai được cho ở hình 3.
Hình 3: Sơ đồ mã hóa công khai.
Hệ mã công khai sử dụng hai khóa có quan hệ toán học với nhau, tức là một khóa này được hình thành từ khóa kia: Người muốn nhận bản mã (Alice) tạo ra một khóa mật (private key) và từ khóa mật tính ra khóa công khai (public key) với một thủ tục không phức tạp, còn việc tìm khóa mật khi biết khóa công khai là bài toán khó giải được. Khóa công khai sẽ đưa đến cho người gửi bản tin (Bob) qua kênh công cộng. Và bản tin được Bob mã hóa bằng khóa công cộng. Bản mã truyền đến Alice, và nó được giải mã bằng khóa mật.
Nguyên tắc hoạt động: Các thành phần của một hệ thống mật mã khóa công khai tương tự như một hệ thống mật mã quy ước, chỉ khác nhau ở chi tiết dùng hai khóa K khác nhau cho hai bước mã hóa và giải mã.
Các bước cơ bản của một hệ thống mật mã dùng khóa công khai bao gồm: + Mỗi thực thể thông tin (user) tạo ra một cặp khóa để dùng cho việc mã hóa và giải mã.
+ Mỗi user thông báo một trong hai khóa của mình cho các user khác biết, khóa này gọi là khóa công khai. Khóa còn lại được giữ bí mật gọi là khóa riêng.
+ Nếu một user A muốn gửi thông tin cho user B, user A sẽ thực hiện mã hóa thông tin cần gửi bằng khóa công khai của user B.
+ Khi nhận được thông tin đã mã hóa từ user A, user B thực hiện giải mã thông tin đó bằng khóa riêng của mình. Do khóa riêng không phổ biến công khai nên chỉ có một mình user B có khả năng giải mã được.
Hình 4:Mã hoá thông điệp sử dụng khoá công khai P.
Hình 5: Giải mã thông điệp sử dụng khóa riêng của người nhận.
Để giải quyết vấn đề phân phối và thoả thuận khoá của mật mã khoá đối xứng, năm 1976 Diffie và Hellman đã đưa ra khái niệm về hệ mật mã khoá công khai và một phương pháp trao đổi công khai để tạo ra một khoá bí mật chung mà tính an toàn được bảo đảm bởi độ khó của một bài toán toán học cụ thể (là bài toán tính “logarit rời rạc”). Hệ mật mã khoá công khai còn được gọi là hệ mật mã phi (bất) đối xứng sử dụng một cặp khoá, khoá mã hoá còn gọi là khoá công khai (public key) và khoá giải mã được gọi là khoá bí mật hay khóa riêng (private key).
Trong hệ mật này, khoá mã hoá khác với khoá giải mã. Về mặt toán học, từ khoá công khai rất khó tính được khóa riêng. Biết được khoá này không dễ dàng tìm được khóa kia. Khóa giải mã được giữ bí mật trong khi khóa mã hoá được công bố công khai. Một người bất kỳ có thể sử dụng khóa công khai để mã hoá tin tức, nhưng chỉ có người nào có đúng khoá giải mã mới có khả năng xem được bản rõ. Người gửi A sẽ mã hoá thông điệp bằng khóa công của người nhận và người nhận B sẽ giải mã thông điệp với khoá riêng tương ứng của mình, quá trình này được mô tả trong hình 4 và hình 5.
Có nhiều hệ thống khóa công khai được triển khai rộng rãi như hệ RSA, hệ ElGamal sử dụng giao thức trao đổi khoá Diffie-Hellman và nổi lên trong những năm gần đây là hệ đường cong Elliptic. Trong số các hệ mật mã trên thì hệ RSA là hệ được cộng đồng chuẩn quốc tế và công nghiệp chấp nhận rộng rãi trong việc thực thi mật mã khoá công khai.