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

Nghiên cứu tìm hiểu hệ mã hóa đồng cấu và ứng dụng (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 (1.96 MB, 73 trang )

ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

TRƯƠNG HÀ DIỆP

NGHIÊN CỨU TÌM HIỂU
HỆ MÃ HÓA ĐỒNG CẤU VÀ ỨNG DỤNG

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

THÁI NGUYÊN - 2016


ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

TRƯƠNG HÀ DIỆP

NGHIÊN CỨU TÌM HIỂU
HỆ MÃ HÓA ĐỒNG CẤU VÀ ỨNG DỤNG
Chuyên ngành: Khoa học máy tính
Mã số: 60 48 01 01

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Người hướng dẫn khoa học: TS HỒ VĂN CANH

THÁI NGUYÊN - 2016


i



LỜI CAM ĐOAN
Tôi xin cam đoan luận văn “Nghiên cứu tìm hiểu hệ mã hóa đồng cấu và
ứng dụng” là công trình nghiên cứu của cá nhân tôi tìm hiểu, nghiên cứu dưới sự
hướng dẫn của TS Hồ Văn Canh. Các kết quả là hoàn toàn trung thực, toàn bộ nội
dung nghiên cứu của luận văn, các vấn đề được trình bày đều là những tìm hiểu và
nghiên cứu của chính cá nhân tôi hoặc là được trích dẫn từ các nguồn tài liệu được
trích dẫn và chú thích đầy đủ.

TÁC GIẢ LUẬN VĂN

Trương Hà Diệp


ii

LỜI CẢM ƠN
Học viên xin bày tỏ lời cảm ơn chân thành tới tập thể các thầy cô giáo Viện
công nghệ thông tin, các thầy cô giáo Trường Đại học Công nghệ thông tin và
truyền thông - Đại học Thái Nguyên đã mang lại cho học viên kiến thức vô cùng quý
giá và bổ ích trong suốt quá trình học tập chương trình cao học tại trường. Đặc biệt
học viên xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo TS Hồ Văn Canh đã định
hướng khoa học và đưa ra những góp ý, gợi ý, chỉnh sửa quý báu, quan tâm, tạo điều
kiện thuận lợi trong quá trình nghiên cứu hoàn thành luận văn này.
Cuối cùng, học viên xin chân thành cảm ơn các bạn bè đồng nghiệp, gia
đình và người thân đã quan tâm, giúp đỡ và chia sẻ với học viên trong suốt quá
trình học tập.
Do thời gian và kiến thức có hạn nên luận văn chắc không tránh khỏi
những thiếu sót nhất định. Học viên rất mong nhận được những sự góp ý quý báu
của thầy cô và các bạn.

Thái Nguyên, ngày 28 tháng 12 năm 2016
HỌC VIÊN

Trương Hà Diệp


iii

MỤC LỤC

LỜI CAM ĐOAN ...................................................................................... i
LỜI CẢM ƠN ........................................................................................... ii
MỤC LỤC................................................................................................iii
MỤC CÁC HÌNH VẼ, ĐỒ THỊ .............................................................. vi
MỞ ĐẦU................................................................................................... 1
CHƯƠNG 1 .............................................................................................. 3
MẬT MÃ CỔ ĐIỂN VÀ HỆ MẬT MÃ ĐỒNG CẤU ............................ 3
1.1 Khái quát hệ mật mã .......................................................................... 3
1.1.1 Khái niệm ........................................................................................ 3
1.1.2 Định nghĩa ........................................................................................ 3
1.1.3 Những yêu cầu đối với hệ mật mã ................................................... 4
1.2 Một số hệ mật mã đơn giản ................................................................. 5
1.2.1 Mã dịch vòng ( shift cipher) ............................................................ 5
1.2.1.1 Định nghĩa (modulo): Định nghĩa về đồng dư ............................. 5
1.2.1.2 Định nghĩa mã dịch vòng:............................................................. 6
1.2.2 Mã thay thế (MTT) ......................................................................... 7
1.2.3 Mã Anffine ........................................................................................ 8
1.2.3.1 Định lý (đồng dư thức) ................................................................. 9
1.2.3.2 Định nghĩa (hàm Euler) ................................................................ 9
1.2.3.3 Định nghĩa (phần tử nghich đảo trong phép nhân) ..................... 10

1.2.4 Mã Vigenere ..................................................................................... 13
1.2.5 Mật mã Hill.................................................................................... 14
1.2.5.1 Khái niệm .................................................................................... 14


iv

1.2.5.2 Định nghĩa (ma trận đơn vị) ....................................................... 14
1.2.5.3 Định nghĩa (Định thức của ma trận) ........................................... 15
1.2.5.4 Định lý (ma trận ngịch đảo) ........................................................ 15
1.2.5.5 Định nghĩa mật mã Hill .............................................................. 15
1.2.6 Mã hóa hoán vị............................................................................... 15
1.2.7 Thám mã ........................................................................................ 17
1.3 Các phương pháp mã hóa đối xứng .................................................. 17
1.3.1 Hệ mã hóa DES .............................................................................. 17
1.3.2 Hệ mã hóa AES .............................................................................. 19
1.3.3 Hệ mã hóa IDEA ............................................................................ 19
1.4 Hệ mã hóa đồng cấu .......................................................................... 21
1.4.1 Định nghĩa ...................................................................................... 21
1.4.1.1 Định nghĩa đồng cấu trong toán học ........................................... 21
1.4.1.2 Định nghĩa hệ mã hoá đồng cấu ................................................. 21
1.4.2 Hệ mã hoá đồng cấu cộng .............................................................. 21
1.4.3 Hệ mã hoá đồng cấu nhân .............................................................. 22
CHƯƠNG 2. HỆ MẬT MÃ DES VÀ HỆ MẬT MÃ IDEA.................. 23
2.1 Hệ mật mã DES ................................................................................ 23
2.1.1 Mô tả hệ mật .................................................................................. 23
2.1.2 Quá trình mã hóa ............................................................................ 24
2.1.2.1 Giai đoạn 1: Cách tính biến x0 ..................................................... 24
2.1.2.2 Giai đoạn 2 .................................................................................. 25
2.1.2.3 Giai đoạn 3 .................................................................................. 32

2.1.2.4 Ví dụ ............................................................................................ 32
2.1.3 Quá trình giải mã .......................................................................... 36
2.1.3.1 Thuật toán ................................................................................... 37


v

2.1.3.2 Chứng minh thuật toán ............................................................... 37
2.1.4 Ưu nhược điểm của hệ mật DES ................................................... 39
2.1.4.1 Ưu điể m....................................................................................... 39
2.1.4.2 Nhược điểm của DES ................................................................ 39
2.1.5 Độ an toàn của DES ....................................................................... 41
2.1.5.1 Các đặc trưng an toàn cơ bản của một hệ mã khối ..................... 41
2.1.5.2 Độ an toàn của DES trước một vài phương pháp tấn công phá mã42
2.2 Hệ mật IDEA .................................................................................... 43
2.2.1 Mô tả hệ mật IDEA ........................................................................ 43
2.2.2 Các phép toán sử dụng trong IDEA ............................................... 43
2.2.3 Mã hoá và giải mã trong IDEA...................................................... 45
2.2.3.1 Mã hoá......................................................................................... 45
2.2.4 Quá trình làm việc của một Modul ................................................ 51
CHƯƠNG 3 NGHIÊN CỨU PHƯƠNG PHÁP MÃ HÓA TỰ ĐỒNG
CẤU MỞ RỘNG KHÔNG GIAN KHÓA CHO CÁC MÃ CỔ ĐIỂN . 55
3.1 Mở đầu .............................................................................................. 55
3.2 Nội dung phương pháp ...................................................................... 55

3.2.1 Khái niệm, định nghĩa .................................................................... 55
3.2.2 Thuật toán mã hóa .......................................................................... 55
3.2.3. Ví dụ .............................................................................................. 55
3.2.4 Thuật toán giải mã ......................................................................... 59
3.3 Đánh giá độ an toàn của thuật toán ................................................... 61

3.4 Đề xuất hướng ứng dụng trong thực tế ............................................ 62
4. KẾT LUẬN HƯỚNG NGHIÊN CỨU ............................................... 63
TÀI LIỆU THAM KHẢO ...................................................................... 64


vi

MỤC CÁC HÌNH VẼ, ĐỒ THỊ

Hình 1.1. Kênh liên lạc ............................................................................. 4
Hình 1.2 Mã dịch vòng .............................................................................. 6
Hình 1.3 Mã thay thế ................................................................................. 7
Hình 1.4. Mã hóa Anffine ........................................................................ 12
Hình 1.5. Phương pháp mã hóa Vigenere ................................................ 13
Hình 1.6. Mật mã Hill.............................................................................. 15
Hình 1.7 Mã hoán vị ................................................................................ 16
Hình 2.1 Biểu diễn dãy 64 bit x thành 2 thành phần L và R .................... 23
Hình 2.2 Quy trình phát sinh dãy Li Ri từ dãy Li-1 Ri-1 và khóa Ki ......... 24
Hình 2.3 Sơ đồ của hàm mở rô ̣ng ........................................................... 25
Hình 2.4 Sơ đồ tạo khóa con ................................................................... 26
Hình 2.5 Hàm f ........................................................................................ 28
Hình 2.6 Quá trình mã hóa DES ............................................................. 32
Hình 2.7 Sơ đồ giải mã ........................................................................... 38
Hình 2.8 Cấu trúc Multiplication/Additio (MA) .................................... 44
Hình 2.9 Cấu trúc IDEA ......................................................................... 45
Hình 2.10 Cấu trúc một modul (Modul 1) .............................................. 46
Hình 2.11 Hàm biến đổi của IDEA ....................................................... 47
Hình 2.12 Mã hoá và giải mã trong IDEA.............................................. 49
Hình 2.13 Cấu trúc một modul (Modul 1) .............................................. 51
Hình 3.1: Mã hóa thông điệp .................................................................. 59

Hình 3.2: Giải mã thông điệp.................................................................. 61


vii

DANH MỤC BẢNG BIỂU

Bảng 2.2 Bảng chọn E bít ....................................................................... 26
Bảng 2.3 Hoán vi ̣IP-1 .............................................................................. 27
Bảng 2.5 Hoán vi ̣PC - 2 ......................................................................... 27
Bảng 2.7 8 hô ̣p S-Box ............................................................................ 31
Bảng 2.8 Phép hoán vị P ......................................................................... 31
Bảng2.9 16 vòng lặp mã ........................................................................ 36
Bảng 2.10 Các khóa yếu của DES ........................................................... 40
Bảng 2.11 Các khóa nửa yếu của DES .................................................... 40


1

MỞ ĐẦU
1. Đặt vấn đề
Để đảm bảo các thông tin quan trọng liên quan đến Quốc phòng, An ninh và
Thương mại, người ta sử dụng công nghệ mật mã. Có hai loại hệ mật mã được dùng
là mật mã khóa đối xứng và mật mã khóa bất đối xứng (Asymmetric key). Hệ thống
mật mã bất đối xứng chủ yếu được sử dụng trong môi trường chữ ký số (digital
signatures), trong xác thực và trong việc trao đổi các khóa mã đối xứng (symmetric
keys). Mật mã đối xứng đóng vai trò quan trọng trong lĩnh vực bảo mật dữ liệu. Mật
mã đối xứng có hai loại chính là mật mã hiện đại như mật mã DES (Data
Enecryption Standard), mật mã AES (Advanced Encryption Standard), mật mã
IDEA (International Data Encryption Algorithm)… và mật mã truyền thống. Mật

mã truyền thống rất đơn giản và thuận lợi mà thế giới đã sử dụng hàng thế kỷ trước.
một nhược điểm cơ bản của mật mã truyền thống là độ bảo mật không cao vì không
gian khóa thường quá nhỏ.
Mục đích của đề tài luận văn là nghiên cứu thuật toán mã hóa trên cơ sở
kết hợp các mật mã truyền thống thành một hệ mật mã có độ bảo mật cao hơn
nhiều trên cơ sở đánh giá tính ngẫu nhiên của nó bằng kỹ thuật của lý thuyết
thống kê toán học.
2. Đối tượng và phạm vi nghiên cứu
Đề tài luận văn sẽ nghiên cứu và trình bày phương pháp tạo ra một thuật toán
mã hóa từ các thuật toán mật mã truyền thống nhưng có độ bảo mật cao hơn.
3. Hướng nghiên cứu của đề tài
Đề tài luận văn tập trung tìm hiểu hệ mật mã đồng cấu, trên cơ sở đó xây
dựng một hệ mật mã đồng cấu sử dụng các hệ mật mã truyền thống, đưa ra một
phương pháp khắc phục được những lỗ hổng về độ an toàn của các hệ mật mã này.
4. Những nội dung nghiên cứu chính
Luận văn gồm 3 chương.
Chương 1: Mật mã cổ điển và hệ mật mã đồng cấu
Chương 2: Hệ mật mã DES và hệ mật IDEA
Chương 3: Phương pháp mã hóa tự đồng cấu mở rộng không gian khóa cho các mã
cổ điển


2

5. Phương pháp nghiên cứu
- Phương pháp tổng hợp, so sánh để tìm ra vấn đề còn tồn tại để nghiên cứu
- Phương pháp lập trình để thử nghiệm thuật toán mới.
6. Ý nghĩa khoa học của đề tài
Luận văn nghiên cứu phương pháp trao đổi khóa mã đối xứng nói chung
không sử dụng mật mã khóa công khai [8]. Thuật toán đơn giản đễ sử dụng và có độ

an toàn cao.


3

CHƯƠNG 1
MẬT MÃ CỔ ĐIỂN VÀ HỆ MẬT MÃ ĐỒNG CẤU
1.1 Khái quát hệ 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à A 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õ.
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ã ek: P  C và một quy tắc v giải

mã tương ứng dk  D. Mỗi ek: P  C và dk: C  P là những hàm sao
cho: dk(ek (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 ek và bản mã nhận được sau đó được giải mã bằng dk thì ta phải

thu được bản rõ ban đầu x.
Giả sử A gửi cho B một thông báo trên một kênh mật, ta có bản rõ cần truyền
đi là: x = x1, x2,. . ., xn. Với số nguyên n  1 nào đó. Ở đây mỗi ký hiệu của mỗi

bản rõ xi  P, 1  i  n. Mỗi xi sẽ được mã hoá bằng quy tắc mã ek với khoá K
xác định trước đó. A tính yi = ek(xi), 1  i  n và bản mã thu được là:


4

y = y1, y2,. . .,yn
Khi B nhận đươc y1, y2, . . ., yn anh ta sẽ giải mã bằng hàm giải mã dk và thu

được bản rõ gốc x1, x2, . . ., xn.
C
x
A

x

y
Bộ mã hoá

Bộ giải mã

B

k
k


k
Kênh an toàn

k
Nguồn khoá

Hình 1.1. 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 = ek(x1) = ek(x2), trong đó x1  x2, thì B sẽ không có cách nào để biết
liệu bản rõ là x1 hay x2 .
1.1.3 Những yêu cầu đối với hệ mật mã
Cung cấp một mức cao về tính bảo mật, tính toàn vẹn, tính chống chối bỏ và
tính xác thực:
 Tính bảo mật: Bảo đảm bí mật cho các thông báo và dữ liệu bằng việc che
dấu thông tin nhờ các kỹ thuật mã hóa.
 Tính toàn vẹn (integrity): Bảo đảm với các bên rằng bản tin không bị thay
đổi trên đường truyền tin.
 Tính không thể chối bỏ (Non-repudiation): Có thể xác nhận rằng tài liệu đã
đến từ ai đó, ngay cả khi họ cố gắng từ chối nó.
 Tính xác thực (Authentication): Cung cấp hai dịch vụ:
o

Nhận dạng nguồn gốc của một thông báo và cung cấp một vài bảo

đảm rằng nó là đúng sự thực.



5

o

Kiểm tra định danh của người đang đăng nhập một hệ thống, tiếp tục

kiểm tra đặc điểm của họ trong trường hợp ai đó cố gắng kết nối và giả danh là
người sử dụng hợp pháp.
1.2 Một số hệ mật mã đơ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: Zm đượ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 11x 13 trong Z16 . Tương tự như với các số nguyên ta có 11 x 13 =
143. Để rút gọn 143 theo modulo 16, ta thực hiện phép chia bình thường: 143 = 8 x
16 + 15, bởi vậy 143 mod 16 = 15 trong Z16.
Các định nghĩa trên phép cộng và phép nhân Z m thỏa 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  Zm, a +b  Zm
2. Phép cộng là giao hoán, tức là với a, b bất kì  Zm, 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  Zm, (a+b)+c = a+(b+c)
4. 0 là phần tử đơn vị của phép cộng, có nghĩa là  a bất kì  Zm, a+0 = 0+a = a
5. Phép nhân là đóng, tức là với a, b bất kì  Zm, ab  Zm.
6. Phép nhân là giao hoán, nghĩa là với a, b bất kì  Zm, ab = ba

7. Phép nhân là kết hợp, nghĩa là với a, b, c  Zm, (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  Zm
9. Phần tử nghịch đảo của phép cộng của phần tử bất kì (a  Zm) là m-a, nghĩa
là a + (m-a) = (m-a) + a = 0 với bất kì a  Zm.
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


6
 Zm, (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 Zm nên cũng có thể trừ các phần
tử trong Zm. Ta định nghĩa a-b trong Zm 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 Z31, 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 Z26 (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 Zm 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à dK
(eK(x)) = x với mọi x  Z26.
Cho P = C = K = Zn
Với mỗi khóa k  K, định nghĩa:
ek (x)= (x + k) mod n và
dk (y)= (y - k) mod n với x, y  Zn
E={ ek , k  K} và D={ dk, k  K}
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

9

10 11 12

N O

P

Q

R

S

T

U V W X Y Z

8

13 14 15 16 17 18 19 20 21 22 23 24 25
Ví dụ: Dùng khoá k = 9 để mã hoá dòng thư: “toinaydichoi” dòng thư đó tương ứng
với dòng số
T

o

i


n

a

y

d

i

c

h

o

i

19

14

8

12

0

24


3

8

2

7

14

8


7

Qua phép mã hoá e9: cộng 9 vào mỗi giá trị rồi rút gọn theo tổng modulo 26 ta có:
2

23

17

22

9

7

12


17

11

16

23

17

c

x

r

w

j

h

m

r

l

q


x

r

Bản mã sẽ là: “qnwcxrcqdkjh”
Để giải được bản mã này, trước tiên người nhận biến đổi bản mã này thành
dãy các số nguyên rồi trừ đi 9 (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ự.
Cách đây 2000 năm mã dịch chuyển đã được Julius Ceasar sử dụng Với khoá k
= 3 mã dịch vòng được gọi là mã Ceasar.
Tập khoá phụ thuộc vào Zm với m là số khoá có thể. Trong tiếng anh tập khóa
chỉ có 26 khóa có thể, việc thám mã có thể được thực hiện bằng cách duyệt tuần tự
26 khóa đó, vì vậy độ an toàn của mã dịch chuyển rất thấp.
1.2.2 Mã thay thế (MTT)
Trên thực tế mã thay thế có thể lấy cả P và C đều là bộ chữ cái tiếng anh, gồm 26

chữ cái. Ta dùng Z26 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ự.
Cho P = C = Zn. K là tập hợp tất cả các hoán vị của n phần tử 0, 1, ..., n-1. Như
vậy, mỗi khóa   K là một hoán vị của n phần tử 0, 1, ..., n-1.
Với mỗi khóa   K, định nghĩa :
e (x)= (x) và
d(y)=-1(y) với x,y  Zn
E={e,  K} và D={D, K}
Hình 1.3 Mã thay thế
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

X
n
S

b
N
o
F

c
Y
p
L

d
A
q
R

e
H
r
C

F
P
S

V

g
O
t
M

h
G
u
U

i
Z
v
E

j
Q
w
K

k
W
x
J

l
B
y

D

m
T
Z
I


8

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

Ví dụ: bản rõ: “toinaydichoi” sẽ được mã hoá thành bản mã (với khoá π):
“mfzsxdazygfz”
Dễ xác định được π-1, và do đó từ bản mã ta tìm được bản rõ.
Mã thay thế có tập hợp khoá khá lớn bằng số các hoán vị trên bảng chữ cái, tức
số các hoán vị trên Z26, hay là 26! > 4 x 1026. Việc duyệt toàn bộ các hoán vị để thám
mã là rất khó, ngay cả đối với máy tính. 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, và do đó mã thay thế cũng không dễ
dàng thám được các bản mã loại này, và do đó mã thay thế cũng không thể được xem
là an toàn.
1.2.3 Mã Anffine
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  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  Z26, 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:


9

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)


(y  Z26 ).

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  Zm với mọi b  Zm khi

và chỉ khi UCLN(a,m) = 1.
Vì 26 = 2 x 13 nên các giá trị a  Z26 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 Z26. Như
vậy, mã Affine có 13 x 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 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 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ố 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 x 3 x 5 và 98 = 2 x 72).
Ta sẽ ghi lại công thức cho (m) trong định lí sau:
n

Định lý: Giả sử m   pie

i


i 1

Trong đó các số nguyên tố pi khác nhau và ei >0, 1  i  n. Khi đó
 (m)   ( pie  pie )
i

i 1

i 1


10

Đị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=22×31×51=>  (60) = (22-21)( 31-30)(51-50) = 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 Euler( ).
(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 = pk với p là số nguyên tố, thì  (m) =  (pk) = pk-1(p-1).
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  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  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 ZP đề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 x 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).


11

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-1a)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.
Đầu vào (input): m, n (giả sử m>n).
Đầu ra: x, y, k.
Cho (a1, a2, a3), (b1, b2, b3), (c1, c2, c3) là 3 vectơ
Bước 1: (a1, a2, a3) ←(1, 0, m), (b1, b2, b3)←(0, 1, n)
Bước 2: Nếu b3 = 0 thì thuật toán dừng và a1, a2, a3 là đáp số của bài toán
(tức là x = a1, y = a2, k = a3).
Bước 3: Đặt q=[a3/b3]; (là phần nguyên của a3/b3, tức q là số nguyên lớn nhất
nhưng không vượt quá a3/b3) và (c1,c2,c3)← (a1,a2,a3) - q(b1,b2,b3); (a1,a2,a3)← (
b1,b2,b3); ( b1,b2,b3)← (c1,c2,c3) và trở về bước 2.
Thuật toán dừng sẽ cho: a1 = x, a2 = y, a3 = k
Ví dụ1: Cho m = 42, n = 4
Ta có bảng quá trình tính toán sau đây:
q

a1 a2


a3

b1

b2

b3 c1

c2

4

1

-10 2

-2

21

10 1

0

42 0

1

2


0

1

4

1

-10 2

1

-10

2

-2

21

0

c3
0


12

Vậy x = 1, y = -10 và k = 2.

Ví dụ 2: Cho m = 95, n = 8.
Quá trình tính toán được cho trong bảng sau:
q a1 a2
11 1 0
1 0 1
7 1 -11
Vậy x = -1, y =12, k =1.

a3
95
8
7

b1
0
1
-1

b2
1
-11
12

b3
8
7
1

c1
1

-1
8

c2 c3
-11 7
12 1
-95 0

Chú ý : số trong ô a2 chính là nghịch đảo của 8 mod 95 (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 x 8 ≡ 1 mod 95 Do đó từ định nghĩa đồng dư là nghịch đảo của 8
theo module 95 (vì UCLN(8, 95) =1 nên tồn tại nghịch đảo của 8 theo mod 95).

Mã Anffine: (P, C, K, E, D), trong đó P = C = Z26,
K = { (a,b) ∈ Z26 x Z26: gcd(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
Trong đó x, y є Z26.
Hình 1.4. Mã hóa Anffine
Ví dụ: Giả sử K = (7, 3). Như đã nêu ở trên, 7-1 mod 26 = 15. Hàm mã hoá là

eK(x) = 7x+3
Và hàm giải mã tương ứng là:
dK(x) = 15(y-3) = 15y -19
Ở đâ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  Z26 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á:


13

7 x 7 +3 mod 26 = 52 mod 26 = 0
7 x 14 + 3 mod 26 = 101 mod 26 =23
7 x 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.

Việc thử tất cả các khoá để thám mã trong trường hợp này tuy khá mất thì giờ
nếu tính bằng tay nhưng không khó khăn gì nếu dùng máy tính.
Do vậy, mã Apphin cũng không phải là mã an toàn.
Chú ý: khi a = 1 ta có mã dịch vòng.
1.2.4 Mã Vigenere
m

Mã Vigenere: (P, C, K, E, D) Cho m là số nguyên dương. P = C = K = Z26
với mỗi khoá k = (k1, k2, …, km) є K có:
eK(x1, ..., xm ) = ( x1+k1, ...., xm+ km ) mod 26
dK(y1, ..., ym ) = ( y1 - k1 , ..., ym - km ) mod 26
với mỗi x = (x1, ..., xm ) ∈ P , y = (y1, ..., ym ) ∈ C , K = (k1, ..., km)∈ K .
các phép cộng phép trừ đều lấy theo modulo 26
Hình 1.5. Phương pháp mã hóa Vigenere

Ví dụ: Giả sử m = 6 và khoá k là từ CIPHER - tức k = (2, 8, 15, 7, 4, 17).

Bản rõ: “toinaydichoi”
t

o

i

n

a

y

d

i

c

h

o

i

x

19

14


8

12

0

24

3

8

2

7

14

8

k

2

8

15

7


4

17

2

8

15

7

4

17

y

21

22

23

20

4

15


5

16

17

14

18

25

v

W

x

u

e

p

f

q

r


o

s

z

Bản mã:

“vwxuepfqrosz”

Từ bản mã đó, dùng phép giải mã dk tương ứng, ta lại thu được bản rõ. Chú ý:
Mã Vigenere với m = 1 sẽ trở thành mã Dịch chuyển.
m

Tập hợp các khoá trong mã Vigenere mới m ≥ 1 có tất cả là 26

khoá có thể có.

Với m = 6, số khoá đó là 308.915.776, duyệt toàn bộ chừng ấy khóa để thám
mã bằng tính thì khó, nhưng với máy tính thì vẫn là điều dễ dàng.


14

1.2.5 Mật mã Hill
1.2.5.1 Khái niệm
Giả sử m là một số nguyên dương, đặt P = C = (Z26)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 = (x1, x2) và một phần tử
của bản mã là y = (y1, y2). Ở đây, y1cũng như y2 đều là một tổ hợp tuyến tính của
x1và x2. Chẳng hạn, có thể lấy
y1 = 11x1+ 3x2
y2 = 8x1+ 7x2
Tất nhiên có thể viết gọn hơn theo ký hiệu ma trận như sau:
11 8 
(y1 y2) = (x1 x2) 

3 7 
Nói chung, có thể lấy một ma trận K kích thước m x m làm khoá. Nếu một phần tử ở hàng
i và cột j của K là ki,j thì có thể viết K = (ki,j), với x = (x1, x2, . . . ,xm)  P và K  K , ta tính

y = eK(x) = (y1, y2, . . . ,ym) như sau:
 K1,1

K
(y1, . . ., ym) = (x1, …., xm)  2,1
...

 K m,1

K1,2 ... K1,m 

K 2,2 ... K 2,m 
... ... ... 

K m,2 ... K m,m 

Nói một cách khác y = xK.

1.2.5.2 Định nghĩa (ma trận đơn vị)
Ma trận đơn vị m x m (ký hiệu là Im) là ma trận cấp m x 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 x 2 là:
1 0 
I2  

 0 1

Im được gọi là ma trận đơn vị vì AIm = 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 x m (nếu tồn tại) là
ma trận A-1 sao cho AA-1 = A-1A = Im. 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.


15
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) = xIm = x
1.2.5.3 Định nghĩa (Định thức của ma trận)
Định thức của ma trận A = (ai, j) cấp 2 x 2 là giá trị det A = a1,1 a2,2 - a1,2 a2,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 Z26 một ma trận K có nghịch đảo khi và chỉ khi UCLN(det K, 26) = 1.

1.2.5.4 Định lý (ma trận ngịch đảo)
Giả sử A = (ai j) là một ma trận cấp 2 x 2 trên Z26 sao cho det A = a1,1 a2,2 –
a1,2.a2,1 có nghịch đảo. Khi đó
 a2,2 -a1,2 

A 1  (det A) 1 

  a2,1 a1,1 

Ví dụ: Có 1 ma trận K
11 8 
det 
  11 x 7 - 8 x 3 mod26
3 7
= 77 - 24 mod26  53mod26
1
Vậy ma trận K có nghịch đảo.

1.2.5.5 Định nghĩa mật mã Hill
Cho ̣n số nguyên dương m. Đinh
̣ nghiã : P = C = (Z26)m. Và K là tâ ̣p hơ ̣p các ma
trâ ̣n m x m khả nghich
̣ trên Z26
Với mỗi khóa k K ta xác định:
ek(x) = xK
và dk(y) = yK-1
Tất cả các phép toán thực hiện trong Z26
Hình 1.6. Mật mã Hill

1.2.6 Mã hóa hoán vị
Những phương pháp mã hóa nêu trên đều dựa trên ý tưởng chung: thay thế mỗi
ký tự trong thông điệp nguồn bằng một ký tự khác để tạo thành thông điệp đã được
mã hóa.Ý tưởng chính của phương pháp mã hóa hoán vị (Permutation) là vẫn giữ



16

nguyên các ký tự trong thông điệp nguồn mà chỉ thay đổi vị trí các ký tự, nói cách
khác thông điệp nguồn được mã hóa bằng cách sắp xếp lại các ký tự trong đó
Cho ̣n số nguyên dương m. Đinh
̣ nghĩa:
P = C = (Z26)m và K là tâ ̣p hơ ̣p các hoán vi cu
̣ ̉ a m phầ n tử {1, 2, ..., m}
Với mỗi khóa   K, đinh
̣ nghiã :

e x1 , x2 ,..., xm   x 1 , x 2  ,...x m   và



d  y1 , y 2 ,..., y m   y 1 1 , y 1 2  ,...y 1 m 



Với –1 hoán vị ngươ ̣c của 
Hình 1.7 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.
Phương pháp mã hóa hoán vị là một trường hợp đặc biệt của mã hóa Hill. Với
mỗi hoán vị  của tập hợp {1, 2, …, m}, ta xác định ma trận k = (ki,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).


×