Mật mã hóa khóa công khai là một dạng mật mã hóa cho phép người sử dụng trao đổi các thông tin mật mà không cần phải trao đổi các khóa chung bí mật trước đó. Điều này được thực hiện bằng cách sử dụng cặp khóa có quan hệ toán học với nhau là khóa công khai (Public key) và khóa bí mật(Private key).
Trong mật mã hóa khóa công khai, khóa cá nhân phải được giữ bí mật trong khi khóa công khai được phổ biến công khai. Trong 2 khóa, một dùng để mã hóa và khóa còn lại dùng để giải mã. Điều quan trọng đối với hệ thống là không thể tìm ra khóa bí mật nếu chỉ biết khóa công khai.
Hình 2.6: Mã hóa phi đối xứng khóa công khai
Public key và Private key tương ứng của nó có quan hệ toán học với nhau và được sinh ra sau khi thực hiện các hàm toàn học; nhưng các hàm toán học này luôn thoả mãn điều kiện là sao cho không thể tìm được private key từ public key và ngược lại.
Hệ thống mật mã hóa khóa công khai có thể sử dụng với các mục đích:
– Mã hóa: giữ bí mật thông tin và chỉ có người có khóa bí mật mới giải mã
được.
– Tạo chữ ký số: cho phép kiểm tra một văn bản có phải đã được tạo với
một khóa bí mật nào đó hay không.
– Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật
giữa 2 bên.
Điều kiện hệ mã hóa khóa công khai
Khóa công khai Khóa riêng
Giải mã Mã hóa Thông điệp nguồn Thông điệp đã mã hóa Thông điệp đã giải mã
35
Diffie và Hellman đã xác đinh rõ các điều kiện của một hệ mã hoá công khai như sau:
a, Việc tính toán ra cặp khoá công khai KB và bí mật kB dựa trên cơ sở các
điều kiện ban đầu phải được thực hiện một cách dễ dàng, nghĩa là thực hiện trong thời gian đa thức.
b, Người gửi A có được khoá công khai của người nhận B và có bản tin P cần gửi đi thì có thể dễ dàng tạo ra được bản mã C.
C = EKB (P) = EB (P)
Công việc này cũng trong thời gian đa thức.
c, Người nhận B khi nhận được bản tin mã hóa C với khoá bí mật kB thì có
thể giải mã bản tin trong thời gian đa thức.
P = DkB (C) = DB[EB(M)]
d, Nếu kẻ địch biết khoá công khai KB cố gắng tính toán khoá bí mật thì khi
đó chúng phải đương đầu với trường hợp nan giải, trường hợp này đòi hỏi nhiều yêu cầu không khả thi về thời gian.
e, Nếu kẻ địch biết được cặp (KB,C) và cố gắng tính toán ra bản rõ P thì giải
quyết bài toán khó với số phép thử là vô cùng lớn, do đó không khả thi
Các thuật toán đối xứng thường không được sử dụng độc lập. Trong thiết kế của các hệ thống mật mã hiện đại, cả hai thuật toán bất đối xứng và thuật toán đối xứng được sử dụng phối hợp để tận dụng các ưu điểm của cả hai. Các thuật toán bất đối xứng được sử dụng để phân phối chìa khóa mật cho thuật toán đối xứng có tốc độ cao hơn.