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Ả lu an n va p ie gh tn to BÙI VĂN BÌNH d oa nl w nf va an lu z at nh oi lm ul z m co l gm @ an Lu n va ac th si LỜI CẢM ƠN Trước tiên, 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 quý 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, 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 tơi ý kiến đóng lu an góp q báu để hoồn thành tốt luận văn n va tn to Xin gửi lời cảm ơn chân thành đến bạn lớp Cao học Hệ Thống gh Thơng Tin Khóa 2015 đợt Xin cảm ơn bạn bè, gia đình, đồng nghiệp giúp đỡ p ie tạo điều kiện cho tơi hồn thành khóa học d oa nl w Xin trân trọng cảm ơn! nf va an lu Tác giả z at nh oi lm ul BÙI VĂN BÌNH z m co l gm @ an Lu n va ac th si 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 lu Mục đích nghiên cứu an Phƣơng pháp nghiên cứu va Nội dung luận văn n tn to PHẦN II: NỘI DUNG .3 ie gh CHƢƠNG 1: GIỚI THIỆU MẬT MÃ VÀ HỆ MÃ HÓA CÔNG KHAI RSA p 1.1 Giới thiệu mật mã hệ mật mã Phân tích ưu nhược điểm hệ mật mã d lu Hệ mã hóa cơng khai RSA an 1.2 oa 1.1.3 Phân loại hệ mã hóa nl 1.1.2 Khái quát mật mã hệ thống mã hóa w 1.1.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 nf va 1.2.1 z at nh oi lm ul z @ gm Kết luận chƣơng 18 l CHƢƠNG 2: ỨNG DỤNG THUẬT TOÁN TRONG HỆ MẬT MÃ RSA ĐỂ m co XÂY DỰNG VÀ XÁC THỰC CHỮ KÝ ĐIỆN TỬ 19 an Lu 2.1 Các khái niệm 19 2.1.1 Chữ ký điện tử 19 n va ac th si 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 lu 2.2.3 Thuật tốn tính a-1 mod n 28 an va 2.2.4 Thuật toán Rabin-Miller 29 n 2.2.5 Thuật tốn tính Xp mod n 30 gh tn to 2.2.6 Định lý Ferma 31 ie 2.2.7 Định lý Euler 31 p 2.2.8 Hàm Băm 31 nl w 2.2.9 Hàm băm MD5 32 d oa 2.2.10 Hàm băm SHA1 37 an lu 2.3 Lƣợc đồ chữ ký điện tử RSA 40 nf va 2.3.1 Định nghĩa lược đồ chữ ký 40 2.3.2 Phân loại lược đồ chữ ký số 40 lm ul 2.3.3 Lược đồ chữ ký RSA 44 z at nh oi 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 z gm @ 2.4.2 Xác thực chữ ký điện tử 52 Kết luận chƣơng 53 l co CHƢƠNG 3: XÂY DỰNG VÀ THỬ NGHIỆM ỨNG DỤNG CHỮ KÝ ĐIỆN m TỬ 54 an Lu 3.1 Các yêu cầu thử nghiệm 54 n va ac th si 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 lu Kết luận chƣơng 60 an n va PHẦN III: KẾT LUẬN 61 DANH MỤC TÀI LIỆU THAM KHẢO 67 p ie gh tn to MÃ NGUỒN CHƢƠNG TRÌNH THỬ NGHIỆM 62 d oa nl w nf va an lu z at nh oi lm ul z m co l gm @ an Lu n va ac th si BẢNG CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ Các từ viết tắt lu 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 an Thuật tốn tạo dấu vết thơng thiết kế Ronald Rivest va điệp n năm 1991) tn to MIT ie gh p PKI Học viện công nghệ Technology Massachusets Public Key Infrastructure Cơ sở hạ tầng khố cơng khai SHA thiết kế National Secure Hash Algorithm w SHA Massachusets Institute of d oa nl Security Agency (NSA) nf va an lu Các ký hiệu Ciphertext D Decryption Bản mã Hàm giải mã z at nh oi Khóa riêng CA Dauth E lm ul C Encryption Hàm mã hóa Khóa cơng khai CA z Eauth @ 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 m co l gm K an Lu n va ac th si 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 lu an n va p ie gh tn to d oa nl w nf va an lu z at nh oi lm ul z m co l gm @ an Lu n va ac th si 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 lu an Hình 2.6: Mơ hình tổng qt lược đồ chữ ký có kèm rõ 42 n va Hình 2.7: Lược đồ chữ ký số tự khôi phục rõ 43 Hình 2.9: Sơ đồ trình ký văn điện tử 51 gh tn to Hình 2.8: Lược đồ chữ ký số kèm theo rõ thu 44 ie Hình 2.10: Sơ đồ trình xác thực chữ ký điện tử 52 p Hình 3.1: Giao diện chương trình 56 nl w Hình 3.2: Quá trình giải mã 57 d oa Hình 3.3: Q trình mã hố 58 nf va an lu z at nh oi lm ul z m co l gm @ an Lu n va ac th si 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ó q 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 lu Với phát triển khơng ngừng phủ điện tử với trao đổi thông an tin, yêu cầu an tồn thơng tin ngày có vai trị vô quan trọng Để đáp ứng va n yêu cầu trao đổi an tồn thơng tin giải pháp “mã hóa thơng tin” xem tn to phương án tốt Vì vậy, tổ chức, quốc gia có chế mã hóa gh riêng để bảo mật hệ thống thơng tin Cơ chế mã hóa thơng dụng p ie hệ mật mã RSA w Trong mật mã vấn đề bảo mật đôi với vấn đề xác thực nguồn gốc oa nl 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 d 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ó lu an mã khóa phù hợp điều tất yếu nf va Với lý nêu trên, chọn đề tài “Nghiên cứu hệ mật mã RSA lm ul Ứng dụng Chữ ký điện tử” làm nội dung nghiên cứu cho luận văn, nhằm khai đảm bảo bí mật Mục đích nghiên cứu z at nh oi trang bị kiến thức cần thiết để xây dựng hệ thống trao đổi thông tin công z Nghiên cứu thuật tốn hệ mật mã khóa cơng khai RSA ứng @ co l Phƣơng pháp nghiên cứu gm dụng thực nghiệm tạo chữ ký điện tử để ký xác thực chữ ký m Nghiên cứu tài liệu mã hóa, hệ mật mã tác giả an Lu nước, báo, thơng tin mạng Internet có trình bày chọn lọc n va ac th si 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 tốn định lý tố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 lu an Chương II: ứng dụng thuật để xây dựng xác thực chữ ký điện tử n va 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ý tn to số, trình bày chi tiết có ví dụ minh họa.Giới thiệu Hàm Băm giải gh thuật dùng phổ biến MD5 SHA1 p ie Chương III: xây dựng ứng dụng chữ ký điện tử w Phân tích cách thực trình tạo khóa, mã hóa – giải mã ký – oa nl xác nhận chữ ký Viết mã xây dựng chương trình thử nghiệm d PHẦN III: Kết luận lu an Tóm tắt kết đạt đồng thời nêu hạn chế luận văn lm ul lai nf va hướng phát triển theo hướng nghiên cứu luận văn tương z at nh oi 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 hồn thiện chặt chẽ đề tài đưa vào ứng dụng z thực tế chuyên sâu m co l gm @ an Lu n va ac th si 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 lu 3.1.1 Giới thiệu thử nghiệm an Bảo mật vấn đề quan trọng giao dịch thơng qua mạng máy tính va n Việc ứng dụng hệ mã khóa cơng khai, tốn giữ bí mật khơng giải tn to mà cịn ứng dụng rộng rãi, đảm bảo bốn nội dung là: tính bí - Tính bí mật: Các nội dung thông tin không bị theo dõi chép p ie gh mật, tính tồn vẹn, tính chứng thực tính trách nhiệm thực thể khơng ủy thác nl w - Tính tồn vẹn: Các nội dung thông tin không bị thay đổi thực thể d oa không ủy thác trình trao đổi thơng tin nf va an lu - Sự chứng thực: Khơng trá bên hợp pháp - Tính trách nhiệm: Người gửi thơng tin khơng thể thối thác trách nhiệm lm ul nội dung thông tin gửi z at nh oi 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 gm @ 3.1.2 Các yêu cầu cần thiết z tác quản lý hiệu nhiều l - Tạo cặp khóa, khóa cơng khai khóa riêng hệ mã cơng khai RSA m co - Dùng khóa cơng khai để thực q trình mã hóa thơng điệp an Lu - Dùng khóa riêng để thực trình giải mã thơng điệp n va ac th si 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 tố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 lu - Dùng ngơn ngữ lập trình C# với thư viện mã hóa Security.Cryptography để an viết mã cho chương trình (mã nguồn chương trình trình bày phần n va phụ lục cuối luận văn) tn to - Hệ điều hành Microsoft Window 10 3.2.2 Quá trình xây dựng p ie gh - Nền (Platform): Net FrameWork 4.0 3.2.2.1 Tạo khóa nl w Là trình thực đầu tiên, hệ mã công khai nên người tham d oa gia hệ thống phải tạo cặp khóa: khóa cơng khai khóa bí mật an lu 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 nf va 3.2.2.2 Mã hóa lm ul Để thực mã hóa thơng điệp người gửi A dùng khóa cơng khai 3.2.2.3 Giải mã z at nh oi người nhận B để mã hóa kết thu mã c, sau A gửi c cho B Khi B nhận mã từ A gửi đến B thực trình giải mã để z khơi phục lại nội dung thơng điệp cách dùng khóa riêng gm @ 3.2.2.4 Ký vào văn co l Để tạo chữ ký điện tử s người gửi A dùng khóa riêng để ký lên m 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 an Lu đ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 n va ac th si 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 lu (1) Kích chọn chương trình sinh ngẫu nhiên cặp khóa, an va khóa cơng khai khóa riêng (hoặc Load cặp khóa tạo trước đó), n dùng khóa cơng khai để mã hóa to để mã hóa tập tin p ie gh tn (2) Chọn file cần mã hóa sau chọn d oa nl w nf va an lu z at nh oi lm ul z m co l gm @ an Lu Hình 3.1: Giao diện chương trình n va ac th si 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 lu an n va p ie gh tn to d oa nl w nf va an lu lm ul Hình 3.2: Quá trình giải mã z at nh oi 3.3.2 Demo ký – xác thực chữ ký 3.3.2.1 Quá trình Ký z Để cá thể A thực Ký chữ ký số lên tài liệu điện tử, sau gửi đến cá thể m co l gm (1) Chọn tài liệu cần ký @ B A thực bước sau: an Lu n va ac th si 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 lu kiểm ra: Nếu chữ ký điện tử A thơng báo “Dữ liệu khơng bị thay an đổi” (Hình 3.5), cịn khơng chữ ký A có thay đổi va n khóa hay tài liệu thơng báo “Khóa khơng hợp lệ, chữ ký khơng với p ie gh tn to khóa liệu bị thay đổi”, d oa nl w nf va an lu z at nh oi lm ul z m co l gm @ Hình 3.3: Q trình mã hố an Lu n va ac th si 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ẻ lu an cơng lợi dụng để biết thêm thông tin việc lựa chọn (cần dùng n va 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 tn to nhiên khơng dự đố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ự đốn gh p ie dù phần an ninh thuật tốn khơng đảm bảo Một ví dụ bảng số ngẫu nhiên tập đồn Rand xuất vào năm 1950 có nl w thể thực ngẫu nhiên kẻ cơng có bảng Nếu kẻ cơng d oa đoán nửa chữ số p hay q chúng dễ dàng tìm nửa lại an lu (theo nghiên cứu Donald Coppersmith vào năm 1997) nf va 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 < lm ul n1/4/3 tìm d từ n e z at nh oi 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 z rõ) Giá trị thường dùng 65537 xem đủ lớn l 3.3.3.2 Tốc độ thực RSA gm @ không lớn ảnh hưởng tới việc thực hàm mũ m co 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 an Lu n va ac th si 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 Quá trình phân phối khóa cần chống lại cơng đứng (man-in-the-middle attack) lu an Giả sử Eve gửi cho Bob khóa khiến Bob tin khóa n va (cơng khai) Alice Đồng thời Eve có khả đọc thơng tin trao đổi nghĩ khóa Alice) Sau đó, Eve đọc tất văn mã hóa Bob gửi, gh tn to Bob Alice Khi đó, Eve gửi cho Bob khóa cơng khai (mà Bob p ie 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 nl w can thiệp người thứ ba Các phương pháp chống lại dạng công d oa thường dựa chứng thực khóa cơng khai (digital certificate) nf va Kết luận chƣơng an lu thành phần hạ tầng khóa cơng khai (public key infrastructure - PKI) Tác giả xây dựng chương trình thử nghiệm ứng dụng hệ mật mã lm ul RSA thực cơng việc: mã hóa – giải mã, ký – xác thực chữ ký Qua z at nh oi 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 z đơn giản mã hóa file văn bản, tạo chữ ký lên file văn m co l gm @ an Lu n va ac th si 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 lu RSA số phương pháp công hệ mã RSA an Nghiên cứu hàm băm trình bày hai thuật tốn băm dùng phổ biến va MD5 SHA1 Phân loại lược đồ chữ ký số, trình bày chi tiết nêu ví n gh tn to 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ý p ie điện tử” làm rõ q trình như: tạo khóa, mã hóa – giải mã, ký – xác w thực chữ ký oa nl Chương trình ứng dụng thực tốt thuật toán RSA dùng lại d ứng dụng máy riêng lẻ chưa ứng dụng hệ thống mạng lu an Giao diện thiết kế cịn đơn giản, chương trình sinh khóa ngẫu nhiên dựa nf va hệ mã RSA (1024 bit), mô hình cịn nhỏ, tính an tồn cịn hạn chế hướng z at nh oi Hƣớng phát triển lm ul 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 Với số kết đạt trên, tác giả tiếp tục nghiên cứu để xây z dựng cổng thông tin để trao đổi thông tin Sở giáo dục đơn vị @ gm trường phổ thơng có ứng dụng hệ mật mã công khai RSA mạng l ứng dụng demo vào công việc tại, thử nghiệm mơ hình giao tiếp m co nhỏ để ghi nhận thu thập thêm thông tin đánh giá chi tiết an Lu n va ac th si 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; lu rsaRecipient.Clear(); an } va private void btnmahoa_Click(object sender, EventArgs e) n tn to { ie gh string secret = txtnoidung.Text; p byte[] btSecret; byte[] btEncryptedSecret; w oa nl UTF8Encoding AE = new UTF8Encoding(); d btSecret = Encoding.UTF8.GetBytes(secret); lu an //btSecret = Encoding.ASCII.GetBytes(secret); lm ul string s = ""; nf va btEncryptedSecret = cRSAWrap.EncryptBuffer(txtpublic.Text, btSecret); for (int i = 0; i < btEncryptedSecret.Length; i++) z at nh oi { s += btEncryptedSecret[i].ToString() + " "; z } co l gm } @ txtbanma.Text = s.Trim(); private void btngiaima_Click(object sender, EventArgs e) an Lu try m { n va ac th si 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(' ')) { lu an btSecret[i++] = Convert.ToByte(word); n va } to btDecryptedSecret = cRSAWrap.DecryptBuffer(txtprivate.Text , btSecret); gh tn string s = ""; p ie for (i = 0; i < btDecryptedSecret.Length; i++) s += ((char)btDecryptedSecret[i]).ToString(); nl w txtgiaima.Text = s; d oa } { nf va an lu catch (Exception ex) MessageBox.Show("Q trình giải mã khơng thực được\nCó thay lm ul đổi tài liệu khóa", "Thơng báo", MessageBoxButtons.OK, } } z at nh oi MessageBoxIcon.Hand); z { an Lu { m if (txtduongdan1.Text != String.Empty) co this.Refresh(); l gm @ private void btnsign_Click(object sender, EventArgs e) n va ac th si 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); lu an txtgtbam.AppendText(System.Convert.ToBase64String(btSentHash)); n va btEncryptedSentHash = cRSAWrap.EncryptBuffer(txtpublic1.Text, string s = ""; gh tn to btSentHash); p ie for (int i = 0; i < btEncryptedSentHash.Length; i++) { d oa } nl w s += btEncryptedSentHash[i].ToString() + " "; an lu txtchuky.AppendText(s); nf va txtnoidung1.AppendText("#" + s); DialogResult a = MessageBox.Show("Bạn có muốn lưu lại File khơng?", lm ul " Thông báo ", MessageBoxButtons.YesNo); { saveFile1(); z at nh oi if (Convert.ToString(a) == "Yes") z an Lu { m private void btnver_Click(object sender, EventArgs e) co l } gm } @ } n va ac th si 65 int j = 0; try { rsaRecipientCompleteKeyString = txtprivate1.Text; rsaRecipientPublicKeyString = txtpublic1.Text; txtnoidung1.Text = txtnoidung1.Text.TrimEnd(' '); bool bCorrupt = false; byte[] btHash2; byte[] btDecryptedHash; lu an string payload; n va payload = txtnoidung1.Text; to string[] arr = txtnoidung1.Text.Split('#'); gh tn MessageBox.Show("Nội dung văn :" + arr[0]); p ie MessageBox.Show("Chữ ký :" + arr[1]); byte[] btpayload = Encoding.ASCII.GetBytes(arr[0]); nl w SHA1Managed SHhash2 = new SHA1Managed(); d oa btHash2 = SHhash2.ComputeHash(btpayload); an lu int intLength = arr[1].Length; arr[1].Trim(); z at nh oi int dem = 0; lm ul int i = 0; nf va byte[] result = new byte[128]; string[] tam = arr[1].Split(' '); for (j = 0; j < tam.Length; j++) z result[j] = Convert.ToByte(tam[j]); m co l } gm @ { an Lu btDecryptedHash = cRSAWrap.DecryptBuffer(txtprivate1.Text, result); n va ac th si 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; } lu an if (bCorrupt == true) va { n MessageBox.Show("Dữ liệu bị thay đổi"); to gh tn } p ie else MessageBox.Show("Dữ liệu không bị thay đổi"); nl w { an lu } d oa } { nf va catch (Exception er) lm ul MessageBox.Show("Khóa khơng hợp lệ, chữ ký khơng với khóa"); } z at nh oi } z m co l gm @ an Lu n va ac th si 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 lu động xã hội, 2006 an va [4] PGS TS Thái Hồng Nhị, TS Phạm Minh Việt, “An tồn thơng tin – Mạng n máy tính, truyền tin số truyền liệu”, Nhà xuất Khoa học Kỹ to gh tn thuật, 2004 [5] TS Dương Anh Đức, Trần Minh Triết, “Giáo trình Mã hóa Ứng dụng”, ie p Đại học quốc gia TP.HCM, 2009 nl w [6] Nguyễn Ngọc Bình Phương, Thái Thanh Phong, “Các giải pháp lập trình C#”, oa Nhà xuất giao thông vận tải, 2011 d [7] Dương Quang Thiện, “C# NET Framework ”, toàn tập Nhà xuất tổng an lu hợp TP.HCM, 2005 nf va lm ul Tiếng Anh z at nh oi [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 l gm @ http://www.cacr.math.uwaterloo.ca/hac/ z Cryptography”, CRC Press, 2007 co [10] Rolf Oppliger “Contemporary Cryptography”, ARTECH HOUSE, 2012 m [12] Neal R Wagner, “The Laws of Cryptography:Rabin's Version of RSA”, an Lu 2002 [11] Andreas V Meier, “The ElGamal Cryptosystem”, June 8, 2005 n va ac th si 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 lu Publication”, U.S DEPARTMENT OF COMMERCE, 2000 January 27 an n va [17] ALAN G.KONHEIM, DAVID KAHN “Computer Security and Cryptography”, [18] Steve Burnett and Stephen Paine, “RSA Security’s Official Guide to Cryptography”, Copyright © 2001 by The McGraw-Hill Companies ie gh tn to Long Island, New York, 2006 p [19] Arto Saloma, “Public-Key Cryptography”, Springer Turku, September 1996 nl w [20] JOHN TALBOT, DOMINIC WELSH, “Complexity and Cryptography”, d oa Cambridge University Press, 2006 an lu [21] Adi Shamir and EranTrome, “ Factoring large Numbers with the twirl Device”, nf va Report, The Wiezman Institute Relation Locator, Isreal, 2012 z at nh oi lm ul z m co l gm @ an Lu n va ac th si