Đề tài Hạ tầng khoá công khai

MỤC LỤC

MỤC LỤC. 1

CÁC THUẬT NGỮ. 5

ĐẶT VẤN ĐỀ. 7

1 TỔNG QUAN VỀPKI . 8

1.1. KHÁI QUÁT . 8

1.2. CÁC DỊCH VỤ VÀ PHẠM VI ỨNG DỤNG CỦA PKI . 8

1.2.1. Các yêu cầu cơbản của an toàn an ninh thông tin. 8

1.2.2. Khảnăng đáp ứng của các dịch vụsửdụng PKI. 9

1.2.3. Các dịch vụan toàn an ninh dựa trên hệthống PKI . 9

1.3. CÁC ĐỐI TƯỢNG CƠ BẢN CỦA HỆ THỐNG PKI . 10

1.3.1. Chủthểvà các đối tượng sửdụng. 10

1.3.2. Đối tượng quản lý thẻxác nhận . 11

1.3.3. Đối tượng quản lý đăng ký thẻxác nhận . 11

1.4. CÁC HOẠT ĐỘNG CƠ BẢN TRONG HỆ THỐNG PKI . 12

1.4.1. Mô hình tổng quát của hệthống PKI . 12

1.4.2. Thiết lập các thẻxác nhận. 12

1.4.3. Khởi tạo các EE . 12

1.4.4. Các hoạt động liên quan đến thẻxác nhận . 13

1.4.4.1. Đăng ký và xác nhận ban đầu . 13

1.4.4.2. Cập nhật thông tin vềcặp khoá. 13

1.4.4.3. Cập nhật thông tin vềthẻxác nhận. 13

1.4.4.4. Cập nhật thông tin vềcặp khoá của CA . 13

1.4.4.5. Yêu cầu xác nhận ngang hàng .14

1.4.4.6. Cập nhật thẻxác nhận ngang hàng . 14

1.4.5. Phát hành thẻvà danh sách thẻbịhuỷbỏ. 14

1.4.6. Các hoạt động phục hồi. 14

1.4.7. Các hoạt động huỷbỏ. 15

1.5. CẤU TRÚC CỦA CÁC THÔNG ĐIỆP PKI . 15

1.5.1. Giới thiệu vềnguyên tắc giảmã. 15

1.5.2. Cấu trúc tổng quát của thông điệp PKI . 16

1.5.3. Trường PKIHeader. 17

1.5.4. Trường PKIBody. 18

1.5.4.1. Thông điệp yêu cầu khởi tạo. 20

1.5.4.2. Thông điệp trảlời yêu cầu khởi tạo . 20

1.5.4.3. Thông điệp yêu cầu đăng ký/yêu cầu thẻxác nhận . 20

1.5.4.4. Thông điệp trảlời yêu cầu đăng ký/yêu cầu thẻxác nhận . 20

1.5.4.5. Thông điệp yêu cầu cập nhật khoá. 21

1.5.4.6. Thông điệp trảlời yêu cầu cập nhật khoá. 21

1.5.4.7. Thông điệp yêu cầu khôi phục khoá . 21

1.5.4.8. Thông điệp trảlời yêu cầu khôi phục khoá . 21

1.5.4.9. Thông điệp yêu cầu huỷbỏ. 21

1.5.4.10. Thông điệp trảlời yêu cầu huỷbỏ. 21

1.5.4.11. Thông điệp yêu cầu thẻxác nhận ngang hàng. 22

1.5.4.12. Thông điệp trảlời yêu cầu xác nhận ngang hàng . 22

1.5.4.13. Thông điệp công bốcập nhật khoá CA . 22

1.5.4.14. Thông điệp công bốthẻxác nhận . 22

1.5.4.15. Thông điệp thông báo huỷbỏthẻxác nhận. 22

1.5.4.16. Thông điệp thông báo CRL. 23

1.5.4.17. Thông điệp xác nhận . 23

1.5.4.18. Thông điệp PKI đa mục đích . 23

1.5.4.19. Thông điệp trảlời tổng quát. 23

1.5.4.20. Thông điệp thông báo lỗi . 23

2 NHỮNG VẤN ĐỀCƠBẢN TRONG XÂY DỰNG HỆTHỐNG PKI . 24

2.1. CÁC MÔ HÌNH TRIỂN KHAI HỆ THỐNG PKI . 24

2.1.1. Kiến trúc phân cấp. 24

2.1.1.1. Những ưu điểm của kiến trúc PKI phân cấp. 25

2.1.1.2. Những khuyết điểm của kiến trúc PKI phân cấp. 25

2.1.2. Kiến trúc hệthống PKI mạng lưới . 26

2.1.2.1. Ưu điểm của kiến trúc PKI mạng lưới. 26

2.1.2.2. Nhược điểm của mô hình PKI mạng lưới. 27

2.1.3. Kiến trúc danh sách tin cậy . 27

2.1.3.1. Ưu điểm của kiến trúc PKI danh sách tin cậy . 27

2.1.3.2. Nhược điểm của kiến trúc PKI danh sách tin cậy . 28

2.2. NHỮNG CHỨC NĂNG BẮT BUỘC TRONG QUẢN LÝ PKI. 29

2.2.1. Khởi tạo CA gốc .29

2.2.2. Cập nhật khoá của CA gốc. 29

2.2.3. Khởi tạo các CA thứcấp . 29

2.2.4. Tạo lập CRL. 29

2.2.5. Yêu cầu vềthông tin hệthống PKI . 30

2.2.6. Xác nhận ngang hàng . 30

2.2.7. Khởi tạo các EE . 30

2.2.7.1. Thu thập thông tin vềhệthống PKI. 30

2.2.7.2. Kiểm tra khoá công khai của CA gốc . 30

2.2.8. Yêu cầu xác nhận . 30

2.2.9. Cập nhật khoá . 30

3 THẺXÁC NHẬN THEO CHUẨN X.509. 32

3.1. CÁC TRƯỜNG CƠ BẢN CỦA THẺ XÁC NHẬN . 32

3.1.1. Trường tbsCertificate . 32

3.1.2. Trường signatureAlgorithm. 32

3.1.3. Trường signatureValue. 33

3.2. CẤU TRÚC TBSCERTIFICATE. 33

3.2.1. Trường version. 33

3.2.2. Trường serialNumber . 33

3.2.3. Trường signature . 34

3.2.4. Trường issuer. 34

3.2.5. Trường validity . 35

3.2.6. Trường subject . 35

3.2.7. Trường subjectPublicKeyInfo. 35

3.2.8. Trường uniqueIdentifiers. 35

3.2.9. Trường extensions. 36

3.3. CÁC PHẦN MỞ RỘNG CỦA THẺ XÁC NHẬN X.509. 36

3.3.1. Phần mởrộng Authority Key Identifier. 36

3.3.2. Phần mởrộng Subject Key Identifier . 36

3.3.3. Phần mởrộng Key Usage. 37

3.3.4. Phần mởrộng Private Key Usage Period. 37

3.3.5. Phần mởrộng Certificate Policies . 38

3.3.6. Phần mởrộng Policy Mappings. 38

3.3.7. Phần mởrộng Subject Alternative Name . 39

3.3.8. Phần mởrộng Issuer Alternative Names . 40

3.3.9. Phần mởrộng Subject Directory Attributes. 40

3.3.10. Phần mởrộng Basic Constraints . 40

3.3.11. Phần mởrộng Name Constraints. 40

3.3.12. Phần mởrộng Policy Constraints . 41

3.3.13. Phần mởrộng Extended key usage field . 41

3.3.14. Phần mởrộng CRL Distribution Points. 42

4 QUÁ TRÌNH XÂY DỰNG HỆTHỐNG . 43

4.1. MÔI TRƯỜNG, CÔNG CỤ, MÔ HÌNH, CHỨC NĂNG, DỮ LIỆU. 43

4.1.1. Lựa chọn môi trường và công cụ. 43

4.1.1.1. Môi trường phát triển . 43

4.1.1.2. Công cụphát triển . 43

4.1.2. Lựa chọn mô hình hệthống PKI . 44

4.1.3. Lựa chọn cấu trúc dữliệu. 45

4.1.4. Lựa chọn các chức năng được thực hiện . 45

4.2. PHÂN TÍCH THIẾT KẾ CHỨC NĂNG CHI TIẾT . 46

4.2.1. Mô hình thiết lập và quản lý kết nối. 46

4.2.1.1. Phân tích yêu cầu . 46

4.2.1.2. Phương thức thực hiện .47

4.2.2. Sửdụng các dịch vụbảo mật. 47

4.2.2.1. Giới thiệu vềcác công cụan toàn an ninh của hệ điều hành . 47

4.2.2.2. Những đánh giá và giải pháp . 48

4.2.2.3. Kết luận . 49

4.2.3. Tạo và phân tích các cấu trúc dữliệu cơbản. 49

4.2.3.1. Các thẻxác nhận . 49

4.2.3.2. Các thông điệp PKI . 50

4.2.4. Các công cụquản trịhệthống . 50

4.2.4.1. Công cụquản lý người sửdụng . 50

4.2.4.2. Công cụtạo và quản lý chính sách . 51

4.2.4.3. Công cụquản lý danh sách thẻxác nhận. 51

4.2.4.4. Công cụquản lý các sựkiện đối với hệthống. 52

4.2.5. Lưu trữdữliệu . 52

4.2.5.1. Lưu thông tin quản lý đối tượng sửdụng chương trình . 52

4.2.5.2. Lưu thông tin chính sách vềthẻxác nhận . 52

4.2.5.3. Lưu trữthông tin vềthẻxác nhận . 53

4.2.6. Chức năng mã hoá dữliệu . 53

4.2.6.1. Sựcần thiết của chức năng . 53

4.2.6.2. Định hướng xây dựng . 53

4.2.6.3. Lưu đồthuật toán thực hiện . 54

4.2.7. Phân tích thiết kếchi tiết các chức năng hệthống PKI. 54

4.2.7.1. Khởi tạo CA . 54

4.2.7.2. Khởi tạo EE . 56

4.2.7.3. Cập nhật khoá của CA . 58

4.2.7.4. Yêu cầu và cấp phát thẻxác nhận. 60

4.2.7.5. Yêu cầu và cấp thẻxác nhận ngang hàng giữa các CA. 61

4.2.7.6. Yêu cầu và trảlời những thông tin vềtrạng thái của CA. 64

4.3. LẬP TRÌNH THỰC THI HỆ THỐNG PKI . 65

4.3.1. Cụthểhoá những yêu cầu của quá trình phân tích thiết kế. 65

4.3.1.1. Các yêu cầu đối với CA . 66

4.3.1.2. Các yêu cầu đối với EE . 66

4.3.2. Các lớp đối tượng cơbản . 67

4.3.2.1. Lớp CCertificationAuthority. 67

4.3.2.2. Lớp CEndEntity . 67

4.3.2.3. Lớp CPKIMessage . 68

4.3.2.4. Lớp CCertificate. 68

4.3.2.5. Lớp CSessionSocket . 68

4.3.2.6. Lớp CListeningSocket . 68

4.3.2.7. Lớp CCryptoTools . 68

4.3.3. Các đối tượng lưu trữdữliệu và phương thức quản lý . 69

4.3.3.1. Quản lý file lưu trữaccount .69

4.3.3.2. Quản lý file lưu trữchính sách hệthống PKI . 69

4.3.3.3. Quản lý file lưu trữthẻxác nhận . 70

5 KIỂM THỬVÀ ĐÁNH GIÁ KẾT QUẢ. 71

5.1. ĐÁNH GIÁ VỀ NHỮNG KẾT QUẢ NGHIÊN CỨU LÝ THUYẾT . 71

5.2. ĐÁNH GIÁ VỀNHỮNG CHỨC NĂNG ĐÃ XÂY DỰNG . 71

5.2.1. Các chức năng đối với thẻxác nhận . 72

5.2.1.1. Chức năng tạo thẻxác nhận . 72

5.2.1.2. Chức năng đóng gói và lưu trữthẻxác nhận. 73

5.2.1.3. Chức năng quản lý danh sách thẻxác nhận. 74

5.2.2. Các chức năng quản lý hệthống PKI . 74

5.2.2.1. Yêu cầu và đáp ứng thẻxác nhận . 74

5.2.2.2. Chức năng yêu cầu và đáp ứng thông tin hệthống PKI . 75

5.2.2.3. Chức năng khởi tạo hệthống . 75

5.2.2.4. Chức năng yêu cầu và đáp ứng thẻxác nhận ngang hàng. 75

5.2.3. Các chức năng quản lý kết nối . 76

5.2.4. Các công cụquản lý hệthống . 76

5.2.4.1. Quản lý người sửdụng hệthống. 76

5.2.4.2. Công cụthiết lập và quản lý chính sách thẻxác nhận. 77

5.2.4.3. Công cụquản lý các sựkiện đối với hệthống. 77

5.2.4.4. Chức năng mã hoá dữliệu . 78

TÀI LIỆU THAM KHẢO. 79

pdf79 trang | Chia sẻ: netpro | Lượt xem: 1710 | Lượt tải: 4download
Bạn đang xem trước 20 trang tài liệu Đề tài Hạ tầng khoá công khai, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hoá chung đi kèm với thẻ đó. Đây chính là yêu cầu lớn nhất đối với thẻ xác nhận. Sau đây, ta sẽ tìm hiểu các cấu trúc của các trường cơ bản đã nêu trên. 3.2. CẤU TRÚC TBSCERTIFICATE Cấu trúc này cho phép ta lưu các thông tin liên quan đến đối tượng sử dụng và đối tượng phát hành thẻ xác nhận như đã nói ở trên. Các trường của cấu trúc này gồm có: TBSCertificate ::= SEQUENCE { version [0] EXPLICIT Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo, issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, extensions [3] EXPLICIT Extensions OPTIONAL} Các trường của cấu trúc TBSCertificate được mô tả như sau: 3.2.1. Trường version Trường này chỉ ra phiên bản của thẻ xác nhận đã được mã hoá. Trong trường hợp thẻ xác nhận có dùng đến các trường mở rộng thì phiên bản của thẻ xác nhận bắt buộc phải là 3 (giá trị là 2). Nếu không có các trường mở rộng nhưng lại có những trường định danh cho đối tượng sử dụng và đối tượng phát hành thì phiên bản của thẻ xác nhận có thể là 2 (giá trị là 1). Tuy nhiên, trong trường hợp này ta vẫn có thể sử dụng phiên bản 3. 3.2.2. Trường serialNumber Trường này bắt buộc phải là một số nguyên dương. Nó được CA gán cho mỗi thẻ xác nhận khi CA tạo và thực hiện phương thức chữ ký số đối với thẻ vừa tạo được. CA phải đảm bảo số hiệu này phải là duy nhất đối với mỗi thẻ xác nhận được tạo ra. Để đảm bảo yêu cầu về tính duy nhất của số hiệu thẻ xác nhận, trường biểu diễn số hiệu này có thể là các số nguyên lớn. Chuỗi số biểu diễn có thể có độ dài lên tới 20 byte. Thẻ xác nhận theo chuẩn X.509 HẠ TẦNG KHOÁ CÔNG KHAI 34 3.2.3. Trường signature Trường này chứa định danh của thuật toán mã hoá mà CA sử dụng để tạo chữ ký số cho thẻ xác nhận. Số hiệu của thuật toán lưu trong trường này phải giống với số hiệu của thuật toán lưu trong trường signatureAlgorithm. 3.2.4. Trường issuer Trường này chỉ ra đối tượng nào đã tạo ra thẻ xác nhận, tạo chữ ký số ứng với thẻ xác nhận và phát hành nó. Trường này bắt buộc phải mang tên CA đã phát hành ra nó. Trường này có cấu trúc như sau: Name ::= CHOICE { RDNSequence } RDNSequence ::= SEQUENCE OF RelativeDistinguishedName RelativeDistinguishedName ::= SET OF AttributeTypeAndValue AttributeTypeAndValue ::= SEQUENCE { type AttributeType, value AttributeValue } AttributeType ::= OBJECT IDENTIFIER AttributeValue ::= ANY DEFINED BY AttributeType DirectoryString ::= CHOICE { teletexString TeletexString (SIZE (1..MAX)), printableString PrintableString (SIZE (1..MAX)), universalString UniversalString (SIZE (1..MAX)), utf8String UTF8String (SIZE (1..MAX)), bmpString BMPString (SIZE (1..MAX)) } Như vậy, trường issuer được biểu diễn bởi một đối tượng có tên Name. Đối tượng này biểu diễn tên theo các mức dựa trên các thuộc tính. Ví dụ, tên nước ta có giá trị là Vietnam. Giá trị của thành phần AttributeValue được quyết định bởi AttributeType và nó thường có giá trị kiểu DirectoryString. Kiểu dữ liệu này có thể có nhiều lựa chọn khác nhau, tuỳ theo trường hợp cụ thể mà ta có lựa chọn phù hợp. Hiện nay, trong các ứng dụng mail và WWW, ta thường sử dụng kiểu UTF8String. Trong biểu diễn phân cấp đối với các đối tượng sử dụng và đối tượng phát hành thẻ xác nhận, ta có một số giá trị thuộc tính chuẩn như sau: 1. Tên nước - country. 2. Tên tổ chức - organization. 3. Tên đơn vị - organizational-unit. 4. Cấp bậc - distinguished name qualifier. 5. Tên tỉnh hoặc bang - state or province name. 6. Tên thường gọi - common name. 7. Số hiệu - serial number. Thẻ xác nhận theo chuẩn X.509 HẠ TẦNG KHOÁ CÔNG KHAI 35 Đây là những trường chuẩn và đã được sử dụng rộng rãi như những thể hiện của chuẩn về tổ chức thư mục X.500. Ngoài ra, ta cũng cần lưu ý để đảm bảo hệ thống PKI có thể bao hàm một số thuộc tính sau: 1. Nơi cư trú - locality. 2. Chức danh - title. 3. Họ - surname. 4. Tên - given name. 5. Các chữ cái đầu của tên - initials. 6. Biệt danh - pseudonym. 7. Thế hệ - generation qualifier (Ví dụ, "Jr.", "3rd", hay "IV"). 3.2.5. Trường validity Trường thông tin về thời gian hiệu lực của thẻ xác nhận là trường đánh dấu khoảng thời gian mà trong đó CA đảm bảo việc cập nhật thông tin về thẻ xác nhận đó. Trường này chứa hai biến lưu thời điểm thẻ xác nhận bắt đầu có hiệu lực và thời điểm thẻ hết hiệu lực. Cả hai thời hạn đều có cùng kiểu dữ liệu là UTCTime nếu biểu diễn thời gian đến trước năm 2049, nếu thời gian biểu diễn là từ năm 2050 trở đi thì ta phải dùng kiểu GeneralizedTime. 3.2.6. Trường subject Trường subject chỉ ra đối tượng tương ứng với khoá công khai được lưu trong thẻ xác nhận này. Nói cách khác, nó chỉ ra đối tượng sử dụng của thẻ xác nhận. Tên của đối tượng sử dụng có thể được nêu ngay trong trường subject mà cũng có thể được nêu trong trường mở rộng subjectAltName. Nếu đối tượng sử dụng là một CA thì tên được nêu trong trường subject phải giống với tên được nêu trong trường issuer của tất cả các thẻ xác nhận mà CA này phát hành. Ngoài ra, nếu CA này đảm nhận việc phát hành và quản lý danh sách các thẻ sẽ bị huỷ bỏ thì trường thông tin issuer trong các danh sách mà CA phát hành cũng phải giống với tên trong trường subject này. 3.2.7. Trường subjectPublicKeyInfo Trường này được sử dụng để lưu trữ khoá công khai và thuật toán sử dụng khoá này (RSA, DSA, Diffie-Hellman). Thuật toán được xác định thông qua cấu trúc AlgorithmIdentifier đã nêu trên. 3.2.8. Trường uniqueIdentifiers Trường này chỉ bắt buộc phải tồn tại khi thông điệp có phiên bản là 2 hoặc 3. Ta không được phép sử dụng khi phiên bản là 1. Định danh đơn nhất của các đối tượng sử dụng và các đối tượng phát hành cho phép ta xử lý được các trường hợp dùng lại các tên của đối tượng trong hệ thống qua những khoảng thời gian khác nhau. Thẻ xác nhận theo chuẩn X.509 HẠ TẦNG KHOÁ CÔNG KHAI 36 3.2.9. Trường extensions Trường này chỉ có trong các thẻ xác nhận phiên bản thứ 3 trở đi. Nếu tồn tại thì trường này sẽ chứa một dãy các trường mở rộng của thẻ xác nhận. Trong phần sau đây, ta sẽ nghiên cứu về cấu trúc và đặc điểm của từng trường mở rộng. 3.3. CÁC PHẦN MỞ RỘNG CỦA THẺ XÁC NHẬN X.509 Các phần mở rộng của thẻ xác nhận theo chuẩn X.509 phiên bản 3 được định ra nhằm bổ sung thêm một số thuộc tính đối với các đối tượng sử dụng cùng với khoá chung của mình. Đồng thời, nó cũng hỗ trợ thêm cho quá trình xác nhận theo mô hình phân cấp. Định dạng của thẻ xác nhận X.509 cũng cho phép từng nhóm đối tượng truyền thông định ra các phần mở rộng riêng cho phạm vi của nhóm. Mỗi phần mở rộng của thẻ xác nhận sẽ được đánh dấu là critical hay non-critical tùy thuộc vào nội dung mà trường đó lưu trữ. Ví dụ, một đối tượng sử dụng sẽ không chấp nhận một thẻ xác nhận mà trong phần mở rộng của thẻ lại không có một trường mở rộng bắt buộc nào đó. Mỗi phần mở rộng đều có một số hiệu riêng. Số hiệu này được định ra theo chuẩn ASN.1 Sau đây ta sẽ nghiên cứu từng trường mở rộng cụ thể. 3.3.1. Phần mở rộng Authority Key Identifier Phần mở rộng này cho phép ta xác định được khoá công khai của một đối tượng dựa trên khoá riêng mà đối tượng này đã sử dụng để tạo chữ ký số đối với các thẻ xác nhận. Nó được sử dụng khi một đối tượng có nhiều cặp khoá để tạo chữ ký số. Để có thể xác định được khoá công khai của một đối tượng có thể phải sử dụng đến số hiệu khoá, tên của đối tượng sở hữu khoá và số seri của thẻ xác nhận được ký bằng khoá đó. Trong một hệ thống được triển khai với khả năng xác định khoá công khai của các đối tượng, phần này nên được sử dụng. Tuy nhiên, trong phần thông tin về các trường thì ta không được phép đánh dấu phần này là critical. Cấu trúc của và định danh của phần mở rộng này được mộ tả như sau: id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 } AuthorityKeyIdentifier ::= SEQUENCE { keyIdentifier [0] KeyIdentifier OPTIONAL, authorityCertIssuer [1] GeneralNames OPTIONAL, authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL} KeyIdentifier ::= OCTET STRING 3.3.2. Phần mở rộng Subject Key Identifier Trường này cho phép ta tìm ra những thẻ xác nhận chứa một khoá công khai nào đó. Đối với thẻ xác nhận của các EE, trường này cho phép ta định ra được những thẻ xác nhận có chứa một khoá công khai được sử dụng trong một trình ứng dụng nào đó. Trong trường hợp đối tượng sử dụng thu nhận được nhiều thẻ xác nhận từ nhiều CA khác nhau thì trường thông tin này cho phép ta nhanh chóng tìm ra được một tập các thẻ xác nhận có chứa khoá công khai nhất định. Để hỗ trợ các trình ứng dụng trong việc định ra một thẻ xác nhận nào đó của đối tượng sử dụng, trường này nên được sử dụng trong tất cả các thẻ xác nhận. Việc định ra giá trị Thẻ xác nhận theo chuẩn X.509 HẠ TẦNG KHOÁ CÔNG KHAI 37 cho trường thông tin này thường được dựa trên khoá công khai tương ứng và các hàm phân tách một chiều. Cấu trúc của trường này được mô tả như sau: id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 14 } SubjectKeyIdentifier ::= KeyIdentifier 3.3.3. Phần mở rộng Key Usage Trường này cho ta biết được mục đích của khoá được lưu trong thẻ xác nhận. Những hạn chế trong việc sử dụng có thể được thực hiện khi ta không muốn một khoá có thể được sử dụng trong nhiều hoạt động khác nhau. Ví dụ, một khoá RSA chỉ nên được sử dụng trong việc kiểm định chữ ký đối với các thẻ xác nhận hay danh sách các thẻ xác nhận bị huỷ bỏ. Trường này phải được sử dụng nếu khoá công khai trong thẻ xác nhận được sử dụng để kiểm định chữ ký số được thực hiện với các thẻ xác nhận khác. Khi được sử dụng, trường này cần được đánh dấu là critical. Cấu trúc của trường này với các dạng thông tin được mô tả như sau: id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 } KeyUsage ::= BIT STRING { digitalSignature (0), nonRepudiation (1), keyEncipherment (2), dataEncipherment (3), keyAgreement (4), keyCertSign (5), cRLSign (6), encipherOnly (7), decipherOnly (8) } 3.3.4. Phần mở rộng Private Key Usage Period Trường mở rộng này cho phép đối tượng phát hành thẻ xác nhận định ra khoảng thời gian hợp lệ của một khoá riêng khác với thời gian hợp lệ của thẻ xác nhận tương ứng. Trường mở rộng này được tạo ra để phục vụ cho các khoá của dịch vụ chữ ký số. Cũng giống như trường định ra khoảng thời gian hợp lệ của thẻ xác nhận, phần mở rộng này cũng gồm hai thành phần định ra thời điểm bắt đầu và thời điểm kết thúc của khoảng thời gian hợp lệ. Nghĩa là, khoá riêng ứng với thẻ xác nhận sẽ không được phép dùng để tạo các chữ ký số trước và sau khoảng thời gian này. Khi được sử dụng, phần mở rộng này được biểu diễn dưới dạng GeneralizedTime (YYYYMMDDHHMMSSZ). Tuy nhiên, phần mở rộng này thường không được sử dụng trong hệ thống PKI ở phạm vi Internet. Trong trường hợp được sử dụng, các CA tạo thẻ xác nhận không được phép đánh dấu phần này là critical. Định danh và cấu trúc của phần mở rộng này được biểu diễn như sau: id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::= { id-ce 16 } PrivateKeyUsagePeriod ::= SEQUENCE { notBefore [0] GeneralizedTime OPTIONAL, notAfter [1] GeneralizedTime OPTIONAL} Thẻ xác nhận theo chuẩn X.509 HẠ TẦNG KHOÁ CÔNG KHAI 38 3.3.5. Phần mở rộng Certificate Policies Phần mở rộng này chứa một hoặc một tập hợp các điều khoản của thông tin về chính sách đối với thẻ xác nhận. Trong một thẻ xác nhận của đối tượng sử dụng, các điều khoản của thông tin chính sách được dùng để nêu rõ thẻ xác nhận đã được tạo ra trong hoàn cảnh nào và thẻ xác nhận sẽ được sử dụng trong những mục đích gì. Trong một thẻ xác nhận của CA, những điều khoản này sẽ giới hạn các nhánh xác nhận được lưu trong thẻ xác nhận này. Trong trường hợp CA không muốn có một giới hạn nào đối với các nhánh xác nhận thì nó có thể gán cho phần mở rộng này một chính sách đặc biệt gọi là anyPolicy, với giá trị “2.5.29.32.0”. Mỗi trình ứng dụng đều cần phải có một danh mục các chính sách mà nó chấp nhận; đồng thời, nó phải có khả năng đối chiếu số hiệu của các chính sách trong một thẻ xác nhận nào đó với các số hiệu của những chính sách trong danh mục này. Nếu được sử dụng và được đánh dấu là critical thì trình ứng dụng bắt buộc phải hiểu được thông tin của phần mở rộng này, nếu không, phải loại bỏ thẻ xác nhận tương ứng. id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 } anyPolicy OBJECT IDENTIFIER ::= { id-ce-certificate-policies 0 } certificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation PolicyInformation ::= SEQUENCE { policyIdentifier CertPolicyId, policyQualifiers SEQUENCE SIZE (1..MAX) OF PolicyQualifierInfo OPTIONAL} CertPolicyId ::= OBJECT IDENTIFIER PolicyQualifierInfo ::= SEQUENCE { policyQualifierId PolicyQualifierId, qualifier ANY DEFINED BY policyQualifierId } -- Số hiệu các chính sách áp dụng cho Internet id-qt OBJECT IDENTIFIER ::= { id-pkix 2 } id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 } id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 } PolicyQualifierId ::= OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice ) Qualifier ::= CHOICE { cPSuri CPSuri, userNotice UserNotice } CPSuri ::= IA5String UserNotice ::= SEQUENCE { noticeRef NoticeReference OPTIONAL, explicitText DisplayText OPTIONAL} NoticeReference ::= SEQUENCE { organization DisplayText, noticeNumbers SEQUENCE OF INTEGER } DisplayText ::= CHOICE { ia5String IA5String (SIZE (1..200)), visibleString VisibleString (SIZE (1..200)), bmpString BMPString (SIZE (1..200)), utf8String UTF8String (SIZE (1..200)) } 3.3.6. Phần mở rộng Policy Mappings Phần mở rộng này được dùng trong các thẻ xác nhận của các CA. Nó được dùng để ánh xạ thông tin về các chính sách trong trường hợp CA phát hành và CA sử dụng thuộc hai Thẻ xác nhận theo chuẩn X.509 HẠ TẦNG KHOÁ CÔNG KHAI 39 domain khác nhau (Inter-Domain). Việc ánh xạ được thực hiện thông qua số hiệu của các chính sách ở hai CA. Các đối tượng sử dụng của CA phát hành thẻ xác nhận sẽ chấp nhận một số chính sách do CA này đề ra (issuerDomainPolicy) trong một số trình ứng dụng nhất định. Việc ánh xạ chính sách sẽ định ra danh mục các chính sách ở phía CA sử dụng thẻ xác nhận cũng được chấp nhận tương đương với các chính sách thuộc issuerDomainPolicy. Phần mở rộng này có thể được hỗ trợ bởi các trình ứng dụng hoặc các CA. Khi được sử dụng, nó phải được đánh dấu là non-critical. Số hiệu và cấu trúc của phần mở rộng này được mô tả như sau: id-ce-policyMappings OBJECT IDENTIFIER ::= { id-ce 33 } PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF SEQUENCE { issuerDomainPolicy CertPolicyId, subjectDomainPolicy CertPolicyId } 3.3.7. Phần mở rộng Subject Alternative Name Phần mở rộng này cho phép gắn thêm những định danh cho đối tượng sử dụng của thẻ xác nhận. Các loại định danh này được dùng trong cấc loại dịch vụ khác nhau và có định dạng phù hợp với mỗi loại dịch vụ ấy. Do những tên khác nhau của đối tượng sử dụng được coi là có liên hệ chặt chẽ với khoá công khai của thẻ nên tất cả các tên này phải được kiểm chứng bới CA cấp phát thẻ xác nhận. Trong trường hợp đối tượng sử dụng không được nêu ra trong trường subject của thẻ xác nhận thì phần mở rộng này bắt buộc phải được sử dụng. Và khi đó, ta phải đánh dấu trường này là critical. Sau đây, ta có phần mô tả định danh và cấu trúc của phần mở rộng này. id-ce-subjectAltName OBJECT IDENTIFIER ::= { id-ce 17 } SubjectAltName ::= GeneralNames GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName GeneralName ::= CHOICE { otherName [0] OtherName, rfc822Name [1] IA5String, dNSName [2] IA5String, x400Address [3] ORAddress, directoryName [4] Name, ediPartyName [5] EDIPartyName, uniformResourceIdentifier [6] IA5String, iPAddress [7] OCTET STRING, registeredID [8] OBJECT IDENTIFIER} OtherName ::= SEQUENCE { type-id OBJECT IDENTIFIER, value [0] EXPLICIT ANY DEFINED BY type-id } EDIPartyName ::= SEQUENCE { nameAssigner [0] DirectoryString OPTIONAL, partyName [1] DirectoryString } Thẻ xác nhận theo chuẩn X.509 HẠ TẦNG KHOÁ CÔNG KHAI 40 3.3.8. Phần mở rộng Issuer Alternative Names Cũng giống như phần trước, phần mở rộng này cũng được dùng để biểu diễn những định danh khác của đối1 tượng theo định dạng phù hợp với các ứng dụng Internet. Các đối tượng được đề cập ở đây là các CA phát hành thẻ xác nhận. Có một điểm khác biệt là khi phần mở rộng này được sử dụng thì ta không nên đánh dấu nó là critical. Do có cấu trúc và định dạng giống những kiểu tên trong phần trước nên ta có thể mô tả các kiểu tên thay thế cho đối tượng phát hành thẻ xác nhận như sau: id-ce-issuerAltName OBJECT IDENTIFIER ::= { id-ce 18 } IssuerAltName ::= GeneralNames 3.3.9. Phần mở rộng Subject Directory Attributes Phần mở rộng này được sử dụng để biểu diễn các thuộc tính định danh của đối tượng sử dụng thẻ xác nhận. Nó được cấu thành bởi một hoặc một dãy các thuộc tính định danh có liên quan đến đối tượng. Trong trường hợp được sử dụng, phần mở rộng này cần được đánh dấu là non-critical. Biểu diễn của phần mở rộng này như sau: id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= { id-ce 9 } SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute 3.3.10. Phần mở rộng Basic Constraints Phần mở rộng này cho ta biết đối tượng sử dụng thẻ xác nhận có phải là một CA hay không. Ngoài ra, nó còn cho ta biết độ sâu cực đại của một nhánh xác nhận hợp lệ có một nút là thẻ xác nhận này. Tuy nhiên, thành phần biểu diễn độ sâu cực đại này chỉ có ý nghĩa khi đối tượng sử dụng thẻ là một CA. Trong trường hợp khoá công khai của thẻ xác nhận tương ứng được sử dụng chỉ cho mục đích tạo chữ ký số thì phần mở rộng này cần được đánh dấu là critical. Ngược lại, nếu khoá đó được sử dụng cho các mục đích khác thì phần mở rộng này có thể được đánh dấu là critical hoặc non-critical. Ta có biểu diễn về định danh và cấu trúc của phần này như sau: id-ce-basicConstraints OBJECT IDENTIFIER ::= { id-ce 19 } BasicConstraints ::= SEQUENCE { cA BOOLEAN DEFAULT FALSE, pathLenConstraint INTEGER (0..MAX) OPTIONAL} 3.3.11. Phần mở rộng Name Constraints Phần mở rộng này chỉ được sử dụng trong các thẻ xác nhận dành cho CA. Nó định ra tập các tên của các đối tượng sử dụng cấp dưới trong nhánh xác nhận có sử dụng đến thẻ xác nhận tương ứng. Những giới hạn do phần này định ra được áp dụng với cả tên đối tượng trong trường subject lẫn những tên thay thế cho đối tượng trong phần mở rộng đã nêu trên. Ta cần lưu ý là những giới hạn do phần này định ra chỉ có hiệu lực khi những dạng tên tương ứng tồn tại (subject hoặc subject alternative names). Trong trường hợp được sử dụng, phần mở rộng này phải được đánh dấu là critical. Định danh và cấu trúc của nó được mô tả như sau: Thẻ xác nhận theo chuẩn X.509 HẠ TẦNG KHOÁ CÔNG KHAI 41 id-ce-nameConstraints OBJECT IDENTIFIER ::= { id-ce 30 } NameConstraints ::= SEQUENCE { permittedSubtrees [0] GeneralSubtrees OPTIONAL, excludedSubtrees [1] GeneralSubtrees OPTIONAL} GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree GeneralSubtree ::= SEQUENCE { Base GeneralName, minimum [0] BaseDistance DEFAULT 0, maximum [1] BaseDistance OPTIONAL} BaseDistance ::= INTEGER (0..MAX) 3.3.12. Phần mở rộng Policy Constraints Phần này chỉ được sử dụng đối với các thẻ xác nhận được cấp cho các CA. Nó có thể được sử dụng để ràng buộc quá trình xác nhận theo hai chiều. Ngoài ra, nó có thể được sử dụng để ngăn việc ánh xạ các chính sách và yêu cầu mỗi thẻ xác nhận trên một nhánh xác nhận phải chứa số hiệu của một chính sách được chấp nhận. Khi phần này được sử dụng, các CA không được phép để trống thông tin. Do được tổ chức dưới dạng tập hợp các ràng buộc nên trong thực tế, tập hợp này không được là tập rỗng. Phần này có thể được đánh dấu là critical hoặc non-critical. Cấu trúc của phần mở rộng này được mô tả như sau: id-ce-policyConstraints OBJECT IDENTIFIER ::= { id-ce 36 } PolicyConstraints ::= SEQUENCE { requireExplicitPolicy [0] SkipCerts OPTIONAL, inhibitPolicyMapping [1] SkipCerts OPTIONAL} SkipCerts ::= INTEGER (0..MAX) 3.3.13. Phần mở rộng Extended key usage field Phần này cho ta biết thêm những mục đích sử dụng của khoá công khai mang trong thẻ xác nhận tương ứng so với những gì đã nêu trong trường keyUsage cơ bản. Thông thường, phần mở rộng này chỉ được sử dụng cho các thẻ xác nhận cấp cho đối tượng sử dụng. Khi đó, nó có thể được đánh dấu là critical hay non-critical. Cấu trúc của phần này được mô tả như sau: id-ce-extKeyUsage OBJECT IDENTIFIER ::= { id-ce 37 } ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId KeyPurposeId ::= OBJECT IDENTIFIER Với cấu trúc như trên, ta có một số một số mục đích sử dụng mở rộng của khoá công khai như sau: anyExtendedKeyUsage ::= { id-ce-extKeyUsage 0 } id-kp OBJECT IDENTIFIER ::= { id-pkix 3 } -- Sử dụng trong xác thực các WWW server. Các bit mô tả công dụng khoá: -- digitalSignature, keyEncipherment hay keyAgreement id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 } -- Sử dụng trong xác thực các WWW client. Các bit mô tả công dụng khoá: -- digitalSignature và/hoặc keyAgreement id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 } -- Sử dụng để tạo chữ ký số với mã chương trình. Các bit mô tả công dụng khoá: -- digitalSignature Thẻ xác nhận theo chuẩn X.509 HẠ TẦNG KHOÁ CÔNG KHAI 42 id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 } -- Sử dụng trong bảo vệ email. Các bit mô tả công dụng khoá: -- digitalSignature nonRepudiation, va/hoac (keyEncipherment hoac keyAgreement) id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 } -- Gắn gt phân tách của đối tượng với thời gian. Các bit mô tả công dụng khoá: -- digitalSignature và/hoặc nonRepudiation id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 } -- Sử dụng để tạo chữ ký số với thông điệp OCSP. Các bit mô tả công dụng khoá: -- digitalSignature va/hoac nonRepudiation id-kp-OCSPSigning OBJECT IDENTIFIER ::= { id-kp 9 } 3.3.14. Phần mở rộng CRL Distribution Points Phần này định ra cách thức để thu thập các thông tin về CRL. Các trình ứng dụng và các CA cần có khả năng hỗ trợ phần mở rộng này. Khi được sử dụng, nó cần được đánh dấu là non-critical. Ta có định danh và cấu trúc của phần này được mô tả như sau: id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= { id-ce 31 } CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint DistributionPoint ::= SEQUENCE { DistributionPoint [0] DistributionPointName OPTIONAL, Reasons [1] ReasonFlags OPTIONAL, CRLIssuer [2] GeneralNames OPTIONAL} DistributionPointName ::= CHOICE { FullName [0] GeneralNames, NameRelativeToCRLIssuer [1] RelativeDistinguishedName } ReasonFlags ::= BIT STRING { Unused (0), KeyCompromise (1), CACompromise (2), AffiliationChanged (3), Superseded (4), CessationOfOperation (5), CertificateHold (6), PrivilegeWithdrawn (7), AACompromise (8) } Dong Manh Quan Trang 43 23/08/2005 Phần 4 4 QUÁ TRÌNH XÂY DỰNG HỆ THỐNG Trong phần này, ta sẽ tìm hiểu từng bước của quá trình thực thi hệ thống. Quá trình này mang những đặc trưng của đối tượng thực thi và những yêu cầu cụ thể đối với hệ thống cần xây dựng. Tuy nhiên, các bước triển khai của quá trình này đều giống nhau, kết quả của nó là một hệ thống PKI với các đối tượng và hoạt động của nó. Ở mức tối thiểu, việc thực thi cũng phải cho ta một hệ thống với các đối tượng cơ bản và những những chức năng tối thiểu của hệ thống. Các bước của quá trình này gồm có: ¾ Lựa chọn môi trường, công cụ, mô hình, chức năng và dữ liệu. ¾ Phân tích thiết kế chi tiết cho các đối tượng và chức năng đã chọn. ¾ Lập trình thực thi. 4.1. MÔI TRƯỜNG, CÔNG CỤ, MÔ HÌNH, CHỨC NĂNG, DỮ LIỆU Đây là phần đầu tiên của quá trình thực thi hầu hết các hệ thống trong thực tế. Kết quả của phần này nhằm trả lời câu hỏi: Hệ thống sẽ chạy trên môi trường hệ điều hành nào, được phát triển bằng công cụ lập trình nào, những đối tượng và chức năng của hệ thống là gì. Sau khi trả lời các câu hỏi trên, ta sẽ có những chọn lựa phù hợp cho cấu trúc dữ liệu phục vụ hệ thống. 4.1.1. Lựa chọn môi trường và công cụ Việc lựa chọn môi trường và công cụ phát triển sẽ trả lời câu hỏi: Hệ thống được xây dựng sẽ hoạt động trong điều kiện nào và ta được trang bị những gì để xây dựng hệ thống đó. 4.1.1.1. Môi trường phát triển Một hệ thống PKI trong thực tế sẽ bao gồm cả con người và máy móc. Phạm vi ứng dụng và các tình huống xảy ra trong hệ thống cũng rất đa dạng. Tuy nhiên, trong phạm vi báo cáo này, ta coi những đối tượng trong hệ thống là các máy tính với một hệ điều hành nào đó. Cụ thể, hệ thống PKI được triển khai trên hệ điều hành Windows 2000

Các file đính kèm theo tài liệu này:

  • pdfHạ tầng khoá công khai.pdf