Mục lục
I. Giới
thiệu……………………………………………………………………………………….2
II. Các khái niệm liên
quan……………………………………………………………………… 2
1. Giới thiệu mã hóa và mã hóa thông điệp……………………………………………………2
2. Digital Certificate………………………………………………………………………… 6
3. X509……………………………………………………………………………………… 6
4. PKI(public key infrastructure)………………………………………………………………9
III. Thu hồi chứng
thư………………………………………………………………………………9
1. Certificate Revolation list (CRL)/Certificate Revolation list Scope (CRLs)………………10
2. OCSP(Online Certificate Status Protocol)…………………………………………………11
Danh mục hình vẽ
Hình1: Mã hoá thông điệp sử dụng khoá công khai P………………………………………………….3
Hình 2: Giải mã thông điệp sử dụng khoá cá nhân của người nhận……………………………………3
Hình 3: bảng so sánh thuật toán đối xứng và bất đối xứng…………………………………………… 4
Hình 4: Mã hoá thông điệp sử dụng khoá cá nhân S để mã thông điệp và khoá công khai P để mã khoá
cá nhân S……………………………………………………………………………………………… 5
Hình 5: Giải mã thông điệp sử dụng khoá cá nhân S để giải mã thông điệp và khoá cá nhân P để giải mã
khoá cá nhân S………………………………………………………………………………………….5
Hình 6 : Chứng thư số………………………………………………………………………………… 7
Hình 7 : Chứng thư X509……………………………………………………………………………….8
Hình 8: Các thành phần của một cở sở hạ tầng khóa công khai……………………………………….10
Hình 9: Khuôn dạng danh sách chứng thư bị thu hồi………………………………………………….11
[Type text] Page 1
I. Giới thiệu
Trong thời buổi phát triển công nghệ thông tin như hiện nay, việc thực hiện giao dịch qua internet
là rất phổ biến. Vì vậy nảy sinh vấn đề bảo mật an toàn cho người sử dụng. Vì vậy việc mã hóa thông
tin để bảo đảm an toàn cho người dùng là hết sức cần thiết. Bên cạnh đó phải biết quản lý các thông tin
mã hóa đó.
CRL và OCSP là những phương thức trên internet dùng để thu hồi trạng thái của công nghệ
chứng thực điện tử (cụ thể là công nghệ chứng thực số x509).
II. Các khái niệm liên quan:
1. Giới thiệu mật mã và mã hóa thông điệp:
Có 2 loại thuật toán mật mã: đối xứng và bất đối xứng
a.Thuật toán đối xứng: dùng cùng 1 mã khóa để mã hóa và giải mã
Mật mã đối xứng lại có thể được chia thành 2 hình thức: block cipher và stream cipher.
• Block cipher: Chia thông tin thành từng đoạn ngắn và mã hóa từng đoạn. Một số thuật toán
block cipher: DES, 3-DES, RC2, RC5, RC6 và Rijndaen (còn được gọi là AES).
• Stream cipher: Mã hóa từng bit của thông tin. Stream cipher thông dụng nhất là RC4 có thể
dùng nhiều chiều dài mã khóa và có tốc độ nhanh hơn rất nhiều so với block cipher
Một khi đã có thuật toán mật mã đối xứng và một số ngẫu nhiên dùng làm mã khóa, quá trình
mã hóa có thể tóm lược như sau:
M + K = C
Trong đó:
• M : là văn bản trước khi mã hóa(có thể đọc hiểu bình thường)
• K : là mã khóa và thuật toán mật mã đối xứng
• C : là nội dung văn bản sau khi mã hóa(bản mật mã)
Sau khi nhận được, người nhận sẽ giải mã theo công thức:
M = C – K
Thuật toán này hoạt động khá hiệu quả, tốc độ nhanh và gần như không làm thay đổi dung
lượng của văn bản. Ngoại trừ 1 khuyết điểm rất lớn là độ an toàn của hệ mật mã đối xứng phụ thuộc
vào khoá. Nếu để lộ khoá thì bất kỳ người nào cũng có thể mã hoá và giải mã thông điệp.
b. Thuật toán bất đối xứng:
Có mã khóa dài hơn so với thuật toán đối xứng. Như so sánh trong bảng sau:
Hai thuật toán tiêu biểu là RSA (lấy từ tên của 3 người sang lập là Ron Rivest, Adi Shamir và
Len Adleman) và ECC(Elliptic Curve Cryptography).
[Type text] Page 2
Thuật toán này sử dụng một cặp khoá, khoá mã hoá còn gọi là khoá công khai (public key) và
khoá giải mã được gọi là khoá cá nhân hay khóa riêng (private key).
Người gửi A sẽ mã hoá thông điệp bằng khóa công của người nhận và người nhận B sẽ giải mã
thông điệp với khoá cá nhân tương ứng của mình. Như ví dụ sau:
Hình1: Mã hoá thông điệp sử dụng khoá công khai P
Hình 2: Giải mã thông điệp sử dụng khoá cá nhân của người nhận
Ta hãy so sánh ưu và nhược điểm của 2 loại thuật toán mật mã:
[Type text] Page 3
Hình 3: bảng so sánh thuật toán đối xứng và bất đối xứng
Ta có thể thấy rằng nhược điểm của loại này lại là ưu điểm của loại kia. Từ đó, người ta nảy sinh ý
tưởng kết hợp 2 loại thuật toán nhằm tận dụng ưu điểm và loại trừ khuyết điểm. Cụ thể, người ta tìm
cách kết hợp mã khóa đối xứng và mã khóa bất đối xứng để đạt được các yếu tố:
- Độ bảo mật cao.
- Tốc độ thực hiện nhanh.
- Bản mã có dung lượng tương đương bản gốc.
- Quá trình trao đổi mã khóa không ảnh hưởng đến việc bảo mật thông tin.
- Phù hợp với giao dịch trên mọi quy mô.
Quá trình này được thực hiện như sau:
[Type text] Page 4
Hình 4: Mã hoá thông điệp sử dụng khoá cá nhân S để mã thông điệp
và khoá công khai P để mã khoá cá nhân S
Hình 5: Giải mã thông điệp sử dụng khoá cá nhân S để giải mã thông điệp
và khoá cá nhân P để giải mã khoá cá nhân S
c.Hàm băm:
Hiểu theo một nghĩa đơn giản là hàm cho tương ứng một mảng dữ liệu lớn với một mảng dữ
liệu nhỏ hơn.
Hàm băm được đề cập đến trong phạm vi báo cáo là hàm băm một chiều, có tác dụng trợ giúp
cho các sơ đồ ký số nhằm làm giảm dung lượng của dữ liệu cần thiết để truyền qua mạng. Hàm băm ở
đây được hiểu là các thuật toán không sử dụng khoá để mã hóa (ở đây ta dùng thuật ngữ “băm” thay
cho “mã hoá”), nó có nhiệm vụ băm thông điệp được đưa vào theo một thuật toán h một chiều nào đó,
rồi đưa ra một bản băm – văn bản đại diện – có kích thước cố định. Giá trị của hàm băm là duy nhất và
không thể suy ngược lại được nội dung thông điệp từ giá trị băm này. Hàm băm một chiều h có một số
đặc tính quan trọng sau:
[Type text] Page 5
- Với thông điệp đầu vào x thu được bản băm z = h(x) là duy nhất.
- Nếu dữ liệu trong thông điệp x thay đổi hay bị xóa để thành thông điệp x’ thì h(x’) ≠ h(x). Cho
dù chỉ là một sự thay đổi nhỏ hay chỉ là xóa đi 1 bit dữ liệu của thông điệp thì giá trị băm cũng vẫn thay
đổi. Điều này có nghĩa là: hai thông điệp hoàn toàn khác nhau thì giá trị hàm băm cũng khác nhau.
- Nội dung của thông điệp gốc không thể bị suy ra từ giá trị hàm băm. Nghĩa là với thông điệp x
thì dễ dàng tính được z = h(x), nhưng lại không thể (thực chất là khó) suy ngược lại được x nếu chỉ biết
giá trị hàm băm h(x).
d. Chữ ký số:
Mật mã khoá công khai có thể được sử dụng theo nhiều cách khác nhau. Chữ ký số là một ví dụ
minh chứng cho việc đảm bảo xác thực người dùng và toàn vẹn dữ liệu. Nếu người gửi A mã hoá thông
điệp hay tài liệu với khoá cá nhân của mình thì bất kỳ ai cũng có thể giải mã thông điệp với khoá công
của A. Do đó, người nhận có thể chắc chắn rằng thông điệp mình nhận chỉ có thể do A mã vì chỉ A mới
có khoá cá nhân của mình. Quá trình mã hoá thông điệp với khoá cá nhân của người gửi gọi là quá trình
“ký số”.
Quá trình thực hiện chữ ký số với hàm băm như sau:
Bên gửi: muốn gửi đi thông điệp M
• Mã hóa thông điệp M
• Băm thông điệp muốn gửi h(x)
• Dùng khóa cá nhân của người gửi mã hóa h(x) A
• Gửi A cùng với thông điệp đã được mã hóa ban đầu
Bên nhận:
• Tiến hành giải mã thông điệp nhận được M
• Dùng khóa công khai của người gửi giải mã A h(x)
• Tiến hành băm M theo cùng thuật toán băm như người gửi h’(x)
• So sánh h(x) và h’(x) để kiểm chứng người gửi
2. Digital Certificate
Khoá công được đặt ở vị trí công khai trong một định dạng đặc biệt. Định dạng này được gọi là
chứng thư. Chứng thư (thực ra là chứng thư khoá công – public key certificate (PKC)) là sự gắn kết
giữa khoá công của thực thể và một hoặc nhiều thuộc tính liên quan đến thực thể. Thực thể có thể là
người, thiết bị phần cứng như máy tính, router hay một phần mềm xử lý. PKC còn được gọi là “digital
certificate”- chứng thư số, “digital ID”, hay đơn giản là chứng thư.Nó sẽ chứa tên của bạn, các thông
tin cá nhân, số serial, ngày hết hạn, một bản sao của của khóa công khai (public key – sử dụng cho việc
mã hóa các thông điệp và chữ kí điện tử của bạn), và chữ kí điện tử của tổ chức cung cấp để cho người
nhận có thể nhận biết chứng thực này là hợp lệ.
[Type text] Page 6
Hình 6 : Chứng thư số
Có nhiều loại chứng thư, một trong số đó là:
- Chứng thư khoá công khai X.509( đang được sử dụng phổ biến)
- Chứng thư khoá công khai đơn giản (Simple Public Key
Certificates - SPKC)
- Chứng thư Pretty Good Privacy (PGP)
- Chứng thư thuộc tính (Attribute Certificates - AC)
3. X509
Chứng thư X.509 v3 là định dạng chứng thư được sử dụng phổ biến và được hầu hết các nhà
cung cấp sản phẩm PKI triển khai.Chứng thư khoá công khai X.509 được Hội viễn thông quốc tế (ITU)
đưa ra lần đầu tiên năm 1988 như là một bộ phận của dịch vụ thư mục X.500.
Chứng thư gồm 2 phần. Phần đầu là những trường cơ bản cần thiết phải có trong chứng thư.
Phần thứ hai chứa thêm một số trường phụ, những trường phụ này được gọi là trường mở rộng dùng để
xác định và đáp ứng những yêu cầu bổ sung của hệ thống. Khuôn dạng của chứng thư X.509 được chỉ
ra như trong hình 2
[Type text] Page 7
Hình 7 : Chứng thư X509
a.Những trường cơ bản của chứng thư X.509:
- Version: xác định số phiên bản của chứng thư.
- Certificate Serial Number: do CA gán, là định danh duy nhất của chứng thư.
- Signature Algorithm ID: chỉ ra thuật toán CA sử dụng để ký số chứng thư. Có thể là thuật
toán RSA hay DSA…
- Issuer: chỉ ra CA cấp và ký chứng thư.
- Validity Period: khoảng thời gian chứng thư có hiệu lực. Trường này xác định thời gian
chứng thư bắt đầu có hiệu lực và thời điểm hết hạn.
- Subject: xác định thực thể mà khoá công khai của thực thể này được xác nhận. Tên của
subject phải duy nhất đối với mỗi thực thể CA xác nhận.
- Subject public key information: chứa khoá công khai và những tham số liên quan; xác định
thuật toán (ví dụ RSA hay DSA) được sử dụng cùng với khoá.
- Issuer Unique ID (Optional): là trường không bắt buộc, trường này cho phép sử dụng lại tên
người cấp. Trường này hiếm được sử dụng trong triển khai thực tế.
- Subject Unique ID (Optional): là trường tuỳ chọn cho phép sử dụng lại tên của subject khi
quá hạn. Trường này cũng ít được sử dụng.
- Extensions (Optional): chỉ có trong chứng thư v.3.
- Certification Authority’s Digital Signature: chữ ký số của CA được tính từ những thông tin
trên chứng thư với khoá cá nhân và thuật toán ký số được chỉ ra trong trường Signature Algorithm
Identifier của chứng thư.Tính toàn vẹn của chứng thư được đảm bảo bằng chữ ký số của CA trên chứng
thư. Khoá công khai của CA được phân phối đến người sử dụng chứng thư theo một số cơ chế bảo mật
trước khi thực hiện các thao tác PKI. Người sử dụng kiểm tra hiệu lực của chứng thư được cấp với chữ
ký số của CA và khoá công khai của CA.
b. Những trường mở rộng của chứng thư X.509:
Phần mở rộng là những thông tin về các thuộc tính cần thiết được đưa vào để gắn những thuộc
tính này với người sử dụng hay khoá công khai. Những thông tin trong phần mở rộng thường được
dùng để quản lý xác thực phân cấp, chính sách chứng thư, thông tin về chứng thư bị thu hồi…Nó cũng
có thể được sử dụng để định nghĩa phần mở rộng riêng chứa những thông tin đặc trưng cho cộng đồng
nhất định. Mỗi trường mở rộng trong chứng thư được thiết kế với cờ “critical” hoặc “uncritical”.
[Type text] Page 8
- Authority Key Indentifier: chứa ID khoá công khai của CA, ID này là duy nhất và được
dùng để kiểm tra chữ ký số trên chứng thư. Nó cũng được sử dụng để phân biệt giữa các cặp khoá do
một CA sử dụng (trong trường hợp nếu CA có nhiều hơn một khoá công khai). Trường này được sử
dụng cho tất cả các chứng thư tự ký số (CA - certificates).
- Subject Key Identifier: chứa ID khoá công khai có trong chứng thư và được sử dụng để phân
biệt giữa các khoá nếu như có nhiều khoá được gắn vào trong cùng chứng thư của người sử dụng (Nếu
chủ thể có nhiều hơn một khoá công khai).
- Key Usage: chứa một chuỗi bit được sử dụng để xác định (hoặc hạn chế) chức năng hoặc dịch
vụ được hỗ trợ qua việc sử dụng khoá công khai trong chứng thư.
- Extended Key Usage: chứa một hoặc nhiều OIDs (định danh đối tượng – Object Identifier) để
xác định cụ thể việc sử dụng khoá công trong chứng thư. Các giá trị có thể là : (1) xác thực server TLS,
(2) xác thực lient TLS, (3) Ký Mã, (4) bảo mật e-mail , (5) Tem thời gian.
- CRL Distribution Point: chỉ ra vị trí của CRL tức là nơi hiện có thông tin thu hồi chứng thư.
Nó có thể là URI (Uniform Resource Indicator)
- Private Key Usage Period: trường này cho biết thời gian sử dụng của khoá cá nhân gắn với
khóa công khai trong chứng thư.
- Certificate Policies: trường này chỉ ra dãy các chính sách OIDs gắn với việc cấp và sử dụng
chứng thư.
- Policy Mappings: trường này chỉ ra chính sách xác thực tương đương giữa hai miền CA. Nó
được sử dụng trong việc thiết lập xác thực chéo và kiểm tra đường dẫn chứng thư. Trường này chỉ có
trong chứng thư CA.
- Subject Alternative Name: chỉ ra những dạng tên lựa chọn gắn với người sở hữu chứng thư.
Những giá trị có thể là: địa chỉ e-mail, địa chỉ IP, địa chỉ URI…
- Issuer Alternative Name: chỉ ra những dạng tên lựa chọn gắn với người cấp chứng thư.
- Subject Directory Attributes: trường này chỉ ra dãy các thuộc tính gắn với người sở hữu
chứng thư. Trường mở rộng này không được sử dụng rộng rãi. Nó được dùng để chứa những thông tin
liên quan đến đặc quyền.
- Basic Constraints Field: trường này cho biết đây có phải là chứng thư CA hay không bằng
cách thiết lập giá trị logic (true). Trường này chỉ có trong chứng thư CA. Chứng thư CA dùng để thực
hiện một số chức năng. Chứng thư này có thể ở một trong hai dạng. Nếu CA tạo ra chứng thư để tự sử
dụng, chứng thư này được gọi là chứng thư CA tự ký. Khi một CA mới được thiết lập, CA tạo ra một
chứng thư CA tự ký để ký lên chứng thư của người sử dụng cuối trong hệ thống. Và dạng thứ hai là CA
cấp chứng thư cho những CA khác trong hệ thống.
- Path Length Constraint: trường này chỉ ra số độ dài tối đa của đường dẫn chứng thư có thể
được thiết lập. Giá trị “zero” chỉ ra rằng CA chỉ có thể cấp chứng thư cho thực thể cuối , không cấp
chứng thư cho những CA khác. (Trường này chỉ có trong chứng thư của CA).
- Name Constrainsts: được dùng để bao gồm hoặc loại trừ các nhánh trong những miền khác
nhau trong khi thiết lập môi trường tin tưởng giữa các miền PKI.
- Policy Constraints: được dùng để bao gồm hoặc loại trừ một số chính sách chứng thư trong
khi thiết lập môi trường tin tưởng giữa các miền PKI.
4. PKI(public key infrastructure)
a.Khái niệm:
PKI có thể được định nghĩa như một hạ tầng cơ sở sử dụng công nghệ thông tin để cung cấp
dịch vụ mã hoá khoá công khai và chữ ký số. Một mục đích quan trọng khác của PKI là để quản lý
khoá và chứng thư được sử dụng trong hệ thống.
[Type text] Page 9
Nhờ vậy, người dùng có thể sử dụng trong một số ứng dụng như :
-Mã hoá Email hoặc xác thực người gửi Email
-Mã hoá hoặc chứng thực văn bản
-Xác thực người dùng ứng dụng
-Các giao thức truyền thông an toàn
b. Các thành phần:
Một hệ thống PKI gồm 4 thành phần sau:
- Certification Authorities (CA) : nhà cung cấp chứng thực số, là 1 tổ chức chuyên đưa ra và
quản lý các nội dung xác thực bảo mật trên mạng máy tính. Cấp và thu hồi chứng chỉ.
- Registration Authorities (RA) : làm 1 số công việc mà CA ủy quyền, ví dụ : kiểm tra mật mã
đầu cuối thử đã đăng ký public key với CA để có private key mà được dùng để kết hợp với public key.
Phát public/private keypairs được dùng để khởi tạo phase của quá trình đăng ký. Xác nhận các thông số
của public key. Phát gián tiếp các CRL
- Clients : Người sử dụng chứng thư PKI hay theo cách khác được xác định như những thực thể
cuối. Người sử dụng cuối hoặc hệ thống là chủ thể của chứng thư PKI.
- Repository : Hệ thống (có thể phân tán) lưu trữ chứng thư và danh sách cácchứng thư bị thu
hồi. Cung cấp cơ chế phân phối chứng thư và CRLs đến các thực thể cuối.
Quan hệ giữa các thành phần được mô tả trong như sau:
Hình 8: Các thành phần của một cở sở hạ tầng khóa công khai
III. Thu hồi chứng thư:
Thông thường chứng thư sẽ hợp lệ trong khoảng thời gian có hiệu lực. Nhưng trong một số
trường hợp chứng thư lại không hợp lệ trước thời gian hết hạn, ví dụ như:
- Khoá cá nhân của chủ thể bị xâm phạm .
- Thông tin chứa trong chứng thư bị thay đổi(người sở hữu chứng thư thay đổi vị trí, cơ quan…)
- Khoá cá nhân của CA cấp chứng thư bị xâm phạm
[Type text] Page 10
Trong những trường hợp này cần có một cơ chế để thông báo đến những người sử dụng khác
Một trong những phương pháp để thông báo đến người sử dụng về trạng thái của chứng thư là công bố
CRLs định kỳ hoặc khi cần thiết. Ngoài ra, có một số cách lựa chọn khác để thông báo đến người sử
dụng như dùng phương pháp trực tuyến Online Certificate Status Protocol
1. Certificate Revolation list (CRL)/Certificate Revolation list Scope (CRLs)
CRLs là cấu trúc dữ liệu được ký như chứng thư người sử dụng. CRLs chứa danh sách các
chứng thư đã bị thu hồi và những thông tin cần thiết khác của người sử dụng. CRL thường do một CA
cấp theo 1 chu kỳ nhất định. Tuy nhiên CRL cũng có thể được sử dụng để cung cấp thông tin cho nhiều
CA nếu nó được định nghĩa như một CRL gián tiếp. Những thông tin này được chứa trong trường mở
rộng CRL Scope.
Hình 9: Khuôn dạng danh sách chứng thư bị thu hồi
Trong đó:
- Version number: chỉ ra phiên bản của CRL.
- Signature: nhận biết loại hàm băm và thuật toán ký được sử dụng để ký danh sách thu hồi
CRL.
- Issuer: tên của thực thể cấp và ký CRL.
- This Update: chỉ ra ngày và thời gian CRL được công bố.
- Next Update: chỉ ra ngày và thời gian danh sách thu hồi kế tiếp được cấp.
- List of revoked certificates: chứa danh sách cùng với serial của những chứng thư bị thu hồi
Những chứng thư đã bị CA thu hồi được ghi vào danh sách theo thứ tự của revoked Certificates.
Mỗi đầu vào nhận biết chứng thư thông qua số serial và ngày thu hồi trên đó có ghi rõ thời gian và ngày
khi chứng thư bị CA thu hồi.
[Type text] Page 11
2. OCSP(Online Certificate Status Protocol):
CRLs giúp người sử dụng cuối nhận biết được về tình trạng thu hồi chứng thư. Nhưng có một
vấn đề nảy sinh là điều gì sẽ xảy ra nếu CA thu hồi chứng thư ngay sau khi vừa công bố CRL. Không
có người sử dụng nào nhận biết được về việc thu hồi này đến khi một CRL mới được thông báo.
Một lược đồ khác để kiểm soát được trạng thái của chứng thư do IETF phát triển là OCSP.
Lược đồ này dựa trên cơ chế truy vấn trực tiếp hơn việc công bố định kỳ CRLs. OCSP là giao thức yêu
cầu/ trả lời đưa ra cơ chế để nhận được thông tin thu hồi trực tuyến từ thực thể tin cậy là “OCSP
Responder”. Người sử dụng cuối thực hiện yêu cầu với “OCSP Request” với một danh sách các chứng
thư cần được kiểm tra, OCSP Responder trả lời yêu cầu “OCSP Reply” với trạng thái của mỗi chứng
thư. Chứng thư có thể ở một trong ba trạng thái sau: “good”, “revoked” và “unknown”.
Ví dụ thực thi như sau:
• Alice và Bob đều có khóa công khai do Ivan (CA)cấp.
• Alice muốn thực hiện giao tiếp với Bob
• Bob lo lắng không biết khóa riêng của Alice có bị sự cố gì không? Bob gửi 1 “OCSP
request “ chứa serial number và gửi nó cho Ivan
• OCSP responder của Ivan sẽ đọc serial number trong request của Bob và dùng nó để tìm
kiếm trong các chứng thư đã thu hồi trong cơ sở dữ liệu của Ivan
• OCSP responder của Ivan sẽ xác thực và nhận thấy khóa riêng của Alice vẫn tốt nên trả
về “OCSP response” cho Bob.
• Bob dùng khóa công khai của Ivan để giải mã phản hồi từ Ivan và kiểm chứng. Nếu tốt
thì Bob có thể bắt đầu trao đổi với Alice.
Sử dụng dịch vụ online có một số ưu điểm sau:
- Trả lời thường xuyên và luôn có tính chất mới
- Thời gian trả lời nhanh
- Giảm thiểu việc sử dụng băng thông mạng sẵn có
- Tổng phí xử lý phía client thấp
[Type text] Page 12