TÌM HIỂU VỀ PHÉP ĐỒNG DƯ Khái niệm “đồng dư” Cho các số nguyên a, b, m (m>0). Ta nói rằng a và b đồng dư với nhau theo modulo m nếu chia a và b cho m ta nhận được cùng một số dư. Ký hiệu: a b (mod m) Ví dụ: 20 (mod 3) vì 20 và 2 chia cho 3 được cùng một số dư là 2.
Trang 1TÌM HIỂU VỀ PHÉP ĐỒNG DƯ
Học viên: Vương Thị Mỵ
MSHV: 13025173
Môn: Mật mã ATDL
qwertyuiopasdfghjklzxcvbnmqwertyuio pasdfghjklzxcvbnmqwertyuiopasdfghjkl zxcvbnmqwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqwertyuiop asdfghjklzxcvbnmqwertyuiopasdfghjklz xcvbnmqwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqwertyuiop asdfghjklzxcvbnmqwertyuiopasdfghjklz xcvbnmqwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqwertyuiop asdfghjklzxcvbnmqwertyuiopasdfghjklz xcvbnmqwertyuiopasdfghjklzxcvbnmq wertyuiopasdfghjklzxcvbnmqwertyuiop asdfghjklzxcvbnmrtyuiopasdfghjklzxcvb nmqwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasdfg
Trang 2Mục lục
PHÉP ĐỒNG DƯ
1.Giới thiệu về “Đồng dư”
1.1: Khái niệm “đồng dư”
Cho các số nguyên a, b, m (m>0) Ta nói rằng a và b đồng dư với nhau theo modulo m nếu chia a và b cho m ta nhận được cùng một số dư
Ký hiệu: a b (mod m)
Ví dụ: 20 (mod 3) vì 20 và 2 chia cho 3 được cùng một số dư là 2
Trang 31.2: Nhận xét
Các mệnh đề sau đây là tương đương với nhau:
1. a b (mod m)
2. m \ (a – b)
3. Tồn tại số nguyên t sao cho a = b + m*t
Chứng minh:
1=>2: Nếu có mệnh đề 1, theo định nghĩa của “đồng dư” thì a và b chia cho m phải có cùng số dư, do đó:
a = p*m + r
b = q *m + r
a – b = (p – q) * m => m \ (a – b)
2=>3: m \ (a – b) có nghĩa là tồn tại số nguyên t sao cho
a – b = m *t => a = b + m*t
3=>1: xét mệnh đề 3 a = b +m * t
Lấy a chia cho m giả sử được số dư là r và thương là q: a = m*q + r (0 r < m)
b + m*t = a = m*q +r
b= m * (q – t) + r => a và b chia cho m có cùng số dư là r hay a b (mod m)
1.3:Các tính chất của quan hệ “đồng dư”
1.3.1 Quan hệ đồng dư là quan hệ tương đương trong tập Z
Với mọi số nguyên m ta có:
a a (mod m) với mọi a Z; (Tính chất phản xạ)
Trang 4a b (mod m) thì b a (mod m) (Tính chất đối xứng)
a b (mod m) và b c (mod m) thì a c (mod m) (Tính chất bắc cầu)
1.3.2 Tổng – Hiệu các đồng dư
(a+b) (mod n) [(a mod n) + (b mod n)] (mod n)
(a-b) (mod n) [(a mod n) - (b mod n)] (mod n)
Tổng quát:
Có thể cộng hoặc trừ từng vế nhiều đồng dư thức theo cùng modulo m, ta được một đồng dư thức theo cùng modulo m, tức là:
Nếu a i ≡ b i (mod m) , i = 1 k, thì 1 1
(mod )
k k
i i i i
i i
với t i = ± 1
1.3.3 Tích các đồng dư
(a * b) (mod n) [(a mod n) * (b mod n)] (mod n)
Tổng quát:
Có thể nhân từng vế nhiều đồng dư thức theo cùng modulo m, ta được một đồng
dư thức theo cùng modulo m, tức là:
Nếu a i ≡ b i (mod m) , i = 1 k, thì
Hệ quả:
- Có thể cộng hoặc trừ cùng một số vào 2 về của đồng dư thức
- Có thể chuyển vế các số hạng của đồng dư thức bằng cách đổi dấu các số hạng đó
- Có thể cộng vào 1 vế của đồng dư thức bội của modulo, tức là:
(mod )
k k
i i
i i
Trang 5a ≡ b (mod m) => a+km ≡ b (mod m) với mọi k Z
- Có thể nhân 2 vế của đồng dư thức với cùng một số:
a ≡ b (mod m) => a*c ≡ b*c (mod m) với mọi c Z
- Có thể nâng lên luỹ thừa bậc nguyên không âm cho 2 vế của một đồng dư thức
a ≡ b (mod m) => an≡ bn (mod m) với mọi n Z
- Có thể chia 2 vế đồng dư thức cho một ước chung nguyên tố với modulo
c\a, c\b, (c,m)=1, a ≡ b (mod m) ⇒ a/c ≡ b/c (mod m)
- Có thể nhân 2 vế đồng dư thức và modulo với cùng một số nguyên dương
Nếu a ≡ b (mod m), c >0 ⇒ ac ≡ bc (mod mc)
- Có thể chia 2 vế đồng dư thức và modulo cho cùng một số nguyên dương
là ước chung của chúng:
Nếu c \ (a, b, m) ⇒ a/c ≡ b/c (mod m/c)
- a ≡ b (mod m) => a ≡ b (mod k) với k \ m
- a ≡ b (mod m) ⇒ UCLN(a, m) = UCLN(b, m)
∈
∈
∈
Trang 62 Ứng dụng của phép “đồng dư”
2.1.Mã dịch vòng
2.1.1 Định nghĩa
Giả sử P = C = K = ZM, định nghĩa:
Ek(X) = X + K mod M
Và Dk(X) = Y – K mod M
Với ZM là số học modulo của M, là tập hợp {0, 1, …, M} có trang bị 2 phép toán cộng và nhân như trong số học, nhưng kết quả được rút gọn theo modulo M
Trong trường hợp K =3 hệ này được gọi là hệ CAESAR
Trong báo cáo này, sẽ demo mã dịch vòng với modulo 26 để mã hoá một văn bản tiếng anh thông thường bằng cách thiết lập sự tương ứng giữa các ký tự và các thặng dư theo modulo 26: A↔0, B↔1, …, Z↔25 Cùng với đó, sẽ demo mã dịch vòng với modulo 29 để mã hoá văn bản tiếng việt bằng sự thiết lập tương ứng giữa các ký tự và các thặng dư theo modulo 29: A↔0, Ă↔1, …, Y↔28
2.1.2 Các bước thực hiện việc mã hoá và giải mã
Giả sử có bản rõ là: WEWILLMEETATNIGHT
Với K = 11
Bước 1: Biến đổi bản rõ thành các số nguyên theo quy đổi bên trên thành dãy số như sau:22 4 22 8 11 11 12 4 4 19 0 19 12 8 3 13 8 6 7 19
Bước 2: Cộng 11 vào mỗi giá trị trên rồi rút gọn tổng theo modulo 26
Ta được dãy sau:
Trang 77 15 7 19 22 22 23 15 15 4 11 4 23 19 14 24 19 17 18 4
Bước 3: Cuối cùng biến đổi dãy số nguyên này thành các ký tự theo bảng quy đổi được bản mã sau:
HPHTWWXPPELEXTOYTRSE
Để giải bản mã này, trước tiên, ta sẽ biến đổi bản mã thành dãy các số nguyên rồi trừ đi giá trị tương ứng cho 11 (rút gọn theo modulo 26) và cuối cùng biến đổi lại dãy này thành các ký tự dựa vào bảng quy đổi
Nhận xét: Trong ví dụ trên, ta đã dùng các chữ in hoa cho bản mã, nếu đầu vào
là chữ thường thì ta mã hoá theo chữ hoa rồi chuyển bản mã từ chữ hoa về chữ thường
2.1.3.Đánh giá tính “An toàn” của mã dịch vòng
Nếu một hệ mật có thể sử dụng được trong thực tế thì nó phải thoả mãn một số tính chất nhất định, ngay sau đây sẽ nêu ra hai trong số đó:
1. Mỗi hàm mã hoá và mỗi hàm giải mã phải có khả năng tính toán được một cách hiệu quả
2. Đối phương dự trên xâu bản mã phải không có khả năng xác định khoá K đã dùng hoặc không có khả năng xác định được xâu bản rõ
Tính chất thứ hai xác định khá mập mờ theo ý tưởng “bảo mật” Quá trình thử tính khoá K (khi đã biết bản mã) được gọi là mã thám
Nhận xét rằng, mã dịch vòng (Theo modulo 26) là không an toàn vì nó có thể bị thám theo phương pháp vét cạn Do chỉ có 26 khoá nên dễ dàng thử mọi khoá có thể cho tới khi nhận được bản rõ có ý nghĩa Điều này được minh hoạ theo ví dụ sau:
Trang 8Cho bản mã: JBCRCLQRWCRVNBJENBWRWN
Ta sẽ thử liên tiếp các khoá giải mã D0, D1,… và Y thu được
j b c r c l q r w c r v n b j e n b w r w n
i a b q b k p q v b q u m a i d m a v q v m
h z a p a j o p u a p t l z h c l z u p u l
g y z o z i n o t z o s k y g b k y t o t k
j x y n y h m n s y n r j e x f a j x s n s j
e w x m x g l m r x m q i w e z i w r m r i
d v w l w f k l q w l p h v o d y h v q l q h
c u v k v e j k p v k o g u c x g u p k p g
b t u j u d i j o u j n f t b w f o j o f
a s t i t c h i n t i m e s a v e s n i n e
Tới đây ta đã xác định được bản rõ và dừng lại Khoá tương ứng K = 9
Trung bình có thể tính được bản rõ sau khi thử 26/2 = 13 quy tắc giải mã
Như đã chỉ ra trong ví dụ trên, điều kiện để một hệ mật được an toàn là phép tìm kiếm khoá vét cạn phải không thể thực hiện được; tức không gian khoá phải rất lớn Tuy nhiên, một không gian khoá lớn cũng chưa thể đảm bảo độ mật
Trang 92.1.4.Mật mã CAESAR
Trong mật mã học, mật mã Caesar, còn gọi là mật mã dịch chuyển, là một trong những mật mã đơn giản và được biết đến nhiều nhất Mật mã là một dạng của mật mã thay thế, trong đó mỗi ký tự trong văn bản được thay thế bằng một ký tự cách nó một đoạn trong bảng chữ cái để tạo thành bản mã Mã CAESAR là mã dịch vòng với khoá K = 3
Có thể hiểu rõ về CAESAR như các mã dịch vòng khác thông qua ví dụ đưa ở trên
dễ dàng bị phá vỡ và không đáp ứng được yêu cầu an toàn thông tin trong truyền thông
Mật mã Vigenère là một phương pháp mã hóa văn bản bằng cách sử dụng xen
kẽ một số phép mã hóa Caesar khác nhau dựa trên các chữ cái của một từ khóa
Nó là một dạng đơn giản của mật mã thay thế dùng nhiều bảng chữ cái
Trong phép mã hóa Caesar, mỗi ký tự của bảng chữ cái được dịch đi một khoảng nhất định, ví dụ với bước dịch là 3, A trở thành D, B trở thành E Mật mã
Vigenère là sự kết hợp xen kẽ vài phép mã hóa Caesar với các bước dịch khác nhau
Để mã hóa, ta dùng một hình vuông Vigenère (hình bên) Nó gồm 26 hàng, mỗi hàng dịch về bên trái một bước so với hàng phía trên, tạo thành 26 bảng mã
Caesar Trong quá trình mã hóa, tùy theo từ khóa mà mỗi thời điểm ta dùng một dòng khác nhau để mã hóa văn bản
Ví dụ, ta có văn bản cần mã hóa như sau:
ATTACKATDAWN
Người gửi lựa chọn một từ khóa và viết nó lặp lại nhiều lần trên một dòng đến khi số chữ cái trên dòng bằng số chữ cái trong thông điệp, với từ khóa
"LEMON" thì:
Trang 10Chữ cái đầu tiên của văn bản, A, được mã hóa bằng bảng bắt đầu với L (chữ cái đầu tiên của từ khóa) Nó sẽ được mã hóa thành chữ cái trên dòng L và cột A của hình vuông Vigenère, đó là chữ L Tương tự như vậy, chữ cái thư hai của văn bản sẽ được mã hóa bằng chữ cái thứ hai của từ khóa: chữ trên dòng E và cột T là X Sau đây là bản mã:
Văn bản:
Từ khóa:
Bản mã:
3.Demo ứng dụng
Ta sẽ đi xây dựng ứng dụng với mã CAESAR cho cả văn bản tiếng việt và văn
Với input của việc mã hoá là file dạng text Và đầu ra là file text sau khi đã mã hoá (file này sẽ có định dạng _mahoa.txt)
Input của giải mã là file dạng _mahoa.txt (file đã mã hoá bên trên), đầu ra là file dạng _giaima.txt
Trang 11Hình 1: Giao diện chính.
đường dẫn file sẽ được đặt tại textbox
Hình 2: Lựa chọn file cần mã hoá
Sau khi đã có đường dẫn, ta sẽ thực hiện mã hoá Nút “Ma hoa TiengAnh” cho phép mã hoá văn bản đầu vào là tiếng anh, được mã hoá theo modulo 26 Nút
“Ma hoa TV” cho phép mã hoá văn bản đầu vào là tiếng việt, được thực hiện mã hoá theo modulo 29 Sau khi thực hiện mã hoá, sẽ tạo ra 1 file có dạng
Sau khi mã hoá, ta có thể tiến hành giải mã Cũng như việc mã hoá, với file mã hoá văn bản tiếng anh, để giải mã ta sẽ sử dụng nút “Giai ma TiengAnh”, file mã hoá văn bản tiếng Việt sẽ sử dụng “Giai ma TV”
Ở đây, ta demo với file test.txt có nội dung:
WEWILLMEETATMIDNIGHTwewillmeetatmidnight
Sau khi kích vào nút “Ma hoa TiengAnh”, sẽ có thêm file test_mahoa.txt được tạo ra với nội dung như sau:
Trang 12chọn file như hình dưới đây:
Hình 3: Lựa chọn file để giải mã
Ở phần này chỉ cho lựa chọn những file có định dạng _mahoa.txt
Sau khi kích vào nút “Giai ma TiengAnh”, sẽ có thêm 1 file test_giaima.txt ở