2.2.1. Định dạng X.509 của chứng chỉ số
Tất cả các nhân tố quan trọng được thảo luận trong tài liệu này được coi là tin tưởng. Bởi tại một điểm quan trọng của hệ mã khĩa cơng khai là cần phải xác định được đối tượng sở hữu cặp khĩa. Cơ sở hạ tầng mã khĩa cơng khai được thiết kế để thiết lập được sự tin tưởng. Để giải quyết vấn đề này, người ta sử dụng một thành phần dữ liệu được gọi là chứng chỉ số (Digital Certificate), nĩ gắn thơng tin về người sở hữu khĩa riêng với khĩa cơng khai tương ứng. Hình 2-1 mơ tả chứng chỉ số theo phiên bản 3 được định nghĩa theo X.509, một chuẩn được sử dụng phổ biến trên thế giới hiện nay. Bất kỳ một ứng dụng nào sử dụng cơng nghệ chứng chỉ số thì phải tối thiểu phải hỗ trợ chuẩn X.509.
Các thành viên tham gia hệ thống sử dụng hệ mã khĩa cơng khai hồn tồn cĩ thể tin tưởng rẳng khĩa cơng khai chứa trong chứng chỉ số là thuộc về đối tượng cĩ thơng tin trong trường đối tượng được cấp. CA sử dụng chữ ký điện tử để đảm bảo tính tồn vẹn và xác thực các thơng tin cĩ trong chứng chỉ số, xem hình 2-1. Chữ ký được tạo ra như sau:
- Xác định giá trị hash của tồn bộ thơng tin của chứng chỉ số (gồm cĩ các thơng tin cơ bản và phần mở rộng).
- CA sử dụng private key của mình cùng với giá trị hash vừa cĩ được để tạo ra chữ ký điện tử thơng qua mơ đun tạo chữ ký điện tử.
Phiên bản (Version) Mã số (Serial Number) Thơng tin của chữ ký điện tử
Người cấp (Issuer) Hạn sử dụng (Validity) Người sở hữu (Subject) Thơng tin về khĩa cơng khai Chỉ danh người cấp (Issuer Unique
ID)
Chỉ danh người sở hữu (Subject Unique ID) Các thành phần mở rộng, tùy chọn (Extensions) Chữ ký số (Digital Signature) Authority Key Identifier Subject Key Identifier KeyUsage * * *
Hình 2-1. Các trường dữ liệu và các phần mở rộng của Digital Certificate v3 theo chuẩn X.509.
Sự tin tưởng của các thành viên chỉ cĩ thể được đảm bảo khi họ tin tưởng vào CA tạo ra chứng chỉ số. Mỗi chứng chỉ số đều cĩ hạn sử dụng. Việc kiểm tra chứng chỉ số được thực hiện độc lập với hệ thống cấp chứng chỉ số, nĩ được thực hiện tại đầu cuối, hoặc thơng qua các dịch vụ kiểm tra trạng thái của chứng chỉ số. Chứng chỉ số cĩ thể được cơng khai và cĩ thể được truyền trên kênh khơng bảo mật.
ITU-T X.509 hay ISO/IEC/ITU 9594-8 được cơng bố vào năm 1988, đưa ra chuẩn định dạng cho chứng chỉ số, và là một phần trong X.500 áp dụng cho dịch vụ thư mục. Đến năm 1993, X.500 được sửa đổi, cĩ rất nhiều trường thơng tin được đưa vào, được coi là phiên bản 2 – X.509 v2. Đến năm 1996 chuẩn định
H a sh Tạo chữ ký số Private key của CA
2.2.2. Đường chứng thực và sự tin tưởng
Người sử dụng cần phải cĩ kiến thức cơ bản về chứng chỉ số, tối thiểu phải cĩ thể kiểm tra tính hợp lệ của nĩ. Trong mỗi chứng chỉ số đều cĩ thơng tin về tổ chức CA đã tạo ra chứng chỉ số đĩ. Chỉ dựa vào thơng tin cĩ trên một chứng chỉ số thì khơng thể đảm bảo chứng chỉ số đĩ thuộc về đối tượng cần giao dịch hay các thơng cĩ trong chứng chỉ số đĩ là chính xác. Việc kiểm tra tính hợp lệ cần phải dựa vào chứng chỉ số của CA, cĩ thơng tin nằm trong trường thơng tin người cấp, xem hình 2-1. Để xác định tính tồn vẹn và xác thực của một chứng chỉ số, người ta sử dụng public key của CA, đã tạo ra chứng chỉ số đĩ, kiểm tra chữ ký điện tử cĩ trong chứng chỉ số này. Một cách tổng quát, đường chứng thực sẽ là một chuỗi các chứng chỉ số của các CA, trong đĩ mỗi CA sẽ được xác thực bởi một CA cha. Một CA đặc biệt được gọi gốc, tự chứng thực. Trong trường hợp này, trường Subject và Issuer là giống nhau, public key của CA gốc được dùng để tự kiểm tra chữ ký trên chứng chỉ số. Do vậy, để cĩ thể cĩ được sự tin tưởng, người sử dụng phải tin tưởng vào CA gốc. Chứng chỉ số của CA phải được phân phối tới người sử dụng theo một kênh an tồn.
2.2.3. Các trường cơ bản của một chứng chỉ số
Chứng chỉ số gồm cĩ rất nhiều các trường thơng tin khác nhau, chúng được xếp vào hai loại: cơ bản và mở rộng. Trong tài liệu này chỉ đề cập đến các trường cơ bản, chi tiết cĩ thể tham khảo trong RFC2459. Cấu trúc đinh dạng của chứng chỉ số theo DER ASN.1 (X.208). Mã hĩa kiểu DER ASN.1 gồm các thành phần: thẻ, kích thước, giá trị.
Định dạng ASN.1 của chứng chỉ số: Certificate ::= SEQUENCE { tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier, signatureValue BIT STRING }
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1, serialNumber CertificateSerialNumber, signature AlgorithmIdentifier, issuer Name, validity Validity, subject Name, subjectPublicKeyInfo SubjectPublicKeyInfo,
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, -- Nếu cĩ, phiên bản phải là v2 hoặc v3
extensions [3] EXPLICIT Extensions OPTIONAL -- Nếu cĩ, phiên bản phải là v2 hoặc v3 } Version ::= INTEGER { v1(0), v2(1), v3(2) } CertificateSerialNumber ::= INTEGER Validity ::= SEQUENCE { notBefore Time, notAfter Time } Time ::= CHOICE { utcTime UTCTime, generalTime GeneralizedTime } UniqueIdentifier ::= BIT STRING
SubjectPublicKeyInfo ::= SEQUENCE { algorithm AlgorithmIdentifier, subjectPublicKey BIT STRING }
Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension Extension ::= SEQUENCE {
extnID OBJECT IDENTIFIER,
critical BOOLEAN DEFAULT FALSE, extnValue OCTET STRING }
Chứng chỉ số là một chuỗi (SEQUENCE) gồm 3 trường. Các trường sẽ được mơ tả chi tiết tại các mục sau.
2.2.3.1 Trường tbsCertificate
Trường tbsCertificate chứa tên của đối tượng được cấp và đối tượng cấp, khĩa cơng khai, thời hạn sử dụng và các thơng tin liên quan khác. Nĩ cũng cĩ
2.2.3.2. Trường signatureAlgorithm
Trường signatureAlgorithm chứa thơng tin về thuật tốn mà CA dùng để ký. Cấu trúc ASN.1 của trường này cĩ dạng như sau:
AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL }
algorithm định danh thuật tốn (ví dụ RSAwithSHA-1). parameters là thành phần tùy chọn, nĩ biến đổi tùy theo thuật tốn. Thơng tin về thuật tốn của trường này phải trùng với thơng tin về thuật tốn trong trường chữ ký số cĩ trong chứng chỉ số (signatureValue).
2.2.3.3. Trường signatureValue
Trường signatureValue chứa giá trị của chữ ký số được tính từ trường tbsCertificate. Ở đây sẽ khơng đề cập chi tiết đến các bước tạo ra chữ ký số, mà chỉ cần hiểu rằng tbsCertificate sẽ là dữ liệu đưa vào hàm ký. Dựa vào trường này, CA cĩ thể kiểm tra thơng tin trong trường tbsCertificate và mối quan hệ giữa khĩa cơng khai và đối tượng sở hữu chứng chỉ số.
2.2.3.4. Trường version
Mơ tả phiên bản định dạng của chứng chỉ số. Khi sử dụng các trường mở rộng phiên bản sẽ là 3 (giá trị là 2). Khi khơng cĩ trường mở rộng, nhưng cĩ thơng tin về UniqueIdentifier thì phiên bản sẽ là 2 (giá trị là 1). Nếu chỉ cĩ các trường cơ bản, phiên bản sẽ là 1 (giá trị sẽ khơng được quan tâm đến, mặc địch là 0).
2.2.3.5. Trường serialNumber
Serial number là một số nguyên khơng âm, được CA gắn cho mỗi chứng chỉ số, nĩ là duy nhất đối với mỗi chứng chỉ số mà được cấp bởi một CA.
2.2.3.6. Trường signature
Chứa định danh thuật tốn được CA sử dụng để ký cho chứng chỉ số. Trường này phải chứa định danh thuật tốn trùng với trường signatureAlgorithm trong chuỗi Certificate. Nội dung phần tùy chọn sẽ biến đổi theo thuật tốn.
2.2.3.7. Trường issuer
Định danh đối tượng được ký và cấp bởi CA. Giá trị của trường này khơng được rỗng. Các giá trị được định nghĩa trong X.501.
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)) }
Name gồm các thành phần, mỗi thành phần gồm 2 trường: tên thuộc tính và giá trị. Ví dụ: thuộc tính quốc tịch C, giá trị tương ứng là VN.
AttributeValue được xác định thơng qua AttributeType, nĩ được định dạng theo DirectoryString. DirectoryString là một trong các giá trị sau: PrintableString, TeletexString, BMPString, UTF8String, và UniversalString. UTF8 String là kiểu được được ưu tiên. Tất cả các chứng chỉ số được cấp sau ngày 31-12-2003 phải sử dụng UTF8 String. Thơng tin chi tiết về các thuộc tính của các loại này khơng được đề cập đến trong tài liệu này. Chi tiết các kiểu này tham khảo trong [6].
2.2.3.8. Trường validity
Trường Validity là hạn sử dụng của chứng chỉ số. Trường Validity được biểu diễn dưới dạng SEQUENCE gồm 2 thành phần thời gian: thời gian bắt đầu (notAfter) và thời gian kết thúc (notBefore). Thời gian được định dạng theo UTCTime hoặc GeneralizedTime. CA sử dụng dụng định dạng nào tùy thuộc vào thời gian hiện tại, thời gian hợp lệ đến 2049 thì sử dụng UTCTime, thời gian hợp lệ đến 2050 và muộn hơn sử dụng GeneralizedTime. UTCTime là một kiểu trong chuẩn ASN.1, được sử dụng cho các ứng dụng tồn cầu, thời gian cục bộ là khơng tương thích. Định dạng dữ liệu như sau: YYMMDDHHMMSSZ. Ký tự Z cuối cùng sử dụng cho Zulu hoặc Greenwich Mean Time. Ký tự này cĩ thể là khác, nhưng hiện tại chỉ hỗ trợ Z. GeneralizedTime là một kiểu trong chuẩn ASN.1, dùng để mơ tả thời gian cĩ độ lệch thay đổi. Trường này cĩ thể bao gồm mơ tả về độ lệch thời gian giữa địa phương và Greenwich Mean Time. Định dạng dữ liệu như sau: YYYYMMDDHHMMSSZ.
2.2.3.9. Trường subject
Trường Subject định danh đối tưởng sở hữu khĩa cơng khai. Tên của đối tượng này cĩ thể cĩ ở trong trường Subject hoặc trong trường rộng subjectAltName. Nếu tên của đối nằm trong trường subjectAltName thì trường Subject phải là một chuỗi rỗng và subjectAltName phải bị ràng buộc. Thơng tin trong trường Subject được định dạng theo X.500, ký hiệu là DN. DN phải là duy nhất đối với các đối tượng khác nhau được chứng thực bởi một CA. Điều này khơng cĩ nghĩa là hạn chế số lượng chứng chỉ số cĩ cùng thơng tin DN, áp dụng cho một người cĩ nhiều chứng chỉ số do một CA cấp. Tên của các thuộc tính giá trị được định nghĩa trong X.501.
2.2.3.10. Trường subjectPublicKeyInfo
Subject Public Key Info chứa thơng tin về khĩa cơng khai, thuật tốn và cách thức định dạnh dữ liệu (các tham số của khĩa cơng khai).
Ví dụ: RSA Publickey Định danh thuật tốn:
pkcs-1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 }
rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1} Cấu trúc các tham số của RSA public key theo ASN.1: RSAPublicKey ::= SEQUENCE {
modulus INTEGER, -- n
2.2.4. Định dạng PEM của chứng chỉ số
Định dạng PEM được sử dụng để trao đổi bảo mật các thơng tin cho thư tín điện tử và cũng được sử dụng để cĩ thể hiện thị trong các ứng dụng. Định dạng PEM của chứng chỉ số bắt đầu bằng dịng
“---BEGIN CERTIFICATE---” à kết thúc bằng “---END CERTIFICATE--- --”. Phân thân là mã hĩa theo định dạng Base64.
Ví dụ: ---BEGIN CERTIFICATE--- MIIDrTCCApWgAwIBAgICBIgwDQYJKoZIhvcNAQEFBQAwgZ0xCzAJ BgNVBAYTAlZOMQ4wDAYDVQQIEwVIYW5vaTEOMAwGA1UEBxM FSGFub2kxDTALBgNVBAoTBFZBU0MxEDAOBgNVBAsTB1ZBU0Mg Q0ExKDAmBgNVBAMTH1ZBU0MgU2VjdXJlIFNlcnZlciBDQSAtIENsY XNzIDMxIzAhBgkqhkiG9w0BCQEWFGNhbWFzdGVyQHZhc2MuY29tL nZuMB4XDTAzMDgyNjE3MDAwMFoXDTA4MDgyNjE3MDAwMFowS zELMAkGA1UEBhMCVk4xDzANBgNVBAgTBkhhIE5vaTENMAsGA1U EChMEVkFTQzEcMBoGA1UEAxMTdmFzYy1jYS52YXNjLmNvbS52bjC BnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwobepX/fULy6jgOl LXXDUOcYIemeZ/n2BtQf4YJm1jnQWmF5UvkjMWUyx6PUXOK4Blqisb 9/1u4A5/lOh7FrQUwLxRzihOZYrbi5Wg1WAGGyEGBW6bY7WJiYlOxL NsbyKriLaRjjrKpu33J2ENoZk/sCnFpvhtHeLXyEzoDA+K0CAwEAAaOBy zCByDAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIFoDAdBgNVH Q4EFgQU2kzGUXejrrzb7WDHbn2DQd1k9kkwQAYDVR0fBDkwNzA1o DOgMYYvaHR0cHM6Ly92YXNjLWNhLnZhc2MuY29tLnZuL3JlcG9zaX Rvcnkvc2NhMy5jcmwwEQYJYIZIAYb4QgEBBAQDAgZAMBMGA1UdJ QQMMAoGCCsGAQUFBwMBMCIGA1UdIwQbMBmAFJ0U5ro4YI193B EHINzYA2cnzKV1ggEIMA0GCSqGSIb3DQEBBQUAA4IBAQBjd3T8r5Y reb9vTVxYW+MmU/Et/3cAh2ag6lBr/kW7hcoL6eYwQCz3meoi9RxEcG3 UH6BbX2Oa08Z7RqzwGRTgPbSOnn9q+xr6+XEObnrkB/UdxM2gizm7zT sTW5vii9KPC69cg8aG7Npmm7SNllNpHEmc5DztfsCLrngRnLABRdyf2Qo DLhPmq6Cdv8XaPdzZbbCFazCc9HMzXs1b12JhN8M6lCoxcjC+VbT0Yhfl HpJsBSx2fgFcojfn6+xhIq/7NY/qgDlnl9fVMlGnmLjf+06Zhhpm+O8ff715Zt lAB9Xit+LJ3wlWF8lpHYUoRQEK+GxWnoB2CRjLNXwAz+4M ---END CERTIFICATE---
2.2.5. Mơ hình quản lý chứng chỉ số
Mơ hình kiến trúc PKIX hầu như vẫn khơng thay đổi nhiều, nĩ được cơng bố trong “Internet Certificate and Certificate Revocation List (CRL)” [RFC2459]. Mơ hình mới nhất của phiên bản “Internet Certificate and CRL Profile” được cơng bố trong RFC3280. Hình 2-2 mơ tả các hoạt động trong mơ hình này, và bảng 2-1 đưa ra tên và mục đích của mỗi thành phần. Tài liệu này chỉ đề cập đến khía cạnh cơng nghệ, nhưng cần phải chú ý rằng PKI khơng chỉ cĩ cơng nghệ. PKI bao gồm cĩ phần cứng, phần mềm, con người, chính sách và các thủ tục cần thiết để tạo, quản lý, lưu trữ, phân phối và thu hồi chứng chỉ số...
Đối tượng sử dụng RA CA 1 CRL Uûy quyền CA 2 K ho th ôn g tin Công bố chứng chỉ số Công bố chứng chỉ và CRL Công bố CRL Chứng thực chéo Truy cập thông tin về chứng chỉ
số và danh sách thu hồi (CRL)
Tải ngoài kênh truyền
Công bố ngoài kênh truyền Đăng ký, khởi tạo, chứng thực, phục hồi cặp khóa, cặp nhật cặp khóa, yêu cầu thu hồi
Đối tượng sử dụng PKI
Các thành phần của PKI
Bảng 2-1. Các thành phần cĩ trong PKI
Thành phần Vai trị chính
Đối tượng sử dụng Đối tượng sử dụng là một thành phần cơ bản đại diện cho người sử dụng cuối, các thiết bị (ví dụ: server, router), hoặc là bất kỳ một thực thể cuối nào mà cĩ thể được định danh trong trường Subject của một chứng chỉ số. Đối tượng này sử dụng các dịch vụ cĩ trong PKI.
CA
(Certification Authority)
CA chịu trách nhiệm cấp chứng chỉ số và thường kiêm luơn việc cơng bố CRL. Nĩ cĩ thể hỗ trợ một số các chức năng quản trị, mặc dù các chức năng đĩ được ủy quyền cho một hay nhiều RA. RA (Registration
Authority)
RA là một thành phần tùy chọn, đảm đương một số chức năng quản trị của CA. RA thường chịu trách nhiệm quản lý đăng ký, nhưng cũng cĩ thể cĩ một số chức năng khác.
Kho thơng tin Repository cĩ chức năng lưu trữ chứng chỉ số và CRL. Các End Entities cĩ thể sử dụng các chức năng này.
CRL Ủy quyền CRL Ủy quyền là một thành phần tùy chọn, được CA ủy quyền cơng bố các CRL.
2.2.5.1. Đối tượng sử dụng
Đối tượng sử dụng cĩ thể là một người sử dụng cuối (end-user), một thiết bị giống như server, router, process, hoặc bất kỳ thứ gì mà cĩ thể định danh trong trường Subject của chứng chứng chỉ số. Đối tượng sử dụng cũng cĩ thể là một thực thể trong PKI, cần phải cân nhắc và cũng tùy quan niệm. Ví du, RA cũng cĩ thể được coi như một đối tượng sử dụng dưới gĩc nhìn của CA. Các đối tượng sử dụng giống như server và người sử dụng cuối cần phải đăng ký xin cấp chứng chỉ số trước khi trở thành một thành viên của PKI.
2.2.5.2. Thành phần CA
Các khĩa cơng khai được cơng bố trong chứng chỉ số. CA là thành phần rất quan trọng của PKI, đĩ là thành phần duy nhất cĩ chức năng cấp chứng chỉ số. Do chứng chỉ số chứa chữ ký điện tử của CA nên nội dung của nĩ khơng thể thay đổi được. CA cũng chịu trách nhiệm cơng bố CRL, trừ khi nĩ ủy quyền cho CRL Ủy quyền. CA cũng cĩ thể thực hiện một số chức năng quản trị như RA. CA cũng cĩ chức năng sao lưu và phục hồi khĩa, mặc dù chức năng này cĩ thể được ủy quyền cho một thành phần khác. CA cũng được xem như là một thành phần được tin tưởng trong PKI. CA được xem như là nguồn tin cậy để kiểm tra tính hợp lệ của một đường chứng thực (Certification Path). Certification Path là một chuỗi các chứng chỉ số đặc biệt, nĩ là nguồn tin cậy của CA. Mỗi chứng chỉ số cĩ trong chuỗi phải được kiểm tra theo thứ tự chứng thực, chức năng này là một trong chức năng then chốt của PKI.
2.2.5.3. Thành phần RA
RA là một thành phần tùy chọn của PKI, nĩ cĩ một số chức năng được CA ủy quyền. RA thường chịu trách nhiệm quản lý đăng ký, bao gồm luơn việc xác thực chỉ danh của đối tượng sử dụng. RA cĩ thể thực hiện một số chức năng khác:
Xác nhận các thuộc tính của đối tượng đăng ký (Subject)
Kiểm tra Subject cĩ sở hữu khĩa riêng mà được đăng ký khơng Hỗ trợ Subject đăng ký thực hiện quá trình đăng ký
Tạo ra cặp khĩa Public/private key
Làm trung gian giữa CA và đối tượng sử dụng, gửi các thơng báo khĩa bị lộ/hỏng/mất, và kiểm tra các yêu cầu phục hồi khĩa.