Nghiên cứu về mobile PKI và hạ tầng ứng dụng PKI trên thiết bị di động 04

75 16 0
Nghiên cứu về mobile PKI và hạ tầng ứng dụng PKI trên thiết bị di động   04

Đ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 tồ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ơi 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 hồn tồn trách nhiệm lời cam đoan Nếu có điều sai trái, tơ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è ln độ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ế cịn 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 q báu từ phía q thầy bạn để luận văn hồ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ố 1.1.4 Hàm Băm 1.2 HỆ THỐNG PKI 1.2.1 Mục tiêu hệ thống PKI 1.2.2 Các thành phần hệ thống PKI 1.2.3 Các hoạt động hệ thống PKI 1.2.4 Trao đổi thông tin dựa PKI 1.3 CÁC MƠ HÌNH KIẾN TRÚC CỦA HỆ THỐNG PKI 1.3.1 Kiến trúc CA đơn (CA Single Architecture) 1.3.2 Trust List 1.3.3 Kiến trúc CA phân cấp (Hierarchical architecture) 1.3.4 Kiến trúc mắt lưới (Mesh architecture) 1.3.5 Kiến trúc kết hợp (Hybrid architecture) 1.3.6 Kiến trúc kiểu chứng thực chéo (Cross-certificate architecture) 1.3.7 Kiến trúc CA cầu nối (Bridge CA architecture) 1.4 CÁC GIẢI PHÁP AN TOÀN ĐỐI VỚI HẠ TẦNG PKI 1.4.1 An toàn vật lý 1.4.2 An toàn Logic Chương 2: HẠ TẦNG MOBILE PKI 2.1 CÔNG NGHỆ VÀ GIAO THỨC SỬ DỤNG TRONG MOBILE PKI 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 -4- 2.2.2 Các thành phần hệ thống Mobile PKI 2.2.3 Mơ hình Mobile PKI 2.2.4 Các hoạt động hệ thống Mobile PKI 2.2.5 Quản lý chứng thư số 2.2.6 Xác thực chứng thư số 2.2.7 Lưu trữ khóa bí mật Mobile PKI 2.3 BẢO MẬT TRONG MOBILE PKI 2.4 ƯU VÀ NHƯỢC ĐIỂM CỦA MOBILE PKI 2.4.1 Ưu điểm 2.4.2 Nhược điểm 2.5 ỨNG DỤNG VÀ GIẢI PHÁP HẠ TẦNG MOBILE PKI 2.5.1 Ứng dụng Mobile PKI 2.5.2 Giải pháp CHƯƠNG 3: ỨNG DỤNG TRÊN THIẾT BỊ MOBILE CHẠY TRÊN NỀN TẢNG ANDROID 3.1 XÂY DỰNG ỨNG DỤNG CHỮ KÝ SỐ TRÊN ĐIỆN THOẠI DI ĐỘNG 3.1.1 Mục tiêu giải pháp 3.1.2 Hoạt động ứng dụng 3.2 XÂY DỰNG ỨNG DỤNG KÝ SỐ TRÊN HỆ ĐIỀU HÀNH ANDROID 3.2.1 Phân tích thiết kế 3.2.2 Thiết kế 3.2.3 Xây dựng chương trình PHỤ LỤC KẾT LUẬN TÀI LIỆU THAM KHẢO -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 tồ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 tồ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 tồ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 tồ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 tồn thơng tin chủ yếu dành cho PC máy tính sách tay, cịn 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- 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 -8- Chương I: TỔNG QUAN HẠ TẦNG KHĨA CƠNG KHAI Trong kỷ ngun 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 ln an tồ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 tồ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 khố 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 khố 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 khố 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 tồ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ố 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” hồ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 ” q 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 ” q 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 { byte[] contentfile = null; byte[] signature = null; try tạo instance SHA1withRSA để xác thực } catch (Exception e) { } } 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 ngồi Đâ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); dung để ký //nhập nội -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 { byte[] contentfile = null; byte[] signature = null; try tạo instance SHA1withRSA để xác thực 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 q trình trao đổi thơng tin Mobile PKI hệ thống tương đối lớn phức tạp cịn 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 hồ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 tồ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 tồ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 tồ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 hồ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 tồ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, Hồ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 tồ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 tồ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 tồn thơng tin, năm 2012 http://vi.wikipedia.org/ 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 ... -28- Chương 2: HẠ TẦNG MOBILE PKI Hạ tầng khóa cơng khai thiết bị di động (Mobile PKI) phận mở rộng hạ tầng PKI truyền thống Giải pháp Mobile PKI cho phép bảo mật ứng dụng thương mại di dộng Các... dịch vụ di động Mobile PKI sử dụng trực tiếp thông qua thiết bị di động Thiết bị di động sinh chữ ký số kiểm tra tính hợp lệ máy chủ xác thực Người dùng sử dụng ứng dụng ký số thiết bị di độ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ố: 6048 0 104 LUẬN VĂN THẠC SĨ CƠNG NGHỆ

Ngày đăng: 11/11/2020, 22:10

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

  • Đang cập nhật ...

Tài liệu liên quan