Chứng chỉ (khoá công khai) và thông tin thu hồi chứng chỉ phải được phân phối sao cho những người cần đến chứng chỉ đều có thể truy cập và lấy được. Có 2 phương pháp phân phối chứng chỉ:
• Phân phối cá nhân: Đây là cách phân phối cơ bản nhất. Trong phương pháp này thì mỗi cá nhân sẽ trực tiếp đưa chứng chỉ của họ cho người dùng khác. Việc này có thể thực hiện theo một số cơ chế khác nhau. Chuyển giao bằng tay chứng chỉ được lưu trong đĩa mềm hay trong một số các môi trường lưu trữ khác. Cũng có thể phân phối bằng cách gắn chứng chỉ trong email để gửi cho người khác. Cách này thực hiện tốt trong một nhóm ít người dùng nhưng khi số lượng người dùng tăng lên thì có thể xảy ra vấn đề về quản lý
• Phân phối công khai: Một phương pháp khác phổ biến hơn để phân phối chứng chỉ (và thông tin thu hồi chứng chỉ) là công bố các chứng chỉ rộng rãi, các chứng chỉ này có thể sử dụng một cách công khai và được đặt ở vị trí có thể truy cập dễ dàng. Những vị trí này được gọi là cơ sở dữ liệu. Dưới đây là ví dụ về một số hệ thống lưu trữ:
◦ X.500 Directory System Agents (DSAs).
◦ Lightweight Directory Access Protocol (LDAP ) Server. ◦ Online Certificate Status Protocol (OCSP) Responders. ◦ Domain name System (DNS) và Web servers.
◦ File Transfer Protocol (FTP) Servers và Corporate Databases 2.6. Chức năng cơ bản PKI.
Những hệ thống cho phép PKI có những chức năng khác nhau. Nhưng nhìn chung có hai chức năng chính là: chứng thực và thẩm tra.
2.6.1. Chứng thực (Certification)
Chứng thực là chức năng quan trọng nhất của hệ thống PKI. Đây là quá trình ràng buộc khoá công khai với định danh của thực thể. CA là thực thể PKI
49
thực hiện chức năng chứng thực. Có hai phương pháp chứng thực:
• Tổ chức chứng thực (CA) tạo ra cặp khoá công khai, khoá bí mật và tạo ra chứng chỉ cho phần khoá công của cặp khoá.
• Người sử dụng tự tạo cặp khoá và đưa khoá công cho CA để CA tạo chứng chỉ cho khoá công đó. Chứng chỉ đảm bảo tính toàn vẹn của khoá công khai và các thông tin gắn cùng.
2.6.2. Thẩm tra (Validation)
Quá trình xác định liệu chứng chỉ đã đưa ra có thể được sử dụng đúng mục đích thích hợp hay không được xem như là quá trình kiểm tra tính hiệu lực của chứng chỉ.
Quá trình này bao gồm một số bước sau:
• Kiểm tra xem liệu có đúng là CA được tin tưởng đã ký số lên chứng chỉ hay không (xử lý theo đường dẫn chứng chỉ).
• Kiểm tra chữ ký số của CA trên chứng chỉ để kiểm tra tính toàn vẹn. • Xác định xem chứng chỉ còn ở trong thời gian có hiệu lực hay không. • Xác định xem chứng chỉ đã bị thu hồi hay chưa.
• Xác định xem chứng chỉ đang được sử dụng có đúng mục đích, chính sách, giới hạn hay không (bằng cách kiểm tra những trường mở rộng cụ thể như mở rộng chính sách chứng chỉ hay mở rộng việc sử dụng khoá).
2.6.3. Một số chức năng khác
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: