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
Trang 1KHOA 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
Trang 2MỤC LỤC
Mở đầu 3
Nội dung 4
Chương 1 Mã Affine 4
Chương 2 Bài tập minh hoạ 9
Chương 3 Đánh giá hệ mã Affine 14
Chương 4 Cài đặt chương trình thử nghiệm hệ mã Affine trên Python 17
Kết luận 20
1 Kết quả đạt được 20
2 Hạn chế 20
3 Hướng phát triển 20
Tài liệu tham khảo 21
Trang 3MỞ ĐẦU
Ngày nay, việc ứng dụng công nghệ thông tin vào các ngành nghề đã mang lại rất nhiều lợi ích cho mọi mặt của cuộc sống Bên cạnh đó cũng đưa ra những thách thức khi hòa nhập toàn cầu về mặt đảm bảo an toàn thông tin Vấn đề bảo mật, xác thực đang rất được quan tâm Bảo vệ an toàn thông tin dữ liệu là một chủ
đề rộng, có liên quan đến nhiều lĩnh vực và trong thực tế có thể có rất nhiều phương pháp được thực hiện để bảo vệ an toàn thông tin dữ liệu Trong đó có bảo
vệ an toàn thông tin bằng mật mã
Mật mã là một ngành khoa học chuyên nghiên cứu các phương pháp truyền tin bí mật Mật mã bao gồm : Lập mã và phá mã Lập mã bao gồm hai quá trình:
mã hóa và giải mã
Hiện nay có rất nhiều hệ mật mã Nếu dựa vào cách truyền khóa có thể phân các hệ mật mã thành hai loại: hệ mật mã đối xứng và hệ mật mã bất đối xứng Ngoài ra nếu dựa vào cách thức tiến hành mã thì hệ mật mã còn được chia làm hai loại là mã dòng và mã khối Còn nếu dựa vào thời gian đưa ra hệ mật mã ta còn có thể phân làm hai loại: Mật mã cổ điển (là hệ mật mã ra đời trước năm 1970)
và mật mã hiện đại (ra đời sau năm 1970)
Trong bài tiểu luận này, em xin trình bày về một loại hệ mã hoá cổ điển là
mã Affine
Bài tiểu luận bao gồm các 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 trên Python
Trang 4NỘI DUNG Chương 1: Mã Affine
Mã dịch vòng (MDV) là một trường hợp đặc biệt của mã thay thế (MTT) chỉ gồm 26 trong số 26! Các hoán vị có thể của 26 phần tử Một trường hợp đặc biệt khác của MTT là mã Affine được mô tả dưới đây
Mật mã Affine là một dạng mật mã thay thế dùng một bảng chữ cái, trong đó mỗi chữ cái được ánh xạ tới một số sau đó mã hóa qua một hàm số toán học đơn giản
Mã Affine là một trường hợp đặc biệt của mã Caesar, trong đó các chữ cái được
dư thức ax ≡ 0 (mod 26) sẽ có ít nhất hai nghiệm phân biệt trong Z26 là x = 0
Trang 5và x = 26/d Trong trường hợp này, e(x) = ax + b mod 26 không phải là một hàm đơn ánh và bởi vậy nó không thể là hàm mã hoá hợp lệ
Ví dụ, do UCLN(4,26) = 2 nên 4x +7 không là hàm mã hoá hợp lệ: x và x+13 sẽ mã hoá thành cùng một giá trị đối với bất kì x ∈ Z26
Ta giả thiết UCLN(a,26) = 1 Giả sử với x1 và x2 nào đó thảo
Bây giờ ta sẽ sử dụng một tính chất của phép chia sau: Nếu UCLN(a,b)=1
và a | bc thì a | c Vì 26 | a(x1- x2) và UCLN(a,26) = 1 nên ta có:
26 | (x1-
x2) tức là
x1 ≡ x2 (mod 26)
Tới đây ta chứng tỏ rằng, nếu UCLN(a,26) = 1 thì một đồng dư thức dạng
ax ≡ y (mod 26) chỉ có (nhiều nhất) một nghiệm trong Z26 Do đó, nếu ta cho x thay đổi trên Z26 thì ax mod 26 sẽ nhận được 26 giá trị khác nhau theo modulo 26 và đồng dư thức ax ≡ y (mod 26) chỉ có một nghiệm y duy nhất
Không có gì đặc biệt đối vơí số 26 trong khẳng định này Bởi vậy, bằng cách tương tự ta có thể chứng minh được kết quả sau:
Định lí
b
Vì 26 = 2 x 13 nên các giá trị a ∈ Z26 thoả mãn UCLN(a,26) = 1 là a =
Trang 61, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23 và 25 Tham số b có thể là một phần tử bất kỳ trong Z26 Như vậy, mã Affine có 12 x 26 = 312 khoá có thể (dĩ nhiên con số này quá nhỉ để bảo đảm an toàn)
Bây giờ ta sẽ xét bài toán chung với modulo m Ta cần một định nghĩa khác trong lý thuyết số
Định nghĩa
Giả sử a ≥ 1 và m ≥ 2 là các số nguyên UCLN(a,m) = 1 thì ta nói rằng
với m thường được ký hiệu là ∅(m) (hàm này được gọi là hàm Euler)
Một kết quả quan trọng trong lý thuyết số cho ta giá trị của ∅ (m) theo các thừa số trong phép phân tích theo luỹ thừa các số nguyên tố của m (Một
số nguyên p > 1 là số nguyên tố nếu nó không có ước dương nào khác ngoài 1
và p Mọi số nguyên m > 1 có thể phân tích được thành tích của các luỹ thừa các số nguyên tố theo cách duy nhất Ví dụ 60 = 2 3 x 3 x 5 và 98 = 2 x 7 2 )
Số khoá trong mã Affine trên Zm bằng ∅ (m), trong đó ∅ (m) được cho theo công thức trên (Số các phép chọn của b là m và số các phép chọn của a
là ∅ (m) với hàm mã hoá là e(x) = ax + b) Ví dụ, khi m = 60, ∅ (60)= ∅ (5.22.3)= ∅ (5) ∅ (22) ∅ (3) = 2 x 2 x 4 = 16 và số các khoá trong mã Affine
là 960
Bây giờ ta sẽ xét xem các phép toán giải mã trong mật mã Affine với modulo m = 26 Giả sử UCLN(a,26) = 1 Để 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 trên thấy rằng, phương trình này có một nghiệm duy nhất trong Z26 Tuy nhiên ta vẫn chưa biết một phương pháp hữu hiệu để tìm nghiệm Điều cần thiết ở đây là có một thuật toán hữu hiệu để làm việc đó Rất may là một số kết quả tiếp sau về số học modulo sẽ cung cấp một thuật toán giải mã hữu hiệu cần tìm
Định nghĩa:
Trang 7Giả sử a ∈ Z m Phần tử nghịch đảo (theo phép nhân) của a là phần tử a -1 ∈
Bằng các lý luận tương tự như trên, có thể chứng tỏ rằng a có nghịch đảo theo modulo m khi và chỉ khi UCLN(a,m) =1, và nếu nghịch đảo này tồn tại thì nó phải là duy nhất Ta cũng thấy rằng, nếu b = a-1 thì a = b-1 Nếu p là số nguyên tố thì mọi phần tử khác không của ZP đều có nghịch đảo Một vành trong đó mọi phần tử đều có nghịch đảo được gọi là một trường
Trong phần sau sẽ mô tả một thuật toán hữu hiệu để tính các nghịch đảo của Zm với m tuỳ ý Tuy nhiên, trong Z26, chỉ bằng phương pháp thử và sai cũng có thể tìm được các nghịch đảo của các phần tử nguyên tố cùng nhau 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ụ: 7 x 15 = 105 ≡ 1 mod 26, bởi vậy 7-1
= 15)
Xét phương trình đồng dư y ≡ ax+b (mod 26) Phương trình này 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 cả hai
vế của đồ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 của phép nhân modulo:
a-1(ax) ≡ (a-1a)x ≡ 1x ≡ x
Kết quả là x ≡ a-1(y-b) (mod 26) Đây là một công thức tường minh cho
x
Như vậy hàm giải mã là:
d(y) = a-1(y-b) mod 26
Cho mô tả đầy đủ về mã Affine Sau đây là một ví dụ nhỏ
Trang 8e K (x) = ax +b mod 26
và
d K (y) = a-1(y-b) mod 26, x,y Z 26
Trang 9Chươ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á và giải mã bản rõ “TRUONGNGOCTHO”
Trang 14Chương 3: Đánh giá hệ mã Affine
Mã Affine nói riêng và các loại mật mã thay thế nói chung có thể bị tấn công bởi việc phân tích tần suất ký tự, và theo đó không an toàn cho các thông điệp ngắn Đặc biệt trong trường hợp các văn bản ngắn, kẻ tấn công hoàn toàn có thể
sử dụng phương pháp tấn công vét cạn (lần lượt thay thế các ký tự trong bản mã cho đến khi tìm được văn bản có ý nghĩa)! Đối với các văn bản dài, việc tấn công vét cạn này không khả thi
Việc tấn công dựa trên xác suất có thể được phòng tránh bằng việc thêm nhiễu (các ký tự vô nghĩa đối với nội dung văn bản), hoặc sử dụng các biến thể ngôn ngữ
Ví dụ với văn bả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 hiện như sau:
Bảng 1: Tần suất xuất hiện của các kí tự trong văn bản
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
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 các ký tự gây nhiễu một 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%"+'
Trang 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%
$"&*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+ "b%y)$ Ta!&'he!r++
El+$"(ga%$"m+al(#%*+ !"%'in *!"*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 hiện như sau:
Bảng 2: Tần suất xuất hiện của các kí tự sau khi gây nhiễu
Trang 16sẽ gặp khó khăn hơn nhiều Tuy nhiên cách này vẫn có thể bị tấn công khi các ký
tự gây nhiễu được thêm vào không hoàn toàn phá vỡ phân bố xác suất của các ký
tự có nghĩa
Trang 17Chương 4: Cài đặt chương trình thử nghiệm hệ mã Affine trên Python
# Return Affine Cipher with MODE encrypt or decrypt
def affine_cipher(message, MODE, key):
message = message.upper()
translated = ''
Trang 18modInverseOfKeyA = inverseMod(key[0], len(LETTERS))
elif MODE.upper() == 'DECRYPT':
translated += LETTERS[(symIndex - key[1]) * modInverseOfKeyA % len(LETTERS)]
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)
Trang 19key = (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])
Trang 20KẾT LUẬN
1 Kết quả đạt được
Bài tiểu luận tiến hành nghiên cứu giải quyết bài toán về mã hóa, giải mã trên hệ mã cổ điển Affine Từ việc giải quyết bài toán Bài toán là nền tảng cho nhiều ứng dụng quan trọng thực tế như quảng cáo nhắm mục tiêu, các hệ thống cung cấp tiếp thị dịch vụ thương mại điện tử tới đúng người dùng, …
2 Hạn chế:
Nghiên cứu Hệ mã Affine chỉ sử dụng các ký tự là bảng chữ cái, bảng chữ cái không lớn nên bị giới hạn bởi các bảng chữ cái
Dễ bị tấn công bằng cách phân tích tần số và khó phòng ngừa
Không có khả năng phục hồi văn bản gốc
3 Hướng phát triển
Thay thế Affine bằng hệ mã đối xứng khác an toàn hơn như (AES, DES)
Trang 21TÀI LIỆU THAM KHẢO
1 Giáo trình an toàn và bảo mật thông tin của Đại học bách khoa Hà Nội
2 Bài viết xây dựng và đánh giá hệ mã Affine của ThS Trung Thành Phương – Học viện Bưu chính viễn thông