Sau 3 bài viết về mật mã học:

Một cách có hệ thống, chúng ta biết được nhược điểm của hệ mật mã khóa bí mật chính là Chỉ có một khóa cho cả 2 quá trình mã hóa và giải mã. Và để khắc phục nhược điểm này, giải pháp hệ mật mã khóa công khai ra đời.

Mô hình mã hóa:

Mô hình mã hóa khóa công khaiĐiểm yếu là chỉ có một khóa đã được cải tiến lên thành Sử dụng một cặp khóa có liên quan với nhau về mặt toán học.

Việc mã hóa được mô tả như sau:

+ Người giữ khóa bí mật dùng thuật toán tạo ra một cặp khóa: Khóa công khai và khóa bí mật.

+ Đưa khóa công khai cho người mã hóa (Đưa thoải mái không sợ lộ như mã hóa khóa bí mật, thích thì đăng công khai lên fb cũng được luôn nhé)

+ Người giữ khóa công khai mã hóa thông tin và gửi bản mã cho người giữ khóa bí mật.

+ Sử dụng khóa bí mật khôi phục bản mã về bản rõ.


Tôi đã khái quát xong cấu trúc chung của hệ mật mã khóa công khai. Sau đây, tôi xin trình bày cụ thể một thuật toán mã hóa khóa công khai đấy là hệ mật mã ElGamal.

Chú ý: Từ đây sẽ có nhiều khái niệm toán học, tin học mình đã giới thiệu từ phần 2.5. Nếu mọi người không hiểu hãy tự tìm kiếm thông tin về các khái niệm này.

Hệ mật mã ElGamal dựa trên độ khó của bài toán Logarit rời rạc đã được chứng minh là không giải được trong thời gian đa thức.

Mô tả thuật toán:

Ở đây, khóa công khai bao gồm K1, K2. Khóa bí mật là a.

Bài toán từ K1, K2 tìm a là bài toán logarit rời rạc => Đảm bảo không tìm được a.

Đến đây mình sẽ làm một ví du cho nó đỡ mông lung. 

+ Giả sử mã hóa ký tự A, mình quy ước A = 7, chọn số nguyên tố p = 13.

+ Tạo khóa:

Cặp khóa công khai thu được là (2, 3) và khóa bí mật là 4.


+ Mã hóa:

Tại đây ta mã hóa C = 7 (quy ước 7 là ký tự A) bằng cặp khóa (2, 3) cùng số t ngẫu nhiên bằng 9  và thu được bản mã (5, 7).



+ Giải mã:

Từ bản mã (5, 7) ta sử dụng a = 4, áp vào công thức đã trình bày ở trên ta thu được kết quả bằng 7, chính là giá trị A được đưa vào ở quá trình mã hóa.


Chú ý:

  • Các phép toán được thực hiện là các phép toán trong Trường nguyên tố hữu hạn.
  • Ví dụ mình đưa ra không đảm bảo an toàn do p = 13 không thỏa mãn điều kiện p là số nguyên tố lớn.

Đánh giá hệ mã hóa khóa công khai:

Mật mã khóa công khai là bước tiến lớn của ngành mật mã. Hệ mật mã ra đời đã phá bỏ tư duy cũ về mật mã, đồng thời có nhiều ứng dụng to lớn như: phân phối khóa, chữ ký số v.v...


Mặc dù giải quyết được điểm yếu logic của hệ mật mã khóa bí mật nhưng hệ mật mã khóa công khai đồng thời biến điểm mạnh của hệ mật mã khóa bí mật thành điểm yếu của mình. Hệ khóa công khai tính toán chậm do liên tục xử lý các số lớn (ở ElGamal là tính toán với số nguyên tố lớn). Để đảm bảo tính an toàn của hệ mật mã ElGamal, số p lớn được khuyến cáo ở mức 150 chữ số, khi mô phỏng dưới dạng bit sẽ có một chuỗi hơn 500 bit. 500 bit này được gọi là Độ dài khóa.


Một cách tự nhiên, ta yếu ở đâu thì ta khắc phục ở đó. Để giảm thời gian tính toán của hệ mật mã khóa công khai, ta đang cố gắng thực hiện Giảm độ dài khóa đồng thời vẫn giữ được tính an toàn của hệ mật mã. Đây chính là Xu thế của mật mã học hiện nay.