Hệ thống mật mã khóa công khai còn được gọi là hệ thống mật mã khóa không đối xứng, vì theo như có chế mật mã này thì khóa được dùng để mã hóa gói tin và khóa được dùng để giải mã là khác nhau. Sự phát triển của mật mã khóa công khai có ý nghĩa rất lớn và tạo ra một cuộc cách mạng trong toàn bộ lịch sử của mật mã khóa. Những thuật toán công khai đều dựa trên những hàm toán học hơn là những nhóm thay thế và hoán vị trong mật mã khóa cổ điển. Trong hệ thống mật mã khóa công khai thì mỗi đối tác tham gia sẽ sở hữu một cặp khóa duy nhất, bao gồm một khóa bí mật (được lưu bí
Khóa Bộ tạo chuỗi giả ngẫu nhiên
Luồng bit Plaintext Luồng bit ciphertext
Luồng bit plaintext 1 1 1 1 1 1
Luồng bít giả ngẫu nhiên 1 0 0 1 1 0
mật bởi đối tác) và một khóa công khai tương ứng (được phát trong các thư mục công cộng). Hai khóa này có quan hệ với nhau để đảm bảo rằng khóa công khai thực hiện chức năng mã hóa và khóa bí mật thực hiện chức năng giải mã.
Các bước cần thiết trong quá trình mã hóa khóa công khai:
- Một hệ thống cuối trong mạng tạo ra một cặp khóa để dùng cho mã hóa và giải mã đoạn tin mà nó sẽ nhận.
- Mỗi hệ thống công bố rộng rãi khóa mã hóa bằng cách đặt khóa vào một thanh ghi hay một file công khai. Đây là khóa công khai, khóa còn lại được giữ riêng.
- Nếu A muốn gửi một đoạn tin tới B thì A sẽ mã hóa đoạn tin bằng khóa công khai của B.
- Khi B nhận được đoạn tin mã hóa, nó giải mã bằng khóa bí mật của mình. Không một người nào khác có thể giải mã đoạn tin mã này bởi vì chỉ minh B biết khóa bí mật đó thôi.
Hình 4.8: Sơ đồ mã khóa công khai
Với cách tiếp cận này, tất cả những người tham gia có thể truy xuất khóa công khai. Khóa bí mật được tạo ra bởi từng các nhân, vì vậy không bao giờ được phân bố. Ở bất kì thời điểm nào, hệ thống cũng có thể chuyển đổi cặp khóa để đảm bảo tính bảo mật mà không cần sử dụng kênh thông tin an toàn để truyền khóa bảo mật.
Các yêu cầu của mật mã khóa công khai:
1/ Công việc tính toán thì dễ dàng cho người nhận B: tạo cặp khóa công khai KU và khóa bí mật KR.
2/ Công việc tính toán thì dễ dàng cho người nhận A: biết khóa công khai và đoạn tin cần mã hóa M, để tạo mật mã tương ứng C=EKub(M).
3/Công việc tính toán dễ dàng cho người nhận B để thực hiện giải mã: sử dụng khóa bí mật để giải mã đoạn tin mã hóa C, khôi phục lại đoạn tin ban đầu.
M = DKRb(C) = DKRb[EKUb(M)]
Khóa công khai
Đoạn tin Khóa bí mật Đoạn tin
được mật mã Đoạn tin
User A Giải thuật mã hóa Giải thuật giải mã User B
Kênh truyền
4/ Công việc tính toán không thể thấy trước đối với địch thủ biết khóa công khai KUb để xác định khóa bí mật KRb.
Công việc tính toán không thể thấy trước đối với địch thủ biết khóa công khai KUb và đoạn tin mật mã C để khôi phục đoạn tin ban đầu M.
5/ Chức năng mã hóa và giải mã có thể được áp dụng theo thứ tự:
M = DKRb[EKUb(M)] M = EKUb[DKRb(M)]
Có thể nhận thấy rằng việc tính Y = f(X) thì dễ dàng trong khi tính X=f-1(Y) là không thể thấy trước. Nói chung từ “dễ dàng” được xác định bởi 1 bài toán là nó có thể được giải quyết trong thời gian nhất định (nó phụ thuộc vào chiều dài input). Nếu chiều dài input là n bít thì thời gian để tính hàm đó tỉ lệ với na . Để đảm bảo tính bảo mật thì phải sử dụng khóa có kích thước đủ lớn (thường trên 100 chữ số thập phân). Ví dụ kích thước khóa và thời gian bẻ khóa (MIPS tính theo năm) trong các giải thuật RSA/DSS và ECC như sau.
Bảng 4.2: Thời gian bẻ khóa trong giải thuật RSSA/DSS và ECC.
RSA ECC MIPS (năm)
512 768 1024 106 132 160 104 108 1012