Trong lịch sử mật mã đã có nhiều đề xuất về phương pháp phân phối khoá công khai, những phương án này có thể chia thành các nhóm sau:
Khai báo công khai
Sử dụng thư mục khóa công khai
Trung tâm quản lý khoá công khai
Sử dụng chứng chỉ khoá công khai
a) Phƣơng pháp khai báo công khai
Đặc điểm của mã hoá khoá công khai là khoá công khai được công bố công khai. Do vậy, nếu có một thuật toán được chấp nhận rộng rãi, như RSA, bất kỳ thành viên nào cũng có thể thông báo khoá công khai của mình để cho các thành viên khác được biết.
Giải pháp này là khá thích hợp, nhưng có nhược điểm là bất kỳ ai cũng có thể giả mạo một khoá công khai. Có nghĩa là một người sử dụng nào đó có thể mạo danh cá thể B và gửi một khoá công khai cho các thành viên khác. Các thành viên khác cứ tưởng đấy là khoá công khai của B nên đã gửi các thông điêp cho B (giả mạo), và như thế là kẻ giả mạo đàng hoàng đọc được hết các thông điệp mã hoá gửi cho B, ngoài ra còn có thể sử dụng các khoá giả xác thực cho đến khi cá thể B phát hiện ra sự giả mạo đó và thông báo cho các thành viên khác.
b) Phƣơng pháp sử dụng thƣ mục công khai
Việc duy trì và tổ chức một thư mục công khai thuộc về một tổ chức được tin cậy nào đó. Một lược đồ như vậy bao gồm các yếu tố sau:
Tổ chức có nhiệm vụ duy trì thư mục, mỗi thành viên có một entry (định danh, khoá) trong thư mục.
Mỗi thành viên đăng ký một khoá công khai với tổ chức quản lý thư mục.
Mỗi thành viên có thể thay thế một khoá công khai bất cứ lúc nào khi cảm thấy khoá riêng bị lộ
Cơ quan quản lý công bố toàn bộ thư mục và có nhiệm vụ cập nhật thư mục một cách định kỳ.
Mọi thành viên đều có thể truy nhập vào thư mục bất cứ lúc nào, vì thế việc truyền thông xác thực an toàn (từ cơ quan quản lý đến các thành viên) phải mang tính bắt buộc.
c) Trung tâm quản lý khoá công khai
Việc phân phối khoá công khai được an toàn cao hơn nếu cung cấp các kiểm soát chặt chẽ khi phân phối khoá công khai từ thư mục.
Một cơ quan trung tâm duy trì một thư mục khoá công khai. Mỗi thành viên đều biết khoá công khai của trung tâm quản lý khoá công khai, nhưng chỉ có trung tâm này biết khoá riêng cùng cặp.
Quá trình trao đổi thông tin bí mật diễn ra như sau:
i) A gửi một thông điệp có gán nhãn thời gian cho cơ quan quản lý khoá công khai, yêu cầu khoá công khai hiện thời của B.
ii) Cơ quan quản lý trả lời bằng một thông điệp. Thông điệp này được mã hoá bằng khoá riêng dauth của cơ quan quản lý bao gồm:
- Khoá công khai eb của B (A có thể dùng nó để mã hoá các thông điệp gửi cho B)
- Yêu cầu gốc (request) – A so khớp yêu cầu này với yêu cầu A đã gửi đi trước đó, nhờ đó A có thể biết yêu cầu gốc có bị sửa đổi trước khi cơ quan quản lý nhận được hay không.
- Nhãn thời gian gốc – cho phép A xác định được rằng: đây không phải là một thông điệp cũ mà là thông điệp có chứa khoá công khai hiện thời của B.
iii)A lưu giữ khoá công khai của B và sử dụng nó để mã hoá một thông điệp gửi cho B, thông điệp này chứa tên của A (IDA) và một giá trị (được gọi là nonce) N1 để nhận dạng giao dịch này.
iv) B lấy khoá công khai của A từ cơ quan quản lý khoá (tương tự như A đã lấy khoá công khai của B).
Như thế là A và B đã chuyển giao khoá công khai một cách an toàn, và họ có thể gửi và nhận tin của nhau.
Tuy nhiên hai bước sau đây được bổ sung thêm xem như là tuỳ chọn:
B gửi thông điệp cho A, thông điệp này được mã hoá bằng khoá ea và có chứa N1 của A và một nonce mới N2 do B sinh ra. Do chỉ có B mới có thể giải mã thông điệp và sự có mặt của N1 trong thông điệp đảm bảo rằng B chính là người A đang liên lạc.
A trả lại N2 cho B bằng khoá công khai của B, đảm bảo với B rằng A chính là người đang liên lạc với B.
d) Phƣơng pháp sử dụng chứng chỉ khoá công khai
Việc phân phối khoá công khai là khá hấp dẫn. Tuy nhiên dễ bị giả mạo (do mỗi đầu vào bao gồm tên và khoá công khai trong một thư mục do cơ quan quản lý duy trì).
Một giải pháp mới lựa chọn là dùng chứng chỉ ([3],[10]). Các thành viên sử dụng chứng chỉ này để trao đổi khoá mà không cần liên lạc với cơ quan quản lý khoá công khai. Mỗi chứng chỉ chứa một khoá công khai và các thông tin khác. Nó được một cơ quan quản lý chứng chỉ tạo ra và phát hành cho các thành viên. Mỗi thành viên thông báo khoá công khai của mình cho các thành viên khác thông qua chứng chỉ.
Chứng chỉ được định nghĩa là một “tài liệu chứa một công bố được chứng thực, như là sự khẳng định đúng đắn về một điều gì đó”. Trong lĩnh vực điện tử, chứng chỉ là một tài liệu chứa một tập hợp thông tin có chữ ký số của một người có thẩm quyền và người này được cộng đồng những người sử dụng chứng chỉ công nhận và tin cậy. ([1],[3])
Chứng chỉ số là một tệp tin điện tử được sử dụng để nhận diện một cá nhân, một máy chủ, một công ty hoặc một vài đối tượng khác và gắn định danh của đối tượng đó với một khóa công khai. Giống như bằng lái xe, hộ chiếu, chứng minh thư hay những giấy tờ nhận diện cá nhân thông thường khác, chứng chỉ số cung cấp bằng chứng cho sự nhận diện của một đối tượng. Hệ mã khoá công khai sử dụng chứng chỉ số để giải quyết vấn đề mạo danh.
Để lấy được chứng chỉ số bạn cần phải thực hiện các công việc đăng ký họ tên, địa chỉ và những thông tin cần thiết khác với nơi được gọi là nhà cung cấp chứng chỉ số (CA), một tổ chức có thẩm quyền xác nhận định danh và cấp các chứng chỉ số. Họ có thể là một thành phần thứ ba đứng độc lập hoặc các tổ chức tự vận hành phần mềm cấp chứng chỉ số của mình. Các phương pháp để xác định định danh phụ thuộc vào các chính sách mà CA đặt ra. Thông thường, trước khi cấp chứng chỉ số, CA sẽ công bố các thủ tục cần phải thực hiện cho các loại chứng chỉ số.
Hệ thống chứng chỉ khoá công khai (CA) làm việc như sau: CA phát hành chứng chỉ cho những người muốn trao đổi tin mật. Mỗi chứng chỉ gồm có một khoá công khai và thông tin nhận dạng chủ thể của chứng chỉ. Chủ thể của chứng chỉ là cá thể nắm giữ khoá riêng tương ứng gọi là thuê bao của CA. Các chứng chỉ được CA ký bằng khoá riêng của CA.
Việc sử dụng chứng chỉ rất đơn giản, giả sử người sử dụng đã có khoá công khai CA và anh ta tin tưởng CA phát hành chứng chỉ một cách hợp lệ. Nếu cần khoá công khai của một người nào đó trong các thuê bao của CA anh ta chỉ việc lấy bản sao chứng chỉ của thuê bao đó và dùng khoá công khai cùa CA để kiểm tra chữ ký của CA.
Đặc trưng quan trọng của chứng chỉ là: “Các chứng chỉ có thể được phát hành mà không cần phải bảo vệ thông qua các dịch vụ an toàn truyền thông để đảm bảo bí mật, xác thực và tính toàn vẹn”. Bởi vì các chứng chỉ có khả năng tự bảo vệ bằng chữ ký số của CA.
Lợi ích của chứng chỉ khoá công khai là một người sử dụng có thể có được một số lượng lớn các khoá công khai của các thành viên khác một cách tin cậy chỉ cần thông qua khoá công khai CA.
Giấy chứng nhận Certificate X.509:
Một trong những mẫu ký xác nhận được sử dụng phổ biến là mẫu X.509 được định nghĩa bới ISO/IFC/ITU. Khuông dạng chứng chỉ X.509 gồm 3 phiên bản: phiên bản 1 ra đời năm 1988, phiên bản 2 năm 1993 và phiên bản 3 năm 1996. Ở dạng đơn giản nhất, X509 chứa các thông tin sau:
Phiên bản của bằng chứng thực
Số hiệu của bằng chứng thực
Tên thuật toán ký xác nhận
Tên người ký: tên của CA phát hành
Thời gian có hiệu lực: ngày bắt đầu và hết hạn của chứng chỉ.
Định danh của người được chứng thực: chủ thể nắm giữ khoá riêng.
Thông tin về khoá công khai của chủ thể được cấp giấy chứng nhận: khóa công khai và tên thuật toán sử dụng khoá công khai.
Chữ ký (mã băm cho các trường dữ liệu, mã hoá chữ ký bằng khoá riêng) Chi tiết hơn về cấu trúc của X. 509 có thể xem tại website:
http://www.ietf.cnri.reston.va.us/ids.by.wg/x.509.html
Các yêu cầu của lƣợc đồ trao đổi các chứng chỉ khoá công khai:
Một thành viên có thể đọc chứng chỉ để xác định tên và khoá công khai của cá thể sở hữu chứng chỉ.
Một thành viên có thể kiểm tra: nguồn gốc của chứng chỉ để biết nó có thể bị giả mạo không.
Chỉ có cơ quan quản lý chứng chỉ mới có thể tạo ra và cập nhật các chứng chỉ
Mọi thành viên có thể kiểm tra sự lưu hành của chứng chỉ. Mỗi chứng chỉ có dạng như sau: CA Ed T IDA ea
a u th , ,
dauth là khoá riêng của cơ quan quản lý chứng chỉ T là thời hạn chứng chỉ có giá trị
IDA là định danh của cá thể A ea là khoá công khai của A
A có thể chuyển chứng chỉ này cho các thành viên khác, thành viên này muốn biết khoá công khai của A thì kiểm tra chứng chỉ như sau:
A e d A a A a e C D E T ID e T ID e D a u th a u th a u th , , , ,
Người nhận sử dụng khoá công khai eauth của cơ quan quản lý chứng chỉ để giải mã chứng chỉ. Việc kiểm tra này chứng tỏ rằng: chứng chỉ có nguồn gốc từ cơ quan quản lý chứng chỉ.