PKI – Phần 2.2 – Chứng Chỉ Số X.509 - Wind

Chuẩn chứng chỉ số quan trọng nhất là chuẩn X.509.

Chứng chỉ số X.509 được định rõ trong X.509 recommendation của Telecommunication Standardization Sector, thuộc International Telecommunication Union, viết tắt làITU-T, dịch sang tiếng Việt là “bộ phận Tiêu chuẩn viễn thông, thuộc Liên minh Viễn thông quốc tế”. Đây là một tổ chức của Liên Hiệp Quốc nhằm chuẩn hoá viễn thông quốc tế.

Trong ITU-T X.509 recommendation định nghĩa hai loại chứng chỉ số. Loại đầu tiên là public key certificate, nó liên kết một khóa công khai với một đối tượng (subject), như đã trình bày trong mục 2.1. Loại thứ hai là attribute certificate, nó liên kết nhiều thuộc tính (attribute) với một đối tượng. Đối tượng có thể sử dụng chứng chỉ số thuộc tính để thu về một số đặc quyền nhất định.

Trong các tài liệu, ký hiệu X.509 thường để chỉ tới một chứng chỉ số khóa công khai, bởi vì nó quan trọng hơn. Khi nhắc đến chứng chỉ X.509 mà không nói gì thêm, nó có nghĩa là chứng chỉ số khóa công khai X.509.

2.2.1 Cấu trúc

Chứng chỉ số X.509 được đặc tả sử dụng abstract syntax notation version 1 (ASN.1), là một ngôn ngữ đặc tả (specification language). Ngôn ngữ này được sử dụng rộng rãi để mô tả các cấu trúc dữ liệu. ASN.1 cũng được chuẩn hóa trong ITU-T X.680 recommendation.

Dữ liệu được tạo ra từ một nguồn quan sát cần phải được truyền đến một hoặc nhiều địa điểm khác để xử lý. Ví dụ, một kính viễn vọng trong không gian có thể tạo ra lượng dữ liệu lớn, không thể xử lý ngay tại đó, mà phải gửi về trái đất. Các hệ thống nhận và xử lý dữ liệu trên trái đất có thể rất khác nhau về bản chất, thậm chí được tạo ra bởi các nhà sản xuất khác nhau. Vì thế cần một cơ chế nhất quán cho việc ghi, truyền và nhận dữ liệu qua nhiều hệ thống.

ASN.1 định nghĩa cú pháp trừu tượng biểu diễn thông tin. Nhưng để truyền tải thông tin, ta phải mã hóa thành nhị phân (encoding). ASN.1 cũng đưa ra nhiều quy tắc mã hóa. Ví dụ:

  • BER: viết tắt của “Basic Encoding Rules”, có thể dịch là “Các quy tắc mã hóa cơ bản”. Quy tắc này xác định ba cách để mã hóa một giá trị ASN.1.
  • DER: viết tắt của “Distinguished Encoding Rules”, là một tập hợp con của BER. Nó cho phép một cách để biểu diễn cho một giá trị ASN.1.

X.509 được mã hóa dựa vào DER.

Certificate ::= SEQUENCE { tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signatureValue BIT STRING }
structure-of-X.509v3
Cấu trúc của X.509v3.

Một chứng chỉ số X.509 là một ASN.1 SEQUENCE. Sequence (chuỗi) là một danh sách nhiều phần tử được sắp xếp có thứ tự. Một chứng chỉ số X.509 gồm ba phần tử. Phần tử đầu tiên là tbsCertificate, có kiểu dữ liệu TBSCertificate. Nó chứa nội dung của chứng chỉ theo như mô tả trong hình trên, ví dụ khóa công khai (public key) và tên chủ sở hữu chứng chỉ (subject). Phần tử thứ hai signatureAlgorithm, mô tả thuật toán được sử dụng bởi nhà phát hành (issuer) để ký lên chứng chỉ. Phần tử thứ ba làsignatureValue, nó chứa chữ ký ký trên nội dung tbsCertificate của chứng chỉ.

Trong mỗi phần tử lại chứa các trường (field).

2.2.2 tbsCertificate

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 }

Tất cả các trường, trừ issuerUniqueID, subjectUniqueID và extensions đều là bắt buộc. Tức là chúng phải được biểu diễn theo đúng thứ tự thì chứng chỉ số mới hợp lệ. Một ngoại lệ là trường version, có thể được bỏ qua nếu version là 1.

version Trường version chỉ ra phiên bản X.509 được sử dụng trong chứng chỉ số này. Hiện tại, có ba phiên bản X.509. Ngày nay, hầu hết chứng chỉ số X.509 đều sử dụng phiên bản 3. Khác với X.509v1 và X.509v2, X.509v3 có thể có extensions. Khác biệt giữa v1 và v2 là v2 có thể chứa issuerUniqueID và subjectUniqueID.

Giá trị của version là một số nguyên. Nếu chứng chỉ số là v1 thì trường này có thể bỏ qua hoặc bằng 0. Với v2, nó bằng 1; và với v3, nó bằng 2.

serialNumber Nhà phát hành gán một serialNumber cho chứng chỉ. Đây là một số nguyên không âm, được mã hóa thành 20 byte. Nhà phát hành không thể gán cùng một serial number cho nhiều chứng chỉ. Vì thế, kết hợp issuer và serial number, ta xác định duy nhất một chứng chỉ số.

signature Nhà phát hành ký lên chứng chỉ số. Trường signature biểu diễn thuật toán dùng để ký. Trường này có kiểu dữ liệu AlgorithmIdentifier. Nó chứa OID của thuật toán.

Chú ý là thuật toán dùng để ký cũng được chỉ ra trong phần tử signatureAlgorithm.

issuer Chỉ ra thực thể (entity) phát hành và đảm bảo tính đúng đắn của chứng chỉ số. issuer được biểu diễn bởi một chuỗi ký tự ASN.1, gọi là distinguished name (DN). Cấu trúc của DN được đặc tả trong Recommendation X.501 ITU-T. Ví dụ một DN: CN=Alice, OU=Administration, O=TU Darmstadt, C=DE. DN này mô tả một người có tên (common name (CN)) là “Alice”, cô ấy thuộc đơn vị (organizational unit (OU)) “Administration”, của tổ chức (organization (O)) “TU Darmstadt”, hoạt động trên đất nước (country (C)) “Germany” (DE được chỉ ra trong ISO 3166).

validity Trường validity chỉ ra thời gian hiệu lực của một chứng chỉ số. Trường này chứa hai ngày notBefore và notAfter. Giữa hai ngày này, chứng chỉ số có hiệu lực, trừ khi nó bị thu hồi. Thu hồi, hủy bỏ (revocation) một chứng chỉ số sẽ được trình bày trong phần 5.

subject Trường subject biểu diễn chủ thể của chứng chỉ số, tức là người sở hữu khóa bí mật tương ứng với khóa công khai trong chứng chỉ. Chủ thể này cũng được mô tả trong subject alternative name của phần tử extensions. Nếu chủ thể chỉ được mô tả trong subject alternative name extension, thì trường subject chứa chuỗi ký tự trống. Giống issuer, subject cũng được biểu diễn bằng DN. Nếu subject của một chứng chỉ số là issuer của chứng chỉ số khác, thì bắt buộc subject DN này phải khớp với issuer DN, và subject DN không được rỗng.

subjectPublicKeyInfo Trường subjectPublicKeyInfo chứa khóa công khai được chứng thực bởi chứng chỉ. Khóa công khai cũng được biểu diễn bởi định dạng ASN.1, và mã hóa bằng DER.

2.2.3 signatureAlgorithm

Như đã giải thích trong phần trên, thuật toán được sử dụng để ký lên chứng chỉ được chỉ ra hai lần trong một chứng chỉ X.509.

2.2.4 signatureValue

Phần tử này lưu chữ ký ký trên nội dung tbsCertificate của chứng chỉ. Nó được biểu diễn bằng chuỗi bit.

Share this:

  • Twitter
  • Facebook
Like Loading...

Từ khóa » Chứng Chỉ X509