Giáo án an toàn bảo mật 2
- 11 trang
- file .pdf
Các định nghĩa trên phép cộng và phép nhân Zm thảo mãn hầu hết các quy
tắc quen thuộc trong số học. Sau đây ta sẽ liệt kê mà không chứng minh các tính
chất này:
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 đảo 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)
Các tính chất 1,3-5 nói lên rằng Zm lâp nên một cấu trúc đại số được gọi là
một nhóm theo phép cộng. Vì có thêm tính chất 4 nhóm được gọi là nhóm Aben
(hay nhóm giao hoán).
Các tính chất 1-10 sẽ thiết lập nên một vành Zm . Một số ví dụ quen thuộc
của vành là các số nguyên Z, các số thực R và các số phức C. Tuy nhiên các
vành này đều vô hạn, còn mối quan tâm của chúng ta chỉ giới hạn trên các vành
hữu hạn.
http://www.ebook.edu.vn 12
Vì phần tử ngược của phép cộng tồn tại trong Zm nên cũng có thể trừ các
phần tử trong Zm . Ta định nghĩa a-b trong Zm là a+m-b mod m. Một cách
tương tự có thể tính số nguyên a-b rồi rút gon theo modulo m.
Ví dụ : Để tính 11-18 trong Z31, ta tính 11+31 – 18 mod 31= 11+13 mod 31
= 24. Ngược lại, có thể lấy 11-18 được -7 rồi sau đó tính -7 mod 31 =31-7= 24.
Mã dịch vòng được xác định trên Z26 (do có 26 chữ cái trên bảng chữ cái
tiếng Anh) mặc dù có thể xác định nó trên Zm với modulus m tuỳ ý. Dễ dàng
thấy rằng, MDV sẽ tạo nên một hệ mật như đã xác định ở trên, tức là dK(eK(x)) =
x với mọi x∈ Z26 . Ta có sơ đồ mã như sau:
Giả sử P = C = K = Z26 với 0 ≤ k ≤ 25 , định nghĩa:
eK(x) = x +K mod 26
và dK(x) = y -K mod 26
(x,y ∈ Z26)
Nhận xét: Trong trường hợp K = 3, hệ mật thường được gọi là mã Caesar
đã từng được Julius Caesar sử dụng.
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:
Sau đây là một ví dụ nhỏ để minh hoạ
Ví dụ 1.1:
Giả sử khoá cho MDV 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ó:
http://www.ebook.edu.vn 13
22 4 22 8 11 11 12 4 4 19
0 19 12 8 3 13 8 6 7 19
sau đó cộng 11 vào mỗi giá trị rồi rút gọn tổng theo modulo 26
7 15 7 19 22 22 23 15 15 4
11 4 23 19 14 24 19 17 18 4
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
Để giả mã bản mã này, trước tiên, 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 ( 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ự.
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. Quy tắc này còn tiếp tục sử dụng sau này.
Nếu một hệ mật có thể sử dụng được trong thực tế thì nó phảo 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á eK và mỗi hàm giải mã dK 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.
Tính chất thứ hai xác định (theo cách khá mập mờ) ý tưởng "bảo mật".
Quá trình thử tính khoá K (khi đã biết bản mã y) được gọi là mã thám (sau này
khái niệm này sẽ được làm chính xác hơn). Cần chú ý rằng, nếu Oscar có thể xác
định được K thì anh ta có thể giải mã được y như Bob bằng cách dùng dK. Bởi
vậy, việc xác định K chí ít cũng khó như việc xác định bản rõ x.
Nhận xét rằng, 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á dK
http://www.ebook.edu.vn 14
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:
Ví du 1.2
Cho bản mã
JBCRCLQRWCRVNBJENBWRWN
ta sẽ thử liên tiếp các khoá giải mã d0 ,d1 .. . và y thu được:
http://www.ebook.edu.vn 15
jbcrclqrwcrvnbjenbwrwn
iabqbkpqvbqumaidmavqvm
hzapajopuaptlzhclzupul
gyzozinotzoskygbkytotk
jxynyhmnsynrjexfajxsnsj
ewxmxglmrxmqiweziwrmri
dvwlwfklqwlphvodyhvqlqh
cuvkvejkpvkogucxgupkpg
btujudijoujnftbwfojof
astitchintimesavesnine
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 an toàn là phép tì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 vẫn chưa đủ đảm bảo độ mật.
2.1.2. Mã thay thế
Một hệ mật nổi tiếng khác là hệ mã thay thế. Hệ mật này đã được sử dụng
hàng trăm năm. Trò chơi đố chữ "cryptogram" trong các bài báo là những ví dụ
về MTT.
Trên thực tế MTT có thể lấy cả P và C đều là bộ chữ cái tiếng anh, gồm
26 chữ cái. Ta dùng Z26 trong MDV vì các phép mã và giải mã đều là các phép
toán đại số. Tuy nhiên, trong MTT, thích hợp hơn là xem phép mã và giải mã
như các hoán vị của các kí tự.
Mã thay thế
Cho P =C = Z26 . 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 π.
http://www.ebook.edu.vn 16
Sau đây là một ví dụ về phép hoán vị ngẫu nhiên π tạo nên một hàm mã
hoá (cũng như trước, các ký hiệu của bản rõ được viết bằng chữ thường còn các
ký hiệu của bản mã là chữ in hoa).
Như vậy, eπ (a) = X, eπ (b) = N,. . . . 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, . . .
Ví dụ: Hãy giải mã bản mã:
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.
Mỗi khoá của MTT 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. Tuy nhiên, sau này sẽ thấy rằng
MTT có thể dễ dàng bị thám bằng các phương pháp khác.
2.1.3. Mã Affine
MDV là một trường hợp đặc biệt của 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. Trong mã Affine, ta giới hạn chỉ xét các hàm mã có
dạng:
e(x) = ax + b mod 26
a, b ∈ Z26 . Các hàm này được gọi là các hàm Affine (chú ý rằng khi a = 1,
ta có MDV).
Để việc giải mã có thể thực hiện được, yêu cầu cần thiết là hàm Affine
phải là đơn ánh. Nói cách khác, với bất kỳ y ∈ Z26, ta muốn có đồng nhất thức
sau:
ax + b ≡ y (mod 26)
phải có nghiệm x duy nhất. Đồng dư thức này tương đương với:
ax ≡ y-b (mod 26)
http://www.ebook.edu.vn 17
Vì y thay đổi trên Z26 nên y-b cũng thay đổi trên Z26 . Bởi vậy, ta chỉ cần
nghiên cứu phương trình đồng dư:
ax ≡ y (mod 26) (y∈ Z26 ).
Ta biết rằng, phương trình này có một nghiệm duy nhất đối với mỗi y khi
và chỉ khi UCLN(a,26) = 1 (ở đây hàm UCLN là ước chung lớn nhất của các
biến của nó). Trước tiên ta giả sử rằng, 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 Z26 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ệ.
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 mãn:
ax1 ≡ ax2 (mod 26)
Khi đó
a(x1- x2) ≡ 0(mod 26)
bởi vậy
26 | a(x1- x2)
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.
http://www.ebook.edu.vn 18
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í
Đồng dư thức ax ≡ b mod m chỉ có một nghiệm duy nhất x ∈ Zm với mọi b
∈ Zm khi và chỉ khi UCLN(a,m) = 1.
Vì 26 = 2 ×13 nên các giá trị a ∈ Z26 thoả mãn UCLN(a,26) = 1 là a = 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 × 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 a
và m là nguyên tố cùng nhau. Số các số nguyên trong Zm nguyên tố cùng nhau
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 × 3 × 5 và 98 = 2 × 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 × 2 × 4 = 16 và số các khoá trong mã Affine là 960. (xem tính
chất của hàm phi euler chương 4)
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ó
http://www.ebook.edu.vn 19
tắc quen thuộc trong số học. Sau đây ta sẽ liệt kê mà không chứng minh các tính
chất này:
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 đảo 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)
Các tính chất 1,3-5 nói lên rằng Zm lâp nên một cấu trúc đại số được gọi là
một nhóm theo phép cộng. Vì có thêm tính chất 4 nhóm được gọi là nhóm Aben
(hay nhóm giao hoán).
Các tính chất 1-10 sẽ thiết lập nên một vành Zm . Một số ví dụ quen thuộc
của vành là các số nguyên Z, các số thực R và các số phức C. Tuy nhiên các
vành này đều vô hạn, còn mối quan tâm của chúng ta chỉ giới hạn trên các vành
hữu hạn.
http://www.ebook.edu.vn 12
Vì phần tử ngược của phép cộng tồn tại trong Zm nên cũng có thể trừ các
phần tử trong Zm . Ta định nghĩa a-b trong Zm là a+m-b mod m. Một cách
tương tự có thể tính số nguyên a-b rồi rút gon theo modulo m.
Ví dụ : Để tính 11-18 trong Z31, ta tính 11+31 – 18 mod 31= 11+13 mod 31
= 24. Ngược lại, có thể lấy 11-18 được -7 rồi sau đó tính -7 mod 31 =31-7= 24.
Mã dịch vòng được xác định trên Z26 (do có 26 chữ cái trên bảng chữ cái
tiếng Anh) mặc dù có thể xác định nó trên Zm với modulus m tuỳ ý. Dễ dàng
thấy rằng, MDV sẽ tạo nên một hệ mật như đã xác định ở trên, tức là dK(eK(x)) =
x với mọi x∈ Z26 . Ta có sơ đồ mã như sau:
Giả sử P = C = K = Z26 với 0 ≤ k ≤ 25 , định nghĩa:
eK(x) = x +K mod 26
và dK(x) = y -K mod 26
(x,y ∈ Z26)
Nhận xét: Trong trường hợp K = 3, hệ mật thường được gọi là mã Caesar
đã từng được Julius Caesar sử dụng.
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:
Sau đây là một ví dụ nhỏ để minh hoạ
Ví dụ 1.1:
Giả sử khoá cho MDV 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ó:
http://www.ebook.edu.vn 13
22 4 22 8 11 11 12 4 4 19
0 19 12 8 3 13 8 6 7 19
sau đó cộng 11 vào mỗi giá trị rồi rút gọn tổng theo modulo 26
7 15 7 19 22 22 23 15 15 4
11 4 23 19 14 24 19 17 18 4
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
Để giả mã bản mã này, trước tiên, 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 ( 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ự.
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. Quy tắc này còn tiếp tục sử dụng sau này.
Nếu một hệ mật có thể sử dụng được trong thực tế thì nó phảo 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á eK và mỗi hàm giải mã dK 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.
Tính chất thứ hai xác định (theo cách khá mập mờ) ý tưởng "bảo mật".
Quá trình thử tính khoá K (khi đã biết bản mã y) được gọi là mã thám (sau này
khái niệm này sẽ được làm chính xác hơn). Cần chú ý rằng, nếu Oscar có thể xác
định được K thì anh ta có thể giải mã được y như Bob bằng cách dùng dK. Bởi
vậy, việc xác định K chí ít cũng khó như việc xác định bản rõ x.
Nhận xét rằng, 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á dK
http://www.ebook.edu.vn 14
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:
Ví du 1.2
Cho bản mã
JBCRCLQRWCRVNBJENBWRWN
ta sẽ thử liên tiếp các khoá giải mã d0 ,d1 .. . và y thu được:
http://www.ebook.edu.vn 15
jbcrclqrwcrvnbjenbwrwn
iabqbkpqvbqumaidmavqvm
hzapajopuaptlzhclzupul
gyzozinotzoskygbkytotk
jxynyhmnsynrjexfajxsnsj
ewxmxglmrxmqiweziwrmri
dvwlwfklqwlphvodyhvqlqh
cuvkvejkpvkogucxgupkpg
btujudijoujnftbwfojof
astitchintimesavesnine
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 an toàn là phép tì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 vẫn chưa đủ đảm bảo độ mật.
2.1.2. Mã thay thế
Một hệ mật nổi tiếng khác là hệ mã thay thế. Hệ mật này đã được sử dụng
hàng trăm năm. Trò chơi đố chữ "cryptogram" trong các bài báo là những ví dụ
về MTT.
Trên thực tế MTT có thể lấy cả P và C đều là bộ chữ cái tiếng anh, gồm
26 chữ cái. Ta dùng Z26 trong MDV vì các phép mã và giải mã đều là các phép
toán đại số. Tuy nhiên, trong MTT, thích hợp hơn là xem phép mã và giải mã
như các hoán vị của các kí tự.
Mã thay thế
Cho P =C = Z26 . 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 π.
http://www.ebook.edu.vn 16
Sau đây là một ví dụ về phép hoán vị ngẫu nhiên π tạo nên một hàm mã
hoá (cũng như trước, các ký hiệu của bản rõ được viết bằng chữ thường còn các
ký hiệu của bản mã là chữ in hoa).
Như vậy, eπ (a) = X, eπ (b) = N,. . . . 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, . . .
Ví dụ: Hãy giải mã bản mã:
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.
Mỗi khoá của MTT 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. Tuy nhiên, sau này sẽ thấy rằng
MTT có thể dễ dàng bị thám bằng các phương pháp khác.
2.1.3. Mã Affine
MDV là một trường hợp đặc biệt của 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. Trong mã Affine, ta giới hạn chỉ xét các hàm mã có
dạng:
e(x) = ax + b mod 26
a, b ∈ Z26 . Các hàm này được gọi là các hàm Affine (chú ý rằng khi a = 1,
ta có MDV).
Để việc giải mã có thể thực hiện được, yêu cầu cần thiết là hàm Affine
phải là đơn ánh. Nói cách khác, với bất kỳ y ∈ Z26, ta muốn có đồng nhất thức
sau:
ax + b ≡ y (mod 26)
phải có nghiệm x duy nhất. Đồng dư thức này tương đương với:
ax ≡ y-b (mod 26)
http://www.ebook.edu.vn 17
Vì y thay đổi trên Z26 nên y-b cũng thay đổi trên Z26 . Bởi vậy, ta chỉ cần
nghiên cứu phương trình đồng dư:
ax ≡ y (mod 26) (y∈ Z26 ).
Ta biết rằng, phương trình này có một nghiệm duy nhất đối với mỗi y khi
và chỉ khi UCLN(a,26) = 1 (ở đây hàm UCLN là ước chung lớn nhất của các
biến của nó). Trước tiên ta giả sử rằng, 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 Z26 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ệ.
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 mãn:
ax1 ≡ ax2 (mod 26)
Khi đó
a(x1- x2) ≡ 0(mod 26)
bởi vậy
26 | a(x1- x2)
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.
http://www.ebook.edu.vn 18
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í
Đồng dư thức ax ≡ b mod m chỉ có một nghiệm duy nhất x ∈ Zm với mọi b
∈ Zm khi và chỉ khi UCLN(a,m) = 1.
Vì 26 = 2 ×13 nên các giá trị a ∈ Z26 thoả mãn UCLN(a,26) = 1 là a = 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 × 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 a
và m là nguyên tố cùng nhau. Số các số nguyên trong Zm nguyên tố cùng nhau
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 × 3 × 5 và 98 = 2 × 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 × 2 × 4 = 16 và số các khoá trong mã Affine là 960. (xem tính
chất của hàm phi euler chương 4)
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ó
http://www.ebook.edu.vn 19