You are on page 1of 53

Nhóm 4

Mã Vigenere
01. Phan Tuấn Kiệt

Thành 02. Đặng Thị Xuân Mai


viên
03. Nguyễn Ngọc Hân
nhóm
04. Trần Phước Hưỡng
I Hệ mật mã truyền thống

NỘI
DUNG
II Thực hành phân tích một bản mã
Vigenere

III Kết luận và mô tả chương


trình nguồn
I

Hệ mật mã truyền thống


G
1.1 Mở đầu – một số hệ mã hóa đơn giản

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:

- P là một tập hữu hạn các bản rõ có thể

- C là một tập hữu hạn các bản mã có thể

- K là tập hữu hạn các khóa có thể(không gian khóa)

- Đố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)

Định nghĩa[2]:Giả sử P = C = K = Z26với 0 ≤ k ≤ 25 ,

định nghĩa:eK(x) = x +K mod 26và 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ã Caeser. Ta sẽ sử dụng mã dịch
vòng(với modulo 26) để mã hóa 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.

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

hoán vị π ∈K , ta định nghĩa:eπ(x) = π(x)vàdπ(y) = π -1(y)Trong đó π -1 là hoán vị ngược π.

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:

1. Thay thế đơn (A simple substitution cipher)

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.

2. Thay thế đồng âm (A homophonic substitution cipher)

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õ.

4. Thay thế đa sơ đồ (A polygram substitution cipher)


Là thuật toán trong đó các khối ký tự được mã hoá theo nhóm. Đây là thuật toán tổng quát nhất, cho phép
thay thế các nhóm ký tự của văn bản gốc. Ví dụ, “ABA” có thể tương ứng với “RTQ”, “ABB” có thể
tương ứng với “SLL”, v.v.
Ta xét ví dụ về phép hoán vị ngẫu nhiên Π tạo nên một hàm mã hóa( 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).
Ví dụ:
a b c d e f g h I j k l m

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

Bởi vậy, dπ (A) = d, dπ(B) = 1, . . .


KẾT LUẬN:

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

định nghĩa: eK(x) = ax +b mod 26 và dK(y) = a-1(y-b) mod 26,x,y ∈Z26


Ví dụ:
Ta có:
Giả sử K=(7,3). 7 × 8 + 3 mod 26 = 59 mod 26 = 7
7 × 22 + 3 mod 26 = 157 mod 26 = 1
Áp dụng công thức của hàm mã hóa: 7 × 8 + 3 mod 26 = 59 mod 26 = 7
Ek(x) = 7x+3 7 × 11 + 3 mod 26 = 80 mod 26 = 2
7 × 11 + 3 mod 26 = 80 mod 26 = 2
Và hàm giải mã tương ứng là: 7 × 22 + 3 mod 26 = 157 mod 26 = 1
dk(x)=15(y-3)=15y-19 7 × 8 + 3 mod 26 = 59 mod 26 = 7
7 × 13 + 3 mod 26 = 94 mod 26 =16
Bản rõ là:
“Iwillwin” Bản mã số thu được là: 7 1 7 2 2 1 7 16
Bản số: 8 22 8 11 11 22 8 13 Bản mã chữ thu được là: “HBHCCBHQ”
Việc giải mã chỉ việc áp dụng:
dK(y) = a-1(y-b) mod 26,
1.2. MÃ VIGENERE VÀ CÁC ĐẶC TÍNH CỦA NÓ:

1.2.1 Định nghĩa

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

Khóa số viết lặp lại: 19 17 8 2 7 19 17

=>> Bản mã số: 21 24 16 17 14 23 5

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)

Chúng ta xét một ví dụ sau:

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

Vậy nên, ta thu được bản mã là: “GOXTWMHFEMFEGZVTLMRSHDNPR”


Chúng ta xem xét một vài đặc điểm. Trong từ “all” của bản rõ, xuất hiên 2 chữ ‘l’

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

nên bởi các ký tự khác nhau của bản rõ.


1.3.2. Giải mã

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

Paintext: nowis the timeforal lgoodmen


Trong hệ mã hóa này, có sử dụng sự quay vòng một số trong hệ mã hóa Caesar.

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

Thực hành phân tích một


bản mã Vigenere
Giả sử có bản mã nhận được từ mật mã Vigenere:

“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ỏ

rằng độ dài từ khóa là 5.


Vậy với giả thiết như trên, làm thế nào để xác đinh được khóa? Ta sẽ sử dụng khái niệm
chỉ số trùng khớp tương hỗ của hai xâu sau:

Đị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ố

dưới đều được rút gọn theo modulo26).


Bởi vậy có thể ước lượng rằng:

25 25

MIc(yi, yj) ≈∑ph−kiph−kj=∑phph+ki−kj


h=0 h=0
Ta thấy rằng, giá trị ước lượng này chỉ phụ thuộc vào kí hiệu Ki - Kj mod 26 (được gọi là độ dịch
tương đối của yi và yj ). Cũng vậy, ta thấy rằng:

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

chỉ số MIc(yi,yjg), 0 ≤ g ≤ 25 theo công thức sau:


25

∑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

bằng phương pháp vét cạn.


Trở lại ví dụ:

Ở 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

trong bảng sau:

Bảng 4: Các chỉ số trùng hợp tương hỗ quan sát được:


i j Giá trị của MIc(yj,yjg)

0,028 0,027 0,028 0,034 0,039 0,037 0,026 0,025 0,052

1 2 0,068 0,044 0,026 0,037 0,043 0,037 0,043 0,037 0,028

0,041 0,041 0,041 0,034 0,037 0,051 0,045 0,042 0,036

0,039 0,033 0,040 0,034 0,028 0,053 0,048 0,033 0,029

1 3 0,056 0,050 0,045 0,039 0,040 0,036 0,037 0,032 0,027

0,037 0,047 0,032 0,027 0,039 0,037 0,039 0,035

0,034 0,043 0,025 0,027 0,038 0,049 0,040 0,032 0,029

1 4
0,034 0,039 0,044 0,044 0,034 0,039 0,045 0,044 0,037

0,055 0,047 0,032 0,027 0,039 0,037 0,039 0,035


0,043 0,033 0,028 0,046 0,043 0,044 0,039 0,031 0,026
1 5 0,030 0,036 0,040 0,041 0,024 0,019 0,048 0,070 0,044
0,028 0,038 0,044 0,043 0,047 0,033 0,026
0,046 0,048 0,041 0,032 0,036 0,035 0,036 0,020 0,024
2 3 0,039 0,034 0,029 0,040 0,067 0,061 0,033 0,037 0,045
0,033 0,033 0,027 0,033 0,045 0,052 0,042 0,030
0,046 0,034 0,043 0,044 0,034 0,031 0,040 0,045 0,040
2 4 0,048 0,044 0,033 0,024 0,028 0,042 0,039 0,026 0,034
0,050 0,035 0,032 0,040 0,056 0,043 0,028 0,028
0,033 0,033 0,036 0,046 0,026 0,018 0,043 0,080 0,050
2 5 0,029 0,031 0,045 0,039 0,037 0,027 0,026 0,031 0,039
0,040 0,037 0,041 0,046 0,045 0,043 0,035 0,030
0,038 0,036 0,040 0,033 0,036 0,060 0,035 0,041 0,029
3 4 0,058 0,035 0,035 0,034 0,053 0,030 0,032 0,035 0,036
0,036 0,028 0,043 0,032 0,051 0,032 0,034 0,030
0,035 0,038 0,034 0,036 0,030 0,043 0,043 0,050 0,025
3 5 0,041 0,051 0,050 0,035 0,032 0,033 0,033 0,052 0,031
0,027 0,030 0,072 0,035 0,034 0,032 0,043 0,027
0,052 0,038 0,033 0,038 0,041 0,043 0,037 0,048 0,028
4 5 0,028 0,036 0,061 0,033 0,033 0,032 0,052 0,034 0,027
0,039 0,043 0,033 0,027 0,030 0,039 0,048 0,035
Với mỗi cặp (i, j) , ta tìm các giá trị của MIc(yi , yjg) nào gần với 0,065. Nếu có một giá trị duy nhất
như vậy (Đối với mỗi cặp (i,j) cho trước), thì có thể phán đoán đó chính là giá trị độ dịch tương đối.

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

y3 và y5 bằng 20; của y4 và y5 bằng 11. Từ đâyĐiều


ta cónày
phương
cho trình biểu
phép theo thị
5 ẩn sốKK 1theo
các , K2,KK3;, K4, K5 như sau:
K1-K2=9 i 1

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

Kết luận và mô tả chương


trình nguồn
3.1 MÔ TẢ CHƯƠNG TRÌNH
Chức năng chính của chương trình này là thực hiện mã hóa và giải mã văn bản sử dụng phương pháp
Vigenère, một phương pháp mã hóa cổ điển dựa trên việc sử dụng một khóa để dịch chuyển các ký tự
trong văn bản.
- Mã hóa: Dựa vào một khóa do người dùng cung cấp, chương trình dịch chuyển mỗi ký tự chữ
cái của văn bản gốc theo giá trị của ký tự tương ứng trong khóa. Quá trình này tạo ra văn bản mã hóa,
nơi mỗi ký tự đã được thay đổi theo một quy tắc nhất định dựa trên khóa, làm cho văn bản khó hiểu đối
với những người không có khóa.
- Giải mã: Khi đã có văn bản mã hóa và khóa, chương trình sẽ thực hiện quá trình ngược lại để
tìm lại văn bản gốc. Mỗi ký tự chữ cái trong văn bản mã hóa được dịch chuyển ngược lại dựa trên giá trị
của ký tự tương ứng trong khóa, khôi phục văn bản ban đầu.
3.2 KẾT LUẬN
Như vậy các chữ mã khác nhau có thể cho cùng một chữ của bản rõ. Suy ra tần suất của các chữ
cái là phẳng, nghĩa là tần suất xuất hiện các chữ trên bản mã tương đối đều nhau. Tuy nhiên chưa mất
hoàn toàn, do độ dài của khoá có hạn, nên có thể tạo nên chu kỳ vòng lặp. Kẻ thám mã bắt đầu từ tần
suất của chữ để xem có phải đây là mã đơn chữ cái hay không. Giả sử đây là mã đa chữ vần chữ cái,
khi đó ta xác định số chữ cái trong từ khoá và lần tìm từng chữ. Như vậy cần tăng độ dài từ khoá để
tăng số chữ cái dùng khi mã để “là” tần suất của các chữ. Rõ ràng rằng, nếu độ dài của khóa mã mà
bằng độ dài của bản thông báo cần mã thì mã pháp trở nên bền vững, thêm vào đó nếu khóa mã không
phải là một dãy các từ khóa có quy luật mà là một dãy giả ngẫu nhiên thì người ta đã chứng minh
được loại mã pháp này cho đến nay được đánh giá là mã pháp không thể phá vở. Vì vậy, hệ mã hóa
Vigenere vẫn được sử dụng phổ biến rộng rãi cho việc mã hóa những dữ liệu được truyền qua hệ
thống điện tín.
Cảm ơn thầy và các bạn đã
lắng nghe bài thuyết trình
của nhóm em.

You might also like