Nghiên cứu về mobile PKI và hạ tầng ứng dụng PKI trên thiết bị di động luận văn ths công nghệ thông tin 60 48 01 04 pdf

72 1.7K 17
Nghiên cứu về mobile PKI và hạ tầng ứng dụng PKI trên thiết bị di động   luận văn ths  công nghệ thông tin  60 48 01 04 pdf

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ VŨ THỊ NGỌC ANH NGHIÊN CỨU VỀ MOBILE PKI VÀ HẠ TẦNG ỨNG DỤNG PKI TRÊN THIẾT BỊ DI ĐỘNG LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội - 2015 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ VŨ THỊ NGỌC ANH NGHIÊN CỨU VỀ MOBILE PKI VÀ HẠ TẦNG ỨNG DỤNG PKI TRÊN THIẾT BỊ DI ĐỘNG Ngành: Công nghệ thông tin Chuyên ngành: Hệ thống thông tin Mã số: 60480104 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: TS NGUYỄN VIẾT THẾ Hà Nội - 2015 -1- LỜI CAM ĐOAN Tôi xin cam đoan toàn nội dung luận văn “ Nghiên cứu Mobile PKI hạ tầng ứng dụng PKI thiết bị di động” tìm hiểu, nghiên cứu, tham khảo tổng hợp từ nguồn tài liệu khác làm theo hướng dẫn người hướng dẫn khoa học Các nguồn tài liệu tham khảo, tổng hợp có nguồn gốc rõ ràng trích dẫn theo quy định Tôi xin chịu hoàn toàn trách nhiệm lời cam đoan Nếu có điều sai trái, xin chịu hình thức kỷ luật theo quy định Hà Nội, tháng 06 năm 2015 Người cam đoan Vũ Thị Ngọc Anh -2- LỜI CẢM ƠN Trước hết em xin gửi lời cảm ơn chân thành đến thầy cô Khoa Công Nghệ Thông Tin - trường Đại học Công nghệ - Đại học Quốc gia Hà Nội nhiệt tình tâm huyết truyền đạt cho em kiến thức quý báu suốt thời gian học tập trường Em xin gửi lời cảm ơn sâu sắc đến TS Nguyễn Viết Thế – Bộ Công an nhiệt tình, tận tâm định hướng, hướng dẫn cho em lời khuyên bổ ích để em hoàn thành luận văn tốt nghiệp Cuối cùng, em xin cảm ơn gia đình, bạn bè động viên ủng hộ em suốt trình học tập hoàn thành luận văn Bài luận văn thực khoảng thời gian tháng Bước đầu vào thực tế, tìm hiểu lĩnh vực Mobile PKI, kiến thức em nhiều hạn chế nhiều bỡ ngỡ, nên không tránh khỏi thiếu sót Em mong nhận ý kiến đóng góp quý báu từ phía quý thầy cô bạn để luận văn hoàn thiện Hà Nội, tháng 06 năm 2015 Học viên Vũ Thị Ngọc Anh -3- MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN LỜI NÓI ĐẦU DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT DANH MỤC CÁC BẢNG, HÌNH VẼ Chương I: TỔNG QUAN HẠ TẦNG KHÓA CÔNG KHAI 1.1 CƠ SỞ MẬT MÃ HỌC 1.1.1 Hệ mật mã khóa bí mật 1.1.2 Hệ mật mã khóa công khai 1.1.3 Chữ ký số 10 1.1.4 Hàm Băm 10 1.2 HỆ THỐNG PKI 11 1.2.1 Mục tiêu hệ thống PKI 11 1.2.2 Các thành phần hệ thống PKI 11 1.2.3 Các hoạt động hệ thống PKI 15 1.2.4 Trao đổi thông tin dựa PKI 18 1.3 CÁC MÔ HÌNH KIẾN TRÚC CỦA HỆ THỐNG PKI 19 1.3.1 Kiến trúc CA đơn (CA Single Architecture) 20 1.3.2 Trust List 21 1.3.3 Kiến trúc CA phân cấp (Hierarchical architecture) 21 1.3.4 Kiến trúc mắt lưới (Mesh architecture) 22 1.3.5 Kiến trúc kết hợp (Hybrid architecture) 23 1.3.6 Kiến trúc kiểu chứng thực chéo (Cross-certificate architecture) 23 1.3.7 Kiến trúc CA cầu nối (Bridge CA architecture) 24 1.4 CÁC GIẢI PHÁP AN TOÀN ĐỐI VỚI HẠ TẦNG PKI 24 1.4.1 An toàn vật lý 24 1.4.2 An toàn Logic 25 Chương 2: HẠ TẦNG MOBILE PKI 28 2.1 CÔNG NGHỆ VÀ GIAO THỨC SỬ DỤNG TRONG MOBILE PKI 28 2.2 KIẾN TRÚC MÔ HÌNH CÔNG NGHỆ CỦA HẠ TẦNG MOBILE PKI 29 2.2.1 Các yêu cầu Mobile PKI 29 -4- 2.2.2 Các thành phần hệ thống Mobile PKI 32 2.2.3 Mô hình Mobile PKI 36 2.2.4 Các hoạt động hệ thống Mobile PKI 38 2.2.5 Quản lý chứng thư số 40 2.2.6 Xác thực chứng thư số 41 2.2.7 Lưu trữ khóa bí mật Mobile PKI 42 2.3 BẢO MẬT TRONG MOBILE PKI 44 2.4 ƯU VÀ NHƯỢC ĐIỂM CỦA MOBILE PKI 46 2.4.1 Ưu điểm 46 2.4.2 Nhược điểm 46 2.5 ỨNG DỤNG VÀ GIẢI PHÁP HẠ TẦNG MOBILE PKI 46 2.5.1 Ứng dụng Mobile PKI 46 2.5.2 Giải pháp 48 CHƯƠNG 3: ỨNG DỤNG TRÊN THIẾT BỊ MOBILE CHẠY TRÊN NỀN TẢNG ANDROID 50 3.1 XÂY DỰNG ỨNG DỤNG CHỮ KÝ SỐ TRÊN ĐIỆN THOẠI DI ĐỘNG 50 3.1.1 Mục tiêu giải pháp 50 3.1.2 Hoạt động ứng dụng 51 3.2 XÂY DỰNG ỨNG DỤNG KÝ SỐ TRÊN HỆ ĐIỀU HÀNH ANDROID 54 3.2.1 Phân tích thiết kế 54 3.2.2 Thiết kế 56 3.2.3 Xây dựng chương trình 57 PHỤ LỤC 64 KẾT LUẬN 69 TÀI LIỆU THAM KHẢO 70 -5- LỜI NÓI ĐẦU Ngày nay, thiết bị di động (máy tính bảng, điện thoại di động, laptop ) phát triển mạnh thiết bị thiếu xã hội Việc sử dụng thiết bị di động để trao đổi thông tin, liệu, xử lý giao dịch thông qua mạng Internet, hệ thống Mobile Banking, Payment, E-commerce hay giao dịch hành điện tử … trở nên phổ biến Chỉ với điện thoại di động có khả kết nối Internet qua Wifi, 3G GPRS, người dùng thực giao dịch lúc, nơi Tuy nhiên môi trường Internet lại không an toàn tiềm ẩn nhiều nguy an toàn Đặc biệt sau vụ công dồn dập mạng thời gian gần trộm email, nghe điện thoại, hàng loạt vụ công liên quan đến an toàn thông tin mạng internet khiến người dùng lo lắng Đứng trước nguy đánh cắp thông tin sử dụng tài khoản email giao dịch mua bán mạng, việc đảm bảo an toàn thông tin trở nên vô cấp thiết Đặc biệt, nhiều người có thói quen sử dụng thiết bị di động để giải công việc, việc áp dụng biện pháp bảo mật an toàn khó khăn Trước thực trạng đó, cần giải pháp ứng dụng chữ ký số thiết bị di động nhằm nâng cao tính bảo mật an toàn gửi tin nhắn, email hay sử dụng phần mềm tương tự cho người dùng, chế xác thực người dùng thân thiện cung cấp mức độ bảo mật cao Việc xác thực người dùng bảo mật thông tin liên lạc thực nhiều phương pháp khác như: sử dụng mật mật mã khóa đối xứng thông thường, sử dụng mật mã khóa phi đối xứng, công nghệ sinh trắc đại, giải pháp hạ tầng khóa công khai PKI cho thiết bị di động (Mobile PKI) giải pháp giải vấn đề cách hiệu thực cần thiết Lâu nay, vấn đề bảo mật an toàn thông tin chủ yếu dành cho PC máy tính sách tay, thiết bị di động có Mobile PKI hạ tầng ứng dụng PKI thiết bị di động (Mobile) vấn đề tương đối mới, nhắm nhu cầu thực tế thị trường Việt Nam Hiện nay, Việt Nam có số công ty doanh nghiệp nghiên cứu phát triển ứng dụng hạ tầng PKI thiết bị di động VNPT, NacenComm, Bkis, Viettel, FPT … Do tính linh động thiết bị di động, Mobile PKI vấn đề có tính cấp thiết đánh giá giải pháp có tiềm phát triển Việt Nam nên em lựa chọn đề tài: “Nghiên cứu Mobile PKI hạ tầng ứng dụng PKI thiết bị di động” Hà Nội, tháng 06 năm 2015 -6- DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT AC CMP CP CPS CRL GUI HSM IMSI OCSP PKI RU SPKC SSL WTLS Attribute Certificate Certificate Manager Protocol Certificate Policy Certificate Practices Statement Certificate Revocation list Graphycal User Interface Hardware Security Module International Mobile Subscriber Identity Online Certificate Status Protocol Public Key Infrastructure Registration Utility Simple Public Key Certificate Secure Sockets Layer Wireless Transport Layer Security -7- DANH MỤC CÁC BẢNG, HÌNH VẼ Hình 1.1 Hình 1.2 Hình 1.3 Hình 1.4 Hình 1.5 Bảng 2.1 Bảng 2.2 Bảng 2.3 Hình 2.4 Hình 2.5 Hình 2.6 Hình 2.7 Hình 2.8 Hình 2.9 Hình 2.10 Hình 2.11 Hình 3.1 Hình 3.2 Hình 3.3 Hình 3.4 Hình 3.5 Hình 3.6 Hình 3.7 Hình 3.8 Hình 3.9 Hình 3.10 Hình 3.11 Hình 3.12 Hoạt động hệ thống PKI Một phiên giao dịch dựa PKI Kiến trúc CA đơn Kiến trúc CA phân cấp Kiến trúc mắt lưới Chứng thư X.509 không dây Chứng thư ngắn hạn Thiết bị Hard Token - AudioPass Mô hình Mobile PKI Lược đồ ký số thiết bị di động Lược đồ xác thực thiết bị di động Giao thức quản lý chứng thư số Lược đồ xác thực chứng thư số Mobile PKI Giải pháp SIM – based Giải pháp Client – based Giải pháp Roaming Mô hình ký số Mô hình mã hóa Mô hình giải mã Mô hình xác thực Sơ đồ hoạt động ứng dụng ký Android Sơ đồ chức chương trình Giao diện đăng nhập hệ thống Giao diện chương trình Giao diện ký số Giao diện chức mã hóa Giao diện chức giải mã Giao diện chức xác thực -8- Chương I: TỔNG QUAN HẠ TẦNG KHÓA CÔNG KHAI Trong kỷ nguyên bùng nổ công nghệ thông tin, giao dịch từ xa thực thông qua mạng Internet Tuy nhiên, khó bảo đảm giao dịch Internet an toàn Hạ tầng khóa công khai đáp ứng nhu cầu bảo mật người dùng Sáng kiến hạ tầng khóa công khai PKI (Public Key Infrastructure, viết tắt PKI) đời năm 1995, tiêu chuẩn chung xây dựng dựa phương pháp mã hoá để hỗ trợ hạ tầng bảo mật mạng Internet Tại thời điểm đó, mục tiêu đặt xây dựng tiêu chuẩn bảo mật tổng hợp với công cụ lý thuyết cho phép người dùng tổ chức (doanh nghiệp tổ chức phi lợi nhuận) tạo lập, lưu trữ trao đổi thông tin cách an toàn phạm vi cá nhân công cộng [12] Hiện có nhiều cách định nghĩa khác PKI tuỳ theo góc độ nghiên cứu ứng dụng sở hạ tầng Tuy nhiên, cách định nghĩa sở hạ tầng khoá công khai hệ thống vừa mang tính mô hình vừa mang tính công nghệ chuẩn, vừa mô hình kiến trúc vừa hệ thống giao dịch ứng dụng cho phép thực khởi tạo, lưu trữ, quản lý chứng thư số (Digital certificate), quản lý phân phối khóa công khai, khóa bí mật chế chứng thực chứng thư số Thành phần cốt lõi hệ thống PKI chứng thư số Mỗi chứng thư số có hai thành phần thông tin định danh khoá công khai đối tượng sử dụng Các chứng thư số đối tượng quản lý chứng thư tạo ký với phương thức chữ ký số Trong số hệ thống, đối tượng quản lý đăng ký tách riêng khỏi CA Đối tượng không tạo chứng thư số Nó có nhiệm vụ xác minh đối tượng truyền thông cho CA, đối tượng mà CA cấp phát chứng thư số Nghĩa là, trình xác thực đối tượng yêu cầu chứng thư số CA RA đảm nhận PKI dịch vụ cho dịch vụ an toàn dựa chứng thư số Trong hệ thống này, PKI đảm nhận vai trò tạo lập, quản lý phân phối chứng thư số cho đối tượng truyền thông Nói tóm lại, tất chức quản lý hệ thống PKI hướng tới yêu cầu quản lý đối tượng sử dụng hệ thống với khoá công khai đối tượng Hiện Việt Nam, việc nghiên cứu, ứng dụng triển khai PKI nói chung dịch vụ cung cấp chứng thư số nói riêng vấn đề tương đối mẻ Bằng việc sử dụng chứng thư số chữ ký số, ứng dụng cho phép PKI đưa nhiều đặc tính đảm bảo an toàn thông tin cho người dùng Có hai mô hình cung cấp chứng thư số, mô hình CA sinh cặp khóa công khai -56- Chương trình gồm chức sau: Chức Ký số Mã hóa Giải mã Xác thực Hình 3.6: Sơ đồ chức chương trình - Chức tạo chữ ký cho file liệu: Nhiệm vụ chức tạo file chữ ký - Chức mã hóa: Đầu vào file tài liệu + khóa công khai người nhận Nhiệm vụ mã hóa thông tin gửi - Chức giải mã: Đầu vào file tài liệu mã hóa nhận từ bên gửi + khóa bí mật người nhận Nhiệm vụ giải mã tài liệu Xác định người nhận - Chức xác thực chữ ký số: Đầu vào modul file liệu + với file chữ ký số Nhiệm vụ modul kiểm tra tính đắn chữ ký số 3.2.2 Thiết kế - Mô hình đăng nhập hệ thống Sử dụng hình thức bảo mật username / password thông thường để truy cập hệ thống - Ký số Thuật toán RSA dùng để tạo chữ ký số cho văn Sử dụng chứng thư dạng P12 để lấy khóa bí mật, sau ký lên liệu băm B1: Chọn tập tin PKCS#12 (file chứa khóa bí mật người gửi) B2: Chọn tập tin để ký B3: Nhập password để truy cập vào private key Token B4: Ký số Hiện thông báo “Ký số thành công” hoàn thành quy trình Ký liệu - Mã hóa liệu B1: Chọn tập tin cần mã hóa B2: Chọn chứng thư số B3: Mã hóa Thông báo “Mã hóa thành công ” trình mã hóa thành công -57- - Giải mã B1: Chọn tập tin mã hóa B2: Chọn tập tin PKCS#12 B3: Nhập password để truy cập vào private key Token B4: Giải mã Thông báo “Giải mã thành công ” trình giải mã thành công Hệ thống chứng thư số gồm file bản:  File chứng thư dạng crt, chứng thư ký Trong chứa thông tin chứng thư, khóa công khai ký CA  File chứng thư dạng p12 chứng thư đầy đủ, chứa thông tin chứng thư, khóa bí mật khóa công khai - Xác thực Khi xác thực chữ ký sử dụng file chứng thư crt để lấy khóa công khai, từ xác định chữ ký hay sai, liệu băm trước thuật toán với lúc ký B1: Chọn tập tin ký cần xác thực B2: Chọn chứng thư số B3: Chọn tập tin gốc (là tập tin ký số đó) B4: Xác thực So sánh giá trị tập tin chọn B1 B3 Nếu giống thông báo “Chữ ký xác” Nếu không giống xuất thông báo “Chữ ký không đúng” 3.2.3 Xây dựng chương trình 3.2.3.1 Giao diện hệ thống -58- - Giao diện đăng nhập hệ thống Hình 3.7: Giao diện đăng nhập hệ thống - Giao diện chương trình Hình 3.8: Giao diện chương trình -59- - Giao diện ký số Hình 3.9: Giao diện ký số - Giao diện mã hóa Hình 3.10: Giao diện chức mã hóa -60- - Giao diện giải mã Hình 3.11: Giao diện chức giải mã - Giao diện xác thực Hình 3.12: Giao diện chức xác thực 3.2.3.2 Các module chương trình - Mô hình tạo chữ ký số  Input: đường đẫn tập tin * P12 + mật truy cập file * P12 + đường dẫn tập tin cần ký + đường dẫn tập tin lưu chữ ký -61-  Output: File chữ ký số (*.sig) Mã chương trình: public void sign(String spath_pkcs12, String smatkhau, String spath_file, String spath_sigFile){ byte[] signature = null; File f_file = new File(spath_file); int size_file = (int) f_file.length(); byte[] contentfile = new byte[size_file]; try { //đọc nội dung tập tin vào mảng contentfile BufferedInputStream buf = new BufferedInputStream(new FileInputStream(f_file)); buf.read(contentfile, 0, contentfile.length); buf.close(); //lấy khóa bí mật P12 PrivateKey prk = module.get_privatekey(spath_pkcs12, smatkhau); //Khởi tạo instance SHA1withRSA để ký Signature dsa = Signature.getInstance("SHA1withRSA"); dsa.initSign(prk); dsa.update(contentfile, 0, contentfile.length); signature = dsa.sign(); //ghi chữ ký vào tập tin File f_sigFile = new File(spath_sigFile); if(!f_sigFile.exists()) { f_sigFile.createNewFile(); } FileOutputStream o_sigFile = new FileOutputStream(f_sigFile, false); o_sigFile.write(signature); o_sigFile.flush(); o_sigFile.close(); AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this); module.my_messagebox(dlgAlert, "Ký số thành công"); } catch (Exception e) { Log.d(TAG, "Error"); } } Trong đoạn mã sử dụng thư viện hàm băm SHA1 để lấy giá trị file đầu vào => chữ ký tạo khóa bí mật + giá trị băm ghi file *.sig - Mô hình mã hóa  Input: đường dẫn chứng thư số + đường dẫn tập tin để mã hóa + đường dẫn để lưu tập tin mã hóa  Output: File liệu mã hóa (*.enc) -62- Mã chương trình: public void encrypt(String spath_cert, String spath_file, String spath_encFile){ byte[] plaintext = null; byte[] cipherText = null; try { //đọc tập tin để mã hóa plaintext = module.readFiletoBytes(spath_file); PublicKey puk = module.get_publickey(spath_cert); //khởi tạo instance RSA final Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, puk); cipherText = cipher.doFinal(plaintext); File f_enfile = new File(spath_encFile); if(!f_enfile.exists()) { f_enfile.createNewFile(); } FileOutputStream o_encFile = new FileOutputStream(f_enfile, false); o_encFile.write(cipherText); o_encFile.flush(); o_encFile.close(); AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this); module.my_messagebox(dlgAlert, "Mã hóa thành công"); } catch (Exception e) { Log.d(TAG, "Error"); } } - Mô hình giải mã  Input: đường dẫn tập tin *.P12 + mật truy cập file *.P12 + đường tập tin mã hóa + đường dẫn lưu tập tin giải mã  Output: File liệu giải mã Mã chương trình: public void decrypt(String spath_pkcs12, String smatkhau, String spath_encFile, String spath_decFile) { byte[] cipherText = null; byte[] dectyptedText = null; try { // lấy khóa bí mật P12 PrivateKey prk = module.get_privatekey(spath_pkcs12, smatkhau); cipherText = module.readFiletoBytes(spath_encFile); //khởi tạo instance RSA final Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, prk); dectyptedText = cipher.doFinal(cipherText); //lưu nội dung giải mã tập tin File f_decryptedFile = new File(spath_decFile); if(!f_decryptedFile.exists()) { f_decryptedFile.createNewFile(); } FileOutputStream o_encFile = new FileOutputStream(f_decryptedFile, false); -63o_encFile.write(dectyptedText); o_encFile.flush(); o_encFile.close(); AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this); module.my_messagebox(dlgAlert, "Giải mã thành công"); } catch (Exception ex) { Log.d(TAG, "Error"); } } - Mô hình xác thực  Input: đường dẫn chứng thư số + đường dẫn tập tin lưu chữ ký số + đường dẫn tập tin gốc  Output: Tính đắn chữ ký số Mã chương trình: public void verify(String spath_cert, String spath_sig, String spath_plain) { byte[] contentfile = null; byte[] signature = null; try { //đọc tập tin gốc tập tin chữ ký số contentfile = module.readFiletoBytes(spath_plain); signature = module.readFiletoBytes(spath_sig); //Lấy khóa công khai chứng thư số PublicKey puk = module.get_publickey(spath_cert); Signature dsa = Signature.getInstance("SHA1withRSA"); //khởi tạo instance SHA1withRSA để xác thực dsa.initVerify(puk); //nhập khoa công khai dsa.update(contentfile, 0, contentfile.length); //xác thực AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this); if (!dsa.verify(signature)) { module.my_messagebox(dlgAlert, "Chữ ký không đúng"); Log.e(TAG,"Signature verification failed."); } else { module.my_messagebox(dlgAlert, "Chữ ký xác"); Log.e(TAG, "Signature verification true."); } } catch (Exception e) { Log.d(TAG, "Error"); } } KẾT LUẬN CHƯƠNG Chương trình ứng dụng chạy tốt hệ điều hành android 4.0 trở lên Tuy nhiên chương trình demo chưa xây dựng xác thực thông qua hạ tầng PKI bên Đây hướng phát triển chương trình ứng dụng -64- PHỤ LỤC Giao diện Hình: Giao diện ứng dụng Ứng dụng có chức là: ký số, xác thực, mã hóa, xác thực Mã nguồn số module 2.1 Mã nguồn số hàm liên quan 2.1.1 Hàm lấy khóa công khai chứng thư số public static PublicKey get_publickey(String spath_chungchiso){ PublicKey puk = null; try { FileInputStream fin = new FileInputStream(spath_chungchiso); CertificateFactory f = CertificateFactory.getInstance("X.509"); Certificate certificate = f.generateCertificate(fin); puk = certificate.getPublicKey(); fin.close(); } catch (Exception e) { //thong bao loi Log.d(TAG, "Error"); } return puk; } 2.1.2 Hàm lấy khóa bí mật P12 spath_PKCS12: đường đẫn tập tin P12 smatkhau: mật mở P12 -65public static PrivateKey get_privatekey(String spath_PKCS12, String smatkhau){ PrivateKey prk = null; try { FileInputStream f_chungchiso = new FileInputStream(spath_PKCS12); InputStream in_chungchiso = new BufferedInputStream(f_chungchiso); KeyStore keystore = KeyStore.getInstance("PKCS12"); keystore.load(in_chungchiso, smatkhau.toCharArray()); Enumeration enum1 = keystore.aliases(); String sAlias = (String) enum1.nextElement(); while (enum1.hasMoreElements()) { sAlias = (String) enum1.nextElement(); } prk = (PrivateKey) (keystore.getKey(sAlias, smatkhau.toCharArray())); f_chungchiso.close(); } catch (Exception e) { //thong bao loi Log.d(TAG, "Error"); } return prk; } 2.2 Mã nguồn thực ký spath_pkcs12: đường đẫn tập tin P12 smatkhau: mật mở P12 spath_file: đường dẫn tập tin để ký spath_sigFile: đường dẫn tập tin lưu chữ ký public void sign(String spath_pkcs12, String smatkhau, String spath_file, String spath_sigFile){ byte[] signature = null; File f_file = new File(spath_file); int size_file = (int) f_file.length(); byte[] contentfile = new byte[size_file]; try { //đọc nội dung tập tin vào mảng contentfile BufferedInputStream buf = new BufferedInputStream(new FileInputStream(f_file)); buf.read(contentfile, 0, contentfile.length); buf.close(); //lấy khóa bí mật P12 PrivateKey prk = module.get_privatekey(spath_pkcs12, smatkhau); //Khởi tạo instance SHA1withRSA để ký Signature dsa = Signature.getInstance("SHA1withRSA"); dsa.initSign(prk); //nhập khóa bí mật dsa.update(contentfile, 0, contentfile.length); //nhập nội dung để ký -66signature = dsa.sign(); //ký số chữ ký trả lưu vào signature //ghi chữ ký vào tập tin File f_sigFile = new File(spath_sigFile); if(!f_sigFile.exists()) { f_sigFile.createNewFile(); } FileOutputStream o_sigFile = new FileOutputStream(f_sigFile, false); o_sigFile.write(signature); o_sigFile.flush(); o_sigFile.close(); AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this); module.my_messagebox(dlgAlert, "Ký số thành công"); } catch (Exception e) { Log.d(TAG, "Error"); } } 2.3 Mã nguồn thực xác thực chữ ký spath_cert: đường dẫn chứng thư số spath_sig: đường dẫn tập tin lưu chữ ký số spath_plain: đường dẫn tập tin gốc public void verify(String spath_cert, String spath_sig, String spath_plain) { byte[] contentfile = null; byte[] signature = null; try { //đọc tập tin gốc tập tin chữ ký số contentfile = module.readFiletoBytes(spath_plain); signature = module.readFiletoBytes(spath_sig); //Lấy khóa công khai chứng thư số PublicKey puk = module.get_publickey(spath_cert); Signature dsa = Signature.getInstance("SHA1withRSA"); //khởi tạo instance SHA1withRSA để xác thực dsa.initVerify(puk); //nhập khoa công khai dsa.update(contentfile, 0, contentfile.length); //xác thực AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this); if (!dsa.verify(signature)) { module.my_messagebox(dlgAlert, "Chữ ký không đúng"); Log.e(TAG,"Signature verification failed."); } else { module.my_messagebox(dlgAlert, "Chữ ký xác"); Log.e(TAG, "Signature verification true."); } } catch (Exception e) { Log.d(TAG, "Error"); } } -67- 2.3 Mã nguồn thực mã hóa spath_cert: đường dẫn chứng thư số spath_file: đường dẫn tập tin để mã hóa spath_encFile: đường dẫn để lưu tập tin mã hóa public void encrypt(String spath_cert, String spath_file, String spath_encFile){ byte[] plaintext = null; byte[] cipherText = null; try { //đọc tập tin để mã hóa plaintext = module.readFiletoBytes(spath_file); PublicKey puk = module.get_publickey(spath_cert); //khởi tạo instance RSA final Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, puk);//nhập khóa công khai cipherText = cipher.doFinal(plaintext); //mã hóa, kết trả lưu cipherText //ghi nội dung cipherText tập tin File f_enfile = new File(spath_encFile); if(!f_enfile.exists()) { f_enfile.createNewFile(); } FileOutputStream o_encFile = new FileOutputStream(f_enfile, false); o_encFile.write(cipherText); o_encFile.flush(); o_encFile.close(); AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this); module.my_messagebox(dlgAlert, "Mã hóa thành công"); } catch (Exception e) { Log.d(TAG, "Error"); } } 2.3 Mã nguồn thực giải mã spath_pkcs12: đường dẫn tập tin P12 smatkhau: mật mở P12 spath_encFile: đường tập tin mã hóa spath_decFile: đường dẫn lưu tập tin giải mã public void decrypt(String spath_pkcs12, String smatkhau, String spath_encFile, String spath_decFile) { byte[] cipherText = null; byte[] dectyptedText = null; try { // lấy khóa bí mật P12 PrivateKey prk = module.get_privatekey(spath_pkcs12, smatkhau); cipherText = module.readFiletoBytes(spath_encFile); //khởi tạo instance RSA final Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, prk);//nhập khóa bí mật -68dectyptedText = cipher.doFinal(cipherText);//giải mã kết lưu vào mảng dectyptedText //lưu nội dung giải mã tập tin File f_decryptedFile = new File(spath_decFile); if(!f_decryptedFile.exists()) { f_decryptedFile.createNewFile(); } FileOutputStream o_encFile = new FileOutputStream(f_decryptedFile, false); o_encFile.write(dectyptedText); o_encFile.flush(); o_encFile.close(); AlertDialog.Builder dlgAlert = new AlertDialog.Builder(this); module.my_messagebox(dlgAlert, "Giải mã thành công"); } catch (Exception ex) { Log.d(TAG, "Error"); } } -69- KẾT LUẬN Mobile PKI phận mở rộng hệ thống PKI truyền thống Đó chế bên thứ ba (thường nhà cung cấp chứng thư số) đáng tin cậy cung cấp xác thực định danh bên tham gia vào trình trao đổi thông tin Mobile PKI hệ thống tương đối lớn phức tạp nhiều hạn chế cấu hình sở hạ tầng mạng Hơn với điều kiện thực tế Việt Nam chưa có sở hạ tầng Mobile PKI hoàn chỉnh Do việc tìm hiểu, nghiên cứu nắm vững Mobile PKI gặp nhiều khó khăn Tuy nhiên thời gian thực đề tài em nghiên cứu tìm hiểu Mobile PKI thu số kết sau: Về lý thuyết em tìm hiểu nắm vững vấn đề sau:  Các kiến thức hạ tầng khóa công khai - PKI mô hình kiến trúc giải pháp an toàn hệ thống PKI  Tìm hiểu tổng quan hệ thống Mobile PKI ứng dụng Mobile PKI thương mại điện tử, giải pháp ứng dụng hạ tầng PKI điện thoại di động sử dụng Về mặt thực nghiệm, luận văn thực kết sau:  Xây dựng phần mềm ký số xác thực đơn giản hệ điều hành Android với ngôn ngữ Java  Mã hóa, ký số, giải mã, xác thực chứng thư số Vì công nghệ mới, chưa triển khai sâu rộng Việt Nam, nên đạt mục tiêu đề luận văn kết thu mức độ tìm hiểu Luận văn nhiều hạn chế ứng dụng xây dựng kiểm tra tính toàn vẹn liệu mà chưa kiểm tra tình trạng chứng thư qua OCSP CRL, toán lưu chứng thư số thiết bị di động chưa thực an toàn, việc gán nhãn thời gian chưa thực Hướng phát triển luận văn đưa hoàn thiện ứng dụng ký số xác thực điện thoại di động có xác thực thông qua hạ tầng PKI bên đáng tin cậy Giải toàn kiểm tra tình trạng chứng thư trực tuyến qua giao thức OCSP CRL, từ đánh giá xác khả áp dụng thực tiễn, xây dựng thuật toán ký số thuật toán tối ưu Em mong nhận góp ý bảo thầy cô bạn để em hoàn thiện luận văn tiếp tục nghiên cứu sâu Mobile PKI nhằm đưa giải pháp an toàn, thiết thực hiệu Một lần em xin chân thành cảm ơn TS Nguyễn Viết Thế nhiệt tình giúp đỡ em suốt thời gian thực luân văn -70- TÀI LIỆU THAM KHẢO Tiếng Việt TS Hồ Văn Hương, KS Hoàng Chiến Thắng-Cục QLKTNVMM, Ban Cơ yếu Chính phủ, Ký số xác thực tảng web, Tạp trí An toàn thông tin, số (026) năm 2013 Hồ Văn Hương, Hoàng Vĩnh Hà, Cao Thị Linh, Trịnh Văn Anh, Mobile PKI ứng dụng thực tế, Kỷ yếu Hội nghị Quốc gia Một số vấn đề chọn lọc Công nghệ thông tin lần thứ XVII, năm 2014 Hồ Văn Hương, Hoàng Chiến Thắng, Nguyễn Quốc Uy, Giải pháp bảo mật xác thực cho văn phòng điện tử, Hội nghị Quốc gia điện tử truyền thông (REV 2013-KC01) Hồ Văn Hương, Hoàng Chiến Thắng, Nguyễn Quốc Uy, Giải pháp bảo mật xác thực thư điện tử, Tạp chí An toàn thông tin số 04 (028), 2013 Hồ Văn Hương, Hoàng Vĩnh Hà, Ngô Thị Linh, Trịnh Văn Anh, Hộ chiếu điện tử ứng dụng chữ ký số cho Hộ chiếu điện tử, Kỷ yếu hội thảo Khoa học công nghệ an toàn thông tin, lần thứ nhất, 12/ 2014 Nguyen Thi Hoang Lan et al, “Nghiên cứu xây dựng hệ thống kiểm soát truy cập mạng an ninh thông tin dựa sinh trắc học sử dụng công nghệ nhúng”, 2010, KC.01.11/06-10 ThS Lê Quang Hùng, Hạ tầng PKI di động tích hợp dịch vụ chứng chực điện tử cho thiết bị động, Tạp trí An toàn thông tin, năm 2012 http://vi.wikipedia.org/ Tiếng Anh Carlisle Adams & Steve Lloyd, Understanding PKI: Concepts, Standards and Deployment Considerations, Addison-Wesley, 2003 10 Suranjan Choudhury, Kartik Bhatnagar, and Wasim Haque, Public Key Infrastructure Implementation and Design, Published by M&T Books 11 Yong Lee a,*, Jeail Lee a, JooSeok Song b, Design an implementation of wireless PKI technology suitable for mobile phone in mobile-commerce, Received May 2006 12 William Stallings, Cryptography and Network Security Principles and Practices, Fourth Edition, 2005 13 Wireless Public Key Infrastructure for Mobile Phones, International Journal of Network Security & Its Applications (IJNSA), Vol.4, No.6, November 2012 [...]... đều được chuyển về thực hiện tại phía hạ tầng Mobile PKI, thay vì được thực hiện tại thiết bị di động như đối với các ứng dụng PKI thông thường để giảm tải tối đa cho thiết bị di động nhằm đáp ứng được các yêu cầu sử dụng trong thực tế 2.2 KIẾN TRÚC MÔ HÌNH CÔNG NGHỆ CỦA HẠ TẦNG MOBILE PKI 2.2.1 Các yêu cầu đối với Mobile PKI Việc ứng dụng hạ tầng khóa công khai trên thiết bị di động thông qua mạng... đại, nhưng giải pháp chữ ký số cho thiết bị di động là thực sự cần thiết 2.1 CÔNG NGHỆ VÀ GIAO THỨC SỬ DỤNG TRONG MOBILE PKI Công nghệ PKI di động được phát triển dựa trên các yếu tố sau: - Số hóa nguồn thông tin di động Truyền tin vô tuyến số hóa có thể ứng dụng mật mã hiện đại để bảo mật và xác thực thông tin và do đó có thể sử dụng chứng thư số Khi đó các thiết bị di động sẽ giống với các máy tính thu... hoạt động truyền tin vô tuyến số hóa.[7] - Công nghệ sử dụng trong Mobile PKI Công nghệ lập trình cho thiết bị di động phổ biến là dựa trên ngôn ngữ Java, Java ME hay còn gọi J2ME là một công nghệ cho phát triển các ứng dụng Java trên các thiết bị di động như điện thoại di động Công nghệ này cho phép tích hợp những tính năng mật mã và các tính năng khác của dịch vụ chứng thực điện tử trong hạ tầng Mobile. .. Mobile PKI vào thiết bị di động một cách tương đối hiệu quả và thuận tiện Bên cạnh công nghệ Java thì công nghệ Net sử dụng C# cũng được ứng dụng dễ dàng thuận tiện -29- - Khắc phục những hạn chế trong công nghệ PKI di động Đối với người sử dụng, phải tìm ra giải pháp khả thi cho việc tích hợp dịch vụ CA vào các thiết bị di động một cách an toàn và hiệu quả, bảo đảm tính tiện dụng và khả năng ứng dụng. .. khá đắt, và không tiện dụng, với thiết bị kết nối qua cổng Audio hiện tại độ ổn định còn rất thấp, nền tảng ứng dụng của các thiết bị trên Sim có thể nói rất hiếm và khó dùng Dưới đây là một số thiết bị Mobile PKI Token đang được ứng dụng phổ biến - Thiết bị Hard Token Hard token là một thiết bị phần cứng chuyên dụng, được dùng để lưu trữ các thông tin về chứng thư số và các cặp khóa tương ứng của người... các thiết bị lưu trữ chữ ký số chuyên dụng và kết nối với các máy tính qua các cổng USB để thực hiện các giao thức chữ ký số Tuy nhiên đối với thiết bị di động, các thiết bị giao tiếp này chưa phổ biến, các ứng dụng trên thiết bị di động cũng chưa nhiều Hiện nay trên thị trường đã cung cấp một số thiết bị lưu trữ chữ ký số giao tiếp với thiết bị di động qua cổng Audio, Sim CA Tuy nhiên các thiết bị. .. nhân KẾT LUẬN CHƯƠNG 1 Chương 1 đã trình bày cơ sở mật mã học, hạ tầng cơ sở khóa công khai PKI, các thành phần cơ bản của PKI, các mô hình kiến trúc của hệ thống PKI, Đồng thời, nêu ra các giải pháp an toàn đối với hệ thống PKI -28- Chương 2: HẠ TẦNG MOBILE PKI Hạ tầng khóa công khai trên thiết bị di động (Mobile PKI) là một bộ phận mở rộng của hạ tầng PKI truyền thống Giải pháp Mobile PKI cho phép... thoại di động thông minh thế hệ 3G đạt mức tiện dụng và thân thiện cao đối với người sử dụng Người dùng có thể dễ dàng tích hợp chứng thư số và sử dụng thẻ thông minh, SIMCard để lưu trữ khóa, xử lý mật mã trên thiết bị di động Tuy nhiên tại Việt Nam hiện nay nhiều công ty đã và đang nghiên cứu sử dụng giải pháp Soft Token để thay thế So với máy tính thì tính năng của thiết bị di động có nhiều hạn chế... pháp Giao tiếp giữa ứng dụng ràng buộc PKI và thiết bị HSM được kiểm soát bởi mã số PIN do người sở hữu chứng thư nắm giữ và xuất trình khi cần Do đó, -26- kẻ tấn công chỉ có thể sử dụng hợp thức được chứng thư của thuê bao khi chúng có được cả mã số PIN và thiết bị HSM của thuê bao - Giải pháp an toàn lôgic cho hạ tầng PKI Để khắc phục được các dạng tấn công trên thì về cơ bản hạ tầng PKI được đảm bảo... chứng thư (Certificate Revoke List - CRL), hạn chế về kích thước bộ nhớ lưu trữ chứng thư và CRL Do băng thông giao tiếp trong môi trường hạ tầng Mobile PKI nhỏ hơn nên việc xử lý của giao thức quản lý chứng thư số (Certificate Management Protocol CMP) cho chu kỳ chứng thư số như cấp phát chứng thư số trên thiết bị di động và tải CRL cần thiết để xác thực chứng thư số là một nhiệm vụ khó Để ứng dụng ... CÔNG NGHỆ VŨ THỊ NGỌC ANH NGHIÊN CỨU VỀ MOBILE PKI VÀ HẠ TẦNG ỨNG DỤNG PKI TRÊN THIẾT BỊ DI ĐỘNG Ngành: Công nghệ thông tin Chuyên ngành: Hệ thống thông tin Mã số: 604 8010 4 LUẬN VĂN THẠC SĨ CÔNG... cho thiết bị di động nhằm đáp ứng yêu cầu sử dụng thực tế 2.2 KIẾN TRÚC MÔ HÌNH CÔNG NGHỆ CỦA HẠ TẦNG MOBILE PKI 2.2.1 Các yêu cầu Mobile PKI Việc ứng dụng hạ tầng khóa công khai thiết bị di động. .. J2ME công nghệ cho phát triển ứng dụng Java thiết bị di động điện thoại di động Công nghệ cho phép tích hợp tính mật mã tính khác dịch vụ chứng thực điện tử hạ tầng Mobile PKI vào thiết bị di động

Ngày đăng: 19/12/2015, 03:17

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan