Professional Documents
Culture Documents
Mã Vigenere
01. Phan Tuấn Kiệt
NỘI
DUNG
II Thực hành phân tích một bản mã
Vigenere
Trong thực tế, giả sử bên A muốn liên lạc với B thương lượng một vấn đề bí mật
nào đó( ví dụ như: hợp đồng, bầu cử, thông điệp bí mật …) trên một kênh mật an
toàn sao cho C(kẻ trộm) không thể hiểu được thông tin được truyền đi giữa hai người
là gì, để tránh tình trạng nghe nén và ăn trộm thông tin quan trọng.
1.1.1 Định nghĩa về hệ mật mã [1]
Hệ mật mã là một bộ gồm 5 thành phần(P,C,K,E,D) thỏa mãn các điều kiện sau:
- Đối với mỗi k thuộc K có một quy tắc mã ek : P->C và một quy tắc giải mã
tương ứng dk thuộc D, dk : C->P và ek :P->C, là hàm mà: dk(ek(x))=x với mọi bản
rõ x ∈ P.
Khi bên M muốn gửi một tài liệu (bản rõ x) đến cho bên N, bên M sẽ mã hóa bản
rõ đó bằng ek : P->C và gửi đi trên đường truyền qua cho bên N, bên N nhận được
sau đó sẽ giải mã bằng dk : C->P để thu lại bản rõ ban đầu. Bên M và N sẽ áp dụng
thủ tục sau dùng hệ mật khóa riêng. Trước tiên họ chọn một khóa ngẫu nhiên K ∈ K .
Điều này được thực hiện khi họ ở cùng một chỗ và không bị bên C theo dõi hoặc họ
có một kênh mật trong trường hợp họ ở xa nhau. Sau đó giả sử bên A muốn gửi một
thông báo cho B trên một kênh không mật và ta xem thông báo này là một chuỗi:
x = x1,x2 ,. . .,xn
Với số nguyên b ≥ 1 nào đó. Ở đây mỗi kí hiệu của mỗi bản rõ xi ∈ P ,
1 ≤ i ≤ n . Mỗi xi sẽ được mã hóa bằng quy tắc mã ek với khóa K xác định
trước đó. Bởi vậy bên M sẽ tính yi = ek(xi), 1 ≤ i ≤ n và chuỗi bản mã nhận
được y = y1,y2 ,. . .,y sẽ được gửi trên kênh. Khi bên N nhận được y =
y1,y2 ,. . .,y anh ta sẽ giải mã bằng hàm giải mã dk và thu được bản rõ gốc
x = x1,x2 ,. . .,xn
1.1.2.Một số loại mã hóa truyền thống
1.1.2.1 Mã dịch chuyển vòng( shift cipher)
A B C D E F G H I J K L M
0 1 2 3 4 5 6 7 8 9 10 11 12
N O P Q R S T U V W X Y Z
13 14 15 16 17 18 19 20 21 22 23 24 25
Ví dụ: Giả sử khóa cho mã dịch vòng là K=11
Bản rõ: “wewillmeetatmidnight”
Trước tiên biến đổi bản rõ thành dãy các số nguyên ta có:
Bản rõ số:
22 4 22 8 11 11 12 4 4 19
0 9 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, ta được:
Bản mã số:
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ã:
Bản mã chữ:
“HPHTWWXPPELEXTOYTRSE”
Tương tự, khi bên B muốn xem bản mã này, trước tiên bên B 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 lại biến đổi dãy này
thành các ký tự.
KẾT LUẬN:
Mã dịch vòng 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
khóa nên dễ dàng thử mọi khóa dk có thể cho tới khi nhận được bản rõ có ý nghĩa.
1.1.2.2 Mã thay thế
Định nghĩa[2]: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
Hệ mã hoá thay thế là hệ mã hoá trong đó mỗi ký tự của bản rõ được thay thế bằng ký tự
khác trong bản mã (có thể là một chữ cái, một số hoặc một ký hiệu).
Có 4 kỹ thuật thay thế sau đây:
Là hệ trong đó một ký tự của bản rõ được thay bằng một ký tự tương ứng trong bản mã. Một ánh xạ
1-1 từ bản rõ tới bản mã được sử dụng để mã hoá toàn bộ thông điệp.
Giống như hệ thống mã hoá thay thế đơn, ngoại trừ một ký tự của bản rõ có thể được ánh xạ tới
một trong số một vài ký tự của bản mã: sơ đồ ánh xạ 1-n (one-to-many). Ví dụ, “A” có thể tương ứng
với 5, 13, 25, hoặc 56, “B” có thể tương ứng với 7, 19, 31, hoặc 42, v.v.
3. Thay thế đa mẫu tự (A polyalphbetic substitution cipher)
Được tạo nên từ nhiều thuật toán mã hoá thay thế đơn. ánh xạ 1-1 như trong trường hợp thay thế
đơn, nhưng có thể thay đổi trong phạm vi một thông điệp.
Ví dụ, có thể có năm thuật toán mã hoá đơn khác nhau được sử dụng; đặc biệt thuật toán mã hoá đơn
được sử dụng thay đổi theo vị trí của mỗi ký tự trong bản rõ.
X N Y A H P O G Z Q W B T
n o p q r s t u V w x y z
S F L R C V M U E K J D I
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ứ 2 lên trước rồi sắp xếp theo thứ tự chữ cái. Ta nhận được:
A B C D E F G H I J K L M
d l r y v o h e z x w p T
A B C D E F G H I J K L M
d l r y v o h e z x w p T
Mỗi khóa 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à
một số rất lớn. Bởi vậy phép tìm khóa 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 mã thay thế có thể dễ dàng bị thám bằng các phương pháp
khác.
1.1.2.3 Hệ mã hoá CAESAR
- Hệ mã hoá CAESAR là một hệ mã hóa thay thế đơn làm việc trên bảng chữ cái tiếng Anh 26 ký tự (A, B, …, Z).
- Trong hệ Caesar và các hệ tương tự còn lại ta sử dụng các số tự nhiên thay cho các ký tự - đánh số các ký tự
trong bảng chữ cái theo thứ tự:
A B C D E F …. X Y Z
0 1 2 3 4 5 …. 23 24 25
+ Các phép toán số học thực hiện theo modul 26. Có nghĩa là 26 đồng nhất với 0, 27 đồng nhất với 1, ….
Hệ Caesar sử dụng thuật toán mã hóa trong đó mỗi ký tự được thay thế bởi một ký tự khác được xác định
bằng cách dịch ký tự cần mã hóa sang phải k bước theo modulo 26:
Ek(α ) = (α + k)mod 26. Trong đó α là một ký tự, 0 ≤ k ≤ 26
Thuật toán giải mã tương ứng Dk là lùi lại k bước trong bảng chữ cái theo modul 26:
Dk(α ) = (α - k)mod 26
Không gian khóa của hệ Caesar bao gồm 26 số
Ví dụ:
Mã Hóa: Giải mã:
Plaint: “TRICH” Lùi lại với k=3 ta thu được bản rõ: “TRICH”
Bản rõ số: 19 17 8 2 7
Khóa: k=3
Bản mã số: 22 20 11 5 10
Bản mã chữ là : “WULFK”
NHẬN XÉT
Hệ mã hóa Caesar là hệ mã hóa cũ và không an toàn vì không gian khóa của nó rất nhỏ, do đó có thể thám mã
theo phương pháp vét cạn. Khóa giải mã có thể tính ngay đươc từ khóa mã hóa. Do chỉ có 26 khóa nên ta có thể thử
lần lượt các khóa cho đến khi tìm được khóa đúng.
1.1.2.4. Mã Affine
Định nghĩa[2]:Cho P = C = Z26 và giả sử:P = { (a,b) ∈Z26 × Z26 : UCLN(a,26) =1 }Với K = (a,b) ∈K , ta
Trong cả hai hệ mã dịch vòng và mã thay thế( một khi khóa đã được chọn) mỗi ký tự được ánh xạ
vào một ký tự duy nhất. Vì đó mà các hệ mật còn được gọi là hệ thay thế đơn biểu. Bây giờ ta sẽ trình
bày một hệ mật không phải là bộ chữ đơn, đó là hệ mã Vigenere nổi tiếng. Nó được gọi là hệ mã hóa đa
biểu.
Giống như Caesar nhưng ở đây khóa được thay đổi theo từng
bước.
Định nghĩa[2]: Cho m là một số nguyên dương cố định nào đó. Định nghĩa P=C=K=(Z26) mVới
khóa K = (k1,k2, …,km) ta xác định: ek(x1,x2,…,xm) =(x1+k1, x2+k2,….,xm+km) dk(y1,y2,…ym) = (y1-k1,
y2-k2,….,ym-km). Trong đó tất cả các phép toán được thực hiện trong Z26. Ta sẽ biến đổi các phần tử
của bản rõ theo thặng dư 26, viết chúng thành các nhóm 6 rồi cộng với từ khóa theo modulo 26.
Ví dụ:
Giả sử m=5 và từ khóa là “TRICH”.
Từ khóa này tương ứng với dãy số
K=(19,17,8,2,7).
Giả sử bản rõ là xâu:
Bản rõ: “CHIPHEO”
Ta sẽ biến đổi các phần tử của bản rõ thành các số từ 0-25, ta được:
Bản rõ số:
C H I P H E O
2 7 8 15 7 4 14
Viết chúng thành các nhóm 5 rồi cộng với từ khóa theo modulo 26 ta được:
Bản rõ C H I P H E O
Bản rõ số: 2 7 8 15 7 4 14
Bởi vậy, dãy ký tự tương ứng của xâu bản mã sẽ là: “VYQROXF”
Để giải mã ta có thể dùng cùng từ khóa nhưng thay cho cộng, ta trừ cho nó theo modulo 26.
1.2.2 Tính chất
Ta thấy, khóa có độ dài là m, nên các khóa có thể là 26m , bởi vậy phương pháp
tìm kiếm vét cạn cũng yêu cầu thời gian khá lớn.Việc thám mã là rất phức tạp. Thứ
hai, từ khóa có độ dài m, mỗi ký tự có thể được ánh xạ vào trong m ký tự có thể có,
như trong ví dụ xét trên có đến 2 ký tự H nhưng khi mã hóa ký tự H được mã hóa
thành Y và O. Đó là một đặc điểm khác so với các hệ mã hóa đơn biểu. Một hệ như
vậy được gọi là hệ mật thay thế đa biểu. Việc thám mã đa biểu khó khăn hơn nhiều so
với việc thám mã hệ đơn biểu. Đó là một tiến bộ hơn so với các phép mã hóa cổ điển
ta xét bên trên.
1.3. MÃ HÓA VÀ GIẢI MÃ VIGENERE (KHI CÓ KHÓA CHO TRƯỚC)
Ví dụ:
Bản rõ: “Now is the time for all good men”
Keywords là: TABLE
Ta viết theo hàng của bản rõ và sự lặp lại của từ khóa phía dưới bản rõ, ta được:
Bản rõ: n o w i s t h e t i m e f o r a l l g o o d m e n
Lặp khóa: T A B L E T A B L E T A B L E T A B L E T A B L E
1.3.1. Mã hóa
Chúng ta nhìn vào hình A polyalphabetic tableau ứng với mỗi ký tự của bản rõ là một ký tự trên
hàng của bảng đa biểu, và ứng với mỗi ký tự từ khóa là một ký tự trên cột của bảng đa biểu, khi đó tìm
được ký tự mà là giao của cột ký tự khóa với hàng ký tự của bản rõ, ta được:
n o w i s t h e t i m e f o r a ll go od men
TABLETABLETABLETABLETABLE
GOXTWMHF EMFEGZVTLMRSHDNPR
nhưng khi được mã hóa chúng thành L và M, chữ ‘t’ ở trong “the” và “time” được mã
hóa thành M và E…Vì vậy, những ký tự giống nhau của bản rõ có thể mã hóa thành
những ký tự mã khác nhau, và những ký tự giống nhau của bản mã lại có thể được tạo
Sự giải mã là quá trình ngược lại của mã hóa. Chúng ta viết dưới bản mã với keyword
được lặp lại, sau đó nhìn theo cột của keyword khi nào thấy ký tự mã hóa, chiếu sang
hàng ngang ta sẽ tìm ra ký tự rõ tương ứng. Ví dụ, ký tự mã là G, ký tự khóa là T, ta nhìn
dọc theo cột T khi nào tìm thấy G, chiếu sang hàng ngang thì hàng đó là của ký tự N, vậy
nên bản rõ là N. Tương tự lần lượt như vậy ta tìm ra được bản rõ.
Ví dụ:
Ciphertext: G O X T W M H F E M F E G Z V T L M R S H D N P R
Keyword: T A B L E T A B L E T A B L E T A B L E T A B L E
Trong mỗi cột, đại diện một phép mã hóa Caesar đơn giản với một phép dịch
chuyển.
1.3.3 Chương trình mã hóa:
Chúng ta nhìn vào hàng đầu tiên trong tableau. Trong mỗi cột,A được miêu tả bởi một ký
tự khóa, B sẽ được miêu tả ký tự khóa cộng thêm 1, ngoại trừ cột cuối cùng, nơi nó sẽ được
thay thế bởi lý tự A. C sẽ được miêu tả bởi ký tự khóa cộng với 2, ngoại trừ 2 cột cuối cùng.
Paintext : P
Ciphertext: C
Keyword: K
Do đó, ta có: C= [P+K-1]mod 26
Ví dụ:
Ta xét hàng đầu tiên P=13(M), K= 20(T) ,chúng ta sẽ có: C=[13+20-1]mod 26 =6 (F). Theo như
trên, cột T và hàng M giao nhau tại F.
Nếu bản rõ là vector T% và khóa là vector K%, khi đó bản rõ sẽ được xác định theo
công thức:
C%(X)=T%(I)+K%(KP)-1
IF C%(X)>26 THEN C%(X)=C%(X)-26
Quá trình giải mã là sự ngược lại của giải mã, khi đó thay công thức trên thành:
C%(I)=T%(K)-K%(L)+1
IF C%(I)<0 THEN C%(I)=C%(I)+26
1.3.4 Kết luận
Việc mã hóa và giải mã của hệ mã hóa Vigenere khi có khóa cho trước là một việc
không phải phức tạp, chỉ cần viết khóa lặp lại dưới bản rõ(mã) khi mã (giải) hóa, rồi
tìm giao của chúng trên bảng đa biểu ta sẽ được bản mã (rõ) tương ứng.
II
“CHEEVOAHMAERATBTAXXWTNXBEEOPHBSBQMQEQERBWRVXUOAKXAOSXXWEA
HBWGJMMQMNKGRFVGXWTRZXWIAKLXFPSKAUTEMNDCMGTSXMXBTUIADNGMGP
SRELXNJELXVRVPRTULHDNQWTWDTYGBPHXTFEALJHASVBFXNGLLCHRZBWELEK
MSJIKNBHWRJGNMGJSGLXFEYPHAGNRBIEQJTAMRVLCRRREMNDGLXRRIMGNSNRW
CHRQHAEYEVTAQEBBIPEEWEVKAKOEWADREMXMTBHHCHRTKDNVRZCHRCLQOHP
WQAIIWXNRMGWOIIFKEE “
2.1 THỬ VỚI PHÉP THỬ KASISKI
Ta xét xâu CHR xuất hiện ở bốn vị trí trong bản mã, bắt đầu các vị trí 1, 166, 236 và
286. Khoảng cách từ lần xuất hiện đầu tiên tới 3 lần xuất hiện còn lại tương ứng là: 165,
235, 285. UCLN của 3 số nguyên này là 5, bởi vậy giá trị này rất có thể là độ dài từ khóa.
2.2 TÍNH THEO CHỈ SỐ TRÙNG HỢP
Với m=1 chỉ số trùng hợp là 0,045 . Với m=2, có 2 chỉ số trùng hợp là 0,046 và 0,041.
Với m=3 ta có 3 chỉ số là 0.043; 0,050; 0,047. Với m=4 có 4 chỉ số là: 0,042; 0,039; 0,046;
0,040. Với m=5 ta có các giá trị 0,063; 0,068; 0,069; 0,061 và 0,072. Điều này càng chứng tỏ
Định nghĩa: Giả sử x = x1x2. . .xn và y = y1y2. . .yn' là các xâu có n và n' kí tự anphabet
tương ứng. Chỉ số trùng khớp tương hỗ của x và y (ký hiệu là MIc(x,y)) được xác định là xác
suất để một phần tử ngẫu nhiên của x giống với một phần tử ngẫu nhiên của y. Nếu ta ký hiệu
các tần suất của A,B,…,Z trong x và y tương ứng là f0,f1,. . .,f25 thì MIc(x,y) sẽ được tính
bằng:
Với các giá trị m đã xác định, các xâu con yi thu được bằng mã dịch vòng bản rõ. Giả sử
K= (k1,k2,. . .,km) là từ khóa. Ta sẽ xem xét có thể đánh giá MIc(yi,yj) như thế nào. Xét một
kí tự ngẫu nhiên trong yi và một kí tự ngẫu nhiên trong yj. Xác suất để cả hai kí tự là A là
bằng p-ki p-kj , xác suất để cả 2 là B bằng p1-ki p1-kj,. . .(Cần chú ý rằng tất cả các chỉ số
25 25
Bởi vậy độ dịch tương đối l sẽ dẫn đến cùng một ước lượng MIc như độ dịch tương đối 26-l.
Ta lập bảng các ước lượng cho độ dịch tương đối trong phạm vi từ 0 đến 13.
Bảng 3: Các chỉ số trùng hợp tương hỗ tính được
Độ dịch tương đối Giá trị tính được MIc
0 0.065
1 0,039
2 0,032
3 0,034
4 0,044
5 0,033
6 0,036
7 0,039
8 0,034
9 0,034
10 0,038
11 0,045
12 0,039
13 0,043
Xét thấy rằng, nếu độ dịch tương đối khác 0 thì các ước lượng này thay đổi trong khoảng từ 0,031
đến 0,045; ngược lại nếu độ dịch chuyển tương đối bằng 0 thì ước lượng bằng 0,065. Có thể dùng nhận
xét này để tạo nên một phỏng đoán thích hợp cho l=ki – kj (độ dịch tương đối của yi và yj) như sau: Giả
sử cố định yi và xét việc mã hóa yj bảng e0,e1,e2... Ta kí hiệu các kết quả bằng yj0,yj1,. . .Dễ dàng dùng
∑fif'i−g
MIc( x, yg) = i=0
n.n'
25
∑fif'i−g
MIc( x, yg) = i=0
n.n'
Khi g = l thì MIc phải gần với giá trị 0,065 vì độ dịch tương đối của yi và yj bằng 0. Tuy nhiên, với
các giá trị g # l thì MIc sẽ thay đổi giữa 0,031 và 0,045. Bằng kỹ thuật này, có thể thu được các độ dịch
tương đối của hai xâu con yi bất kỳ. Vấn đề còn lại chỉ là 26 từ khóa có thể và điều này dễ dàng tìm được
Ở trên ta đã giả định rằng, độ dài khóa là 5. Bây giờ ta thử tính các độ dịch tương đối. Nhờ máy tính,
dễ dàng tính 260 giá trị MIc(yi, yjg) , trong đó 1 ≤ i ≤ j ≤ 5 ; 0 ≤ g ≤ 25 . Các giá trị này được biểu diễn
1 4
0,034 0,039 0,044 0,044 0,034 0,039 0,045 0,044 0,037
Trong bảng trên có 6 giá trị được đóng khung. Chúng chứng tỏ khá rõ ràng là độ dịch tương đối của y 1
và y2 là 9; độ dịch tương đối của y2 và y3 là 13, độ dịch tương đối của y2 và y5 là 7; độ dịch tương đối của
K1-K2=16 K2=K1+17
K2-K3=13 K3=K1+4
K2-K5=17 K4=K1+21
K3-K5=20
K4-K5=11 K5=K1+10
Như vậy khóa có khả năng là ( K1, K1+17, K1+4, K1+21, K1+10) với giá trị K1 nào đó Î Z26. Từ đây ta
hy vọng rằng, từ khóa là một dịch vòng nào đó của AREVK. Bây giờ , không tốn nhiều công sức lắm cũng
có thể xác định được từ khóa là JANET. Giải mã bản mã theo khóa này, ta thu được bản rõ sau:
The almond tree was in tentative blossom. The days were longer often ending with magnificient
evenings of corrugated pink skies. The hunting seasun was over, with hounds and guns put away for six
months. The vineyards were busy again as the well-organized farmers treated their vinesand the more
lackadaisical neighbors hurried to do the pruning they have done in November.
III