Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 65 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
65
Dung lượng
1,09 MB
Nội dung
ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CNTT & TT THÁI NGUYÊN Trƣơng Mạnh Cƣờng LUẬN VĂN THẠC SỸ KHOA HỌC MÁY TÍNH NGHIÊN CỨU CÁC THUẬT TỐN MÃ HĨA KHĨA CƠNG KHAI VÀ ỨNG DỤNG TRONG CHỮ KÝ ĐIỆN TỬ Chuyên ngành: KHOA HỌC MÁY TÍNH Mã số: 60 48 01 THÁI NGUYÊN - 2014 Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CNTT & TT THÁI NGUYÊN Trƣơng Mạnh Cƣờng LUẬN VĂN THẠC SỸ KHOA HỌC MÁY TÍNH NGHIÊN CỨU CÁC THUẬT TỐN MÃ HĨA KHĨA CƠNG KHAI VÀ ỨNG DỤNG TRONG CHỮ KÝ ĐIỆN TỬ GIÁO VIÊN HƢỚNG DẪN PGS.TS BÙI THẾ HỒNG THÁI NGUYÊN - 2014 Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ MỤC LỤC DANH MỤC CÁC CHỮ TIẾNG ANH VIẾT TẮT DANH MỤC CÁC HÌNH MỞ ĐẦU Lý nghiên cứu đề tài CHƢƠNG TỔNG QUAN VỀ CÁC THUẬT TỐN MÃ HĨA KHĨA CƠNG KHAI 1.1 Khái niệm mã hóa khóa cơng khai 1.1.1 Mật mã hóa khóa đối xứng 1.1.2 Mật mã hóa khóa cơng khai 1.2 Các thuật tốn mật mã hóa khóa cơng khai 13 1.2.1 Thuật toán RSA 13 1.2.2 Trao đổi thỏa thuận khóa Diffie-Hellman 17 1.2.3 Hệ mã ElGammal 19 1.3 So sánh ƣu nhƣợc điểm thuật toán 21 1.3.1 Ưu điểm 21 1.3.2 Hạn chế 22 CHƢƠNG 2: HÀM BĂM VÀ CHỮ KÝ ĐIỆN TỬ 24 2.1 Hàm băm 24 2.1.1 Tổng quan hàm băm 24 2.1.2 Một số hàm băm sử dụng phổ biến 29 2.1.2.1 Họ hàm băm SHA (Secure Hash Algorithm) 29 2.1.2.2 Họ hàm băm MD (Message-Digest algorithm) 32 2.2 Chữ ký điện tử 39 2.2.1 Tổng quan chữ ký điện tử 39 2.2.2 Định nghĩa chữ ký điện tử 42 Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ 2.2.3 Một số qui ước chữ ký điện tử 43 2.3 Những vấn đề trao đổi cặp khóa đặt thực tế 44 2.3.1 Sự tương tự với bưu 44 2.3.2 Mối quan hệ khóa cơng khai với thực thể sở hữu khóa 47 2.3.3 Các vấn đề liên quan tới thời gian thực 47 CHƢƠNG 3: XÂY DỰNG ỨNG DỤNG 52 3.1 Phát triển ứng dụng 52 3.1.1 Sơ đồ hệ thống chức ứng dụng 52 3.1.1.1 Sơ đồ hệ thống 52 3.1.1.2 Chức ứng dụng 53 3.1.2 Phân tích ứng dụng 54 3.1.2.1 Tạo khóa cơng khai bí mật thuật tốn RSA 54 3.1.2.2 Băm liệu hàm băm MD5 54 3.1.3.3 Mã hóa giá trị băm khóa bí mật 54 3.1.4.4 Giải mã khóa cơng khai kiểm tra tính tồn vẹn văn 54 3.2 Cài đặt ứng dụng 55 3.2.1 Giới thiệu chương trình 55 3.2.2 Một số giao diện chương trình 55 3.2.2.1 Giao diện chương trình 55 3.2.2.2 Tạo file khóa cơng khai bí mật, lưu file khóa 56 3.2.2.3 Lựa chọn văn 56 3.2.2.4 Ký văn 57 3.2.2.5 Giải mã chữ ký 57 58 GIẢI THÍCH MỘT SỐ THUẬT NGỮ 59 TÀI LIỆU THAM KHẢO 60 Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ DANH MỤC CÁC CHỮ TIẾNG ANH VIẾT TẮT NIST National Institute of Standards and Technology RSA R Rivest, A Shamir, L Adleman MITM Man-In-The-Middle attack MD Message-Digest algorithm SHA Secure Hash Algorithm MAC Message Authentication Code PKCS Public Key Cryptography Standards Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ DANH MỤC CÁC HÌNH STT TÊN HÌNH TRANG Hình 1.1: Kênh liên lạc Hình 2.1: Hoạt động hàm băm tiêu biểu 21 Hình 2.2: Mơ hình ký gửi thơng điệp sử dụng hàm băm 25 Hình 2.3: Mơ hình xác minh chữ ký, kiểm tra tính tồn vẹn thơng điệp 26 Hình 2.4: Mơ hình chữ ký điện tử 40 Hình 3.1: Sơ đồ hệ thống ứng dụng 53 Hình 3.2: Giao diện chương trình 55 Hình 3.3: Giao diện tao cặp khóa 56 Hình 3.4: Giao diện lựa chọn văn cần ký 56 10 11 Hình 3.5: Giao diện ký văn lựa chọn khóa bí mật Hình 3.6: Giao diện giải mã văn ký khóa cơng khai Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ 57 57 MỞ ĐẦU Lý nghiên cứu đề tài Bảo mật thông tin nhu cầu cần thiết lĩnh vực tình báo, qn sự, ngoại giao, thơng tin thương mại Bảo mật thông tin vấn đề nghiên cứu từ xưa đến Bảo mật thơng tin trì tính bảo mật, tính tồn vẹn, tính sẵn sàng Tính bảo mật đảm bảo thông tin tiếp cận người cấp quyền trao đổi thơng tin Tính tồn vẹn thơng tin bảo vệ xác, hồn chỉnh thông tin thông tin thay đổi người cấp quyền Tính sẵn sàng thơng tin người quyền sử dụng truy xuất thông tin họ cần Để đảm bảo u cầu thơng tin nhiều người nước giới tập trung nghiên cứu tìm giải pháp để đảm bảo an toàn, an ninh cho giao dịch điện tử máy tính Giao dịch điện tử Việt Nam quan tâm Những giao dịch điện tử xuất với phổ dụng máy tính mạng Internet Đã có luật, văn luật cho lĩnh vực an toàn thông tin giao dịch điện tử như: Quốc hội thông qua luật thương mại, luật giao dịch điện tử Thủ tướng Chính phủ ban hành Quyết định số 1073/QĐ-TTg ngày 12/7/2010 phê duyệt kế hoạch tổng thể phát triển thương mại điện tử giai đoạn 2010 – 2015 Cùng với xu chung đất nước, u cầu đặt với cơng việc mình, học viên chọn đề tài an tồn thơng tin, mà cụ thể áp dụng thuật tốn mã hóa khóa cơng khai, hàm băm, chữ ký điện tử, làm mục tiêu nghiên cứu Mong muốn tìm tịi xây dựng ứng dụng phục vụ cho quan, đơn vị nơi học viên công tác Nghiên cứu giải thuật mã hóa khóa cơng khai Nghiên cứu chữ ký điện tử, tìm hiểu hàm băm giải thuật hàm băm Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ Cài đặt thử nghiệm giải thuật sinh chữ ký điện tử Một số thuật toán sinh khóa cơng khai, khóa bí mật; Một số hàm băm thường sử dụng nay; Chữ ký điện tử Ph Tìm hiểu dựa sở lý thuyết, thuật tốn hay sinh khóa cơng khai, khóa bí mật có từ trước So sánh để thấy ưu điểm, hạn chế thuật toán Từ sở cải tiến, triển khai ứng dụng cài đặt giải thuật tối ưu vào thực tiễn Trong trình triển khai ứng dụng nêu lên hạn chế đề tài khó khăn thực đề tài Đề xuất hướng phát triển đề tài thời gian tới ăn Ngoài phần mở đầu kết luận đề tài có cấu gồm chương: Chương : Tổng quan thuật tốn mã hóa khóa cơng khai Chương 2: Hàm băm chữ ký điện tử Chương 3: Xây dựng ứng dụng Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ CHƢƠNG TỔNG QUAN VỀ CÁC THUẬT TỐN MÃ HĨA KHĨA CƠNG KHAI 1.1 Khái niệm mã hóa khóa cơng khai 1.1.1 Mật mã hóa khóa đối xứng Trong mật mã học, thuật tốn khóa đối xứng (symmetric key algorithms) lớp thuật toán mật mã hóa khóa dùng cho việc mật mã hóa giải mã có quan hệ rõ ràng với (có thể dễ dàng tìm khóa biết khóa kia) Khóa dùng để mã hóa có liên hệ cách rõ ràng với khóa dùng để giải mã có nghĩa chúng hồn tồn giống nhau, khác nhờ biến đổi đơn giản hai khóa Trên thực tế, khóa đại diện cho bí mật phân hưởng hai bên nhiều sử dụng để giữ gìn bí mật kênh truyền thơng tin Thuật tốn đối xứng chia làm hai thể loại, mật mã luồng (stream ciphers) mật mã khối (block ciphers) Mật mã luồng mã hóa bit thông điệp mật mã khối gộp số bit lại mật mã hóa chúng đơn vị Cỡ khối dùng thường khối 64 bit Những thuật tốn mã hóa khóa đối xứng tiếng DES AES Các thuật tốn đối xứng thường khơng sử dụng độc lập Trong thiết kế hệ thống mật mã đại, hai kiểu mật hóa khóa đối xứng khóa bất đối xứng thường sử dụng phối hợp để tận dụng ưu điểm chúng 1.1.2 Mật mã hóa khóa cơng khai Là dạng mật mã hóa cho phép người sử dụng trao đổi thơng tin mật mà khơng cần phải trao đổi khóa chung bí mật trước Điều thực cách sử dụng cặp khóa có quan hệ tốn học với khóa cơng khai khóa cá nhân (hay khóa bí mật) Thuật ngữ "mật mã hóa khóa bất đối xứng" thường dùng đồng nghĩa với "mật mã hóa khóa cơng khai" hai khái niệm khơng hồn tồn tương đương Có thuật tốn mật mã khóa bất đối xứng khơng có Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ tính chất khóa cơng khai bí mật đề cập mà hai khóa (cho mã hóa giải mã) cần phải giữ bí mật Trong mật mã hóa khóa cơng khai, khóa cá nhân phải giữ bí mật khóa cơng khai phổ biến cơng khai Trong khóa, dùng để mã hóa khóa cịn lại dùng để giải mã Điều quan trọng hệ thống khơng thể tìm khóa bí mật biết khóa cơng khai Hệ thống mật mã hóa khóa cơng khai sử dụng với mục đích: Mã hóa: giữ bí mật thơng tin có người có khóa bí mật giải mã Tạo chữ ký số: cho phép kiểm tra văn có phải tạo với khóa bí mật hay khơng Thỏa thuận khóa: cho phép thiết lập khóa dùng để trao đổi thông tin mật bên Thông thường, kỹ thuật mật mã hóa khóa cơng khai địi hỏi khối lượng tính tốn nhiều kỹ thuật mã hóa khóa đối xứng lợi điểm mà chúng mang lại khiến cho chúng áp dụng nhiều ứng dụng Có thể hình dung hệ mật tương tự sau A đặt vật vào hộp kim loại khố lại khố số B để lại Chỉ có B người mở hộp có người biết tổ hợp mã khố số Thuật tốn mã hóa cơng khai thuật tốn thiết kế cho khóa mã hóa khác so với khóa giải mã Mà khóa giải mã hóa khơng thể tính tốn từ khóa mã hóa Khóa mã hóa gọi khóa cơng khai (public key), khóa giải mã gọi khóa riêng (private key) Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ Trong hệ thống, người có thẩm quyền tạo khóa trùng với người có thẩm quyền thu hồi khóa khơng bắt buộc Nếu xét phương diện an ninh khơng phải ý tưởng tốt Vấn đề nảy sinh cần giảm khoảng thời gian thời điểm thu hồi khóa thời điểm tạo khóa tới mức tối thiểu Để làm tốt việc lại địi hỏi nơi/một thực thể có đủ thẩm quyền nêu Vấn đề phải cân yêu cầu an ninh yêu cầu tính sẵn sàng hệ thống Các biện pháp tiến hành lộ khóa Hầu hết trường hợp thu hồi khóa xảy có kiện chứng tỏ khóa bí mật bị lộ Ta gọi thời điểm xảy kiện T Điều dẫn tới hệ quả: Các văn mã hóa với khóa cơng khai sau thời điểm T khơng cịn xem bí mật; chữ ký số thực với khóa bí mật sau thời điểm T khơng cịn xem thật khơng có tìm hiểu kỹ lưỡng kiện để tìm nơi thực chữ ký Nếu nguyên nhân việc lộ bí mật lỗi hệ thống cần tiến hành chiến lược phục hồi Chiến lược xác định người có quyền thu hồi khóa, cách thức truyền thơng tin tới người dùng, cách thức xử lý văn mã hóa với khóa bị lộ sau thời điểm T Quy trình phục hồi phức tạp lúc tiến hành hệ thống dễ bị cơng từ chối dịch vụ (DoS) Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ CHƢƠNG 3: XÂY DỰNG ỨNG DỤNG 3.1 Phát triển ứng dụng 3.1.1 Sơ đồ hệ thống chức ứng dụng 3.1.1.1 Sơ đồ hệ thống Như trình bày chương trước luận văn tìm hiểu hệ mật mã khóa cơng khai, chữ ký điện tử, hàm băm học viên định lựa chọn giải thuật chữ ký số RSA cho phần cài đặt thử nghiệm ứng dụng Trong luận văn này, học viên xin khơng sâu trình bày, diễn giải phân tích hệ thống mà nói việc hình thành cặp khóa, việc ứng dụng hàm băm, cặp khóa để ký, giải mã thành công thông điệp Các ký hiệu mơ hình hệ thống M : văn đầu vào mã hóa Encode : mã hóa Decipher : giải mã dA : khóa bí mật người A (người gửi) eA : khóa cơng khai A H : hàm băm MD5 H(M) : văn M băm thuật toán MD5 E(H(M) : văn mã hóa sau băm Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ H M H(M) E(H(M) dA) dA H(M) E(H(M) eA) eA Hình 3.1: Sơ đồ hệ thống ứng dụng Trên mơ hình hệ thống kết cuối hàm mã hóa H(M) (2); chương trình so sánh hai kết H(M)) (vị trí (1) (2) hình 3.1) thơng báo tính thống văn M mà người gửi muốn gửi cho người nhận 3.1.1.2 Chức ứng dụng i Tạo khóa cơng khai khóa bí mật: Chọn độ dài khóa, sau khóa cơng khai khóa bí mật tạo người gửi gửi khóa cơng khai cho người nhận người nhận dùng khóa để giải mã văn so sánh xem có phải văn thống hay khơng ii Ký file: Cho phép người sử dụng nhập liệu thông điệp lựa chon file để ký trước gửi cho người nhận iii Xác nhận file ký Sử dụng khóa cơng khai người gửi, người nhận dùng ứng dụng xác nhận chữ ký văn mà người gửi gửi hay khơng Nếu văn có sai lệch dùng hàm băm MD5 băm lần văn M kết cho không khớp với thơng tin giải mã trước Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ 3.1.2 Phân tích ứng dụng 3.1.2.1 Tạo khóa cơng khai bí mật thuật tốn RSA Produce Tạo khóa thuật tốn sinh khóa RSA RSACryptoServiceProvider RSAProvider = new RSACryptoServiceProvider(currentBitStrength); Lưu cặp khóa thành hai file *.kez (saveFile("Lưu khóa cơng khai", "Tập tin khóa cơng khai (*.kez)|*.kez", publicAndPrivateKeys)) Return; 3.1.2.2 Băm liệu hàm băm MD5 Produce Khởi tạo hàm băm MD5; Gọi thuật toán MD5 MD5 md5 = MD5.Create(); Băm văn bản; Return; 3.1.3.3 Mã hóa giá trị băm khóa bí mật Produce Lấy giá trị băm; Chọn tập tin khóa bí mật; Mã hóa giá trị băm khóa bí mật; Return; 3.1.4.4 Giải mã khóa cơng khai kiểm tra tính tồn vẹn văn Produce Lấy giá trị mã hóa; Chọn tập tin khóa cơng khai; Giải mã giá trị mã hóa khóa công khai; // Xác thực văn Băm lai văn thuật tốn MD5; Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ So sánh kết băm với kết bước 3.1.2.2 ; Báo thành công kết giống nhau; Return; 3.2 Cài đặt ứng dụng 3.2.1 Giới thiệu chương trình Chương trình mơ chữ ký số giải vấn đề: - Chọn độ dài khóa: số có độ dài có định 512, 1024, … - Sinh cặp khóa cơng khai, bí mật - Đưa vào thơng điệp băm thuật toán MD5 - Ký văn - Giải mã văn - Xác thực chữ ký 3.2.2 Một số giao diện chương trình 3.2.2.1 Giao diện chương trình Hình 3.3: Giao diện Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ 3.2.2.2 Tạo file khóa cơng khai bí mật, lưu file khóa Hình 3.2: Giao diện tao cặp khóa 3.2.2.3 Lựa chọn văn Hình 3.4: Giao diện lựa chọn văn cần ký Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ 3.2.2.4 Ký văn Hình 3.5: Giao diện ký văn lựa chọn khóa bí mật 3.2.2.5 Giải mã chữ ký Hình 3.6: Giao diện giải mã văn ký khóa cơng khai Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ * Kết đạt đƣợc Trình bày thuật tốn sinh khóa cơng khai, đặc điểm thuật tốn Trình bày mật mã học, hàm băm, chữ ký số Xây dựng mơ việc tạo khóa cơng khai, khóa bí mật, kiểm tra tính tồn vẹn, xác thực chữ ký * Những khó khăn, tính hạn chế đề tài Khó khăn: Vấn đề chữ ký số vấn đề không nay, phát triển mạnh mẽ nước ta song áp dụng chữ ký số cho đơn vị có nhiều vấn đề cần giải để đạt hiệu cao với người dùng chữ ký số Hạn chế: ứng dụng xây dựng chưa mã hóa nhiều định dạng khác * Hƣớng phát triển tới đề tài Tiếp tục hoàn thiện chương trình, phát triển đề tài để áp mạnh mẽ vào thực tế cơng việc Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ GIẢI THÍCH MỘT SỐ THUẬT NGỮ Văn (Plaintext) thông báo gốc cần chuyển, ghi hình ảnh, âm thanh, chữ số, chữ viết thông thường Về sau đưa ví dụ, ta thường xem văn viết tiếng Việt, chữ số Hệ mã (Cryptosystem) phương pháp biến văn sang dạng khác Việc dùng hệ mã để biến đổi văn gọi mã hố văn Văn mật (Ciphertext) văn mã hoá Giải mã (Decrypt) tức chuyển văn mật thành văn ban đầu với điều kiện biết hệ mã dùng q trình mã hố văn Như vậy, giải mã công việc người nhận văn mật (khi văn mật gửi đến địa chỉ) Thám mã (Cryptanalysis) việc tìm văn ban đầu từ văn mật khơng biết q trình mã hố Đây việc làm người muốn khám phá bí mật người khác, tức phá hệ mã Cơng nghệ mã hố (Cryptology) từ dùng để việc nghiên cứu, tạo ứng dụng hệ mã, phương pháp thám mã Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ TÀI LIỆU THAM KHẢO Tài liệu tham khảo tiếng Việt [1] Hà Huy Khoái - Phạm Văn Điển, Số học thuật toán, NXB Đại học quốc gia Hà Nội (2003) [2] Hà Huy Khối, Nhập mơn số học thuật tốn, Nhà xuất khoa học 1997 [3] Phan Đình Diệu, Lý thuyết mật mã An tồn thơng tin, Đại học quốc gia Hà Nội Tài liệu tham khảo tiếng Anh [1] RFC1320 - The MD4 Message-Digest Algorithm [2] RFC1321 - The MD5 Message-Digest Algorithm [3] Handbook of Applied Cryptography, A.Menezes, P.van Oorschot, S.Vanstone, CRC Press, 1996 [4] R.I Rivest, A Shamir, L M Adleman A method for obtaining digital signatures and public-key cryptosystems, Communication of the ACM, 21 (1978), 120-126 Trang Web tham khảo [1] http://www.scribd.com [2] http://www.slideshare.net [3] http://vi.scribd.com [4] http://antoanthongtin.vn/ Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ PHỤ LỤC Danh sách hàm băm mật mã học Thuật toán HAVAL MD2 MD4 MD5 PANAMA RIPEMD RIPEMD-128/256 RIPEMD-160/320 SHA-0 SHA-1 SHA-256/224 SHA-512/384 Tiger(2)192/160/128 VEST-4/8 (hash mode) VEST-16/32 (hash mode) WHIRLPOOL 256/224/192/160/128 128 128 128 256 128 128/256 160/320 160 160 256/224 512/384 256 384 128 128 8736 128 128/256 160/320 160 160 256 512 1024 128 512 512 256 512 512 512 512 512 512 1024 64 Không 64 64 No 64 64 64 64 64 64 128 Kích thƣớc word (Word size) 32 32 32 32 32 32 32 32 32 32 64 192/160/128 192 512 64 64 Không 160/256 256/384 80/128 Không 320/512 512/768 160/256 Không 512 512 512 256 Khơng Kích thƣớc đầu (output size) Số hóa trung tâm học liệu Kích thƣớc trạng thái Kích thƣớc khối Độ dài (Internal state size) (Block size) (Length size) http://www.lrc-tnu.edu.vn/ Xung đột (Collision) Có khả lớn Có Có Có lỗi Có Khơng Khơng Khơng Có lỗi Khơng Khơng PHỤ LỤC Giải thuật chƣơng trình ứng dụng using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Security.Cryptography; using System.Collections; using System.IO; using System.Threading; namespace Luan_Van_Truong_Manh_Cuong { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //Sinh khóa cơng khai khóa bí mật private void butSinhKhoaCK_Click(object sender, EventArgs e) { int currentBitStrength = int.Parse(txtDoDaiKhoa.Text); RSACryptoServiceProvider RSAProvider = new RSACryptoServiceProvider(currentBitStrength); string publicAndPrivateKeys = "" + currentBitStrength.ToString() + "" + RSAProvider.ToXmlString(true); string justPublicKey = "" + currentBitStrength.ToString() + "" + RSAProvider.ToXmlString(false); if (saveFile("Lưu khóa cơng khai", "Tập tin khóa cơng khai( *.kez )|*.kez", publicAndPrivateKeys)) { while (!saveFile("Lưu khóa bí mật", "Tập tin khóa bí mật( *.pke )|*.pke", justPublicKey)) { ; } } txtKhoaCongKhai.Text = publicAndPrivateKeys; txtKhoaBiMat.Text = justPublicKey; } private SaveFileDialog saveFileDialog; private bool saveFile(string title, string filterString, string outputString) { saveFileDialog = new SaveFileDialog(); saveFileDialog.Title = title; saveFileDialog.Filter = filterString; saveFileDialog.FileName = ""; if (saveFileDialog.ShowDialog() == DialogResult.OK) { StreamWriter streamWriter = new StreamWriter(saveFileDialog.FileName, false); if (outputString != null) { streamWriter.Write(outputString); } streamWriter.Close(); return true; } return false; } Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ //Hàm băm MD5 private string CreateMD5Hash(string input) { MD5 md5 = MD5.Create(); byte[] inputBytes = Encoding.ASCII.GetBytes(input); byte[] hashBytes = md5.ComputeHash(inputBytes); StringBuilder sb = new StringBuilder(); for (int i = 0; i < hashBytes.Length; i++) { sb.Append(hashBytes[i].ToString("X2")); } return sb.ToString(); } //Băm văn private void butHamBam_Click(object sender, EventArgs e) { string iVanBanDaBam = CreateMD5Hash(txtVanBanCanKy.Text); txtVanBanDaBam.Text = iVanBanDaBam; } public delegate void FinishedProcessDelegate(); public delegate void UpdateTextDelegate(string inputText); private void FinishedProcess() { Application.DoEvents(); } private void UpdateTextChuKy(string inputText) { txtChuKy.Text = inputText; } private void UpdateTextGiaiMaChuKy(string inputText) { txtGiaiMaChuKy.Text = inputText; } //Ký văn bản: mã hóa giá trị băm khóa bí mật private void butKyVB_Click(object sender, EventArgs e) { openFileDialog = new OpenFileDialog(); openFileDialog.FileName = ""; openFileDialog.Title = "Chọn tập tin khóa bí mật"; openFileDialog.Filter = "Tập tin khóa bí mật( *.pke )|*.pke"; string fileString = null; if (openFileDialog.ShowDialog() == DialogResult.OK) { if (File.Exists(openFileDialog.FileName)) { StreamReader streamReader = new StreamReader(openFileDialog.FileName, true); fileString = streamReader.ReadToEnd(); streamReader.Close(); } } if (fileString != null) { FinishedProcessDelegate finishedProcessDelegate = new FinishedProcessDelegate(FinishedProcess); UpdateTextDelegate updateTextDelegate = new UpdateTextDelegate(UpdateTextChuKy); string bitStrengthString = fileString.Substring(0, fileString.IndexOf("") + 14); Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ fileString = fileString.Replace(bitStrengthString, ""); int bitStrength = Convert.ToInt32(bitStrengthString.Replace("", "").Replace("", "")); this.Refresh(); if (fileString != null) { EncryptionThread encryptionThread = new EncryptionThread(); Thread encryptThread = new Thread(encryptionThread.Encrypt); encryptThread.IsBackground = true; encryptThread.Start(new Object[] { this, finishedProcessDelegate, updateTextDelegate, txtVanBanDaBam.Text, bitStrength, fileString }); } } } //Giải mã chữ ký: giải mã chữ ký khóa công khai private void butGiaiMaChuKy_Click(object sender, EventArgs e) { try { openFileDialog = new OpenFileDialog(); openFileDialog.FileName = ""; openFileDialog.Title = "Mở tập tin khóa cơng khai"; openFileDialog.Filter = "Tập tin khóa cơng khai( *.kez )|*.kez"; string fileString = null; if (openFileDialog.ShowDialog() == DialogResult.OK) { if (File.Exists(openFileDialog.FileName)) { StreamReader streamReader = new StreamReader(openFileDialog.FileName, true); fileString = streamReader.ReadToEnd(); streamReader.Close(); } } if (File.Exists(openFileDialog.FileName)) { string bitStrengthString = fileString.Substring(0, fileString.IndexOf("") + 14); fileString = fileString.Replace(bitStrengthString, ""); int bitStrength = Convert.ToInt32(bitStrengthString.Replace("", "").Replace("", "")); this.Refresh(); if (fileString != null) { FinishedProcessDelegate finishedProcessDelegate = new FinishedProcessDelegate(FinishedProcess); UpdateTextDelegate updateTextDelegate = new UpdateTextDelegate(UpdateTextGiaiMaChuKy); EncryptionThread decryptionThread = new EncryptionThread(); Thread decryptThread = new Thread(decryptionThread.Decrypt); decryptThread.IsBackground = true; decryptThread.Start(new Object[] { this, finishedProcessDelegate, updateTextDelegate, txtChuKy.Text, bitStrength, fileString }); } } } catch { MessageBox.Show("Giải mã khơng thành cơng!"); Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ } } //Xác thực chữ ký: Băm lại văn Giải mã chữ ký khóa cơng khai //Nếu hai kết trùng Xác thực chữ ký thành cơng private void butXacThucChuKy_Click(object sender, EventArgs e) { string iVanBanDaBam = CreateMD5Hash(txtVanBanCanKy.Text); txtVanBanDaBam.Text = iVanBanDaBam; if (txtGiaiMaChuKy.Text==txtVanBanDaBam.Text) { MessageBox.Show("Xác thực thành công"); } else { MessageBox.Show("Xác thực không thành công"); } } //Chọn văn cần ký private void button1_Click(object sender, EventArgs e) { string fileString = openFile("Chọn văn cần ký", "Văn cần ký( *.txt )|*.txt"); if (fileString != null) { SetText(fileString); } } private void SetText(string text) { txtVanBanCanKy.Text = text; } private OpenFileDialog openFileDialog; private string openFile(string title, string filterString) { openFileDialog = new OpenFileDialog(); openFileDialog.FileName = ""; openFileDialog.Title = title; openFileDialog.Filter = filterString; if (openFileDialog.ShowDialog() == DialogResult.OK) { if (File.Exists(openFileDialog.FileName)) { StreamReader streamReader = new StreamReader(openFileDialog.FileName, true); string fileString = streamReader.ReadToEnd(); streamReader.Close(); return fileString; } } return null; } private void Form1_Load(object sender, EventArgs e) { } Số hóa trung tâm học liệu http://www.lrc-tnu.edu.vn/ ... kế cho khóa mã hóa khác so với khóa giải mã Mà khóa giải mã hóa khơng thể tính tốn từ khóa mã hóa Khóa mã hóa gọi khóa cơng khai (public key), khóa giải mã gọi khóa riêng (private key) Số hóa trung... CƠNG KHAI 1.1 Khái niệm mã hóa khóa cơng khai 1.1.1 Mật mã hóa khóa đối xứng Trong mật mã học, thuật tốn khóa đối xứng (symmetric key algorithms) lớp thuật tốn mật mã hóa khóa dùng cho việc mật mã. .. KHĨA CƠNG KHAI 1.1 Khái niệm mã hóa khóa cơng khai 1.1.1 Mật mã hóa khóa đối xứng 1.1.2 Mật mã hóa khóa cơng khai 1.2 Các thuật tốn mật mã hóa khóa cơng khai