Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 73 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
73
Dung lượng
1,98 MB
Nội dung
ĐẠI HỌC THÁI NGUYÊN ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG HOÀNG THỊ THÚY NGHIÊN CỨU GIẢI PHÁP XÂY DỰNG HỆ THỐNG CẤP CHỨNG CHỈ SỐ DỰA TRÊN HẠ TẦNG KHÓA CÔNG KHAI Chuyên ngành: Khoa học máy tính Mã số: 60 48 01 01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS NGUYỄN VĂN TAM Thái Nguyên 10/2013 i LỜI CẢM ƠN Trước hết, xin gửi lời cảm ơn chân thành tới PGS.TS Nguyễn Văn Tam, người thầy cho định hướng ý kiến quý báu công nghệ PKI cách để triển khai ứng dụng Tôi xin tỏ lòng biết ơn sâu sắc tới thầy cô, bạn bè khoá quan tâm, giúp đỡ tiến suốt thời gian qua Tôi xin cảm ơn trường Đại học Thái Nguyên trường Đại học Kinh Doanh Công nghệ Hà Nội tạo điều kiện cho trình học làm luận văn Luận văn hoàn thành thời gian hạn hẹp, chắn nhiều khiếm khuyết cần bổ sung thêm Tôi xin cảm ơn thầy cô, bạn bè người thân có góp ý chân tình cho nội dung luận văn này, để tiếp tục sâu tìm hiểu PKI, CA hy vọng đưa vào ứng dụng thực tiễn công tác Hoàng Thị Thúy ii MỤC LỤC DANH MỤC HÌNH VẼ v 1.1 Hệ mật mã khoá đối xứng 1.2 Hệ mật mã khoá công khai 1.3 Hàm băm 1.4 Chữ kí số 11 2.1 Chứng số (digital certificates) 14 2.1.1 Chứng khóa công khai 14 2.1.2 Chứng khoá công khai X.509 .16 2.1.3 Thu hồi chứng .20 2.1.4 Chính sách chứng số 21 2.1.5 Công bố gửi thông báo thu hồi chứng 22 23 2.2 Hạ tầng khóa công khai – PKI .25 2.3 Hệ thống cấp chứng số (Certification Authority – CA) 30 2.4 Mô hình tin cậy cho PKI 31 2.4.1 Mô hình CA đơn 31 2.4.2 Mô hình phân cấp .33 2.4.3 Mô hình mắt lưới (xác thực chéo) 34 2.4.4 Mô hình Hub Spoke (Bridge CA) 36 2.4.5 Mô hình Web (Trust Lists) 37 2.4.6 Mô hình người sử dụng trung tâm (User Centric Model) 38 3.1 Tổng quan hệ thống 41 3.1.1 Mô hình hệ thống 41 3.1.2 Một số đặc tính hệ thống cung cấp chứng số 41 3.2 Chức trình khởi tạo thành phần hệ thống cung cấp chứng số JavaCA 46 3.2.1 Certificate Authority - CA 46 3.2.2 Registration Authority - RA .47 3.2.3 RAO 48 3.2.4 LDAP Public Database Server .48 3.3 Qui trình đăng kí, cấp phát chứng 49 3.4 Thử nghiệm sản phẩm 50 3.4.1 Thử nghiệm phía quản trị 50 iii 3.4.2 Thử nghiệm phía người dùng .50 3.5 Đánh giá chung 50 Kết nghiên cứu .53 iv DANH MỤC TỪ VIẾT TẮT ARLs CA CAO CMS COST CRLs CRR CSP DAP DES DNS DSS ECC HTTPS IANA IEEE IETF ISO ITU-T LDAP MD5 OCSP PEM PGP PKC PKCS PKI PKIX RA RAO RFC RSA S/MIME SHA-1 SSL TLS Authority Revocation Lists Certificate Authority Certificate Authority Operator Cryptographic Message Syntax Commercial of the Shelf Certificate Revocation Lists Certificate Revocation Request Certification Service Provider Directory Access Protocol Data Encryption Standard Domain Name System Digital Signature Standard Elliptic Curve Cryptography Secure Hypertext Transaction Standard Internet Assigned Numbers Authority Institute of Electrical & Electronic Engineers Internet Engineering Task Force International Organization for Standardization Internet Telecommumications UnionTelecommunication Lightweight Directory Access Protocol Message Digest Hash Algorithm Online Certificate Status Protocol Privacy Enhanced Mail Pretty Good Privacy Public Key Certificate Public Key Cryptography Standards Public Key Infrastructure Extended Public Key Infrastructure Registration Authorities Registration Authorities Operator Request For Comments Rivest Shamir Adleman Secure Multipurpose Internet Mail Extensions Secure Hash Standard Secure Socket Layer Transport Layer Security v DANH MỤC HÌNH VẼ DANH MỤC HÌNH VẼ v 1.1 Hệ mật mã khoá đối xứng 1.2 Hệ mật mã khoá công khai 1.3 Hàm băm 1.4 Chữ kí số 11 2.1 Chứng số (digital certificates) 14 2.1.1 Chứng khóa công khai 14 2.1.2 Chứng khoá công khai X.509 .16 .17 2.1.3 Thu hồi chứng .20 2.1.4 Chính sách chứng số 21 2.1.5 Công bố gửi thông báo thu hồi chứng 22 23 2.2 Hạ tầng khóa công khai – PKI .25 2.3 Hệ thống cấp chứng số (Certification Authority – CA) 30 2.4 Mô hình tin cậy cho PKI 31 2.4.1 Mô hình CA đơn 31 2.4.2 Mô hình phân cấp .33 2.4.3 Mô hình mắt lưới (xác thực chéo) 34 2.4.4 Mô hình Hub Spoke (Bridge CA) 36 2.4.5 Mô hình Web (Trust Lists) 37 2.4.6 Mô hình người sử dụng trung tâm (User Centric Model) 38 3.1 Tổng quan hệ thống 41 3.1.1 Mô hình hệ thống 41 3.1.2 Một số đặc tính hệ thống cung cấp chứng số 41 3.2 Chức trình khởi tạo thành phần hệ thống cung cấp chứng số JavaCA 46 3.2.1 Certificate Authority - CA 46 3.2.2 Registration Authority - RA .47 3.2.3 RAO 48 3.2.4 LDAP Public Database Server .48 3.3 Qui trình đăng kí, cấp phát chứng 49 3.4 Thử nghiệm sản phẩm 50 3.4.1 Thử nghiệm phía quản trị 50 vi 3.4.2 Thử nghiệm phía người dùng .50 3.5 Đánh giá chung 50 Kết nghiên cứu .53 MỞ ĐẦU Các dịch vụ mạng Internet/Intranet ngày phong phú mức độ đe dọa đến an ninh thông tin mạng làm thất thoát, sai lệch thông tin, giả mạo thông tin người dùng ngày trở nên nghiêm trọng Nghiên cứu xây dựng hệ thống thông tin an toàn có tính bảo mật cao nhu cầu cấp bách Thuật toán mật mã khóa công khai, đặc biệt thuật toán RSA cho phép mã hóa, thực chữ kí số để bảo đảm tính mật, tính xác thực, tính toàn vẹn thông tin truyền mạng Tuy nhiên, khóa công khái bị giả mạo Nhà cung cấp phải chứng thực số (Certificate Authority - CA) chứng thực khóa công khai thuộc Chính học viên chọn đề tài: “Nghiên cứu giải pháp xây dựng hệ thống cấp chứng số dựa hạ tầng khóa công khai” với mục đích tìm hiểu chứng số, hạ tầng khóa công khai PKI triển khai thử nghiệm hệ thống cung cấp chứng số để minh họa CHƯƠNG GIỚI THIỆU VỀ HỆ MẬT MÃ Mật mã người sử dụng từ lâu Các hình thức mật mã sơ khai tìm thấy từ khoảng bốn nghìn năm trước văn minh Ai Cập cổ đại Trải qua hàng nghìn năm lịch sử, mật mã sử dụng rộng rãi khắp nơi giới để giữ bí mật cho việc trao đổi thông tin nhiều lĩnh vực hoạt động người quốc gia, đặc biệt lĩnh vực quân sự, trị, ngoại giao Mật mã trước hết loại hoạt động thực tiễn, nội dung để giữ bí mật thông tin Ví dụ muốn gửi văn từ người gửi A đến người nhận B, A phải tạo cho văn mã mật tương ứng thay gửi văn rõ A gửi cho B mã mật, B nhận mã mật khôi phục lại văn gốc để hiểu thông tin mà A muốn gửi cho Văn gửi thường chuyển qua đường công khai nên người “lấy trộm” được, mã mật nên không đọc hiểu A tạo mã mật B giải mã mật thành gốc để hiểu hai người có thỏa thuận chìa khoá chung, với khoá chung A tạo mã mật từ gốc B khôi phục gốc từ mã mật Khoá chung gọi khoá mật mã Để thực phép mật mã, ta cần có thuật toán biến gốc với khoá mật mã thành mã mật thuật toán ngược lại biến mật với khoá mật mã thành gốc Các thuật toán gọi tương ứng thuật toán lập mã thuật toán giải mã Các thuật toán thường không thiết phải giữ bí mật, mà cần giữ bí mật khoá mật mã Trong thực tiễn, có hoạt động ngược lại với hoạt động bảo mật khám phá bí mật từ mã “lấy trộm” được, hoạt động thường gọi mã thám hay phá khoá.[2] 1.1 Hệ mật mã khoá đối xứng Các phương pháp mật mã cổ điển biết đến từ khoảng 4000 năm trước Một số kỹ thuật người Ai Cập sử dụng từ nhiều kỷ trước Những kỹ thuật chủ yếu sử dụng hai phương pháp là: phép thay phép chuyển dịch Trong phép thay thế, chữ thay chữ khác phép chuyển dịch, chữ xếp theo trật tự khác Hệ mã chuẩn DES (viết tắt Data Encryption Standard, hay Tiêu chuẩn Mã hóa Dữ liệu) phương pháp mật mã hóa FIPS (Tiêu chuẩn Xử lý Thông tin Liên bang Hoa Kỳ) chọn làm chuẩn thức vào năm 1976 Sau chuẩn sử dụng rộng rãi phạm vi giới Ngay từ đầu, thuật toán gây nhiều tranh cãi, bao gồm thành phần thiết kế mật, độ dài khóa tương đối ngắn, nghi ngờ cửa sau để Cơ quan An ninh quốc gia Hoa Kỳ (NSA) bẻ khóa Đây ví dụ mật mã cổ điển DES kết hợp hai phương pháp thay chuyển dịch DES thực mã hoá khối rõ xâu 64 bit, có khoá xâu 56 bit cho mã xâu 64 bit Hiện nay, DES biến thể (3DES) sử dụng thành công nhiều ứng dụng Trong hệ mã đối xứng có khoá chia sẻ bên tham gia liên lạc Cứ lần truyền tin bảo mật, người gửi A người nhận B thỏa thuận trước với khoá chung K, sau người gửi dùng eK để lập mã cho thông báo gửi người nhận dùng dK để giải mã mật mã nhận Người gửi người nhận có khoá chung K, giữ bí mật dùng cho lập mã giải mã Những hệ mật mã cổ điển với cách sử dụng gọi mật mã khoá đối xứng hay gọi mật mã khoá bí mật Độ 52 KẾT LUẬN Nghiên cứu thiết kế hệ thống đảm bảo an toàn cho dịch vụ mạng vấn đề phức tạp cần hoàn thiện Hệ thống cung cấp chứng số JavaCA xây dựng dựa chuẩn công nghệ PKI Quá trình nghiên cứu phát triển hệ thống cung cấp chứng số nói riêng PKI nói chung trình lâu dài với trình chấp nhận người sử dụng Tỷ lệ người sử dụng tăng lên chuẩn công nghệ trở nên hoàn thiện, chứng minh khả ứng dụng thực hoá khả thi Hiện nay, việc sử dụng mật mã khoá công khai dịch vụ cung cấp chứng số hay gọi dịch vụ chứng thực điện tử để đảm bảo an toàn thông tin hoạt động giao dịch điện tử giải pháp nhiều quốc gia giới sử dụng Ở Việt Nam, chữ kí số dịch vụ cung cấp chứng số vấn đề chưa triển khai thực tế Trong thời gian gần đây, số đơn vị, quan có hoạt động nghiên cứu công nghệ, xây dựng hệ thống kỹ thuật, phát triển ứng dụng 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 đầu tư lâu dài nghiêm túc mang lại kết mong muốn Phần khó khăn triển khai dịch vụ khâu tổ chức thực thay đổi nhận thức người sử dụng Tính pháp lý chữ kí số dịch vụ chứng thực điện tử vấn đề đặt cần giải Các tổ chức, cá nhân cung cấp sử dụng dịch vụ chứng thực điện tử cần phải quản lý, đồng thời có quyền, nghĩa vụ định Chữ kí số ghi điện tử kí số theo qui định pháp luật có giá trị pháp lý văn viết thông thường Ngoài hạ tầng sở công nghệ yếu, chưa có tin tưởng vào nhà cung cấp e ngại tâm lý người dùng trở ngại việc triển khai dịch vụ cung cấp chứng số cách rộng rãi 53 Kết nghiên cứu Luận văn có tìm hiểu khái niệm, công nghệ, mô hình tổ chức xây dựng hệ thống PKI, với việc xây dựng hệ thống cung cấp chứng số Đây kết nghiên cứu ban đầu sản phẩm giai đoạn triển khai thử nghiệm Và với mạnh PKI, hy vọng tương lai hệ thống nâng cấp đưa vào ứng dụng thực tế cho đơn vị cụ thể 54 TÀI LIỆU THAM KHẢO I Tài liệu tiếng Việt Phạm Huy Điển, Hà Huy Khoái (2003), Mã hoá thông tin sở toán học ứng dụng, Nhà xuất Đại học Quốc gia Hà nội Phan Đình Diệu (1999), Lý thuyết mật mã an toàn thông tin, Đại học Quốc Gia Hà Nội, Hà Nội Trịnh Nhật Tiến (2004), Một số vấn đề an toàn liệu, Hà Nội 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 Adams, C (1999), Understanding Public Key Infrastructures, New Rider Publishing, Indianapolis Alfred Menezes (1996), Handbook of Applied Cryptography, CRC Press, LLC Andrew Nash, William Duance, Celia Joseph, and Derek Brink (2001), PKI Implementing and managing E-Security, McGraw –Hill Co Ellison, C.M (1996), “Simple Public Key Certificate” 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 Communications of the ACM and public-key cryptosystems”, 55 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 Certificates Profile , RFC 3039 56 PHỤ LỤC Môi trường phát triển Hệ thống cung cấp chứng số JavaCA trình bày phát triển hệ điều hành Linux Windows, sử dụng số công cụ mã nguồn mở đây: Java EE Apache mod_ssl OpenSSL OpenLDAP Một số chuẩn mật mă khoá công khai (PKCS) - PKCS - Public Key Cryptography Standards chuẩn mã hoá khoá công khai phòng thí nghiệm RSA phát triển Chuẩn PKCS cung cấp định nghĩa định dạng liệu thuật toán sở tảng việc triển khai PKI - PKCS#1 RSA Encryption Standard – Mã 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 trao đổi khoá Diffie-Hellman - PKCS#5 Password-based Encrytion Standard - Chuẩn mã hoá dựa password PKCS#5 mô tả phương pháp mã xâu bát phân sử dụng khoá bí mật tính từ password để sinh xâu bát phân mã hoá PKCS # sử dụng để mă hoá khoá riêng việc truyền khoá bí mật - PKCS#6 Extended Certificate Syntax Standard - Chuẩn cú pháp chứng mở rộng PKCS # định nghĩa cú pháp chứng X.509 mở rộng 57 - 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ể liệu mã hoá ví dụ chữ kí số PKCS#7 cung cấp số lựa chọn định dạng: message không mã hoá kí số, message mã hoá, message kí số message có kí số 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 cú pháp khoá riêng mã hoá - PKCS#9 Selected Attribute Types - Những loại thuộc tính lựa chọn PKCS#9 định nghĩa loại thuộc tính lựa chọn sử dụng chứng mở rộng PKCS#6, thông điệp kí số PKCS#7, thông tin khoá riêng PKCS#8 yêu cầu kí chứng PKCS#10 Những thuộc tính chứng rõ gồm có địa thư, loại nội dung, tóm tắt thông điệp, thời gian kí, password yêu cầu thuộc tính chứng mở rộng - PKCS#10 Certification Request Syntax Standard - Chuẩn cú pháp yêu cầu chứng PKCS#10 định nghĩa cú pháp yêu cầu chứng Yêu cầu chứng gồm tên phân biệt, khoá công tập thuộc tính tuỳ chọn, chữ kí thực thể yêu cầu chứng - PKCS#11 Cryptographic Token Interface Standard - Chuẩn giao diện thẻ 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 khoá mă hoá chứng chỉ) thực chức mã hoá Smart Card thiết bị đặc trưng thực 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 mở rộng PKCS#12 làm cho việc truyền chứng khoá bí mật gắn kèm thuận tiện, giúp người sử dụng chuyển thông tin nhận diện cá nhân từ thiết bị sang thiết khác 58 - 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 kiểm tra hiệu lực, tạo khoá công nhận giá trị, chữ kí số mã hoá khoá công khai 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ã sử dụng PKI tạo khoá thoả thuận khoá bí mật Diffie – Hellman sử dụng liệu ngẫu nhiên Tuy nhiên liệu ngẫu nhiên lại không ngẫu nhiên mà chọn từ tập giá trị tiên đoán hàm mật mã không bảo mật đầy đủ Do tạo số giả ngẫu nhiên an toàn điều quan trọng bảo mật PKI Một số đoạn mã java chương trình // Chương trình yêu cầu tạo Chứng 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"); } 59 CertGenerator _gen = new 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); 60 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); 61 outCert.close(); OpenSSLKey key = new 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 số… private void signCertRequest(String rqPath, String 62 caCertPath, String caKeyPath, String signedPath, String caPwd) { logger.debug("Signing cert 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(); 63 } } 64 Một số hình giao diện demo hệ thống xây dựng Giao diện trang Cấp chứng cho tài khoản RootCa 65 Giao diện trang Cấp chứng cho người sử dụng Giao diện tạo chứng số khóa riêng 66 Thái Nguyên, tháng 10 năm 2013 Xác nhận giáo viên hướng dẫn GS.TS Nguyễn Văn Tam Học viên Hoàng Thị Thúy ... thống cấp chứng số dựa hạ tầng khóa công khai” với mục đích tìm hiểu chứng số, hạ tầng khóa công khai PKI triển khai thử nghiệm hệ thống cung cấp chứng số để minh họa 2 CHƯƠNG GIỚI THIỆU VỀ HỆ MẬT... nhiên, khóa công khái bị giả mạo Nhà cung cấp phải chứng thực số (Certificate Authority - CA) chứng thực khóa công khai thuộc Chính học viên chọn đề tài: Nghiên cứu giải pháp xây dựng hệ thống cấp. .. Tổng quan hệ thống 41 3.1.1 Mô hình hệ thống 41 3.1.2 Một số đặc tính hệ thống cung cấp chứng số 41 3.2 Chức trình khởi tạo thành phần hệ thống cung cấp chứng số JavaCA