1
Lecture 1: Mật mã cổ điển
1. Giới thiệu
2. Định nghĩa một hệ mật
3. Các tính chất của một hệ mật mã
4. Số học modulo m
5. Mã dịch vòng (shift cipher)
6. Mã thay thế
7. Mã Affine
8. Mã Vigenère
9. Mã Hill
10.Mã hoán vị (MHV)
11.Các hệ mã dòng
2
Giới thiệu
•Mục đích cơ bản của mật mã là tạo ra khả năng liên lạc trên một
kênh không an toàn cho hai người sử dụng (tạm gọi là Alice và
Bob) sao cho đối phương (Oscar) không thể hiểu được thông tin
được truyền đi.
• Kênh này có thể là một đường dây điện thoại hoặc một mạng máy
tính. Thông tin mà Alice muốn gửi cho Bob (bản rõ) có thể là một
văn bản tiếng Anh, Việt, các dữ liệu bằng số hoặc bất cứ tài liệu ở
dạng nào. Alice sẽ mã hoá bản rõ bằng một khoá đã được xác định
trước và gửi bản mã trên kênh.
• Đối phương Oscar giả sử có bản mã thu trộm được trên kênh song
không thể xác định nội dung của bản rõ, nhưng Bob (người đã biết
khoá mã) có thể giải mã và thu được bản rõ (nội dung của tài liệu).
3
Định nghĩa một hệ mật mã
•Một hệ mật là một bộ 5 (P,C,K,E,D) thoả mãn các điều
kiện sau:
– P là một tập hữu hạn các ký tự bản rõ.
–C làmột tập hữu hạn các ký tự bản mã.
– K (không gian khoá) là tập hữu hạn các khoá có thể.
– Đối với mỗi k∈ K có một quy tắc mã e
k
∈ E: P → C và
một quy tắc giải mã tương ứng d
k
∈ D.
•Các hàm e
k
: P → C và d
k
: C → P là những hàm mà:
d
k
(e
k
(x)) = x với mọi bản rõ x ∈ P.
4
Kênh liên lạc
•Nguồn khóa được Alice và Bob trao đổi trên kênh an toàn.
5
Các tính chất của một hệ mật mã
•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:
1. Các hàm mã hoá e
K
và các hàm giải mã d
K
phải có
khả năng tính toán được một cách hiệu quả.
2. Đối phương dựa 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õ x.
6
Số học modulo m
•Giả sử a và b là các số nguyên và m là một số nguyên
dương. Khi đóta viết a ≡ b (mod m) nếu m chia hết cho
(b-a). Mệnh đề a ≡ b (mod m) được gọi là "a đồng dư với
b theo modulo m".
• Phân tích a và b theo m như sau:
¾a = q
1
m + r
1
và b = q
2
m + r
2
trong đó0 ≤ r
1
≤ m-1 và 0
≤ r
2
≤ m-1. (chú ý: r
1
và r
2
là không âm)
¾Dễ dàng thấy rằng a ≡ b (mod m) khi và chỉ khi r
1
= r
2
.
Ta sẽ dùng ký hiệu a mod m (không dùng các dấu
ngoặc). Như vậy: a ≡ b (mod m) khi và chỉ khi a mod m
= b mod m.
¾Nếu thay a bằng a mod m thì ta nói rằng a được rút gọn
theo modulo m.
7
Số học modulo m (tiếp)
• Nhận xét: Nhiều ngôn ngữ lập trình của máy tính xác định
a mod m là phần dư trong dải -m+1,.. ., m-1 có cùng dấu
với a.
•Vídụ -17 mod 7 sẽ là -3, tuy nhiên theo định nghĩa ở trên
thì -17 mod 7 = (-3)*7 +4 (4 là đối của -3 theo phép cộng:
4= 7+(-3)).
•Bây giờ ta có thể định nghĩa số học modulo m - Z
m
như
sau: Z
m
là tập hợp {0,1,. . .,m-1} và được trang bị hai phép
toán cộng và nhân. Việc cộng và nhân trong Z
m
được thực
hiện giống như cộng và nhân các số nguyên ngoại trừ một
điểm là các kết quả được rút gọn theo modulo m.
8
Số học modulo m – ví dụ
•Vídụ tính 11× 13 trong Z
16
tương tự như với các số
nguyên ta có:
–11 ×13 = 143.
– Để rút gọn 143 theo modulo 16, ta thực hiện phép chia
bình thường: 143 = 8 × 16 + 15,
–Bởi vậy 143 mod 16 = 15 trong Z
16
.
•
9
Số học modulo m–tính chất của các phép toán
1. Phép cộng là đóng, tức với bất kì a,b ∈ Zm ,a +b ∈ Zm
2. Phép cộng là giao hoán, tức là với a,b bất kì ∈ Zm: a+b = b+a
3. Phép cộng là kết hợp, tức là với bất kì a,b,c ∈ Zm: (a+b)+c =
a+(b+c)
4. 0 là phần tử đơn vị của phép cộng, có nghĩa là với a bất kì ∈ Zm:
a+0 = 0+a = a
5. Phần tử nghịch đối của phép cộng của phần tử bất kì (a ∈ Zm ) là
m-a, nghĩa là a+(m-a) = (m-a)+a = 0 với bất kì a ∈ Zm .
6. Phép nhân là đóng, tức là với a,b bất kì ∈ Zm, ab ∈ Zm .
7. Phép nhân là giao hoán, nghĩa là với a,b bất kì ∈ Zm, ab = ba
8. Phép nhân là kết hợp, nghĩa là với a,b,c ∈ Zm , (ab)c = a(cb)
9. 1 là phần tử đơn vị của phép nhân, tức là với bất kỳ a ∈ Zm: a×1 =
1×a = a
10. Phép nhân có tính chất phân phối đối với phép cộng, tức là đối với
a,b,c ∈ Zm , (a+b)c = (ac)+(bc) và a(b+c) = (ab) + (ac)
10
Số học modulo m – nhận xét
•Vìphần tử đối của phép cộng tồn tại trong Z
m
nên ta cũng
có thể thực hiện phép trừ trong Z
m
. Ta định nghĩa a-b
trong Z
m
là a+m-b mod m. Một cách tương đương có thể
tính số nguyên a-b rồi rút gọn theo modulo m.
•Vídụ : Để tính 11-18 trong Z
31
:
– Ta tính 11+13 mod 31 = 24.
– Hoặc, có thể lấy 11-18 được -7 rồi sau đó tính -7 mod
31 = 24.
11
Mã dịch vòng (shift cipher)
•Hệ mật mã dịch vòng:
– P = C = K = Z
26
–Với 0 ≤ k ≤ 25 , các hàm mã và giải mã như sau:
•e
k
(x) = x +k mod 26
•vàd
k
(y) = y-k mod 26
•(x,y ∈ Z
26
)
– Nhận xét: Trong trường hợp K = 3, hệ mật mã thường
được gọi là mã Caesar đã từng được Julius Caesar sử
dụng.
12
Mã dịch vòng (shift cipher)
• Ta sẽ sử dụng MDV (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 như
sau: A ↔ 0,B ↔ 1, . . ., Z ↔ 25. Vì phép tương ứng này
còn dùng trong một vài ví dụ nên ta sẽ ghi lại để còn tiện
dùng sau này, ta có bảng ánh xạ chi tiết sau:
13
Mã dịch vòng (shift cipher) - ví dụ
•Giả sử khoá cho mã dịch vòng là k = 11 và bản rõ là:
wewillmeetatmidnight
• Trước tiên biến đổi bản rõ thành dãy các số nguyên nhờ
dùng phép tương ứng trên. Ta có:
w-22 e-4 w-22 i-8 l-11 l-11 m-12 e-4 e-4 t-19
a-0 t-19 m-12 i-8 d-3 n-13 i-8 g-6 h-7 t-19
•sau đócộng 11 vào mỗi giá trị rồi rút gọn tổng theo
modulo 26 (công thức e
k
(x) = x +k mod 26):
7 15 7 19 22 22 23 15 15 4
114231914241917184
•Cuối cùng biến đổi dãy số nguyên này thành các kí tự thu
được bản mã sau: HPHTWWXPPELEXTOYTRSE
14
Mã dịch vòng (shift cipher) - ví dụ
•Nhận xét: Trong ví dụ trên, ta đã dùng các chữ in hoa cho
bản mã, các chữ thường cho bản rõ để tiện phân biệt.
•Giải mã bản mã này:
–Bob sẽ biến đổi bản mã thành dãy các số nguyên rồi trừ
đi giá trị cho 11 và rút gọn theo modulo 26 (công thức
d
k
(y) = y-k mod 26)
–Cuối cùng biến đổi lại dãy này thành các ký tự.
15
Mã dịch vòng (shift cipher) - ví dụ
•Nhận xét:
– MDV (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á d
K
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.
16
Mã dịch vòng (shift cipher) - ví dụ
Cho bản mã
JBCRCLQRWCRVNBJENBWRWN
ta sẽ thử liên tiếp các khoá giải mã k=0 ,k=1, ... :
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
17
Mã thay thế
•Hệ mật mã thay thế được định nghĩa như sau:
– P =C = Z
26
;
–tập khóa K chứa mọi hoán vị có thể của 26 kí hiệu 0,1, .
. . , 25.
–Với mỗi phép hoán vị π∈K, ta định nghĩa:
•e
π
(x) = π(x)
và
•d
π
(y) = π
-1
(y), trong đó π
-1
là hoán vị ngược của π.
18
Mã thay thế -Ví dụ
•Vídụ về phép hoán vị ngẫu nhiên π tạo nên một hàm mã
hoá
•Như vậy, e
π
(a) = X, e
π
(b) = N,. . . .
19
Mã thay thế -Vídụ (tiếp)
•Hàm giải mã là phép hoán vị ngược. Điều này được thực hiện bằng
cách viết hàng thứ hai lên trước rồi sắp xếp theo thứ tự chữ cái. Ta
nhận được:
•Bởi vậy dπ (A) = d, dπ(B) = 1, . . .
•Như vậy khoá của mã thay thế là một phép hoán vị của 26 kí tự. Số
các hoán vị này là 26!, lớn hơn 4 ×10
26
là một số rất lớn. Bởi vậy,
phép tìm khoá vét cạn không thể thực hiện được, thậm chí bằng máy
tính.
•Bài tập, bạn đọc có giải mã bản mã sau:
– M G Z V Y Z L G H C M H J M Y X S S E M N H A H Y C D
L M H A.
20
Mã Affine - lập mã
• MDV là một trường hợp đặc biệt của MTT (tập khóa gồm
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. Trong mã Affine, ta giới hạn chỉ xét các
hàm mã có dạng:
– y=e(x) = ax + b mod 26, (y là bản mã)
–a,b ∈ Z
26
. Các hàm này được gọi là các hàm Affine
(chú ý rằng khi a = 1, ta có MDV).
• Để giải mã được, yêu cầu hàm Affine phải là đơn ánh. Nói
cách khác, với bất kỳ y ∈ Z
26
, ta muốn có đồng nhất thức
sau: ax + b ≡ y (mod 26) phải có nghiệm x duy nhất.
21
Mã Affine - lập mã
• Đồng dư thức: ax + b ≡ y (mod 26), tương đương với:
–ax ≡ y-b (mod 26)
– Vì y thay đổi trên Z
26
nên y-b cũng thay đổi trên Z
26
.
Bởi vậy, ta chỉ cần nghiên cứu phương trình đồng dư:
–ax ≡ y (mod 26) (y∈ Z
26
).
•Phương trình này có một nghiệm duy nhất x đối với mỗi y
khi và chỉ khi UCLN(a,26) = 1:
–Giả thiết 1: UCLN(a,26) = d >1. Khi đó, đồng dư thức
ax ≡ 0 (mod 26) sẽ có ít nhất hai nghiệm phân biệt
trong Z
26
là x = 0 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ệ.
22
Mã Affine - lập mã - Ví dụ
•Với a=4, ta có:
– UCLN(4,26) = 2
– Nên hàm e(x)= 4x +7 mod 26 không phải là hàm mã
hoá hợp lệ vì khi đó x và x+13 sẽ mã hoá thành cùng
một giá trị đối với bất kì x ∈ Z
26
:
• e(x+13)=4(x+13)+7 = 4x+52+7 =4x+0+7=4x+7
(vì 52/26=2)
23
Mã Affine - lập mã
•Giả thiết 2, UCLN(a,26) = 1 và phương trình đồng dư
ax ≡ y (mod 26), có hai nghiệm x1 và x2 khi đóta có:
–ax1 ≡ ax2 (mod 26), tương đương với
– a(x1- x2) ≡ 0(mod 26) => 26 | a(x1- x2) hay ( a(x1-
x2) chia hết cho 26)
–Bây giờ ta sẽ sử dụng một tính chất của phép chia
sau: Nếu USLN(a,b)=1 và a⏐bc thì a⏐c. Vì 26⏐a(x1-
x2) và USLN(a,26) = 1 nên ta có: 26⏐(x1- x2), tức
là: x1 ≡ x2 (mod 26), điều này chứng tỏ rằng x1 ≡ x2
hay phương trình ax ≡ y (mod 26) có nghiệm duy
nhất.
24
Mã Affine - Định lí
•Phương trình đồng dư ax ≡ b mod m chỉ có một nghiệm
duy nhất x ∈ Z
m
với mọi b ∈ Z
m
khi và chỉ khi
UCLN(a,m) = 1.
25
Mã Affine - Ví dụ
•Vì26 = 2 ×13 nên các giá trị a ∈ Z
26
thoả mãn
UCLN(a,26) = 1 là a = 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23
và 25. (tổng cộng có 12 giá trị có thể cho a)
•Tham số b có thể là một phần tử bất kỳ trong Z
26
. Như
vậy, mã Affine có 12 × 26 = 312 khoá có thể (dĩ nhiên
con số này quá nhỏ để bảo đảm an toàn).