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

Tiểu luận Mật mã và An toàn thông tin Hệ mã hóa khóa đối xứng

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 (570.6 KB, 13 trang )


ĐẠ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


2.1.2 Độ an toàn 5
2.2 Hệ mã hóa: Thay thế (Hoán vị toàn cục) 6
2.2.1 Sơ đồ 6
2.2.2 Độ an toàn 6
2.3 Hệ mã hóa: AFFINE 7
2.3.1 Sơ đồ 7
2.3.2 Độ an toàn 7
2.4 Hệ mã hóa : VIGENERE 8
2.4.1 Sơ đồ 8
2.4.2 Độ an toàn 8
2.5 Hệ mã hóa: Hoán vị cục bộ. 9
2.5.1 Sơ đồ 9
2.5.2 Độ an toàn 9
2.6 Hệ mã hóa: HILL 10
2.6.1 Sơ đồ 10
2.6.2 Độ an toàn 10
Chương 3 Chương trình thực nghiệm 11
3.1 Giới thiệu chương trình 11
3.2 Cài đặt và hướng dẫn chạy chương trình 11


1

Mở đầu
Ngày nay, công nghệ thông tin ngày càng phát triển, mạng lưới Internet ngày
càng mở rộng. Sự trao đổi thông tin qua mạng ngày càng phổ biến. Yêu cầu bảo đảm an
toàn thông tin trở thành nhu cầu chung của mọi hoạt động truyền thông trong kinh tế, xã
hội và giao lưu giữa người và người. Để có thể bảo vệ các thông tin trên đường truyền,
các nhà khoa học đã đưa ra các hệ mã hóa giúp mã hóa và giải mã sử dụng khóa mà chỉ
người có quyền mới biết, đảm bảo “che giấu” được thông tin với người không có quyền.

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

 E, e
ke
: P C,
Với khóa giải mã kd  K, có hàm giải mã d
kd
 D, d
kd
: C

P,
sao cho d
kd
(e
ke
(x)) = x,  x  P.
Ở đây x được gọi là bản rõ, e
ke
(x) được gọi là bản mã.
1.2 Hệ mã hóa khóa đối xứng
1.2.1 Khái niệm
Mã hóa khóa đối xứng là Hệ mã hóa mà biết được khóa lập mã thì có thể “dễ”
tính được khóa giải mã và ngược lại. Đặc biệt một số Hệ mã hóa có khoá lập mã và
khoá giải mã trùng nhau (ke = kd), như Hệ mã hóa “dịch chuyển” hay DES.
Hệ mã hóa khóa đối xứng còn gọi là Hệ mã hóa khoá bí mật, hay khóa riêng, vì
phải giữ bí mật cả 2 khóa. Trước khi dùng Hệ mã hóa khóa đối xứng, người gửi và
người nhận phải thoả thuận thuật toán mã hóa và khoá chung (lập mã hay giải mã), khoá
phải được giữ bí mật. Độ an toàn của Hệ mã hóa loại này phụ thuộc vào khoá.





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

với khóa k xác định trước đó. Bởi vậy, Alice
sẽ tính y = e
k
(x
i
). 1  i  n, thu được chuỗi bản mã: y = y
1
y
2
……y
n
sẽ được gửi trên
kênh. Khi Bob nhận được được bản mã y, Bob sẽ giải mã bằng hàm giải mã d
k
và thu
được bản rõ x.
1.2.2 Ưu và nhược điểm của hệ mã hóa khóa đối xứng
1.2.2.1 Ưu điểm:
Hệ mã hóa khóa đối xứng đơn giản hơn và quá trình mã hóa, giải mã nhanh hơn
Hệ mã hóa khóa công khai.
1.2.2.2 Hạn chế:
1). Mã hóa khóa đối xứng chưa thật an toàn với lý do sau:
Người mã hoá và người giải mã phải có “chung” một khoá. Khóa phải được giữ
bí mật tuyệt đối, vì biết khoá này “dễ” xác định được khoá kia và ngược lại.
Alice
Bộ mã hóa
Bộ giải mã
Bob
Kênh truyền
Nguồn khóa


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

k
(y) = (y – k) mod 27
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 = 3.
* Bản rõ số: 19 14 8 26 13 0 24 26 19 7 0 26 21 8 17 20 18

* Với phép mã hóa y = e
k
(x) = (x + k) mod 26 = (x + 3) mod 26, ta nhận được:

* Bản mã số: 22 17 11 3 16 3 1 3 22 10 3 3 24 11 20 23 21
* Bản mã chữ: W R L D Q D B D W K D D Y L U X V
 Với phép giải mã x = d
k
(y) = (y – k) mod 26 = (y – 3) mod 26, ta nhận lại
được bản rõ số, sau đó là bản rõ chữ.
2.1.2 Độ an toàn
Độ an toàn của mã dịch chuyển: Rất thấp.
Tập khóa K chỉ có 26 khóa, nên việc phá khóa (thám mã) có thể thực hiện dễ dàng
bằng cách thử kiểm tra từng khóa: k = 1, 2, 3, , 26.


6

2.2 Hệ mã hóa: Thay thế (Hoán vị toàn cục)
2.2.1 Sơ đồ
Đặt P = C = Z
26
. Bản mã y và bản rõ x  Z

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

K
L
M
N
O
P
Q
R
S
T
U
V
X
Y

Y
X
V
U
T
S
R
Q
P
O
N
M
L
K
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.



7

2.3 Hệ mã hóa: AFFINE
2.3.1 Sơ đồ
Đặt P = C = Z
26
. Bản mã y và bản rõ x  Z
26
.
Tập khóa K = {(a, b), với a, b Z
26
, UCLN(a, 26) = 1}
Với khóa k = (a, b) K, ta định nghĩa:
Phép Mã hóa y = e
k
(x) = (a x + b) mod 26
Phép Giải mã x = d
k
(y) = a
-1
( y - b) mod 26

Ví dụ
* Bản rõ chữ: CHIEUNAYOVUONHOA
* Chọn khóa k = (a, b) = (3, 6).
* Bản rõ số: x = 2 7 8 4 20 13 0 24 14 21 20 14 13 7 14 0

Mã hóa theo công thức y = e
k
(x) = (a x + b) mod 26 = (3 x + 6) mod 26

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


8

2.4 Hệ mã hóa : VIGENERE
2.4.1 Sơ đồ
Đặt P = C = K = (Z
26
)
m
, m là số nguyên dương, các phép toán thực hiện trong Z
26
.
Bản mã Y và bản rõ X  (Z
26
)
m

. Khoá k = (k
1
, k
2
, …., k
m
) gồm m phần tử.
Mã hóa Y =(y
1
, y
2
, …, y
m
)= e

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

1
, y
2
, …, y
m
)=(y
1
- k
1
, y
2
- k
2
, …, y
m
– k
m
) mod 26.
Ví dụ
* Bản rõ chữ: THISISACRYPTOSYSTEM
Chọn khoá: k = “KWORD” = {10, 22, 14, 17, 3} với độ dài m=5.
* Bản rõ số: SX = 19 7 8 18 8 18 0 2 17 24 15 19 14 18 24 18 19 4 12
* Mã hóa:
Chia bản rõ SX thành các đoạn, mỗi đoạn gồm m =5 số.
Với mỗi đoạn, áp dụng công thức mã hóa, ta nhận được bản mã số.
19
10
7
22
8

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

14
14
18
17
24
3
18
10
19
22
4
14
12
17
25
15
2
9
1
2
15
18
3

* Bản mã số: SY = 3 3 22 9 11 2 22 16 8 1 25 15 2 9 1 2 15 18 3
* Bản mã chữ: DDWJL CWQIB ZPCJB CPSD
2.4.2 Độ an toàn
Độ an toàn của mã VIGENERE: Tương đối cao.
Nếu khoá gồm m ký tự khác nhau, mỗi ký tự có thể được ánh xạ vào 1 trong m
ký tự có thể, do đó hệ mật này được gọi là hệ thay thế đa biểu.

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

2
, …., k
m
) gồm m phần tử, ta định nghĩa:
* Mã hóa Y = (y
1
, y
2
, …, y
m
) = e
k
(x
1
, x
2
, …, x
m
) = (x
k(1)
, x
k(2)
, … , x
k(m)
)

* Giải mã X = (x
1
, x
2

, …, 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

, trong đó m = 6.
Chọn khoá k là một hoán vị  của (1, 2, 3, 4, 5, 6):
1
2
3
4
5
6
3
5
1
6
4
2
Hoán vị ngược là 
-1
là :
1
2
3
4
5
6
3
6
1
5
2
4
* Mã hóa: Tách bản rõ thành từng nhóm 6 kí tự:

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


Z
26
m*m
/ (det (K), 26) = 1}. (K phải có K
-1
).
Mỗi khóa K là một “Chùm chìa khóa” (một Ma trận “Các chìa khóa” ).
Với mỗi K

K
, định nghĩa:
* Hàm lập mã: Y = (y
1
, y
2
, …, y
m
) = e
k
(x
1
, x
2
, …, x
m
) = (x
1
, x
2
, …, x

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 =









73
811
, bảo đảm UCLN (det (K), 26) = 1, tính K
-1
=
23 11
* Bản rõ số: 19 20 | 3 14
x
1
x
2
|

x
1
x
2

Với mỗi bộ rõ số (x
1
, x
2
), theo hàm lập mã (y

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


Chương 3 Chương trình thực nghiệm
Để mô phỏng quá trình mã hóa, giải mã của một số hệ mã hóa khóa công khai như
dịch chuyển, hoán vị, affine và vigenere, chương trình demo được xây dựng với ngôn
ngữ C++ với giao diện QT trên môi trường Window.
3.1 Giới thiệu chương trình
Chương trình mô phỏng quá trình mã hóa và giải mã các file text của 4 hệ mã
hóa: Dịch chuyển, Thay thế, Affine và Vigenere qua giao diện với 4 tab, mỗi tab
là mô phỏng một hệ mã hóa.

3.2 Cài đặt và hướng dẫn chạy chương trình
Hướng dẫn cài đặt và sử dụng chương trình được mô tả trong file Hướng dẫn cài
đặt và chạy chương trình.pdf.

×