Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 33 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
33
Dung lượng
1,78 MB
Nội dung
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA VIỄN THÔNG BÀI TIỂU LUẬN AN NINH MẠNG VIỄN THÔNG GIẢI THUẬT RSA Giải thuật RSA MỤC LỤC LÝ DO CHỌN ĐỀ TÀI MỤC ĐÍCH VÀ PHẠM VI TIỂU LUẬN PHÂN CÔNG LÀM VIỆC GIỚI THIỆU 2 GIẢI THUẬT RSA 2.1 Mô tả giải thuật 2.2 Các khía cạnh tính tốn 2.2.1 Mã hóa giải mã 2.2.2 Tạo khóa VẤN ĐỀ BẢO MẬT VỀ RSA 10 3.1 Tấn công cưỡng 11 3.2 Tấn cơng tốn học 12 3.3 Tấn công thời gian 13 3.4 Tấn công dựa lỗi phần cứng 14 3.5 Tấn cơng mã lựa chọn thích ứng đệm mật mã 15 ỨNG DỤNG 16 4.1 Bảo mật liệu 16 4.2 Chữ kỹ số (Digital Signature) 18 KẾT LUẬN 20 II MÔ PHỎNG GIẢI THUẬT RSA BẰNG LẬP TRÌNH PYTHON 20 Đầu tiên ta xây dựng hàm 20 Chạy thực thi mã hóa giải thuật RSA với nội dung mã hóa 29 TÀI LIỆU THAM KHẢO 31 LÝ DO CHỌN ĐỀ TÀI Đây giải thuật mã hóa khóa cơng khai sử dụng phổ biến internet giới thiệu mơn An ninh mạng viễn thơng, tò mò ham học hỏi nên chúng em định tìm hiểu thêm giải thuật để hiểu rõ cách hoạt động ứng dụng cách chi tiết Giải thuật RSA MỤC ĐÍCH VÀ PHẠM VI TIỂU LUẬN Mục đích tập trình bày lịch sử đời giải thuật mã hóa khóa cơng khai RSA đến giải thuật Tiếp theo điểm yếu ứng dụng internet PHÂN CÔNG LÀM VIỆC Trần Quang Thành : Trình bày giải thuật, số vấn đề liên quan đến mã hóa, giải mã, tạo phân phối khóa, Nguyễn Hữu Huy: Trình bày vấn đề bảo mật liên quan đến RSA, số chứng minh, minh họa… Lưu Thị Nguyệt Anh: Trình bày ứng dụng RSA , ví dụ thực tế, Trên nội dung cá nhân cịn thực tế phần có đóng góp tất thành viên GIỚI THIỆU Ý tưởng hệ thống mật mã khóa cơng khai-riêng tư khơng đối xứng Whitfield Diffie Martin Hellman , người công bố khái niệm vào năm 1976 Họ đưa chữ ký số cố gắng áp dụng lý thuyết số Cơng thức họ sử dụng khóa bí mật dùng chung tạo từ phép lũy thừa số, môđun số nguyên tố Tuy nhiên, họ bỏ ngỏ vấn đề nhận hàm chiều, khó khăn nên chưa nghiên cứu kỹ lưỡng vào thời điểm Ron Rivest , Adi Shamir Leonard Adleman Viện Công nghệ Massachusetts , thực nhiều nỗ lực suốt năm để tạo hàm chiều mà khó đảo ngược Trong mật mã học, RSA (Rivest – Shamir – Adleman) thuật toán mật mã hóa khóa cơng khai Đây thuật tố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 Nó đánh dấu tiến vượt bậc lĩnh vực mật mã học việc sử dụng khóa cơng cộng RSA sử dụng phổ biến Giải thuật RSA thương mại điện tử cho đảm bảo an tồn với điều kiện độ dài khóa đủ lớn Từ viết tắt RSA xuất phát từ họ Ron Rivest , Adi Shamir Leonard Adleman , người cơng khai mơ tả thuật tốn vào năm 1977 GIẢI THUẬT RSA 2.1 Mô tả giải thuật Các khóa cho thuật tốn RSA tạo theo cách sau: Chọn hai số nguyên tố phân biệt p q ○ Vì mục đích bảo mật, số nguyên p q nên chọn ngẫu nhiên phải có độ lớn tương tự độ dài khác vài chữ số để làm cho việc tính tốn khó ○ p q giữ bí mật Tính n = pq ○ n sử dụng làm mơđun cho khóa cơng khai khóa riêng Độ dài nó, thường biểu thị bit, độ dài khóa ○ n phát hành phần khóa cơng khai Tính λ ( n ) (λ hàm trọng tâm Carmichael) Vì n = pq nên λ ( n ) = lcm ( λ ( p ), λ ( q )) (lcm: bội chung nhỏ nhất) Vì p q số nguyên tố nên: λ(p)=φ(p)=p-1 λ(q)=q-1 => λ( n ) = lcm (p - 1, q - 1) ○ λ ( n ) giữ bí mật ○ Lcm tính thơng qua thuật tốn Euclide (thuật tốn dùng để tính ước chung lớn hai số nguyên) Vì: lcm (a, b) = | 𝑎𝑏 | 𝑔𝑐𝑑 (𝑎 ,𝑏) Chọn số nguyên e cho < e < λ ( n ) gcd (e , λ ( n )) = 1, nghĩa e λ ( n ) số nguyên tố Giải thuật RSA ○ e có độ dài bit ngắn trọng lượng Hamming nhỏ dẫn đến mã hóa hiệu , giá trị chọn phổ biến cho e 16 + = 65537 Giá trị nhỏ (và nhanh nhất) có e 3, giá trị nhỏ e chứng minh an toàn số cài đặt ○ e phát hành phần khóa cơng khai ○ e gọi số mũ công khai số mũ mã hóa số mũ Xác định d d ≡ e −1 (mod λ ( n )), nghĩa là, d e nhân nghịch đảo modulo λ ( n ) ○ Điều có nghĩa tìm d cho phương trình d ⋅ e ≡ (mod λ(n)) , d tính tốn cách hiệu cách sử dụng thuật tốn Euclid mở rộng , nhờ e λ ( n ) chuẩn, phương trình nói dạng đồng Bézout , d hệ số ○ d giữ bí mật dạng số mũ khóa riêng ○ d gọi số mũ bí mật số mũ giải mã Khóa cơng khai bao gồm môđun n số mũ công khai e Khóa riêng tư bao gồm số mũ d riêng tư, phải giữ bí mật Và p , q , λ ( n ) phải giữ bí mật chúng sử dụng để tính d Trên thực tế, tất chúng bị loại bỏ sau tính tốn d Trong phiên RSA ban đầu, hàm Euler φ ( n ) = ( p - 1).( q - 1) sử dụng thay cho λ(n) để tính số mũ riêng d Vì φ ( n ) ln chia hết cho λ ( n ) nên thuật toán hoạt động tương tự Việc sử dụng hàm Euler totient coi hệ định lý Lagrange áp dụng cho nhóm nhân số nguyên modulo pq Vì vậy, d thỏa mãn d.e ≡ (mod φ ( n )) thỏa mãn d.e ≡ (mod λ(n)) Tuy nhiên, tính tốn d modulo φ (n) mang lại kết lớn mức cần thiết (tức d > λ(n)) Hầu hết triển khai RSA chấp nhận số mũ tạo hai phương pháp (nếu chúng sử dụng số mũ riêng d , thay sử dụng phương pháp giải mã tối ưu hóa dựa định lý phần dư Trung Quốc (CRT) ), số tiêu chuẩn FIPS 186-4 yêu cầu d < λ ( n ) Bất kỳ số mũ riêng "quá khổ" không đáp ứng tiêu chí ln bị giảm modulo λ ( n ) để thu số mũ tương đương nhỏ Giải thuật RSA Vì thừa số chung (p - 1) (q - 1) có phân tích nhân tử n - = pq - = (p - 1) (q - 1) + (p - 1) + (q - 1) , khuyến nghị (p - 1) (q - 1) có yếu tố chung nhỏ, có bên cạnh yếu tố cần thiết ➢ Tóm lại bước RSA ban đầu: Chọn hai số nguyên tố lớn p q (p ≠ q), lựa chọn ngẫu nhiên độc lập Tính n = p.q Tính giá trị φ(n) = (p -1).(q - 1) Chọn số tự nhiên e cho 1< e (𝑞𝑖𝑛𝑣 𝑞) 𝑚𝑜𝑑 (𝑝) = 𝑚1 = 𝑐 𝑑𝑝 𝑚𝑜𝑑 (𝑝) 𝑚2 = 𝑐 𝑑𝑞 𝑚𝑜𝑑 (𝑞) h= (𝑞𝑖𝑛𝑣 (𝑚1 - 𝑚2 ) mod (p) => m = 𝑚2 + h.q ❖ Áp dụng cho ví dụ 1: 𝑑𝑝 = 𝑑 𝑚𝑜𝑑 (𝑝 − 1) = 413 𝑚𝑜𝑑 (61 − 1) = 53 𝑑𝑞 = 𝑑 𝑚𝑜𝑑 (𝑞 − 1) = 413 𝑚𝑜𝑑 (53 − 1) = 49 Giải thuật RSA 𝑞𝑖𝑛𝑣 = 𝑞 −1 𝑚𝑜𝑑 (𝑝) = 53−1 𝑚𝑜𝑑 61 = 38 => (𝑞𝑖𝑛𝑣 𝑞) 𝑚𝑜𝑑 (𝑝) = (38.53)𝑚𝑜𝑑 61 = 𝑚1 = 𝑐 𝑑𝑝 𝑚𝑜𝑑 (𝑝) = 279053 𝑚𝑜𝑑 61 = 𝑚2 = 𝑐 𝑑𝑞 𝑚𝑜𝑑 (𝑞) = 279049 𝑚𝑜𝑑 53 = 12 h= (𝑞𝑖𝑛𝑣 (𝑚1 - 𝑚2 ) mod (p) = (38.(12 - 4)) mod 61 = => m = 𝑚2 + h.q = 12 + 1.53 = 65 2.2.2 Tạo khóa Việc tìm số ngun 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 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 đoá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 Giá trị thường dùng 65537 giá trị Giải thuật RSA 4.2 Chữ kỹ số (Digital Signature) Giả sử Alice sử dụng khóa cơng khai Bob để gửi cho anh tin nhắn mã hóa Trong tin nhắn, tự xưng Alice, Bob khơng có cách để xác minh tin nhắn Alice sử dụng khóa cơng khai Bob để gửi cho anh tin nhắn mã hóa Để xác minh nguồn gốc tin nhắn, RSA sử dụng để làm chữ ký số Giả sử Alice muốn gửi tin nhắn ký cho Bob Cô sử dụng khóa riêng vào chữ kỹ số (vì khóa riêng Alice có mà khơng khác có) Cô tạo giá trị băm tin nhắn, nâng lên thành lũy thừa d (modulo n), gắn "chữ ký" vào tin nhắn Khi Bob nhận tin nhắn ký, sử dụng thuật toán băm kết hợp với khóa cơng khai Alice Anh ta nâng chữ ký lên thành lũy thừa e (modulo n), so sánh giá trị băm kết với giá trị băm tin nhắn Nếu hai giá trị nhau, anh biết có phải Alice kẻ giả mạo Thuật tốn mơ tả sau : Alice : h = hash(m) H = ℎ𝑑 𝑚𝑜𝑑 𝑛 Bob: H’ = ℎ𝑑.𝑒 𝑚𝑜𝑑 𝑛 Xác thực khi: H = H’ 18 Nhóm 02 Giải thuật RSA Do đó, khóa hốn đổi mà khơng làm tính tổng qt, khóa riêng cặp khóa sử dụng để: Giải mã tin nhắn dành cho người nhận, tin nhắn mã hóa có khóa cơng khai Mã hóa tin nhắn giải mã ai, mã hóa người, điều cung cấp chữ ký điện tử 19 Nhóm 02 Giải thuật RSA KẾT LUẬN Như phân tích nội dung thấy ưu nhược điểm thuật toán Mặc dù giải thuật đưa từ vài chục năm dùng phổ biến internet cung cấp tính bảo mật, xác thực cần thiết ứng dụng chữ ký số, kể tốc độ thực hệ RSA điểm yếu so với hệ mật mã khóa đối xứng Theo ước tính, thực mã hóa giải mã hệ mật mã RSA chậm 100 lần so với hệ mã khóa đối xứng DES (Khi thực phần mềm) Và chậm 1000 lần so với DES (Khi thực phần cứng) Ngồi thuật tốn RSA phần lớn tốn chi phí thực phép tính : Tạo khóa, mã hóa, giải mã Q trình mã hóa, giải mã tương với chi phí thực phép tính lũy thừa module n II MƠ PHỎNG GIẢI THUẬT RSA BẰNG LẬP TRÌNH PYTHON Đầu tiên ta xây dựng hàm MyMath : hàm toán học MyBase: hàm chuyển đổi số Primetest: hàm kiểm tra tính nguyên tố CreateKey : tạo khóa cơng khai khóa riêng encode : hàm mã hóa decode : giải mã GenePrime : Hàm sinh số nguyên tố xác xuất Tạo thư mục tên “ Data “ thư mục với file py ( tức project) Trong thư mục “Data” tạo file text tên:” NoiDungMaHoa” để nhập liệu muốn mã hóa ❖ Dưới code hàm trên: MyMath : hàm toán học 20 Nhóm 02 Giải thuật RSA #powMod(a, b, m): Trả kết phép tính a^b mod m def powMod(a, b, m): x = [] while b != 0: x.append(b & 1) b = b >> sz = len(x) po = [a%m] for i in range(1,sz): p = (po[i-1]*po[i-1])%m po.append(p) r = for i in range(sz): if(x[i] != 0): r*= po[i] r%= m return r #GCD(a, b):Trả UCLN(a, b) def GCD(a, b): if b == 0: return a return GCD(b, a%b) #GCD_extended(a, b): Trả số x,y,z thỏa mãn xa + yb = z = UCLN(a, b) # a*x + b*y = z def GCD_extended(a, b): u1, u2, u3 = 1, 0, a v1, v2, v3 = 0, 1, b while v3 != 0: q = u3//v3 t1, t2, t3 = u1 - q*v1, u2 - q*v2, u3 - q*v3 u1, u2, u3 = v1, v2, v3 v1, v2, v3 = t1, t2, t3 return u1, u2, u3 MyBase: hàm chuyển đổi số dig ="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-+" def getId(ch): if ch == '-': return 62 if ch == '+': return 63 if ch