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

Một phần của tài liệu Tài liệu HẠ TẦNG KHOÁ CÔNG KHAI - Đồ án tốt nghiệp docx (Trang 41)

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

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. Phn m rng 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) }

Phn 4

4 QUÁ TRÌNH XÂY DNG H THNG

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, CHC NĂNG, D LIU

Đâ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. La chn 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 trin

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 và Windows XP trên các máy PC. Mặc dù vậy, việc đảm bảo sự tương thích tối đa đối với các phiên bản sớm hơn của Windows sẽ luôn được chú trọng.

Lý do của việc chọn các hệđiều hành này là vì chúng hỗ trợ khá mạnh những hàm và cấu trúc dự liệu cho việc triển khai hệ thống PKI. Hơn nữa, đây cũng là một dòng hệđiều hành phổ biến, dễ phát triển và kiểm thử các ứng dụng.

4.1.1.2. Công c phát trin

Ngôn ngữ lập trình để xây dựng hệ thống PKI là C++ và công cụ phát triển là bộ Visual C++ 6.0. Những hỗ trợ về các hàm và cấu trúc dữ liệu của Windows được thể hiện rõ nét

Quá trình xây dựng hệ thống HẠ TẦNG KHOÁ CÔNG KHAI

44

trong công cụ phát triển này. Hơn nữa, C++ cũng là ngôn ngữ phổ biến, có thể dữ xử lý dữ liệu ở nhiều mức khác nhau. Các ứng dụng sẽ được phát triển theo kiểu ứng dụng MFC nhằm đảm bảo sự hỗ trợ về các thư viện và các lớp đối tượng ở cấp thấp.

Hiện nay, bộ công cụ phát triển Visual Studio .NET đã được phát hành, bộ công cụ này hỗ trợ rất tốt các thuật toán mã hoá, giải mã cũng nhưđóng gói dữ liệu phục vụ hệ thống PKI. Tuy nhiên, bộ công cụ này tạo ra các ứng dụng cần nhiều thư viện liên kết động (DLL) mà nhiều khi người phát triển phải mang theo khi cài đặt hệ thống. Đây là một trở

ngại lớn vì các hệ điều hành khác nhau có thể có những thành phần thư viện liên kết

động không giống nhau.

Việc sử dụng bộ công cụ Visual C++ 6.0 cũng không hoàn toàn thuận lợi khi ta cần thực hiện các thủ tục mã hoá hay đóng gói dữ liệu. Thư viện các cấu trúc dữ liệu và các hàm cơ bản mà ta có thể sử dụng được mô tả trong file wincrypt.h của thư mục system32 của hệđiều hành. Theo như định nghĩa của file thì cả phiên bản mới nhất của họ Windows là Windows XP cũng không sử dụng được thư viện này. Tuy nhiên, nếu ta chỉ cần chỉnh sửa file này để nó hỗ trợ các phiên bản của Windows thì vẫn có thể sử dụng các thư viện này. Hệ thống cần triển khai sẽ phải sử thường xuyên các thủ tục đóng gói và lưu trữ dữ liệu. Những thủ tục này đều có các hàm thư viện hỗ trợ song không phải bao giờ chúng cũng hoạt động tốt. Ví dụ, việc đóng gói thông tin vềđịnh danh và khoá thường được thực hiện rất tốt, tuy nhiên, đối với các thẻ xác nhận thì ta chỉ có thể đóng gói được dữ liệu mà không thể nào lấy lại được thông tin đã đóng gói. Kết luận này được rút ra với cả các thủ

tục mẫu, các thủ tục tự viết và trên nhiều máy khác nhau. Trong khi đó, thẻ xác nhận là cấu trúc dữ liệu cơ bản nhất cần được đóng gói. Đây chính là hạn chế lớn nhất của các hàm thư viện.

Từđó, yêu cầu đặt ra của việc triển khai hệ thống là phải đảm nhận được khâu đóng gói dữ liệu. Ta vẫn giữ nguyên những cấu trúc dữ liệu mà thư viện cung cấp, song sẽ tự thực hiện các thủ tục đóng gói và lấy lại thông tin. Đây chính là những thủ tục quan trong nhất của việc triển khai hệ thống PKI trong phạm vi muc tiêu đã đề ra.

4.1.2. La chn mô hình h thng PKI

Như trong phần về các mô hình triển khai hệ thống PKI đã nêu, ta có 3 mô hình triển khai cơ bản. Việc đánh giá ưu điểm và nhược điểm của chúng cũng đã được nêu ra song điều

đó chỉđúng và thích hợp khi ta triển khai hệ thống đúng như mô hình đã định.

Mục tiêu của quá trình thực thi là minh hoạ khái quát về các đối tượng cơ bản nhất cũng như những chức năng cơ bản của hệ thống. Nghĩa là, việc thực thi hệ thống sẽ nhằm trả

lời câu hỏi: Những đối tượng cơ bản của hệ thống là gì và ít nhất chúng phải làm gì để

thực hiện vai trò của mình.

Như vậy, với những yêu cầu nêu trên, ta nhận thấy việc triển khai hệ thống theo một mô hình nào đó một cách đầy đủ sẽ không thể thực hiện được trong một khoảng thời gian hạn chế. Để thực hiện việc trao đổi thông tin giữa các đối tượng trong hệ thống, ta sẽ căn cứ vào những tình huống cụ thểđể triển khai. Ví dụ, việc tương tác giữa CA và EE có thể được coi là một phiên làm việc theo mô hình client/server thuần tuý. Trong khi đó, việc tương tác giữa hai CA có thểđược thực hiện theo mô hình danh sách tin cậy.

Như vậy, hệ thống được triển khai sẽ gồm có hai đối tượng cơ bản là CA và EE, quá trình

đăng ký thẻ xác nhận sẽđược giản lược. Nghĩa là, CA không đảm nhận chức năng của một RA trong hệ thống này. Ngoài ra, ra còn dùng đến các bộ phận lưu trữ thông tin đơn giản dưới dạng các file dữ liệu. Mô hình hoạt động cơ bản sẽ dựa trên kiến trúc danh sách tin cậy, trong các tình huống cụ thể sẽ có những chỉnh sửa phù hợp.

4.1.3. La chn cu trúc d liu

Cấu trúc dữ liệu cơ bản nhất trong hệ thống là cấu thẻ xác nhận theo chuẩn X.509. Cấu trúc này đã được mô tảở phần trên cùng với các trường mở rộng của nó. Song song với cấu trúc của chuẩn X.509 theo tài liệu rfc 2459 của tổ chức IETF mà ta sử dụng, hệđiều hành Windows cũng hỗ trợ định dạng của thẻ theo chuẩn này. Mặc dù có một sốđiểm khác biệt giữa hai cấu trúc nhưng về cơ bản là giống nhau và cấu trúc đó có thể hỗ trợ tối

đa những khả năng triển khai hệ thống PKI.

Vì vậy, trong quá trình triển khai hệ thống, ta sẽ dựa trên những cấu trúc dữ liệu đã được

định sẵn mà Windows hỗ trợ trong bộ công cụ phát triển phần mềm (SDK) của mình. Với những yêu cầu cơ bản nhất của hệ thống thì ta không cần có chỉnh sửa và bổ sung gì vì hầu hết các cấu trúc đều giống với những gì đã mô tảở phần trên.

Hệ thống PKI được triển khai có thể sử dụng đến danh sách thẻ xác nhận đã bị huỷ bỏ

(CRL). Tuy nhiên, với những chức năng đã nêu của hệ thống thì cấu trúc này chưa cần thiết. Mặc dù vậy, nếu ta triển khai thêm một số chức năng hoặc triển khai toàn bộ hệ

thống PKI trong thực tế thì đây là một thành phần hết sức quan trọng. Nếu không được quản lý tốt, đây có thể là một kẽ hở dễ bị lợi dụng để tấn công hệ thống PKI.

Là những thành phần của thẻ xác nhận nhưng khoá và định danh các đối tượng có thể đứng riêng như những thành phần thông tin độc lập. Trong thực tế khi phát triển hệ

thống, có những lúc ta chỉ dùng đến thông tin về khoá hay vềđịnh danh một cách độc lập với thẻ xác nhận. Tiêu biểu nhất là trong các pha khởi tạo khi đối tượng chưa có thẻ xác nhận ứng với khoá và định danh của mình. Trong hai thành phần kể trên, định danh đối tượng là thành phần mà đối tượng sử dụng cần biết thông tin chi tiết khi đăng nhập vào một hệ thống. Trong khi đó, thông tin về cặp khoá của đối tượng sử dụng có thể không cần được biết cụ thể là gì. Ta chỉ cần đảm bảo một điều là: chỉđối tượng đó mới nắm giữ

thông tin về các cặp khoá của mình và đối tượng đó biết đích xác mình đang sử dụng cặp khoá nào trong mỗi phiên làm việc.

Các thông điệp PKI được sử dụng trong hệ thống sẽ không khác nhiều so với những gì

đã mô tả; trong một số trường hợp, sẽ có sự giản lược đểđơn giản hoá quá trình xử lý.

4.1.4. La chn các chc năng được thc hin

Như những yêu cầu đã nêu trong việc lựa chọn mô hình, các chức năng của hệ thống

được xây dựng sẽ là tối thiểu. Chúng giúp cho người dùng hiểu được những nguyên tắc hoạt động cơ bản của hệ thống trong từng quá trình trao đổi thông tin. Các chức năng này sẽđược xây dựng dựa trên mô tả về các chức năng bắt buộc đối với hệ thống PKI đã nêu ở phần trước. Ta sẽ thực hiện đầy đủ những chức năng này nhưng trong mỗi chức năng sẽ có những giản lược về thông tin nếu có thể. Tuy nhiên, do mô hình hệ thống

Quá trình xây dựng hệ thống HẠ TẦNG KHOÁ CÔNG KHAI

46

1. Khởi tạo CA.

2. Khởi tạo các đối tượng sử dụng.

3. Yêu cầu và đáp ứng các thông tin về hệ thống PKI. 4. Cập nhật khoá công khai của CA.

5. Yêu cầu cấp phát và đáp ứng thẻ xác nhận.

6. Yêu cầu cấp phát và đáp ứng thẻ xác nhận ngang hàng giữa các CA.

4.2. PHÂN TÍCH THIT K CHC NĂNG CHI TIT

Mỗi chức năng của hệ thống PKI đều liên quan đến một đối tượng hoặc một thực thể nào

đó. Vì vậy, khi nói đến bất kỳ chức năng nào thì ta đều phải gắn nó với đối tượng có liên quan. Tuy nhiên, một chức năng của hệ thống không phải lúc nào cũng chỉ liên quan đến một đối tượng nhất định. Do vậy, ta không chỉ mô tả chức năng theo kiểu một phía đối tượng mà phải hình dung chức năng đó trong quá trình tương tác giữa các đối tượng. Trong những phân tích thiết kế sau đây, ta cũng thực hiện theo nguyên tắc đó mặc dù những thủ tục cụ thểđể thực hiện một chức năng sẽđược thiết kế theo mô hình hướng

đối tượng. Nghĩa là, những thủ tục và phương thức sẽ gắn với những đối tượng nhất định của hệ thống.

4.2.1. Mô hình thiết lp và qun lý kết ni

Quá trình thiết lập và quản lý kết nối được coi như một công việc ở mức nền cho các hoạt

động trao đổi thông tin của hệ thống PKI. Trong phần này, ta sẽ đề cập sơ lược về giải pháp tổ chức và quản lý các kết nối đểđảm bảo quá trình truyền thông cho hệ thống.

4.2.1.1. Phân tích yêu cu

Theo mô hình các đối tượng trong hệ thống đã được chọn lựa, ta có thể coi hệ thống chỉ

có một CA và một EE. Trong trường hợp có các phiên trao đổi thông tin ngang hàng giữa các CA, đó chỉ là những thể hiện khác nhau của một đối tượng CA được xây dựng. Trong thực tế, một CA luôn có liên hệ với nhiều đối tượng trong hệ thống, đểđáp ứng yêu cầu này, ta phải có nhiều tiến trình truyền thông phục vụ cho các phiên làm việc. Bản thân một EE cũng có thể có liên hệ với nhiều đối tượng trong hệ thống, thậm chí là cả các CA. Do vậy, ta cũng cần nhiều tiến trình truyền thông cho đối tượng này.

Với đặc điểm trên, cho dù ta chỉ phát triển một hệ thống tối thiểu với một CA và một EE thì việc tổ chức nhiều tiến trình truyền thông cũng là cần thiết. Thứ nhất, điều này đảm bảo tính mở cho hệ thống khi ta cần phát triển ở mức độ cao hơn. Thứ hai, điều này giúp cho việc quản lý các tiến trình truyền thông được rõ ràng hơn. Việc xử lý thông tin được phân cho các tiến trình sẽ tăng hiệu quả xử lý thông tin.

Một phần của tài liệu Tài liệu HẠ TẦNG KHOÁ CÔNG KHAI - Đồ án tốt nghiệp docx (Trang 41)

Tải bản đầy đủ (PDF)

(79 trang)