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ĩ)
1 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 Tác giả BÙI VĂN BÌNH 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 hệ mật mã (Cryptosystem) năm (P, C, K, E, D) thỏa mãn điều kiện: - P tập hữu hạn rõ (chứa thông tin cần mã hóa) - C tập hữu hạn mã (chứa thông tin mã hóa từ rõ) - K tập hữu hạn khóa - E D lần lược trình mã hóa giải mã: Với khóa k K tồn luật mã hóa ek E luật giải mã dk D tương ứng Luật mã hóa ek: P → C luật giải mã ek: C → P hai ánh xạ thỏa mãn dk(ek(x)) = x , x P Khóa bí mật Bản tin rõ Mã hoá Kênh bí mật Bản mã Bản tin rõ Giải mã Hình 1.1 Mô hình hệ mã khoá bí mật 1.1.2 Phân loại hệ mã hóa - Mã theo chuỗi bit (Stream Cipher) - Mã theo chữ - Mã khối (Block Cipher) 1.1.3 Phân tích ưu nhược điểm hệ mật mã - Ưu điểm Tốc độ thực nhanh trình mã hoá giải mã sử dụng phép toán dãy bit nhị phân như: OR, AND, XOR, … phép toán gần với lệnh máy - Nhược điểm Hạn chế khả quản lý khoá: Đối với người để liên lạc với phải có khoá riêng, hệ thống lớn có nhiều đối tác giao tiếp với người phải lưu giữ số lượng khoá bí mật lớn dẫn đến vấn đề khó khăn quản lý bảo mật khoá * Ứng dụng mã hoá khoá bí mật Loại mật mã thường dùng quân sự, ngoại giao, tức cần trao đổi thông tin với ít, chung quyền lợi nên sẵn sàng bảo vệ bí mật cho Do tốc độ mã hoá nhanh nên hệ mã khóa bí mật thường dùng mã hoá khối lượng liệu lớn (mã hóa sở liệu) 1.2 Hệ mã hóa công khai RSA 1.2.1 Trình bày khái niệm liên quan Hệ mã khóa công khai RSA hệ thống mật mã giáo sư Ronald Rivest, Adi Sharmir Leonard Adleman phát minh năm 1978 học viện Công nghệ Massachusetts (MIT) Thuật toán RSA thuật toán phù hợp với việc tạo chữ ký điện tử đồng thời với việc mã hóa giải mã Nó đánh dấu tiến vượt bậc lĩnh vực mật mã học việc sử dụng hệ mật mã khóa công khai Khóa công khai B khóa bí mật B User A đoạn tin Giải thuật mã hóa mật mã Giải thuật giải mã đoạn tin User B Hình 1.2: trình mã hóa khóa công khai + Mỗi hệ thống cuối mạng tạo cặp khóa để dùng cho mã hóa giải mã đoạn tin mà nhận + Mỗi hệ thống công bố rộng rãi khóa mã hóa cách đặt khóa vào ghi hay file công khai Đây khóa công khai, khóa lại giữ riêng + Nếu A muốn gửi đoạn tin tới B A mã hóa đoạn tin khóa công khai B + Khi B nhận đoạn tin mã hóa, giải mã khóa bí mật Không người khác giải mã đoạn tin mã có B biết khóa bí mật 1.2.2Thuật toán hệ mã hóa công khai 1.2.2.1 Thuật toán sinh khóa Việc tạo khóa công khai khóa bí mật thực theo bước sau: (1) Sinh số nguyên tố lớn p q ngẫu nhiên (p ≠ q) (2) Tính n = p*q φ(n) = (p-1)*(q-1) (3) Chọn số tự nhiên e cho < e < φ(n) số nguyên tố φ(n) (4) Tính d cho: d*e ≡ (mod φ(n)) với 1< d < φ(n) (5) Khóa công khai (e, n), khóa bí mật (d, n) 1.2.2.2 Thuật toán mã hóa Để gửi liệu cần mã hóa người gửi thực hiện: (1) Thu nhận khóa công khai người nhận (e, n) (2) Biến đổi thông điệp muốn gửi M thành số nguyên m < n (3) Tính C = Me mod n 1.2.2.3 Thuật toán giải mã Để khôi phục lại nội dung liệu M ban đầu, người nhận thực bước sau: (1) Tính M = Cd mod n với ≤ m ≤ n 5 (2) Thực phép biến đổi ngược từ số m thành chuỗi ký tự tương ứng chứa thông tin M ban đầu 1.2.2.4 Chuyển đổi văn rõ Trước thực mã hóa, ta phải thực việc chuyển đổi rõ (chuyển từ M sang m) cho giá trị M tạo mã không an toàn Nếu trình này, RSA gặp số vấn đề như: - Nếu m = m = tạo mã có giá trị tương ứng 1.2.2.5 Các ví dụ khóa 1.2.3Một số cách thức công hệ mật mã RSA 1.2.3.1 Tấn công lặp 1.2.3.2 Tấn công modulo n dùng chung 1.2.3.3 Tấn công khóa công khai e nhỏ 1.2.4 Phương pháp phòng tránh công Độ an toàn hệ thống RSA dựa vấn đề toán học: toán phân tích thừa số nguyên tố số nguyên lớn toán RSA 1.2.5 Chi phí tốc độ thực thuật toán RSA 1.2.5.1 Chi phí thực thuật toán RSA Để thực thuật toán RSA phần lớn phải tốn chi phí thực phép tính như: tạo khóa, mã hoá, giải mã 1.2.5.2 Tốc độ hệ RSA Tốc độ thực điễm yếu RSA không dùng để mã hoá khối lượng liệu lớn 1.2.6 Ứng dụng hệ mã RSA 1.2.6.1 Tạo vỏ bọc an toàn cho văn 1.2.6.2 Tạo chữ ký số cho văn 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Ử 2.1 Các khái niệm 2.1.1 Chữ ký điện tử Chữ ký điện tử (electronic signature) thông tin kèm theo liệu (văn bản, hình ảnh, âm thanh, …) nhằm mục đích xác định người chủ liệu 2.1.2 Chữ ký số Chữ ký số (Digital signature) dạng chữ ký điện tử (tập chữ ký điện tử) tạo biến đổi thông điệp liệu sử dụng hệ thống mật mã công khai, theo người có thông điệp liệu ban đầu khóa công khai người ký xác định xác 2.1.3 Phương tiện điện tử Là phương tiện hoạt động dựa công nghệ điện, điện tử, kỹ thuật số, từ tính, truyền dẫn không dây, quang học, điện tử công nghệ tương tự Phương tiện điện tử giúp hỗ trợ cho người dùng thực công việc cải thiện đạt kết tốt 2.1.4 Giao dịch điện tử Giao dịch điện tử hiểu cách đơn giản hình thức giao dịch mà đối tượng không gặp gỡ trực tiếp với 2.1.5 Thông điệp điện tử Thông điệp liệu thông tin tạo ra, gửi đi, nhận lưu trữ phương tiện điện tử 2.1.6 Chứng thực điện tử Chứng thực điện tử hoạt động chứng thực danh tính người tham gia vào việc gửi nhận thông tin qua mạng, đồng thời cung cấp cho họ công cụ, dịch vụ cần thiết để thực việc bảo mật thông tin, chứng thực nguồn gốc nội dung thông tin 7 2.1.7 Lịch sử hình thành phát triển chữ ký điện tử Trên giới Tại Việt Nam 2.2 Trình bày thuật toán, hàm 2.2.1 Thuật toán Euclide - Tìm UCLN hai số nguyên Input: a, b Z với a >b ≥ Output: gcd(a, b) Thuật toán While b > r = a mod b a=b b=r Return (a) 2.2.2 Thuật toán Euclide mở rộng Giải thuật Euclide mở rộng kết hợp trình tìm gcd(a, b) để tìm cặp số x, y thoả mãn phương trình ax + by = gcd(a, b) [9][10] Input: a, b Z, a > b, a ≠ Output: x, y cho ax + by = gcd(a, b) Thuật toán i=0 r-1 = a r0 = b x-1 = y-1 = x0 = y0 = While (ri = a.xi + b.yi ≠ 0) q = ri-1 div ri xi + = xi - – q.xi yi + = yi - – q.yi i=i+1 Return (xi – 1, yi – 1) 2.2.3 Thuật toán tính a-1 mod n Thuật toán dùng để xác định phần tử nghịch đảo a theo modulo n a-1 modulo n [9][10], sử dụng trình tạo khoá giải mã hệ mã khoá công khai Input: a, n Zn, a > n Output: x= a-1 mod n có tồn Thuật toán (1) Dùng thuật toán Euclide mở rộng (1.3.4.2) tìm hai số nguyên x y cho ax + ny = d, d = gcd(a, n) (2) Nếu d > a-1 mod n không tồn tại, ngược lại x = a-1 mod n 2.2.4 Thuật toán Rabin-Miller Cho n ≥ lẻ, thuật toán Rabin-Miler [3][9] xác định n có phải số nguyên tố không? Input: n ≥ Output: n số nguyên tố không? Thuật toán (1) Tính n – = 2km, m số lẻ (2) Chọn số nguyên a, < a số nguyên dương, với số nguyên a nguyên tố với n ta có aφ(n) ≡ (mod n) 2.2.8 Hàm Băm Hàm băm mật mã hàm toán học chuyển đổi thông điệp có độ dài (hữu hạn) thành dãy bit có độ dài cố định (tùy thuộc vào thuật toán băm) Hình 2.2: Hoạt động hàm băm - Các tính chất hàm băm: + Là hàm chiều, thực phép biến đổi ngược trình mã hóa giải mã, nghĩa với message_digest cho trước, khó tìm message mà có hàm băm message_digest + Khó tìm hai message mà có message_digest 10 2.2.9 Hàm băm MD5 * Bước 1: message ban đầu thêm (padding) số bít cho tổng số bít sau thêm vào cộng với 64 bội số 512 * Bước 2: khởi tạo đệm MD có kích thước 128 bít Bộ đệm 128 bít dùng để chứa kết trung gian kết cuối hàm băm * Bước 3: Xử lý message thành khối 512 bít (16 từ 32 bít) Quá trình tính toán chia thành giai đoạn, số giai đoạn số chiều dài (tính theo bít) message sau padding chia cho 512 * Bước 4: Xuất kết quả, tất khối 512 bít L xử lý đầu giai đoạn thứ L message_digest 128 bít 04e9800998ecf8427e 2.2.10 Hàm băm SHA1 Bước 1: Mở rộng thông điệp Bước 2: Khởi tạo đệm Bước 3: Xử lý khối 512 bít Bước 4: xuất kết 2.3 Lược đồ chữ ký điện tử RSA 2.3.1 Định nghĩa lược đồ chữ ký Một lược đồ chữ ký số (M, MS, K, S, V) đó[9][10]: - M tập hữu hạn văn - MS tập hữu hạn chữ ký - K tập hữu hạn khóa - S tập thuật toán ký - V tập hợp thuật toán chứng thực chữ ký 2.3.2 Phân loại lược đồ chữ ký số 2.3.2.1 Lược đồ chữ ký số kèm theo rõ Thuật toán sinh khóa cho lược đồ chữ ký số kèm theo rõ Tóm lược: Mỗi cá thể tạo khóa riêng để ký thông điệp khóa công khai tương ứng để cá thể khác hệ thống dùng trình xác thực chữ ký 11 (1) Mỗi cá thể A chọn khóa k = (k’, k’’) K, Sigk’ thuật toán ký với khóa k (mỗi Sigk’ ánh xạ 1-1 từ Mh tới Ms) (2) Thuật toán Verk’’ tương ứng ánh xạ từ MhxMs đến tập hợp {True, False} cho: True, Sigk’(m) = s Verk’’(m; s) = False, Sigk’(m) # s False, Sig (m) Với m Mh, s Ms: m = h(P) với Pk’ M Verk’’ gọi thuật toán s kiểm thử để chứng thực chữ ký, h hàm chiều từ M đến Mh (Mh tập hợp giá trị băm) (3) Với khóa k = (k’, k’’), khóa công khai A k’’; khóa bí mật A k’ Thuật toán sinh chữ ký chứng thực chữ ký Sinh chữ ký, cá thể A thực hiện: (a) Chọn khóa k = (k’; k’’) K (b) Tính m = h(P) s = Sigk’(m) (c) Chữ ký A cho thông điệp P s, P s gửi đến B Để chứng thực chữ ký B thực bước sau: (a) Xác thực khóa công khai A k’’ (b) Tính m = h(P) u = Verk’’(m; s) (c) Chấp nhận chữ ký A u = True Các thuộc tính sau yêu cầu cần thiết cho thuật ký chứng thực chữ ký: (i) Với khóa k = (k’; k’’) K, Sigk’ tính toán hiệu (ii) Verk’’ cần tính toán cách hiệu (iii) Không cá thể khác A tìm rõ P M s Ms cho Verk’’(m; s) = True, m = h(P) M P● h Mh m Sigk’ ● (a) Quá trình ký Ms ●s 12 Verk’ Mh x Ms ●True ●False (b) Quá trình chứng thực Hình 2.6: Mô hình tổng quát lược đồ chữ ký có kèm rõ 2.3.2.2 Lược đồ chữ ký số tự khôi phục rõ Thuật toán sinh khóa Mỗi cá thể A chọn khóa k = (k’, k’’) K Sigk’ thuật toán ký với khóa k (mỗi Sigk ánh xạ 1-1 từ Mh tới Ms) R hàm cho R(M) = MR có nghịch đảo R-1 Thuật toán Verk’’ tương ứng ánh xạ từ Ms đến MR cho: Verk’’ Sigk’ ánh xạ MR, k K Verk’’ thuật toán chứng thực chữ ký Cặp khóa k = (k’, k’’), khóa công khai A k’’; khóa bí mật A k’ Thuật toán sinh chữ ký Tóm lược: Cá thể A ký thông điệp P M với chữ ký s Một cá thể B xác thực chữ ký phục hồi thông điệp P từ chữ ký (a) Chọn khóa k = (k’, k’’) K (b) Tính m = R(P) s = Sigk’(m) (R, R-1 hàm công khai) (c) Chữ ký A lên thông điệp P s, sau A gửi s cho B Thuật toán xác thực chữ ký B thực bước sau: (a) Xác thực khóa công khai A k’’ (b) Tính m = Verk’’(s) (c) Xác thực m = MR (nếu m MR từ chối chữ ký) (d) Phục hồi thông điệp P từ m cách tính R-1(m) 13 (i) Với khóa k = (k’; k’’) K, Sigk’ tính toán hiệu (ii) Verk’’ cần tính toán cách hiệu (iii) Không cá thể khác A tìm s Ms cho Verk’’(s) MR Sig R M k’ MR P● Ms ● ●s m Hình 2.7: Lược đồ chữ ký số tự khôi phục rõ R h M P● Mh m ● MR ●R(m) Sigk’ Ms ●s Hình 2.8: Lược đồ chữ ký số kèm theo rõ thu 2.3.3 Lược đồ chữ ký RSA 2.3.3.1 Thuật toán sinh khóa cho lược đồ chữ ký RSA Mỗi cá thể hệ thống thực bước sau: (1) Sinh ngẫu nhiên hai số nguyên tố lớn p q (2) Tính n = p*q φ(n) = (p-1)*(q-1) (3) Chọn số tự nhiên e cho < e < φ(n) số nguyên tố với φ(n) (4) Dùng thuật toán Euclide mở rộng tính d cho: d*e ≡ (mod φ(n)) với 1< d < φ(n) (5) Khóa công khai (e, n), khóa bí mật (d, n) 2.3.3.2 Thuật toán sinh chữ ký RSA Tóm lược: Cá thể A ký thông điệp P cá thể B chứng thực chữ ký có A hay không Đồng thời khôi phục lại thông điệp từ chữ ký Cá thể A thực hiện: (a) Số hóa thông điệp P thành số nguyên m [0, n-1]; m = R(P) (b) Tính s = md mod n (c) Chữ ký A lên thông điệp P s, gửi s cho B 14 2.3.3.3 Thuật toán chứng thực chữ ký RSA Để xác thực chữ ký s có phải A khôi phục thông điệp P B thực sau: (a) Nhận khóa công khai A (e, n) (b) Tính m = se mod n (c) Xác nhận chữ ký m MR, ngược lại chối bỏ chữ ký A (d) Khôi phục lại P = R-1(m) * Chứng minh trình chúng thực chữ ký Nếu s chữ ký cho thông điệp P thì: s = md mod n, với m = R(P) Từ e*d ≡ (mod φ(n)), se = me*d mod n = m mod n Cuối ta có: R-1(m) = R-1(R(P)) = P Quá trình sinh khóa: Cá thể A thực hiên bước sau: Chọn hai số nguyên tố p = 7927, q = 6997 Tính: n = p*q = 7927*6997 = 55465219 φ(n) = 7926*6996 = 55450296 Chọn e = 5, 1< e < 55450296 Tính d: Từ e*d = mod 55450296, tìm d = 44360237 Khóa công khai (e, n) = (5, 55450296); Khóa bí mật (d, n) = (44360237, 55450296) Quá trình sinh chữ ký: Giả sử M = Zn hàm R: M Zn xác định R(P) = P với P M P = 31229978 A thực hiện: (a) Số hóa thông điệp P: Tính m = R(P) = 31229978, (b) Tính chữ ký s = md mod n = 3122997844360237 mod 55465219 = 30729435 (c) Gửi s cho B 15 Quá trình chứng thực chữ ký: B thực bước sau: (a) Nhận khóa công khai A (5, 55465219) (b) Tính m = se mod n = 307294355 mod 55465219 = 31229978 (c) Kiểm tra m = 31229978 [0, 55465219] Xác nhận chữ ký s A (d) Khôi phục P = R-1(m) = 31229978 2.3.4 Một số lược đồ chữ ký khác (DSA, EL Gamal) 2.3.4.1 Lược đồ chữ ký ELGamal Thuật toán sinh khóa cho lược đồ chữ ký ELGamal Mỗi cá thể hệ thống tạo khóa công khai khóa riêng tương ứng Mỗi cá thể A thực bước sau: (a) Tạo số nguyên tố lớn p chọn α Zp (b) Chọn số nguyên a, 1≤ a ≤ p – (c) Tính y = αa mod p Khóa công khai (p, α, y) Khóa bí mật a Thuật toán sinh chữ ký Cá thể A ký lên thông điệp m, A thực hiện: (a) Chọn số nguyên k, 1≤ k ≤ p – 2, với gcd (k, p-1) = (b) Tính r = αk mod p (c) Tính k-1 mod (p - 1) (d) Tính s = k-1{h(m) – a*r} mod (p - 1) (e) Chữ ký A lên thông điệp m (r, s) Thuật toán chứng thực chữ ký Cá thể B thực bước sau để chứng thực chữ ký (r, s) lên m có phải A không (a) Xác nhận khóa công khai A (p, α, β) (b) Kiểm tra r, 1≤ r ≤ p – 1, không từ chối chữ ký A 16 (c) Tính v1 = yr.rs mod p (d) Tính h(m) v2 = αh(m) mod p (e) Nếu v1 = v2 chấp nhận chữ ký A 2.3.4.2 Lược đồ chữ ký DSA Thuật toán sinh khóa cho lược đồ chữ ký DSA Mỗi cá thể hệ thống tạo khóa công khai khóa riêng (1) Chọn số nguyên tố p, 2L – 1< p < 2L với 512 < L < 1024 (2) Chọn số nguyên tố q, 2159 ≤ q ≤ 2160 cho q ước nguyên tố (p - 1), nghĩa q có độ dài 160 bit (3) Chọn phần tử g với g Zp, tính α = g(p – 1)/q mod p (4) Chọn ngẫu nhiên số nguyên a cho ≤ a ≤ q – (5) Tính y = αa mod p Khóa công khoá A (p, q, a, y), khóa riêng a Thuật toán sinh chữ ký DSA Cá thể A ký lên thông điệp m Bất kỳ cá thể B kiểm tra chữ ký khóa công khai A A thực bước sau: (1) Chọn số nguyên k, < k < q (2) Tính r = (αk mod p) mod q (3) Tính k-1 mod q (4) Tính s = k-1{h(m) – a*r} mod q (5) Chữ ký A lên thông điệp m (r, s) Thuật toán chứng thực chữ ký DSA (1) Xác nhận khóa công khai A (p, q, α, y) (2) Nếu < r < q < s < q; không chối bỏ chữ ký A (3) Tính w = s-1 mod q h(m) (4) Tính u1 = w.h(m) mod q u2 = r.w mod q (5) Tính v = ( u y u mod p) mod q Chấp nhận chữ ký v = r 17 2.4 Quá trình ký xác thực chữ ký điện tử 2.4.1 Ký văn điện tử Khi người muốn gửi cho văn quan trọng, đòi hỏi văn phải ký xác nhận danh người gửi văn bản; người gửi văn thực trình ký chữ ký điện tử Quá trình ký chữ ký điện tử sử dụng khoá bí mật người ký mô tả, bước thực sau: Hình 2.9: Sơ đồ trình ký văn điện tử Bước 1: Dùng giải thuật băm để thay đổi thông điệp cần truyền Kết ta tóm lược (Message Digest) Dùng giải thuật MD5 ta mã có chiều dài 128-bit dùng giải thuật SHA-1 ta có chiều dài 160-bit Bước 2: Sử dụng khóa bí mật người gửi dùng thuật toán mã hóa RSA để mã hóa Message Digest thu bước Kết thu gọi chữ ký điện tử thông điệp ban đầu Bước 3: Gộp chữ ký điện tử vào tin điện tử ban đầu Việc gọi “ký xác nhận” vào thông điệp Sau ký xác nhận vào thông điệp, thay đổi thông điệp dù nhỏ bị phát trình xác thực chữ ký Việc ký xác nhận đảm bảo người nhận tin tưởng thông điệp xuất phát từ người gửi 18 2.4.2 Xác thực chữ ký điện tử Quá trình giải mã kiểm tra, bước thực sau: Hình 2.10: Sơ đồ trình xác thực chữ ký điện tử Bước 1: Bản tin điện tử có đính kèm chữ ký người gửi, sau nhận tách riêng phần chữ ký phần văn Sử dụng khóa công khai người gửi (khóa thông báo đến người) để giải mã chữ ký điện tử thông điệp, kết tóm lược Bước 2: Dùng giải thuật băm MD5 (hoặc SHA-1) để băm văn tách phần chữ ký điện tử, kết thu tóm lược Bước 3: So sánh tóm lược tóm lược thu bước Nếu trùng nhau, ta kết luận thông điệp không bị thay đổi trình truyền tin xác nhận thông điệp người gửi 19 CHƯƠNG 3: XÂY DỰNG VÀ THỬ NGHIỆM ỨNG DỤNG CHỮ KÝ ĐIỆN TỬ 3.1 Các yêu cầu thử nghiệm 3.1.1 Giới thiệu thử nghiệm 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 - Thực ký chữ ký điện tử lên thông điệp 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 3.2.2.2 Mã hóa 3.2.2.3 Giải mã 3.2.2.4 Ký vào văn 3.2.2.5 Chứng thực chữ ký 20 3.3 Cài đặt thiết lập 3.3.1 Chạy thử demo ghi nhận kết đạt 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 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 21 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ý (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: 22 (1) Chọn file chứa chữ ký mà A gửi đến (2) Dùng khóa công khai A, chọn chương trình kiểm Hình 3.3: Quá trình mã hoá 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ả 3.3.3.2 Tốc độ thực RSA 3.3.3.3 Phân phối khóa 23 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 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 ... 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 hệ mật mã (Cryptosystem) năm (P, C, K, E, D) thỏa mãn điều kiện: -... thực RSA 3.3.3.3 Phân phối khóa 23 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ử ... số cho văn 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Ử 2.1 Các khái niệm 2.1.1 Chữ ký điện tử Chữ ký điện tử (electronic signature) thông tin kèm theo