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

Nghiên cứu lược đồ chia sẻ bí mật và ứng dụng của chúng vào việc thi tuyển sinh đại học

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 (1.37 MB, 81 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ





NGUYỄN BÁ THÁI








NGHIÊN CỨU LƯỢC ĐỒ CHIA SẺ BÍ MẬT VÀ ỨNG
DỤNG CỦA CHÚNG VÀO VIỆC THI TUYỂN SINH ĐẠI HỌC







LUẬN VĂN THẠC SỸ













Hà Nội - 2011



ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ




NGUYỄN BÁ THÁI





NGHIÊN CỨU LƢỢC ĐỒ CHIA SẺ BÍ MẬT VÀ
ỨNG DỤNG CỦA CHÚNG VÀO VIỆC
THI TUYỂN SINH ĐẠI HỌC


Nghành : Công nghệ Điện tử - Viễn thông
Chuyên nghành : Kỹ thuật Điện tử

Mã số : 60 52 70


LUẬN VĂN THẠC SỸ




NGƢỜI HƢỚNG DẪN KHOA HỌC: TS Hồ Văn Canh






Hà Nội - 2011

- -

2

LỜI CAM ĐOAN
Tôi xin cam đoan: Luận văn “ Nghiên Cứu Lƣợc Đồ Chia Sẻ Bí Mật Và
Ứng Dụng Của Chúng Vào Việc Thi Tuyển Sinh Đại Học” là công trình nghiên
cứu khoa học độc lập của tôi.
Kết quả nghiên cứu đƣợc trình bầy trong luận văn chƣa đƣợc công bố
dƣới bất kỳ hình thức nào.




































Hà nội, ngày 20 tháng 05 năm 2011
Tác giả luận văn




Nguyễn Bá Thái
- -

3

MỤC LỤC
LỜI NÓI ĐẦU 5
CHƢƠNG 1. MẬT MÃ CỔ ĐIỂN 7
1.1 KHÁI NIỆM VÀ ĐỊNH NGHĨA VỀ MẬT MÃ 7
1.1.1 Khái niệm: 7
1.1.2 Định nghĩa 7
1.2 MỘT SỐ MÃ HÓA ĐƠN GIẢN: 9
1.2.1 Mã dịch vòng ( shift cipher) 9
1.2.1.1 Định nghĩa (modulo): 9
1.2.1.2 Định nghĩa mã dịch vòng: 10
1.2.2 Mã thay thế (MTT) 12
1.2.3. Mã Affine 14
1.2.3.1 Định lý (đồng dư thức): 14
1.2.3.2 Định nghĩa (hàm Euler): 14
1.2.3.3 Định nghĩa (phần tử nghich đảo trong phép nhân): 16
1.2.4. Mật mã Hill 19
1.2.4.1 Khái niệm: 19
1.2.4.2 Định nghĩa ( ma trận đơn vị) 20

1.2.4.3 Định nghĩa (Định thức của ma trận): 20
1.2.4.4 Định lý (ma trận ngịch đảo): 20
1.2.4.5 Định nghĩa Mật mã Hill 21
1.2.5. Mã chuyển vị (Transposition): 22
CHƢƠNG 2. CHUẨN MÃ DỮ LIỆU (DES) 24
2.1 MÔ TẢ DES (Data Encryption Standard) 24
2.2 Các bƣớc thực hiện: 25
2.2.1 Cách tính biến x0 25
2.2.2 Cách tính LiRi: 26
2. 2.2.1. Các biến trong hàm f: 26
2.2.2.2 Cách tính hàm f: 29
2.2.3 Xác định bản mã y: 35
2.3 Giải mã DES 43
2.3.1 Thuật toán 43
2.3.2 Chứng minh thuật toán 43
2.4 Các vấn xung quanh DES 46
2.4.1 Những ý kiến phản hồi 46
2.4.2 DES trong thực tế 47
2.4.3. Một vài kết luận về mã DES 48
CHƢƠNG 3. CÁC SƠ ĐỒ CHIA SẺ BÍ MẬT 49
3.1 Khái niệm về chia sẻ bí mật: 49
3.2 Sơ đồ chia sẻ bí mật 50
3.2.1 Khái niệm “Sơ đồ chia sẻ bí mật”: 50
3.2.2 Định nghĩa: 50
3.3 Cấu trúc truy nhập và sơ đồ chia sẻ bí mật 55
3.3.1 Định nghĩa sơ đồ chia sẻ bí mật hoàn thiện 55
- -

4


3.3.2 Định nghĩa tập hợp thức” tối thiểu 56
3.4 Mạch đơn điệu: 56
3.4.1 Định nghĩa( mạch đơn điệu): 56
3.4.2 Chia sẻ Khóa bí mật dựa vào “ mạch đơn điệu” 57
CHƢƠNG 4. ỨNG DỤNG THUẬT TOÁN DES VÀ LƢỢC ĐỒ CHIA SẺ BÍ
MẬT VÀO THI TUYỂN SINH 61
4.1 Các ứng dụng: 61
4.2 Quy trình thực hiện giải bài toán: 61
4.2.1 Sơ đồ: 61
4.2.2 Các bƣớc thực hiện: 62
4.2.3. Mô phỏng lƣợc đồ chia sẻ bí mật bằng ngôn ngữ C: 63
4.2.3.1 Chia sẻ khoá bí mật theo giao thức “chia sẻ bí mật” Shamir. 63
4.2.3.2 Khôi phục khoá bí mật bằng phương pháp giải hệ phương trình
tuyến tính 64
4.2.3.3 Khôi phục khoá bí mật bằng phương pháp dùng công thức nội suy
Lagrange 68
4.2.3.4 Chia sẻ khoá bí mật theo phương pháp bằng mạch đơn điệu 69
4.2.3.4 Khôi phục khoá bí mật theo phương pháp mạch đơn điệu 71
4.3 Mã nguồn mở của chƣơng trình 72
KẾT LUẬN 79
TÀI LIỆU THAM KHẢO 80
- -

5


LỜI NÓI ĐẦU
Ngày nay, mạng máy tính ngày càng trở nên phổ biến. Mỗi quốc gia đều có
mạng riêng với rất nhiều mạng mang tính bộ phận. Trên pham vi toàn cầu, ngƣời
ta đã dùng mạng Internet một cách thông dụng. Nhiều dịch vụ điện tử nhƣ: thƣ

điện tử, chuyển tiền, thƣơng mại điện tử, chính phủ điện tử đã đƣợc áp dụng
rộng rãi.

Các ứng dụng trên mạng máy tính ngày càng trở nên phổ biến, thuận lợi và
quan trọng thì yêu cầu về an toàn mạng, về an ninh dữ liệu càng trở nên cấp
bách và cần thiết.

Trên thế giới có rất nhiều quốc gia, nhiều nhà khoa học nghiên cứu về vấn đề
bảo mật, đƣa ra nhiều thuật toán với mục đích thông tin truyền đi không bị lấy
cắp hoặc nếu bị lấy cắp thì cũng không sử dụng đƣợc.Trong đề tài của em đƣa ra
một thuật toán đó là thuật toán DES (Data encryption standar) đây là thuật toán
chuẩn của mỹ, đƣợc mỹ và nhiều nƣớc trên thế giới sử dụng, thuật toán này đã
đƣợc đƣa vào sử dụng nhiều năm nhƣng vẫn giữ đƣợc tính bảo mật của nó. Tuy
nhiên với công nghệ phát triển nhƣ hiện nay thì thuật toán DES trở lên không
đƣợc an toàn tuyệt đối nữa, ngƣời ta đã đƣa ra thuật toán 3DES về nguyên tắc
thuật toán 3DES dựa trên nền tảng của thuật toán DES nhƣng số bít đƣợc mã
hóa tăng lên.

Mã hóa và các lƣợc đồ chia sẻ bí mật có thể đƣợc ứng dung trong rất nhiều lĩnh
vực ví dụ: phát hành thẻ ATM trong ngân hàng, đấu thầu từ xa, trong thi tuyển
sinh, trong lĩnh vực quân sự….Trong đề tài của em đề cập tới một lĩnh vực đó là
ứng dụng trong thi tuyển sinh đại học.

Vấn đề thi tuyển sinh đại học ở nƣớc ta trở thành gánh nặng cho nghành Giáo
Dục và các ban nghành khác liên quan. Nó làm tổn hại về kinh tế và công sức
không chỉ đối các ban nghành tham gia tổ chức kỳ thi mà ngay cả đối với các thí
sinh dự thi, nhƣng đó là điều bắt buộc phải đƣợc tổ chức hàng năm. Do vậy làm
sao để giảm thiểu các khâu trong thi tuyển sinh mà vẫn đảm bảo tính công bằng
và chính xác là điều cần thiết, theo tôi để làm đƣợc điều đó ta nên ứng dụng
công nghệ thông tin vào việc thi tuyển sinh đại học, một trong các ứng dụng đó

là ứng dụng LƢỢC ĐỒ CHIA SẺ BÍ MẬT vì nó đảm bảo đƣợc tính bí mật và
chính xác mà trong thi tuyển sinh hai điều đó là quan trọng nhất.

Phạm vi luận văn đề cập đến vấn đề mật mã, thuật toán DES, lƣợc đồ chia sẻ bí
mật và ứng dụng của chúng trong thi tuyển sinh.

Luận văn gồm 4 chƣơng:
- -

6


Chƣơng 1: Mật mã cổ điển: chƣơng này nói về khái niệm và định nghĩa
một số mật mã cổ điển
Chƣơng 2: Thuật toán DES: chƣơng này nói về mã hóa và giải mã trong
thuật toán DES, các vấn đề xung quanh DES.

Chƣơng 3: Chia sẻ bí mật: Chƣơng này nói về khái niệm chia sẻ bí mật,
phƣơng thức chia sẻ và khôi phục khóa bí mật.
Chƣơng 4: Ứng dụng thuật toán DES và Lƣợc đồ chia sẻ bí mật vào thi
tuyển sinh: chƣơng này nói về phần ứng dụng và mô phỏng lƣợc đồ chia se bí
mật bằng ngôn ngữ C
Để hoàn thành luận văn này, trƣớc hết em xin chân thành cảm ơn TS Hồ
Văn Canh – ngƣời đã trực tiếp hƣớng dẫn, cung cấp tài liệu và đóng góp nhiều ý
kiến cho luận văn. Em cũng xin chân thành cảm ơn các thầy cô giáo, các cán bộ
khoa Điện tử , phòng Sau đại học, Trƣờng Đại học công nghệ - ĐHQG Hà nội
đã tận tình giảng dậy, giúp đỡ em trong suốt khóa học.





























- -

7



CHƢƠNG 1. MẬT MÃ CỔ ĐIỂN
1.1 KHÁI NIỆM VÀ ĐỊNH NGHĨA VỀ MẬT MÃ
1.1.1 Khái niệm:
- Chức năng cơ bản của mật mã là tạo ra khả năng liên lạc trên một kênh
không mật cho hai ngƣời sử dụng (tạm gọi là A và B) sao cho đối phƣơng (C)
không thể hiểu đƣợc thông tin đƣợc truyền đi.
- Kênh liên lạc có thể là một đƣờng dây điện thoại hoặc một mạng máy tính.
Thông tin mà Al muốn gửi cho B bản rõ có thể là một văn bản tiếng Anh, các dữ
liệu bằng số hoặc bất cứ tài liệu nào có cấu trúc tuỳ ý.
- A sẽ mã hoá bản rõ bằng một khóa đã đƣợc xác định trƣớc và gửi bản mã
kết quả trên kênh. C có bản mã thu trộm đƣợc trên kênh song không thể xác
định nội dung của bản rõ, nhƣng B (ngƣời đã biết khoá mã) có thể giải mã và
thu đƣợc bản rõ.
Ta sẽ mô tả hình thức hoá nội dung bằng cách dung khái niệm toán học nhƣ
sau:
1.1.2 Định nghĩa
Một hệ mật là một bộ 5 (
P,C,K,E,D
) thoả mãn các điều kiện sau:
1.
P
là một tập hữu hạn các bản rõ có thể.
2.
C
là một tập hữu hạn các bản mã có thể.
3.
K
(không gian khoá) là tập hữu hạn các khoá có thể.
4. Đối với mỗi k



K
có một quy tắc mã e
k
:
P



C
và một quy tắcv giải
mã tương ứng d
k


D. Mỗi e
k
:
P



C


d
k
:
C




P
là những hàm
sao cho:
d
k
(e
k
(x)) = x với mọi bản rõ x


P.
Trong đó, chúng ta cần lƣu ý tính chất 4: Nội dung của nó là nếu một bản
rõ x đƣợc mã hoá bằng e
k
và bản mã nhận đƣợc sau đó đƣợc giải mã bằng d
k
thì
ta phải thu đƣợc bản rõ ban đầu x.
Giả sử ta có bản rõ cần truyền đi là:
x = x
1
,x
2
,. . .,x
n

- -


8

với số nguyên n  1 nào đó. Ở đây mỗi ký hiệu của mỗi bản rõ x
i



P
, 1  i 
n. Mỗi x
i
sẽ đƣợc mã hoá bằng quy tắc mã e
k
với khoá K xác định trƣớc đó.
Bản mã thu đƣợc là:
y = y
1
,y
2
,. . .,y
n
Trong đó y
k
=e
k
(x
i
) i=1,2,…,n. còn kєK
Khi Bob nhận đƣơc y
1

,y
2
,. . .,y
n
anh ta sẽ giải mã bằng hàm giải mã d
k
và thu
đƣợc bản rõ gốc x
1
,x
2
,. . .,x
n
.
Hình 1.1 là một ví dụ về một kênh liên lạc
`









Rõ ràng là trong trƣờng hợp này hàm mã hoá phải là hàm đơn ánh ( tức là ánh
xạ 1-1), nếu không việc giải mã sẽ không thực hiện đƣợc một cách tƣờng minh.
Ví dụ
y = e
k

(x
1
) = e
k
(x
2
)
trong đó x
1
 x
2
, thì B sẽ không có cách nào để biết liệu bản rõ là x
1
hay x
2 .

Hình 1.1. Kênh liên lạc
C
Bộ giải mã
Bộ mã hoá
B
A
Kênh an toàn
Nguồn khoá
x
k
k
k
y
k

x
- -

9


1.2 MỘT SỐ MÃ HÓA ĐƠN GIẢN:
1.2.1 Mã dịch vòng ( shift cipher)
1.2.1.1 Định nghĩa (modulo): Định nghĩa về đồng dư
Giả sử a và b là các số nguyên và m là một số nguyên dương. Khi đó ta
viết a

b (mod m) nếu a-b chia hết cho m. Mệnh đề a

b (mod m) được gọi là "
a đồng dư với b theo modulo m". Số nguyên m được gọi là mudulus.
Bây giờ ta có thể định nghĩa số học modulo m: Z
m
đƣợc coi là tập hợp
{0,1,. . .,m-1} có trang bị hai phép toán cộng và nhân. Việc cộng và nhân trong
Z
m
đƣợc thực hiện giống nhƣ cộng và nhân các số thực ngoài trừ một điểm là
các kết quả đƣợc rút gọn theo modulo m.
Ví dụ tính 11 13 trong Z
16
. Tƣơng tự nhƣ với các số nguyên ta có 11
13 = 143. Để rút gọn 143 theo modulo 16, ta thực hiện phép chia bình thƣờng:
143 = 8  16 + 15, bởi vậy 143 mod 16 = 15 trong Z
16

.
Các định nghĩa trên phép cộng và phép nhân Z
m
thảo mãn hầu hết các quy
tắc quen thuộc trong số học. Sau đây ta sẽ liệt kê mà không chứng minh các tính
chất này:
1. Phép cộng là đóng, tức với bất kì a,b  Z
m
,a +b  Z
m

2. Phép cộng là giao hoán, tức là với a,b bất kì  Z
m

a+b = b+a
3. Phép cộng là kết hợp, tức là với bất kì a,b,c  Z
m

(a+b)+c = a+(b+c)
4. 0 là phần tử đơn vị của phép cộng, có nghĩa là với a bất kì  Z
m

a+0 = 0+a = a
5. Phép nhân là đóng , tức là với a,b bất kì  Z
m
, ab  Z
m
.
6. Phép nhân là giao hoán , nghĩa là với a,b bất kì  Z
m

, ab = ba
7. Phép nhân là kết hợp, nghĩa là với a,b,c  Z
m
, (ab)c = a(cb)
8. 1 là phần tử đơn vị của phép nhân, tức là với bất kỳ a  Z
m

- -

10
9. a1 = 1a = a Phần tử
nghịch đảo của phép cộng
của phần tử bất kì (a  Z
m
) là m-a, nghĩa là a+(m-a) = (m-a)+a = 0 với
bất kì a  Z
m
.

10. Phép nhân có tính chất phân phối đối với phép cộng, tức là đối với
a,b,c  Z
m
, (a+b)c = (ac)+(bc) và a(b+c) = (ab) + (ac)
Vì phần tử ngƣợc của phép cộng tồn tại trong Z
m
nên cũng có thể trừ các
phần tử trong Z
m
. Ta định nghĩa a-b trong Z
m

là a+m-b mod m. Một cách
tƣơng tự có thể tính số nguyên a-b rồi rút gọn theo modulo m.
Ví dụ : Để tính 11-18 trong Z
31
, ta tính 11+13 mod 31 = 24. Ngƣợc lại, có
thể lấy 11-18 đƣợc -7 rồi sau đó tính -7 mod 31 = 24.
1.2.1.2 Định nghĩa mã dịch vòng:
Mã dịch vòng đƣợc xác định trên Z
26
(do có 26 chữ cái trên bảng chữ cái
tiếng Anh) mặc dù có thể xác định nó trên Z
m
với modulus m tuỳ ý. Dễ dàng
thấy rằng, mã dịch vọng (MDV) sẽ tạo nên một hệ mật nhƣ đã xác định ở trên,
tức là d
K
(e
K
(x)) = x với mọi x Z
26
.

Hình 1.2: Mã dịch vòng
Ta sẽ sử dụng MDV (với modulo 26) để mã hoá 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. Vì phép tƣơng ứng này
còn dùng trong một vài ví dụ nên ta sẽ ghi lại để còn tiện dùng sau này:

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
Giả sử
P = C = K =
Z
26
với 0  k  25 , định nghĩa:
e
K
(x) = x +k mod 26
và d
K
(x) = y -k mod 26
(x,y  Z
26
)

- -

11
13
14
15
16

17
18
19
20
21
22
23
24
25

- -

12
Ví dụ 1.1:
Giả sử khoá cho MDV là K = 11 và bản rõ là:
wewillmeetatmidnight
Trƣớc tiên biến đổi bản rõ thành dãy các số nguyên nhờ dùng phép tƣơng
ứng trên. Ta có:
22 4 22 8 11 11 12 4 4 19
0 19 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
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ã
sau:
HPHTWWXPPELEXTOYTRSE
Để giải bản mã này, trƣớc tiên, Bob sẽ biến đổi bản mã thành dãy các số
nguyên rồi trừ đi cho 11 ( rút gọn theo modulo 26) và cuối cùng biến đổi lại dãy
này thành các ký tự.
Nhận xét rằng, MDV (theo modulo 26) 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 khoá nên dễ dàng thử mọi khoá d
K

có thể cho tới khi nhận đƣợc bản rõ có nghĩa.
1.2.2 Mã thay thế (MTT)
Trên thực tế MTT có thể lấy cả
P

C
đều là bộ chữ cái tiếng anh, gồm
26 chữ cái. Ta dùng Z
26
trong MDV vì các phép mã và giải mã đều là các phép
toán đại số. Tuy nhiên, trong MTT, thích hợp hơn là xem phép mã và giải mã
nhƣ các hoán vị của các kí tự.

Hình 1.3 Mã thay thế
Cho
P
=
C
= Z
26
.
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)

d(y) = 
-1
(y)
trong đó 
-1
là hoán vị ngƣợc của .

- -

13

Sau đây là một ví dụ về phép hoán vị ngẫu nhiên  tạo nên một hàm mã hoá
(cũng nhƣ trƣớc, 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).

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ứ hai 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

N
O
P
Q
R
S
T
U
V
W
X
Y
Z
b

g
f
j
q
N
m
u
s
k
a
c
i

Mỗi khoá của MTT là một phép hoán vị của 26 kí tự. Số các hoán vị này
là 26!, lớn hơn 4 10
26
là một số rất lớn. Bởi vậy, phép tìm khoá 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
MTT có thể dễ dàng bị thám bằng các phƣơng pháp khác.
- -

14
1.2.3. Mã Affine
MDV là một trƣờng hợp đặc biệt của MTT chỉ gồm 26 trong số 26! các
hoán vị có thể của 26 phần tử. Một trƣờng hợp đặc biệt khác của MTT là mã
Affine đƣợc mô tả dƣới đây. trong mã Affine, ta giới hạn chỉ xét các hàm mã có
dạng:
e(x) = ax + b mod 26,
a,b  Z
26

. Các hàm này đƣợc gọi là các hàm Affine (chú ý rằng khi a = 1, ta có
MDV).
Để việc giải mã có thể thực hiện đƣợc, yêu cầu cần thiết là hàm Affine
phải là đơn ánh. Nói cách khác, với bất kỳ y  Z
26
, ta muốn có đồng nhất thức
sau:
ax + b  y (mod 26)
phải có nghiệm x duy nhất. Đồng dƣ thức này tƣơng đƣơng với:
ax  y-b (mod 26)
Vì y thay đổi trên Z
26
nên y-b cũng thay đổi trên Z
26
. Bởi vậy, ta chỉ cần nghiên
cứu phƣơng trình đồng dƣ:
ax  y (mod 26) (y Z
26
).
1.2.3.1 Định lý (đồng dư thức):
Đồng dư thức ax

b mod m chỉ có một nghiệm duy nhất x

Z
m
với mọi b

Z
m

khi và chỉ khi UCLN(a,m) = 1.

Vì 26 = 2 13 nên các giá trị a  Z
26
thoả mãn UCLN(a,26) = 1 là a = 1,
3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23 và 25. Tham số b có thể là một phần tử bất
kỳ trong Z
26
. Nhƣ vậy, mã Affine có 13  25 = 325 (vì k=0 bị loại) khoá có thể
( dĩ nhiên con số này quá nhỏ để bảo đảm an toàn).
Bây giờ ta sẽ xét bài toán chung với modulo m. Ta cần một định nghĩa
khác trong lý thuyết số.
1.2.3.2 Định nghĩa (hàm Euler):
Giả sử a

1 và m

2 là các số nguyên. UCLN(a,m) = 1 thì ta nói rằng a
và m là nguyên tố cùng nhau. Số các số nguyên trong Z
m
nguyên tố cùng nhau
với m thường được ký hiệu là

(m) ( hàm này được gọi là hàm Euler).
- -

15

Một kết quả quan trọng trong lý thuyết số cho ta giá trị của (m) theo các thừa
số trong phép phân tích theo luỹ thừa các số nguyên tố của m. ( Một số nguyên p

1 là số nguyên tố nếu nó không có ƣớc dƣơng nào khác ngoài 1 và p. Mọi số
nguyên m 1 có thể phân tích đƣợc thành tích của các luỹ thừa các số nguyên tố
theo cách duy nhất. Ví dụ 60 = 2
3
 3  5 và 98 = 2  7
2
).
Ta sẽ ghi lại công thức cho (m) trong định lí sau:
Định lý
Giả sử m =


n
i
e
i
i
p
1

Trong đó các số nguyên tố p
i
khác nhau và e
i
>0 , 1

i

n. Khi đó


)(m

=


n
i
e
i
i
p
1
(
-
)
1
i
e
i
p

Định lý này cho thấy rằng, số khoá trong mã Affine trên Z
m
bằng m x
(m), trong đó (m) đƣợc cho theo công thức trên. ( Số các phép chọn của b là
m và số các phép chọn của a là (m) với hàm mã hoá là e(x) = ax + b).
Ví dụ, khi m = 60, m=2×2×3×5=2
2
×3
1

×5
1
=>(60) = (2
2
-2
1
)( 3
1
-3
0
)(5
1
-5
0
) = 16
và số các khoá trong mã Affine là:
16 x 60=960.
Một vài tính chất đáng lưu ý của hàm Erler().
(a) Nếu p là số nguyên tố thì
(p)=p-1.
(b) Nếu p,q là hai số nguyên tố khác nhau.Khi đó,
(p.q)= (p). (q)=(p-1)(q-1)
(c) Giả sử m,n là hai số nguyên dƣơng tùy ý sao cho UCLN(m,n)=1 (tức m,n
nguyên tố cùng nhau).Khi đó ,
(m,n)= (m). (n)
Ví dụ m=15, n=16 Khi đó
(m,n)= (15,16)= (15). (16)=8.8=64.
(d) Nếu m=p
k
với p là số nguyên tố ,thì

(m)= (p
k
)=p
k-1
(p-1).
- -

16
Từ đó suy ra rằng (2)=1, (1)=0
1.2.3.3 Định nghĩa (phần tử nghich đảo trong phép nhân):
Giả sử a

Z
m
. Phần tử nghịch đảo (theo phép nhân) của a là phần tử a
-1


Z
m
sao cho aa
-1


a
-1
a

1 (mod m).
Bằng các lý luận tƣơng tự nhƣ trên, có thể chứng tỏ rằng a có nghịch đảo

theo modulo m khi và chỉ khi UCLN(a,m) =1, và nếu nghịch đảo này tồn tại thì
nó phải là duy nhất. Ta cũng thấy rằng, nếu b = a
-1
thì a = b
-1
. Nếu p là số
nguyên tố thì mọi phần tử khác không của Z
P
đều có nghịch đảo. Một vành trong
đó mọi phần tử khác 0 đều có nghịch đảo đƣợc gọi là một trƣờng.
Bằng phƣơng pháp thử và sai ta có thể tìm đƣợc các nghịch đảo của các
phần tử nguyên tố cùng nhau với 26: 1
-1
= 1, 3
-1
= 9, 5
-1
= 21, 7
-1
= 15, 11
-1
=
19, 17
-1
=23, 25
-1
= 25. (Có thể dễ dàng kiểm chứng lại điều này, ví dụ: 7  15 =
105  1 mod 26, bởi vậy 7
-1
= 15).

Xét phƣơng trình đồng dƣ y  ax+b (mod 26). Phƣơng trình này tƣơng
đƣơng với
ax  y-b ( mod 26)
Vì UCLN(a,26) =1 nên a có nghịch đảo theo modulo 26. Nhân cả hai vế của
đồng dƣ thức với a
-1
ta có:
a
-1
(ax)  a
-1
(y-b) (mod 26)
Áp dụng tính kết hợp của phép nhân modulo:
a
-1
(ax)  (a
-1
a)x  1x  x.
Kết quả là x  a
-1
(y-b) (mod 26). Đây là một công thức tƣờng minh cho x.
Nhƣ vậy hàm giải mã là:
d(y) = a
-1
(y-b) mod 26
Thuật toán Euclide mở rộng :
Bổ đề : Nếu UCLN(m,n)=k thì tồn tại 2 số nguyên x,y sao cho mx+ny=k.
Thuật toán Euclide mở rộng cho phép tìm đƣợc cả 3 số x,y,k khi điều kiện
của bồ đề đƣợc thỏa mãn.
Sau đây là nội dung của thuật toán Euclide mở rộng:

Cho m,n là hai số nguyên dƣơng
Ta hãy tìm x,y,k sao cho mx + ny =k.
- -

17

Đầu vào (input) : m,n (giả sử m>n).
đầu ra: x,y,k.
cho (a
1
,a
2
,a
3
),( b
1
,b
2
,b
3
),(c
1
,c
2
,c
3
) là 3vectơ
Bƣớc 1: (a
1
,a

2
,a
3
)←(1,0,m), (b
1
,b
2
,b
3
)←(0,1,n)
Bƣớc 2: Nếu b
3
=0 thì thuật toán dừng và a
1
,a
2
,a
3
là đáp số của bài toán
(tức là x=a
1
,y=a
2
,k=a
3
).
Bƣớc 3: Đặt q=[a
3
/b
3

]; (là phần nguyên của a
3
/b
3
, tức q là số nguyên lớn
nhất nhƣng không vƣợt quá a
3
/b
3
) và (c
1
,c
2
,c
3
)← (a
1
,a
2
,a
3
)-q( b
1
,b
2
,b
3
);
(a
1

,a
2
,a
3
)← ( b
1
,b
2
,b
3
); ( b
1
,b
2
,b
3
)← (c
1
,c
2
,c
3
) và trở về bƣớc 2. Thuật toán dừng
sẽ cho :
out put:
Ví dụ1 cho m=42, n=4
Ta có bảng quá trình tính toán sau đây:





Vậy x=1, y=-10 và k=2.
Ví dụ 2 : m=95, n=8.
Quá trình tính toán đƣợc cho trong bảng sau:

Vậy x=-1, y=12, k=1.

q a
1
a
2
a
3
b
1
b
2
b
3
c
1
c
2
c
3

11 1 0 95 0 1 8 1 -11 7
1 0 1 8 1 -11 7 -1 12 1
7 1 -11 7 -1 12 1 8 -95 0
-1 12 1 8 -95 0





a
1
=x, a
2
=y, a
3
=k


q a
1
a
2
a
3
b
1
b
2
b
3
c
1
c
2
c

3

10 1 0 42 0 1 4 1 -10 2
2 0 1 4 1 -10 2 -2 21 0
1 -10 2 -2 21 0
- -

18

Chú ý : số trong ô a
2
chính là nghịch đảo của 8mod95 (tức số y là nghịch
đảo của n theo module m) (Trong trƣờng hợp k=1).
Thật vậy ta có 12.8≡1mod95 Do đó từ định nghĩa 12 là nghịch đảo của 8
theo module95 (vì UCLN(8,95)=1 nên tồn tại nghịch đảo của 8 theo mod95).
Hình 1.4 cho mô tả đầy đủ về mã Affine.

Hình 1.4 Mật mã Affine
Ví dụ 1.3
Giả sử K = (7,3). Nhƣ đã nêu ở trên, 7
-1
mod 26 = 15. Hàm mã hoá là
e
K
(x) = 7x+3
Và hàm giải mã tƣơng ứng là:
d
K
(x) = 15(y-3) = 15y -19
Ở đây, tất cả các phép toán đều thực hiện trên Z

26
. Ta sẽ kiểm tra liệu
d
K
(e
K
(x)) = x với mọi x  Z
26
không?. Dùng các tính toán trên Z
26
, ta có
d
K
(e
K
(x)) =d
K
(7x+3)
=15(7x+3)-19
= x +45 -19
= x.
Để minh hoạ, ta hãy mã hoá bản rõ "hot". Trƣớc tiên biến đổi các chữ h,
o, t thành các thặng du theo modulo 26. Ta đƣợc các số tƣơng ứng là 7, 14 và
19. Bây giờ sẽ mã hoá:
7  7 +3 mod 26 = 52 mod 26 = 0
7  14 + 3 mod 26 = 101 mod 26 =23
Cho
P = C
= Z
26

và giả sử

P
= { (a,b)  Z
26
 Z
26
: UCLN(a,26) =1 }
Với K = (a,b) 
K
, ta định nghĩa:
e
K
(x) = ax +b mod 26

d
K
(y) = a
-1
(y-b) mod 26,
x,y  Z
26

- -

19

7  19 +3 mod 26 = 136 mod 26 = 6
Bởi vậy 3 ký hiệu của bản mã là 0, 23 và 6 tƣơng ứng với xâu ký tự AXG.
1.2.4. Mật mã Hill

1.2.4.1 Khái niệm:
Giả sử m là một số nguyên dƣơng, đặt
P = C =
(Z
26
)
m
. Ý tƣởng ở đây là lấy m
tổ hợp tuyến tính của m ký tự trong một phần tử của bản rõ để tạo ra m ký tự ở
một phần tử của bản mã.
Ví dụ nếu m = 2 ta có thể viết một phần tử của bản rõ là x = (x
1
,x
2
) và một
phần tử của bản mã là y = (y
1
,y
2
). Ở đây, y
1
cũng nhƣ y
2
đều là một tổ hợp tuyến
tính của x
1
và x
2
. Chẳng hạn, có thể lấy
y

1
= 11x
1
+ 3x
2

y
2
= 8x
1
+ 7x
2

Tất nhiên có thể viết gọn hơn theo ký hiệu ma trận nhƣ sau



Nói chung, có thể lấy một ma trận K kích thƣớc m  m làm khoá. Nếu một phần
tử ở hàng i và cột j của K là k
i,,j
thì có thể viết K = (k
i,,j
), với x = (x
1
, x
2
, . . . ,x
m
)


P
và K 
K
, ta tính y = e
K
(x) = (y
1
, y
2
, . . . ,y
m
) nhƣ sau:
Nói một cách khác y = xK.
(y
1
y
2
) = (x
1
x
2
)
11 8

3 7

k
1,1
k
1,2

k
1,m

k
2,1
k
2,2
k
2,m

. .
k
m,1
k
m,2
k
m,m


(y
1
,. . .,y
m
)=(x
1
, . ….
,
x
m
)

- -

20

1.2.4.2 Định nghĩa ( ma trận đơn vị)
Ma trận đơn vị m  m (ký hiệu là I
m
) là ma trận cấp m  m có các số 1 nằm ở
đƣờng chéo chính và các số 0 ở vị trí còn lại. Nhƣ vậy ma trận đơn vị 2  2 là:
I
m
đƣợc gọi là ma trận đơn vị vì AI
m
= A với mọi ma trận đơn vị là ma trận
vuông cấp m  m tập ma trận vuông cấp m × m nghịch đảo dùng ma trận T
m × m

làm thành 1 nhóm nhân. Ma trận nghịch đảo của ma trận A cấp m  m ( nếu tồn
tại) là ma trận A
-1
sao cho AA
-1
= A
-1
A = I
m
. Không phải mọi ma trận đều có
nghịch đảo, nhƣng nếu tồn tại thì nó duy nhất.
Với các định nghĩa trên, có thể dễ dàng xây dựng công thức giải mã đã
nêu: Vì y = xK, ta có thể nhân cả hai vế của đẳng thức với K

-1
và nhận đƣợc:
yK
-1
= (xK)K
-1
= x(KK
-1
) = xI
m
= x
1.2.4.3 Định nghĩa (Định thức của ma trận):
Định thức của ma trận A = (a
,i j
) cấp 2

2 là giá trị
det A = a
1,1
a
2,2
- a
1,2
a
2,1
Một ma trận có nghịch đảo khi và chỉ khi định thức định thức của nó khác 0.
Tuy nhiên trên Z
26
một ma trận K có nghịch đảo khi và chỉ khi UCLN (det
K,26)= 1

1.2.4.4 Định lý (ma trận ngịch đảo):
Giả sử A = (a
i j
) là một ma trận cấp 2

2 trên Z
26
sao cho det A = a
1,1
a
2,2

–a
1,2
.a
2,1
#0.
Khi đó:
Ví dụ: Có 1 ma trận K

I
2
=
1 0
0 1

A
-1
= (det A)
-1


a
2,2
-a
1,2

-a
2,1
a
1,1


K =
11 8


3 7
- -

21

det K = 11x7 – 8x3 mod 26 = 77 – 24 mod 26 = 53 mod 26 = 1
Vậy ma trận K có nghịch đảo.
1.2.4.5 Định nghĩa Mật mã Hill

Hình 1.5 Mật mã HILL
Vi dụ 1.5
Từ các tính toán trên ta có:
Giả sử cần mã hoá bản rõ "July". Ta có hai phần tử của bản rõ để mã hoá: (9,20)
(ứng với Ju) và (11,24) (ứng với ly). Ta tính nhƣ sau:




Bởi vậy bản mã của July là DELW. Để giải mã Bob sẽ tính :
Nhƣ vậy Bob đã nhận đƣợc bản đúng.
Giả sử khóa K =
11 8
3 7

K
-1
=
7 18
23 11

(9,20)
11 8
3 7
= (99+60, 72+140) = (3,4)

(11,24)
11 8
3 7
= (121+72, 88+168) = (11,22)

(11,22)
7 18
23 11
= (11,24)
Cho m là một số nguyên dƣơng có định. Cho

P = C =
(Z
26
)
m
và cho

K
= { các ma trận khả nghịch cấp m  m trên Z
26
}
Với một khoá K 
K
ta xác định
e
K
(x) = xK
và d
K
(y) = yK
-1

Tất cả các phép toán đƣợc thực hiện trong Z
26


- -

22


1.2.5. Mã chuyển vị (Transposition):
Ý tƣởng của MHV là giữ các ký tự của bản rõ không thay đổi nhƣng sẽ
thay đổi vị trí của chúng bằng cách sắp xếp lại các ký tự này. MHV (còn đƣợc
gọi là mã chuyển vị) đã đƣợc dùng từ hàng trăm năm nay.
Định nghĩa Mã hoán vị

Ví dụ 1.6
Giả sử m = 6 và khoá là phép hoán vị  =(1 2 3 4 5 6 )
Khi đó phép hoán vị ngƣợc 
-1
sẽ là: 
-1
=(1 2 3 4 5 6 )
Bây giờ giả sử có bản rõ
Shesellsseashellsbytheseashore
Trƣớc tiên ta nhóm bản rõ thành các nhóm 6 ký tự:
shesel | lsseas | hellsb | ythese | ashore
Bây giờ mỗi nhóm 6 chữ cái đƣợc sắp xếp lại theo phép hoán vị , ta có:
EESLSH | SALSES | LSHBLE | HSYEET | HRAEOS
Nhƣ vậy bản mã là
EESLSH SALSES LSHBLE HSYEET HRAEOS
Để giải bản mã này ta dùng phép hoán vị 
-1
.
Thực tế mã hoán vị là trƣờng hợp đặc biệt của mật mã Hill. Khi cho phép


(3,4)
7 18
23 11

= (9,20)
Cho m là một số nguyên dƣơng xác định nào đó. Cho
P = C =
(Z
26
)
m

cho
K
gồm tất cả các hoán vị của {1, . . ., m}. Đối một khoá  ( tức là một
hoán vị) ta xác định
e

(x
1
, . . . , x
m
) = (x
(1)
, . . . , x
(m)
)
và d

(x
1
, . . . , x
m
) = (y


-1
(1)
, . . . , y

-1
(m)
)
trong đó 
-1
là hoán vị ngƣợc của 
- -

23

hoán vị  của tập {1, . . . ,m}, ta có thể xác định một ma trận hoán vị m  m
thích hợp K

= { k
i,j
} theo công thức:
( ma trận hoán vị là ma trận trong đó mỗi hàng và mỗi cột chỉ có một số "1", còn
tất cả các giá trị khác đều là số "0". Ta có thể thu đƣợc một ma trận hoán vị từ
ma trận đơn vị bằng cách hoán vị các hàng hoặc cột).
Dễ dàng thấy rằng, phép mã Hill dùng ma trận K

trên thực tế tƣơng
đƣơng với phép mã hoán vị dùng hoán vị . Hơn nữa K
-1


= K

-1
tức ma trận
nghịch đảo của K

là ma trận hoán vị xác định theo hoán vị 
-1
. Nhƣ vậy, phép
giải mã Hill tƣơng đƣơng với phép giải mã hoán vị.
Đối với hoán vị  đƣợc dùng trong ví dụ trên, các ma trận hoán vị kết hợp
là:



k
i,j
=
1 nếu j = (i)

0 với các trƣờng hợp còn lại



K

=
0 0 1 0 0 0
0 0 0 0 0 1
1 0 0 0 0 0

0 0 0 0 1 0
0 1 0 0 0 0
0 0 0 1 0 1



và K
-1

=
0 0 1 0 0 0
0 0 0 0 1 0
1 0 0 0 0 0
0 0 0 0 0 1
0 0 0 1 0 0
0 1 0 0 0 0
- -

24


CHƢƠNG 2. CHUẨN MÃ DỮ LIỆU (DES)

Các hệ mật mã truyền thống đƣợc trình bày ở chƣơng 1 có một số ƣu
điểm là mã hóa và giải mã bằng thủ công đƣợc thực hiện rất dễ dàng , việc trao
đổi khóa mã cũng đơn giản bằng thủ công hoặc bằng qui ƣớc. Song với lƣợng
thông tin quá phong phú nhƣ hiện nay và với mạng truyền thông nhƣ hiện nay
thì mật mã thủ công vừa không đảm bảo bí mật lại việc mã hóa quá chậm khó tự
động hóa mã và giải mã .Mặt khác các thuật toán mã hóa thủ công đòi hỏi phải
tuyệt đối dữ bí mật…Nhƣ vậy mật mã thủ công đòi hỏi bảo mật cả thuật toán mã

hoa svaf cả khóa mã.
Sau nhƣng năm 70 của thế kỷ trƣớc, các nhà toán học đã nghiên cứu và
tạo ra nhiều phƣơng thức mật mã với tốc độ mã hóa rất nhanh (hàng chục thậm
chí hàng trăm kilo Byte trong một giây) và ngƣời ta chỉ cần giữ bí mật khóa mã
và mã hóa đƣợc mọi dữ liệu tùy ý. Đó là một bƣớc tiến vĩ đại của kỹ thuật mật
mã .Trong đó mã DES (Data Encryption Standard) là một điển hình của bƣớc
tiến này. Chƣơng này, em muốn mô phỏng mã hóa và giải mã của thuật toán
DES.
2.1 MÔ TẢ DES (Data Encryption Standard)
DES mã hoá một xâu bít x:
Bản rõ x độ dài 64 bit.
khoá k độ dài 56 bít.
Bản mã y nhận đƣợc cũng là một xâu bít có độ dài 64 bit.
Thuật toán tiến hành theo 3 giai đoạn:
1.Với bản rõ cho trƣớc x, một xâu bít x
0
sẽ đƣợc xây dựng bằng cách hoán
vị các bít của x theo phép hoán vị cố định ban đầu IP.
Ta viết:x
0
= IP(X) = L
0
R
0
,
trong đó L
0
gồm 32 bít đầu và R
0
là 32 bít cuối.

2. Sau đó tính toán 16 lần lặp theo một hàm xác định. Ta sẽ tính L
i
R
i
, 1  i
16 theo quy tắc sau:
L
i
= R
i-1

R
i
= L
i-1
 f(R
i-1
,K
i
)
trong đó

×