ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Tiểu luận
Môn: Mật mã và An toàn thông tin
Đề tài: Hệ mã hóa khóa đối xứng
Giáo viên hướng dẫn: PGS.TS Trịnh Nhật Tiến
Học viên thực hiện: Nguyễn Thị Tươi
HÀ NỘI - 2014
Mục lục
Mở đầu 1
Chương 1 Hệ mã hóa 2
1.1 Định nghĩa hệ mã hóa 2
1.2 Hệ mã hóa khóa đối xứng 2
1.2.1 Khái niệm 2
1.2.2 Ưu và nhược điểm của hệ mã hóa khóa đối xứng 3
1.2.2.1 Ưu điểm: 3
1.2.2.2 Hạn chế: 3
1.2.3 Môi trường sử dụng 4
Chương 2 Một số hệ mã hóa khóa đối xứng cổ điển 5
2.1 Hệ mã hóa: Dịch chuyển 5
2.1.1 Sơ đồ 5
Hiện nay có rất nhiều hệ mã hóa. Các hệ mã hóa được phân loại theo nhiều cách
khác nhau. Dựa theo tính chất của khóa, các hệ mã hóa chia làm hai loại: hệ mã hóa
khóa đối xứng (hệ mã hóa khóa riêng) và hệ mã hóa khóa bất đối xứng (hệ mã hóa khóa
công khai). Dựa theo đặc trưng bản rõ, các hệ mã hóa chia thành hai loại: mã hóa khối
và mã hóa dòng. Ngoài ra, các hệ mã hóa còn được phân loại dựa theo ứng dụng mã
hóa,… Mỗi hệ mã hóa phù hợp với các mục đích sử dụng riêng, có những ưu và nhược
điểm khác nhau. Hệ mã hóa khóa riêng thực hiện mã hóa và giải mã nhanh hơn hệ mã
hóa công khai, nhưng độ an toàn không cao. Hệ mã hóa này phù hợp với môi trương dễ
trao chuyển bí mật. Hệ mã hóa khóa công khai có ưu điểm chỉ cần viết thuật toán một
lần, công khai cho nhiều lần dùng, nhiều người sử dụng,… nhưng thời gian thực hiện
lâu hơn hệ mã hóa khóa riêng. Trong phạm vi của tiểu luận, chúng tôi sẽ trình bày về hệ
mã hóa khóa riêng và một số loại hệ mã hóa khóa riêng cụ thể.
Bài tiểu luận bao gồm các phần:
Chương 1: Những nét cơ bản về hệ mã hóa khóa riêng.
Chương 2: Một số hệ mã hóa khóa riêng cụ thể.
Chương 3: Cài đặt chương trình thử nghiệm một số hệ mã hóa khóa riêng. 2
Chương 1 Hệ mã hóa
1.1 Định nghĩa hệ mã hóa
Hệ mã hóa được định nghĩa là bộ năm (P, C, K, E, D), trong đó:
P là tập hữu hạn các bản rõ có thể.
C là tập hữu hạn các bản mã có thể.
K là tập hữu hạn các khoá có thể.
E là tập các hàm lập mã.
D là tập các hàm giải mã.
Với khóa lập mã ke K, có hàm lập mã e
ke
oscar
3 Alice và Bob truyền tin cho nhau sử dụng hệ mã hóa khóa đối xứng. Trước tiên,
họ chọn ngẫu nhiên khóa k K. Việc chọn khóa này được thực hiện bí mật, chỉ riêng
Alice và Bob biết (Oscar hay bất cứ ai khác đều không biết). Giả sử Alicce gửi tin nhắn
cho Bob trên môt kênh truyền không mật và ta xem tin nhắn này là một chuỗi x = x
1
, x
2
,
…x
n
với số nguyên n 1 nào đó. Ở đây, mỗi một ký hiệu của bản rõ x P, 1 i n.
Mỗi x
i
sẽ được mã hóa bằng quy tắc mã e
k
4
2). Vấn đề thỏa thuận khoá và quản lý khóa chung là khó khăn và phức tạp. Người
gửi và người nhận phải luôn thống nhất với nhau về khoá. Việc thay đổi khoá là rất khó
và dễ bị lộ. Khóa chung phải được gửi cho nhau trên kênh an toàn.
Mặt khác khi hai người (lập mã, giải mã) cùng biết “chung” một bí mật, thì càng
khó giữ được bí mật.
1.2.3 Môi trường sử dụng
Hệ mã hóa khóa đối xứng thường được sử dụng trong môi trường mà khoá chung
có thể dễ dàng trao chuyển bí mật, chẳng hạn trong cùng một mạng nội bộ.
Hệ mã hóa khóa đối xứng thường dùng để mã hóa những bản tin lớn, vì tốc độ
mã hóa và giải mã nhanh hơn Hệ mã hóa khóa công khai. 5
Chương 2 Một số hệ mã hóa khóa đối xứng cổ điển
2.1 Hệ mã hóa: Dịch chuyển
2.1.1 Sơ đồ
Đặt P = C = K = Z
26
. Bản mã y và bản rõ x Z
26
.
Với khóa k K, ta định nghĩa:
Hàm Mã hóa: y = e
k
(x) = (x + k) mod 27
Hàm Giải mã: x = d
26
.
Tập khóa K là tập mọi hoán vị trên Z
26
.
Với khóa k = K, tức là 1 hoán vị trên Z
26
, ta định nghĩa:
Mã hóa: y = e
(x) = (x)
Giải mã: x = d
(y) =
-1
(y)
Ví dụ
* Bản rõ chữ: T O I N A Y T H A V I R U S
* Chọn khóa k = là hoán vị:
A
B
C
D
E
F
G
H
I
J
I
H
G
F
E
D
C
B
A
Z
* Mã hóa theo công thức y = e
(x) = (x):
* Bản mã chữ: E J P Z K Y V Z E Q Y Z C P G D F
* Giải mã theo công thức x = d
(y) =
-1
(y), ta nhận lại được bản rõ chữ.
2.2.2 Độ an toàn
Độ an toàn của mã thay thế: Thuộc loại cao.
Tập khóa K có 26 ! khóa ( > 4. 10
26
), nên việc phá khóa (thám mã) có thể
thực hiện bằng cách duyệt tuần tự 26 ! hoán vị của 26 chữ cái.
Để kiểm tra tất cả 26 ! khóa, tốn rất nhiều thời gian !
Hiện nay với hệ mã này, người ta có phương pháp thám mã khác nhanh hơn.
* Bản mã số: y = 12 1 4 18 14 19 6 0 22 17 14 22 19 1 22 6
* Bản mã chữ: MBESOTGAWROWTBWG
Giải mã theo công thức x = d
k
(y) = a
-1
(y – b) mod 26
= 3
-1
(y – 6) mod 26 = 9 * (y – 6) mod 26.
2.3.2 Độ an toàn
Độ an toàn của Hệ mã hóa Affine: Rất thấp.
+ Điều kiện UCLN(a, 26) = 1 để bảo đảm a có phần tử nghịch đảo a
–1
mod 26, tức là
thuật toán giải mã d
K
luôn thực hiện được.
+ Số lượng a Z
26
nguyên tố với 26 là (26) = 12 , đó là
1, 3, 5, 7 ,9, 11, 15, 17, 19, 21, 23, 25
Các số nghịch đảo theo (mod 26) tương ứng: 1, 9, 21, 15, 3, 19, 7, 23, 11, 5, 17, 25
+ Số lượng b Z
26
là 26 .
+ Số các khoá (a, b) có thể là 12 * 26 = 312. Rất ít !
Như vậy việc dò tìm khóa mật khá dễ dàng.
k
(x
1
, x
2
, …, x
m
)=(x
1
+ k
1
, x
2
+ k
2
, …, x
m
+ k
m
) mod m.
Giải mã X =(x
1
, x
2
, …, x
m
)= d
k
(y
14
18
17
8
3
18
10
0
22
2
14
17
17
24
3
3
3
22
9
11
2
22
16
8
1
15
10
19
22
Như vậy số khoá (độ dài m) có thể có trong mật Vigenere là 26
m
.
Nếu dùng phương pháp “tấn công vét cạn”, thám mã phải kiểm tra 26
m
khóa.
9
Hiện nay với hệ mã này, người ta có phương pháp thám mã khác nhanh hơn.
2.5 Hệ mã hóa: Hoán vị cục bộ.
2.5.1 Sơ đồ
Đặt P = C = Z
26
m
, m là số nguyên dương. Bản mã Y và bản rõ X (Z
26
)
m
.
Tập khóa
K
là tập tất cả các hoán vị của {1, 2, …., m}.
Với mỗi khoá k =
K
, k = (k
1
, k
, …, x
m
) = d
k
(y
1
, y
2
, …, y
m
) = (y
k(1)
-1
, y
k(2)
-1
, … , y
k(m)
-1
)
Trong đó k
-1
=
-1
là hoán vị ngược của .
Ví dụ
* Bản rõ chữ CX = SHESEL ISSEAS HELLSB YTHESE ASHO
Đặt P = C = Z
26
m
SHESEL | ISSEAS | HELLSB | YTHESE | ASHORE
Với mỗi nhóm 6 ký tự, sắp xếp lại các chữ theo hoán vị , ta nhận được:
EESLSH | SALSES | LSHBLE | HSYEET | HRAEOS
* Bản mã chữ: CY = EESLSHSALSES LSHBLEHSYEETHRAE
* Dùng hoán vị ngược
-1
, ta sẽ thu được bản rõ CX.
2.5.2 Độ an toàn
Nếu dùng phương pháp “tấn công vét cạn”, thám mã phải kiểm tra số khóa có thể là:
1 ! + 2! + 3 ! + … + m ! trong đó m 26.
Hiện nay với hệ mã này, người ta có phương pháp thám mã khác nhanh hơn.
10
2.6 Hệ mã hóa: HILL
2.6.1 Sơ đồ
Lester S. Hill đưa ra năm 1929.
Đặt P = C = Z
26
m
, m là số nguyên dương. Bản mã Y và bản rõ X (Z
26
)
m
.
Tập khóa
K
= {K
m
) * K
* Hàm giải mã: X = (x
1
, x
2
, …, x
m
) = d
k
(y
1
, y
2
, …, y
m
) = (y
1
, y
2
, …, y
m
) * K
-1
Ví dụ
* Bản rõ chữ: TUDO
7 18
Chọn m = 2, khóa K =
1
, y
2
) = (x
1
, x
2
) * K, ta tính được:
y
1
= 11 * x
1
+ 3 * x
2
, y
2
= 8 * x
1
+ 7 * x
2
* Bản mã số: 9 6 | 23 18
* Bản mã chữ: FGXS
2.6.2 Độ an toàn
Nếu dùng phương pháp “tấn công vét cạn”, thám mã phải kiểm tra số khóa có thể
với m lần lượt là 2, 3, 4, … trong đó m lớn nhất là bằng độ dài bản rõ. 11