LỜI CAM ĐOAN Tơi cam đoan cơng trình nghiên cứu riêng tơi Nghiên cứu thuật tố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 h LỜI CẢM ƠN Trước tiên, tơi xin bày tỏ lịng biết ơn đến q thầy 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 q báu, dìu dắt, giúp đỡ tơi hồn thành nhiệm vụ khóa học luận văn tốt nghiệp Đặc biệt, tơi 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 đỡ tơi suốt q trình học tập hướng dẫn tận tình, cho tơi ý kiến đóng góp q báu để hoồ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 hồn thành khóa học h 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ã h 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 tốn, hàm 27 2.2.1 Thuật tố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 tốn tính a-1 mod n 28 2.2.4 Thuật toán Rabin-Miller 29 2.2.5 Thuật tốn tính Xp mod n 30 2.2.6 Định lý Ferma 31 2.2.7 Định lý Euler 31 h 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 h 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 h 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 tố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 h DANH MỤC CÁC HÌNH VẼ Hình 1.1 Mơ hình hệ mã khố bí mật Hình 1.2: q 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 qt 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 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: Q trình mã hố 58 PHẦN I: MỞ ĐẦU Lý chọn đề tài Bảo mật thơng tin an tồ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, u cầu an tồn thơng tin ngày có vai trị vơ quan trọng Để đáp ứng u cầu trao đổi an tồ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 h 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 tố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ả ngồi 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ử h Phân tích cách thực q 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 cịn hạn hẹp trình độ chun mơn cị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 q 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, tốn giữ bí mật khơng 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 tồ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 h thực thể khơng ủy thác - Tính tồ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 q trình trao đổi thơng tin - Tính trách nhiệm: Người gửi thơng tin khơng thể thố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 q trình mã hóa thơng điệp - Dùng khóa riêng để thực q 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 h 3.2.2.1 Tạo khóa Là q 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 q 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 tố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 q 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 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 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), cịn 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 Hình 3.3: Quá trình mã hố 59 3.3.3 Phân tích ưu nhược điểm ứng dụng thực tế 3.3.3.1 Q 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 q gần để phịng trường hợp phân tích n phương pháp phân tích Fermat Ngồi ra, p-1 q-1 có thừa số ngun 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ự đốn Đâ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ự đốn dù phần an ninh thuật tốn khơng đảm bảo Một ví h dụ bảng số ngẫu nhiên tập đồ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 đốn nửa chữ số p hay q chúng dễ dàng tìm nửa cịn 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 cịn 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 tốn mã hóa đối xứng khác Trên thực tế, Bob sử dụng thuật tố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 đốn khóa đối xứng 3.3.3.3 Phân phối khóa Cũng giống thuật tố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 Q 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 h 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 tốn mã hố, giải mã hệ mật mã khố 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õ q trình như: tạo khóa, mã hóa – giải mã, ký – xác h 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ế cịn đơn giản, chương trình sinh khóa ngẫu nhiên dựa hệ mã RSA (1024 bit), mô hình cịn nhỏ, tính an tồn cịn hạn chế Mơ hình tìm hiểu cịn 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; h 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++) h s += ((char)btDecryptedSecret[i]).ToString(); txtgiaima.Text = s; } catch (Exception ex) { MessageBox.Show("Q 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++) h { 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]); h 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 h { 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 Dỗ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 tồ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 Dỗ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 tồ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”, h Đạ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 h [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