Tải bản đầy đủ (.pdf) (48 trang)

Áp dụng của số học vào mật mã (LV thạc sĩ)

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 (320.56 KB, 48 trang )

ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC KHOA HỌC

LƯƠNG THỊ CHUNG

ÁP DỤNG CỦA SỐ HỌC VÀO MẬT MÃ

LUẬN VĂN THẠC SĨ TOÁN HỌC

Thái Nguyên - 2016


ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC KHOA HỌC

LƯƠNG THỊ CHUNG

ÁP DỤNG CỦA SỐ HỌC VÀO MẬT MÃ

LUẬN VĂN THẠC SĨ TOÁN HỌC
Chuyên ngành: Phương pháp Toán sơ cấp
Mã số:
60 46 01 13

NGƯỜI HƯỚNG DẪN KHOA HỌC

TS. NGUYỄN VĂN HOÀNG

Thái Nguyên - 2016



i

Mục lục
Mở đầu

1

Chương 1. Kiến thức chuẩn bị
1.1 Đồng dư thức . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Phương trình và hệ phương trình đồng dư . . . . . . . . . . .

3
3
6

Chương 2. Mật mã Affin, mật mã Hill, mật mã lũy
2.1 Một số khái niệm về mật mã và sự giải mã . . . .
2.2 Mật mã Affin . . . . . . . . . . . . . . . . . . .
2.2.1 Mật mã Caesar . . . . . . . . . . . . . .
2.2.2 Mật mã dịch chuyển . . . . . . . . . . . .
2.2.3 Mật mã Affin . . . . . . . . . . . . . . .
2.2.4 Mật mã Vigenère . . . . . . . . . . . . .
2.3 Mật mã Hill . . . . . . . . . . . . . . . . . . . .
2.4 Mật mã lũy thừa . . . . . . . . . . . . . . . . .

thừa
. . .
. . .
. . .
. . .

. . .
. . .
. . .
. . .

.
.
.
.
.
.
.
.

Chương 3. Hệ thống mật mã RSA và mật mã ba lô
3.1 Hệ thống mật mã RSA . . . . . . . . . . . . . . . . . .
3.1.1 Sự hình thành và phát triển hệ thống mật mã RSA
3.1.2 Phương pháp tạo ra hệ thống mật mã RSA . . . .
3.1.3 Phương pháp giải mã hệ thống mật mã RSA . . .
3.2 Mật mã ba lô . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 Khái niệm mật mã ba lô . . . . . . . . . . . . . .
3.2.2 Thuật toán tạo ra mật mã ba lô . . . . . . . . . .
3.2.3 Cách giải mã thuật toán ba lô . . . . . . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.

.
.
.
.
.
.

7
7
8
8
10
13
16
18
24

.
.
.
.
.
.
.
.

30
30
30
31

32
35
35
37
40

Kết luận

44

Tài liệu tham khảo

45


1

Mở đầu
Trong cuốn sách của Godfrey H. Hardy (một nhà nghiên cứu toán học
người Anh) có tiêu đề “Lời xin lỗi của một nhà toán học”, ông đã chỉ ra có vô
hạn các số nguyên tố, nhưng chỉ có rất ít ứng dụng trong thực tiễn. Không
đồng tình với quan điểm của Godfrey H. Hardy, trong những năm qua các
nhà toán học đã phát hiện ra rất nhiều ứng dụng thực tế thú vị và hữu ích
của lý thuyết số, qua đó thấy rằng sự sáng tạo của con người có thể biến hầu
như mọi khía cạnh của kiến thức toán học vào một số ứng dụng thực tiễn.
Một ứng dụng thú vị của lý thuyết số là mật mã, nghiên cứu về các hệ thống
bí mật, chúng xuất hiện từ thời Ai cập cổ xưa. Trong nhiều thế kỷ, mật mã
đã trở thành một công cụ mạnh mẽ trong quân đội và ngoại giao, và chúng
cũng đã đang trở thành thứ không thể thiếu trong trao đổi thương mại. Bởi
vì các chính phủ thường giữ bí mật các quyết định về chính sách cho đến

một thời điểm thích hợp; các tập đoàn đa quốc gia muốn bảo vệ các nghiên
cứu sáng chế độc quyền và phát triển các chiến lược tiếp thị.
Năm 1917, ở đỉnh cao của chiến tranh thế giới thứ nhất, Đức đã ngầm kết
nối thông tin mật kêu gọi chính phủ Mexicô rằng hãy tham gia vào trục các
nước chống lại Mỹ và có lời hứa rằng sẽ cắt các bang Arizona, NewMexico
và Texas sát nhập vào nước Mexicô, trong trường hợp Mỹ tham chiến. Tuy
nhiên mạch thông tin đó đã bị gián đoạn, mật mã thông tin đó đã bị kiểm
soát bởi sự thông minh của người Anh, và thông tin đã được chuyển đến
tổng thống W. Wilson, phần kết còn lại như ta đã biết trong lịch sử. Ngày
nay, trong ngân hàng điện tử và dữ liệu máy tính thường xuyên sử dụng các
mã hóa để bảo mật và an ninh.
Với mong muốn tìm hiểu một số mật mã và cách tạo ra mật mã đơn giản,
cách giải một mật mã, vai trò của lý thuyết số trong việc tạo ra mật mã như
thế nào, tôi đã chọn đề tài “Áp dụng của số học vào mật mã” làm đề
tài nghiên cứu cho luận văn của mình.


2

Nội dung của luận văn gồm 3 chương. Chương 1: Trình bày một số
kiến thức chung về đồng dư thức, phương trình và hệ phương trình đồng dư.
Chương 2: Trình bày khái niệm về mật mã, sự giải mã. Cách tạo ra mật mã
Affin, mật mã Hill, mật mã lũy thừa và cách giải mã chúng. Chương 3: Trình
bày sự phát triển hệ thống mật mã RSA, cách tạo ra hệ thống mật mã RSA
và cách giải mã hệ thống đó. Trong chương này còn trình bày cách tạo ra
mật mã ba lô và cách giải mật mã ba lô đó.
Luận văn này được hoàn thành tại trường Đại học Khoa học, Đại học
Thái Nguyên dưới sự hướng dẫn tận tình của Tiến sĩ Nguyễn Văn Hoàng.
Tôi xin bày tỏ lòng biết ơn chân thành và sâu sắc về sự tận tâm và nhiệt
tình của thầy trong suốt quá trình tác giả thực hiện luận văn.

Trong quá trình học tập và làm luận văn, từ bài giảng của các giáo sư,
tiến sĩ đang công tác tại Viện toán học, Trường Đại học khoa học - Đại học
Thái Nguyên, tôi đã trau dồi thêm rất nhiều kiến thức để nâng cao trình độ
của mình. Từ đáy lòng mình, tôi xin bày tỏ lòng cảm ơn sâu sắc tới tất cả
các thầy, cô.
Tôi xin chân thành cám ơn Ban Giám hiệu, phòng Đào tạo Khoa học
và Quan hệ quốc tế, Khoa Toán - Tin trường Đại học Khoa học, Đại học
Thái Nguyên đã quan tâm và giúp đỡ tôi trong suốt thời gian học tập tại
trường.
Nhân dịp này tôi xin chân thành cảm ơn đồng nghiệp, bạn bè và gia
đình đã tạo mọi điều kiện giúp đỡ, động viên để tôi hoàn thành luận văn này.

Thái Nguyên, tháng 9 năm 2016
Tác giả

Lương Thị Chung


3

Chương 1
Kiến thức chuẩn bị
1.1

Đồng dư thức

Trong chương này, ta quy ước rằng tất cả các chữ a, b, c, x, y, z . . . biểu
thị các số nguyên và tất cả các môđun m, n, . . . là các số nguyên dương.
Định nghĩa 1.1.1 (Đồng dư thức). Cho m là số nguyên dương. Số nguyên
a đồng dư với số nguyên b theo môđun m nếu m|(a − b). Kí hiệu a ≡ b

(mod m). Trường hợp ngược lại ta kí hiệu a ≡ b (mod m).
Tiếp theo ta nhắc lại một số tính chất của đồng dư thức.
Tính chất 1.1.2.
(i) a ≡ b (mod m) khi và chỉ khi tồn tại k ∈ Z để a = b + km.
(ii) a ≡ b (mod m) khi và chỉ khi a và b chia cho m cùng được một số dư.
(iii) a ≡ a (mod m) (tính chất phản xạ).
(iv) Nếu a ≡ b (mod m), thì b ≡ a (mod m) (tính chất đối xứng).
(v) Nếu a ≡ b (mod m) và b ≡ c (mod m) thì a ≡ c (mod m) (tính chất
bắc cầu).
Tính chất 1.1.3. Nếu a ≡ b (mod m) và c ≡ d (mod m) thì

a+c≡b+d

(mod m) và ac ≡ bd (mod m).

Hệ quả 1.1.4.
(i) Nếu a ≡ b (mod m) và c ≡ d (mod m) thì a − c ≡ b − d (mod m).


4

(ii) Nếu a ≡ b (mod m) và c là số nguyên bất kỳ, thì

a + c ≡ b + c (mod m)
a−c≡b−c

(mod m)

ac ≡ bc (mod m)
a2 ≡ b2


(mod m).

(iii) Nếu a ≡ b (mod m), thì an ≡ bn (mod m) với n là số nguyên dương.
Tính chất 1.1.5.
(i) Nếu ac ≡ bc (mod m) và (c, m) = 1, thì a ≡ b (mod m).
(ii) Nếu ac ≡ bc (mod m) và (c, m) = d, thì a ≡ b (mod

m
d ).

Chứng minh: (ii) Giả sử ac ≡ bc (mod m), và có (c, m) = d. Ta có m|(ac−
bc), vì vậy ac − bc = km (k ∈ Z) nên c(a − b) = km. Chia cả hai vế cho d ta
được dc (a − b) = k md . Biết rằng ( dc , md ) = 1, do đó md |(a − b). Vậy a ≡ b
(mod m).
Tính chất 1.1.6. Nếu a ≡ b (mod m1 ), a ≡ b (mod m2 ),. . . , a ≡ b
(mod mk ), thì a ≡ b (mod [m1 , m2 , . . . , mk ]).
Hệ quả 1.1.7. Nếu a ≡ b (mod m1 ), a ≡ b (mod m2 ), . . . , a ≡ b (mod mk ),
với m1 , m2 , . . . , mk đôi một nguyên tố cùng nhau. Khi đó

a ≡ b (mod m1 m2 . . . mk ).
Định nghĩa 1.1.8 (Định lí Femat nhỏ). Cho p là số nguyên tố bất kì và a
số nguyên thì ap ≡ a mod p.
Chứng minh: Nếu p| a thì rõ ràng là cả ap và a đều chia hết cho p, nên
chúng đồng dư 0 theo môđun p. Bây giờ giả sử p không chia hết cho a. Chúng
ta thấy rằng 0a, 1a, 2a, . . . , (p − 1)a tạo thành một hệ đầy đủ các thặng dư
môđun p (thật vậy, với mọi 0 ≤ i < j ≤ p − 1, ta thấy rằng 0 < j − i < p
nên j − i không chia hết cho p. Suy ra (j − i)a không chia hết cho p, tức là
ja ≡ ia (mod p)). Từ đó ta thấy hai tập


{a (mod p), 2a (mod p), . . . , (p − 1)a (mod p)}


5



{1

(mod p), 2

(mod p), . . . , p − 1

(mod p)}

là như nhau. Vì thế lấy tích của các phần tử của hai họ trên theo môđun p
ta được đồng dư

ap−1 (p − 1)! ≡ (p − 1)!

(mod p).

Lưu ý rằng (p − 1)! không chia hết cho p. Do đó đẳng thức trên cho ta đồng
dư thức ap−1 ≡ 1 (mod p). Sau đó ta nhân cả hai vế với a ta được ap ≡ a
(mod p).
Mệnh đề 1.1.9. Giả sử d = gcd(a, b). Khi đó d là số nguyên dương nhỏ
nhất biểu diễn được dưới dạng d = am + bn trong đó m, n ∈ Z.
Chứng minh: Giả sử d là số nguyên dương nhỏ nhất có dạng d = am + bn.
Bằng phép chia Euclid ta được a = dq + r với 0 ≤ r < d, khi đó a =
(am + bn)q + r. Vậy r = (1 − mq)a − qnb = xa + yb cũng là tổ hợp tuyến

tính của a và b. Nếu r > 0 thì trái giả thiết d là nhỏ nhất. Do đó r = 0, tức
là a = dq chia hết cho d. Tương tự ta cũng suy ra được b chia hết cho d. Vì
thế d là ước chung của a và b. Giả sử d là ước chung tùy ý của a và b. Do
d = am + bn nên d chia hết cho d . Vậy d là ước chung lớn nhất của a và b.
Ngược lại, giả sử d là ước chung lớn nhất của a và b. Theo thuật toán Euclid
d = rn = rn−2 −qn−1 rn−1 , ta suy ra được d là tổ hợp tuyến tính của rn−2 , rn−1
và cũng có rn−3 = rn−2 .qn−2 +rn−1 nên rn là tổ hợp tuyến tính của rn−2 , rn−3 .
Tiếp tục quá trình đó ta suy ra được d là tổ hợp tuyến tính của r0 , r1 tức là
a và b.
Hệ quả 1.1.10. Giả sử a và b nguyên tố cùng nhau tức là gcd(a, b) = 1.
Khi đó tồn tại m, n ∈ Z sao cho ma + nb = 1. Từ đó, ta suy ra được rằng
nếu gcd(a, b) = 1 và a, b dương thì tồn tại nghịch đảo a−1 (mod b) và b−1
(mod a).
Định nghĩa 1.1.11 (Phi - hàm Euler). Cho n là số tự nhiên khác 0, khi đó
ϕ(n) là hàm số học có giá trị tại n bằng số các số tự nhiên nhỏ hơn n và
nguyên tố cùng nhau với n.
Từ định nghĩa trên có hệ quả trực tiếp: Số p là nguyên tố khi và chỉ khi
ϕ(p) = p − 1.


6

1.2

Phương trình và hệ phương trình đồng dư

Định nghĩa 1.2.1. Phương trình đồng dư bậc nhất là phương trình có dạng

ax ≡ b (mod m)
trong đó a, b ∈ Z và a ≡ 0 (mod m).

Nếu gcd(a, m) = 1 phương trình có đúng một nghiệm.
Chứng minh: Khi x chạy khắp qua hệ thặng dư đầy đủ theo modulo m thì
ax cũng chạy khắp qua hệ thặng dư đầy đủ theo modulo m. Do đó có một
và chỉ một giá trị x trong hệ thặng dư đầy đủ theo modulo m để ax ≡ b
(mod m). Vậy phương trình đã cho có đúng một nghiệm.
Định lý 1.2.2. Cho hệ phương trình đồng dư

ax + by ≡ r
cx + dy ≡ s

(mod m)
(mod m).

Đặt ∆ = ad − bc (mod m). Khi đó nếu gcd(∆, m) = 1 thì hệ phương trình
đang xét tồn tại nghiệm duy nhất môđun m được cho bởi công thức sau

x ≡ ∆−1 (dr − bs) (mod m)
y ≡ ∆−1 (as − cr) (mod m)
trong đó ∆−1 là nghịch đảo của ∆ môđun m.


7

Chương 2
Mật mã Affin, mật mã Hill, mật mã
lũy thừa
2.1

Một số khái niệm về mật mã và sự giải mã


Mật mã có nguồn gốc từ Hy Lạp "kryptos" có nghĩa là ẩn, và "graphein”
có nghĩa để viết. Mật mã là nghệ thuật và khoa học, giấu toàn bộ ý nghĩa
của thông tin mật ngoại trừ người nhận đã được dự định trước. Ta quy ước
một số tên gọi như sau:

• Văn bản thuần túy (ban đầu): là thông tin gốc, thông tin ban đầu
(thường kí hiệu (P));
• Việc chuyển văn bản thuần túy thành dạng mật mã được gọi là mã hóa;
• Văn bản mã hóa: là văn bản thuần túy ban đầu đã được mã hóa (thường
kí hiệu là (C);
• Chìa khoá: là công thức, bí quyết để giải mã và lập mã;
• Công cụ mã hóa và việc giải mã có thể là thuật toán do con người hay
là máy tính thực hiện.
• Sự giải mã: là phương pháp được sử dụng để phục hồi thông tin gốc, có
nghĩa là chuyển văn bản mã hóa thành văn bản thuần túy ban đầu;
• Hệ thống mật mã: là hệ thống cho phép mã hoá văn bản thuần túy đến
văn bản viết thành mật mã và có dùng chìa khoá.


8

2.2

Mật mã Affin

Đầu tiên ta thay các chữ cái từ A đến Z bằng số thứ tự (mã gốc) của
chúng trong bảng chữ alphabet lần lượt từ 00 đến 25 như Bảng 2.1. Dùng
sơ đồ này, chúng ta dịch văn bản thuần túy thành nội dung tin nhắn bằng
các số, điều này có nghĩa là văn bản ban đầu đã được mã hóa. Sau đó mỗi
một số được thay thế bởi một chữ cái. Người nhận văn bản mật mã, sẽ thay

thế mỗi chữ cái bằng mã gốc tương ứng và sử dụng chìa khoá để giải mã tin
nhắn số thành tin nhắn văn bản (dùng chìa khóa để chuyển các chữ số thành
các chữ cái).
Chữ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Mã 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
gốc

Bảng 2.1
Trong một mật mã thay thế, chúng ta thay thế một chữ cái của bảng chữ
cái, cho mỗi chữ cái trong văn bản ban đầu. Trong thực tế, mỗi phép thay
thế là một hoán vị của các chữ cái của bảng chữ cái. Vậy có 26! hoán vị của
các chữ cái, nên có tổng số 26! mật mã thay thế có thể; một trong số chúng
là tầm thường, trong đó mỗi chữ cái được thay thế cho chính nó.

2.2.1

Mật mã Caesar

Khoảng năm 50 trước công nguyên, Julius Caesar (100-44 B. C.) gửi tin
nhắn được mã hóa của ông cho tướng Marcus T. Cicero (106-43 B. C.), suốt
trong cuộc chiến tranh Gallic, việc sử dụng mật mã thay thế được dựa trên
số học modular. Một mật mã Caesar sẽ thay đổi mỗi chữ cái thành chữ cái
cách chữ cái đã cho ba đơn vị về bên phải, đối với ba chữ cái cuối X, Y, và
Z ta chuyển thành A, B, và C tương ứng.
• A B C D E F G H I
• D E F G H I

J

J


K L M N O P Q R S

K L M N O P Q R S

T U V W X Y Z

T U V W X Y Z A B C

Bảng 2.2
Cho P là mã gốc của một chữ cái ở văn bản thuần túy ban đầu và C là mã
mới ở văn bản mã hóa tương ứng. Do đó mật mã Caesar có thể được mô tả


9

bằng đồng dư:

C ≡P +3

(mod 26)

(2.1)

trong đó 0 ≤ P, C ≤ 25.
Văn bản mật mã thường được viết thành các khối năm chữ cái, để ngăn
cản việc nhận diện ra các từ ngắn một cách nhanh chóng, bởi những người
giải trộm mật mã. Ví dụ sau đây sẽ minh họa cho thuật toán mã hóa Caesar.
Ví dụ 2.2.1. Hãy mã hóa thông điệp HAVE A NICE DAY bằng cách sử
dụng mật mã Caesar.

Lời giải
Bước 1. Sử dụng Bảng 2.1 thay thế mỗi chữ cái bằng mã gốc của nó, ta được

07 00 21 04 00 13 08 02 04 03 00 24.
Bước 2. Áp dụng biến đổi theo mật mã Caesar C ≡ P + 3 (mod 26). Khi
đó ta được kết quả là

10 03 24 07 03 16 11 05 07 06 03 01.
Ví dụ khi P = 24 thì C ≡ 24 + 3 ≡ 01 (mod 26).
Bước 3. Thay thế các chữ tương ứng với mỗi mã gốc của nó và nhóm chúng
thành các khối 5 chữ cái. Kết quả ta được thông điệp đã mã hóa là
KDYHD QLFHG DB.
Ví dụ 2.2.2. Mã hóa thông điệp HANH PHUC bằng cách sử dụng mật mã
Caesar.
Lời giải
Sử dụng Bảng 2.1 thay thế mỗi chữ cái bằng mã gốc của nó.

07 00 13 07 15 07 20 02.
Sau đó áp dụng Caesar C ≡ P + 3 (mod 26). Khi đó ta được kết quả là

10 03 16 10 18 10 23 05.
Thay thế các chữ tương ứng với mỗi mã gốc của nó, và nhóm chúng trong
khối 5 chữ cái. Thông điệp bản mã kết quả là
KDQKS KXF.


10

Để giải mã một bản mã như đã nêu trên, người nhận chỉ cần đảo ngược
các bước. Xuất phát từ đồng dư C ≡ P + 3 (mod 26), ta có công thức giải

mã là
P ≡ C − 3 (mod 26)
(2.2)
nó cho phép chúng ta khôi phục văn bản ban đầu, ta minh họa qua ví dụ sau
đây.
Ví dụ 2.2.3. Giải mã văn bản mã hóa KDYHD QLFHG DB bằng cách sử
dụng mật mã Caesar.
Lời giải
Bước 1: Sử dụng bảng 2.1, thay thế mỗi chữ cái với mã gốc của nó, ta được

10 03 24 07 03 16 11 05 07 06 03 01.
Bước 2: Sử dụng công thức giải mã P ≡ C −3 (mod 26), ta nhận được chuỗi
số kết quả là

07 00 21 04 00 13 08 02 04 03 00 24.
Bước 3: Phiên dịch những con số này trở lại định dạng chữ cái, bằng cách sử
dụng bảng 2.1 ta được kết quả sau đây
HAVEANICEDAY.
Bước 4: Phân tách lại các chữ cái thành các từ có ý nghĩa. Ta thu được thông
báo ban đầu là:
HAVE A NICE DAY.

2.2.2

Mật mã dịch chuyển

Rõ ràng trong mật mã Caesar C ≡ P + 3 (mod 26) thì số 3 là yếu tố
cố định không thay đổi. Mật mã Caesar là một trường hợp riêng, trong các
thuật toán mã hóa chuyển đổi C ≡ P + k (mod 26), với k là yếu tố có thể
thay đổi 0 ≤ k ≤ 25. Có 26 mật mã thay đổi, một trong số đó là C ≡ P

(mod 26); nghĩa là C = P .
Một mật mã dịch chuyển là một mật mã thay thế. Bằng cách thay thế
chữ cái này bởi chữ cái khác, một người giải các mật mã có thể bẻ khóa mã,


11

bằng cách sử dụng các kiến thức về mức độ phổ biến tần suất xuất hiện của
các chữ cái trong văn bản bình thường. Các chữ cái thường xuyên xảy ra
nhất trong các bản mã, tương ứng với những chữ cái bị biến đổi trong văn
bản thuần túy ban đầu. Ví dụ, E là chữ cái thường gặp nhất trong một văn
bản bất kỳ, nó xảy ra khoảng 12,5% ; ba chữ cái tiếp theo là T, A, và O, xảy
ra lần lượt khoảng 9%, 8% và 8%. Bảng 2.3 cho thấy các tần suất liên quan
tương đối của các chữ cái khác nhau trong bảng chữ cái tiếng Anh.
C/cái A B C
Tần 8 1.5 3
số %
C/cái N
Tần 7
số %

O
8

D
4

P Q
2 0.1


E
12.5
R
6

F
2

G H
2 5.5

S T
6.5 9

U
3

I
7

J
K L
0.1 0.7 4

V
1

W
2


M
2

X Y Z
0.2 2 0.1

Bảng 2.3
Ví dụ sau minh họa cách mà bảng này có thể được sử dụng để phân tích mật
mã. Tuy nhiên, đối với những thông điệp ngắn và chọn lọc, tỷ lệ % có thể
không hữu ích. Chẳng hạn, ta xét đoạn tin nhắn nổi tiếng sau đây của tổng
thống John F. Kennedy trong sự kiện diễn văn nhậm chức của tổng thống
Kennedy vào năm 1961:
ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU, ASK WHAT
YOU CAN DO FOR YOUR COUNTRY.
Câu này không chứa E, và chữ cái thường gặp nhất ở đó là chữ O.
Ví dụ 2.2.4. Sử dụng mật mã dịch chuyển C ≡ P + 11 (mod 26), hãy mã
hóa tin nhắn NO LEGACY IS SO GREAT AS HONESTY.
Lời giải
Sử dụng Bảng 2.1 thay thế mỗi chữ cái bằng mã gốc của nó, ta được

13 14 11 04 06 00 02 24 08 18 18 14 06
17 04 00 19 00 18 07 14 13 04 18 19 24.
Sau đó áp dụng mật mã dịch chuyển C ≡ P + 11 (mod 26), ta được chuỗi
số kết quả


12

24 25 22 15 17 11 13 09 19 03 03 25 17
02 15 11 04 11 03 18 25 24 15 03 04 09.

Thay thế các chữ tương ứng với mỗi mã gốc và nhóm chúng trong khối 5
chữ cái, ta được văn bản mã hóa là
YZWPR LNJTD DZRCP LELDS

ZYPDE

J.

Ví dụ 2.2.5. Giả sử rằng các bản mã sau đây đã được tạo ra bởi các thuật
toán mã hóa dịch chuyển C ≡ P + k (mod 26). Hãy giải mã nó
SLABZ ULCLY ULNVA PHALV BAVMM LHYIB ASLAB ZULCL
YMLHY AVULN VAPHA L.
Lời giải
Văn bản đã viết thành mật mã có thể bị phá vỡ, nếu chúng ta có thể xác
định giá trị của k . Để làm điều này, trước tiên chúng ta xây dựng một bảng
tần số, cho các chữ cái trong văn bản đã viết thành mật mã, như trong bảng
2.4.
Chữ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cái
Tần 9 4 2 0 0 0 0 4 1 0 0 12 3 2 0 2 0 0 2 0 4 5 0 0 4 2
số

Bảng 2.4
Chữ thường xuyên nhất xảy ra trong văn bản mật mã là L, do đó, chúng tôi
đoán tốt nhất là nó phải tương ứng với chữ cái E, trong văn bản ban đầu. Mà
chữ cái có mã L và E mã gốc tương ứng là 11 và 4, điều này ngụ ý 11 ≡ 4 + k
(mod 26), có nghĩa là k = 7. Do đó C ≡ P + 7 (mod 26), nên P ≡ C − 7
(mod 26). Sử dụng đồng dư này, chúng ta có thể xác định mã gốc của từng
chữ trong văn bản thuần túy, như bảng 2.5 dưới đây sẽ cho thấy.
Vb A B C D E F G H I


hóa
Vb
đầu

J

K L

M N O P Q R S

T U V W X Y Z

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
19 20 21 22 23 24 25 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18
T U V W X Y Z

A B C D E F

G H I

Bảng 2.5

J

K L

M N O P Q R S



13

Sau đó từ bảng trên, sau khi tập hợp lại các khối ta được kết quả
LET US NEVER NEGOTIATE OUT OF FEAR BUT LET US NEVER
FEAR TO NEGOTIATET.

2.2.3

Mật mã Affin

Mật mã dịch chuyển thuộc về một lớp rộng hơn, đó là của lớp mật mã
affin, được xác định bởi công thức

C ≡ aP + k

(mod 26)

(2.3)

trong đó a là một số nguyên dương a ≤ 25 và (a, 26) = 1.
Điều kiện (a, 26) = 1, đảm bảo rằng khi P chạy qua hệ thặng dư đầy đủ
theo modulo 26, thì C cũng chạy qua một hệ thặng dư đầy đủ modulo 26;
điều đó đảm bảo rằng có một giải pháp duy nhất cho P

P ≡ a−1 (C − k)

(mod 26)

(2.4)


Vì (a, 26) = 1, nên ta có ϕ(26) = 12 các lựa chọn cho a. Do đó có 12.26 = 312
cách mã hóa theo mật mã Affin. Một trong những cách đó là phép biến đổi
C ≡ P (mod 26) tương ứng với a = 1, k = 0.
Khi a = 5, k = 11, ta có thuật toán khác là C ≡ 5P + 11 (mod 26).
Nếu P = 8 thì C ≡ 5.8 + 11 ≡ 25 (mod 26). Do vậy với phép mã hóa affin
C ≡ 5P + 11 (mod 26), thì chữ cái I chuyển thành chữ cái Z, và chữ Q
thành N. Bảng 2.6 cho thấy chữ cái văn bản thuần túy và chữ cái trong văn
bản mã hóa tương ứng tạo ra bằng mật mã affin này.
Vb A B C D E F G H I
đầu

J

K L

M N O P Q R S

T U V W X Y Z

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Vb 11 16 21 00 05 10 15 20 25 04 09 14 19 24 03 08 13 18 23 02 07 12 17 22 01 06

hóa
L

Q V A F

K P U Z


E J

O T Y D I

N S

X C H M R W B G

Bảng 2.6
Ví dụ 2.2.6. Sử dụng mật mã affine C ≡ 5P + 11 (mod 26), hãy mã hóa
tin nhắn sau: THE MOON IS MADE OF CREAM CHEESE.


14

Lời giải
Sử dụng bảng 2.1 thay thế mỗi chữ cái bằng mã gốc của nó ta được

19 07 04 12 14 14 13 08 18 12 00 03 04
14 05 02 17 04 00 12 02 07 04 04 18 04
Sử dụng đồng dư C ≡ 5P + 11 (mod 26) ta được chuỗi số kết quả là

02 20 05 19 03 03 24 25 23 19 11 00 05
03 10 21 18 05 11 19 21 20 05 05 23 05
Thay thế các chữ tương ứng với mỗi mã gốc của nó và nhóm chúng trong
khối 5 chữ cái. Văn bản mã hóa là
CUFTD DYZXT LAFDK

VSFLT VUFFX F.


Ví dụ sau đây cho thấy cách làm thế nào để giải mã một tin nhắn được
tạo ra bởi một mật mã affin.
Ví dụ 2.2.7. Giải mã văn bản đã được mã hóa sau bằng cách sư dụng mật
mã affin BYTUH NCGKN DUBIH UVNYX HUTYP QNGYV IVROH GSU.
Lời giải
Giả định những con số chúng ta đang tìm kiếm là C ≡ aP + k (mod 26).
Để thực hiện một chương trình giải mã, trước tiên tìm các ký tự xuất hiện
thường xuyên nhất trong văn bản thuần, ta xây dựng một bảng tần số của
các chữ cái trong văn bản mã hóa, như bảng 2.7 cho thấy.
Chữ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
cái
Tần 0 2 1 1 0 0 3 4 2 0 1 0 0 4 1 1 1 1 1 2 5 3 0 1 4 0
số

Bảng 2.7
Theo bảng 2.7, chữ thường xảy ra trong văn bản mã hóa là U, do đó giả
định rằng nó tương ứng với chữ cái trong văn bản ban đầu là E nghĩa là
20 ≡ 4a + k (mod 26). Bây giờ có ba sự lựa chọn cho chữ cái phổ biến xảy
ra tiếp theo, cụ thể là: H, N và Y.


15

Giả sử H tương ứng với T, thì 7 ≡ 19a + k (mod 26).
Vì vậy, chúng ta có

4a + k ≡ 20 (mod 26)
19a + k ≡ 7 (mod 26)

(1)

(2)

Lấy (2)-(1) ta được 15a ≡ −13 (mod 26) hay 15a ≡ 13 (mod 26) có nghĩa
.
chúng ta tìm m để 13 + 26m..15.
Chọn m = 7 khi đó chúng ta có được a ≡ 13 (mod 26) thay vào (1) ta được
4.13 + k ≡ 20 (mod 26) ⇔ k ≡ −6 (mod 26) ⇔ k ≡ 20 (mod 26), vì vậy
C ≡ 13P + 20 (mod 26). Nhưng (13, 26) = 1, vì vậy đây không phải là một
mật mã hợp lệ. Vì vậy, có thể đoán rằng H tương ứng với T là không hợp lệ.
Giả sử N tương ứng với T ta được

4a + k ≡ 20 (mod 26) (1)
19a + k ≡ 13 (mod 26) (3)
Lấy (3)-(1) ta được 15a ≡ −7 (mod 26) hay 15a ≡ 19 (mod 26) có nghĩa
.
chúng ta tìm m để (19+26m)..15. Chọn m = 1 khi đó chúng ta có được a ≡ 3
(mod 26) thay vào (3) ta được 4.3 + k ≡ 20 (mod 26) ⇔ k ≡ 8 (mod 26).
Vì (3, 26) = 1, nên điều này mang lại một giá trị mật mã C ≡ 3P + 8
(mod 26). Dẫn đến, P ≡ 3−1 (C − 8) (mod 26).
Dùng thuật toán Euclid mở rộng tìm 3−1 (mod 26) có nghĩa tìm d và k
sao cho 3d + 26k = 1. Dễ thấy 3.9 + 26(−1) = 1 nên 3−1 (mod 26) ≡ 9
(mod 26). Vậy công thức giải mã là:

P ≡ 9(C − 8) ≡ 9C + 6

(mod 26).

Sử dụng công thức giải mã này, tiếp theo chúng ta xây dựng Bảng 2.8, hiển
thị các chữ cái tương ứng với những bản mã.
Vb A B C D E F G H I


hóa

J

K L

M N O P Q R S

T U V W X Y Z

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

Vb 06 15 24 07 16 25 8 17 00 09 18 01 10 19 02 11 20 03 12 21 04 13 22 05 14 23
đầu
G P Y H Q Z

I

R A J

S

B K T C L

Bảng 2.8

U D M V E N W F

O X



16

Sử dụng bảng trên, chúng ta có thể dịch tin nhắn đã cho là
POVER TYIST HEPAR ENTOF REVOL UTION ANDCR IME.
Phân tách lại các chữ cái thành các từ có ý nghĩa. Ta thu được thông báo
ban đầu là:
POVERTY IS THE PARENT OF REVOLUTION AND CRIME.
Nhận xét
Khi nhận được văn bản mật mã, người ta có thể dựa vào tần suất xuất hiện
của các chữ cái để đoán ra khoá giải mã. Mặt khác, chỉ có 26 chữ cái khác
nhau để chọn khoá cho các loại mã nói trên. Với công nghệ máy tính hiện
đại như hiện nay ta dễ dàng tìm ra văn bản gốc. Với mật mã Affin chỉ cần
dựa vào tần xuất xuất hiện từ, để tìm ra hai chữ cái tương ứng với hai chữ
cái nào đó trong văn bản, bằng cách giải hệ phương trình đồng dư. Việc giải
hệ mã biến đổi Affin là quá dễ dàng với máy tính. Như vậy mã Ceasar, mật
mã dịch chuyển, mật mã Affin cho thấy tính bảo mật không cao, với yêu cầu
về độ bảo mật cao hơn, người ta nghiên cứu tìm ra những hệ mật mã phức
tạp hơn.

2.2.4

Mật mã Vigenère

Sự lựa chọn khác là sử dụng kế hoạch mã hóa, được phát triển bởi B.de
Vigenère, một người nghiên cứu về mật mã Pháp vào năm 1586. Hệ thống
mật mã Vigenère sử dụng từ khóa w1 w2 . . . wn chiều dài n, và n mã dịch
chuyển
Ci ≡ Pi + ki (mod 26)

cho mỗi khối văn bản thuần túy chiều dài n, trong đó ki là mã gốc của chữ
wi và 1 ≤ i ≤ n.
Ví dụ sau đây minh họa việc mật mã Vigenère.
Ví dụ 2.2.8. Sử dụng từ khóa CIPHER và Mật mã Vigenère, hãy mã hóa
thông điệp CRYPTOGRAPHY IS FUN.
Lời giải
Vì mã gốc của các chữ cái C, I, P, H, E và R trong từ CIPHER tương ứng
là 02, 08, 15, 07, 04, và 17; chúng cung cấp cho ta các bước dịch chuyển cho


17

mỗi chữ trong mỗi khối. Do đó ta có sáu phép thay đổi mật mã là C ≡ P + k
(mod 26) tương ứng với k = 2, 8, 15, 7, 4, và 17.
Vì từ khóa là một từ có độ dài sáu, nên trước hết chúng ta nhóm các
chữ cái của văn bản thuần ban đầu vào các khối có chiều dài sáu: CRYPTO
GRAPHY ISFUN.
Bây giờ áp dụng các thuật toán mã hóa thứ i, đối với từ wi trong mỗi khối,
trong đó 1 ≤ i ≤ 6. Chẳng hạn, ta xét khối thứ nhất, đó là khối CRYPTO
Văn bản ban đầu
P
k
C ≡P+k (mod 26)
Văn bản mã hóa

C R Y P T O
02 17 24 15 19 14
02 8 15 07 04 17
4 25 13 22 23 05
E Z N W X F


Tương tự ta làm như vậy đối với khối GRAPHY và khối ISFUN:
Khối GRAPHY
Văn bản ban đầu
P
k
C ≡P+k (mod 26)
Văn bản mã hóa

G R A P H Y
06 17 00 15 07 24
02 8 15 07 04 17
08 25 15 22 11 15
I Z P W L P

Khối ISFUN
Văn bản ban đầu
P
k
C ≡P+k (mod 26)
Văn bản mã hóa

I S F U N
08 18 05 20 13
02 8 15 07 04
10 00 20 01 17
K A U B R

Vì vậy, bản mã hóa là
EZNWXF IZPWLP KAUBR.

Điều quan trọng cần nhớ rằng, một mật mã affin thay thế các chữ cái
giống nhau trong văn bản ban đầu P , bởi cùng một chữ cái nào đó trong
văn bản mã hóa C , trong khi mật mã Vigenère không cần. Mật mã Vigenère
có thể thay thế nhiều chữ cái khác nhau trong văn bản ban đầu P , bởi cùng
một chữ cái giống nhau trong văn bản mã hóa. Chẳng hạn, như ở ví dụ
trước: trong văn bản thuần ban đầu chữ cái A và Y, khi mã hóa đều được
chuyển thành chữ cái P. Điều này làm cho cả mã hóa và giải mã trong mật


18

mã Vigenère thêm khó khăn. Cả hai chữ cái R đều được chuyển thành Z
trong văn bản mã hóa, vì chúng chiếm vị trí tương tự trong tương ứng của
khối, tuy nhiên cùng một chữ Y lại được chuyển thành chữ N và chữ P ở hai
khối khác nhau.
Để giải mã mật mã Vigenère sử dụng một từ khoá w1 w2 . . . wn chiều dài
n và n thay đổi mật mã ta sử dụng đồng dư

Pi ≡ Ci − ki

(mod 26).

Mỗi khối văn bản mã hóa chiều dài n, trong đó ki là mã gốc của wi và
1 ≤ i ≤ n. Ví dụ sau đây minh họa giải mã mật mã Vigenère
Ví dụ 2.2.9. Giải mã văn bản TETS FHBZ IETS FH đã được mã hóa tạo
ra bởi một mật mã Vigenère và sử dụng từ khóa MATH.
Lời giải
Vì số thứ tự của các chữ cái M, A, T và H là 12, 00, 19 và 07, Như vậy
từ khóa có độ dài là 4 trong đó ki là mã gốc của chữ wi và 1 ≤ i ≤ 4 với
k1 = 12, k2 = 00, k3 = 19, k4 = 07.

Ta sử dụng đồng dư Pi ≡ Ci − ki (mod 26). Sau đó áp dụng các thuật
toán mã hóa thứ i đối với từ wi trong mỗi khối, trong đó 1 ≤ i ≤ 4.
Khối v.b T E T S
mã hóa
C
19 04 19 18
k
12 00 19 07
P≡ C-k 07 04 00 11
(mod 26)
Khối v.b H E A L
ban đầu

F

H

B

Z

I

E

T

S

F


H

05 07 01 25
12 00 19 07
19 07 08 18

08 04 19 18
12 00 19 07
22 04 00 11

05 07
12 00
19 07

T

W

T

H

I

S

E

A


L

H

Khối văn bản ban đầu là HEAL THIS WEAL TH.
Phân tách lại các chữ cái thành các từ có ý nghĩa. Ta thu được thông báo
ban đầu là
HEALTH IS WEALTH.

2.3

Mật mã Hill

Để chống lại việc sử dụng tần suất xuất hiện của các chữ cái trong văn
bản, để dò ra khoá giải mã như các hệ mã đã trình bày ở trên, chúng tôi


19

chuyển sang một lớp mới của thuật toán mật mã, được gọi là mật mã khối
phát triển bởi Lester S. Hill năm 1929. Với mã khối, ta không mã hoá từng
chữ cái của văn bản, mà mã hoá từng khối chữ cái. Trong một hệ thống mật
mã khối, chúng tôi thay thế cho mỗi khối văn bản thuần có chiều dài n, bằng
một khối văn bản mã hóa cũng có chiều dài n với n ≥ 2.
Xét khối mật mã với n = 2. Đầu tiên, chúng tôi nhóm các chữ cái của
văn bản thuần vào khối của chiều dài hai, thêm một chữ cái giả X vào cuối
nếu cần thiết, để làm cho tất cả các khối cùng chiều dài, sau đó thay thế
mỗi chữ cái với mã gốc của nó. Với mỗi khối số của văn bản thuần P1 , P2
sẽ được thay thế bằng một khối số mã hóa C1 , C2 , trong đó C1 , C2 là các tổ

hợp tuyến tính khác nhau của P1 và P2 modulo 26, tức là

C1 ≡ aP1 + bP2

(mod 26)

C2 ≡ cP1 + dP2

(mod 26)

(2.5)

trong đó (ad − bc, 26) = 1. Sau đó chúng tôi dịch mỗi số thành một chữ cái
mã hóa; kết quả là các văn bản mã hóa.
Ví dụ sau minh hoạ cho các thuật toán này.
Ví dụ 2.3.1. Sử dụng hệ tuyến tính

C1 ≡ 5P1 + 13P2

(mod 26)

C2 ≡ 3P1 + 18P2

(mod 26)

(2.6)

Hãy mã hóa tin nhắn SLOW AND STEADY WINS THE RACE.
Lời giải:
Bước 1: Chia văn bản ban đầu thành các khối có độ dài hai:

SL OW AN DS TE AD YW IN ST HE RA CE
Bước 2: Thay mỗi chữ cái bằng mã gốc :

18 11 14 22 00 13 03 18 19 04 00 03
24 22 08 13 18 19 07 04 17 00 02 04
Bước 3: Sử dụng các hệ tuyến tính ở đề bài, chuyển đổi từng khối số đã cho
thành khối số mã hóa:
Khi P1 = 18 và P2 = 11, ta có

C1 ≡ 5.18 + 13.11 ≡ 25

(mod 26)


20

C2 ≡ 3.18 + 18.11 ≡ 18

(mod 26)

Do đó, khối đầu tiên 18 11 được chuyển thành 25 18.
Biến đổi các khối khác tương tự ta được

25 18 18 22 13 00 15 21 17 25 13 02
16 00 01 24 25 06 09 15 07 25 10 00
Bước 4: Dịch số thành chữ. Kết quả các bản mã là
ZS SW NA PV RZ NC QA BY ZG JP HZ KA.
Trong việc nghiên cứu các hệ mật mã Hill thì ma trận rất quan trọng.
Thật vậy hệ tuyến tính ở ví dụ 2.3.1 có thể được viết lại như sau


5 13
C1

3 18
C2

P1
P2

(mod 26)

5 13
Vì ∆ = 3 18 = 51 và (51, 26) = 1 nên tồn tại ma trận khả nghịch của ma
5 13
trận A = 3 18 modulo 26.
5 13
5 13
Tìm ma trận nghịch đảo của A = 3 18 modul 26. Ta có ∆= 3 18 ≡ 25
(mod 26) và (25, 26) = 1. Để tìm 25−1 (mod 26), ta phải tìm m, n sao cho
25n + 26m = 1. Dễ thấy 26.1 + 25(−1) = 1 nên
25−1 ≡ −1

(mod 26) ≡ 25

(mod 26).

Áp dụng định lí 1.2.2, ta tìm P1 , P2 như sau

P1 ≡ 25(18C1 − 13C2 ) ≡ 8C1 + 13C2


(mod 26)

P2 ≡ 25(−3C1 + 5C2 ) ≡ 3C1 + 21C2

(mod 26).

8 13
Như vậy ma trận nghịch đảo A−1 = 3 21 modul 26. Vì vậy chúng ta giải
mã bằng cách sử dụng đồng dư
P1
8 13

3 21
P2

C1
C2

(mod 26)

(2.7)


21

Ví dụ 2.3.2. Sử dụng đồng dư 2.7, giải mã bản mã
ZS SW NA PV RZ NC QA BY ZG JP HZ KA.
Lời giải:
Thay các chữ cái bằng mã gốc của nó ta được


25 18 18 22 13 00 15 21 17 25 13 02
16 00 01 24 25 06 09 15 07 25 10 00
Khi C1 = 25 và C2 = 18 ta có

P1
8 13

3 21
P2

25
18

18
11

(mod 26)

Vậy P1 = 18 và P2 = 11. Các khối khác được chuyển đổi tương tự, ta được
chuỗi số của văn bản ban đầu là:

18 11 14 22 00 13 03 18 19 04 00 03
24 22 08 13 18 19 07 04 17 00 02 04
Kết quả là : SL OW AN DS TE AD YW TẠI ST HE RA CE.
Phân tách lại các chữ cái thành các từ có ý nghĩa. Ta thu được thông báo
ban đầu là:
SLOW AND STEADY WINS THE RACE.
Rõ ràng từ các ví dụ trước, kích thước của một khối có thể là bất kỳ, kích
thước của khối là n với n ≥ 2, việc mã hóa và giải mã có thể được thực hiện
bằng cách chọn một ma trận vuông A cấp n × n theo modulo 26 trong đó

(|A|, 26)=1 với |A| định thức của A. Cho P1 , P2 , . . . , Pn là số thứ tự của một
khối văn bản thuần ban đầu tùy ý và C1 , C2 , . . . , Cn là khối số văn bản mã
hóa tương ứng.
 

C1
P1
P
 C2 
 2
 
 . 
C =  . 
P =
 . 
 . 
 . 
 . 
Cn
Pn


Các đồng dư C ≡ AP (mod 26) cung cấp các công thức mã hóa, như ví
dụ sau đây cho thấy đối với n = 3.


22

Ví dụ 2.3.3. Sử dụng ma trận


3 2 6
A = 5 7 11
13 4 1
mã hóa tin nhắn A PROVERB IS THE CHILD OF EXPERIENCE.
Lời giải
Đầu tiên, nhận thấy rằng |A| = −261 ≡ 25 (mod 26), vì vậy (|A|, 26) = 1.
Vì A là ma trận vuông cấp 3 nên ta chia văn bản ban đầu thành các khối có
độ dài ba:
APR OVE RBI STH ECH ILD OFE XPE RIE NCE
Thay các chữ cái bằng mã gốc của nó, ta được các khối số tương ứng là:

00 15 17 14 21 04 17 01 08 18 19 07 04 02 07
08 11 03 14 05 04 23 15 04 17 08 04 13 02 04
Với khối đầu tiên ta có P1 = 0, P2 = 15, P3 = 17 khi đó C1 , C2 , C3 được tính
như sau:
C1
3 2 6
0
2
C2 ≡ 5 7 11 15 ≡ 6 (mod 26)
13 4 1
17
25
C3
Điều đó có nghĩa là: C1 = 02, C2 = 06, C3 = 25. Tiếp tục theo cách này ta
có được các khối số đã được mã hóa

02 06 25 04 01 10 23 24 25 04 14 05 06 07 15
12 20 21 24 19 24 19 04 25 13 03 23 15 19 25
Từ đó ta có bản mã hóa

CGZ EBK XYZ EOF GHP MUV YTY TEZ

NXD PTZ.

Để giải mã một thông điệp được mã hóa như trên chúng tôi sử dụng đồng


P ≡ A−1 C

(mod 26)

(2.8)


×