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

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 q
giá và bổ ích trong suốt q 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 hố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 Q 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ã hố......................................................................................... 45
2.2.4 Q 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 tốn mã hóa .......................................................................... 55
3.2.3. Ví dụ .............................................................................................. 55

3.2.4 Thuật tốn giải mã ......................................................................... 59
3.3 Đánh giá độ an tồ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ã hố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 Q 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ã hố 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 q nhỏ.
Mục đích của đề tài luận văn là nghiên cứu thuật tố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 tốn
mã hóa từ các thuật tố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 tố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ã hố 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 khố 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 khố) là tập hữu hạn các khố 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 khố 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 tồn

k
Nguồn khố

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 tồ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 tồ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 hố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ố ngun 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 khố k = 9 để mã hố 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 khố phụ thuộc vào Zm với m là số khố 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 tồ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 hố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 hố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ã hố (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 hốn vị của 26 kí tự. Số các hố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 khố 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 hố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 tồ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 hố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
vẽ gọi là cấu trúc MA( Multiplication/Additio) trong hình sau:


44

Hình 2.8 Cấu trúc Multiplication/Additio (MA)

Khối này nhận 16 bit từ bản rõ và 16 bit được lấy từ khoá ra theo một quy tắc
nào đó ( 16 bit này được gọi là subkey và quy tắc lấy subkey từ khố sẽ được trình
bày ở sau)để tạo ra 16 bit đầu ra. Một chương trình kiểm tra trên máy tính bằng
phương pháp vét cạn xác định rằng mỗi bit ở đầu ra phụ thuộc vào các bít rõ và bit
subkey đầu vào. Cấu trúc này được sử dụng lặp lại 8 lần trong thuật toán và tạo nên
một sự phân bố có hiệu qủa.
IDEA được xây dựng sao cho việc thực hiện nó được dễ dàng cả trên phần
cứng và phần mềm. Việc thực hiện trên phần cứng, điển hình là trên vi mạch VLSI
(VLSI: mạch tích hợp cao), được thiết kế để đạt được tốc độ cao. Việc xây dựng
trên phần mềm thì thuận tiện và giá thành thấp.
Những điểm chủ yếu trong việc xây dựng phần mềm:
+ Sử dụng những khối nhỏ: những phép mã thực hiện trên những khối có độ
dài 8,16,32 bit phù hợp với việc xử lý trên máy tính.
+ Sử dụng thuật tốn giản đơn: Phép tốn mã dễ dàng trong lập ttình như
phép cộng , phép dịch chuyển (shift), ..., Cả 3 phép toán của IDEA đều thoả mãn
những yêu cầu này. Điểm khó khăn nhất là phép tốn nhân modulo(216 +1) cũng có

thể dễ dàng xây dựng từ những phép tốn sẵn có.


45

- Những điểm chủ yếu trong việc thực hiện trên phần cứng:
+ Sự tương tự trong mã hoá và giải mã: Mã hoá và giải mã chỉ nên khác
nhau trong việc sử dụng khố và nhờ đó một phương tiện có thể dùng cho cả mã
hố và giải mã.
+ Cấu trúc lặp lại: Phương pháp mã nên có cấu trúc modul lặp lại để các
mạch VLSI có thể thực hiện được dễ dàng. IDEA được xây dựng từ 2 khối modulo
đơn giản và sử dụng lặp lại nhiều lần.
2.2.3 Mã hoá và giải mã trong IDEA
2.2.3.1 Mã hoá
Giống như các sơ đồ mã hố khác, hàm mã hố có 2 tham số ở đầu vào là Bản
rõ cần mã và khoá. Trong trường hợp này là 64 bit rõ là 128 bit khoá.
Từ đầu vào đến đầu ra, các bit rõ lần lượt đi qua 8 modul và một hàm biến đổi
cuối cùng. Tám modul này có cấu trúc giống nhau và thực hiện các thao tác như
nhau với dữ liệu đầu vào. Mỗi modul nhận 4 khối 16 bit rõ ở đầu vào cùng với các
subkey và đưa ra 4 khối 16 bit đã được mã hố. Do đó 64 bit rõ sẽ được chia thành
4 khối nhỏ gọi là các subblock, mỗi subblock là 16 bit. Cùng với các subblock này
là 6 khối subkey cũng sẽ được đưa vào từng modul. Như vậy thêm 4 subkey cần
thiết cho hàm biến đổi cuối cùng, ta cần tổng cộng 52 khối subkey cho một lần

Hình 2.9 Cấu trúc IDEA


46

Như đã nói ở trên, các modul có cấu trúc giống nhau và chỉ khác nhau ở dữ

liệu đầu vào. Trừ modul đầu tiên nhận 64 bit rõ đưa từ ngoài vào, các modul đứng
sau sẽ nhận 4 khối subblock 16 bit đầu ra của modul đứng trước nó làm các bit rõ đầu
vào. Trong quá trình đầu tiên các modul kết hợp 4 subblock với 4 subkey bằng các
phép toán  và . Bốn khối đầu ra của quá trình này XOR với nhau như trong sơ đồ
để tạo ra 2 khối đầu vào cho cấu trúc MA sẽ kết hợp chúng với 2 subkey còn lại để
tạo ra 2 khối 16 bit mới.
Cuối cùng, 4 khối được tạo ra từ quá trình đầu tiên sẽ được XOR với 2 khối
đầu ra của cấu trúc MA để tạo ra 4 khối đầu ra của modul. Ta cũng cần chú ý một
điều là 2 khối đầu vào X2 và X3 được hoán đổi cho nhau để tạo ra 2 khối W12 và
W13 được đưa ra ngoài. Điều này làm tăng sự hoà trộn của các bit được xử lý và
tăng khả năng chống lại các phương pháp mã thám.

Hình 2.10 Cấu trúc một modul (Modul 1)
Hàm biến ở cuối cùng ta cũng có thể coi như một modul thứ 9. Hàm này có
cấu trúc giống như cấu trúc đã thực hiện trong quá trình đầu tiên của một modul chỉ
khác một điều là khối thứ 2 và thứ 3 ở đầu vào được đổi chỗ cho nhau trước khi
được đưa tới đơn vị phép toán. Thực ra đây chỉ là việc trả lại thứ tự đã bị đổi sau


47

modul thứ 8. Lý do của việc này là sự giống nhau về cấu trúc của quá trình giải mã
và q trình mã hố.

Hình 2.11 Hàm biến đổi của IDEA

* Quy tắc tạo ra subkey:
Như trên đã trình bày, cần thiết phải có 52 khối subkey 16 bit được tạo ra từ
128 bit khoá. Quy tắc tạo subkey như sau:
-


8 subkey đầu tiên , Z1...Z8, được lấy trực tiếp từ khố với X1 là 16 bit đầu

( Bit có trọng số cao nhất ), Z2 là 16 bit tiếp theo và cứ tiếp tục như vậy
- Sau đó khố được quay trái 25 bit và 8 subkey tiếp theo được tạo ra theo quy tắc
trên. Thao tác này được lặp lại cho đến khi có đủ 52 khối subkey.
Quy tắc này là một phương pháp hiệu quả cho việc đa dạng hoá các bit khoá
dùng cho các modul. Ta nhận thấy rằng những subkey đầu tiên dùng trong mỗi modul
sử dụng những tập hợp bit khác nhau của khoá. Nếu như khố 128 bit được ký hiệu là
Z[ 1..128] thì subkey đầu tiên của modul sẽ là :
Z1 = Z[ 1..16]

Z25 = Z[76..91]

Z7 = Z[97..112]

Z31 = Z[44..59]

Z13 = Z[90..105]

Z37 = Z[37..52]

Z19 = Z[83..98]

Z43 = Z[30..45]


48

Như vậy , 96 bit subkey sử dụng cho mỗi modul , trừ modul thứ nhất và

modul thứ 8, là khơng liên tục. Do đó khơng có một mối liên hệ dịch chuyển đơn
giản nào giữa các subkey của của một modul và giữa các modul với nhau. Nguyên
nhân có được kết quả này là việc chỉ có 6 khối subkey được sử dụng trong khi có 8
khối subkeyđược tạo ra trong mỗi lần dịch chuyển khoá.

b. Giải mã : Quá trình giải mã về cơ bản giống quá trình mã hoá, giải mã nhận
bản mã ở đầu vào và cùng đi qua những cấu trúc như ở trên, chỉ khác ở sự lựa
chọn các subkey. Các subkey để giải mã U 1, U2 ,...U52 nhận được từ khoá mã
theo quy tắc sau:
Đối với modul giải mã i ta lấy 4 subkey đầu của modul mã hóa thứ (10 - i ), ở
đây hàm biến đổi được coi như modul thứ 9. Sau đó lấy nhân đảo modulo (216+1)
của subkey thứ 1 và thứ 4 để dùng cho subkey giải mã thứ 1 và thứ 4 tương ứng.
Đối với các modul từ thứ 2 đến thứ 8, subkey giải mã thứ 2 và thứ 3 là cộng đảo
modulo216 của subkey thứ 3 và thứ 2 tương ứng. Đối với các modul thứ 1 và thứ 9 ,
cho subkey giải mã thứ 2 và thứ 3 là cộng đảo modul216 của subkey thứ 3 và thứ 2
tương ứng.
-Đối với 8 modul đầu tiên , 2 subkey cuối cùng của modul i là 2 subkey cuối
cùng của modul mã hoá thứ ( 9 - i ).
ở đây nhân đảo Zj-1 của Zj là:
Zj  Zj-1 =1
Vì 216 + 1 là một số nguyên tố nên mỗi số nguyên Zj < 216 có một số nhân đảo
modulo(216 + 1) duy nhất.
Với cộng đảo hai modullo 216 ta có:
-Zj  Zj = 0
Hình sau hiện q trình mã hố ( theo chiều đi xuống bên trái) và quá trình giải
mã ( chiều đi lên bên phải) của thuật toán IDEA.


49


Hình 2.12 Mã hố và giải mã trong IDEA.

Mỗi modul được chia thành 2 khối nhỏ: khối biến đổi và khối mã hố.
Khối biến đổi tương ứng với q trình đầu tiên trong mỗi modul, cịn khối mã hố
tương ứng với các q trình cịn lại. Ở phía cuối của sơ đồ, bên mã hoá ta nhận
được các mối quan hệ giữa các đầu ra và đầu vào của hàm biến đổi:
Y1 = W81  Z49

Y3 = W82  Z51

Y2 = W83  Z50

Y4 = W82  Z52

Tại khối biến đổi của modul thứ nhất trong quá trình giải mã, đầu ra và đầu vào
có mối quan hệ sau:
J11 = Y1  U1

J13 = Y3 U3

J12 = Y2 U2

J14 = Y4  U4

Ta có:
J11 = Y1  Z49 –1 = W81  Z49  Z49-1 =W81
J12 = Y2  -Z50 = W83  Z50  -Z50 = W83
J13 = Y3  -Z51 = W82  Z51  -Z51 = W82
J11 = Y4  Z50 –1 = W84  Z50  Z50-1 =W84
Như vậy, kết quả thu được sau khối biến đổi thứ nhất của q trình giải mã

chính là dữ liệu rõ đưa vào khối mã hoá cuối cùng của q trình mã hố chỉ khác là


50

khối dữ liệu thứ 2 và khối dữ liệu thứ 3 đã đổi chỗ cho nhau. Bây giờ ta sẽ xét đến
mối quan hệ thu được theo Hình 3
W81 = I81  MAR( I81  I83 , I82  I84 )
W82 = I83  MAR( I81  I83 , I82  I84 )
W83 = I82  MAL( I81  I83 , I82  I84 )
W84 = I84  MAL( I81  I83 , I82  I84 )
Trong đó MAR(X,Y) là đầu ra phía bên phải cịn MAL(X,Y) là đầu ra phía bên trái
của cấu trúc MA trong hình 1 khi đầu vào là X và Y. Và:
V11 = J11  MAR (J11  J13, J12  J14)
= W81  MAR(W81  W82, W83  W84)
= I81  MAR( I81  I83 , I82  I84 )  MAR[I81  MAR( I81 
I83 , I82  I84 )  I83  MAR( I81  I83 , I82  I84 ),
I82  MAL( I81  I83 , I82  I84 )  I84  MAL( I81  I83 , I82  I84 )]
= I81  MAR( I81  I83 , I82  I84)  MAR(W81  W82, W83  W84)
=I81
Tương tự ta có :
V12 = I82
V13 = I83
V14 = I84
Như vậy kết quả thu được sau khối mã hoá thứ nhất của quá trình giải mã lại là
dữ liệu đưa vào khối biến đổi của modul cuối cùng của quá trình mã hoá chỉ khác là
khối dữ liệu thứ 2 và khối dữ liệu thứ 3 đã đổi chỗ cho nhau. Cứ như vậy ta sẽ thu được:
V81 = I11
V82 = I13
V83 = I12

V84 =I14
Vì hàm biến đổi cuối cùng của quá trình giải mã cũng giống như khối biến
đổi trong modul đầu tiên của q trình mã hố chỉ khác là có đổi chỗ của khối dữ
liệu thứ 2 và khối dữ liệu thứ 3 nên ta có bản rõ thu được sau bản mã giống bản rõ
đưa vào mã hoá .


×