Tiêu chuẩn chứng thực khóa công khai X.509:

Một phần của tài liệu các hệ mật mã.doc (Trang 57 - 64)

. EMK: {KC }→ EKM0(KC)

3.2.Tiêu chuẩn chứng thực khóa công khai X.509:

Chương 3: Các Tiêu Chuẩn

3.2.Tiêu chuẩn chứng thực khóa công khai X.509:

- Được CCITT giới thiệu vào 1988 và đến năm1993 thì được sửa đỗi và được phát hành.

- X.509 là một server chứa cơ sở dữ liệu về thông tin của các user. Thông tin bao gồm sự ánh xạ từ tên user tới địa chỉ mạng cũng như các thuộc tính và thông tin khác về user.

- X.509 là một tiêu chuẩn quan trọng bởi vì nó xác định 1 khung làm viêc (framework) cho các dịch vụ chứng thực bởi thư mục X.500 tới các user của nó và X.500

được sử dụng một cách rộng rãi. Thêm vào đó cấu trúc và các giao thức chứng thực trong X.509 có thể được sử dụng trong các ngữ cảnh khác chẳng hạn nó được sử dụng trong PEM (Privary Enhanced Mail).

- X.509 dựa trên việc sử dụng hệ mật mã khóa công khai và chữ ký số. Tiêu chuẩn không yêu cầu sử dụng giải thuật đặc tả nhưng giới thiệu RSA. Sơ đồ chữ ký số được giả thiết yêu cầu sử dụng hàm băm nhưng không yêu cầu đặc tả giải thuật băm.

3.2.1. Sự chứng thực:

- Điểm mấu chốt của sơ đồ X.509 là sự chứng thực khóa công khai liên hệ với mỗi user. Sự chứng thực của các user này được giả thiết là được tạo bởi một vài CA (Certification Authority) tin cậy được đặt trong thư mục bởi CA hay bởi user. Bản thân server thư mục không có trách nhiệm cho việc tạo các khóa công khai hay cho hàm chứng thực nhưng nó gần như cung cấp vị trí có thể truy xuất dễ dàng cho user để đưa ra sự chứng thực.

- Dạng thức tổng quát của sự chứng thực bao gồm các phần tử sau:

Algorithm identifier Period of validdity Subject’s public key

. Version: chỉ ra các version thành công của dạng thức chứng thực, mặc định là vào 1988.

. Serial number: giá trị nguyên duy nhất trong CA mà được liên kết một cách không chắc tới sự chứng thực này. Version Serial number algorithm parameters Issuer not before not after Subject algorithm parameters key

. Algorithm identifier: giải thuật đã sử dụng để ký bản chứng thực cùng với bất kỳ các thông số liên quan.

. Issuer: CA mà đã tạo và ký chứng thực này. . Period of validity: thời gian hợp lệ của chứng thực. . Subject: user mà tham khảo chứng thực này.

. Public key information: khóa công khai của subject cộng với định danh của giải thuật mà khóa này được sử dụng.

. Signature: bao gồm mã băm của các vùng khác được mã hóa bằng khóa bí mật của CA.

- Tiêu chuẩn sử dụng ý tưởng sau để xác định sự chứng thực: CA <<A>> = CA {V, SN, AI, CA, TA, A, AP }

Trong đó:

. Y <<X>> = chứng thực của user X được làm rỏ bởi CA Y

. Y {I} = chữ ký của I bởi Y. Nó bao gồm I cùng với mã băm đã được mã hóa kèm theo.

- CA ký bản chứng thực bằng khóa bí mật của nó. Nếu khóa công khai tương ứng được biết tới user thì user đó có thể làm rỏ rằng chứng thực được ký bởi CA là hợp lệ. Sơ đồ chứng thực như sau:

3.2.2. Đưa ra chứng thực của user:

- Sự chứng thực của user được tạo bởi CA có các đặc điểm:

. Bất kỳ user nào truy xuất khóa công khai của CA thì có thể khôi phục khóa công khai của user mà đã chứng thực.

M || H E KRa M EKra[ ( )]H M H D So sánh KUa

. Không một ai khác hơn CA có thể mô phỏng sự chứng thực.

- Bởi vì sự chứng thực là không thể đoán trước nên chúng có thể được đặt trong một thư mục mà không cần thiết phải cố gắng để bảo vệ chúng.

- Nếu tất cả user mô tả tới cùng CA thì có độ tin cậy chung của CA đó. Tất cả chứng thực của user có thể được đặt trong thư mục cho tất cả các user truy xuất. Ngoài ra user có thể truyền chứng thực của mình trực tiếp tới các user khác.

- Nếu các user ở trong một mạng truyền thông lớn thì không thể áp dụng cho tất cả các user mô tả cùng một CA bởi vì CA ký chứng thực, mỗi user tham gia phải có một bản sao khóa công khai của riêng CA để làm rỏ chữ ký. Khóa công khai này phải được cung cấp tới mỗi user trong cách thức bảo mật tuyệt đối để cho mỗi user đảm bảo tính bí mật trong sự chứng thực liên quan.

- Giả sử A đã đưa ra một chứng thực từ CA X1 và B đã đưa ra một chứng thực từ CA X2. Nếu A không biết sự bảo mật khóa công khai của X2 thì chứng thực của B không có ích với A. A có thể đọc chứng thực của B nhưng A không thể làm rỏ chữ ký. Tuy nhiên nếu hai CA có sự trao đổi một cách bảo mật các khóa công khai của chúng thì thủ tục sau sẽ cho phép A đưa ra khóa công khai của B:

. A đưa ra từ thư mục sự chứng thực của X2 được ký bởi X1. Bởi vì A biết khóa công khai của X1 nên A có thể đưa ra khóa công khai của X2 từ sự chứng thực của nó và làm rỏ nó bằng chữ ký trên bản chứng thực của X1. (adsbygoogle = window.adsbygoogle || []).push({});

. Sau đó A quay lại thư mục và đưa ra bản chứng thực của B được ký bởi X2.. Bởi vì giờ đây A đã có một bản sao tin cậy về khóa công khai của X2 nên A có thể làm rỏ chữ ký và đưa ra khóa công khai của B.

- A đã sử sdụng một dây chuyền các chứng thực để đưa ra khóa công khai của B như sau:

X1 <<X2>> X2 <<B>>

Tương tự B có thể đưa ra khóa công khai của A: X2 <<X1>> X1 <<A>>

- Mở rộng dây chuyền với N phần tử: X1 <<X2>> X2 <<X3>> … Xn <<B>>

Trong dây chuyền này mỗi cặp CA (Xi, Xi+1) có thể tạo chứng thực cho mỗi cặp khác.

- Tất cả sự chứng thực của CA bởi CA này cần xuất hiện trong thư mục và user cần biết làm sao để liên kết chúng theo một đường dẫn tới sự chứng thực khóa công khai của user khác. X.509 đề nghị chúng được tổ chức theo thứ tự phân cấp. Ví dụ:

Đường nối các vòng tròn chỉ mối quan hệ phân cấp giữa các CA, các hộp vuông chỉ ra các chứng thực đã duy trì trong thư mục cho mỗi CA. Mỗi CA X bao gồm hai kiểu chứng thực:

. Chứng thực về phía trước: chứng thực của X được tạo ra bởi CA khác.

. Chứng thực đảo ngược (quay lui): chứng thực của CA khác được tạo ra bởi X. Trong ví dụ này user A có thể yêu cầu sự chứng thực sau từ thư mục để thiết lập một đường dẫn tới B:

X <<W>> W <<V>> V <<Y>> Y <<Z>> Z <<B>> Khi đó A có thể biết được khóa công khai của B.

Tương tự khi B cần biết khóa công khai của A:

Z <<Y>> Y <<V>> V <<W>> W <<X>> X <<A>> 3.2.3. Hủy bỏ sự chứng thực: Y B A C Z X W V U << >> U V << >> V U << >> V Y << >> Y V << >> Y Z << >> Z Y << >> V W << >> W V << >> W X << >> X W << >> X C X A<< >> Z B<< >>

- Vì mỗi chứng thực chỉ có một thời gian hợp lệ nên một chứng thực mới sẽ được tạo ra đúng khi chứng thực cũ hết hạn. Ngoài ra, người ta mong muốn có dịp để hủy bỏ chứng thực trước khi nó hết hạn vì một trong các lí do sau:

. Khóa bí mật của user được giả thiết là đã được thỏa hiệp. . Một thời gian dài user không được chứng thực bởi CA này. . Khóa bí mật của CA được giả thiết là đã được thỏa hiệp.

- Mỗi CA phải duy trì một danh sách bao gồm tất cả các chứng thực bị hủy nhưng chưa hết hạn tới các user và các CA khác. Danh sách này cũng nên được gởi nên thư mục. Mỗi danh sách hủy bỏ chứng thực đã gởi tới thư mục được ký nhận bởi issuer và bao gồm cả tên của issuer, ngày tháng danh sách đã được tạo và một mục từ (entry) cho mỗi chứng thực bị hủy. Mỗi entry bao gồm serial number của chứng thực và ngày tháng hủy bỏ chứng thực đó.

- Khi user nhận được chứng thực trong đoạn tin thì user phải xác định có bị hủy chưa. User có thể kiểm tra thư mục mỗi lần nhận được chứng thực. Để tránh sự trì hoãn và các chi phí có thể liên quan đến thư mục tìm kiếm, thật là tốt nếu user duy trì một bộ nhớ (cache) cục bộ về các chứng thực và danh sách các chứng thực đã hủy.

3.2.4. Các thủ tục chứng thực:

X.509 bao gồm ba thủ tục chứng thực khác nhau cho các úng dụng khác nhau. Tất cả các thủ tục này đều sử dụng chữ ký khóa công khai. Nó được giả thiết rằng hai người tham gia phải biết khóa công khai lẫn nhau hoặc bằng cách đưa ra chứng thực lẫn nhau từ thư mục hoặc chứng thực được bao gồm trong đoạn tin khởi tạo từ mỗi phía.

- Chứng thực một phía (one-way): (h.a)

Đây là sự truyền thông đơn thông tin từ user A đến user B và thiết lập các việc sau: 1. Định danh của A và đoạn tin được tạo bởi A.

2. Đoạn tin dự kiến cho B.

3. Sự tường minh và nguồn gốc của đoạn tin.

Ở mức tối thiểi đoạn tin bao gồm: timestamp tA (gồm có thời gian tạo và thời gian hết hạn), nonce rA, định danh của B, sgnData (chữ ký), Kab (khóa phiên liên lạc được mã hóa bằng khóa công khai của B). Giá trị rA là duy nhất trong thời gian hợp lệ của đoạn tin, nó được sử dụng để chống lại các cuộc tấn công lặp lại và nó được lưu trữ ở B cho đến khi hết hạn, B sẽ không nhận bất kỳ đoạn tin mới nào có rA tương tự.

- Chứng thực hai phía (two-way): (h.b)

Ngoài ba phần tử ở chứng thực một phía thì chứng thực hai phía còn thiết lập thêm các phần tử sau:

4. Định danh của B và đoạn tin đáp lại được tạo ra bởi B. 5. Đoạn tin dự kiến cho A.

6. Tính tường minh và nguồn gốc của sự hồi âm.

Chứng thực hai phía cho phép cả hai đối tác truyền thông làm rỏ định danh lẫn nhau.

- Chứng thực ba phía (three-way): (h.c) (adsbygoogle = window.adsbygoogle || []).push({});

Tương tự như chứng thực hai phía nhưng có thêm sự đáp lại rB từ A tới B. Với kiểu thiết kế này thì timestamp không cần thiết phải được kiểm tra bởi vì mỗi nonce đều được quay lại phía gởi, nên mỗi phía có thể kiểm tra nonce quay về để dò các cuộc tấn công lặp lại. Cách tiếp cận này thì cần thiết khi đồng hồ đồng bộ không có sẵn.

(h.a)

Chương 4: Thuyết minh chương trình

A B

1 A |t. A,rA, , B sgnData E, KUb|Kab||

A B

1 A |t. A,rA, , B sgnData E, KUb|Kab||

Một phần của tài liệu các hệ mật mã.doc (Trang 57 - 64)