2 NHỮNG VẤN ĐỀ CƠ BẢN TRONG XÂY DỰNG HỆ THỐNG PKI
2.1.2. Kiến trúc hệ thống PKI mạng lưới
Trong kiến trúc này, việc các CA thực hiện xác nhận ngang hàng đã tạo nên một mạng lưới các mối quan hệ tin cậy lẫn nhau giữa các CA ngang hàng. Các đối tượng nắm được khoá công khai của CA nằm “gần” mình nhất. Thông thường, đây là CA cấp cho đối tượng đó thẻ xác nhận. Các đối tượng kiểm chứng một thẻ xác nhận bằng cách kiểm tra quá trình xác nhận với đích là CA đã phát hành thẻ xác nhận đó.
Các CA sẽ xác nhận ngang hàng bằng cách phát hành cho nhau những thẻ xác nhận, những cặp thẻ xác nhận này được kết hợp và lưu trong một cấu trúc dữ liệu có tên:
CrossCertificatePair. Trong sơđồ dưới đây, A có thể xác nhận B theo nhiều nhánh khác nhau. Theo nhánh ngắn nhất, B được CA4 cấp thẻ xác nhận nên nó được xác nhận bở
CA4. CA4được xác nhận ngang hàng bởi CA5 và CA5 lại được xác nhận ngang hàng bởi CA3. A được CA3 cấp phát thẻ xác nhận và biết được khoá công khai của CA3 nên nó có thể xác nhận trực tiếp với CA3. EE EE CA 1 CA 2 CA 5 CA 4 EE EE CA gèc (CA3) EE (A) EE EE EE EE (B) EE EE Hình 2-2 Kiến trúc PKI mạng lưới 2.1.2.1. Ưu điểm của kiến trúc PKI mạng lưới
1. Đây là một kiến trúc linh động, nó thích hợp với các mối liên hệ và mối quan hệ tin cậy lẫn nhau trong thực tế của công việc kinh doanh.
2. Một đối tượng sử dụng ít nhất phải tin cậy CA cấp phát thẻ xác nhận cho nó. Có thể coi đây là cơ sởđể tạo nên tất cả các mối quan hệ tin tưởng lẫn nhau.
3. Các CA có thể xa nhau trong mô hình tổ chức nhưng những đối tượng sử dụng của nó lại làm việc cùng nhau với mức ưu tiên cao có thể xác nhận ngang hàng theo một cách thức có độ ưu tiên cao. Độ ưu tiên này chỉ được giới hạn trong phạm vi của các CA này.
4. Kiến trúc này cho phép các CA có thể xác nhận ngang hàng một cách trực tiếp trong trường hợp các đối tượng sử dụng của chúng liên lạc với nhau thường xuyên để giảm tải lượng đường truyền và thao tác xử lý.
5. Việc khôi phục hệ thống do khoá riêng của một CA bị tiết lộ sẽ chỉ gồm việc phân phát một cách an toàn khoá công khai mới của CA đến các đối tượng mà CA này cấp phát thẻ xác nhận.
2.1.2.2. Nhược điểm của mô hình PKI mạng lưới
1. Do cấu trúc của mạng có thể rất phức tạp nên việc tìm kiếm các đối tượng rất khó khăn. Trong trường hợp có nhiều đường truyền đến một đối tượng khác thì bài toán tìm đường đi ngắn nhất đến đối tượng đó có thể rất phức tạp.
2. Một đối tượng không thểđưa ra một nhánh xác nhận duy nhất mà có thểđảm bảo tất cả các đối tượng khác trong hệ thống có thể thực hiện được.
2.1.3. Kiến trúc danh sách tin cậy
Đây là kiến trúc được áp dụng rộng rãi đối với dịch vụ Web. Trong đó, các trình duyệt và các máy chủ là những đối tượng sử dụng tiêu biểu nhất. Trong mô hình này, các trình duyệt đều lưu một file riêng chứa các thẻ xác nhận gốc của các CA được tin cậy. File này tồn tại ngay khi trình duyệt được cài đặt. Việc quản lý file này có thểđược thực hiện bởi các cá nhân sử dụng trình duyệt. Các tổ chức cũng có thể cấp quyền cho việc tải hoặc quản lý các thông tin từ một máy chủ của tổ chức. Đối với mỗi file này, người sử dụng có thể bổ sung hoặc xóa bớt những thẻ xác nhận khỏi danh sách. Tuy nhiên, khả năng xử lý cách nhánh xác nhận của các ứng dụng hiện còn khá hạn chế.
Các trình duyệt có thể sử dụng các cặp khóa công khai/khoá riêng để ký, để kiểm chứng, giải mã hoặc mã hoá các thưđiện tử theo chuẩn S/MIME. Với các thẻ xác nhận, các trình duyệt cũng có thể thiết lập các phiên truyền thông an toàn SSL (Secure Sockets Layer). SSL là một giao thức xác thực và mã hoá ở tầng chuyển vận. Trong một phiên truyền thông SSL, người dùng có thể gửi đi một mẫu biểu hoặc nhận về các thông tin từ một máy chủ dưới hình thức được mã hoá và xác thực. Mặt khác, các trình duyệt còn có thể
kiểm chứng các chữ ký sốđược áp dụng đối với thông tin được truyền đi.
EE 4 4 4 5 5 (A)
(B) EE EE
EE EE
CA 1 CA 2 CA 3
EE EE
Hình 2-3 Kiến trúc PKI danh sách tin cậy
Như vậy, ta có thể coi kiến trúc PKI danh sách tin cậy là một mô hình hướng trình duyệt.
2.1.3.1. Ưu điểm của kiến trúc PKI danh sách tin cậy
1. Đây là kiến trúc đơn giản, quá trình truyền thông và xác nhận theo một hướng duy nhất, hơn nữa, mô hình này có thểđược triển khai khá dễ dàng.
Những vấn đề cơ bản trong xây dựng hệ thống PKI HẠ TẦNG KHOÁ CÔNG KHAI
28
2. Trong kiến trúc này này, các đối tượng sử dụng có toàn quyền quản lý file lưu trữ
danh sách thẻ xác nhận của các CA mà mình tin cậy.
3. Kiến trúc này có thể làm việc rất tốt với giao thức quản lý trạng thái thẻ xác nhận trực tiếp do các nhánh xác thực khá đơn giản. Hơn nữa, những yêu cầu về trạng thái thẻ xác nhận chỉđược gửi tới các CA ở trong danh sách các CA được tin cậy.
2.1.3.2. Nhược điểm của kiến trúc PKI danh sách tin cậy
1. Người sử dụng có toàn quyền nội dung của file chứa thẻ xác nhận của các CA mà nó tin cậy. Do vậy việc quản lý danh sách các CA được tin cậy của một tổ chức là rất khó khăn.
2. Việc khởi tạo danh sách mặc địch các CA được tin cậy khi cài đặt một trình duyệt sẽ dẫn đến việc khó đảm bảo tính xác thực trong quá trình khởi tạo thông tin về
khoá công khai của các CA này. Đây có thể là một kẽ hở để các đối tượng tấn công lợi dụng.
3. Không phải tất cả những người sử dụng đều có khả năng quản lý tốt một file chứa quá nhiều thẻ xác nhận của các CA mà mình tin cậy.
4. Cấu trúc thẻ xác nhận không có nhiều hỗ trợ cho việc tìm ra các nhánh xác nhận. 5. Không có những hỗ trợ trực tiếp đối với các cặp thẻ xác nhận ngang hàng. Do
vậy, nó hạn chế khả năng của CA trong quản lý sự tin cậy của mình đối với các CA khác.
6. Các chính sách đối với thẻ xác nhận không được hỗ trợ, do vậy, cần phải có một CA quản lý một số CA khác để có thể áp dụng các chính sách thẻ xác nhận và các mức đảm bảo. Điều này dẫn đến việc tăng số CA được tin cậy trong file của mỗi
đối tượng sử dụng.
7. Hiện tại các trình duyệt không hề hỗ trợ tính năng tự động lấy thông tin trạng thái hoặc huỷ bỏ các thẻ xác nhận.
Tóm lại, ưu điểm đáng kể nhất của kiến trúc danh sách tin cậy là khả năng hỗ trợđối với
định dạng dữ liệu S/MIME và các phiên truyền thông SSL đối với các trình duyệt hiện nay. Dịch vụ World Wide Web và các trình duyệt là những đối tượng cơ bản trong công nghệ
mạng hiện nay, nó cũng là nền tảng để phát triển các trình ứng dụng phân tán.
Hiện nay, các máy chủ Web đều hỗ trợ kiến trúc PKI theo danh sách tin cậy, bất kể ai muốn phát triển các ứng dụng PKI cho một lượng lớn đối tượng sử dụng đều phải ý thức
được điều này. Hơn nữa, công nghệ Web hiện đang là một hướng lựa chọn phổ biến cho các ứng dụng trong phạm vi các mạng cục bộ. Như vậy, với sự hiện diện của các trình duyệt ở khắp mọi nơi và một vị trí quan trọng của chúng để xây dựng các ứng dụng mạng, đây thực sự là một kiến trúc quan trọng trong số các kiến trúc được áp dụng để
2.2. NHỮNG CHỨC NĂNG BẮT BUỘC TRONG QUẢN LÝ PKI
Các hoạt động của hệ thống quản lý PKI đã được mô tả trong phần tổng quan về PKI. Trong phạm trù triển khai hệ thống PKI, ta cần tìm hiểu những chức năng mà hệ quản lý PKI bắt buộc phải có. Mặt khác, để đề ra những phần công việc cần lập trình thực thi trong đồ án thực tập này, ta sẽ lấy những chức năng này làm cơ sởđể lập trình thực thi một hệ thống PKI (gồm CA và EE) với các chức năng tối thiểu. Những chức năng bắt buộc đối với hệ thống quản lý PKI gồm có:
2.2.1. Khởi tạo CA gốc
Khi một CA mới tham gia vào hệ thống PKI, nó phải tạo ra các thẻ xác nhận theo kiểu tự
ký (self-signed). Các thẻ xác nhận này được ký với khoá riêng của CA gốc đó và trường mô tả cho kiểu thẻ xác nhận là NewWithNew. Nghĩa là, thẻ xác nhận được cấp lần đầu cho các đối tượng trong hệ thống. Kiểu thẻ xác nhận này cũng được dùng khi CA muốn gửi thẻ xác nhận đến cho một đối tượng mới tham gia hệ thống. Thông điệp chứa thẻ xác nhận này được gửi đi sau khi CA thực hiện công việc cập nhật khoá công khai của mình.
Đồng thời với việc tạo và gửi đi các thẻ xác nhận của mình đến cho các đối tượng trong hệ thống, CA gốc cũng phải tạo danh sách các thẻ xác nhận cần huỷ bỏ (CRL) và lưu các thẻ xác nhận đã gửi đi vào danh sách này. Đây chính là cơ sởđể CA huỷ bỏ các khoá và thực hiện các phiên cập nhật khoá của mình.
2.2.2. Cập nhật khoá của CA gốc
Các khoá của CA đều có thời gian hiệu lực nhất định nên chúng cần phải được cập nhật theo định kỳ. Thời gian hiệu lực của khoá sẽ tuỳ thuộc vào các chính sách được thiết lập
đối với hệ thống PKI. Các thẻ xác nhận theo kiểu NewWithNew, NewWithOld, và OldWithNew được CA phát hành và gửi đến cho các đối tượng sử dụng đã có mặt trong hệ thống. Những đối tượng này đang nắm giữ thẻ xác nhận cũ của CA (kiểu OldWithOld), khi nhận được các thẻ xác nhận mới gửi đến từ CA, có thể chuyển sang các thẻ xác nhận mới theo kiểu NewWithNew một cách an toàn. Ngoài ra, hoạt động này của CA gốc còn giúp cho các đối tượng sử dụng mới (những đối tượng sẽ nhận được thẻ xác nhận kiểu
NewWithNew) có thể thu được thẻ xác nhận kiểu OldWithOld một cách an toàn, điều này sẽ giúp cho đối tượng sử dụng mới có thể kiểm tra các dữ liệu đã có (dữ liệu có thểđược kiểm tra bởi khoá công khai trong các thông điệp kiểu OldWithOld)
2.2.3. Khởi tạo các CA thứ cấp
Nếu xét trên phương diện các giao thức quản lý, việc khởi tạo một CA thứ cấp cũng giống với việc khởi tạo một EE. Điểm khác biệt duy nhất là các CA thứ cấp cũng phải khởi tạo một CRL của mình.
2.2.4. Tạo lập CRL
Trước khi phát hành và gửi đi các thẻ xác nhận, một CA mới được khởi tạo phải tạo ra các CRL trống để chuẩn bị cho việc bổ sung các thẻ xác nhận cần huỷ bỏ. Các CRL này cũng sẽđược cập nhật thông tin định kỳ theo thời gian hiệu lực của các thẻ xác nhận.
Những vấn đề cơ bản trong xây dựng hệ thống PKI HẠ TẦNG KHOÁ CÔNG KHAI
30
2.2.5. Yêu cầu về thông tin hệ thống PKI
Khi một đối tượng trong hệ thống PKI (CA, RA hoặc EE) muốn có được thông tin trạng thái của một CA nào đó, đối tượng này có thể gửi cho CA đo một yêu cầu về các thông tin trên. CA nhận được yêu cầu phải trả lời bằng việc cung cấp ít nhất là các thông tin đã
được yêu cầu. Nếu có một số trường thông tin nào đó không thểđược đáp ứng thì phải có một thông điệp báo lỗi gửi về cho đối tượng yêu cầu.
2.2.6. Xác nhận ngang hàng
Trong giao thức của việc xác nhận ngang hàng, CA yêu cầu sẽ là CA có tên trong trường
subject của thẻ xác nhận (CA được cấp phát thẻ xác nhận). Trong khi đó, CA trả lời sẽ
chính là CA đã phát hành thẻ xác nhận này. Quá trình xác nhận ngang hàng là cần thiết khi các CA muốn trao đổi thông tin với nhau vì nó giúp các CA biết chắc mình đang trao
đổi thông tin với đối tượng nào.
2.2.7. Khởi tạo các EE
Cũng giống như các CA, những EE cũng phải được khởi tạo khi tham gia vào hệ thống PKI. Quá trình khởi tạo cho các đối tượng này bao gồm ít nhất 2 bước sau:
2.2.7.1. Thu thập thông tin về hệ thống PKI
Trong thủ tục này, ta cần có những thông tin sau đây: 1. Khoá công khai của CA gốc.
2. Nhánh xác nhận từ CA gốc đến CA đang quản lý đối tượng này cùng với các CRL có liên quan (trường hợp CA quản lý đối tượng không phải là CA gốc).
3. Những thuật toán và các tham số của thuật toán mà CA quản lý hỗ trợ trong các mục đích sử dụng có liên quan.
2.2.7.2. Kiểm tra khoá công khai của CA gốc
Một EE phải có được khoá công khai của CA gốc một cách an toàn. Một trong số các phương thức hiệu quảđểđảm bảo yêu cầu này là việc sử dụng các thẻ xác nhận tự ký và
được trao đổi qua các phương tiện out-of-band. Sau khi nhận được thẻ xác nhận này từ
CA gốc, các EE có thể sử dụng những thẻ xác nhận này một cách an toàn.
2.2.8. Yêu cầu xác nhận
Một EE sau khi khởi tạo có thể sẽ yêu cầu một thẻ xác nhận vào bất kỳ thời điểm nào. Yêu cầu này được truyền tải bởi thông điệp yêu cầu thẻ xác nhận (CR). Nếu đối tượng đã có một cặp khoá để tạo chữ ký thì thông điệp yêu cầu sẽđược bảo vệ bằng cách thực hiện phương thức chữ ký sốđối với nó. Nếu yêu cầu được chấp nhận, CA sẽ trả về cho
đối tượng sử dụng một thẻ xác nhận mới.
2.2.9. Cập nhật khoá
Khi cặp khoá của một EE không còn hiệu lực nữa, đối tượng này có thể yêu cầu được cập nhật cặp khoá của mình bằng một cặp khoá mới. Yêu cầu này được truyền tải bởi
thông điệp yêu cầu cập nhật khoá (KUR). Nếu EE đã có một cặp khoá tạo chữ ký thì thông điệp yêu cầu này sẽđược bảo vệ thông qua phương thức chữ ký số. Nếu yêu cầu
được chấp thuận thì CA sẽ trả về một thông điệp trả lời yêu cầu cập nhật khoá (KUP) có chứa một thẻ xác nhận mới cho đối tượng.
Dong Manh Quan Trang 32 23/08/2005
Phần 3
3 THẺ XÁC NHẬN THEO CHUẨN X.509
Thẻ xác nhận là thành phần cốt yếu của hệ thống PKI. Trong phần này, ta sẽ tìm hiểu cấu trúc của thẻ xác nhận trong hệ thống PKI, trong đó, cấu trúc của thẻ xác nhận được mô tả
có phiên bản 3.0. Ta sẽ tập trung mô tả cấu trúc của thẻ xác nhận này trong các dịch vụ
thưđiện tử, dịch vụ IPSEC, và các dịch vụ WWW. Các nội dung cần tìm hiểu bao gồm:
¾ Các trường cơ bản của thẻ xác nhận.
¾ Cấu trúc TBSCertificate
¾ Các phần mở rộng của thẻ xác nhận X.509
3.1. CÁC TRƯỜNG CƠ BẢN CỦA THẺ XÁC NHẬN
Một thẻ xác nhận theo chuẩn X.509 phiên bản 3.0 là một dãy các cấu trúc gồm có 3 trường được mô tả như sau:
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate, -- Thẻ xác nhận sẽ được ký signatureAlgorithm AlgorithmIdentifier, -- Thuật toán tạo chữ ký số
signatureValue BIT STRING} -- Thẻ xác nhận sau khi ký
Sau đây, ta sẽ tìm hiểu cấu trúc và vai trò của từng trường cơ bản trên của thẻ xác nhận.
3.1.1. Trường tbsCertificate
Trường này chứa những thông tin cơ bản nhất của thẻ xác nhận. Trong đó, ta có thể kể đến tên của đối tượng phát hành, tên của đối tượng sử dụng, thời hạn hiệu lực và những thông tin khác có liên quan. Trong các phần sau, ta sẽ tìm hiểu kỹ hơn về các trường thông tin này.
3.1.2. Trường signatureAlgorithm
Trường này chứa tên của thuật toán mã hoá mà CA sử dụng để thức hiện phương thức