Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)Nghiên cứu hệ mật mã RSA và ứng dụng trong chữ kí điện tử (LV thạc sĩ)
LỜI CAM ĐOAN Tôi cam đoan công trình nghiên cứu riêng Nghiên cứu thuật toán hệ mật mã khóa công khai RSA, có sử dụng tài liệu tham khảo qua sách báo tài liệu tham khảo khác Các số liệu, kết nêu luận văn trung thực rõ ràng TÁC GIẢ BÙI VĂN BÌNH LỜI CẢM ƠN Trước tiên, xin bày tỏ lòng biết ơn đến quý thầy cô trường Học Viện Công Nghệ Bưu Chính Viễn Thông tận tình truyền đạt kiến thức quý báu, dìu dắt, giúp đỡ hoàn thành nhiệm vụ khóa học luận văn tốt nghiệp Đặc biệt, xin bày tỏ lòng biết ơn sâu sắc đến PGS TS LÊ HỮU LẬP Thầy tận tình truyền đạt kiến thức khoa học chuyên ngành, giúp đỡ suốt trình học tập hướng dẫn tận tình, cho ý kiến đóng góp quý báu để hooàn thành tốt luận văn Xin gửi lời cảm ơn chân thành đến bạn lớp Cao học Hệ Thống Thông Tin Khóa 2015 đợt Xin cảm ơn bạn bè, gia đình, đồng nghiệp giúp đỡ tạo điều kiện cho hoàn thành khóa học Xin trân trọng cảm ơn! Tác giả BÙI VĂN BÌNH MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN BẢNG CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ DANH MỤC CÁC BẢNG BIỂU .7 DANH MỤC CÁC HÌNH VẼ PHẦN I: MỞ ĐẦU 1 Lý chọn đề tài Mục đích nghiên cứu Phƣơng pháp nghiên cứu Nội dung luận văn PHẦN II: NỘI DUNG .3 CHƢƠNG 1: GIỚI THIỆU MẬT MÃ VÀ HỆ MÃ HÓA CÔNG KHAI RSA 1.1 Giới thiệu mật mã hệ mật mã 1.1.1 Khái quát mật mã hệ thống mã hóa 1.1.2 Phân loại hệ mã hóa 1.1.3 Phân tích ưu nhược điểm hệ mật mã 1.2 Hệ mã hóa công khai RSA 1.2.1 Trình bày khái niệm liên quan 1.2.2 Thuật toán hệ mã hóa công khai 1.2.3 Một số cách thức công hệ mật mã RSA 12 1.2.4 Phương pháp phòng tránh công 15 1.2.5 Chi phí tốc độ thực thuật toán RSA 16 1.2.6 Ứng dụng hệ mã RSA 17 Kết luận chƣơng 18 CHƢƠNG 2: ỨNG DỤNG THUẬT TOÁN TRONG HỆ MẬT MÃ RSA ĐỂ XÂY DỰNG VÀ XÁC THỰC CHỮ KÝ ĐIỆN TỬ 19 2.1 Các khái niệm 19 2.1.1 Chữ ký điện tử 19 2.1.2 Chữ ký số 20 2.1.3 Phương tiện điện tử 20 2.1.4 Giao dịch điện tử 21 2.1.5 Thông điệp điện tử 21 2.1.6 Chứng thực điện tử 22 2.1.7 Lịch sử hình thành phát triển chữ ký điện tử 23 2.2 Trình bày thuật toán, hàm 27 2.2.1 Thuật toán Euclide - Tìm UCLN hai số nguyên 27 2.2.2 Thuật toán Euclide mở rộng 27 2.2.3 Thuật toán tính a-1 mod n 28 2.2.4 Thuật toán Rabin-Miller 29 2.2.5 Thuật toán tính Xp mod n 30 2.2.6 Định lý Ferma 31 2.2.7 Định lý Euler 31 2.2.8 Hàm Băm 31 2.2.9 Hàm băm MD5 32 2.2.10 Hàm băm SHA1 37 2.3 Lƣợc đồ chữ ký điện tử RSA 40 2.3.1 Định nghĩa lược đồ chữ ký 40 2.3.2 Phân loại lược đồ chữ ký số 40 2.3.3 Lược đồ chữ ký RSA 44 2.3.4 Một số lược đồ chữ ký khác (DSA, EL Gamal) 46 2.4 Quá trình ký xác thực chữ ký điện tử 51 2.4.1 Ký văn điện tử 51 2.4.2 Xác thực chữ ký điện tử 52 Kết luận chƣơng 53 CHƢƠNG 3: XÂY DỰNG VÀ THỬ NGHIỆM ỨNG DỤNG CHỮ KÝ ĐIỆN TỬ 54 3.1 Các yêu cầu thử nghiệm 54 3.1.1 Giới thiệu thử nghiệm 54 3.1.2 Các yêu cầu cần thiết 54 3.2 Hệ thống tạo lập chữ ký 55 3.2.1 Môi trường xây dựng 55 3.2.2 Quá trình xây dựng 55 3.3 Cài đặt thiết lập 56 3.3.1 Chạy thử demo ghi nhận kết đạt 56 3.3.2 Demo ký – xác thực chữ ký 57 3.3.3 Phân tích ưu nhược điểm ứng dụng thực tế 59 Kết luận chƣơng 60 PHẦN III: KẾT LUẬN 61 MÃ NGUỒN CHƢƠNG TRÌNH THỬ NGHIỆM 62 DANH MỤC TÀI LIỆU THAM KHẢO 67 BẢNG CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ Các từ viết tắt CA Certificate Authority Nhà cung cấp chứng thực số DEA Data Encryption Algorithm Thuật toán mật mã liệu DES Data Encryption Standard Chuẩn mã hóa liệu IDEA International Data Encryption Thuật toán mật mã liệu quốc Algorithm tế MAC Message Authentication Code Mã xác thực thông điệp MD5 Message Digest algorithm (MD5 thiết kế Ronald Rivest năm 1991) Thuật toán tạo dấu vết thông điệp Massachusets Institute of Học viện công nghệ Technology Massachusets PKI Public Key Infrastructure Cơ sở hạ tầng khoá công khai SHA Secure Hash Algorithm MIT SHA thiết kế National Security Agency (NSA) Các ký hiệu C Ciphertext Bản mã D Decryption Hàm giải mã Khóa riêng CA Dauth E Encryption Hàm mã hóa Khóa công khai CA Eauth K key Khóa mã P Plantext Bản rõ – thông điệp gốc Zn Tập hợp {0, 1,…, n-1} Vành số nguyên modulo n DANH MỤC CÁC BẢNG BIỂU Bảng 1.1 Bản mã ASCII Bảng 1.2: Tóm tắt giải thuật RSA Bảng 1.3 Bảng quy ước mã hóa thông điệp 11 Bảng 2.1: Bảng sau tính toán bước 3727 mod 101 .31 Bảng 2.2: Giá trị số mảng T có 64 phần tử 35 Bảng 2.3: Xây dựng tác vụ 36 DANH MỤC CÁC HÌNH VẼ Hình 1.1 Mô hình hệ mã khoá bí mật Hình 1.2: trình mã hóa khóa công khai Hình 2.1: Ứng dụng chữ ký số trình cấp giấy phép lái xe 26 Hình 2.2: Hoạt động hàm băm 31 Hình 2.3: Tạo message_digest sử dụng MD5 33 Hình 2.4: Xử lý MD5 khối đơn 512 bít 34 Hình 2.5: Tác vụ MD5[abcd k s i] 35 Hình 2.6: Mô hình tổng quát lược đồ chữ ký có kèm rõ 42 Hình 2.7: Lược đồ chữ ký số tự khôi phục rõ 43 Hình 2.8: Lược đồ chữ ký số kèm theo rõ thu 44 Hình 2.9: Sơ đồ trình ký văn điện tử 51 Hình 2.10: Sơ đồ trình xác thực chữ ký điện tử 52 Hình 3.1: Giao diện chương trình 56 Hình 3.2: Quá trình giải mã 57 Hình 3.3: Quá trình mã hoá 58 PHẦN I: MỞ ĐẦU Lý chọn đề tài Bảo mật thông tin an toàn liệu vấn đề quan tâm thời kỳ có nhiều thông tin Đây vấn đề rộng có liên quan đến nhiều lĩnh vực đời sống xã hội như: quốc phòng, tài ngân hàng, thương mại,… Ngày nay, nước phát triển nước phát triển, mạng máy tính ngày đóng vai trò quan trọng, vấn đề bảo mật thông tin mạng đặt lên hàng đầu Với phát triển không ngừng phủ điện tử với trao đổi thông tin, yêu cầu an toàn thông tin ngày có vai trò vô quan trọng Để đáp ứng yêu cầu trao đổi an toàn thông tin giải pháp “mã hóa thông tin” xem phương án tốt Vì vậy, tổ chức, quốc gia có chế mã hóa riêng để bảo mật hệ thống thông tin Cơ chế mã hóa thông dụng hệ mật mã RSA Trong mật mã vấn đề bảo mật đôi với vấn đề xác thực nguồn gốc thông tin, đặc biệt hệ thống mật mã khóa công khai, vấn đề xác thực nguồn gốc thông tin quan trọng Chữ ký số (chữ ký điện tử) đời với yêu cầu cần có mã khóa phù hợp điều tất yếu Với lý nêu trên, chọn đề tài “Nghiên cứu hệ mật mã RSA Ứng dụng Chữ ký điện tử” làm nội dung nghiên cứu cho luận văn, nhằm trang bị kiến thức cần thiết để xây dựng hệ thống trao đổi thông tin công khai đảm bảo bí mật Mục đích nghiên cứu Nghiên cứu thuật toán hệ mật mã khóa công khai RSA ứng dụng thực nghiệm tạo chữ ký điện tử để ký xác thực chữ ký Phƣơng pháp nghiên cứu Nghiên cứu tài liệu mã hóa, hệ mật mã tác giả nước, báo, thông tin mạng Internet có trình bày chọn lọc Nội dung luận văn Luận văn bao gồm phần: PHẦN I: MỞ ĐẦU PHẦN II: NỘI DUNG Trong phần có chương sau: Chương I: giới thiệu mật mã hệ mã hóa công khai rsa Trình bày thuật toán định lý toán học dùng hệ mã công khai Xác định tính chất, đặc điểm nội dung hệ mã khóa Chương II: ứng dụng thuật để xây dựng xác thực chữ ký điện tử Giới thiệu trình bày khái niệm chữ kí điện tử, phân loại lược đồ chữ ký số, trình bày chi tiết có ví dụ minh họa.Giới thiệu Hàm Băm giải thuật dùng phổ biến MD5 SHA1 Chương III: xây dựng ứng dụng chữ ký điện tử Phân tích cách thực trình tạo khóa, mã hóa – giải mã ký – xác nhận chữ ký Viết mã xây dựng chương trình thử nghiệm PHẦN III: Kết luận Tóm tắt kết đạt đồng thời nêu hạn chế luận văn hướng phát triển theo hướng nghiên cứu luận văn tương lai Do thời gian làm luận văn hạn hẹp trình độ chuyên môn hạn chế nên không tránh khỏi nhiều thiếu sót Vì kính mong thầy cô, bạn đồng nghiệp đóng góp ý kiến xây dựng để luận văn hoàn thiện chặt chẽ đề tài đưa vào ứng dụng thực tế chuyên sâu 54 CHƯƠNG 3: XÂY DỰNG VÀ THỬ NGHIỆM ỨNG DỤNG CHỮ KÝ ĐIỆN TỬ Với hệ thống mật mã RSA trình bày chương chương 2, chương luận văn giới thiệu việc “Xây dựng thử nghiệm ứng dụng chữ ký điện tử” để thực trình: tạo khóa, mã hóa – giải mã ký – xác thực chữ ký tài liệu điện tử 3.1 Các yêu cầu thử nghiệm 3.1.1 Giới thiệu thử nghiệm Bảo mật vấn đề quan trọng giao dịch thông qua mạng máy tính Việc ứng dụng hệ mã khóa công khai, toán giữ bí mật giải mà ứng dụng rộng rãi, đảm bảo bốn nội dung là: tính bí mật, tính toàn vẹn, tính chứng thực tính trách nhiệm - Tính bí mật: Các nội dung thông tin không bị theo dõi chép thực thể không ủy thác - Tính toàn vẹn: Các nội dung thông tin không bị thay đổi thực thể không ủy thác - Sự chứng thực: Không trá bên hợp pháp trình trao đổi thông tin - Tính trách nhiệm: Người gửi thông tin thoái thác trách nhiệm nội dung thông tin gửi Với mong muốn xây dựng hệ thống bảo mật hiệu sử dụng hệ thống mật mã khóa công khai RSA ngành giáo dục Bộ gửi đề thi hay tài liệu bí mật đến sở giáo dục từ chúng gửi đến trường phổ thông, công tác quản lý hiệu nhiều 3.1.2 Các yêu cầu cần thiết - Tạo cặp khóa, khóa công khai khóa riêng hệ mã công khai RSA - Dùng khóa công khai để thực trình mã hóa thông điệp - Dùng khóa riêng để thực trình giải mã thông điệp 55 - Thực ký chữ ký điện tử lên thông điệp cách dùng khóa riêng người ký - Thực việc chứng thực chữ ký điện tử cách dùng khóa công khai người ký lên thông điệp 3.2 Hệ thống tạo lập chữ ký 3.2.1 Môi trường xây dựng - Sử dung thuật toán băm SHA1 để băm thông điệp trước thực ký chữ ký điện tử - Sử dụng hệ mật mã công khai RSA để thực sinh khóa cho hệ thống - Dùng ngôn ngữ lập trình C# với thư viện mã hóa Security.Cryptography để viết mã cho chương trình (mã nguồn chương trình trình bày phần phụ lục cuối luận văn) - Hệ điều hành Microsoft Window 10 - Nền (Platform): Net FrameWork 4.0 3.2.2 Quá trình xây dựng 3.2.2.1 Tạo khóa Là trình thực đầu tiên, hệ mã công khai nên người tham gia hệ thống phải tạo cặp khóa: khóa công khai khóa bí mật Khi chọn lệnh tạo khóa chương trình gọi phương thức btnTaokhoa, cặp khóa tạo ngẫu nhiên hiển thị lên hai textbox 3.2.2.2 Mã hóa Để thực mã hóa thông điệp người gửi A dùng khóa công khai người nhận B để mã hóa kết thu mã c, sau A gửi c cho B 3.2.2.3 Giải mã Khi B nhận mã từ A gửi đến B thực trình giải mã để khôi phục lại nội dung thông điệp cách dùng khóa riêng 3.2.2.4 Ký vào văn Để tạo chữ ký điện tử s người gửi A dùng khóa riêng để ký lên thông điệp M cần gửi đi, chương trình dùng thuật băm SHA1 để băm thông điệp M kết giá trị băm v, dùng thật toán RSA để mã hóa khóa riêng giá trị k Sau gắn giá trị băm v vào khóa riêng k tạo thành chữ ký điện tử A 56 3.2.2.5 Chứng thực chữ ký Sau B nhận chữ ký điện tử, B muốn xác thực xem chữ ký có phải A gửi đến không, B dùng khóa công khai A 3.3 Cài đặt thiết lập 3.3.1 Chạy thử demo ghi nhận kết đạt Để thực trình mã hóa – giải mã từ chương trình chính, hình 3.1, chọn menu Chương trình / Chọn mã hóa – giải mã chương trình mã hóa giải mã mở hình 3.2, sau thực hiện: Mã hóa (1) Kích chọn chương trình sinh ngẫu nhiên cặp khóa, khóa công khai khóa riêng (hoặc Load cặp khóa tạo trước đó), dùng khóa công khai để mã hóa (2) Chọn file cần mã hóa sau chọn để mã hóa tập tin Hình 3.1: Giao diện chương trình 57 Giải mã (1) Dùng khóa riêng để giải mã, (hoặc Load khóa riêng tạo với khóa công khai trước đó) (2) Chọn file cần giải mã sau chọn để giải mã tập tin Hình 3.2: Quá trình giải mã 3.3.2 Demo ký – xác thực chữ ký 3.3.2.1 Quá trình Ký Để cá thể A thực Ký chữ ký số lên tài liệu điện tử, sau gửi đến cá thể B A thực bước sau: (1) Chọn tài liệu cần ký 58 (2) Dùng khóa riêng A, sau kích chọn chương trình tạo chữ ký điện tử từ giá trị băm tài liệu cần ký chữ ký số, chương trình thông báo “Chữ ký gắn vào văn liệu” 3.3.2.2 Xác thực chữ ký Khi cá thể B nhận chữ ký từ A B thực bước sau để xác thực xem chữ ký có phải A không: (1) Chọn file chứa chữ ký mà A gửi đến (2) Dùng khóa công khai A, sau chọn chương trình kiểm ra: Nếu chữ ký điện tử A thông báo “Dữ liệu không bị thay đổi” (Hình 3.5), không chữ ký A có thay đổi khóa hay tài liệu thông báo “Khóa không hợp lệ, chữ ký không với khóa liệu bị thay đổi”, Hình 3.3: Quá trình mã hoá 59 3.3.3 Phân tích ưu nhược điểm ứng dụng thực tế 3.3.3.1 Quá trình tạo khóa Việc tìm số nguyên tố đủ lớn p q thường thực cách thử xác suất số ngẫu nhiên có độ lớn phù hợp (dùng phép kiểm tra nguyên tố cho phép loại bỏ hầu hết hợp số) p q cần chọn không gần để phòng trường hợp phân tích n phương pháp phân tích Fermat Ngoài ra, p-1 q-1 có thừa số nguyên tố nhỏ n dễ dàng bị phân tích p q cần thử để tránh khả Bên cạnh đó, cần tránh sử dụng phương pháp tìm số ngẫu nhiên mà kẻ công lợi dụng để biết thêm thông tin việc lựa chọn (cần dùng tạo số ngẫu nhiên tốt) Yêu cầu số lựa chọn cần đồng thời ngẫu nhiên không dự đoán Đây yêu cầu khác nhau: số lựa chọn ngẫu nhiên (không có kiểu mẫu kết quả) dự đoán dù phần an ninh thuật toán không đảm bảo Một ví dụ bảng số ngẫu nhiên tập đoàn Rand xuất vào năm 1950 thực ngẫu nhiên kẻ công có bảng Nếu kẻ công đoán nửa chữ số p hay q chúng dễ dàng tìm nửa lại (theo nghiên cứu Donald Coppersmith vào năm 1997) Một điểm cần nhấn mạnh khóa bí mật d phải đủ lớn Năm 1990, Wiener giá trị p nằm khoảng q 2q (khá phổ biến) d < n1/4/3 tìm d từ n e Mặc dù e có giá trị số mũ nhỏ không sử dụng tạo nên lỗ hổng (đã đề cập phần chuyển đổi văn rõ) Giá trị thường dùng 65537 xem đủ lớn không lớn ảnh hưởng tới việc thực hàm mũ 3.3.3.2 Tốc độ thực RSA RSA có tốc độ thực chậm đáng kể so với DES thuật toán mã hóa đối xứng khác Trên thực tế, Bob sử dụng thuật toán mã hóa đối xứng 60 để mã hóa văn cần gửi sử dụng RSA để mã hóa khóa để giải mã (thông thường khóa ngắn nhiều so với văn bản) Phương thức tạo vấn đề an ninh Một ví dụ cần phải tạo khóa đối xứng thật ngẫu nhiên Nếu không, kẻ công (thường ký hiệu Eve) bỏ qua RSA tập trung vào việc đoán khóa đối xứng 3.3.3.3 Phân phối khóa Cũng giống thuật toán mã hóa khác, cách thức phân phối khóa công khai yếu tố định độ an toàn RSA Quá trình phân phối khóa cần chống lại công đứng (man-in-the-middle attack) Giả sử Eve gửi cho Bob khóa khiến Bob tin khóa (công khai) Alice Đồng thời Eve có khả đọc thông tin trao đổi Bob Alice Khi đó, Eve gửi cho Bob khóa công khai (mà Bob nghĩ khóa Alice) Sau đó, Eve đọc tất văn mã hóa Bob gửi, giải mã với khóa bí mật mình, giữ copy đồng thời mã hóa khóa công khai Alice gửi cho Alice Về nguyên tắc, Bob Alice không phát can thiệp người thứ ba Các phương pháp chống lại dạng công thường dựa chứng thực khóa công khai (digital certificate) thành phần hạ tầng khóa công khai (public key infrastructure - PKI) Kết luận chƣơng Tác giả xây dựng chương trình thử nghiệm ứng dụng hệ mật mã RSA thực công việc: mã hóa – giải mã, ký – xác thực chữ ký Qua trình thử nghiệm, tác giả nêu lên ưu nhược điểm chương trình thử nghiệm, tác giả đánh giá thử nghiêm áp dụng vào thực tiễn mức yêu cầu đơn giản mã hóa file văn bản, tạo chữ ký lên file văn 61 PHẦN III: KẾT LUẬN Luận văn nghiên cứu hệ mật mã khóa công khai, hệ mã RSA tập trung tìm hiểu, từ xây dựng chương trình “Hệ mã RSA – Ứng dụng chữ ký điện tử” để tạo chữ ký điện tử, xác định chủ nhân tài liệu điện tử đảm bảo toàn vẹn nội dung tài liệu Luận văn đạt đƣợc số kết quả: Tìm hiểu mật mã, mật mã khóa bí mật hệ mật mã khóa công khai Trình bày chi tiết thuật toán mã hoá, giải mã hệ mật mã khoá công khai RSA số phương pháp công hệ mã RSA Nghiên cứu hàm băm trình bày hai thuật toán băm dùng phổ biến MD5 SHA1 Phân loại lược đồ chữ ký số, trình bày chi tiết nêu ví dụ minh họa lược đồ chữ ký như: RSA, ELGamal, DSA Xây dựng chương trình thử nghiệm “Hệ mã RSA – ứng dụng chữ ký điện tử” làm rõ trình như: tạo khóa, mã hóa – giải mã, ký – xác thực chữ ký Chương trình ứng dụng thực tốt thuật toán RSA dùng lại ứng dụng máy riêng lẻ chưa ứng dụng hệ thống mạng Giao diện thiết kế đơn giản, chương trình sinh khóa ngẫu nhiên dựa hệ mã RSA (1024 bit), mô hình nhỏ, tính an toàn hạn chế Mô hình tìm hiểu nhỏ, hệ thống chưa cập nhật theo kịp với xu hướng Hƣớng phát triển Với số kết đạt trên, tác giả tiếp tục nghiên cứu để xây dựng cổng thông tin để trao đổi thông tin Sở giáo dục đơn vị trường phổ thông có ứng dụng hệ mật mã công khai RSA mạng ứng dụng demo vào công việc tại, thử nghiệm mô hình giao tiếp nhỏ để ghi nhận thu thập thêm thông tin đánh giá chi tiết 62 MÃ NGUỒN CHƯƠNG TRÌNH THỬ NGHIỆM private void btnTaokhoa_Click(object sender, EventArgs e) { rsaRecipientCompleteKeyString = rsaRecipient.ToXmlString(true); rsaRecipientPublicKeyString = rsaRecipient.ToXmlString(false); txtprivate.Text = rsaRecipientCompleteKeyString; txtpublic.Text = rsaRecipientPublicKeyString; rsaRecipient.Clear(); } private void btnmahoa_Click(object sender, EventArgs e) { string secret = txtnoidung.Text; byte[] btSecret; byte[] btEncryptedSecret; UTF8Encoding AE = new UTF8Encoding(); btSecret = Encoding.UTF8.GetBytes(secret); //btSecret = Encoding.ASCII.GetBytes(secret); btEncryptedSecret = cRSAWrap.EncryptBuffer(txtpublic.Text, btSecret); string s = ""; for (int i = 0; i < btEncryptedSecret.Length; i++) { s += btEncryptedSecret[i].ToString() + " "; } txtbanma.Text = s.Trim(); } private void btngiaima_Click(object sender, EventArgs e) { try 63 { string secret = txtbanma.Text.Trim(); int intLength = secret.Length; byte[] btSecret = new byte[256]; byte[] btDecryptedSecret; UTF8Encoding AE = new UTF8Encoding(); int i = 0; foreach (string word in secret.Split(' ')) { btSecret[i++] = Convert.ToByte(word); } btDecryptedSecret = cRSAWrap.DecryptBuffer(txtprivate.Text , btSecret); string s = ""; for (i = 0; i < btDecryptedSecret.Length; i++) s += ((char)btDecryptedSecret[i]).ToString(); txtgiaima.Text = s; } catch (Exception ex) { MessageBox.Show("Quá trình giải mã không thực được\nCó thay đổi tài liệu khóa", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Hand); } } private void btnsign_Click(object sender, EventArgs e) { this.Refresh(); if (txtduongdan1.Text != String.Empty) { 64 // Đối với người gửi byte[] btSentHash; byte[] btEncryptedSentHash; string payload; payload = txtnoidung1.Text; byte[] btpayload = Encoding.ASCII.GetBytes(payload); // Tạo giá trị băm từ thông điệp liệu ban đầu SHA1Managed SHhash1 = new SHA1Managed(); btSentHash = SHhash1.ComputeHash(btpayload, 0, btpayload.Length); txtgtbam.AppendText(System.Convert.ToBase64String(btSentHash)); btEncryptedSentHash = cRSAWrap.EncryptBuffer(txtpublic1.Text, btSentHash); string s = ""; for (int i = 0; i < btEncryptedSentHash.Length; i++) { s += btEncryptedSentHash[i].ToString() + " "; } txtchuky.AppendText(s); txtnoidung1.AppendText("#" + s); DialogResult a = MessageBox.Show("Bạn có muốn lưu lại File không?", " Thông báo ", MessageBoxButtons.YesNo); if (Convert.ToString(a) == "Yes") { saveFile1(); } } } private void btnver_Click(object sender, EventArgs e) { 65 int j = 0; try { rsaRecipientCompleteKeyString = txtprivate1.Text; rsaRecipientPublicKeyString = txtpublic1.Text; txtnoidung1.Text = txtnoidung1.Text.TrimEnd(' '); bool bCorrupt = false; byte[] btHash2; byte[] btDecryptedHash; string payload; payload = txtnoidung1.Text; string[] arr = txtnoidung1.Text.Split('#'); MessageBox.Show("Nội dung văn :" + arr[0]); MessageBox.Show("Chữ ký :" + arr[1]); byte[] btpayload = Encoding.ASCII.GetBytes(arr[0]); SHA1Managed SHhash2 = new SHA1Managed(); btHash2 = SHhash2.ComputeHash(btpayload); int intLength = arr[1].Length; byte[] result = new byte[128]; arr[1].Trim(); int i = 0; int dem = 0; string[] tam = arr[1].Split(' '); for (j = 0; j < tam.Length; j++) { result[j] = Convert.ToByte(tam[j]); } btDecryptedHash = cRSAWrap.DecryptBuffer(txtprivate1.Text, result); 66 // So sánh hai giá trị băm btHash2 btDecryptedHash để xác thực thông điệp liệu if (Convert.ToBase64String(btHash2) != Convert.ToBase64String(btDecryptedHash)) { bCorrupt = true; } if (bCorrupt == true) { MessageBox.Show("Dữ liệu bị thay đổi"); } else { MessageBox.Show("Dữ liệu không bị thay đổi"); } } catch (Exception er) { MessageBox.Show("Khóa không hợp lệ, chữ ký không với khóa"); } } 67 DANH MỤC TÀI LIỆU THAM KHẢO Tiếng Việt [1] Nguyễn Đình Thúc, Bùi Doãn Khanh “Giáo trình mã hóa thông tin – Lý thuyết ứng dụng”, Nhà xuất lao động xã hội, 2011 [2] TS Trần Văn Dũng “Giáo trình an toàn bảo mật thông tin”, Đại học giao thông vận tải, 2007 [3] Nguyễn Đình Thúc, Bùi Doãn Khanh “Mã hóa – Mật mã ” Nhà xuất lao động xã hội, 2006 [4] PGS TS Thái Hồng Nhị, TS Phạm Minh Việt, “An toàn thông tin – Mạng máy tính, truyền tin số truyền liệu”, Nhà xuất Khoa học Kỹ thuật, 2004 [5] TS Dương Anh Đức, Trần Minh Triết, “Giáo trình Mã hóa Ứng dụng”, Đại học quốc gia TP.HCM, 2009 [6] Nguyễn Ngọc Bình Phương, Thái Thanh Phong, “Các giải pháp lập trình C#”, Nhà xuất giao thông vận tải, 2011 [7] Dương Quang Thiện, “C# NET Framework ”, toàn tập Nhà xuất tổng hợp TP.HCM, 2005 Tiếng Anh [8] WHITFIELD DIFFIE AND MARTIN E HELLMAN, “New Directions in Cryptography”, Invited Paper, November 1976 [9] A.MENEZES, P.VAN OORSHOOT, S.VANSTONE, “Handbook of Applied Cryptography”, CRC Press, 2007 http://www.cacr.math.uwaterloo.ca/hac/ [10] Rolf Oppliger “Contemporary Cryptography”, ARTECH HOUSE, 2012 [12] Neal R Wagner, “The Laws of Cryptography:Rabin's Version of RSA”, 2002 [11] Andreas V Meier, “The ElGamal Cryptosystem”, June 8, 2005 68 http://www14.in.tum.de/konferenzen/Jass05/ [13] Song Y Yan, “Cryptanalytic Attacks on RSA” Massachusetts Institute of Technology, USA, 2007 [14] Dan Boneh, “Twenty Years of Attacks on the RSA Cryptosystem”, Report, Stanford University, 2007 [15] R.L Rivest, A Shamir, and L Adleman, “A Method for Obtaining Digital Signatures and Public-Key Cryptosystems” http://people.csail.mit.edu/rivest/Rsapaper.pdf [16] Raymond G Kammer, “Federal Information Processing Standards Publication”, U.S DEPARTMENT OF COMMERCE, 2000 January 27 [17] ALAN G.KONHEIM, DAVID KAHN “Computer Security and Cryptography”, Long Island, New York, 2006 [18] Steve Burnett and Stephen Paine, “RSA Security’s Official Guide to Cryptography”, Copyright © 2001 by The McGraw-Hill Companies [19] Arto Saloma, “Public-Key Cryptography”, Springer Turku, September 1996 [20] JOHN TALBOT, DOMINIC WELSH, “Complexity and Cryptography”, Cambridge University Press, 2006 [21] Adi Shamir and EranTrome, “ Factoring large Numbers with the twirl Device”, Report, The Wiezman Institute Relation Locator, Isreal, 2012 ... đích nghiên cứu Nghiên cứu thuật toán hệ mật mã khóa công khai RSA ứng dụng thực nghiệm tạo chữ ký điện tử để ký xác thực chữ ký Phƣơng pháp nghiên cứu Nghiên cứu tài liệu mã hóa, hệ mật mã tác giả... đưa vào ứng dụng thực tế chuyên sâu 3 PHẦN II: NỘI DUNG CHƯƠNG 1: GIỚI THIỆU MẬT MÃ VÀ HỆ MÃ HÓA CÔNG KHAI RSA 1.1 Giới thiệu mật mã hệ mật mã 1.1.1 Khái quát mật mã hệ thống mã hóa Mật mã (Cryptogaraphy)... nghiên cứu trình bày hệ mã hóa sử dụng khóa công khai RSA 19 CHƯƠNG 2: ỨNG DỤNG THUẬT TOÁN TRONG HỆ MẬT MÃ RSA ĐỂ XÂY DỰNG VÀ XÁC THỰC CHỮ KÝ ĐIỆN TỬ Chương trình bày khái niệm chữ ký điện tử