Tải bản đầy đủ (.docx) (46 trang)

Bt Nhom Ltmm.docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (700.85 KB, 46 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ - VIỄN THƠNG

----

BÀI TẬP NHĨM
MƠN: LÝ THUYẾT MẬT MÃ

Giảng viên hướng dẫn: PGS. TS. Đỗ Trọng Tuấn
Nhóm thực hiện:
1.
2.
3.
4.
5.

Nhóm 01

Lương Văn Minh
Đỗ Thị Thúy Kiểu
Nguyễn Anh Dũng
Trần Mạnh Cường
Hoàng Tuấn Anh

MSSV: 20152445
MSSV: 20152085
MSSV: 20160671
MSSV: 20140628
MSSV: 20140083

Hà Nội, 9/2017



1


CƠ SỞ TOÁN HỌC
1. SỐ HỌC CÁC SỐ NGUYÊN:
- Z là tập hợp các số nguyên : Z = { …,-2,-1,0,1,2,…}
- Z* là tập hợp các số nguyên không âm : Z*= {0,1,2,…}
- Tập hợp Z là đóng kín đối với các phép cộng, trừ và nhân nhưng khơng đóng kín
đối với phép chia
- Cho hai số ngun bất kì a và b, b >1
a = q*n +r , 0 ≤ r ≤ b
Trong đó:
q: thương
r: số dư
- Phép chia hết:
Cho biểu thức a = q*n +r
+ Nếu r = 0 => a chia hết cho n, kí hiệu n | a
+ Nếu r ≠ 0 => a không chia hết cho n, kí hiệu n a
Một số tính chất:
+ Nếu a | 1 thì a = ±1
+ Nếu a | b và b | a thì a = ±b
+ Nếu a | b và b | c thì a | c
+ Nếu a | b và a | c thì a | (m*b + n*c)
- Ước số chung lớn nhất:
d = gcd(a,b)
Ta sử dụng thuật tốn Euclide để tìm gcd(a,b)

2



- Số nguyên tố :
+ Một số nguyên a>1 được gọi là số ngun tố , nếu a khơng có ước số nào ngồi
1 và chính nó, và được gọi là hợp số nếu không phải là số nguyên tố.
+ Hai số a và b được gọi là nguyên tố với nhau nếu gcd(a, b) = 1
+ Một số nguyên n>1 bất kì đều có thể viết dưới dạng:
a
a
a
N = p1 * p2 *...* pk
1

2

k

Trong đó p1, p2,...,pk là các số nguyên tố khác nhau, a1, a2,...,ak là các số mũ nguyên
dương.

2. SỐ HỌC MÔ-ĐUN:
Mối quan hệ của phép chia (a=q × n+r ) gồm hai đầu vào (a và n) và hai đầu ra (q và
r ). Trong số học mô-đun, ta chỉ quan tâm đến một đầu ra duy nhất, đó chính là số
dư r , mà khơng cần quan tâm đến thương q . Như vậy ta có thể thay đổi mối quan hệ
trên thành một tốn tử hai ngôi với hai đầu vào là a và n, và một đầu ra là r .

Toán tử modulo
Toán tử hai ngôi được nhắc đến ở trên được gọi là toán tử modulo và được ký hiệu
là mod. Đầu vào thứ hai (n) được gọi là mô-đun (tiếng Anh: modulus). Đầu ra r
được gọi là thặng dư (tiếng Anh: residue).


Toán tử modulo (mod) lấy một số nguyên (a ) từ tập Z và mô-đun (n) là một số
nguyên dương. Tốn tử cho kết quả một thặng dư khơng âm (r ). Ta nói
a mod n=r

Một số ví dụ:
a.
b.
c.
d.

27 mod 5=2
36 mod 12=0
−18 mod 14=10
−7 mod 10=3

Tập hợp các thặng dư Z n

3


Kết quả của phép tốn modulo với mơ-đun n ln là một số nguyên từ 0 đến n−1.
Nói cách khác, kết quả của a mod n luôn luôn là một số ngun khơng âm nhỏ hơn n.
Ta có thể nói rằng phép toán modulo tạo ra một tập hợp, mà trong số học mô-đun
được gọi là tập hợp các thặng dư nhỏ nhất trong modulo n, hay được viết là Z n.
Mặc dù chỉ có duy nhất một tập hợp các số ngun ( Z ), nhưng ta có vơ số tập hợp
các thặng dư ( Z n) ứng với mỗi giá trị của n khác nhau.
Ví dụ một số tập hợp thặng dư:

Đồng dư
Trong mật mã, ta thường dùng khái niệm đồng dư (đồng dư thức) thay vì đẳng

thức. Ánh xạ từ Z tới Z n không phải là tương ứng một đối một (one-to-one), tức là
nhiều phần tử trong Z có thể ánh xạ tới cùng một phần tử trong Z n. Vô số phần tử
của tập Z có thể ánh xạ tới một phần tử trong tập Z n. Ví dụ, kết quả của 2 mod 10=2,
12 mod 10=2, 22 mod 10=2, v.v…. Trong số học mô-đun, số nguyên như 2, 12 và 22
được gọi là đồng dư theo mod 10. Để chỉ ra hai số nguyên đồng dư, ta sử dụng toán
tử đồng dư (≡). và thêm cụm từ (mod n) vào bên phải đồng dư thức.

10

mod

10

mod

10

mod

10

mod

a. Toán tử đồng dư khá giống toán tử bằng, nhưng cũng có một vài điểm khác
biệt. Thứ nhất, tốn tử bằng ánh xạ một phần tử trong tập Z tới chính nó; trong
khi đó tốn tử đồng dư ánh xạ các phần tử từ tập Z sang một phần tử ở tập Z n.
Thứ hai, toán tử bằng tương ứng một tới một; cịn tốn tử đồng dư thì tương
ứng nhiều tới một (nhiều phần tử tương ứng với một phần tử).
b. Cụm từ (mod n) được thêm vào bên phải của toán tử đồng dư chỉ là dấu hiệu
của tập đích ( Z n). Ta cần phải thêm cụm từ này để chỉ ra mô-đun nào được dùng

trong ánh xạ. Ký hiệu mod được sử dụng ở đây không được dùng với nghĩa là
4


tốn tử hai ngơi. Nói cách khác, ký hiệu mod trong 12 mod 10 là một toán tử;
cụm từ (mod 10) trong 2 ≡12(mod 10) có nghĩa tập đích là Z10 .

Lớp thặng dư
Một lớp thặng dư [a] hay [ a ]n là tập hợp các số nguyên đồng dư theo modulo n. Nói
cách khác, nó là tập hợp tất cả các số nguyên sao cho x ≡ a( mod n).
Ví dụ, nếu n=5, ta có tất cả năm tập hợp [0], [1], [2], [3] và [4 ] như dưới đây:
[0]={… ,−15,−10,−5, 0, 5,10, 15,… }
[1]={… ,−14,−9,−4,1, 6,11, 16, … }
[2]={… ,−13,−8,−3, 2,7, 12,17, … }
[3]={… ,−12,−7,−5, 3,8, 13, 18,… }
[4 ]={… ,−11,−6,−1, 4, 9, 14,19, … }

Các số nguyên trong tập hợp [0] khi thực hiện phép toán modulo cho 5 thì đều cho
kết quả là 0. Các số nguyên trong tập [1] thì cho kết quả 1 khi thực hiện phép toán
modulo cho 5,v.v…. Trong mỗi tập hợp sẽ có một phần tử được gọi là thặng dư nhỏ
nhất (không âm). Trong tập [0], phần tử này là 0; trong tập [1], phần tử này là 1;
v.v…. Tập hợp tất cả các thặng dư nhỏ nhất chính là tập Z5 ={0, 1,2, 3, 4 }. Nói cách
khác, tập hợp Z n là tập các thặng dư nhỏ nhất trong modulo n.

Biểu đồ trịn
Khái niệm đồng dư có thể được hiểu rõ hơn bằng việc sử dụng một biểu đồ tròn.
Giống việc sử dụng một trục số để biểu diễn các số nguyên trong tập Z , ta có thể sử
dụng một đường tròn để biểu diễn các số nguyên trong tập Z n.

Các số nguyên từ 0 đến n−1 cách đều nhau trên đường tròn. Tất cả các số nguyên

đồng dư trong modulo n nằm cùng một điểm trên đường tròn. Các số nguyên dương
và nguyên âm từ tập Z được biểu diễn trên đường tròn một cách đối xứng.

5


Ta thường sử dụng số học đồng dư trong cuộc sống hàng ngày của chúng ta; ví dụ
như chúng ta sử dụng đồng hồ để tính thời gian. Hệ thống đồng hồ mà ta sử dụng
thể hiện một đồng dư trong modulo 12. Tuy nhiên, thay vì là 0, ta sử dụng số 12.
Cho nên, hệ thống đồng hồ bắt đầu từ 0 (hay 12) cho tới 11. Bởi vì một ngày kéo
dài 24 giờ, cho nên kim giờ sẽ được quay hai vòng, vòng đầu tiên cho buổi sáng và
vịng thứ hai cho buổi chiều.

Phép tốn trong Z n
Ba phép tốn hai ngơi (phép cộng, phép trừ và phép nhân) đối với tập Z cũng có thể
định nghĩa trong tập Z n. Kết quả của toán tử trong Z n sẽ cần được ánh xạ tới tập Z n
bằng việc sử dụng tốn tử mod.

hoặc

Thực ra, có hai loại toán tử đã được sử dụng ở đây. Loại thứ nhất đó là một trong
các tốn tử hai ngơi (+,−, ×); và thứ hai là toán tử mod. Ta cần sử dụng dấu ngoặc
đơn để thể hiện thứ tự ưu tiên của các phép toán. Đầu vào ( a và b ) có thể là các
phần tử trong tập Z hoặc tập Z n.

Tính chất
Ta đã từng đề cập tới việc hai đầu vào của phép tốn hai ngơi trong số học mơ-đun
có thể nằm trong tập Z hoặc Z n. Tính chất sau đây cho phép chúng ta ánh xạ hai đầu
Tính chất thứ nhất:


(a+ b)mod n=[(a mod n)+( b mod n)]mod n

Tính chất thứ hai:

( a−b ) mod n=[(a mod n)−(b mod n)]mod n

Tính chất thứ ba:

(a × b)mod n=[ ( a mod n ) ×( b mod n)] mod n

6


vào tới tập Z n (nếu chúng tới từ tập Z ) trước khi thực hiện ba phép toán hai ngơi (
+,−, ×).
Q trình trước và sau khi áp dụng những tính chất trên.

Mặc dù q trình xử lý sẽ dài hơn nếu ta sử dụng các tính chất trên, nhưng trong
mật mã ta sẽ phải xử lý với những con số rất lớn. Ví dụ, nếu ta nhân hai số nguyên
lớn với một số nguyên lớn khác, ta sẽ được môt số nguyên quá lớn để lưu trữ trong
máy tính. Áp dụng các tính chất trên, trước tiên làm cho hai tốn hạng nhỏ đi, sau
đó mới thực hiện phép nhân.
Ví dụ:
1. (1,723,345 + 2,124,945) mod 11 = (8 + 9) mod 11 = 6
2. (1,723,345 − 2,124,945) mod 16 = (8 − 9) mod 11 = 10
3. (1,723,345 × 2,124,945) mod 16 = (8 × 9) mod 11 = 6
Trong số học, ta thường cần tìm số dư lũy thừa của 10 khi chia cho một số nguyên.
Ví dụ, ta cần tính 10 mod 3, 102 mod 3, 103 mod 3, v.v… Hay ta cần tính 10 mod 7,
102 mod 7, 103 mod 7, v.v… Tính chất thứ ba của tốn tử mod ở trên sẽ làm cơng
việc trở nên dễ dàng hơn.

10n mod x=( 10 mod x )n

Áp dụng tính chất thứ ba n lần.

Nghịch đảo
Khi ta làm việc trong số học mơ-đun, ta thường cần tìm nghịch đảo của một số
trong phép tính. Ta thường cần tìm nghịch đảo cộng (liên quan tới phép cộng) hoặc
nghịch đảo nhân (liên quan đến phép nhân).
7


Nghịch đảo cộng
Trong tập Z n, hai số a và b là nghịch đảo cộng của nhau nếu
a+ b ≡0(mod n)

Trong Z n, nghịch đảo cộng của a có thể được tính bằng b=n−a. Ví dụ, nghịch đảo
cộng của 4 trong Z n là 10−4=6 .
Trong số học mô-đun, mỗi số nguyên đều có một nghịch đảo cộng. Tổng của
một số nguyên và nghịch đảo cộng của nó đồng dư với 0 trong modulo n.
Lưu ý rằng trong số học mơ-đun, mỗi một số sẽ có một nghịch đảo cộng và phần tử
nghịch đảo đó là duy nhất; mỗi số có một và chỉ một nghịch đảo cộng. Tuy nhiên,
nghịch đảo cộng của một số có thể là chính nó.
Nghịch đảo nhân
Trong Z n, hai số a và b là nghịch đảo nhân của nhau nếu
a × b ≡1 ( mod n )

Ví dụ, nếu xét mơ-đun 10, nghịch đảo nhân của 3 là 7. Nói cách khác, ta có
( 3 ×7 ) mod 10=1.
Trong số học mơ-đun, một số ngun có thể có hoặc khơng có nghịch đảo
nhân. Nếu tồn tại nghịch đảo nhân, tích của số nguyên và nghịch đảo nhân

của nó đồng dư với 1 trong modulo n.
Người ta chứng minh được rằng a có nghịch đảo nhân trong Z n (hay nói a khả
nghịch) khi và chỉ khi gcd ( n, a )=1. Khi đó, a và n được gọi là hai số nguyên tố cùng
nhau.
Ví dụ:
1. Không tồn tại nghịch đảo nhân của 8 trong Z10 vì gcd ( 10,8 )=2≠ 1. Hay nói
cách khác, ta khơng thể tìm được bất kỳ số ngun nào từ 0 đến 9 mà khi
nhân với 8 cho kết quả đồng dư với 1 trong modulo 10.
2. Trong Z10 có ba cặp nghịch đảo nhân là ( 1, 1 ) , ( 3,7 ) ,( 9,9). Các số 0, 2, 4, 6,8
khơng có nghịch đảo nhân
( 1 ×1 ) mod 10=1

( 3 ×7 ) mod 10=1

( 9 × 9 ) mod 10=1

Số nguyên a trong tập Z n tồn tại nghịch đảo nhân khi và chỉ khi
gcd ( n, a ) ≡ 1(mod n)

8

( s ×n )+ ( b ×t )=1


Thuật tốn Euclid mở rộng có thể tìm nghịch đảo nhân b trong Z n khi đã biết n và b
và tồn tại nghịch đảo nhân (khả nghịch). Để chứng tỏ điều đó, ta sẽ thay số nguyên
đầu tiên a bằng n. Bằng thuật tốn Euclid, ta có thể tìm được s và t trong phương
trình s ×n+ b× t=gcd ( n , b ). Tuy nhiên, nếu tồn tại nghịch đảo nhân của b , gcd ( n, b )
phải bằng 1. Do đó, phương trình sẽ là
Sử dụng tốn tử modulo vào cả hai vế của phương trình. Hay nói cách khác, ta ánh

xạ cả hai vế tới tập Z n. Ta sẽ có
( s ×n+ b ×t ) mod n=1 mod n

[ ( s ×n ) mod n ]+ [( b× t ) mod n ]=1 mod n
0+ [ ( b × t ) mod n ]=1
→ t là phần tử nghịch đảo nhân của b trong Z n

( b × t ) mod n=1

Lưu ý, biểu thức [ ( s ×n ) mod n ] ở dịng thứ ba bằng 0 vì nếu ta chia ( s ×n ) cho n,
thương tìm được là s và số dư là 0.
Thuật tốn Euclid mở rộng tìm được nghịch đảo nhân của b trong Z n
khi biết n, b và gcd ( n, b )=1.
Nghịch đảo nhân của b là giá trị của t sau khi ánh xạ tới Z n.

a. Cách tìm nghịch đảo nhân

b. Mơ tả thuật tốn

Ví dụ tìm nghịch đảo nhân của 11 trong Z26 :
q

r1

r2

r

t1


t2

t

2

26

11

4

0

1

−2

2

11

4

3

1

−2


5
9


1

4

3

1

−2

5

−7

3

3

1

0

5

−7


26

1

0

−7

26

Ta có gcd ( 26,11 )=1, cho nên tồn tại nghịch đảo nhân của 11. Thuật tốn Euclid mở
rộng tìm được t 1=−7. Nghịch đảo nhân cần tìm là (−7 ) mod 26=19. Như vậy, 11 và
19 là nghịch đảo nhân của nhau trong Z26 . Thật vậy, ( 11 ×19 ) mod 26=209 mod 26=1.

Bảng cộng và nhân
Trong bảng cộng, mỗi số nguyên đều có một phần tử nghịch đảo cộng. Các cặp
phần tử nghịch đảo được tìm thấy khi kết quả của phép cộng bằng 0. Chúng ta có
các cặp (0, 0), (1, 9), (2, 8), (3, 7), (4, 6), và (5, 5). Trong bảng nhân, ta có ba cặp
nghịch đảo nhân của nhau là (1, 1), (3, 7), và (9, 9). Các cặp này được tìm thấy
trong bảng khi phép nhân cho kết quả bằng 1. Cả hai bảng đều đối xứng qua đường
chéo hướng từ góc trên bên trái xuống góc dưới bên phải, điều này thể hiện tính
giao hốn của phép nhân và phép cộng (a+ b=b+a và a ×b=b × a). Bảng cộng cũng
cho thấy mỗi hồng hoặc cột là một hốn vị của một hàng hoặc cột khác. Điều này
không đúng trong bảng nhân.

Bảng cộng trong Z10

Bảng nhân trong Z10

Một số tập hợp khác cho phép cộng và phép nhân

Trong mật mã ta thường làm việc với các phần tử nghịch đảo. Nếu người gửi sử
dụng một số nguyên (làm khóa cho mã hóa), người nhận sẽ phải sử dụng phần tử
nghịch đảo của số nguyên đó (làm khóa giải mã). Nếu phép tốn (trong thuật tốn
mã hóa/giải mã) là phép cộng, tập Z n có thể được sử dụng làm tập hợp các khóa khả
thi vì mỗi số ngun trong tập hợp này đều có một phần tử nghịch đảo cộng tương
ứng. Mặt khác, nếu phép tốn (trong thuật tốn mã hóa/giải mã) là phép nhân, Z n
khơng thể là tập khóa khả thi vì chỉ một số phần tử trong tập hợp này tồn tại phần tử
nghịch đảo nhân. Ta cần một tập hợp khác để biểu diễn. Tập hợp mới là tập con của
Z n, chỉ bao gồm các số nguyên khả nghịch trong Z n. Tập hợp này được gọi là Z n .
¿

10


Hình 2.17 chỉ ra một vài trường hợp của hai tập hợp. Lưu ý rằng Z n có thể tạo thành
từ bảng nhân, ví dụ như trong hình 2.16.
¿

Mỗi phần tử của Z n đều có nghịch đảo cộng, nhưng chỉ một số phần tử mới tồn tại
nghịch đảo nhân. Mỗi phần tử của Z n lại đều có nghịch đảo nhân, nhưng chỉ một vài
phần tử là có nghịch đảo cộng (trong Z n ).
¿

¿

Ta cần sử dụng Z n khi cần đến nghịch đảo cộng; cần sử dụng Z n khi cần đến
nghịch đảo nhân.
¿

Hai tập hợp khác

Mật mã thường dùng hai tập khác là Z p và Z p . Phần mô-đun trong hai tập là một số
nguyên tố. Số nguyên tố là số chỉ có hai ước là 1 và chính nó.
¿

Tập Z p giống với tập Z n, trừ việc n là một số nguyên tố. Z p chứa tất cả các số
nguyên từ 0 đến p-1. Mỗi phần tử trong Z p đều có nghịch đảo cộng và mỗi phần tử
khác 0 đều có nghịch đảo nhân.
Tương tự, tập Z p cũng giống tập Z n với n là một số nguyên tố. Z p chứa tất cả các số
nguyên từ 1 đến p-1. Mỗi phần tử trong Z p đều tồn tại cả nghịch đảo cộng và
nghịch đảo nhân. Z p là một trường hợp rất tốt trong việc chọn một tập hợp có cả
nghịch đảo cộng và nghịch đảo nhân.
¿

¿

¿

¿

¿

3. ĐỒNG DƯ TUYẾN TÍNH:
Phương trình đồng dư tuyến tính là phương trình có dạng
ax ≡ b (mod n)
trong đó a, b, n là các số nguyên, n > 0 và x là ẩn số.
Cách giải:
- Tính gcd(a, n) = d, nếu d b thì phương trình vơ nghiệm, nếu d | b thì phương
trình có d nghiệm. Các bước tìm nghiệm:
+ Chia cả 2 vế cho d
+ Nhân cả 2 vế với nghịch đảo của a/d, ta được nghiệm x0

+ Các nghiệm còn lại x = x0 + k(n/d) với k = 0,1,...,(d-1)

4. MA TRẬN:
4.1. Định nghĩa
Ma trận A kích thước m*n (m hàng, n cột) với a ij là một phần tử hàng i, cột j

11


a11 a 12
a
⋯ 1n
a
a
a2 n
Am∗n= 21 22

⋱ ⋮
am 1 a m 2 ⋯ a mn

[

]

4.2.
Một số phép toán về ma trận
Cho ma trận A,B,C
4.2.1. Cộng ma trận
C = A + B  c ij = a ij + b ij
4.2.2. Nhân ma trận

C = A × B  c ik = ∑ aij×b jk = a i1×b 1 j+a i2×b 2 j+…+a ℑ×b mj
(Điều kiện: số cột ma trận A = số hàng ma trận B)
4.2.3. Nhân ma trận với một số
C = tA  c ij = t × a ij

(t ∈ R)

4.2.4 Ma trận phụ đại số chuyển vị
Cho An × n
Gọi Dij là định thức con của ma trận A khi bỏ đi i hàng, j cột (det(A) ≠0)
T

A¿ =

[

A11
A 21
An1

A12

A22


An 2 ⋯

A1n
A2n


A nn

T

]

với Aij =(−1)i+ j Dij

4.3.
Định thức
Cho ma trận vng A kích thước n*n
+) n=1: det (A) = a 11
+) n>1:
i+ j

∑ (−1) × Aij×det ( Aij)
det(A) = i=1
…n
Trong đó Aij là ma trận A bỏ đi i hàng, j cột
 Ma trận nghịch đảo
i)
Nghịch đảo cộng:
Ma trận B gọi là nghịch đảo cộng của ma trận A  A+B=O
Trong đó O là ma trận khơng
ii)
Nghịch đảo nhân:
Ma trận nghịch đảo nhân của A, kí hiệu A−1: A* A−1=I (I: ma trận đơn vị)
Cách tính: A−1= (det ( A ) )−1* A¿
T


12


MỘT SỐ HỆ MẬT CỔ ĐIỂN
1. Additive Cipher:
Mật mã cộng (Additive cipher) còn được gọi là mật mã Caesar (Caesar
cipher), 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 đó được mã hóa thơng qua phép cộng module.
Để thực hiện mật mã hóa Caesar, trước tiên ta cần ánh xạ các kí tự trong
bảng chữ cái (La tinh) thành các số tương ứng 0..25

Sau đó, ta thực hiện q trình mã hóa theo sơ đồ sau:

Ở đây, khóa k là một số nguyên có giá trị thuộc tập Z26 = {0,1,2,…,25}
VD: Mã hóa bản tin P = “VIETNAM” bằng mật mã cộng với khóa k = 5
V

21

=> Encryption: (21 + 05) mod 26 = 00

A

I

08

=> Encryption: (08 + 05) mod 26 = 13

N


E

04

=> Encryption: (04 + 05) mod 26 = 09

J

T

19

=> Encryption: (19 + 05) mod 26 = 24

Y

N

13

=> Encryption: (13 + 05) mod 26 = 18

S

A

00

=> Encryption: (00 + 05) mod 26 = 05


F

M

12

=> Encryption: (12 + 05) mod 26 = 17

R

=> C = “ANJYSFR”

13


Để giải mã, ta thực hiện theo sơ đồ sau:

Trong công thức này, -k là phần tử nghịch đảo cộng của k trong tập Z26:
(k + (-k)) mod 26 = 0
VD: Giả sử thu được ciphertext như ví dụ ở trên, biết khóa k = 5. Tìm plaintext?
k = 5 =>

-k = 21

A

00

=> Decryption: (00 + 21) mod 26 = 21


V

N

13

=> Decryption: (13 + 21) mod 26 = 08

I

J

09

=> Decryption: (09 + 21) mod 26 = 04

E

Y

24

=> Decryption: (24 + 21) mod 26 = 19

T

S

18


=> Decryption: (18 + 21) mod 26 = 13

N

F

05

=> Decryption: (05 + 21) mod 26 = 00

A

R

17

=> Decryption: (17 + 21) mod 26 = 12

M

=> P = “VIETNAM”

2. Multiplicative Cipher:
Mật mã nhân (Multiplicative cipher) 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 đó được mã hóa
thơng qua phép nhân module.
Để thực hiện mật mã hóa Caesar, trước tiên ta cần ánh xạ các kí tự trong
bảng chữ cái (La tinh) thành các số tương ứng 0..25


14


Sau đó, ta thực hiện q trình mã hóa theo sơ đồ sau:

Ở đây, khóa k là một số nguyên có giá trị thuộc tập Z26 = {0,1,2,…,25}
VD: Mã hóa bản tin P = “VIETNAM” bằng mật mã nhân với khóa k = 5
V

21

=> Encryption: (21 x 05) mod 26 = 01

B

I

08

=> Encryption: (08 x 05) mod 26 = 14

O

E

04

=> Encryption: (04 x 05) mod 26 = 20

U


T

19

=> Encryption: (19 x 05) mod 26 = 17

R

N

13

=> Encryption: (13 x 05) mod 26 = 13

N

A

00

=> Encryption: (00 x 05) mod 26 = 00

A

M

12

=> Encryption: (12 x 05) mod 26 = 08


I

=> C = “BOURNAI”
Để giải mã, ta thực hiện theo sơ đồ sau:

Trong công thức này, k -1 là phần tử nghịch đảo nhân của k trong tập Z26
k -1.k mod 26 = 1
VD: Giả sử thu được ciphertext như ví dụ ở trên, biết khóa k = 5. Tìm plaintext?
k = 5 =>

k -1 = 21

B

01

=> Decryption: (01 x 21) mod 26 = 21

V

O

14

=> Decryption: (14 x 21) mod 26 = 08

I
15



U

20

=> Decryption: (20 x 21) mod 26 = 04

E

R

17

=> Decryption: (17 x 21) mod 26 = 19

T

N

13

=> Decryption: (13 x 21) mod 26 = 13

N

A

00

=> Decryption: (00 x 21) mod 26 = 00


A

I

08

=> Decryption: (08 x 21) mod 26 = 12

M

=> P = “VIETNAM”

3. Affine Cipher:
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 đó được mã hóa thơng qua một hàm bậc
nhất có dạng: y = ax + b
Để thực hiện mật mã hóa Affine, trước tiên ta cần ánh xạ các kí tự trong
bảng chữ cái (La tinh) thành các số tương ứng 0..25

Sau đó, thực hiện q trình mã hóa theo sơ đồ sau:

Trong cơng thức này, 2 khóa a và b là 2 số nguyên thuộc tập Z26, trong đó a
và 26 là hai số nguyên tố cùng nhau (gcd(a, 26) = 1)
VD: Mã hóa bản tin P = “VIETNAM” bằng mật mã Affine với khóa a = 17 và b = 5
V

21

=> Encryption: (17.21 + 05) mod 26 = 24


Y

I

08

=> Encryption: (17.08 + 05) mod 26 = 11

L

E

04

=> Encryption: (17.04 + 05) mod 26 = 21

V

T

19

=> Encryption: (17.19 + 05) mod 26 = 16

Q
16


N


13

=> Encryption: (17.13 + 05) mod 26 = 18

S

A

00

=> Encryption: (17.00 + 05) mod 26 = 05

F

M

12

=> Encryption: (17.12 + 05) mod 26 = 01

B

=> C = “YLVQSFB”
Để giải mã, ta thực hiện theo sơ đồ sau:

Ở đây, a-1 là phần tử nghịch đảo nhân của a và –b là phần tử nghịch đảo cộng
của b trong tập Z26: a.a-1 mod 26 = 1 và (b + (-b)) mod 26 = 0
Mật mã cộng là một trường hợp đặc biệt của mật mã Affine với a = 1
Mật mã nhân là một trường hợp đặc biệt của mật mã Affine với b = 0

VD: Giả sử thu được ciphertext như ví dụ ở trên, biết khóa a = 17 và b = 5. Tìm
plaintext?
a = 17 =>

a-1 = 23

b = 05 =>

-b = 21

Y

24

=> Decryption: 23(24 + 21) mod 26 = 21

V

L

11

=> Decryption: 23(11 + 21) mod 26 = 08

I

V

21


=> Decryption: 23(21 + 21) mod 26 = 04

E

Q

16

=> Decryption: 23(16 + 21) mod 26 = 19

T

S

18

=> Decryption: 23(18 + 21) mod 26 = 13

N

F

05

=> Decryption: 23(05 + 21) mod 26 = 00

A

B


01

=> Decryption: 23(01 + 21) mod 26 = 12

M

=> P = “VIETNAM”

4. Substitution Cipher:
Do mật mã cộng, mật mã nhân và mật mã Affine có khơng gian khóa nhỏ
nên chúng rất dễ bị tấn công và kẻ tấn công có thể dễ dàng giải mã tìm ra nội dung
bản tin rõ bằng cách vét cạn hết khóa trong khơng gian khóa.
17


Có một giải pháp tốt hơn đó là tạo một ánh xạ giữa mỗi kí tự trong bản tin rõ
với một kí tự tương ứng trong bản tin mã hóa. Trước tiên, người gửi tin và người
nhận tin thống nhất một bảng thể hiện ánh xạ cho mỗi kí tự trong bảng chữ cái (nói
theo cách khác là đảo vị trí của các kí tự trong bảng chữ cái). Bảng này chính là
chìa khóa để mã hóa và giải mã tin.
Sơ đồ thực hiện mã hóa và giải mã như sau:

Để hiểu rõ hơn về Substitution Cipher. Ta xét ví dụ sau đây:
Cho bảng:

Giả sử có P = “THISISTOOHARDTOFINDTHEKEY”
Dựa vào bảng ở trên, ta sẽ thu được bản tin mã hóa
C = “ICFVFVIYYCNHTIYBFGTICRXRS”
Nếu một người nhận được bản tin mã hóa này và biết bảng ở trên (do người
gửi và người nhận đã thống nhất với nhau từ trước) thì hồn tồn có thể khơi phục

được bản tin rõ ban đầu.

18


5. Vigenere Cipher:
Mật mã Vigenere là một phương pháp mã hóa kí tự bằng cách dùng một loạt
các chuỗi đan xen mật mã Caesar dựa trên các chữ cái của một từ khóa. Đây là một
dạng mật mã hóa đối xứng thay thế đa kí tự.
Để thực hiện mật mã hóa Vigenere, trước tiên ta cần ánh xạ các kí tự trong
bảng chữ cái (La tinh) thành các số tương ứng 0..25

Sơ đồ thực hiện mã hóa và giải mã lần lượt như sau:

Trong sơ đồ này, chìa khóa K = [(k1, k2,…,km), (k1, k2,…,km),… ] gồm các kí tự
có trong từ khóa ban đầu được lặp đi lặp lại sao cho có chiều dài đúng bằng chiều
dài của bản tin rõ (hay bản tin mã hóa).
VD: Mã hóa bản tin P = “ILOVEYOUVERYMUCH” bằng mật mã Vigenere với
khóa K = “HATE”

19


I
08
07
15
P

P

K
C

L
11
00
11
L

O
14
19
07
H

V
21
04
25
Z

E
04
07
11
L

Y
24
00

24
Y

O
14
19
07
H

U
20
04
24
Y

V
21
07
02
C

E
04
00
04
E

R
17
19

10
K

Y
24
04
02
C

M
12
07
19
T

U
20
00
20
U

C
02
19
21
V

H
07
04

11
L

=> C = “PLHZLYHYCEKCTUVL”
Giả sử bây giờ ta nhận được bản tin mã hóa C = “PLHZLYHYCEKCTUVL”, biết
khóa K = “HATE”. Để khôi phục lại bản tin rõ ta làm như sau:
C
K
-K
P

P
15
07
19
08
I

L
11
00
00
11
L

H
07
19
07
14

O

Z
25
04
22
21
V

L
11
07
19
04
E

Y
24
00
00
24
Y

H
07
19
07
14
O


Y
24
04
22
20
U

C
02
07
19
21
V

E
04
00
00
04
E

K
10
19
07
17
R

C
02

04
22
24
Y

T
19
07
19
12
M

U
20
00
00
20
U

V
21
19
07
02
C

L
11
04
22

07
H

=> P = “ILOVEYOUVERYMUCH”

6. Hill Cipher:
Trong mật mã học cổ điển, mật mã Hill là một dạng mật mã hóa thay thế đa
kí tự dựa trên cơ sở mơn đại số tuyến tính, cụ thể ở đây là thực hiện các phép toán
với ma trận như nhân hai ma trận, tìm ma trận nghịch đảo,…
Chìa khóa trong hệ mật này là một ma trận vng K có bậc m và ma trận K
phải khả nghịch.
 k11 k12  k1m 


 k21 k22  k2 m 
K   



 km1 km 2  kmm 





Để thực hiện quá trình mã hóa, trước tiên ta cần chuyển bản tin rõ P thành
một ma trận có kích thước m x n (n là bậc của ma trận chìa khóa K). Trong trường
hợp chiều dài của bản tin rõ nhỏ hơn m x n thì tại những ơ cịn trống trong ma trận P
ta điền kí tự ‘Z’ (giá trị số tương ứng là 25). Sau đó thực hiện mã hóa theo sơ đồ
sau:


20



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×