Hệ thống PKI thực hiện chức năng chứng thực, thẩm tra cùng với một số chức năng phụ trợ khác. Dưới đây là một số chức năng và dịch vụ được hầu hết các hệ thống PKI cung cấp. Một số những chức năng khác có thể được định nghĩa tuỳ theo yêu cầu cụ thể của các hệ thống PKI.
• Đăng ký: Là quá trình đến hoặc liên lạc với các tổ chức, trung tâm tin cậy để đăng ký các thông tin và xin cấp chứng chỉ. RA và CA là những thực thể trong quá trình đăng ký. Quá trình đăng ký phụ thuộc vào chính sách của tổ chức. Nếu chứng chỉ được cung cấp với mục đích dùng cho những hoạt động
50
bí mật thì sử dụng phương pháp gặp mặt trực tiếp. Nếu chứng chỉ chỉ được sử dụng cho những mục đích, hoạt động thường thì có thể đăng ký qua những ứng dụng viết sẵn hoặc ứng dụng điện tử.
• Khởi tạo ban đầu: Khi hệ thống trạm của chủ thể nhận được các thông tin cần thiết để liên lạc với CA thì quá trình khởi tạo bắt đầu. Những thông tin này có thể là khoá công của CA, chứng chỉ của CA, cặp khóa công khai/ bí mật của chủ thể. Một số hệ thống khác sử dụng cơ chế dựa trên password trong giai đoạn khởi tạo. Người dùng cuối liên lạc với CA khi nhận được password và sau đó thiết lập một kênh bảo mật để truyền những thông tin cần thiết. Giai đoạn khởi tạo thường tiếp tục với quá trình chứng thực.
• Khôi phục cặp khóa: Hầu hết hệ thống PKI tạo ra hai cặp khoá cho người sử dụng cuối, một để ký số và một để mã hoá. Lý do để tạo hai cặp khoá khác nhau xuất phát từ yêu cầu khôi phục và sao lưu dự phòng khoá. Tuỳ theo chính sách của tổ chức, bộ khoá mã (mã và giải mã) và những thông tin liên quan đến khoá của người sử dụng phải được sao lưu để có thể lấy lại được dữ liệu khi người sử dụng mất khoá riêng hay rời khỏi đơn vị. Còn khoá để ký số được sử dụng tuỳ theo mục đích cá nhân nên không được sao lưu. Riêng khoá bí mật của CA thì được lưu giữ dự phòng trong một thời gian dài để giải quyết những vấn đề nhầm lẫn có thể xảy ra trong tương lai. Hệ thống PKI có những công cụ để thực hiện chức năng sao lưu và khôi phục khoá.
• Tạo khóa: Cặp khoá công khai/ bí mật có thể được tạo ở nhiều nơi. Chúng có thể được tạo ra bằng phần mềm phía client và được gửi đến CA để chứng thực. CA cũng có thể tạo ra cặp khoá trước khi chứng thực. Trong trường hợp này, CA tự tạo cặp khoá và gửi khoá bí mật này cho người sử dụng theo một cách an toàn. Nếu khoá do bên thứ ba tạo ra thì những khoá này phải được CA tin cậy trong miền xác nhận trước khi sử dụng.
• Hạn sử dụng và cập nhật khóa: Một trong những thuộc tính của chứng chỉ là thời gian hiệu lực. Thời gian hiệu lực của mỗi cặp khoá được xác định
51
theo chính sách sử dụng. Các cặp khoá của người sử dụng nên được cập nhật khi có thông báo về ngày hết hạn. Hệ thống sẽ thông báo về tình huống này trong một thời gian nhất định. Chứng chỉ mới sẽ được người cấp công bố tự động sau thời gian hết hạn.
• Xâm hại khóa: Đây là trường hợp không bình thường nhưng nếu xảy ra thì khoá mới sẽ được công bố và tất cả người sử dụng trong hệ thống sẽ nhận thấy điều này. Xâm hại đến khoá của CA là một trường hợp đặc biệt. Và trong trường hợp này thì CA sẽ công bố lại tất cả các chứng chỉ với CA - Certificate mới của mình
• Thu hồi: Chứng chỉ được công bố sẽ được sử dụng trong khoảng thời gian có hiệu lực. Nhưng trong trường hợp khoá bị xâm hại hay có sự thay đổi trong thông tin của chứng chỉ thì chứng chỉ mới sẽ được công bố, chứng chỉ cũ sẽ bị thu hồi.
• Công bố và gửi thông báo thu hồi chứng chỉ: Một chứng chỉ được cấp cho người sử dụng cuối sẽ được gửi đến cho người nắm giữ và hệ thống lưu trữ để có thể truy cập công khai. Khi một chứng chỉ bị thu hồi vì một lý do nào đó, tất cả người sử dụng trong hệ thống sẽ được thông báo về việc này. Phương thức để công bố và gửi những thông báo thu hồi đã được đề cập chi tiết trong nội dung về chứng chỉ số ở phần trên.
• Xác thực chéo: Xác thực chéo là một trong những đặc tính quan trọng nhất của hệ thống PKI. Chức năng này được sử dụng để nối hai miền PKI khác nhau. Xác thực chéo là cách để thiết lập môi trường tin cậy giữa hai CA dưới những điều kiện nhất định. Những điều kiện này được xác định theo yêu cầu của người sử dụng. Những người sử dụng ở các miền khác nhau chỉ có thể giao tiếp an toàn với người khác sau khi việc xác thực chéo giữa các CA thành công. Xác thực chéo được thiết lập bằng cách tạo chứng chỉ CA xác thực lẫn nhau. Nếu CA-1 và CA-2 muốn thiết lập xác thực chéo thì cần thực hiện một số bước sau:
52
◦ CA-1 công bố CA – certificate cho CA-2. ◦ CA-2 công bố CA – certificate cho CA-1.
◦ CA-1 và CA-2 sẽ sử dụng những trường mở rộng xác định trong chứng chỉ để đặt những giới hạn cần thiết trong CA-certificate. Việc xác thực chéo đòi hỏi phải có sự kiểm tra cẩn thận các chính sách PKI. Nếu cả hai đều có cùng hoặc tương tự chính sách của nhau thì việc xác thực chéo sẽ có ý nghĩa. Ngược lại, sẽ có những tình huống không mong muốn xuất hiện trong trường hợp chính sách PKI của một miền trở thành một phần của miền khác. Trường mở rộng “Policy mapping”, “Name constraints” và “Policy constraints” của chứng chỉ X.509 chuẩn được sử dụng trong xác thực chéo để đưa ra một số giới hạn trong môi trường tin cậy.
• Thẩm quyền thứ cấp: cho phép CA gốc hạn chế tính năng của các CA thứ cấp. Tính năng này để quyết định dạng CA được phát hành và các dịch vụ khác mà CA đó có thể tạo ra cho khách hàng. Một khi đã có một cơ chế phân cấp trong tổ chức, xác định các đối tác kinh doanh chính và bắt đầu đưa vào cấu trúc bảo mật.
Tạo ra các chính sách bảo mật trong nội bộ tổ chức trong đó định nghĩa các tài sản cần bảo vệ và những cách thức và công cụ mà nhân viên sẽ sử dụng để thực hiện điều này. Thảo ra các quy trình hỗ trợ người sử dụng trong các vấn đề liên quan tới phát hành, gia hạn và phục hồi các chứng thực và mã khoá, sau đó phân công trách nhiệm phát triển và duy trì tổng thể hệ thống PKI cho những bộ phận có chức năng. Một giải pháp PKI hoàn chỉnh và phù hợp sẽ đảm bảo khả năng bảo mật cao nhất cho các tài sản kỹ thuật số trong doanh nghiệp.
53
Hình 7: Đường dẫn chứng chỉ chéo 2.7. Mục tiêu của PKI
PKI cho phép những người tham gia xác thực lẫn nhau và sử dụng thông tin từ các chứng thực khóa công khai để mật mã hóa và giải mã thông tin trong quá trình trao đổi. Thông thường, PKI bao gồm phần mềm máy chủ (server), phần mềm máy khách (client), phần cứng (như thẻ thông minh) và các quy trình hoạt động liên quan.
Người sử dụng cũng có thể ký các văn bản điện tử với khóa bí mật mình và mọi người đều có thể kiểm tra với khóa công khai của người đó.
54
toàn vẹn và xác thực lẫn nhau mà không cần phải trao đổi các thông tin mật từ trước.
Mục tiêu chính của PKI là cung cấp khóa công khai và xác định mối liên hệ giữa khóa và định dạng người dùng. Nhờ vậy người dùng có thể sử dụng trong một số ứng dụng như:
• Mã hóa email hoặc xác thực người gửi email. • Mã hóa hoặc xác thực văn bản.
• Xác thực người dùng ứng dụng.
• Xác giao thức truyền thông an toàn dùng kỹ thuật Bootstrapping (IKE, SSL): trao đổi khóa bằng khóa bất đối xứng, còn mã hóa bằng khóa đối xứng.
55
Chương 3
XÂY DỰNG HỆ THỐNG PKI VỚI OPENCA
3.1. OpenCA
3.1. Giới thiệu về OpenCA
Cơ sở hạ tầng khoá công khai là một trong những nhu cầu thiết yếu của tương lai. Nhưng vấn đề là hầu hết các ứng dụng có thể được đảm bảo an toàn bằng chứng chỉ và khoá thì lại rất đắt. Đây là điểm khởi đầu của OpenCA. Mục đích là sản phẩm của hệ thống trung tâm tin cậy nguồn mở để hỗ trợ cộng đồng với các giải pháp tốt, rẻ (chi phí hợp lý) và mang tính xu hướng trong tương lai.
Dự án OpenCA được bắt đầu vào năm 1998. Ý tưởng OpenCA ban đầu được phát triển bởi Massimiliano Pala. Mã nguồn ban đầu của dự án được viết bởi đoạn script rất dài. Khi phiên bản đầu tiên của phần mềm được xây dựng thì dự án OpenSSL vẫn có tên là SSLeay. Rất nhiều chức năng vẫn còn lỗi và nhiều thứ khác nữa đều đang bị bỏ qua.
Phiên bản đầu tiên của OpenCA rất đơn giản, nhiều chức năng được xây dựng chủ yếu chỉ được dùng để cấp phát chứng chỉ, CRL và các phương thức cài đặt thì khá đơn sơ, không có tính tiện dụng cho bất kỳ tiện ích cấu hình nào, đoạn script chỉ có thể tương thích với bash.
Các phiên bản tiếp theo được bổ sung thêm nhiều tính năng hơn cho dự án và do đó phiên bản 0.109 đã bao gồm giao diện cho server của CA, RA và Pub. Từ lúc bắt đầu dự án và từ phát hành phiên bản đầu tiên, đã có một lượng lớn sự tham gia của cộng đồng Internet đóng góp vào sự phát triển của dự án. Hiện nay OpenCA đã phát triển lên bản OpenCA PKI v1.1.0 (codename Samba) bên cạnh đó dự án LibPKI cũng đã đưa ra phiên bản LibPKI v0.5.1 (codename Zoiberg).
56
3.1.2. Mô hình hệ thống PKI với OpenCA
Trong bài báo cáo này em xây dựng một hệ thống PKI với đầy đủ các thànhphần như: RootCA, SubCA, RA và Repositories.
3.1.2.1. RootCA
RootCA được xây dựng trên hệ điều hành CentOS, với các thành phần cần thiếtnhư: apache, perl, openca-tools, openca-base, và một số thư viện cần thiết cho việc cài đặt. Khi cài đặt gói openca-base chúng ta sẽ chỉ thực hiện chế độ install-offline.
Sau khi cài đặt xong RootCA. Chúng ta truy cập vào trang web để cấu hình và quản lý RootCA theo địa chỉ https://rootca.actvn.net/pki/ca
Hình 8: Giao diện quản lý và cấu hình RootCA.
Trong mục PKI Init & Config chúng ta thực hiện việc khởi tạo cơ sở dữ liệu, khởi tạo khóa riêng cho CA, tạo chứng chỉ CA , …
57
Hình 9: 3 bước thiết lập CA
3.1.2.2. Khởi tạo CA
Hình 10: Khởi tạo cơ sở dữ liệu, khóa CA, ...
• Khởi tạo cơ sở dữ liệu: Bước này sẽ tạo ra cơ sở dữ liệu dựa vào các tham số đã thiết lập trong quá trình cài đặt openca. Nếu đã có 1 cơ sở dữ liệu trước đó thì ta có thể chọn Upgrade Database để nâng cấp cơ sở dữ liệu, hoặc Re-init Database để khởi tạo lại cơ sở dữ liệu (Lưu ý: Nếu chọn thiết lập này sẽ làm mất cơ sở dữ liệu hiện có).
58
• Tạo khóa bí mật cho CA: Bước này thực hiện sinh khóa bí mật cho CA. Để thực hiện việc sinh khóa bí mật chúng ta phải chọn thuật toán khóa, thuật toán mã hóa khóa và độ dài của khóa.
Hình 11: Tạo khóa bí mật cho CA.
Sau khi chọn xong các thuật toán và độ dài khóa, hệ thống sẽ sinh ra 1 khóa bí mật cho CA như hình dưới đây. Hoặc có thể xem lại khóa được lưu trong máy theo đường dẫn sau:
/opt/OpenCA/var/openca/crypto/keys/cakey.pem ( /opt/OpenCA/ là thư
mục cài đặt OpenCA được thiết lập trong quá trình cài đặt).
• Tạo yêu cầu cấp chứng chỉ cho CA: Sau khi tạo khóa bí mật cho CA xong, chúng ta tạo 1 yêu cầu xin cấp chứng chỉ cho CA.
59
Hình 12: Tạo yêu cầu cấp chứng chỉ cho CA
60
Hình 14: Lựa chọn Self Signed CA để tự chứng thực CA.
• Serial Number: số seri của chứng chỉ. Do đây là chứng chỉ đầu tiên cấp cho CA nên chúng ta để Serial Number là 00.
• Certificate Validity: Thời hạn sử dụng chứng chỉ, mặc định là 730 ngày (2 năm). Chúng ta có thể thay đổi giá trị này tùy theo nhu cầu sử dụng hệ thống.
• Extensions: Phần mở rộng, để ký chứng chỉ cho CA, chúng ta lựa chọn Self Signed CA. Với lựa chọn này hệ thống sẽ tự ký vào yêu cầu này để tạo ra chứng chỉ CA cho nó.
Sau khi lựa chọn xong hệ thống sẽ tạo chứng chỉ như hình dưới đây. Chúng ta cũng có thể xem lại chứng chỉ tại:
61
Hình 15: Chứng chỉ của CA.
• Xây dựng lại chuỗi chứng chỉ CA: Sau khi xây dựng xong SubCA chúng ta thêm chứng chỉ của SubCA vào thư mục:
/opt/OpenCA/var/openca/crypto/chain/ rồi chọn Rebuild CA Chain.
Hình 16: Xây dựng lại chuỗi chứng chỉ CA.
3.1.2.3. Khởi tạo chứng chỉ cho người quản trị
Sau khi đã thiết lập CA xong, chúng ta thực hiện việc khởi tạo chứng chỉ cho người dùng đầu tiên (khuyến cáo nên khởi tạo cho người quản trị).
62
Hình 17: Tạo chứng chỉ cho người quản trị.
63
Hình 19: Khai báo chi tiết chứng chỉ.
Lựa chọn chứng chỉ theo mẫu User. Mức độ bảo mật, chế độ sinh khóa ...
64
Chọn lược đồ ký, độ mạnh của khóa và đặt mã PIN. Mã PIN rất quan trọng, mỗi chứng chỉ có 1 mã PIN duy nhất.
Hình 21: Thỏa thuận người dùng.
65
Sau khi tạo xong yêu cầu, chúng ta phải vào mục Issue the certificate để chấp thuận yêu cầu trên. Trong đây chúng ta có thể sửa lại yêu cầu, tạo chứng chỉ hoặc xóa bỏ yêu cầu này.
Hình 23: Ký chứng chỉ.
66
Sau khi đã Issue certificate chúng ta có thể lấy chứng chỉ về máy bằng cách chọn mục Handle the certificate. Tại đây chúng ta có thể thấy chứng chỉ được cấp cho người dùng có serial number là
53:CF:7A:A8:D6:E7:1E:42:3D:01( chứng chỉ được lưu trong hệ thống tại
/opt/OpenCA/var/openca/crypto/certs/53cf7aa8d6e71e423d01.pem).
Chọn More info để xem chi tiết thông tin về chứng chỉ và lấy chứng chỉ về máy người dùng.
Hình 25: Download chứng chỉ về máy.
3.1.3. SubCA
Quá trình cài đặt SubCA tương tự như cài đặt RootCA.
Chúng ta cũng phải tạo khóa bí mật cho SubCA. Khởi tạo 1 yêu cầu cấp phát chứng chỉ. Yêu cầu này sẽ được gửi cho RootCA để RootCA ký và chứng thực đây là 1 sub CA. Chứng chỉ sau khi được ký xong sẽ gửi trả lại cho SubCA.
3.1.4. RA
Quá trình cài đặt RA cũng tương tự như RootCA và SubCA. Có điểm khác là khi cài đặt gói openca-base chúng ta chọn chế độ cài đặt là install- online.
Sau khi cài đặt xong RA. Người dùng sẽ đăng ký cấp chứng thư trực tiếp trên RA, sau đó các yêu cầu cấp chứng thư sẽ được gửi đến cho SubCA để SubCA ký. Các chứng thư sau khi được SubCA ký xong sẽ được gửi trả lại cho RA để người dùng lấy về, đồng thời các chứng thư này cũng sẽ được công bố trên hệ thống kho lưu trữ (repositories).
67
3.2. Chữ ký điện tử
- Giao diện của chương trình:
Ký:
68
Xác nhận chữ ký:
69
KẾT LUẬN
Những kết quả đã đạt được:
Trong thời gian thực hiện đề tài, em đã nghiên cứu và tìm hiểu về hệ thống PKI và thu được một số kết quả sau:
- Về lý thuyết đã tìm hiểu và nắm vững được các vấn đề sau: