4 QUÁ TRÌNH XÂY DỰNG HỆ THỐNG
4.2.1.2. Phương thức thực hiện
Đểđáp ứng được yêu cầu trên, với mỗi đối tượng trong hệ thống, ta sẽ tổ chức hai loại tiến trình truyền thông (socket). Loại socket thứ nhất có nhiệm vụ lắng nghe các yêu cầu kết nối của các đối tượng trong hệ thống. Khi có yêu cầu kết nối đến, nhiệm vụ của nó là
đáp ứng các yêu cầu này bằng cách tạo ra các socket để làm việc với đối tượng. Mỗi socket được tạo ra này sẽđược đưa và một danh sách quản lý chung của đối tượng. Sau
đó, socket này vẫn tiếp tục lắng nghe và đáp ứng các yêu cầu khác.
Loại thứ hai chính là những socket được tạo ra để trao đổi thông tin với các đối tượng khác như đã nói ở trên. Khi được tạo ra, nó được sử dụng để trao đổi thông tin với các
đối tượng đã định một cách độc lập với các socket khác trong danh sách.
Hình 4-1 Lưu đồ thuật toán tạo phiên kết nối 4.2.2. Sử dụng các dịch vụ bảo mật
Trong phần này, ta sẽ tìm hiểu sơ lược về các công cụ an toàn an ninh mà hệđiều hành cung cấp để hỗ trợ các dịch vụ an toàn an ninh. Từđó, ta có thể nắm bắt được phương thức tổ chức và thực hiện quá trình triển khai hệ thống một cách dễ dàng hơn.
4.2.2.1. Giới thiệu về các công cụ an toàn an ninh của hệđiều hành
Như đã nêu trong phần phân tích lựa chọn môi trường và công cụ phát triển, hệ điều hành Windows cung cấp cho chúng ta những công cụ khá hiệu quả để triển khai hệ
thống. Ngoài những cấu trúc dữ liệu được xây dựng sẵn, ta còn có một số đối tượng cung cấp dịch vụ an toàn an ninh trên cơ sở các phương thức mã hoá (Cryptographic Service Provider - CSP). Các đối tượng này cho chúng ta những tính năng cơ bản sau:
1. Các hàm và các thủ tục mã hoá theo từng loại thuật toán. Trong đó ta có thể kể đến các loại thuật toán tạo chữ ký số (RSA, DSS…), các thuật toán mã hoá để
trao đổi khoá (MD5, SHA…) và các thuật toán mã hoá với khoá tương đồng. (DES, 3DES…). Với bản chất của hệ thống PKI cần triển khai, ta chủ yếu sử dụng các thuật toán mã hoá dữ liệu và trao đổi khoá.
2. Các phương tiện để lưu các thông tin liên quan đến quá trình tổ chức và quản lý hệ thống như các loại khoá mã hoá, các cấu trúc thông điệp tiêu biểu, các loại thẻ
xác nhận và danh sách thẻ xác nhận bị hủy bỏ. Tất cả được lưu trữ theo từng phương thức phù hợp. Với một số thông tin quan trọng như các khoá mã hoá, ta có thể lựa chọn nhiều phương thức khác nhau. Ví dụ, nếu cần có mức độ an toàn cao thì ta có thể sử dụng các phương tiện lưu trữ trong các file của chương trình
Socket phiên Socket đợi yêu cầu Yêu cầu kết nối
Chấp nhận kết nối
Tạo socket phiên mới Tạo socket
thành công Báo chấp nhận kết nối Không thành công Y N Y N Thành công
Quá trình xây dựng hệ thống HẠ TẦNG KHOÁ CÔNG KHAI
48
hoặc trên các registry. Nếu xét theo khía cạnh đối tượng sử dụng thì các thông tin sẽđược lưu theo kiểu dành cho CA hay EE. Cuối cùng, hình thức lưu trữ dữ liệu với lượng lớn được thực hiện với các file do người phát triển định ra. Thông tin dưới dạng các file có thểđược mã hoá đểđảm bảo tính an toàn của thông tin. 3. Các thủ tục chuyển đối dữ liệu, thu thập và phát hành thông tin. Các thủ tục này
hỗ trợ rất tốt cho việc đóng gói (encode) các thông điệp để gửi đi trong các phiên trao đổi thông tin giữa các đối tượng. Các thủ tục xuất và nhập các thông tin quan trọng về các cặp khoá được xây dựng đểđảm bảo không có những kẽ hở rõ ràng
để có thể bị tấn công. Nó cũng giúp cho việc sở hữu thông tin của các đối tượng trở nên linh hoạt hơn và đặc biệt, các thủ tục này là cơ sở để thực hiện các thuật toán mã hoá mà hệđiều hành hỗ trợ.
Trong sơ đồ dưới đây, ta có một cái nhìn khái quát về hệ thống các chức năng mà hệ điều hành cung cấp dưới tên gọi CryptoAPI.
Hình 4-2 Mô hình tổng quát của các hàm CryptoAPI
4.2.2.2. Những đánh giá và giải pháp
Với những gì đã mô tả về các công cụ mà các CSP đã cung cấp, ta có thể hình dung việc triển khai hệ thống sẽ có thể hoàn toàn dựa vào các công cụ này. Tuy nhiên, trong thực tế, việc sử dụng các công cụ này không phải lúc nào cũng có thể thực hiện được.
Thứ nhất, không phải tất cả các hàm, các cấu trúc dữ liệu đều được hỗ trợ bởi hệ điều hành và công cụ phát triển. Có những hàm và cấu trúc dữ liệu chỉ được dùng trong bộ
công cụ phát triển Visual Studio .Net. Việc sử dụng bộ công cụ này là có thể song với những yêu cầu khắt khe về phiên bản hệ điều hành và các thư viên liên kết động, việc triển khai hệ thống với không cụ này hiện chưa thật hiệu quả. Giải pháp cho vấn đề này là ta cần đơn giản hoá một số cấu trúc dữ liệu và tự xây dựng những hàm để chuyển đổi dữ
liệu. Hiệu quảđạt được có thể sẽ không cao nhưng sẽ giúp ta hiểu sâu hơn về bản chất của các công cụđược trang bị.
Thứ hai, mặc dù ta được trang bị các công để quản lý thẻ xác nhận nhưng khi triển khai thực tế, ta không thể hoàn toàn làm chủđược những thẻ xác nhận cần quản lý. Một khó
Các hàm mã hoá bảo mật Đối tượng cung cấp các hàm xử lý các thẻ thông minh Các ứng dụng Các hàm phục vụ quá trình lưu trữ thẻ xác nhận Các hàm mã hoá và giải mã thẻ xác nhận Đối tượng cung cấp các hàm dựa trên
thuật toán RSA Cơ sở dữ
liệu khoá
Đối tượng cung cấp các hàm chống làm sai lệch thông tin
Cơ sở dữ liệu khoá Các hàm xử lý thông điệp cấp thấp Cơ sở dữ liệu khoá Các hàm xử lý thông điệp
khăn điển hình là việc lấy lại thông tin thẻ xác nhận đã được đóng gói sẽ không thể thực hiện được nếu không có đầy đủ các trường thông tin cần thiết. Trong thực tế, ta chưa thể
có đầy đủ các thông tin cho các thẻ xác nhận do không có những thông tin về chính sách
đối với thẻ xác nhận. Hơn nữa, qua quá trình thử nghiệm, ta thấy việc lấy lại thông tin từ
thẻ xác nhận đã được đóng gói là rất khó khăn. Chính xác hơn là vẫn chưa thể lây lại
được thông tin này. Giải pháp cho vấn đề này là tự tổ chức quá trình lưu trữ dữ liệu về
thẻ xác nhận. Dữ liệu được lưu ra sẽ không hoàn toàn tối ưu song sẽ thuận tiện cho việc quản lý thẻ xác nhận. Từ đó, khả năng quản lý hệ thống nói chung và các thẻ xác nhận nói riêng sẽ tốt hơn.
4.2.2.3. Kết luận
Như vậy, ta sẽ có sự kết hợp hài hoà giữa việc sử dụng các dịch vụ mà CSP cung cấp với việc tự xây dựng các thủ tục cần thiết. Cụ thể, các cấu trúc dữ liệu liên quan đến thẻ
xác nhận sẽđược sử dụng đúng như các CSP cung cấp. Các cấu trúc này hoàn toàn đáp
ứng được các yêu cầu trong đặc tảđã nêu và ta có thể quản lý dễ dàng. Vấn đề cơ bản thứ hai là việc xây dựng các thủ tục đóng gói dữ liệu. Do những khó khăn đã nêu, ta không thể hoàn toàn sử dụng các thủ tục đóng gói dữ liệu mà các CSP hỗ trợ. Trong thực tế, ta vẫn có thể sử dụng tốt hàm đóng gói với một số cấu trúc dữ liệu. Việc tự xây dựng các thủ tục đóng gói dữ liệu sẽ làm tăng tính phức tạp nhưng lại giúp ta chủđộng trong xử lý thông tin. Ngoài ra, ta sẽ hiểu rõ hơn về bản chất của quá trình đóng gói, từđó, có thể từng bước tối ưu hoá các thủ tục của mình. Như vậy, các thủ tục được xây dựng sẽ
thực hiện các chức năng:
1. Đóng gói và thu nhận lại các thành phần thẻ xác nhận. 2. Đóng gói và thu nhận lại danh sách các thẻ xác nhận. 3. Lưu thông tin thẻ ra file và lấy thông tin từ file.
Tuy vậy, ta vẫn sử dụng một số thủ tục quản lý khoá (tạo, xuất, nhập …) mà các CSP hỗ
trợ. Thủ tục này được sử dụng trọng các hoạt động khởi tạo hoặc trong các công đoạn xuất, nhập khoá đểđảm bảo tính linh động trong khâu quản lý khoá của hệ thống. Ngoài ra, ta cũng sử dụng khá triệt để công cụ được trang bị trong mã hoá dữ liệu với khoá phiên và quá trình trao đổi khoá.
4.2.3. Tạo và phân tích các cấu trúc dữ liệu cơ bản
Trong phần này, ta sẽđề cập đến cách thức tạo và phân tích các thành phần dữ liệu cơ
bản được sử dụng trong hệ thống. Trong đó, ta sẽ tập trung vào thẻ xác nhận và các thông điệp PKI. Trước khi đi vào mô tả chi tiết, ta có một nhận định chung dữ trên các cấu trúc dữ liệu đã được mô tả trong các phần trước là: Các cấu trúc dữ liệu đều được tạo và phân tích dựa trên một cây phân cấp các thành phần. Việc phân tích sẽđi từ trên xuống và việc tạo lập sẽđi từ dưới lên.
4.2.3.1. Các thẻ xác nhận
Các thẻ xác nhận đã được mô tả chi tiết trong phần 3 của tài liệu này. Theo đó, ta nhận thấy việc thiết lập thông tin cho một thẻ xác nhận sẽđược tiến hành theo từng module ở
Quá trình xây dựng hệ thống HẠ TẦNG KHOÁ CÔNG KHAI
50
phải xây dựng hai thành phần là thông tin cơ bản và thông tin mở rộng. Sau đó, đói với các thông tin cơ bản, ta lại nhìn nhận nó như tổng thể của các thành phần ở mức thấp hơn. Khi ta đã đi đến mức dữ liệu cơ bản (byte, ký tự, chuỗi …) của ngôn ngữ lập trình thì sẽ dừng lại. Quá trình thiết lập được tiến hành theo chiều ngược lại. Ta sẽ tạo từng thành phần thông tin ở mức thấp nhất, sau đó, kết hợp chúng lại cho đến khi thu được các cấu trúc dữ liệu mong muốn.
Ta hãy xét một nhánh phân cấp về thông tin mở rộng về các chính sách đối với thẻ xác nhận. Trường thông tin về chính sách đối với thẻ xác nhận là một thành phần trong các trường thông tin mở rộng. Trường thông tin này chứa các điều khoản khác nhau. Trong mỗi điều khoản lại có các chính sách khác nhau. Trong mỗi chính sách lại có các tiêu chuẩn được định ra. Các tiêu chuẩn cần được thiết kết sao cho chúng có cấu trúc dữ liệu
độc lập với các thành phần khác của thẻ xác nhận. Như vậy, đây sẽ là một trong số các thành phần cơ bản để tạo nên thẻ xác nhận.
4.2.3.2. Các thông điệp PKI
Các thông điệp PKI được triển khai trong hệ thống sẽ gồm hai trường cơ bản là header và body. Trường header là giống nhau cho tất cả các thông điệp còn trường body sẽ tuỳ
thuộc và loại thông điệp. Đây chính là điểm khác biệt so với thẻ xác nhận. Cây phân cấp
đối với tất cả các thẻ xác nhận sẽ bao gồm các thành phần giống nhau đến tận mức lá. Trong khi đó, cây phân cấp đối với thông điệp PKI sẽ khác nhau ngay từ trường body. Tuy vậy, việc xây dựng vẫn được tiến hành tương tự, chỉ khác một điểm là ta cần biết
được kiểu thông điệp PKI được tạo ra là gì để từđó có hàm tạo phần body cho phù hợp. Việc tổng hợp cấu trúc thông điệp PKI sẽđược thực hiện khi ta tạo thông điệp này hoặc thu nhận nó từ một chuỗi byte được truyền đến. Ngược lại, việc phân tích các trường sẽ được thực hiện khi ta muốn đưa chúng vào một chuỗi các byte để truyền đi hoặc khi tìm hiểu từng thành phần cơ bản của chúng.
4.2.4. Các công cụ quản trị hệ thống
Các công cụ quản trị hệ thống được đề cập ởđây chủ yếu được áp dụng cho CA. Những công cụ này là những thành phần bổ trợ cho người quản trị hệ thống. Chúng được xây dựng để dành cho những người quản trị ở các mức khác nhau. Các mức quản trị được dựa trên kiểu đối tượng được xác định khi đăng nhập vào hệ thống.
4.2.4.1. Công cụ quản lý người sử dụng
Trong thực tế, việc hạn chế quyền sử dụng các công cụ là rất cần thiết, nhất là những công cụ thực hiện chức năng của CA. Do vậy, dù chỉ là một chương trình đơn giản để thể
hiện chức năng của hệ thống thì ta cũng cần xây dựng một công cụ quản lý đối tượng sử
dụng của chương trình. Việc phân quyền đối với công cụ này thực chất chỉ cần thiết ở
phía CA, ta sẽ tập trung thực hiện chức năng đối với hệ thống này rồi từ đó thừa kế các chức năng đã thực hiện được và áp dụng cho EE. Ta sẽđảm bảo để chỉ người quản trị
4.2.4.2. Công cụ tạo và quản lý chính sách
Công cụ này cũng chỉ được cung cấp cho đối tượng quản trị mức cao nhất. Các đối tượng quản trị mức thấp hơn không thể sử dụng công cụ này. Đây chỉ là một cách phân quyền đơn giản. Trong thực tế, việc phân quyền đối với quá trình thiết lập chính sách phụ
thuộc vào nhiều yếu tố khác nhau, nhất là đặc điểm của tổ chức sử dụng hệ thống PKI. Trong một hệ thống được triển khai đầy đủ, công cụ này giúp này giúp người quản trị có thể thiết lập và quản lý tất cả các chính sách đối với hệ thống PKI. Trong hệ thống ta triển khai, công cụ này chỉ nhằm minh hoạ về việc thiết lập và quản trị các chính sách của hệ
thống. Ta sẽđề cập tới hai chính sách cơ bản là:
Chính sách về thời gian sống của thẻ xác nhận
Chính sách về thời gian sống của thẻ xác nhận định ra một thẻ xác nhận được phép tồn tại bao lâu và trong khoảng thời gian nào. Nghĩa là, sẽ có một thời điểm chặn trên và một thời điểm chặn dưới cho thời gian sống của thẻ xác nhận. Thời gian sống của thẻ xác nhận chỉ nằm trọn trong miền này. Như vậy, chính sách về thời gian sống của thẻ xác nhận sẽ gồm các tiêu chuẩn sau:
1. Thời điểm chặn dưới 2. Thời điểm chặn trên 3. Khoảng thời gian sống
Chính sách về phạm vi sử dụng của khoá trong thẻ xác nhận
Chính sách về phạm vị sử dụng khoá sẽ xác định cặp khoá của đối tượng được cấp thẻ
xác nhận sẽđược sử dụng trong mục đích gì. Ta có một sốứng dụng của các cặp khoá như sau:
1. Khoá để tạo chữ ký số. 2. Khoá để mã hoá dữ liệu. 3. Khoá để mã hoá khoá phiên. 4. Khoá để chống bác bỏ.
5. Khoá tạo cho các hàm phân tách.
6. Khoá để ký các CRL trong chếđộ offline. 7. Khoá để thoả thuận khoá phiên.
4.2.4.3. Công cụ quản lý danh sách thẻ xác nhận
Công cụ này được tạo ra cho tất cả những người quản trị hệ thống ở các mức phân quyền khác nhau. Với công cụ này, người quản trị có thể biết được hiện hệ thống đang lưu bao nhiêu thẻ xác nhận và thông tin chi tiết về từng thẻ. Công cụ này cũng cho phép người quản trị xoá những thẻ xác nhận khi cần thiết.
Quá trình xây dựng hệ thống HẠ TẦNG KHOÁ CÔNG KHAI
52
Giải pháp để thực hiện công cụ này là đồng bộ thông tin thẻ xác nhận lưu trong file và những thông tin được hiển thị. Ngoài ra, vấn đề chỉ đọc các thông tin từ file, đưa vào danh sách thẻ xác nhận để quản lý khi công cụđược sử dụng. Khi người quản trị không