Hệ thống cung cấp chứng chỉ số JavaCA được khuyến nghị cài đặt chạy trên hệ điều hành Linux (hiện tại đang chạy thử nghiệm mô phỏng trên
Số hóa bởi trung tâm học liệu www: \\lrc-tnu.edu.vn Windows). Máy trạm sử dụng hệ điều hành Microsoft Windows. Các thao tác cấp chứng chỉ được thực hiện thông qua trình duyệt Web.
Trong quá trình cấp phát, mọi yêu cầu khi truyền đi đều được kí, đảm bảo tính toàn vẹn, xác thực và chống chối bỏ.
Khả năng ứng dụng của hệ thống cấp chứng chỉ số JavaCA: - Sử dụng cho dịch vụ web qua giao thức http.
- Có thể phối kết hợp hệ thống với các giải pháp khác để đảm bảo an ninh an toàn cho một hệ thống mạng nội bộ.
Số hóa bởi trung tâm học liệu www: \\lrc-tnu.edu.vn
KẾT LUẬN
Nghiên cứu và thiết kế một hệ thống đảm bảo an toàn cho các dịch vụ trên mạng là một vấn đề phức tạp và luôn cần hoàn thiện. Hệ thống cung cấp chứng chỉ số JavaCA được xây dựng dựa trên chuẩn công nghệ PKI. Quá trình nghiên cứu và phát triển hệ thống cung cấp chứng chỉ số nói riêng và PKI nói chung là một quá trình lâu dài và đi cùng với quá trình chấp nhận của người sử dụng. Tỷ lệ người sử dụng tăng lên khi các chuẩn công nghệ trở nên hoàn thiện, chứng minh được khả năng ứng dụng và hiện thực hoá là khả thi. Hiện nay, việc sử dụng mật mã khoá công khai và dịch vụ cung cấp chứng chỉ số hay còn gọi là dịch vụ chứng thực điện tử để đảm bảo an toàn thông tin trong các hoạt động giao dịch điện tử là giải pháp được nhiều quốc gia trên thế giới sử dụng. Ở Việt Nam, chữ kí số và dịch vụ cung cấp chứng chỉ số là vấn đề mới và chưa được triển khai trong thực tế. Trong thời gian gần đây, một số đơn vị, cơ quan đã có những hoạt động nghiên cứu công nghệ, xây dựng hệ thống kỹ thuật, phát triển các ứng dụng và cung cấp dịch vụ chứng thực điện tử. Việc triển khai dịch vụ cung cấp chứng thực điện tử yêu cầu một sự đầu tư lâu dài và nghiêm túc mới mang lại kết quả như mong muốn. Phần khó khăn nhất trong triển khai dịch vụ này là ở khâu tổ chức thực hiện và thay đổi nhận thức của người sử dụng. Tính pháp lý của chữ kí số và dịch vụ chứng thực điện tử cũng là một vấn đề đang được đặt ra và cần giải quyết. Các tổ chức, cá nhân cung cấp và sử dụng dịch vụ chứng thực điện tử cần phải được quản lý, đồng thời có quyền, nghĩa vụ nhất định. Chữ kí số và bản ghi điện tử được kí số theo đúng qui định của pháp luật sẽ có giá trị pháp lý như văn bản viết thông thường.
Ngoài ra một hạ tầng cơ sở công nghệ yếu, chưa có sự tin tưởng vào nhà cung cấp và những e ngại về tâm lý của người dùng này cũng là các trở ngại trong việc triển khai dịch vụ cung cấp chứng chỉ số một cách rộng rãi.
Số hóa bởi trung tâm học liệu www: \\lrc-tnu.edu.vn
Kết quả nghiên cứu
Luận văn này đã có những tìm hiểu về khái niệm, công nghệ, mô hình tổ chức và xây dựng một hệ thống PKI, cùng với việc xây dựng một hệ thống cung cấp chứng chỉ số. Đây là những kết quả nghiên cứu ban đầu và sản phẩm đang trong giai đoạn triển khai thử nghiệm. Và với thế mạnh của PKI, hy vọng trong tương lai hệ thống sẽ được nâng cấp cũng như đưa vào ứng dụng thực tế cho một đơn vị cụ thể nào đó.
Số hóa bởi trung tâm học liệu www: \\lrc-tnu.edu.vn
TÀI LIỆU THAM KHẢO I. Tài liệu tiếng Việt
1. Phạm Huy Điển, Hà Huy Khoái (2003), Mã hoá thông tin cơ sở toán học
và ứng dụng, Nhà xuất bản Đại học Quốc gia Hà nội.
2. Phan Đình Diệu (1999), Lý thuyết mật mã và an toàn thông tin, Đại học Quốc Gia Hà Nội, Hà Nội.
3. Trịnh Nhật Tiến (2004), Một số vấn đề về an toàn dữ liệu, Hà Nội.
4. Thái Hồng Nhị (2004), An Toàn Thông Tin Mạng Máy Tính, Truyền Tin
Số Và Truyền Dữ Liệu, Hà Nội.
II. Tài liệu tiếng Anh
5. Adams, C. (1999), Understanding Public Key Infrastructures, New Rider Publishing, Indianapolis.
6. Alfred Menezes (1996), Handbook of Applied Cryptography, CRC Press, LLC.
7. Andrew Nash, William Duance, Celia Joseph, and Derek Brink (2001),
PKI Implementing and managing E-Security, McGraw –Hill Co.
8. Ellison, C.M. (1996), “Simple Public Key Certificate”.
9. Fegghi, J.(1999), Digital Certificates and Applied Internet Security, Addison-Wesley Longman, Inc.
10. ITU-T Recommendation X.509 (2000), “The Directory: Public key and Attribute Certificates Framework”.
11. NIST PKI Project Team (2001), “Certificate Issuing and Management Components Protection Profile”.
12. Rivest, R.L., A.Shamir, and L.M.Adleman (1978), “A method for obtaining digital signatures and public-key cryptosystems”, Communications of the ACM.
Số hóa bởi trung tâm học liệu www: \\lrc-tnu.edu.vn
III. Một số RFC
13. Boeyen, S., T.Howes and P.Richard (1999), Internet X.509 Public Key
Infrastructure Operational Protocols – LDAP2, RFC 2559.
14. Chokhani, S. (1999), Internet X.509 Public Key Infrastructure Certificate
Policy and Certification Practices Framework, RFC 2527.
15. Housley, R. (1999), Internet X.509 Public Key Infrastrure Certificate and
CRL Profile, RFC 2459.
16. Housley, R., and P.Hoffman (1999), Internet X.509 Public Key
Infrastructure Operational Protocols: FTP and HTTP, RFC 2585.
17. Myers, M. (1999), Internet X.509 Certificate Request Message Format, RFC 2511.
18. Myers, M. (1999), X.509 Internet Public Key Infrastrure On-line
Certificate Status Protocol, RFC 2560.
19. Santesson, S. (2001), Internet X.509 Public Key Infrastructure Qualified
Số hóa bởi trung tâm học liệu www: \\lrc-tnu.edu.vn
PHỤ LỤC 1. Môi trƣờng phát triển
Hệ thống cung cấp chứng chỉ số JavaCA đã trình bày ở trên được phát triển trên hệ điều hành Linux và Windows, sử dụng một số công cụ mã nguồn mở dưới đây: Java EE Apache mod_ssl OpenSSL OpenLDAP
2. Một số chuẩn mật mă khoá công khai (PKCS)
- PKCS - Public Key Cryptography Standards là chuẩn mã hoá khoá
công khai do phòng thí nghiệm RSA phát triển. Chuẩn PKCS cung cấp những định nghĩa cơ bản về định dạng dữ liệu và thuật toán là cơ sở nền tảng của việc triển khai PKI.
- PKCS#1 RSA Encryption Standard – Mã và kí sử dụng hệ mã công
khai RSA
- PKCS#3 Diffie-Hellman Key Agreement Standard - Chuẩn trao đổi khoá
Diffie-Hellman. PKCS#3 mô tả phương pháp thực hiện trao đổi khoá Diffie-Hellman.
- PKCS#5 Password-based Encrytion Standard - Chuẩn mã hoá dựa
trên password. PKCS#5 mô tả phương pháp mã xâu bát phân sử dụng khoá bí mật được tính từ password để sinh ra xâu bát phân được mã hoá. PKCS # 5 có thể được sử dụng để mă hoá khoá riêng trong việc truyền khoá bí mật.
- PKCS#6 Extended Certificate Syntax Standard - Chuẩn cú pháp
Số hóa bởi trung tâm học liệu www: \\lrc-tnu.edu.vn - PKCS#7 Crytographic Message Syntax Standard - Chuẩn cú pháp thông
điệp mật mă. PKCS#7 xác định cú pháp tổng thể dữ liệu được mã hoá ví dụ như chữ kí số. PKCS#7 cung cấp một số lựa chọn định dạng: message không mã hoá hoặc kí số, message được mã hoá, message được kí số và message có cả kí số và mã hoá. PKCS#8 Private Key Information Syntax Standard - Chuẩn cú pháp thông tin riêng. PKCS#8 định nghĩa cú pháp thông tin khoá riêng và cú pháp khoá riêng được mã hoá.
- PKCS#9 Selected Attribute Types - Những loại thuộc tính được lựa
chọn. PKCS#9 định nghĩa những loại thuộc tính được lựa chọn sử dụng trong chứng chỉ mở rộng PKCS#6, thông điệp kí số PKCS#7, thông tin khoá riêng PKCS#8 và yêu cầu kí chứng chỉ PKCS#10. Những thuộc tính chứng chỉ được chỉ rõ ở đây gồm có địa chỉ thư, loại nội dung, bản tóm tắt thông điệp, thời gian kí, password yêu cầu và những thuộc tính chứng chỉ mở rộng.
- PKCS#10 Certification Request Syntax Standard - Chuẩn cú pháp yêu
cầu chứng chỉ. PKCS#10 định nghĩa cú pháp yêu cầu chứng chỉ. Yêu cầu chứng chỉ gồm tên phân biệt, khoá công và tập các thuộc tính tuỳ chọn, chữ kí của thực thể yêu cầu chứng chỉ.
- PKCS#11 Cryptographic Token Interface Standard - Chuẩn giao diện
thẻ bài mật mă. PKCS#11 xác định giao diện lập ttrình ứng dụng (Application programming interface - API) cho thiết bị người sử dụng chứa thông tin mã hoá (cũng như khoá mă hoá và chứng chỉ) và thực hiện chức năng mã hoá. Smart Card là thiết bị đặc trưng thực hiện Cryptoki.
- PKCS#12 Personal Information Exchange Syntax Standard - Chuẩn
cú pháp trao đổi thông tin cá nhân. PKCS#12 định nghĩa định dạng thông tin nhận diện cá nhân bao gồm khoá riêng, chứng chỉ, bí mật đặc tính khác nhau và mở rộng. PKCS#12 làm cho việc truyền chứng chỉ và khoá bí mật gắn kèm được thuận tiện, giúp người sử dụng có thể chuyển thông tin nhận diện cá nhân từ thiết bị này sang thiết khác.
Số hóa bởi trung tâm học liệu www: \\lrc-tnu.edu.vn - PKCS#13 Elliptic Curve Crytography Standard - Chuẩn mật mă
đường cong elliptic. PKCS#13 bao gồm việc tạo tham số đường cong elliptic và kiểm tra hiệu lực, tạo khoá và công nhận giá trị, chữ kí số và mã hoá khoá công khai cũng như thoả thuận khoá.
- PKCS#14 Pseudo-Random Number Generation Standard - Chuẩn tạo
số giả ngẫu nhiên. Nhiều hàm mật mã cơ bản được sử dụng trong PKI như tạo khoá và thoả thuận khoá bí mật Diffie – Hellman sử dụng dữ liệu ngẫu nhiên. Tuy nhiên nếu dữ liệu ngẫu nhiên lại không ngẫu nhiên mà được chọn từ tập giá trị có thể tiên đoán được thì hàm mật mã không bảo mật được đầy đủ. Do đó tạo số giả ngẫu nhiên an toàn là điều quan trọng đối với bảo mật PKI.
3. Một số đoạn mã java cơ bản của chƣơng trình
// Chương trình yêu cầu tạo Chứng chỉ số
private void buildCertRequest(String rqPath, String keyPath, String subject, int bits, String pwd)
{
try {
logger.debug("Creating a cert request RQ Path=" + rqPath + " Key Path=" + keyPath + " Subject:" + subject + " bits:" + bits + " Passphrase:" + pwd);
if (pwd == null ) {
throw new Exception("A
passphrase is required"); }
Số hóa bởi trung tâm học liệu www: \\lrc-tnu.edu.vn CertGenerator(subject); CertManager _mgr = new CertManager(_gen); _mgr.createCertRequest(bits, pwd); _mgr.saveCertRequest(rqPath, keyPath); } catch (Exception e) { System.err.println("An error has occured generating a cert request: " + e.getMessage());
//usage(); }
}
// Chương trình tạo Chứng chỉnh số
private void buildHostCert(String certPath, String keyPath, String subject, int bits, String capwd)
{ try { CertUtil.init(); CertManager.checkCAPassword(capwd);
Số hóa bởi trung tâm học liệu www: \\lrc-tnu.edu.vn
System.out.println("WARNING: Private key will not be encrypted!");
CertGenerator gen = new CertGenerator(subject); gen.createCertRequest(bits, "dummy"); String keyPEM = gen.getKeyPEM(); ByteArrayInputStream inRQ = new ByteArrayInputStream(gen.getCertRQPEM().getBytes()); FileInputStream inCACert = new FileInputStream(GSIProperties._defCACert); FileInputStream inCAKey = new FileInputStream(GSIProperties._defCAKey); OutputStream outCert = new FileOutputStream(certPath);
CertSigner signer = new CertSigner(inRQ, inCACert, inCAKey, capwd);
signer.save(outCert); outCert.close();
Số hóa bởi trung tâm học liệu www: \\lrc-tnu.edu.vn
BouncyCastleOpenSSLKey(new
ByteArrayInputStream(keyPEM.getBytes()));
ByteArrayOutputStream outKey = new ByteArrayOutputStream();
key.decrypt("dummy"); key.writeTo(outKey); keyPEM = outKey.toString(); new FileOutputStream(keyPath).write(keyPEM.getBytes()); } catch (Exception e) { System.err.println("An error has occured creating a host cert: " +
e.getMessage());
} }
// Chương trình Kí Chứng chỉ số…
private void signCertRequest(String rqPath, String caCertPath, String caKeyPath, String signedPath, String caPwd)
{
Số hóa bởi trung tâm học liệu www: \\lrc-tnu.edu.vn
rq. Rq Path=" + rqPath + " CA Cert=" + caCertPath + " CA key=" + caKeyPath + " Signed path=" +
signedPath + " CA pwd=" + caPwd);
try {
CertSigner signer = new CertSigner(rqPath, caCertPath, caKeyPath , caPwd);
signer.save(new FileOutputStream(signedPath)); } catch (GeneralSecurityException e) { System.err.println(e.getMessage()); usage(); }
catch (Exception e1) { System.err.println("An error has occured signing a cert request: " +
e1.getClass().getName() + ": " + e1.getMessage()); //e1.printStackTrace(); }
Số hóa bởi trung tâm học liệu www: \\lrc-tnu.edu.vn
4. Một số màn hình giao diện demo của hệ thốngđã xây dựng
Giao diện trang Cấp chứng chỉ cho tài khoản RootCa.
Số hóa bởi trung tâm học liệu www: \\lrc-tnu.edu.vn
Số hóa bởi trung tâm học liệu www: \\lrc-tnu.edu.vn
Thái Nguyên, tháng 10 năm 2013
Xác nhận của giáo viên hƣớng dẫn Học viên