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

Nghiên cứu hệ mật POHLIG HELIMAN trên sơ đồ FEISTEL

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.39 MB, 72 trang )

NGUYỄN NGỌC TÙNG

BỘ GIÁO DỤC VÀ ĐÀO TẠO
VIỆN ĐẠI HỌC MỞ HÀ NỘI

LUẬN VĂN THẠC SĨ
CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
CÔNG NGHỆ THÔNG TIN

NGHIÊN CỨU HỆ MẬT POHLIG HELLMAN TRÊN SƠ
ĐỒ FEISTEL

NGUYỄN NGỌC TÙNG

2013 - 2015

Hà Nội - 2015


BỘ GIÁO DỤC VÀ ĐÀO TẠO
VIỆN ĐẠI HỌC MỞ HÀ NỘI

LUẬN VĂN THẠC SĨ
NGHIÊN CỨU HỆ MẬT POHLIG-HELLMAN TRÊN SƠ ĐỒ
FEISTEL

NGUYỄN NGỌC TÙNG

CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
MÃ SỐ: 60480201


HƯỚNG DẪN KHOA HỌC: GS.TS NGUYỄN BÌNH

Hà Nội - 2015


LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu của riêng tôi.
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai
công bố trong bất kỳ công trình nào khác.
Tác giả luận văn

Nguyễn Ngọc Tùng

i


LỜI CẢM ƠN
Với lòng biết ơn sâu sắc nhất, Tôi xin gửi đến các Thầy/Cô ở Khoa Sau Đại
học - Viện Đại học Mở Hà Nội, các Thầy/Cô trực tiếp giảng bài cho khóa Cao học
Công Nghệ Thông Tin, thầy giáo hướng dẫn - GS. TS. Nguyễn Bình - đã tận tâm
hướng dẫn trong suốt thời gian qua. Một lần nữa, Tôi xin chân thành cảm ơn Thầy.
Xin kính chúc quý Thầy/Cô trong Khoa Sau Đại học, các Thầy cô lãnh đạo
của Viện Đại học Mở Hà Nội dồi dào sức khỏe, nhiều niềm tin để tiếp tục thực hiện
sứ mệnh cao đẹp của mình là truyền đạt kiến thức cho thế hệ mai sau!
Xin gửi lời tri ân đến gia đình, bạn bè và tất cả những người thân yêu đã luôn
động viên, khích lệ, giúp đỡ tôi trong quá trình học tập và nghiên cứu!
Học viên thực hiện

Nguyễn Ngọc Tùng


ii


MỤC LỤC
LỜI CAM ĐOAN.....................................................................................................i
LỜI CẢM ƠN .........................................................................................................ii
MỤC LỤC ............................................................................................................ iii
DANH MỤC CÁC BẢNG BIỂU ............................................................................ v
DANH MỤC CÁC HÌNH ...................................................................................... vi
MỞ ĐẦU ................................................................................................................ 1
CHƯƠNG 1: TỔNG QUAN VỀ MẬT MÃ KHÓA BÍ MẬT .................................. 3
1.1. Giới thiệu ......................................................................................................... 3
1.2. Sơ đồ hệ mật khoá bí mật.................................................................................. 4
1.3. Mật mã thay thế ................................................................................................ 5
1.3.1. Mật mã dịch vòng (MDV) ............................................................................. 5
1.3.2. Mã thay thế (MTT) ........................................................................................ 6
1.3.3. Mật mã Vigenère ........................................................................................... 7
1.3.4. Mã Affine ...................................................................................................... 8
1.4. Mật mã hoán vị (MHV) .................................................................................. 13
1.5. Sơ đồ Feistel ................................................................................................... 14
1.5.1. Sơ đồ Feistel ................................................................................................ 14
1.5.2. Giải mã thuật toán Feistel ............................................................................ 17
1.6. DES ................................................................................................................ 20
1.6.1. Mở đầu ........................................................................................................ 20
1.6.2. Mô tả DES ................................................................................................... 20
1.6.3. Một số ý kiến thảo luận về DES ................................................................... 29
1.6.4. DES trong thực tế ........................................................................................ 31
1.6.5. Các chế độ hoạt động của DES .................................................................... 32
KẾT LUẬN CHƯƠNG 1 ...................................................................................... 35
CHƯƠNG 2: HỆ MẬT POHLIG-HELLMAN TRÊN SƠ ĐỒ FEISTEL............... 36

2.1. Hệ mật Pohlig-Hellman .................................................................................. 36
2.2. Hệ mật Pohlig-Hellman trên sơ đồ Feistel....................................................... 36
2.2.1. Hàm mã hóa f của hệ mật Pohlig-Hellman ................................................... 36
iii


2.2.2. Thuật toán Eulide mở rộng .......................................................................... 37
2.2.3. Mã hóa và giải mã ....................................................................................... 39
2.2.4. Ví dụ............................................................................................................ 40
KẾT LUẬN CHƯƠNG 2 ...................................................................................... 48
CHƯƠNG 3: VÍ DỤ ỨNG DỤNG VÀ ĐÁNH GIÁ ............................................. 49
3.1. Ví dụ ứng dụng ............................................................................................... 49
3.2. Chương trình minh họa ................................................................................... 54
3.3. Đánh giá ......................................................................................................... 59
KẾT LUẬN CHƯƠNG 3 ...................................................................................... 60
KẾT LUẬN ........................................................................................................... 61
TÀI LIỆU THAM KHẢO ..................................................................................... 62
PHỤ LỤC ............................................................................................................. 63

iv


DANH MỤC CÁC BẢNG BIỂU
Bảng 1. 1. Bảng IP của DES .................................................................................. 23
Bảng 1. 2. Bảng IP-1 của DES ................................................................................ 23
Bảng 1. 3. Hàm mở rộng E của DES...................................................................... 23
Bảng 1. 4. Phép hoàn vị P trong hàm f của DES .................................................... 25
Bảng 1. 5. Hoán vị PC-1 ........................................................................................ 26
Bảng 1. 6. Hoán vị PC-2 ........................................................................................ 26
Bảng 2. 1. Bảng hoán vị khóa PK .......................................................................... 49


v


DANH MỤC CÁC HÌNH
Hình 1. 1. Sơ đồ hệ mật khóa bí mật ........................................................................ 4
Hình 1. 2. Mã Affine ............................................................................................. 12
Hình 1. 3. Mạng Feistel cổ điển ............................................................................. 15
Hình 1. 4. Mã hóa và giải mã Feistel ..................................................................... 18
Hình 1. 5. Một vòng của DES ................................................................................ 21
Hình 1. 6. Hàm f của DES ..................................................................................... 22
Hình 1. 7. Tính bảng khóa DES ............................................................................. 26
Hình 1. 8. Chế độ CBC .......................................................................................... 32
Hình 1. 9. Chế độ CFB .......................................................................................... 33

vi


vii


MỞ ĐẦU
1. Tính cấp thiết của đề tài
Ngày nay, việc ứng dụng công nghệ thông tin vào mọi mặt của đời sống đã
đem lại kết quả to lớn cho xã hội, đặc biệt là những ứng dụng của Internet trong thời
đại thông tin hiện nay. Nhưng do thông tin được trao đổi, chia sẻ trên phạm vi toàn
cầu nên bảo mật thông tin luôn là vấn đề quan trọng hàng đầu.
Bảo mật thông tin là duy trì tính bảo mật, tính toàn vẹn và tính sẵn sàng của
thông tin. Bảo mật nghĩa là đảm bảo thông tin chỉ được tiếp cận bởi những người
được cấp quyền tương ứng. Tính toàn vẹn là bảo vệ sự chính xác, hoàn chỉnh của

thông tin và thông tin chỉ được thay đổi bởi những người được cấp quyền. Tính sẵn
sàng của thông tin là những người được quyền sử dụng có thể truy xuất thông tin
khi họ cần. Vấn đề bảo mật đang được nhiều người tập trung nghiên cứu và tìm mọi
giải pháp để đảm bảo an toàn, an ninh cho hệ thống phần mềm, đặc biệt là các hệ
thống thông tin trên mạng.
Trong thời đại công nghệ thông tin phát triển như hiện nay, bảo mật thông tin
không còn là chuyện nhỏ nữa khi mà những mối đe dọa việc bảo mật ngày càng
nhiều và phức tạp. Chính vì vậy có rất nhiều hệ mật mã được nghiên cứu nhằm
chống lại những mối đe dọa trên.
Nhằm tìm hiểu một trong những phương pháp bảo mật thông tin là hệ mật
Pohlig Hellman nên em chọn đề tài: “Nghiên cứu hệ mật Pohlig-Hellman trên sơ đồ
Feistel” làm đề tài luận văn thạc sĩ của mình.

2. Mục tiêu nghiên cứu:
Nghiên cứu hệ mật Pohlig-Hellman, sơ đồ Feistel. Từ đó sử dụng hệ mật
Pohlig-Hellman trên sơ đồ Feistel.

3. Đối tượng và phạm vi nghiên cứu:
Đối tượng nghiên cứu: Nghiên cứu về hệ mật khóa bí mật, hệ mật PohligHellman, và sơ đồ Feistel.

Phạm vi nghiên cứu: Sử dụng hệ mật Pohlig-Hellman trên sơ đồ Feistel để xây
dựng hệ mật khóa bí mật.
1


4. Phương pháp nghiên cứu
Sử dụng phương pháp nghiên cứu tổng hợp và phân tích, trong đó tổng hợp
các nghiên cứu hệ mật trên sơ đồ Feistel. Trên cơ sở đó xây dựng hệ mật PohligHellman trên sơ đồ Feistel.

5. Kết cấu của luận văn

Tên đề tài: Nghiên cứu hệ mật Pohlig-Hellman trên sơ đồ Feistel
Kết cấu: Ngoài phần mở đầu, kết luận, phụ lục và danh mục tài liệu tham
khảo, luận văn gồm ba chương:
Chương I: Tổng quan về mật mã khóa bí mật
Chương II: Hệ mật Pohlig-Hellman trên sơ đồ Feistel
Chương III: Ví dụ ứng dụng và đánh giá

2


CHƯƠNG 1:
TỔNG QUAN VỀ MẬT MÃ KHÓA BÍ MẬT
1.1. Giới thiệu
Khoa học về mật mã (cryptology) bao gồm [4]:
- Mật mã học (cryptography).
- Phân tích mật mã (cryptanalysis).
Mật mã học là khoa học nghiên cứu cách ghi bí mật thông tin nhằm biến bản
tin rõ thành các bản mã.
Phân tích mã là khoa học nghiên cứu cách phá các hệ mật nhằm phục hồi bản
rõ ban đầu từ bản mã. Việc tìm hiểu các thông tin về khóa và các phương pháp biến
đổi thông tin cũng là một nhiệm vụ quan trọng của phân tích mật mã.
Có ba phương pháp tấn công cơ bản của thám mã:
- Tìm khóa vét cạn.
- Phân tích thống kê.
- Phân tích toán học.
Với hệ mật khóa bí mật (khóa đối xứng), việc mã hóa và giải mã sử dụng
chung một khóa, do đó hai bên liên lạc phải thống nhất và bảo mật khóa trước khi
truyền tin. Các thuật toán mã hóa trong hệ mật khóa bí mật thường sử dụng 3
phương pháp sau:
- Hoán vị

- Thay thế
- Xử lý bit (chủ yếu nằm trong các ngôn ngữ lập trình)
Ngoài ra còn có phương pháp hỗn hợp thực hiện kết hợp các phương pháp
trên mà điển hình là chuẩn mã dữ liệu (DES – Data Encryption Standard) của Mỹ.

3


1.2. Sơ đồ hệ mật khoá bí mật
(Oscar)

Thám mã
Bản rõ

Bản mã
Bộ mã hoá

Nguồn tin

Bản mã

Kênh mở
(không an toàn)

Bộ giải mã

Nhận tin

KD


(Bob)

KE

(Alice)

Bản rõ

Kênh an toàn

Nguồn khoá
Hình 1. 1. Sơ đồ hệ mật khóa bí mật

Đối tượ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à Alice và Bob) sao cho đối phương (Oscar)
không thể hiểu được thông tin được truyền đi. Kênh này 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à Alice muốn gửi cho Bob (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ỳ ý. Alice 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. Oscar 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 Bob (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 dùng khái niệm toán học như
sau:

Định nghĩa 1.1:
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:

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

c) K là một tập hữu hạn các khoá có thể (không gian khoá)
d) Đối với mỗi k ∈ K có một quy tắc mã ek ∈ E

ek : P → C

4


và một quy tắc giải mã tương ứng dk ∈ D
dk : C → P

sao cho: dk (ek (x )) = x với ∀x ∈ P .

1.3. Mật mã thay thế
1.3.1. Mật mã dịch vòng (MDV)
Giả sử P = C = K = Z 26 với 0 ≤ k ≤ 25 , ta định nghĩa:

ek ( x ) = x + k mod 26
dk (y ) = y − k mod 26

(x , y ∈ Z 26 )
Ta 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 mod
26 như sau:
Ký tự

A

B


C

D

E

F

G

H

I

J

K

L

M

Mã tương ứng

0

1

2


3

4

5

6

7

8

9

10

11

12

Ký tự

N

O

P

Q


R

S

T

U

V

W

X

Y

Z

Mã tương ứng

13

14

15

16

17


18

19

20

21

22

23

24

25

Ví dụ:
Giả sử khoá cho MDV là k = 6 và bản rõ là: meet me at sunset.
Trước tiên, ta biến đổi bản rõ thành chữ in hoa và biến đổi thành dãy các số
nguyên theo bảng trên (không biến đổi dấu cách (space) giữa 2 từ):
MEET ME AT SUNSET
12.4.4.19.12.4.0.19.18.20.13.18.4.19
Sau đó ta cộng 6 vào mỗi giá trị ở trên và rút gọn tổng theo mod 26, ta được
dãy số sau:
18.10.10.25.18.10.6.25.24.0.19.24.10.25
Cuối cùng, ta lại biến đổi dãy số nguyên trên thành các ký tự tương ứng, ta có
bản mã sau:
SKKZSKGZYATYKZ

5



Để giải mã cho bản mã này, trước tiên ta biến bản mã thành dãy số nguyên

rồi trừ mỗi giá trị cho 6 (rút gọn theo modulo 26), và cuối cùng là lại biến đổi lại
dãy số nhận được này thành các ký tự.
Nhận xét: Khi k = 3 , hệ mật này thường được gọi là mã Caesar đã từng được
Hoàng đế Caesar sử dụng.
Ví dụ với bản rõ là: meet me at sunset
Ta có:
MEET ME AT SUNSET
12.4.4.19.12.4.0.19.18.20.13.18.4.19
Sau đó ta cộng 3 vào mỗi giá trị ở trên và rút gọn tổng theo mod 26, ta được
dãy số sau:
15.7.7.22.15.7.3.22.21.23.16.21.7.22
Cuối cùng, ta lại biến đổi dãy số nguyên trên thành các ký tự tương ứng, ta có
bản mã sau:
MHHWPHDWVXQVHW

MDV (theo mod 26) là không an toàn vì nó có thể bị thám theo phương pháp
tìm khoá vét cạn (thám mã có thể dễ dàng thử mọi khoá dk có thể cho tới khi tìm
được bản rõ có nghĩa). Trung bình có thể tìm được bản rõ đúng sau khi thử khoảng

(26 / 2) = 13 quy tắc giải mã.
Từ ví dụ trên ta thấy rằng, điều kiện cần để một hệ mật an toàn là phép tìm
khoá vét cạn phải không thể thực hiện được. Tuy nhiên, một không gian khoá lớn
vẫn chưa đủ để đảm bảm độ mật.

1.3.2. Mã thay thế (MTT)
Cho P = C = Z 26 . K chứa mọi hoán vị có thể có của 26 ký tự từ 0

đến 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 π
Ví dụ:
6


Ta sử dụng phép hoán vị ngẫu nhiên π tạo nên một hàm mã hoá (tương tự
như trên, các ký tự của bản rõ được viết bằng chữ thường, còn các ký tự của bản mã
được viết bằng chữ in hoa).

Ký tự bản rõ

a

b

c

d

e

f

g


h

i

j

k

l

m

Ký tự bản mã

X

N

Y

A

C

P

M

G


Z

Q

W

B

T

Ký tự bản rõ

n

o

p

q

r

s

t

u

v


w

x

y

z

Ký tự bản mã

S

F

L

R

H

V

O

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 có:
Ký tự bản mã

A

B

C

D

E

F

G

H

I


J

K

L

M

Ký tự bản rõ

d

l

e

y

v

o

h

r

z

x


w

p

g

Ký tự bản mã

N

O

P

Q

R

S

T

U

V

W

X


Y

Z

Ký tự bản rõ

b

t

f

j

q

n

m

u

s

k

a

c


i

Với phép thay thế trên, từ bản rõ: meet me at sunset
ta thu được bản rõ sau: TCCO TC XO VUSVCO
Sử dụng phép hoán vị ngược, ta dễ dàng tìm lại được bản rõ ban đầu.
Mỗi khoá 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! > 4.1026 . Đây là một số rất lớn nên khó có thể tìm được khoá bằng phép
tìm khoá vét cạn. Tuy nhiên, bằng phương pháp thống kê, ta có thể dễ dàng thám
được các bản mã loại này.

1.3.3. Mật mã Vigenère
Trong hai hệ MDV và MTT ở trên, một khi khoá đã được chọn thì mỗi ký tự
sẽ được ánh xạ vào một ký tự duy nhất. Vì vậy, các hệ trên còn được gọi là các hệ
thay thế đơn biểu. Sau đây ta sẽ trình bày một hệ thay thế đa biểu được gọi là hệ
mật Vigenere [4].
Sử dụng phép tương ứng A ↔ 0, B ↔ 1,..., Z ↔ 25 mô tả ở trên, ta có thể
gắn cho mỗi khoá k một chuỗi ký tự có độ dài m , được gọi là từ khoá. Mật mã

7


Vigenère sẽ mã hoá đồng thời m ký tự: mỗi phần tử của bản rõ tương đương với m
ký tự.
Ví dụ:
Giả sử m = 6 và từ khoá là CIPHER. Từ khoá này tương ứng với dãy số

k = (2,8,15,7, 4,17) . Giả sử bản rõ là: meet me at sunset
Ta sẽ biến đổi các phần tử của bản rõ thành các thặng dư theo mod 26, viết
chúng thành các nhóm 6 rồi cộng với từ khoá theo modulo 26 như sau:
12


4

4

19

12

4

0

19

18

20

13

18

4

19

Bản rõ

2


8

15

7

4

17

2

8

15

7

4

17

2

8

Khoá

14


12

19

0

16

21

2

1

7

1

17

9

6

1

Bản mã

Như vậy, dãy ký tự tương ứng với xâu bản mã sẽ là:


OMTA QV CB HBRJGB
Ta có thể mô tả mật mã Vigenère như sau:
Cho m là một số nguyên dương cố định nào đó.
n
Ta định nghĩa P = C = K = ( Z 26 )
Với khoá k = (k1 , k 2 , K , km ) , ta xác định:

ek ( x 1 , x 2 , K , x m ) = ( x 1 + k1 , x 2 + k 2 , K , x m + km )

dk (y1 , y 2 , K , y m ) = (y1 − k1 , y 2 − k 2 , K , y m − km )
trong đó tất cả các phép toán được thực hiện trong Z 26 .
Chú ý: Để giải mã, ta có thể dùng cùng từ khoá nhưng thay cho cộng, ta trừ
nó theo modulo 26.
Ta thấy rằng, số các từ khoá có thể với độ dài m trong mật mã Vigenere
là 26m . Bởi vậy, thậm chí với m khá nhỏ, phương pháp tìm kiếm vét cạn cũng yêu
cầu thời gian khá lớn. Ví dụ, với m = 6 thì không gian khoá cũng có kích thước lớn
hơn 3.108 khoá.

1.3.4. 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 [4]:
8


e (x ) = ax + b mod 26; a ,b ∈ Z26
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 Z26 nên y − b cũng thay đổi trên Z26 . Bởi vậy, ta chỉ cần
nghiên cứu phương trình đồng dư:

ax ≡ y mod 26
Ta biết rằng, phương trình này có một nghiệm duy nhất đối với mỗi y khi và
chỉ khi GCD (a , 26) = 1 (ở đây hàm GCD là ước chung lớn nhất của các biến của
nó).
Trước tiên ta giả sử rằng, GCD (a , 26) = d > 1 . Khi đó, đồng dư thức

ax ≡ 0 mod 26 sẽ có ít nhất hai nghiệm phân biệt trong Z26 là x = 0 và x = 26 / d .
Trong trường hợp này, e (x ) = ax + b mod 26 không phải là một hàm đơn ánh và bởi
vậy nó không thể là hàm mã hoá hợp lệ.
Ví dụ:
Do GCD (4, 26) = 2 nên 4x + 7 không là hàm mã hoá hợp lệ: x và x + 13 sẽ
mã hoá thành cùng một giá trị đối với bất kỳ x ∈ Z26 .
Ta giả thiết GCD (a , 26) = 1 . Giả sử với x 1 và x 2 nào đó thoả mãn:

ax 1 ≡ ax 2 mod 26
Khi đó:

a (x 1 − x 2 ) ≡ 0mod 26
bởi vậy

26 | a (x1 − x 2 )


9


Bây giờ ta sẽ sử dụng một tính chất của phép chia sau: Nếu GCD (a ,b) = 1 và

a | bc thì a | c . Vì 26 | a (x1 − x 2 ) và GCD (a , 26) = 1 nên ta có:

26 | (x1 − x 2 )
tức là

x 1 ≡ x 2 mod 26
Tới đây ta đã chứng tỏ rằng, nếu GCD (a , 26) = 1 thì một đồng dư thức dạng
ax ≡ y mod 26 chỉ có (nhiều nhất) một nghiệm trong Z26 . Do đó, nếu ta cho x thay

đổi trên Z26 thì ax mod 26 sẽ nhận được 26 giá trị khác nhau theo modulo 26 và
đồng dư thức ax ≡ y mod 26 chỉ có một nghiệm y duy nhất.

Không có gì đặc biệt đối với số 26 trong khẳng định này. Bởi vậy, bằng cách
tương tự, ta có thể chứng minh được kết quả sau:

Định lý 1.1:
Đồng dư thức ax ≡ b mod m chỉ có một nghiệm duy nhất x ∈Zm với mọi

b ∈Zm khi và chỉ khi GCD (a , m ) = 1 .
Vì 26 = 2 ×13 nên các giá trị a ∈ Z26 thoả mãn GCD (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 Z26 . Như vậy , mã Affine có 12 × 26 = 312 khoá có thể (dĩ nhiên, con số này là
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ố.

Định nghĩa 1.2:
Giả sử a ≥ 1 và m ≥ 2 là các số nguyên. GCD (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 Zm 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 phi-Euler).

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ố

10


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 = 23 × 3 × 5 và 98 = 2 × 7 2 ).
Ta sẽ ghi lại công thức cho Φ (m ) trong định lí sau:

Định lí 1.2:
n

Giả sử m = ∏ pi ei ;
i =1

Trong đó các số nguyên tố pi khác nhau vàei > 0; 1 ≤ i ≤ n . Khi đó :

ϕ (m ) = ∏ ( pie − pie −1 )

i

i

i

Định lý này cho thấy rằng, số khoá trong mã Affine trên Z26 bằng m .ϕ (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, ϕ (60) = 2 × 2 × 4 = 16 và số các khoá trong mã Affine là
960.
Bây giờ, ta sẽ xét xem các phép toán giải mã trong mật mã Affine với
modulo m = 26 . Giả sử GCD (a , m ) = 1 . Để giải mã cần giải phương trình đồng dư

y = ax + b mod 26 theo x . Từ thảo luận trên thấy rằng, phương trình này có một
nghiệm duy nhất trong Z26 . Tuy nhiên, ta vẫn chưa biết một phương pháp hữu hiệu
để tìm nghiệm. Điều cần thiết ở đây là có một thuật toán hữu hiệu để làm việc đó.

Rất may là một số kết quả tiếp sau về số học modulo sẽ cung cấp một thuật toán
giải mã hữu hiệu cần tìm.

Định nghĩa 1.3:
Giả sử a ∈ Zm . Phần tử nghịch đảo (theo phép nhân) của a là phần tử
a −1 ∈ Zm sao cho aa −1 = a −1a = 1mod 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 GCD (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ố
11



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.
Có một thuật toán hữu hiệu để tính các nghịch đảo của Zm với m tuỳ ý, đó là
thuật toán Euclide mở rộng. Tuy nhiên, trong Z26 , chỉ bằng phương pháp thử và sai
cũng 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 ≡ 1mod 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ì GCD (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 −1a )x = 1.x = 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
Cho P = C = Z 26 và giả sử:
K = { (a , b ) ∈ Z 26 × Z 26 :UCLN (a , 26 ) = 1 }

Với k = (a , b ) ∈ K , ta định nghĩa:
ek ( x ) = ax + b mod 26



dk (y ) = a −1 (y − b ) mod 26
x , y ∈ Z 26
Hình 1. 2. Mã Affine


Hình 1.2 cho mô tả đầy đủ về mã Affine. Sau đây là một ví dụ nhỏ.
Ví dụ:
Giả sử k = (7,3) . Như đã nêu ở trên, 7 −1 = 15 . Hàm mã hoá là:

ek (x ) = 7x + 3
Và hàm giải mã tương ứng là: dk (y ) = 15(y − 3) = 15y − 19
12


Ở đây, tất cả các phép toán đều thực hiện trên Z26 . Ta sẽ kiểm tra liệu

dk (ek (x )) = x với mọi x ∈ Z 26 không. Dùng các tính toán trên Z26 ta có:
dk (ek (x )) = dk (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 dư theo modulo 26. Ta được các số tương ứng là 7, 14 và 19. Bây
giờ sẽ mã hoá:

7 × 7 + 3mod 26 = 52 mod 26 = 0
7 × 14 + 3mod 26 = 101mod 26 = 23
7 × 19 + 3mod 26 = 136 mod 26 = 6
Bởi vậy, ba ký hiệu của bản mã là 0, 23 và 6, tương ứng với xâu ký tự AXG.

1.4. Mật mã hoán vị (MHV)
Khác với mật mã thay thế, mật mã hoán vị giữ các ký tự của bản rõ không
thay đổi nhưng thay đổi vị trí của chúng bằng cách sắp xếp lại các ký tự này. Ở đây
không có một phép toán đại số nào cần thực hiện khi mã hoá và giải mã [4].
Ví dụ:
Giả sử m = 6 và khoá là phép hoán vị sau:

1

2

3

4

5

6

3

5

1

6

4

2

Khi đó, phép hoán vị ngược sẽ là:
1

2

3


4

5

6

3

6

1

5

2

4

Giả sử ta có bản rõ: a second class carriage on the train
Trước tiên, ta nhóm bản rõ thành các nhóm 6 ký tự:

asecon | dclass | carria | geonth | etrain
Sau đó, mỗi nhóm 6 chữ cái lại được sắp xếp lại theo phép hoán vị π , ta có:

EOANCS | LSDSAC | RICARA | OTGHNE | RIENAT
Cuối cùng, ta có bản mã sau:
EOANCSLSDSACRICARAOTGHNERIENAT

13



Khi sử dụng phép hoán vị ngược π −1 trên dãy bản mã (sau khi đã nhóm lại
theo các nhóm 6 ký tự), ta sẽ nhận lại được bản rõ ban đầu.
Từ ví dụ trên, ta có thể định nghĩa MHV như sau:
Cho m là một số nguyên dương xác định nào đó.
m
Cho P = C = ( Z 26 ) và cho K là tất cả các hoán vị có thể có của:

{ 1, 2, K, m } .
Đối với một khoá π (tức là một phép hoán vị nào đó), ta xác định:
eπ = (x 1 , K , x m ) = (x π (1) , K , x π (m ) )


dπ = (x 1 , K , x m ) = (y π −1 (1) , K , y π −1 (m ) )

trong đó π −1 là phép hoán vị ngược của π

1.5. Sơ đồ Feistel
1.5.1. Sơ đồ Feistel
Rất nhiều thuật toán của mật mã khối đối xứng sử dụng ngày nay được phát
triển dựa trên cấu trúc gọi là “Mật mã khối Feistel” (Feistel block cipher). Ví dụ:
DES, RC6… [9]
Feistel đã đề nghị về việc xây dựng một loại mật mã khối, trong đó đồng thời
sử dụng liên tiếp toán tử chuyển vị và toán tử thay thế, để nhận được độ an toàn cao
hơn so với bất kỳ loại mật mã nào chỉ ứng dụng riêng biệt các toán tử.

14



Hình 1. 3. Mạng Feistel cổ điển

Hình 1.3 mô tả cấu trúc đề xuất bởi Feistel. Đầu vào của thuật toán mã hóa là
khối văn bản gốc có chiều dài 2w bit và một khóa K. Khối văn bản gốc được chia
thành hai nửa, L0 và R0. Hai nửa dữ liệu đi qua n vòng xử lý rồi tổ hợp để tạo ra
khối văn bản mã hoá. Mỗi vòng i có đầu vào Li-1 và Ri-1, lấy từ vòng trước đó, giống
như như 1 khoá con Ki, lấy từ tổng thể K. Nói chung, những khóa con Ki khác với
khóa K và các khóa khác.
Tất cả các vòng có cấu trúc tương tự nhau. Một thay thế được thực hiện
trên một nửa trái của dữ liệu. Điều này được thực hiện bằng cách áp dụng một hàm
15


vòng F cho nửa bên phải của dữ liệu và sau đó lấy exclusive-OR của các đầu ra
của hàm đó và một nửa còn lại của dữ liệu. Tất cả các vòng có cùng một cấu
trúc chung cho mỗi vòng, nhưng là tham số của mỗi vòng là khóa con Ki. Sau sự
thay thế này, một hoán vị được thực hiện mà bao gồm việc trao đổi hai nửa của dữ
liệu. Cấu trúc này là một dạng đặc biệt của mạng thay thế - hoán vị (SPN) được đề
xuất bởi Shannon.
Việc thực hiện chính xác của một mạng Feistel phụ thuộc vào sự lựa
chọn của các tham số và đặc điểm thiết kế sau đây:
Kích cỡ khối: khối kích thước lớn hơn có nghĩa là bảo mật cao hơn (tất cả
những thứ khác bằng nhau), nhưng giảm đi tốc độ mã hóa/giải mã của một thuật
toán cho trước. Việc bảo mật cao hơn đạt được bằng cách truyền bá tốt hơn. Theo
truyền thống, một kích thước khối 64 bit đã được coi là một sự cân bằng hợp
lý và đã được phổ cập trong thiết kế gần mật mã khối.
Kích thước khóa: kích thước lớn hơn có nghĩa là an ninh tốt hơn, nhưng có
thể làm giảm tốc độ mã hóa/giải mã. Việc bảo mật cao hơn đạt được bằng cách
chống tấn công brute-force tốt hơn và rắc rối hơn. Kích thước khóa của 64
bit hoặc ít hơn bây giờ nhiều người xem là không đủ,và 128 bit đã trở thành

một kích thước thông thường.
Số vòng: Bản chất của mật mã Feistel là một vòng duy nhất cung cấp bảo
mật không đầy đủ nhưng nhiều vòng cung cấp sẽ tăng cường bảo mật hơn. Một kích
thước điển hình là 16 vòng.
Thế hệ thuật toán khóa phụ: phức tạp lớn hơn trong thuật toán này nên dẫn

đến khó khăn lớn hơn của phân tích mật mã.
Hàm vòng: Một lần nữa, phức tạp hơn thường có nghĩa chống phân tích mật
mã tốt hơn. Có hai quan tâm khác trong thiết kế của một mã hóa Feistel:
Tốc độ phần mềm mã hóa/giải mã: Trong nhiều trường hợp, mã hóa được
nhúng trong các ứng dụng hoặc các chức năng tiện ích theo cách như vậy là để ngăn
cản một thực hiện phần cứng. Theo đó, tốc độ thực hiện của thuật toán sẽ trở
thành một mối quan tâm.

16


×