TIỂU LUẬN MÔN BẢO MẬT THÔNG TIN Mật mã AffineBài tiểu luận bao gồm các phần:Chương 1: AffineChương 2: Bài tập minh họaChương 3: Đánh giá hệ mã AffineChương 4: Cài đặt chương trình thử nghiệm hệ mã Affine trên Python
TRƯỜNG ĐẠI HỌC ĐỒNG THÁP KHOA SƯ PHẠM TOÁN - TIN BÀI TIỂU LUẬN MÔN BẢO MẬT THÔNG TIN Người thực hiện: Trương Ngọc Thơ Lớp: ĐHSTIN20-L2-BL GVHD: ThS Nguyễn Trọng Nhân Bạc Liêu, tháng 12 năm 2021 MỤC LỤC Mở đầu Nội dung Chương Mã Affine Chương Bài tập minh hoạ Chương Đánh giá hệ mã Affine 14 Chương Cài đặt chương trình thử nghiệm hệ mã Affine Python 17 Kết luận 20 Kết đạt 20 Hạn chế 20 Hướng phát triển 20 Tài liệu tham khảo 21 MỞ ĐẦU Ngày nay, việc ứng dụng công nghệ thông tin vào ngành nghề mang lại nhiều lợi ích cho mặt sống Bên cạnh đưa thách thức hịa nhập tồn cầu mặt đảm bảo an tồn thơng tin Vấn đề bảo mật, xác thực quan tâm Bảo vệ an tồn thơng tin liệu chủ đề rộng, có liên quan đến nhiều lĩnh vực thực tế có nhiều phương pháp thực để bảo vệ an toàn thơng tin liệu Trong có bảo vệ an tồn thơng tin mật mã Mật mã ngành khoa học chuyên nghiên cứu phương pháp truyền tin bí mật Mật mã bao gồm : Lập mã phá mã Lập mã bao gồm hai trình: mã hóa giải mã Hiện có nhiều hệ mật mã Nếu dựa vào cách truyền khóa phân hệ mật mã thành hai loại: hệ mật mã đối xứng hệ mật mã bất đối xứng Ngoài dựa vào cách thức tiến hành mã hệ mật mã cịn chia làm hai loại mã dòng mã khối Còn dựa vào thời gian đưa hệ mật mã ta phân làm hai loại: Mật mã cổ điển (là hệ mật mã đời trước năm 1970) mật mã đại (ra đời sau năm 1970) Trong tiểu luận này, em xin trình bày loại hệ mã hoá cổ điển mã Affine Bài tiểu luận bao gồm phần: Chương 1: Affine Chương 2: Bài tập minh họa Chương 3: Đánh giá hệ mã Affine Chương 4: Cài đặt chương trình thử nghiệm hệ mã Affine Python 4 NỘI DUNG Chương 1: Mã Affine Mã dịch vòng (MDV) trường hợp đặc biệt mã thay (MTT) gồm 26 số 26! Các hốn vị 26 phần tử Một trường hợp đặc biệt khác MTT mã Affine mô tả Mật mã Affine dạng mật mã thay dùng bảng chữ cái, chữ ánh xạ tới số sau mã hóa qua hàm số toán học đơn giản Mã Affine trường hợp đặc biệt mã Caesar, chữ mã hóa với hàm Trong mã Affine, ta giới hạn xét hàm mã có dạng: e(x) = ax + b mod 26 a, b ∈ Z26 Các hàm gọi hàm Affine (chú ý a = 1, ta có MDV) Để việc giải mã thực được, yêu cầu cần thiết hàm Affine phải đơn ánh Nói cách khác, với y ∈ Z26, ta muốn có đồng thức sau: ax + b ≡ y (mod 26) phải có nghiệm x Đồng dư thức tương đương với: ax ≡ y-b (mod 26) Vì y thay đổi Z26 nên y-b thay đổi Z26 Bởi vậy, ta cần nghiên cứu phương trình đồng dư: ax ≡ y (mod 26) (y ∈ Z26 ) Ta biết rằng, phương trình có nghiệm y UCLN(a,26) = (ở hàm UCLN ước chung lớn biến nó) Trước tiên ta giả sử rằng, UCLN(a,26) = d >1 Khi đó, đồng dư thức ax ≡ (mod 26) có hai nghiệm phân biệt Z26 x = x = 26/d Trong trường hợp này, e(x) = ax + b mod 26 hàm đơn ánh khơng thể hàm mã hố hợp lệ Ví dụ, UCLN(4,26) = nên 4x +7 khơng hàm mã hố hợp lệ: x x+13 mã hoá thành giá trị x ∈ Z26 Ta giả thiết UCLN(a,26) = Giả sử với x1 x2 thảo mãn: ax1 ≡ ax2 (mod 26) Khi a(x1- x2) ≡ 0(mod 26) 26 | a(x1- x2) Bây ta sử dụng tính chất phép chia sau: Nếu UCLN(a,b)=1 a | bc a | c Vì 26 | a(x1- x2) UCLN(a,26) = nên ta có: 26 | (x1x2)tức x1 ≡ x2 (mod 26) Tới ta chứng tỏ rằng, UCLN(a,26) = đồng dư thức dạng ax ≡ y (mod 26) có (nhiều nhất) nghiệm Z26 Do đó, ta cho x thay đổi Z26 ax mod 26 nhận 26 giá trị khác theo modulo 26 đồng dư thức ax ≡ y (mod 26) có nghiệm y Khơng có đặc biệt đối vơí số 26 khẳng định Bởi vậy, cách tương tự ta chứng minh kết sau: Định lí Đồng dư thức ax ≡ b mod m có nghiệm x ∈ Zm với b ∈ Zm UCLN(a,m) = Vì 26 = x 13 nên giá trị a ∈ Z26 thoả mãn UCLN(a,26) = a = 1,3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23 25 Tham số b phần tử bấtkỳ Z26 Như vậy, mã Affine có 12 x 26 = 312 khố (dĩ nhiên số để bảo đảm an toàn) Bây ta xét toán chung với modulo m Ta cần định nghĩa khác lý thuyết số Định nghĩa Giả sử a ≥ m ≥ số ngun UCLN(a,m) = ta nói avà m nguyên tố Số số nguyên Zm nguyên tố với m thường ký hiệu ∅(m) (hàm gọi hàm Euler) Một kết quan trọng lý thuyết số cho ta giá trị ∅ (m) theo thừa số phép phân tích theo luỹ thừa số nguyên tố m (Một số nguyên p > số ngun tố khơng có ước dương khác p Mọi số nguyên m > phân tích thành tích luỹ thừa số nguyên tố theo cách Ví dụ 60 = x x 98 = x ) Số khoá mã Affine Zm ∅ (m), ∅ (m) cho theo cơng thức (Số phép chọn b m số phép chọn a ∅ (m) với hàm mã hố e(x) = ax + b) Ví dụ, m = 60, ∅ (60)= ∅ (5.22.3)= ∅ (5) ∅ (22) ∅ (3) = x x = 16 số khoá mã Affine 960 Bây ta xét xem phép toán giải mã mật mã Affine với modulo m = 26 Giả sử UCLN(a,26) = Để giải mã cần giải phương trình đồng dư y ≡ ax+b (mod 26) theo x Từ thảo luận thấy rằng, phương trình có nghiệm Z26 Tuy nhiên ta chưa biết phương pháp hữu hiệu để tìm nghiệm Điều cần thiết có thuật tốn hữu hiệu để làm việc Rất may số kết tiếp sau số học modulo cung cấp thuật toán giải mã hữu hiệu cần tìm Định nghĩa: Giả sử a ∈ Zm Phần tử nghịch đảo (theo phép nhân) a phần tử a-1∈ Zm cho aa-1 ≡ a-1ª ≡ (mod m) Bằng lý luận tương tự trên, chứng tỏ a có nghịch đảo theo modulo m UCLN(a,m) =1, nghịch đảo tồn phải Ta thấy rằng, b = a -1 a = b-1 Nếu p số nguyên tố phần tử khác khơng ZP có nghịch đảo Một vành trongđó phần tử có nghịch đảo gọi trường Trong phần sau mô tả thuật tốn hữu hiệu để tính nghịch đảo Zm với m tuỳ ý Tuy nhiên, Z26, phương pháp thử sai cũngcó thể tìm nghịch đảo phần tử nguyên tố với 26: 1-1 = 1, 3-1 = 9, 5-1 = 21, 7-1 = 15, 11-1 = 19, 17-1 =23, 25-1 = 25 (Có thể dễ dàng kiểm chứng lại điều này, ví dụ: x 15 = 105 ≡ mod 26, 7-1 = 15) Xét phương trình đồng dư y ≡ ax+b (mod 26) Phương trình tương đương với ax ≡ y-b ( mod 26) Vì UCLN(a,26) =1 nên a có nghịch đảo theo modulo 26 Nhân hai vế đồng dư thức với a-1 ta có: a-1(ax) ≡ a-1(y-b) (mod 26) Áp dụng tính kết hợp phép nhân modulo: a-1(ax) ≡ (a-1a)x ≡ 1x ≡ x Kết x ≡ a-1(y-b) (mod 26) Đây công thức tường minh cho x Như hàm giải mã là: d(y) = a-1(y-b) mod 26 Cho mô tả đầy đủ mã Affine Sau ví dụ nhỏ Cho P = C = Z26 giả sử P = { (a,b) Z26 Z26 : UCLN(a,26) =1 } Với K = (a,b) K , ta định nghĩa: eK(x) = ax +b mod 26 dK(y) = a-1(y-b) mod 26, x,y Z26 Mật mã Affine Ví dụ: Giả sử K = (7,3) Như nêu trên, 7-1 mod 26 = 15 Hàm mã hoá eK(x) = 7x+3 Và hàm giải mã tương ứng là: dK(x) = 15(y-3) = 15y -19 Ở đây, tất phép toán thực Z26 Ta kiểm tra liệudK(eK(x)) = x với x ∈ Z26 khơng? Dùng tính tốn Z26 , ta có dK(eK(x)) =dK(7x+3) =15(7x+3)-19 = x +45 -19= x 9 Chương 2: Bài tập minh họa Bài tập: Cho khoá k=(5,3) áp dụng mã hoá Affine tiến hành mã hoá giải mã rõ “TRUONGNGOCTHO” Giải MÃ HOÁ X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 T R U O N G N G O C T H O 19 17 20 14 13 13 14 19 14 Ta có khố k=(5,3) => a=5; b=3 Y1 = a.X1 +b mod 26 =5.19 + mod 26 =20 U Y2 = a.X2 +b mod 26 =5.17 + mod 26 =10 K Y3 = a.X3 +b mod 26 =5.20 + mod 26 = 25 Z Y4 = a.X4 +b mod 26 =5.14 + mod 26 =21 V Y5 = a.X5 +b mod 26 =5.13 + mod 26 10 = 16 Q Y6 = a.X6 +b mod 26 =5.6 + mod 26 =7H Y7 =a.X7 +b mod 26 =5.13 + mod 26 = 16 Q Y8 = a.X9 +b mod 26 =5.6 + mod 26 =7H Y9 = a.X9 +b mod 26 =5.14 + mod 26 = 21 V Y10 = a.X10 +b mod 26 =5.2 + mod 26 = 13 N Y11 = a.X11 +b mod 26 =5.19 + mod 26 =20 U Y12 = a.X12 +b mod 26 =5.7 + mod 26 = 12 M Y13 =a.X13 +b mod 26 =5.14 + mod 26 11 = 21 V Vậy sau mã hoá rõ “TRUONGNGOCTHO” ta thu xâu kí tự “UKZVQHHQVNUMV” GIẢI MÃ Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 U K Z V Q H H Q V N U M V 20 10 25 21 16 7 16 21 13 20 12 21 Ta có khố k=(5,3) => a=5; b=3 Tìm a-1 mod 26 =? 5.5-1 ≡ mod 26 ≡ + 26.4 mod 26 ≡ 5.21 mod 26 Vậy a-1 mod 26 = 21 X1 = a-1 (Y1 – b) mod 26 = 21( 20-3) mod 26 = 19 T X2 = a-1 (Y2 – b) mod 26 = 21( 10-3) mod 26 = 17 R X3 = a-1 (Y3 – b) mod 26 = 21( 25-3) mod 26 = 20 U X4 = a-1 (Y4 – b) mod 26 12 = 21( 21-3) mod 26 = 14 O X5 = a-1 (Y5 – b) mod 26 = 21( 16-3) mod 26 = 13 N X6 = a-1 (Y6 – b) mod 26 = 21( 7-3) mod 26 = 6G X7 = a-1 (Y7 – b) mod 26 = 21( 7-3) mod 26 = 13 N X8 = a-1 (Y8 – b) mod 26 = 21( 16-3) mod 26 = 6G X9 = a-1 (Y9 – b) mod 26 = 21( 21-3) mod 26 = 14 O X10 = a-1 (Y10 – b) mod 26 = 21(13 -3) mod 26 = 2C X11 = a-1 (Y11 – b) mod 26 = 21( 20-3) mod 26 = 19 T X12 = a-1 (Y12 – b) mod 26 13 = 21( 12-3) mod 26 = 7H X13 = a-1 (Y13 – b) mod 26 = 21(21 -3) mod 26 = 14 O Vậy sau giải mã ta thu xâu kí tự “TRUONGNGOCTHO” 14 Chương 3: Đánh giá hệ mã Affine Mã Affine nói riêng loại mật mã thay nói chung bị cơng việc phân tích tần suất ký tự, theo khơng an tồn cho thơng điệp ngắn Đặc biệt trường hợp văn ngắn, kẻ cơng hồn tồn sử dụng phương pháp cơng vét cạn (lần lượt thay ký tự mã tìm văn có ý nghĩa)! Đối với văn dài, việc công vét cạn không khả thi Việc công dựa xác suất phịng tránh việc thêm nhiễu (các ký tự vô nghĩa nội dung văn bản), sử dụng biến thể ngôn ngữ Ví dụ với văn sau: In cryptography, the ElGamal encryption system is an asymmetric key encryption algorithm for public-key cryptography which is based on the Diffie Hellman key exchange It was described by Taher Elgamal in 1985 ElGamal encryption is used in the free GNU Privacy Guard software, recent versions of PGP, and other cryptosystems The DSA (Digital Signature Algorithm) is a variant of the ElGamal signature scheme, which should not be confused with ElGamal encryption Các ký tự có số lần xuất sau: Bảng 1: Tần suất xuất kí tự văn ) ( - , a c b e d g 15.24 0.21 0.21 0.43 0.86 0.86 0.21 0.21 0.21 0.21 6.87 3.65 1.07 9.01 2.36 3.43 f i h k m l o n p s r u t w v y 1.72 6.22 4.29 0.64 2.79 3.65 4.08 5.15 2.79 4.94 5.36 1.72 6.01 1.07 0.64 3.65 Thêm vào ký tự gây nhiễu cách ngẫu nhiên: I!n*) "!cry&$!!pto#g(*r(+$#a%&p#'"h*$y(), #"+%t()&'#)h$#!(e'+& (+$E'"!'l#%Gam!al e$*n%$c)ry*p#t+&+#i%o*)$"*n%"+' 15 *sy#(#$%s""%#)('t(e'!$m i**!s !*()"%"'a#n as$%'ym+#m*!e$t$*%&++!ric*$+%)$!)! k"e!$"y(!* $e!nc+r*y$p*#%$&t&"#!%+(i)!(*on& al(&$)g+o&r+#ithm% ()f&(or pu+bli+*c''-k#e+%y $"&*c)&r'#yp'to"g$'#(*%r'a&p$h$)!(y $w+hic'h"+*%&& "'(&!%$%%#is$ ba*'s"%e+d (*%o!+((("n %the$)+) D*+)i!ffie#++ )-$" !!He&l&l)m+"an$$ key* #ex(c!*#*+h#(&)*a"n'$#g)e.$)&%!$+ (+'%I#*$)##t*(& w'a#s *%!"d)(e!&*!'s!&"cr%i!be)&d+ El+$"(ga%$"m+al(#%*+ "b%y)$ !"%'in Ta!&'he!r++ *!"*19&)$&(*$85 &El&)$'&'G!a!m!)(!a'()!++*&l &e*&*nc+r&&"&+%$!)y$+!p!!('ti%#+&o'+n*' i*)$&&&s *us)"ed#)#%)( i%+n(($# "the!)' &'(fr%e*)e'#( $G%$*N$'"'+U+ P+r%#&(i+(!*)#*"*&)"va#cy G$u*a"+&r*d $&s&(+"()of(#tw'a!!re&$,& rece#'n((t) ve(+++r($"s"!i#(ons! )o"f$'! P*(+GP,( an'd ot'he+r&%# cr!yp%to$*+'%sys%te#m)#s" &Th'e D$SA (D$ig(i*tal *#+Signa!t+u!"re +Algo(r)i+t#hm) is a'$" va)riant(* of t*$he (El'Gamal si%&(gnat#ure schem)%e', %whic%h $sh)ould not be confused with ElGamal e&ncryption Các ký tự có tần suất xuất sau: Bảng 2: Tần suất xuất kí tự sau gây nhiễu ! # 5.25 6.77 5.06 , 0.19 0.38 0.38 f i h 0.76 2.77 1.91 " 4.1 0.1 k 0.29 % 4.48 0.1 m 1.24 $ 5.63 0.1 l 1.62 ' 4.39 0.1 o 1.81 & 5.63 a 3.05 n 2.29 ) 4.68 c 1.62 p 1.24 ( 5.44 b 0.48 s 2.19 + 5.73 e 4.01 r 2.39 Sau thêm nhiễu, rõ ràng việc phân tích đốn nội dung văn 16 gặp khó khăn nhiều Tuy nhiên cách bị cơng ký tự gây nhiễu thêm vào không hoàn toàn phá vỡ phân bố xác suất ký tự có nghĩa 17 Chương 4: Cài đặt chương trình thử nghiệm hệ mã Affine Python CODE: import detectEnglish LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' # Return Greatest Common Divisor of a and b def gcd(a, b): while a != 0: a, b = b % a, a return b # Return Inverse Module of a with mod m def inverseMod(a, m): if gcd(a, m) != 1: return None u1, u2, u3 = 1, 0, a v1, v2, v3 = 0, 1, m while v3 != 0: q = u3 // v3 v1, v2, v3, u1, u2, u3 = (u1 - q * v1), (u2 - q * v2), (u3 - q * v3), v1, v2, v3 return u1 % m # Return Affine Cipher with MODE encrypt or decrypt def affine_cipher(message, MODE, key): message = message.upper() translated = '' 18 modInverseOfKeyA = inverseMod(key[0], len(LETTERS)) if modInverseOfKeyA == None: return None for symbol in message: if symbol in LETTERS: symIndex = LETTERS.find(symbol) if MODE.upper() == 'ENCRYPT': translated += LETTERS[(symIndex * key[0] + key[1]) % len(LETTERS)] elif MODE.upper() == 'DECRYPT': translated += LETTERS[(symIndex - key[1]) modInverseOfKeyA % len(LETTERS)] else: translated += symbol return translated # Crack Affine Cipher def affine_crack(cipher): for a in range(0, len(LETTERS)): if gcd(a, len(LETTERS)) == 1: for b in range(0, len(LETTERS)): message = affine_cipher(cipher, 'DECRYPT', (a, b)) if detectEnglish.isEnglish(message): return (a, b, message) return (None, None) * 19 key = (7, 2) cipher = affine_cipher(message, 'ENCRYPT', key) print('\n\nCipher text: ' + cipher) message = affine_crack(cipher) print('\n\nKey = [{0}, {1}]'.format(message[0], message[1])) print('\nPlain text after crack: ' + message[2]) 20 KẾT LUẬN Kết đạt Bài tiểu luận tiến hành nghiên cứu giải toán mã hóa, giải mã hệ mã cổ điển Affine Từ việc giải toán Bài toán tảng cho nhiều ứng dụng quan trọng thực tế quảng cáo nhắm mục tiêu, hệ thống cung cấp tiếp thị dịch vụ thương mại điện tử tới người dùng, … Hạn chế: Nghiên cứu Hệ mã Affine sử dụng ký tự bảng chữ cái, bảng chữ không lớn nên bị giới hạn bảng chữ Dễ bị công cách phân tích tần số khó phịng ngừa Khơng có khả phục hồi văn gốc Hướng phát triển Thay Affine hệ mã đối xứng khác an toàn (AES, DES) 21 TÀI LIỆU THAM KHẢO Giáo trình an tồn bảo mật thơng tin Đại học bách khoa Hà Nội Bài viết xây dựng đánh giá hệ mã Affine ThS Trung Thành Phương – Học viện Bưu viễn thông ... thực để bảo vệ an tồn thơng tin liệu Trong có bảo vệ an tồn thơng tin mật mã Mật mã ngành khoa học chuyên nghiên cứu phương pháp truyền tin bí mật Mật mã bao gồm : Lập mã phá mã Lập mã bao gồm... trình: mã hóa giải mã Hiện có nhiều hệ mật mã Nếu dựa vào cách truyền khóa phân hệ mật mã thành hai loại: hệ mật mã đối xứng hệ mật mã bất đối xứng Ngoài dựa vào cách thức tiến hành mã hệ mật mã. .. làm hai loại mã dòng mã khối Còn dựa vào thời gian đưa hệ mật mã ta cịn phân làm hai loại: Mật mã cổ điển (là hệ mật mã đời trước năm 1970) mật mã đại (ra đời sau năm 1970) Trong tiểu luận này,