1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tiểu luận bảo mật thông tin Mật mã Affine

21 321 4

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 421,05 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

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

Trang 2

MỤ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 3

MỞ ĐẦ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 4

NỘ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 5

và 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 6

1, 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 7

Giả 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 8

e K (x) = ax +b mod 26

d K (y) = a-1(y-b) mod 26, x,y  Z 26

Trang 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á và giải mã bản rõ “TRUONGNGOCTHO”

Trang 14

Chươ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 16

sẽ 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 17

Chươ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 18

modInverseOfKeyA = 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 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])

Trang 20

KẾ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 21

TÀ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

Ngày đăng: 23/04/2022, 09:20

HÌNH ẢNH LIÊN QUAN

Bảng 1: Tần suất xuất hiện của các kí tự trong văn bản - Tiểu luận bảo mật thông tin  Mật mã Affine
Bảng 1 Tần suất xuất hiện của các kí tự trong văn bản (Trang 14)
Bảng 2: Tần suất xuất hiện của các kí tự sau khi gây nhiễu - Tiểu luận bảo mật thông tin  Mật mã Affine
Bảng 2 Tần suất xuất hiện của các kí tự sau khi gây nhiễu (Trang 15)

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w