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

Lý thuyết mật mã Đề tài Thuật toán Euclidean và mật mã Affine

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 (330.68 KB, 18 trang )

Đại Học Bách Khoa Hà Nội
Viện Điện tử viễn thông
**********

BÁO CÁO BÀI TẬP LỚN MÔN
Lý thuyết mật mã
Đề tài: Thuật toán Euclidean và mật mã Affine
Giáo viên hướng dẫn: Hồ Mạnh Linh

Sinh viên
1.
2.
3.
4.
5.
6.
7.
8.

MSSV

Trịnh Thị Nga
Lê Duy Nhật
Nguyễn Thị Oanh
Đinh Ngọc Phú
Nguyễn Đình Phúc
Vương Văn Phúc
Phạm Hồng Minh
Nguyễn Hữu Phúc

20162883


20163037
20163104
20163167
20163188
20167332
20132311
20167332

*Hà Nội 2018*

1


NỘI DUNG
Phần I : Cơ Sở Lý Thuyết Chung về giải thuật Euclid........................................3
1.1 . Giới thiệu chung về giải thuật Euclid......................................................3
1.2. Nguyên lý của giải thuật...............................................................................3
1.3. Xây dựng thuật toán......................................................................................3
1.4. Ứng dụng........................................................................................................6
Phần II: MẬT MÃ AFFINE...................................................................................7
2.1. Bài toán về mật mã Affine............................................................................7
2.2. Mã hóa trong Affine......................................................................................8
2.3. Giải mã Affine................................................................................................8
2.4. Tìm hiểu về thám mã nói chung và thám mã trong mật mã Affine nói
riêng.......................................................................................................................9
2.5. Thực hành thám mã hệ mã Affine trên văn bản tiếng Việt.....................12
2.6. Phương pháp xác suất.................................................................................12
Câu hỏi mở rộng....................................................................................................14
Câu 1: Cơ sở toán học của thuật tốn Euclide.................................................14
Câu 2: s,t có phải là duy nhất hay khơng?.......................................................16

Câu 3: Chuyện gì xảy ra khi gcd(k,n) ≠ 1?......................................................17

2


Phần I : Cơ Sở Lý Thuyết Chung về giải thuật Euclid
1.1 . Giới thiệu chung về giải thuật Euclid

Giải thuật Euclid hay thuật toán Euclid là một giải thuật giúp tìm ước số chung
lớn nhất( GCD- Greatest Common Divisor) của hai số một cách hiệu quả. Giải
thuật này đã được biết đến từ khoảng 300 năm trước công nguyên. Nhà toán học
Hy Lạp cổ Euclid đã viết giải thuật này trong cuốn sách nổi tiếng Elements.
1.2. Nguyên lý của giải thuật

Ở dạng đơn giản nhất, thuật toán Euclid bắt đầu với cặp số nguyên dương, và tạo
ra một cặp số nguyên dương mới bao gồm số nhỏ hơn và phần phép chia hai số ban
đầu.
Nguyên lý chính của thuật toán là ước số chung lớn nhất của một cặp số khơng
thay đổi với hiệu của hai số đó. Ví dụ như USCLN của 252 và 105 chính bằng ước
số chung lớn nhất của 147( = 252-105) và 105. Vì số lớn hơn trong cặp số bị giảm
giá trị nên việc lặp đi lặp lại thuật toán này giúp chúng ta tạo ra những số càng
ngày càng nhỏ và đến một lúc nào đó q trình này sẽ kết thúc- khi cặp số cịn lại
bằng nhau( nếu q trình được thực hiện thêm một bước nữa, sẽ có một trong hai
số trở thành số 0).
1.3. Xây dựng thuật toán

Thuật toán Euclid được dựa trên hai định lý:
Định lí 1: gcd( a, 0)= a
Định lí 2: gcd(a, b)= gcd (b, r), ở đây r là thương của phép chia a cho b


3


Quy trình: Giải thuật tìm gcd (a, b):
Bước 1: A=a, B=b
Bước 2: If B=0 return A
Bước 3: r= A mod B
Bước 4: A= B
Bước 5: B= r
Bước 6: Lặp lại bước 2
Ví dụ: Tìm gcd(2740, 1760)
Qua bảng ta có r 1=2740,r 2=1760 , q là giá trị trong phép tính
r 1=q . r 2+ r . Từ đó tìm được gcd( 2740, 1760)= 20

4


*Thuật toán Euclid mở rộng:
Cho hai số nguyên a và b, tồn tại hai số nguyên s và t sao cho :
s × a + t × b = gcd (a, b)
Thuật tốn Euclid mở rộng có thể tính gcd(a, b) và đồng thời tính được giá trị s

t.
Giải
thuật
được
chỉ
ra
trong
hình

dưới

Ví dụ: Cho a= 161 và b= 28, tìm gcd(a, b) và giá trị của s và t

Qua bảng ta tìm được gcd(161, 28)= 7, s= -1 và t= 6.

5


1.4. Ứng dụng

Thuật tốn này có rất nhiều ứng dụng lý thuyết và thực tế. Một trong những
ứng dụng quan trọng nhất của thuật tốn Euclid mở rộng đó chính là tìm nghịch
đảo modulo:
Nghịch đảo nhân:
Xét số nguyên dương m. Xét các số nguyên trên modulo m (từ 0 đến m−1).
Với một số nguyên a,ta gọi nghịch đảo modulo m (modular multiplicative inverse)
của a là a−1 là số nguyên thoả mãn:
a∗a−1 ≡1(mod m)
Ta cần chú ý rằng không phải lúc nào a cũng tồn tại. Ví dụ, với m=4, a=2, ta
khơng thể tìm được a thoả mãn đẳng thức trên.
o Có thể chứng minh rằng a ln ln tồn tại nếu gcd (a,m)=1.
o Số nghịch đảo theo modulo n
o Nếu USCLN (a, n) = 1 thì ln tồn tại b
(b < n) sao cho:
b = a-1 mod n hay ab ≡ 1 (mod n)
Ta gọi b là số nghịch đảo của a theo modulo n.
Ví dụ: 5 × 2 ≡ 1 (mod 9) hay 2 = 5 mod 9

Ngoài ra, nó có thể được dùng để tạo ra gần như tất cả các nhịp điệu âm

nhạc truyền thống được sử dụng trong nhiều nền văn hóa khác nhau trên tồn thế
giới. Nó cũng là một thành phần then chốt trong thuật tốn mã hóa RSA, một mật
mã hóa cơng khai được sử dụng rộng rãi trong thương mại điện tử. Thuật tốn
được áp dụng để giải phương trình Diophantine.

6


Phần II: MẬT MÃ AFFINE
Khái niệm: 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ố
tốn học đơn giản. Một phép dịch Caesar là mật mã Afinne, trong đó các chữ cái
được mã hóa với hàm (x+b)mod (26), với b là bước dịch.
2.1. Bài toán về mật mã Affine

Phát biểu bài tốn về hệ mật mã affine:
• Không gian bản rõ và bản mã của hệ mã là các xâu được hình thành từ một
bảng chữ cái A có độ dài là N. Khi đó khơng gian khóa của hệ mã affine được
xác định như sau:
• Khơng gian khóa của hệ mã là các cặp số (a,b) với a,b Z ∈ N và ước chung lớn
nhất của a và N là 1
• Hoặc: K = { (a,b): a,b Z ∈ N ,UCLN(a,N) =1}
• Ước chung lớn nhất của 2 số a, b là số nguyên dương d lớn nhất thỏa mãn điều
kiện d là ước của cả hai số nguyên a, b. Ký hiệu: UCLN( a, b) hoặc GCD( a,
b).
• Trong vành Z N với a,b Z ∈ N và a>=1, N>=2 nếu UCLN(a,b)=1 thì ta gọi a và
b là các số nguyên tố cùng nhau
Câu hỏi: Trong bảng chữ cái tiếng anh có 26 chữ( tức N =26), nếu ta đánh số
các chữ cái của bảng chữ cái từ 0 đến 25( như hình vẽ dưới). Hỏi ta sẽ có được bao
nhiêu chữ số a, b thỏa mãn yêu cầu của bài toán mã affine và khơng gian khóa của

hệ mã affine với bảng chữ cái trên sẽ bao gồm bao nhiêu bộ số?

Lời giải: • Chữ số a theo yêu cầu của bài toán phải thỏa mãn 2 điều kiện: a ∈ Z26
và gcd( a, 26) =1
Các số thỏa mãn yêu cầu a ={1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25} Như vậy có
tất cả 12 chữ số a thỏa mãn u cầu của bài tốn
• Chữ số b chỉ cần thỏa mãn điều kiện b ∈ Z26 suy racó 26 chữ số b thỏa mãn yêu
cầu bài toán.
7


• Có 12 cách chọn chữ số a, 26 cách chọn chữ số b suy ra khơng gian khóa K của
bảng chữ cái tiếng anh trên sẽ gồm 12 x 26 = 312 khóa. Đây là con số tương
đối nhỏ.
2.2. Mã hóa trong Affine

• Để mã hóa người ta đánh số các chữ cái của bảng chữ cái từ 0 →N-1 và tiến
hành mã hóa, giải mã từng ký tự
• Hàm mã hóa trong affine có dạng như sau:
EK(x) = (ax +b)mod N với (a,b) ∈ K
Ký tự bản rõ có số thứ tự là x sẽ được chuyển thành ký tự có số ký tự là
(ax+b)mod N trong bảng chữ cái A.
Với a = 1: ta sẽ được hệ mật mã dịch vịng
Ví dụ: Mã hóa bản rõ WAR bằng hệ mật mã affine với K=(7,10) trong bảng
chữ cái tiếng anh có 26 ký tự.
Lời giải:
o Đổi các chữ trong xâu WAR thành các chữ số tương ứng: 22, 0, 17
o K=(7,10) tức là ta có a= 7 và b=10, áp dụng vào hàm mã hóa trong affine ta
được: Ek(22) = (7×22+10) mod 26 = 8 → I
o Ek(0) = (7×0+10) mod 26 = 10 →K

o Ek(17) = (7×17+10) mod 26 = 25 → Z
 Kết quả là : IKZ
2.3. Giải mã Affine

• Với bài tốn đã được mã hóa:
EK(x) = (ax +b)mod N với (a,b) ∈ K
chúng ta sẽ cùng nhau đi giải mã bài tốn trên
Phân tích:
Giả sử gọi x là số nguyên thể hiện ký tự ghi ở bản rõ và y là số nguyên thể hiện
hiện ký tự ghi ở bản mã của ký tự x. Và gọi a−1 là nghịch đảo của a theo module N
Ta có: y = (ax +b)mod N ↔ ax = (y-b) mod N ( áp dụng tính chất kết hợp, phân
phối và giao hoán )
↔ a−1 ax =a−1 (y-b) mod N ( nhân cả 2 vế vớia−1)
↔x = a−1 (y-b) mod N
• Với a,b,y đã biết ta sẽ tính được x → ký tự tương ứng với vị trí x trong bảng ký
tự
8


• Hàm giải mã là: dK(y) =a−1 (y-b) mod 26
Ví dụ: Giải mã thông điệp “FBWGC” bằng mã Affine với a = 7 và b = 7 bằng
bộ chữ cái tiếng Anh (N = 26).
o Chuyển các ký tự thành các số: 5 1 22 6 2
o Ta tính a−1trong module 26 Ta có 7−1= 15
o Áp dụng cơng thức giải mã ta được:
 dK(5) = 7−1 (5-7) mod 26 = (-30) mod 26 = (-30+ 2×26) mod 26 = 22 →W
 dK(1) = 7−1 (1-7) mod 26 = (-90) mod 26 = (-90 +4×26) mod 26 = 14 → O
 dK(22) = 7−1 (22-7) mod 26 = 225 mod 26 = 17 → R
 dK(6) = 7−1 (6-7) mod 26 = (-15) mod 26 = (-15+1×26) mod 26 = 11→ L
 dK(2) = 7−1 (2-5) mod 26 = (-75) mod 26 = (-75 +3×26) mod 26 = 3 → D

 Thơng điệp được giải mã là: WORLD
2.4. Tìm hiểu về thám mã nói chung và thám mã trong mật mã Affine nói
riêng
Thám mã (Cryptanalysis): là q trình khơi phục lại bản rõ hoặc khóa khi chỉ
có bản mã tương ứng cho trước (khơng biết khóa và quy tắc mã/dịch) gọi là thám
mã.
2.4.1. Đặc trưng cơ bản của bản rõ :
Ở mỗi ngơn ngữ, mỗi loại văn bản có những đặc trưng riêng dựa trên quy luật
tần số, quy luật trùng lắp, quy luật văn phong... Muốn thám mã, đặc biệt là trên các
bản mã truyền thống ta cần nắm được các đặc trưng này.
a. Tần số (Frequency):
Tần số xuất hiện một ký tự, một nhóm ký tự, một từ hay một vần… trong một
văn bản là số lần xuất hiện của ký tự, nhóm ký tự, từ, vần đó trong văn bản đã cho.
Tần suất (hay còn gọi là tần số tương đối – relative frequency) của một ký tự trong
một văn bản là xác suất ký tự đó xuất hiện so với các ký tự khác. Nó được tính
bằng việc lấy số lần xuất hiện ký tự đó trong văn bản chia cho độ dài văn bản đó.
b. Sự trùng lặp:
Sự trùng lặp là một quy luật của bất cứ ngơn ngữ tự nhiên nào. Đó là đặc trưng
thứ hai của ngôn ngữ được thể hiện trên các văn bản thông báo (bản rõ).
c. Quy luật hành văn trong văn bản:
Mỗi loại văn bản, nhất là văn bản hành chính thường có những cấu trúc chung.
Đây cũng là điểm cần chú ý khi thực hiện thám mã.
d. Quy luật tình huống:

9


Để chống lại việc thám mã của đối phương, các nhà mật mã phải thiết kế các
cách thức mã hóa sao cho các thơng tin về khóa và và 7 bản rõ không lộ rõ trên bản
mã. Tuy nhiên luôn chứa đựng những mâu thuẫn nội tại mà các nhà mã thám dựa

vào đó để khai thác, đó là: trình độ về mật mã ở các nước khác nhau là khác nhau,
khóa mã khơng phải ln được bảo vệ cẩn thận theo quy định.
e. Tiêu chuẩn bản rõ:
Tiêu chuẩn bản rõ của một loại văn bản là các thống kê thể hiện quy luật tần
số, quy luật trùng lặp của loại văn bản đó.
2.4.2. Thám mã các luật mã truyền thống trên văn bản tiếng Việt
a. Các bước cơ bản để tiến hành thám mã:
Khi nhận được một số bản mã, các nhà thám mã cần thực hiện một loạt các
bước nghiên cứu nhằm khôi phục được bản rõ (hoặc khóa) từ các bản mã nhận
được. Ta tìm hiểu các bước cơ bản nhất đó là:
 Bước 1. Phân loại bản mã
 Bước 2. Xác định mã pháp
 Bước 3. Thám mã Sau khi đã xác định được mã pháp, ta chuyển qua bước thám
mã với Một trong hai công đoạn như sau:
• Thám mã trực tiếp :Nếu mã pháp thuộc các luật mã truyền thống ta có thể thám
mã trực tiếp bằng thám mã thủ công hay tự động hóa bằng lập trình trên máy
tính.
• Xây dựng phương pháp thám mã (đối với hệ mã hiện đại).
- Phương pháp phân tích
- Phương pháp dự đốn “Từ phỏng chừng”.
b. Thám mã các hệ mã cổ điển
Giả thiết chung ở đây là luôn coi người thám mã biết hệ mật mã đang dùng.
Giả thiết này được gọi là nguyên lý Kerekhoff.
Có nhiều kỹ thuật thám mã sử dụng các tính chất thống kê của ngôn ngữ. Tức
là một số ký tự có tần suất xuất hiện cao hơn một số ký tự khác. Tương tự, một số
cặp đôi, cặp ba hoặc một số âm vần xuất hiện nhiều hơn các cặp đôi, cặp ba, hay
các âm vần khác. Tiếng Việt của chúng ta cũng có những tính chất giống như vậy.
Cơng việc đầu tiên khi tiến hành thám mã là xây dựng tiêu chuẩn bản rõ.
c. Xây dựng tiêu chuẩn bản rõ tiếng việt:
Dựa vào các gợi ý ở phần đặc trưng của bản rõ ta xây dựng tiêu chuẩn bản rõ

cho một văn bản tiếng Việt.
o Bộ ký tự tiếng Việt
10


Với 29 ký tự trong bảng chữ cái tiếng Việt, một số dấu thanh trên các nguyên
âm tạo nên các ký tự đặc trưng của tiếng Việt, cùng với một số ký hiệu đặc biệt
thường xuất hiện trên các văn bản tiếng Việt, trong khuôn khổ luận văn ta tiến
hành thám mã trên các văn bản biểu diễn bằng các ký tự chữ thường, ký tự cách
trống và hai dấu chấm câu là dấu chấm và dấu phảy. Tổng cộng ta có 96 mã ký tự
(93 mã chữ thường, ký tự cách trống và hai dấu chấm câu chấm và phảy).
o Xây dựng bảng tần suất đơn, bộ đơi móc xích và tần suất âm vần chuẩn
trong tiếng Việt
* Tần suất đơn và tần suất bộ đơi móc xích.
Ta thống kê được tần số đơn và tần số bộ đôi móc xích tiếng Việt dựa trên các
văn bản thu được trên các tạp chí. Theo thống kê, các ký tự: cách trống, n, h, c, t, i,
g lần lượt là những ký tự xuất hiện nhiều nhất trong các văn bản tiếng Việt, 16
những ký tự đặc thù tiếng Việt như ỹ, ỵ và các ký tự f, j, w, z rất ít khi xuất hiện…
2.4.3. Hàm do sự phù hợp fitness trên văn bản tiếng Việt
Ta có hàm đo sự phù hợp do R. Spillman đưa ra thực hiện trên các văn bản
tiếng Anh (với 26 ký tự chữ cái A..Z):

 (1 
Fitness= 

26

26

 

SF
[
i
]

DF
[i]

SDF [i, j ]  DDF [i,j]  / 4 



i 1 
i 1
 

8

Trong đó:
SF = (SF[1], SF[2],…, SF[26]) là bảng tần suất đơn tiếng Anh chuẩn (tức là tấn
số đơn tiếng Anh chuẩn đã được tính ra tỷ lệ phần tram).
´ là bảng tần suất bộ đơi móc xích tiếng Anh chuẩn đã
SDF = ( SDF [ i , j ] )i , j=1,26
được tính như sau:
SDF[i,j] =

mi , j
M

Với m i , j là tần số bộ đơi móc xích bộ (i,j) với i,j= 1,2,…26

Cịn M là tống dố bộ đơi móc xích .
´ cũng được ký hiệu
DF = (DF[1], DF[2],…DF[26]) và DDF = ( DDF [ i , j ] )i , j=1,26
và tính tốn hồn tồn tương tự như SF và SDF ở trên, chỉ có khác là chínhc được
tính trên một văn bản cụ thế (thường là “bản rõ” có được từ bản mã sau khi giải mã
bởi một khố nào đó).

Với văn bản tiếng Việt được quy định , hàm fitness có thể được điều chỉnh lại
như sau:
11



 (1 
Fitness= 

96

96

 
SF
[
i
]

DF
[i]

SDF [i, j ]  DDF [i,j]  / 4 




i 1 
i 1
 

8

Các giá trị SF[i], DF[i], SDF[i,j] và DDF[i,j] cũng được tính tốn tương tự với
i,j= 1,2,3,…96.
2.5. Thực hành thám mã hệ mã Affine trên văn bản tiếng Việt.
2.5.1. Mã hóa và giải mã
o Mã hóa: EK(x) = (ax + b) mod N.
o Giải mã: DK(y) = a^(-1) (y - b) mod N.
o Với văn bản tiếng Việt ta có N = 96.
2.5.2. Thám mã
* Thám mã thủ cơng Ta có thể dựa vào quy luật tần suất kết hợp với hàm mã hóa
để tiến hành thám mã.
* Thám mã với sự trợ giúp của máy tính
Hệ mã Affine có tổng số khóa khơng nhiều và hồn tồn xác định được. Vì vậy
ta thám mã bằng cách thử tất cả các khóa có thể.
Ta có thuật tốn như sau:
Dữ liệu vào: Bản mã
Dữ liệu ra: Bản rõ tiếng Việt và khóa (a, b) tương ứng.
Thuật toán: Bắt đầu a = 0; b = 0 ;
FitMax = 0;
Vòng lặp 1 Nếu (ƯSCLN(a, 96) == 1) thì
Vịng lặp 2 Giải mã bản mã với khóa (a, b);
Tính độ phù hợp trên bản rõ vừa thu được (Fitness);

Nếu Fitness>FitMax thì
Gán FitMax=Fitness;
Cập nhật khóa (a, b);
Tăng b lên 1
Về đầu vòng lặp 2 nếu b<96
Tăng a lên 1
Về đầu vịng lặp 1 nếu a<96
Trả về khóa a, b được cập nhật;
Giải mã bản mã với khóa a, b được cập nhật.
Kết thúc.
12


2.6. Phương pháp xác suất
Phương pháp thám mã
Dựa trên tần suất xuất hiện của các chữ
Mã thế trên bảng chữ đơn khong làm thay đổi tần suất xuất hiện tương đối
của các chữ. Có nghĩa là ta cẫn có bản tần suất xuất hiện của các chữ đơn. Điều
này được phát hiện bởi các nhà khoa học ai cập từ thế kỉ thứ 9.
Becker và Piper đã chia 26 chữ cái thành năm nhóm và chỉ ra xác suất của
mỗi nhóm như sau:
 E, có xác suất khoảng 0.120
 T, A, O, I, N, S, H, R, mỗi chữ cái có xác xuất nằm trong khoảng từ 0.06
đến 0.09
 D, L, mỗi chữ cái có xác xuất xấp xỉ 0.04
 C, U, M, W, F, G, Y, P, B, mỗi chữ cái có xác xuất nằm trong khoảng từ
0.015 đến 0.023
 V, K, J, X, Q, Z, mỗi chữ cái có xác xuất nhỏ hơn 0.01
 Ngồi ra, tần suất xuất hiện của dãy hai hay ba chữ cái liên tiếp được
sắp theo thứ tự giảm dần như sau : TH, HE, IN, ER … THE, ING,

AND, HER…

 Thám mã trên bảng chữ đơn:
13


 Tính tốn tần suất của các chữ trong bản mã
 So sánh với các giá trị đã biết
 Tìm kiếm các chữ đơn hay dùng (A,I,E…), bộ đôi (NO) và bộ ba (RST); và
các bộ ít dùng J,K, X,Z.
 Trên bảng chữ đơn cần xác định các chữ dùng các bảng bộ đôi và bộ ba trợ
giúp.

Câu hỏi mở rộng
Câu 1: Cơ sở toán học của thuật toán Euclide
 Bổ đề Bezout: Nếu d là ước số chung lớn nhất của hai số nguyên a và b thì
sẽ tồn tại hai số nguyên x và ysao cho d=ax+by.
Đầu tiên chúng ta nhận xét rằng nếu a=0 thì b=d, y=1 cho nên bổ đề Bezout
hiển nhiên đúng. Chúng ta chỉ cần chứng minh cho trường hợp a≠0 và b≠0.
Gọi S là tập hợp tất cả các số nguyên có dạng ax+by
S= {ax+by | x∈Z, y∈Z}
Chúng ta có những nhận xét sau đây:
- Nhận xét 1. Các số 0, a, b thuộc tập hợp S.
Từ nhận xét 1, chúng ta thấy tập hợp S có chứa các số khác 0. Vì vậy, trong tập
hợp S, chúng ta có thể chọn ra một phần tử s≠0 sao cho |s| có giá trị bé nhất.
Vì s là một phần tử của tập hợp S, cho nên chúng ta có thể viết s dưới dạng
s=a×xs+b×ys.
- Nhận xét 2. s là ước số của bất kỳ số nào nằm trong tập hợp S
Thật vậy, nếu chúng ta lấy bất kỳ một phần tử u=a×xu+b×yu của tập hợp S, chúng
ta chia nó cho s sẽ có thương là q và số dư là r. Chúng ta sẽ chứng minh rằng r=0.

Số dư r thoã mãn điều kiện 0≤|r|<|s|.
=> Chúng ta sẽ có u=sq+r,
r=u−sq=(axu+byu)−(axs+bys)q=(xu−xsq)a+(yu−ysq)b= s||0. Tức là u chia hết
cho s.
hay s là ước số của bất kỳ số nào nằm trong tập hợp S.
- Nhận xét 3. s là ước số của d.
Thật vậy, theo nhận xét 2, s là ước số của bất kỳ số nào nằm trong tập
hợp S, mà a và b nằm trong tập hợp S, do đó s là ước số của a và b. Trong khi
đó d là ước số lớn nhất của a và b, cho nên s phải là ước số của d.
Nhận xét 4. d là ước số của s.
Thật vậy, s=ax+by mà d là ước chung lớn nhất a,b nên s chia hết d hay d là ước số
của s.
=> Từ hai nhận xét cuối cùng, chúng ta suy ra d=±s, và vì vậy d có dạng ax+by, và
14


bổ đề Bezout đã được chứng minh.

 Phương trình Diophantine là phương trình có dạng ax + by = c được mơ
tả dựa trên định lý Bézout. Phương trình có nghiêm khi va chỉ khi d =
GCD(a,b) ll c khi phương trình có nghiệm thì sẽ có vơ số nghiệm.
Giả sử phương trình ax + by = c co nghiệm (x0, y0). Họ nghiệm của phương
kb

ka

trình sẽ là (x0+ d ,y0 −¿ d ). Để ý rằng:
kb

ka


a(x0 + d )+ b(y0 −¿ d ) = ax0 +by0 =c
(Lưu ý chú thích trên khơng phải là phần chứng minh họ nghiệm. Bài viết này
khơng trình bày phần chứng minh)
Giả sử phương trình ax + by = d co nghiệm (x0, y0), thì là nghiệm của
phương trình ax + by = c.
Để tìm nghiệm cua phương trình ax + by = c, thuật tốn tìm ra một nghiệm
của phương trình ax + by = d, rồi sau đó suy ra một nghiệm của phương trình
ax + by = c. Từ đây có thể tiếp tục đưa ra họ nghiệm của phương trình ax + by = c
và kết thúc bài toán.
 Cơ sở lý thuyết của giải thuật:
Giải thuật Eclid mở rộng kết hợp q trình tìm ƯCLN(a,b) trong thuật tốn
Eclid với việc tìm một cặp số x, y thoả mãn phương trình Đi-ơ-phăng. Giả sử cho
hai số tự nhiên a, b, ngoài ra a>b>0.
Đặt r0 = a, r1 = b, chia r0 cho r1 được số dư r2. Nếu r2 = 0 thì dừng, nếu r2 khác
khơng, chia r1 cho r2 được số dư r3, ...Vì dãy các ri là giảm thực sự nên sau hữu hạn
bước ta được số dư rm = 0.
r0 = q1 × r1 + r2, 0 < r2 < r1;
r1 = q2 × r2 + r3, 0 < r3 < r2;
……………………….....;
rm − 1 = qm × rm + rm + 10 < rm + 1 < rm
rm = qm + 1 × rm + 1
Trong đó số dư cuối cùng khác 0 là rm + 1 = d. Bài tốn đặt ra là tìm x, y
sao cho
15


a × x + b × y = rm+ 1( = d)
Để làm điều này, ta tìm x,y theo cơng thức truy hồi, nghĩa là sẽ tìm
xi và yi sao cho:

a × xi + b × yi = ri với i = 0,1,....
Ta có:
a × 1 + b × 0 = a = r0 và a × 0 + b × 1 = b = r1,
Nghĩa là: x0 = 1, x1 = 0 và y0 = 0, y1 = 1. (1)
Tổng qt, giả sử có:
o a × xi + b × yi = ri với i = 0,1,….
o a × xi + 1 + b × yi + 1 = ri + 1 với i = 0,1,...
Khi đó từ ri = qi + 1 × ri + 1 + ri + 2
Suy ra:
o ri – qi + 1 × ri + 1 = ri + 2
o (a × xi+ b × yi) – qi + 1 × (a × xi + 1 + b × yi + 1) = ri + 2
o a × (xi – qi + 1 × xi + 1) + b × (yi – qi + 1 × yi + 1) = ri + 2
Từ đó, có thể chọn:
o xi + 2 = xi – qi + 1 × xi + 1 (2)
o yi + 2 = yi – qi + 1 × yi + 1 (3) .
Khi i = m − 1 ta có được xm + 1 và ym + 1. Các công thức (1), (2), (3) là cơng thức
truy hồi để tính x, y.

Câu 2: s,t có phải là duy nhất hay khơng?
Thuật tốn Euclid giúp tìm ra một nghiệm của phương trình ax + by = d. Từ
đây có thể tiếp tục đưa ra họ nghiệm của phương trình ax + by = d
Theo công thức:
kb

ka

a(x0 + d )+ b(y0 −¿ d ) = a×x0 +by0 =c
16



Ví dụ: cho a= 4864 và b= 2458

a
4864
3458
1406
646
114
76
38

b
3458
1406
646
114
76
38
0

q

r
1
2
2
5
1
2


x

1406
642
114
76
38
0

y

1
−¿2
5
−¿27
32
−¿91

−¿1

3
−¿7
38
−¿45
128

x1

x2


y1

y2

0
1
−¿2
5
−¿27
32
−¿91

1
0
1
−¿2
5
−¿27
32

1
−¿1
3
−¿7
38
−¿45
128

0
1

−¿1
3
−¿7
38
−¿45

a × x0 + b × y0 = gcd(a,b)
⇒ 4864 × 32 + 3458 × (−¿45) = 38

Vậy họ (x,y) :

kb

ka

a(x0+ d )+b(y0 −¿ d )= d, thay vào:

a (32+91k) + b (−¿45−¿128k) = 38
Thử k = 1 ⇒ a (32+91) + b (−¿45−¿128) = 38 (Thỏa mãn)
Thử k = 2 ⇒ a (32+91.2) + b (−¿45−¿128.2) = 38 (Thỏa mãn)

Câu 3: Chuyện gì xảy ra khi gcd(k,n) ≠ 1?
Khi đó hàm affine sẽ khơng đơn ánh và khơng đảm bảo tính tồn vẹn sau khi
giải mã.
Chúng ta chứng minh sau:
 Định nghĩa: Mã tuyến tính Affiinne là bộ 5 (P,C,K,E,D) thỏa mãn:
Cho P=C=Z26 và giả sử P= {(a,b) ϵ Z26 x Z26 ; UCLN(a,26) = 1}
17



- Với k=(a,b)ϵ K, ta định nghĩa:
Ek(x)=ax +b×mod26
Và Dk(y) =a−1 ( y −b ) mod 26, x,yϵ Z26
- Để việc giải mã 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(mod26)
- 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 phương trình đồng dư:
ax≡y(mod26) (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.
Chứng minh: Trước tiên ta giả sử rằng, UCLN(a,26)=d>1. Khi đó, đồng dư
thức ax≡0(mod26) 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(mod26) không phải là một hàm đớn ánh và bởi
vậy nó khơng thể là hàm mã hóa hợp lệ.
Ví dụ do UCLN(4,26)=2 nên 4x+7 khơng là hàm mã hóa hợp lệ:x và x+13 sẽ mã
hóa 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ỏa mãn:
ax1 ≡ ax2(mod26)
Khi đó:
a(x1-x2)≡ 0 (mod26)
Bởi vậy 26| a(x1 -x2 ) | Khi đó
a(x1-x2)≡0(mod26)
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 (mod26) .
Tới đây ta chứng minh, nếu UCLN(a,26)=1 thì một đồng dư thức dạng ax ≡y
(mod26) 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 mudule 26 và đồng

dư thức ax≡y (mod26) chỉ có một nghiệm y duy nhất.

18



×