ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐIỆN – ĐIỆN TỬ BÁO CÁO LÝ THUYẾT MẬT MÃ Đề tài HỆ MẬT BẤT ĐỐI XỨNG RSA Giảng viên hướng dẫn PGS TS Hà Duyên Trung Sinh viên thực hiện Họ và tên Phạm Chính Hiệp Nguyễn M[.]
ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐIỆN – ĐIỆN TỬ BÁO CÁO LÝ THUYẾT MẬT MÃ Đề tài: HỆ MẬT BẤT ĐỐI XỨNG RSA Giảng viên hướng dẫn: PGS.TS Hà Duyên Trung Sinh viên thực hiện: Họ tên Mã sinh viên Mã lớp Phạm Chính Hiệp 20192839 137309 Nguyễn Mạnh Tùng 20193182 137309 Nguyễn Danh Đức 20192779 137309 Tô Quang Sáng 20193077 137309 Hà Nội, 2/2023 MỤC LỤC CHƯƠNG CƠ SỞ LÝ THUYẾT Giới thiệu hệ mật bất đối xứng 1.1 Sơ lược mã hoá đối xứng bất đối xứng 1.2 Tại cần mã hoá bất đối xứng? Cơ sở toán học 2.1 Số nguyên tố 2.2 Thuật tốn tìm ước chung lớn 2.3 Thuật toán Modulo 2.4 Thuật tốn tìm nghịch đảo nhân 10 CHƯƠNG HỆ MẬT RSA 12 Giới thiệu hệ mật mã RSA .12 1.1 Giới thiệu chung .12 1.2 Mô tả sơ lược 13 Quy trình tạo khóa 14 2.1 Thuật toán .14 2.2 Một số phương pháp tìm số nguyên tố p, q 15 2.3 Mã hóa giải mã 16 Tính bảo mật 18 Một số cách công .19 4.1 Tấn công dựa thời gian .19 4.2 Tấn cơng lựa chọn thích nghi mã 20 Chữ ký số 20 5.1 Khái niệm chữ ký số 20 5.2 Quy trình tạo xác minh chữ ký số .21 CHƯƠNG MÔ PHỎNG HỆ MẬT RSA 24 Mô hệ mật RSA 24 Kết luận 27 TÀI LIỆU THAM KHẢO 28 LỜI NÓI ĐẦU Bảo mật ngành cơng nghiệp tồn cầu lớn vơ đa dạng Cho dù việc bảo vệ thông tin cá nhân hay bảo vệ sở hạ tầng tiện ích, “cảnh giới đe dọa” ngày phức tạp đòi hỏi hội tụ an ninh mạng hình thức vật lý, truyền thống để ngăn chặn hành vi trộm cắp hình thức hoạt động tội phạm khác Ngày nay, với phát triển mạnh mẽ cơng nghệ thơng tin, mạng máy tính trở thành phương tiện hữu dụng phục vụ công tác điều hành, trao đổi thông tin lĩnh vực xã hội Song song với việc ứng dụng công nghệthông tin sống, đặc biệt việc sửdụng mạng internet mơi trường giao tiếp vấn đề an tồn thơng tin dữliệu q trình gửi nhận thơng qua mạng có vai trị quan trọng Vì vậy, đề tài “Hệ mật bất đối xứng RSA”, nghiên cứu phương pháp mã hóa/giải mã hóa với hệ mật RSA – hệ mật mã ứng dụng rộng rãi nhiều lĩnh vực bảo mật Song đề tài nêu số phương pháp công hệ mật RSA đưa phương án bảo mật, chống công “tin tặc” đảm bảo an toàn, tin cậy cho người dùng,… Do kiến thức khả hạn chế, nên chúng em mong thầy đọc đưa nhận xét để chúng em thiếu sót, sai sót cịn tồn Chúng em xin trân thành cảm ơn! DANH MỤC HÌNH ẢNH Hình 0.1 Mơ hình hệ mã hóa bất đối xứng Hình 0.2 Thuật tốn tìm ước chung lớn Hình 0.3 Tốn tử modulo Hình 0.4 Tâp dư Hình 0.5 Khái niệm đồng dư 10 Hình 0.6 Thuậ tốn tìm nghịch đảo nhân .11 Hình 0.1 Hệ mật RSA 12 Hình 0.2 Clifford Cocks – người phát minh thuật toán RSA .13 Hình 0.3 Mơ tả mã hóa RSA 13 Hình 0.4 Thuật tốn tạo khóa .14 Hình 0.5 Mã hóa giải mã 17 Hình 0.6 Bảo mật hệ thống RSA 18 Hình 0.7 Chữ ký số .20 Hình 0.8 Những xử lý mơ hình chữ ký số 21 Hình 0.9 Tạo chữ ký số RSA 22 Hình 0.10 Thẩm định chữ ký số RSA 23 Hình 0.1 Giao diện mơ hệ mật RSA 24 Hình 0.2 Chươn trình mã hóa giải mã .25 Hình 0.3 Chương trình mơ mã hóa giải mã sau thay đổi rõ 26 DANH MỤC BẢNG BIỂU Bảng 0.1 Ví dụ tìm ước chung lớn Bảng 0.2 Ví dụ tìm nghịch đảo nhân 11 CHƯƠNG CƠ SỞ LÝ THUYẾT Giới thiệu hệ mật bất đối xứng 1.1 Sơ lược mã hoá đối xứng bất đối xứng Khi tìm hiểu an tồn thơng tin ta biết đến hai loại mã hố phổ biến mã hoá đối xứng (symmetric cryptography) mã hoá bất đối xứng (asymmetric cryptography) Về thì: u Mã hố đối xứng (hay cịn gọi mã hố bí mật): Nói đơn giản người ta dùng chìa khố để khố mở thơng tin cần giữ bí mật Và hai bên gửi nhận thơng tin phải có chìa khố u Mã hố bất đối xứng (hay cịn gọi mã hố cơng khai): Có thể hiểu người ta dùng hai chìa khố khác để khố mở khố thơng tin bí mật public key công khai, gửi đến đối tượng cần mã hố thơng tin, cịn private key giữ bí mật, đóng vai trị chìa khố vạn mở tất thơng tin khoá public key 1.2 Tại cần mã hoá bất đối xứng? Nói ngắn gọn ứng dụng bạn dùng hàng ngày Facebook, Gmail, Amazon, PayPal v.v sử dụng giao thức HTTPs Có thể hiểu giao thức HTTPs an tồn HTTP tồn thơng tin truyền client server bảo vệ mã hoá SSL/TSL SSL/TSL hoạt động dựa hai loại mã hố đối xứng bất đối xứng Nhờ mà đảm bảo bí mật thực giao dịch có chứa thơng tin nhạy cảm Internet mà không bị đánh cắp thông tin suốt q trình truyền nhận liệu Có thể nói, khơng có mật mã, đặc biệt mã hố bất đối xứng khơng có thương mại điện tử Về bản, HTTP truyền liệu dạng plain text, nghĩa nghe liệu bạn truyền nhận với server đọc can thiệp nội dung (man-in-the-middle attack) Ngay dùng mã hoá đối xứng để encrypt decrypt thơng tin truyền nhận có lỗ hổng hai bên phải trao đổi key mã hố giải mã được, attacker tóm key đọc thơng tin thường Hình 0.1 Mơ hình hệ mã hóa bất đối xứng Điểm yếu mã hoá đối xứng khắc chế mã hoá bất đối xứng Ý tưởng thay gửi chìa khố cho phía client, server gửi ổ khố, để client khố thơng điệp bí mật hộp, có server giải mã Cho nên client không đọc thơng điệp nhau, có sever với private key mở khoá hộp (Trên thực tế public key vừa dùng để mã hố vừa dùng để giải mã thơng tin nhận gửi lên server!) Cơ sở toán học 2.1 Số nguyên tố u Một số nguyên dương gọi số nguyên tố có hai ước Chẳng hạn: 2, 3, 5, 7, 11,…, 997,… u Số nguyên tố hai số có chung ước 2.2 Thuật tốn tìm ước chung lớn Ước chung lớn (Greatest Common Divisor - GCD) giá trị số tự nhiên sử dụng để định nghĩa ước chung lớn hai nhiều số tự nhiên Ước lớn hai số tự nhiên số lớn mà hai số chia hết Trong toán học, giải thuật Euclid (hay thuật toán Euclid) giải thuật để tính ước chung lớn (ƯCLN) hai số nguyên, số lớn chia hai số nguyên với số dư khơng u Thuật tốn Euclid cần đảm bảo: Ø Dữ kiện 1: gcd(a, 0) = a Ø Dữ kiện 2: gcd(a, b) = gcd(b, r), r phần dư phép chia a cho b Hình 0.2 Thuật tốn tìm ước chung lớn u Ví dụ: Tìm ước chung lớn 2740 và1760 Bảng 0.1 Ví dụ tìm ước chung lớn q r1 r2 r 2740 1760 980 1760 980 780 980 780 200 780 200 180 200 180 20 180 20 20 u Như vậy: gcd(2740, 1760) = 20 2.3 Thuật toán Modulo Phép tốn modulo phép tốn tìm số dư phép chia số Cho hai số dương, a - số bị chia n - số chia Phép a modulo n (viết tắt a mod n) số dư phép chia có dư Euclid a cho n u Toán tử Modulo Toán tử modulo hiển thị dạng mod Đầu vào thứ hai (n) gọi môđun Đầu r gọi số dư Hình 0.3 Tốn tử modulo u Tập dư Phép toán modulo tạo tập hợp, số học mơđun gọi tập hợp có dư lượng modulo n, hay cịn gọi Zn Hình 0.4 Tâp dư u Tính đồng dư Để hai số nguyên đồng dư, sử dụng tốn tử đồng dư (≡) Ví dụ: ≡ 12 (mod 10) 13 ≡ 23 (mod 10) ≡ (mod 5) ≡ 13 (mod 5) Quy trình tạo khóa 2.1 Thuật tốn Giả sử A B cần trao đổi thơng tin bí mật thơng qua kênh khơng an tồn (ví dụ Internet) Với thuật toán RSA, A cần tạo cho cặp khóa gồm khóa cơng khai khóa bí mật theo bước sau: u Bước 1: Chọn số nguyên tố lớn p q với 𝑝 ≠ 𝑞, lựa chọn ngẫu nhiên độc lập u Bước 2: Tính: 𝑛 = 𝑝𝑞 u Bước 3: Tính giá trị hàm số Euler 𝜙(𝑛) = (𝑝 − 1)(𝑞 − 1) u Bước 4: Chọn số tự nhiên 𝑒 cho < 𝑒 < 𝜙(𝑛) số nguyên tố với 𝜙(𝑛) u Bước 5: Tính: 𝑑 cho 𝑑𝑒 ≡ (𝑚𝑜𝑑 𝜙(𝑛)) Hình 0.4 Thuật tốn tạo khóa Một số lưu ý: u Các số nguyên tố thường chọn phương pháp thử xác suất u Các bước thực giải thuật Euclid mở rộng u Bước viết cách khác: Tìm số tự nhiên 𝑥 cho: 𝑥(𝑝 − 1)(𝑞 − 1) + (2) � � u Bước ta sử dụng 𝜆 = 𝐿𝐶𝑀(𝑝 − 1, 𝑞 − 1) 𝑑 = thay cho 𝜙 = (𝑝 − 1)(𝑞 − 1) 14 2.2 Một số phương pháp tìm số nguyên tố p, q 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 Phép kiểm tra số nguyên tố thực sau: u Phương pháp thô sơ: Phương pháp đơn giản để kiểm tra số 𝑛 có số ngun tố khơng kiểm tra xem có chia hết cho số 𝑚 từ đến 𝑛 − hay không Nếu 𝑛 chia hết cho số 𝑚 𝑛 hợp số, ngược lại 𝑛 số nguyên tố u Kiểm tra theo xác suất: Các phép kiểm tra tính nguyên tố hay dùng thuật toán ngẫu nhiên Giả sử có mệnh đề Q(p, a) với số nguyên tố 𝑝 số tự nhiên 𝑎 ≤ 𝑝 Nếu 𝑛 số tự nhiên lẻ mệnh đề Q(n,a) với 𝑎 ≤ 𝑛 lấy ngẫu nhiên, có khả số nguyên tố Ta đưa thuật toán, kết luận 𝑛 số ngun tố Nó thuật tốn ngẫu nhiên hay thuật toán xác suất Trong thuật toán loại này, dùng kiểm tra ngẫu nhiên không kết luận số nguyên tố hợp số kết luận hợp số số nguyên tố Xác suất sai phép kiểm tra giảm xuống nhờ việc chọn dãy độc lập số 𝑎; với số 𝑎 xác suất để thuật toán kết luận hợp số số nguyên tố nhỏ nửa sau k lần thử độc lập, xác suất sai nhỏ 2−𝑘 , độ tin cậy thuật toán tăng lên theo 𝑘 o Cấu trúc phép kiểm tra ngẫu nhiên là: · Chọn số ngẫu nhiên 𝑎 · Kiểm tra hệ thức số 𝑎 số 𝑛 cho Nếu hệ thức sai chắn 𝑛 hợp số (số 𝑎 "bằng chứng" chứng tỏ 𝑛 hợp số) dừng thuật toán · Lặp lại bước đạt số lần định gặp bước o Sau loạt lần kiểm tra, khơng tìm chứng chứng tỏ 𝑛 hợp số ta kết luận 𝑛 số nguyên tố u Phép kiểm tra tất định: Vào năm 2002, Manindra Agrawal, Nitin Saxena Neeraj Kayal đề xuất giải thuật tất định kiểm tra tính nguyên tố, kiểm tra AKS, có khả chạy 𝑂((log 𝑛)12 ) Trên thực tế thuật toán chạy chậm phương pháp xác suất 15 u Phương pháp lý thuyết số: Có vài phương pháp khác lý thuyết số để kiểm tra tính nguyên tố kiểm tra Lucas-Lehmer kiểm tra Proth Chúng thường dựa vào việc phân tích 𝑛 + 1, 𝑛 − 1, số khác Tuy nhiên phương pháp không dừng cho số tự nhiên 𝑛 mã cho số có dạng đặc biệt Kiểm tra Lucas-Lehmer dựa tính chất: bậc (multiplicative order) số 𝑎 modulo 𝑛 𝑛 − với 𝑛 số nguyên tố 𝑎 nguyên thuỷ (primitive root) modulo 𝑛 Nếu ta biểu diễn 𝑎 theo 𝑛, ta thấy 𝑛 nguyên tố 𝑝 𝑞 cần chọn khơng q gần để phịng trường hợp phân tích 𝑛 phương pháp phân tích Fermat Ngồi ra, 𝑝 − ℎ𝑜ặ𝑐 𝑞 − có thừa số ngun tố nhỏ 𝑛 dễ dàng bị phân tích 𝑝 𝑣à 𝑞 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 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í 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 đốn nửa chữ số 𝑝 hay 𝑞 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 𝑑 phải đủ lớn Năm 1990, Wiener giá trị 𝑝 nằm khoảng 𝑞 2𝑞 𝑑 < 𝑛1/4 tìm 𝑑 từ 𝑛 𝑒 2.3 Mã hóa giải mã 2.3.1 Mã hóa Giả sử B muốn gửi đoạn thông tin mã M cho A Đầu tiên B chuyển mã M thành số 𝑚 < 𝑛 theo hàm đảo ngược (từ m xác định lại M) thỏa thuận trước Lúc B có 𝑚 biết 𝑛 𝑒 A gửi, B tính 𝑐 mã hóa 𝑚 theo cơng thức: 𝑐 = 𝑚𝑒 𝑚𝑜𝑑 𝑛 (3) Hàm tính dễ dàng sử dụng phương pháp tính hàm mũ (theo mơđun) thuật tốn bình phương nhân Cuối B gửi 𝑐 cho A 16 2.3.2 Giải mã A nhận 𝑐 từ B biết khóa bí mật 𝑑 A tìm 𝑚 từ 𝑐 theo công thức sau: 𝑐 = 𝑚𝑒 𝑚𝑜𝑑 𝑛 (4) Biết 𝑚, A tìm lại M theo phương pháp thỏa thuận trước Quá trình giải mã hoạt động ta có: 𝑐 𝑑 ≡ (𝑚𝑒 )𝑑 ≡ 𝑚𝑒𝑑 (𝑚𝑜𝑑 𝑛) (5) Do 𝑒𝑑 ≡ (𝑚𝑜𝑑 𝑝 − 1) 𝑣à 𝑒𝑑 ≡ (𝑚𝑜𝑑 𝑞 − 1), (theo định lý Fermat nhỏ) nên: 𝑚𝑒𝑑 ≡ 𝑚 (𝑚𝑜𝑑 𝑝) (6) 𝑚𝑒𝑑 ≡ 𝑚 (𝑚𝑜𝑑 𝑞) (7) Do 𝑝 𝑣à 𝑞 hai số nguyên tố nhau, áp dụng định lý Số dư Trung Quốc, ta có: 𝑚𝑒𝑑 ≡ 𝑚 (𝑚𝑜𝑑 𝑝𝑞) ℎ𝑎𝑦 𝑐 𝑑 ≡ 𝑚 (𝑚𝑜𝑑 𝑛) (8) Hình 0.5 Mã hóa giải mã 17 Tính bảo mật Độ an toàn hệ thống RSA dựa vấn đề tốn học: tốn phân tích thừa số nguyên tố số nguyên lớn tốn RSA Nếu tốn khó (khơng tìm thuật tốn hiệu để giải chúng) khơng thể thực việc phá mã tồn RSA Phá mã phần phải ngăn chặn phương pháp chuyển đổi rõ an tồn Hình 0.6 Bảo mật hệ thống RSA Bài tốn RSA tốn tính bậc 𝑒 mơđun n (với n hợp số): tìm số m cho 𝑚𝑒 = 𝑐 𝑚𝑜𝑑 𝑛, (𝑒, 𝑛) khóa cơng khai 𝑐 mã Hiện phương pháp triển vọng giải toán phân tích 𝑛 thừa số nguyên tố Khi thực điều này, kẻ công tìm số mũ bí mật 𝑑 từ khóa cơng khai giải mã theo quy trình thuật tốn Nếu kẻ cơng tìm số nguyên tố 𝑝 𝑞 cho: 𝑛 = 𝑝𝑞 dễ dàng tìm giá trị (𝑝 − 1)(𝑞 − 1) qua xác định 𝑑 từ 𝑒 Chưa có phương pháp tìm máy tính để giải tốn thời gian đa thức (polynomial-time) Tuy nhiên người ta chưa chứng minh điều ngược lại (sự không tồn thuật tốn) Xem thêm phân tích thừa số nguyên tố vấn đề Tại thời điểm năm 2005, số lớn phân tích thừa số ngun tố có độ dài 663 bít với phương pháp phân tán khóa RSA có độ dài từ 1024 tới 2048 bít Một số chun gia cho khóa 1024 bít sớm bị phá vỡ (cũng có nhiều người phản đối việc này) Với khóa 4096 bít khơng có khả bị phá vỡ tương lai gần Do đó, người ta thường cho RSA đảm bảo an toàn với điều kiện 𝑛 chọn đủ lớn Nếu 𝑛 có độ dài 256 bít ngắn hơn, bị phân tích vài với máy tính cá nhân dùng phần mềm có sẵn Nếu n có độ dài 512 bít, bị phân tích vài trăm 18 máy tính thời điểm năm 1999 Một thiết bị lý thuyết có tên TWIRL Shamir Tromer mô tả năm 2003 đặt câu hỏi độ an toàn khóa 1024 bít Vì người ta khuyến cáo sử dụng khóa có độ dài tối thiểu 2048 bít Năm 1993, Peter Shor cơng bố thuật tốn Shor rằng: máy tính lượng tử (trên lý thuyết) giải tốn phân tích thừa số thời gian đa thức Tuy nhiên, máy tính lượng tử chưa thể phát triển tới mức độ nhiều năm Năm 2010, nhà khoa học thuộc Đại học Michigan công bố phát kẽ hở hệ thống mật mã hoá RSA Cách phá vỡ hệ thống, lấy khố bí mật RSA 1024-bit vài ngày thay vài năm công theo cách thông thường - công brute force (dị tìm lần lượt) Các nhà khoa học tạo điện lớn để gây lỗi hệ thống, từ giúp tìm khố bí mật Việc công thực FPGA Báo cáo trình bày hội nghị DATE 2010 diễn Dresden, Đức tháng năm 2010 Một số cách công 4.1 Tấn công dựa thời gian Vào năm 1995, Paul Kocher mô tả dạng công lên RSA: kẻ công nắm đủ thơng tin phần cứng thực mã hóa xác định thời gian giải mã số mã lựa chọn nhanh chóng tìm khóa 𝑑 Dạng cơng áp dụng hệ thống chữ ký điện tử sử dụng RSA Năm 2003, Dan Boneh David Brumley chứng minh dạng công thực tế hơn: phân tích thừa số RSA dùng mạng máy tính (Máy chủ web dùng SSL) Tấn công khai thác thông tin rị rỉ việc tối ưu hóa định lý số dư Trung quốc mà nhiều ứng dụng thực Để chống lại công dựa thời gian đảm bảo q trình giải mã ln diễn thời gian không đổi văn mã Tuy nhiên, cách làm giảm hiệu suất tính tốn Thay vào đó, hầu hết ứng dụng RSA sử dụng kỹ thuật gọi che mắt Kỹ thuật dựa tính nhân RSA: thay tính 𝑐 𝑑 𝑚𝑜𝑑 𝑛, A chọn số ngẫu nhiên r tính (𝑟 𝑒 𝑐)𝑑 𝑚𝑜𝑑 𝑛 Kết phép tính 𝑟𝑚 𝑚𝑜𝑑 𝑛 tác động r loại bỏ cách nhân kết với nghịch đảo r Đối với văn mã, người ta chọn giá trị r Vì vậy, thời gian giải mã khơng cịn phụ thuộc vào giá trị văn mã 19 ... SỞ LÝ THUYẾT Giới thiệu hệ mật bất đối xứng 1.1 Sơ lược mã hố đối xứng bất đối xứng Khi tìm hiểu an tồn thơng tin ta biết đến hai loại mã hoá phổ biến mã hoá đối xứng (symmetric cryptography) mã. ..MỤC LỤC CHƯƠNG CƠ SỞ LÝ THUYẾT Giới thiệu hệ mật bất đối xứng 1.1 Sơ lược mã hoá đối xứng bất đối xứng 1.2 Tại cần mã hoá bất đối xứng? Cơ sở toán học ... xứng RSA? ??, nghiên cứu phương pháp mã hóa/giải mã hóa với hệ mật RSA – hệ mật mã ứng dụng rộng rãi nhiều lĩnh vực bảo mật Song đề tài nêu số phương pháp công hệ mật RSA đưa phương án bảo mật,