P. 1
Giao Trinh an Toan Bao Mat Thong Tin

Giao Trinh an Toan Bao Mat Thong Tin

|Views: 1,012|Likes:
Được xuất bản bởiNguyễn Hoàng Tùng

More info:

Published by: Nguyễn Hoàng Tùng on Sep 07, 2011
Bản quyền:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

06/10/2013

pdf

text

original

Sections

  • LỜI NÓI ĐẦU
  • CHƢƠNG I: GIỚI THIỆU
  • 1. An toàn bảo mật thông tin và mật mã học
  • 5. Mật mã học (cryptology)
  • 6. Khái niêm hê ma mât (CryptoSystem)
  • 7. Mô hình truyền tin cơ bản của mật mã học va luât Kirchoff
  • Hình 1.1: Mô hình cơ ban cua truyền tin bao mât
  • 8. Sơ lƣợc về lịch sƣ̉ mật mã học
  • 9. Phân loại các thuật toán mật mã học
  • 10. Một số ƣ́ng dụng của mật mã học
  • CHƢƠNG II: CƠ SỞ TOAN HOC
  • Ly thuyêt thông tin
  • 1. Ly thuyêt thông tin
  • 1.1. Entropy
  • 1.2. Tốc độ của ngôn ngƣ̃. (Rate of Language)
  • 2. Ly thuyêt đô phưc tap
  • 2.1. Đô an toan tinh toán
  • 2.2. Đô an toan không điều kiên
  • 3.3. Hê mât tich
  • 3.2. Số nguyên tố
  • 3.4. Vanh ZN (vanh đông dƣ module N)
  • 3.5. Phần tƣ̉ nghịch đảo
  • 3.6. Ham phi Ơle
  • Bang 2.1: Bang bâc cua cac phân tử trên Z*
  • 3.7. Thặng dƣ bậc hai
  • Bang 2.2: Bang luy thưa trên Z13
  • 3.8. Thuật toán lũy thƣ̀a nhanh
  • 3.9. Thuật toán Ơclit mở rộng
  • 3.10. Phƣơng trình đồng dƣ bậc nhất 1 ân
  • 3.11. Định lý phần dƣ Trung Hoa
  • 4.1. Một số ký hiệu toán học
  • 4.2. Thuật toán Soloway-Strassen
  • 4.3. Thuật toán Rabin-Miller
  • 4.4. Thuật toán Lehmann
  • 5. Bai tâp
  • CHƢƠNG III: CAC HÊ MA KHOA BI MÂT
  • 1.2. Hệ mã Caesar
  • 1.3. Hệ mã Affine
  • 1.4. Hệ mã Vigenere
  • 1.5. Hệ mã Hill
  • 1.6. Hệ mã đổi chỗ (transposition cipher)
  • Bang 3.2: Ma hoa thay đôi vi tri côt
  • Bang 3.3: Ma hóa theo mâu hình hoc
  • Bang 3.4: Vi du ma hóa theo mâu hình hoc
  • 2.1. Mât ma khôi
  • 2.2. Chuân ma hoá dữ liêu DES (Data Encryption Standard)
  • Bang 3.6: Bang hoan vi IP
  • Bang 3.7: Bang hoan vi ngƣợc IP-1
  • Bang 3.9: Bang dich bit tai cac vòng lặp cua DES
  • Hình 3.5: Sơ đô ham f
  • Hình 3.6: Sơ đô ham mở rông (E)
  • Bang 3.12: Hôp S1
  • Bang 3.13: Hôp S2
  • Bang 3.14: Hôp S3
  • Bang 3.15: Hôp S4
  • Bang 3.16: Hôp S5
  • Bang 3.17: Hôp S6
  • Bang 3.18: Hôp S7
  • Bang 3.19: Hôp S8
  • Bang 3.21: Vi du về cac bƣơc thưc hiện của DES
  • 2.3. Các yêu điêm cua DES
  • 2.4. Triple DES (3DES)
  • Hình 3.7: Triple DES
  • 2.5. Chuẩn mã hóa cao cấp AES
  • AES Chuẩn mã hóa cao cấp
  • Hình 3.8: Cac trang thai cua AES
  • Bang 3.27: Bang thê S-Box của AES
  • Hình 3.10: Ham ShifftRows()
  • Hình 3.11: Ham MixColumns cua AES
  • Hình 3.12: Ham AddRoundKey cua AES
  • Hình 3.13: Ham InvShiftRows() cua AES
  • Bang 3.28: Bang thê cho ham InvSubBytes()
  • 2.6. Các cơ chê, hinh thưc sử dụng cua ma hoa khôi (Mode of Operation)
  • Hình 3.14: Cơ chế ECB
  • 3. Bai tâp
  • CHƢƠNG IV: CAC HÊ MA MÂT KHOA CÔNG KHAI
  • 1. Khái niêm hê ma mât khoa công khai
  • Hình 4.1: Mô hình sƣ̉ dụng 1 cua cac hê ma khóa công khai PKC
  • Hình 4.2: Mô hình sƣ̉ dụng 2 cua cac hê ma khóa công khai PKC
  • 2. Nguyên tắc cấu tạo của các hệ mã mật khóa công khai
  • Bang 4.1: Tốc độ của thuật toán Brent-Pollard
  • Hình 4.3: Mô hình ƣ́ng dụng lai ghép RSA với các hệ mã khối
  • 3.3. Hệ mã El Gamal
  • 3.4. Các hê ma mât dưa trên các đƣơng cong Elliptic
  • Hình 4.6: Phƣơng pháp trao đổi khóa Diffie-Hellman dƣ̣a trên ECC
  • Bang 4.3: Bang so sanh cac hê ma ECC vơi hê ma RSA
  • CHƢƠNG V: CHƢ̃ KÝ ĐIỆN TƢ̉ VA HAM BĂM
  • 1.2. Hê chữ ky RSA
  • 1.3. Hê chữ ky ElGammal
  • 1.4. Chuân chữ ky điên tử (Digital Signature Standard)
  • 1.5. Mô hình ƣ́ng dụng của chƣ̃ ký điện tƣ̉
  • Hình 5.1: Mô hình ƣ́ng dụng của chƣ̃ ký điện tƣ̉
  • Hình 5.2: Sơ đô chữ ky sử dung ham Băm
  • 2.2. Đăc tinh cua ham Băm
  • 2.3. Birthday attack
  • 2.4. Môt sô ham Băm nôi tiêng
  • Hình 5.3: Sơ đô vòng lặp chinh cua MD5
  • 2.5. Môt sô ƣ́ng dụng của ham Băm
  • CHƢƠNG VI: QUAN LY KHOA
  • 2.2. Hê phân phôi khoá Kerberos
  • 2.3. Hê phân phôi khóa Diffe-Hellman
  • 3.2. Giao thưc trao đôi khoá Diffie-Hellman co chưng chỉ xác nhân
  • 3.3. Giao thưc trao đôi khoá Matsumoto-Takashima-Imai
  • 3.4. Giao thưc Girault trao đôi khoá không chưng chỉ
  • 4.Bai tâp
  • CHƢƠNG VII: GIAO THƢ́C MẬT MA
  • 1. Giao thưc
  • 3. Các bên tham gia vao giao thưc (the players in protocol)
  • 4.2. Giao thưc co ngƣơi phân xử
  • 4.3. Giao thưc tƣ̣ phân xƣ̉
  • 5. Các dang tân công đôi vơi giao thưc
  • TAI LIÊU THAM KHAO

BỘ GIAO THÔNG VẬN TẢI

TRƯỜNG ĐẠI HỌC HÀNG HẢI
BỘ MÔN: KHOA HỌ C MÁ Y TÍ NH
KHOA: CÔNG NGHỆ THÔNG TIN




Giáo trình

AN TOÀN VÀ BẢO MẬT THÔNG TIN




TÊN HỌC PHẦN : An toàn và bảo mật Thông tin
MÃ HỌC PHẦN : 17212
TRÌNH ĐỘ ĐÀO TẠO : ĐẠI HỌC CHÍNH QUY
DÙNG CHO SV NGÀNH : CÔNG NGHỆ THÔNG TIN















HẢI PHÒNG - 2008


Tên học phần: An toa
̀
n ba
̉
o mâ ̣ t thông tin Loại học phần: II
Bộ môn phụ trách giảng dạy: Khoa học máy tính.
Khoa phụ trách: Công nghệ thông tin
Mã học phần: Tổng số TC: 3

TS tiết Lý thuyết Thực hành/ Xemina Tự học Bài tập lớn Đồ án môn học
75 45 30 0 0 0

Điều kiện tiên quyết:
Sinh viên cầ n họ c xong ca
́
c họ c phầ n:
- Lâ ̣ p tri
̀
nh hươ
́
ng đố i tượ ng
- Cấ u tru
́
c dư
̃
liê ̣ u
- Phân ti
́
ch, thiế t kế va
̀
đa
́
nh gia
́
thuâ ̣ t toa
́
n.
Mục đích của học phần:
Truyền đạt cho sinh viên những kiến thức cơ bản về các lĩnh vực riêng trong an
toàn bảo mật máy tính:
- Các giải thuật mã hóa trong truyền tin.
- Các thuật toán tạo hàm băm và chữ ký điện tử.
- Các mô hình trao chuyển khóa.
- Các mô hình chứng thực và các giao thức mật mã.
Nội dung chủ yếu:
Gồ m 2 phầ n:
- Phầ n ly
́
thuyế t: cung cấ p ca
́
c ly
́
thuyế t về thuâ ̣ t toa
́
n ma
̃
ho
́
a, các giao thức.
- Phầ n lâ ̣ p tri
̀
nh: cài đăt các hệ mã, viế t ca
́
c ư
́
ng dụ ng sư
̉
dụ ng ca
́
c hê ̣ ma
̃
mâ ̣ t
Nội dung chi tiết của học phần:


Tên chương mục
Phân phối số tiết
TS LT Xemine BT KT
Chương I. Giới thiệu nhiệm vụ của an toàn và bảo
mật thông tin.
4 3 1 0 0
1.1. Các khái niệm mở đầu.
1.1.1. Thành phần của một hệ thống thông tin
1.1.2. Những mối đe dọa và thiệt hại đối với hệ thống
thông tin.
1.1.3. Giải pháp điều khiển kiểm soát an toàn bảo mật
1.2. Mục tiêu và nguyên tắc chung của ATBM.
1.2.1. Ba mục tiêu.
1.2.2. Hai nguyên tắc
1.3. Giới thiệu chung về các mô hình mật mã.
1.3.1. Mô hình cơ bản trong truyền tin và luật Kirchoff.
1.3.2. Những giai đoạn phát triển của lý thuyết mã hóa.
1







1

1










1



Chương II. Một số phương pháp mã hóa cổ điển. 13 5 5 2 1
2.1. Phương pháp mã đơn giản.
2.1.1. Mã hoán vị trong bảng Alphabet.
2.1.2. Mật mã cộng tính.
2.2.3. Mật mã nhân tính.
2.1.4. Phân tích mã theo phương pháp thống kê.
2.2. Phương pháp mã bằng phẳng đồ thị tần xuất.
2.2.1. Mã với bảng thế đồng âm.
2.2.2. Mã đa bảng thế: giải thuật mã Vigenre và One time
pad.
2.2.3. Lý thuyết về sự bí mật tuyệt đối.
2.2.4. Đánh giá mức độ bảo mật của một phương pháp
mã hóa.
Kiể m tra
2





3





2





3
1





1













1
Chương III. Mật mã khối. 16 8 7 1 0
3.1. Khái niệm.
3.1.1. Điều kiện an toàn cho mật mã khối
3.1.2. Nguyên tắc thiết kế.
3.2. Chuẩ n ma
̃
ho
́
a dư
̃
liê ̣ u DES
3.2.1. Lịch sử của DES
3.2.2. Cấu trúc vòng lăp DES.
3.2.3. Thuật toán sinh khóa con
3.2.4. Cấu trúc hàm lăp.
3.2.5. Thuật toán giải mã DES.
3.2.6. Đánh giá mức độ an toàn bảo mật của DES.
3.2.7. TripleDES
3.3. Chuẩ n ma
̃
ho
́
a cao cấ p AES
3.3.1. Giơ
́
i thiê ̣ u về AES
3.3.2. Thuâ ̣ t toa
́
n ma
̃
ho
́
a
3.3.3. Thuâ ̣ t toa
́
n gia
̉
i ma
̃

3.3.4. Cài đăt AES
3.4 Một số chế độ sử dụng mã khối.
3.4.1. Chế độ bảng tra mã điện tử
3.4.2. Chế độ mã móc xích
3.4.3. Chế độ mã phản hồi
1


3







3




1



3







3




1



0,5







0,5

Chương IV. Hệ thống mã với khóa công khai. 16 6 7 2 1
4.1. Khái niệm khóa công khai.
4.1.1. Đăc trưng và ứng dụng của hệ mã khóa công khai.
4.1.2. Nguyên tắc cấu tạo hệ khóa công khai
4.2. Giới thiệu một số giải thuật PKC phổ biến.
4.1.1. Hệ mã Trapdoor Knapsack.
4.1.2. Hệ mã RSA
1



1
2




1
3



2








4.1.3. Hệ mã ElGamal
Kiểm tra
2 3
1
Chương V. Chữ ký điện tử và hàm băm. 12 7 5 0 0
5.1. Chữ ký điện tử.
5.1.1. Định nghĩa.
5.1.2. Ứng dụng của chữ ký điện tử
5.2. Giơ
́
i thiê ̣ u mộ t số hê ̣ chư
̃
ky
́
điê ̣ n tư
̉

5.2.1. Hê ̣ chư
̃
ky
́
điê ̣ n tư
̉
RSA
5.2.2. Hê ̣ chư
̃
ky
́
điê ̣ n tư
̉
ElGamal
5.2.3. Chuẩ n chư
̃
ky
́
điê ̣ n tư
̉
DSA
5.3. Hàm băm.
5.3.1. Định nghĩa.
5.3.2. Sinh chữ ký điện tử với hàm băm
5.4. Mộ t số ha
̀
m băm thông dụ ng
5.4.1. Hàm băm MD5
5.4.2. Hàm băm SHA1
0,5


3



0,5


3





2






1,5
1,5

Chương VI. Quản lý khóa trong hệ thống mật mã 8 5 3 0 0
6.1. Quản lý khóa đối với hệ SKC
6.1.1. Giới thiệu phương pháp quản lý khóa.
6.2. Quản lý khóa trong các hệ PKC
6.2.1. Giao thức trao chuyển khóa Needham – Schoeder
6.2.2. Giao thư
́
c trao đổ i kho
́
a Diffie-Hellman
6.2.3. Giao thư
́
c Kerberos
1

1
1
1
1




1
2

Chương VII. Giao thức mật mã 6 3 2 0 1
7.1. Khái niệm giao thức mật mã
7.1.1. Định nghĩa giao thức mật mã
7.1.2. Mục đích giao thức mật mã.
7.1.3. Các bên tham gia vào giao thức mật mã
7.2. Tìm hiểu thiết kế các giao thức mật mã điển hình
7.2.1. Một số dạng tấn công đối với giao thức mật mã.
7.2.2. Giới thiệu một số giao thức mật mã.
7.3. Kiểm tra.
1



2







2







1

Nhiệm vụ của sinh viên: Lên lớp đầy đủ và chấp hành mọi quy định của Nhà trường.

Tài liệu học tập:
1. Phan Đình Diệu. Lý thuyết mật mã và An toàn thông tin. Đại học Quốc Gia Hà
Nội.
2. Douglas R. Stinson. Cryptography Theory and practice. CRC Press. 1995.
3. A. Menezes, P. VanOorschot, and S. Vanstone. Handbook of Applied
Cryptography. CRC Press. 1996.


4. William Stallings. Cryptography and Network Security Principles and Practices,
Fourth Edition. Prentice Hall. 2005.
5. MichaelWelschenbach. Cryptography in C and C++. Apress. 2005.

Hình thức và tiêu chuẩn đánh giá sinh viên:
- Sinh viên phải làm các bài kiểm tra trong quá trình học và thực hành. Thi vấn đáp.
- Sinh viên phải bảo đảm các điều kiện theo Quy chế của Nhà trường và của Bộ.

Thang điểm : Thang điểm 10.
Điểm đánh giá học phần: Z = 0,3 X + 0,7 Y.



MUC LUC
LỜ I NÓ I ĐÂ
̀
U .................................................................................................................... 1
CHƢƠNG I: GIỚ I THIỆ U .................................................................................................. 2
1. An toa
̀
n ba
̉
o mậ t thông tin va
̀
mậ t ma
̃
họ c ................................................................. 2
2. Khai niêm hê thông va tai san cua hê thông .............................................................. 2
3. Cac môi đe doa đôi vơi môt hê thông va
̀
ca
́
c biệ n pha
́
p ngăn chặ n ........................... 2
4. Muc tiêu va nguyên tăc chung cua an toan bao mât thông tin ................................... 3
5. Mậ t ma
̃
họ c (cryptology) ............................................................................................ 4
6. Khai niêm hê ma mât (CryptoSystem) ....................................................................... 4
7. Mô hi
̀
nh truyề n tin cơ ba
̉
n cu
̉
a mậ t ma
̃
họ c va
̀
luậ t Kirchoff ....................................... 5
8. Sơ lƣợ c về li ̣ ch sƣ
̉
mậ t ma
̃
họ c .................................................................................. 6
9. Phân loạ i ca
́
c thuậ t toa
́
n mậ t ma
̃
họ c ......................................................................... 8
10. Mộ t số ƣ
́
ng dụ ng cu
̉
a mậ t ma
̃
họ c ........................................................................... 8
CHƢƠNG II: CƠ SỞ TOAN HOC ................................................................................... 10
1. Ly thuyêt thông tin ................................................................................................... 10
1.1. Entropy ............................................................................................................. 10
1.2. Tố c độ cu
̉
a ngôn ngƣ
̃
. (Rate of Language) ....................................................... 11
1.3. Tinh an toan cua hê thông ma hoa ................................................................... 11
1.4. Ky thuât lôn xôn va rƣơm ra (Confusion and Diffusion)..................................... 12
2. Ly thuyêt đô phưc tap .............................................................................................. 13
2.1. Đô an toan tinh toan ......................................................................................... 14
2.2. Đô an toan không điều kiên .............................................................................. 14
3.3. Hê mât tich ....................................................................................................... 16
3. Ly thuyêt toan hoc ................................................................................................... 17
3.1. Modulo số họ c .................................................................................................. 17
3.2. Số nguyên tố .................................................................................................... 17
3.3. Ƣơc số chung lơ
́
n nhấ t ..................................................................................... 17
3.4. Vanh Z
N
(vanh đông dƣ module N) ................................................................... 18
3.5. Phầ n tƣ
̉
nghi ̣ ch đa
̉
o .......................................................................................... 18
3.6. Ham phi Ơle ..................................................................................................... 19
3.7. Thặ ng dƣ bậ c hai.............................................................................................. 19
3.8. Thuậ t toa
́
n lu
̃
y thƣ
̀
a nhanh ................................................................................ 20
3.9. Thuậ t toa
́
n Ơclit mơ
̉
rộ ng .................................................................................. 21
3.10. Phƣơng tri
̀
nh đồ ng dƣ bậ c nhấ t 1 ân .............................................................. 22
3.11. Đi ̣ nh ly
́
phầ n dƣ Trung Hoa. ............................................................................ 22
4. Cac thuât toan kiêm tra sô nguyên tô. ..................................................................... 23
4.1. Mộ t số ky
́
hiệ u toa
́
n họ c .................................................................................... 23
4.2. Thuậ t toa
́
n Soloway-Strassen ........................................................................... 25
4.3. Thuậ t toa
́
n Rabin-Miller..................................................................................... 26
4.4. Thuậ t toa
́
n Lehmann. ........................................................................................ 26
5. Bai tâp ..................................................................................................................... 26
CHƢƠNG III: CAC HÊ MA KHOA BI MÂT ...................................................................... 28
1. Cac hê ma cô điên ................................................................................................... 28
1.1. Hệ ma
̃
hoa
́
thay thế (substitution cipher) ........................................................... 28
1.2. Hệ ma
̃
Caesar .................................................................................................. 28
1.3. Hệ ma
̃
Affine ..................................................................................................... 29
1.4. Hệ ma
̃
Vigenere ................................................................................................ 30
1.5. Hệ ma
̃
Hill ......................................................................................................... 30
1.6. Hệ ma
̃
đổ i chỗ (transposition cipher)................................................................. 32
2. Cac hê ma khôi ....................................................................................................... 34
2.1. Mât ma khôi ...................................................................................................... 34
2.2. Chuân ma hoa dữ liêu DES (Data Encryption Standard) .................................. 35
2.3. Cac yêu điêm cua DES ..................................................................................... 51


2.4. Triple DES (3DES) ............................................................................................ 52
2.5. Chuẩ n ma
̃
ho
́
a cao cấ p AES ............................................................................. 54
2.6. Cac cơ chê, hình thưc sử dung cua ma hóa khôi (Mode of Operation) ............. 68
3. Bai tâp ..................................................................................................................... 72
CHƢƠNG IV: CAC HÊ MA MÂT KHOA CÔNG KHAI...................................................... 77
1. Khai niêm hê ma mât khóa công khai ...................................................................... 77
2. Nguyên tắ c cấ u tạ o cu
̉
a ca
́
c hệ ma
̃
mậ t kho
́
a công khai .......................................... 78
3. Mộ t số hệ ma
̃
kho
́
a công khai .................................................................................. 78
3.1. Hệ ma
̃
knapsack ............................................................................................... 78
3.2. Hệ ma
̃
RSA ....................................................................................................... 79
3.3. Hệ ma
̃
El Gamal ............................................................................................... 83
3.4. Cac hê ma mât dưa trên cac đƣơng cong Elliptic ............................................. 85
4. Bai tâp ..................................................................................................................... 96
CHƢƠNG V: CHƢ̃ KÝ ĐIỆ N TƢ̉ VÀ HÀ M BĂM ............................................................ 101
1. Chƣ
̃
ky
́
điệ n tƣ
̉
....................................................................................................... 101
1.1. Khai niêm về chữ ky điên tử ........................................................................... 101
1.2. Hê chữ ky RSA ............................................................................................... 102
1.3. Hê chữ ky ElGammal ...................................................................................... 103
1.4. Chuân chữ ky điên tử (Digital Signature Standard) ......................................... 106
1.5. Mô hi
̀
nh ƣ
́
ng dụ ng cu
̉
a chƣ
̃
ky
́
điệ n tƣ
̉
................................................................ 108
2. Ham Băm (Hash Function) .................................................................................... 109
2.1. Khai niêm ....................................................................................................... 109
2.2. Đặc tinh cua ham Băm ................................................................................... 109
2.3. Birthday attack ................................................................................................ 110
2.4. Môt sô ham Băm nôi tiêng .............................................................................. 111
2.5. Môt sô ƣ
́
ng dụ ng cu
̉
a ham Băm ...................................................................... 118
3. Bai tâp ................................................................................................................... 119
CHƢƠNG VI: QUAN LY KHOA ..................................................................................... 120
1. Quan ly
́
khoa trong cac mang truyền tin ................................................................ 120
2. Môt sô hê phân phôi khoa ..................................................................................... 120
2.1. Sơ đô phân phôi khoa Blom ........................................................................... 120
2.2. Hê phân phôi khoa Kerberos .......................................................................... 122
2.3. Hê phân phôi kho
́
a Diffe-Hellman ................................................................... 123
3. Trao đôi khoa va thoa thuân khoa ......................................................................... 124
3.1. Giao thưc trao đôi khoa Diffie-Hellman ........................................................... 124
3.2. Giao thưc trao đôi khoa Diffie-Hellman có chưng chỉ xac nhân ....................... 125
3.3. Giao thưc trao đôi khoa Matsumoto-Takashima-Imai ...................................... 126
3.4. Giao thưc Girault trao đôi khoa không chưng chỉ ............................................ 127
4.Bai tâp .................................................................................................................... 128
CHƢƠNG VII: GIAO THƢ́ C MẬT MÃ ........................................................................... 130
1. Giao thưc .............................................................................................................. 130
2. Muc đich cua cac giao thưc ................................................................................... 130
3. Cac bên tham gia vao giao thưc (the players in protocol) ...................................... 131
4. Cac dang giao thưc ............................................................................................... 132
4.1. Giao thưc có trong tai ..................................................................................... 132
4.2. Giao thưc có ngƣơi phân xử ........................................................................... 133
4.3. Giao thưc tƣ̣ phân xƣ
̉
..................................................................................... 134
5. Cac dang tấn công đôi vơi giao thưc ..................................................................... 134
TAI LIÊU THAM KHAO.................................................................................................. 136
Danh mục hình vẽ

DANH MỤC HÌ NH VẼ
Hình 1.1: Mô hình cơ ban cua truyền tin bao mât .............................................................. 5
Hình 3.1: Chuẩ n ma
̃
ho
́
a dƣ
̃
liệ u DES ............................................................................. 36
Hình 3.2: Sơ đô ma hoa DES .......................................................................................... 38
Hình 3.3: Sơ đô môt vòng DES ....................................................................................... 39
Hình 3.4: Sơ đô tao khoa con cu
̉
a DES .......................................................................... 41
Hình 3.5: Sơ đô ham f ..................................................................................................... 43
Hình 3.6: Sơ đô ham mở rông (E) ................................................................................... 44
Hình 3.7: Triple DES ....................................................................................................... 53
Hình 3.8: Cac trang thai cua AES .................................................................................... 56
Hình 3.9: Thuậ t toan ma hóa va giai ma cua AES ........................................................... 59
Hình 3.10: Ham ShifftRows() ........................................................................................... 62
Hình 3.11: Ham MixColumns cua AES ............................................................................ 63
Hình 3.12: Ham AddRoundKey cua AES ......................................................................... 63
Hình 3.13: Ham InvShiftRows() cua AES ......................................................................... 66
Hình 3.14: Cơ chế ECB ................................................................................................... 69
Hình 3.15: Chế độ CBC ................................................................................................... 70
Hình 3.16: Chê đô CFB ................................................................................................... 71
Hình 4.1: Mô hi
̀
nh sƣ
̉
dụ ng 1 cua cac hê ma khóa công khai PKC .................................. 78
Hình 4.2: Mô hi
̀
nh sƣ
̉
dụ ng 2 cua cac hê ma khóa công khai PKC .................................. 78
Hình 4.3: Mô hi
̀
nh ƣ
́
ng dụ ng lai ghe
́
p RSA vơ
́
i ca
́
c hệ ma
̃
khố i ........................................ 83
Hình 4.4: Cac đƣơng cong Elliptic trên trƣơ
̀
ng số thƣ̣ c ................................................... 87
Hình 4.5: Hình biêu diên E
2
4
(g
4
, 1) .................................................................................. 92
Hình 4.6: Phƣơng pha
́
p trao đổ i kho
́
a Diffie-Hellman dƣ̣ a trên ECC ................................ 94
Hình 5.1: Mô hi
̀
nh ƣ
́
ng dụ ng cu
̉
a chƣ
̃
ky
́
điệ n tƣ
̉
........................................................... 108
Hình 5.2: Sơ đô chữ ky sử dung ham Băm ................................................................... 109
Hình 5.3: Sơ đô vòng lặp chinh cua MD5 ...................................................................... 112
Hình 5.4: Sơ đô môt vòng lặp MD5 ............................................................................... 113
Hình 5.5: Sơ đô môt vòng lặp cua SHA ......................................................................... 117

Danh mục bảng

DANH MỤC BẢ NG
Bang 2.1: Bang bâc cua cac phân tử trên Z
*
21
................................................................. 19
Bang 2.2: Bang luy thưa trên Z
13
..................................................................................... 20
Bang 3.1: Bang đanh sô cac chữ cai tiêng Anh ............................................................... 29
Bang 3.2: Ma hoa thay đôi vi tri côt ................................................................................. 32
Bang 3.3: Ma hóa theo mâu hình hoc .............................................................................. 33
Bang 3.4: Vi du ma hóa theo mâu hình hoc .................................................................... 33
Bang 3.5: Ma hóa hoan vi theo chu ky ............................................................................ 34
Bang 3.6: Bang hoan vi IP ............................................................................................... 39
Bang 3.7: Bang hoan vi ngƣơc IP
-1
................................................................................. 39
Bang 3.8: Bang PC-1 ...................................................................................................... 41
Bang 3.9: Bang dich bit tai cac vòng lặp cua DES ........................................................... 42
Bang 3.10: Bang PC-2 .................................................................................................... 42
Bang 3.11: Bang mô ta ham mở rông E .......................................................................... 44
Bang 3.12: Hôp S
1
........................................................................................................... 45
Bang 3.13: Hôp S
2
........................................................................................................... 45
Bang 3.14: Hôp S
3
........................................................................................................... 45
Bang 3.15: Hôp S
4
........................................................................................................... 46
Bang 3.16: Hôp S
5
........................................................................................................... 46
Bang 3.17: Hôp S
6
........................................................................................................... 46
Bang 3.18: Hôp S
7
........................................................................................................... 46
Bang 3.19: Hôp S
8
........................................................................................................... 46
Bang 3.20: Bang hoan vi P .............................................................................................. 47
Bang 3.21: Vi du về cac bƣơc thưc hiên cua DES .......................................................... 50
Bang 3.22: Cac khóa yêu cua DES ................................................................................. 51
Bang 3.23: Cac khóa nửa yêu cua DES .......................................................................... 51
Bang 3.24: Qui ƣơ
́
c mộ t số tƣ
̀
viế t tắ t va
̀
thuậ t ngữ cua AES .......................................... 54
Bang 3.25: Bang biêu diên cac xâu 4 bit ......................................................................... 56
Bang 3.26: Bang đô dai khóa cua AES ............................................................................ 57
Bang 3.27: Bang thê S-Box cu
̉
a AES .............................................................................. 61
Bang 3.28: Bang thê cho ham InvSubBytes() .................................................................. 66
Bang 4.1: Tố c độ cu
̉
a thuậ t toa
́
n Brent-Pollard ................................................................ 81
Bang 4.2: Biể u diễ n cu
̉
a tậ p E23(1, 1) ............................................................................. 89
Bang 4.3: Bang so sanh cac hê ma ECC vơi hê ma RSA ................................................ 95


̀
i no
́
i đầ u
1
LỜ I NÓ I ĐÂ
̀
U
Tư trƣơc công nguyên con ngƣơi đa phai quan tâm tơi viêc lam thê nao đê đam
bao an toan bi mât cho cac tai liêu, văn ban quan trong, đặc biêt la trong lĩnh vưc quân
sư, ngoai giao. Ngay nay vơi sư xuất hiên cua may tinh, cac tai liêu văn ban giấy tơ va
cac thông tin quan trong đều đƣơc sô hóa va xử ly trên may tinh, đƣợ c truyền đi trong
môt môi trƣơng ma mặc đinh la không an toàn. Do đó yêu câu về viêc có môt cơ chê, giai
phap đê bao vê sư an toan va bi mât cua cac thông tin nhay cam, quan trọ ng ngày càng
trở nên cấp thiêt. Mât ma hoc chinh la nganh khoa hoc đam bao cho muc đich nay. Khó
có thê thấy môt ưng dung Tin họ c có ích nào lai không sử dung cac thuât toan ma hóa
thông tin. Tai liêu nay dưa trên những kinh nghiêm va nghiên cưu ma tac gia đa đúc rút,
thu thâp trong qua trình giang day môn hoc An toan va Bao mât Thông tin tai khoa Công
nghê Thông tin, Đai hoc Hang hai Viêt nam. Vơi bay chƣơng đƣơc chia thanh cac chu đề
khac nhau tư cơ sở toan hoc cua mât ma hoc cho tơi cac hê ma, cac giao thưc mât ma,
hy vong sẽ cung cấp cho cac em sinh viên, cac ban đôc gia môt tai liêu bô ich. Mặc dù đa
rất cô găng song vân không tranh khỏi môt sô thiêu sót, hy vong sẽ đƣơc cac ban bè
đông nghiêp, các em sinh viên, cac ban đôc gia góp y chân thanh đê tôi có thê hoan thiên
hơn nữa cuố n sa
́
ch này.
Xin gửi lơi cam ơn chân thanh tơi cac ban bè đông nghiêp , nhƣ
̃
ng ngƣơ
̀
i thân đa
̃

luôn độ ng viên, góp y cho tôi trong qua trình biên soan . Xin gƣ
̉
i lơ
̀
i ca
̉
m ơn tơ
́
i Thạ c sy
̃

Nguyễ n Đi
̀
nh Dƣơng, ngƣơ
̀
i đa
̃
đọ c va
̀
cho nhƣ
̃
ng nhậ n xe
́
t , góp y qui bau cho phân viêt
về hệ ma
̃
kho
́
a công khai dƣ̣ a trên ca
́
c đƣơ
̀
ng cong Elliptic. Xin gƣ
̉
i lơ
̀
i ca
̉
m ơn sâu sắ c tơ
́
i
Thac sy Pham Tuấn Đat , ngƣơ
̀
i đa
̃
hiệ u đi
́
nh mộ t ca
́
ch ky
̃
ca
̀
ng va
̀
cho rấ t nhiề u nhậ n xe
́
t
có gia tri cho ban thao cua cuôn sach nay . Cuố i cu
̀
ng xin gƣ
̉
i lơ
̀
i ca
̉
m ơn tơ
́
i Ban chu
nhiêm khoa Công nghê Thông tin, đặ c biệ t la
̀
Tiế n sy
̃
Lê Quố c Đi ̣ nh – chu nhiêm khoa, đa
luôn tao điều kiên tố t nhấ t, giúp đỡ đê cuố n sa
́
ch nay có thê hoan thanh.

Hải phòng, tháng 12 năm 2007
Tác giả


Nguyên Hữu Tuân

Chƣơng I: Giơ
́
i thiệ u
2
CHƢƠNG I: GIỚ I THIỆ U
1. An toa
̀
n ba
̉
o mậ t thông tin va
̀
mậ t ma
̃
họ c
Trai qua nhiều thê ky hang loat cac giao thƣ
́
c (protocol) va cac cơ chê (mechanism)
đa
̃
đƣợ c tạ o ra để đa
́
p ƣ
́
ng nhu cầ u an toa
̀
n ba
̉
o mậ t thông tin khi ma
̀
no
́
đƣợ c truyề n ta
̉
i
trên ca
́
c phƣơng tiệ n vậ t ly
́
(giấ y, sach, bao …). Thƣơ
̀
ng thi
̀
ca
́
c mụ c tiêu cu
̉
a an toa
̀
n ba
̉
o
mậ t thông tin không thể đạ t đƣợ c nế u chi
̉
đơn thuầ n dƣ̣ a va
̀
o ca
́
c thuậ t toa
́
n toa
́
n họ c va
̀

cac giao thưc, ma đê đat đƣơc điều nay đòi hỏi cân có cac ky thuât mang tinh thu tuc va
sƣ̣ tôn trọ ng ca
́
c điề u luậ t . Chẳ ng hạ n sƣ̣ bi
́
mậ t cu
̉
a ca
́
c bƣ
́
c thƣ tay la
̀
do sƣ̣ phân pha
́
t
cac la thƣ đa có đóng dấu bởi môt dich vu thƣ tin đa đƣơc chấp nhân . Tinh an toan về
mặ t vậ t ly
́
cu
̉
a ca
́
c la
́
thƣ la
̀
hạ n chế (nó có thê bi xem trôm ) nên để đa
̉
m ba
̉
o sƣ̣ bi
́
mậ t
cua bưc thƣ phap luât đa đƣa ra qui đinh : việ c xem thƣ ma
̀
không đƣợ c sƣ̣ đồ ng y
́
cu
̉
a
chu nhân hoặc những ngƣơi có thâm quyền la pham phap va sẽ bi trưng phat . Đôi khi
muc đich cua an toan bao mât thô ng tin lạ i đạ t đƣợ c nhơ
̀
chinh phƣơng tiệ n vậ t ly
́
mang
chúng, chẳ ng hạ n nhƣ tiề n giấ y đo
̀
i ho
̉
i pha
̉
i đƣợ c in bằ ng loạ i mƣ̣ c va
̀
giấ y tố t để không
bi lam gia.
Về mặ t y
́
tƣơ
̉
ng việ c lƣu giƣ
̃
thông tin la
̀
không co
́
nhiề u thay đổ i đa
́
ng kể qua thơ
̀
i
gian. Ngay xƣa thông tin thƣơng đƣơc lƣu va vân chuyên trên giấy tơ , trong khi giơ
̀
đây
chúng đƣơc lƣu dƣơi dang sô hóa va đƣơc vân chuyên băng cac hê thông viên thông
hoặ c ca
́
c hệ thố ng không dây . Tuy nhiên sƣ̣ thay đổ i đa
́
ng kể đế n ơ
̉
đây chi
́
nh la
̀
kha
̉

năng sao che
́
p va
̀
thay đổ i thông tin. Ngƣơ
̀
i ta co
́
thể tạ o ra ha
̀
ng nga
̀
n mẩ u tin giố ng nhau
va không thê phân biêt đƣơc nó vơi ban gôc . Vơ
́
i ca
́
c ta
̀
i liệ u lƣu trƣ
̃
va
̀
vậ n chuyể n trên
giấ y điề u na
̀
y kho
́
khăn hơn nhiề u. Va điều cân thiêt đôi vơi môt xa hôi ma thông tin hâu
hế t đƣợ c lƣu trƣ
̃
va
̀
vậ n chuyể n trên ca
́
c phƣơng tiệ n điệ n tƣ
̉
chi
́
nh la
̀
ca
́
c phƣơng tiệ n
đa
̉
m ba
̉
o an toa
̀
n ba
̉
o mậ t thông tin độ c lậ p vơ
́
i ca
́
c phƣơng tiệ n lƣu trƣ
̃
va vân chuyên vât
ly cua nó . Phƣơng tiệ n đo
́
chi
́
nh la
̀
mậ t ma
̃
họ c , mộ t nga
̀
nh khoa họ c co
́
li ̣ ch sƣ
̉
lâu đơ
̀
i
dƣ̣ a trên nề n ta
̉
ng ca
́
c thuậ t toa
́
n toa
́
n họ c, số họ c, xac suất va cac môn khoa hoc khac.
2. Khái niêm hê thông va tai sản cua hê thông
Khai niêm hê thông : Hệ thố ng la
̀
mộ t tậ p hợ p ca
́
c ma
́
y ti
́
nh gồ m ca
́
c tha
̀
nh phầ n
phấ n cƣ
́
ng, phầ n mề m va
̀

̃
liệ u la
̀
m việ c đƣợ c ti
́
ch luy
̃
qua thơ
̀
i gian.
Tai san cua hê thông bao gôm:
- Phầ n cƣ
́
ng
- Phầ n mề m
- Dƣ
̃
liệ u
- Cac truyền thông giữa cac may tinh cua hê thông
- Môi trƣơ
̀
ng la
̀
m việ c
- Con ngƣơ
̀
i
3. Các môi đe doa đôi vơi môt hê thông va các biên pháp ngăn chăn
Co 3 hinh thưc chu yêu đe doa đôi vơi hê thông:
Chƣơng I: Giơ
́
i thiệ u
3
- Pha hoai: ke thù pha hỏng thiêt bi phân cưng hoặc phân mềm hoat đông trên hê
thố ng.
- Sƣ
̉
a đổ i: Tai san cua hê thông bi sửa đôi trai phep. Điề u na
̀
y thƣơ
̀
ng la
̀
m cho hệ
thố ng không la
̀
m đu
́
ng chƣ
́
c năng cu
̉
a no
́
. Chẳ ng hạ n nhƣ thay đổ i mậ t khẩ u,
quyề n ngƣơ
̀
i du
̀
ng trong hệ thố ng la
̀
m họ không thể truy cậ p va
̀
o hệ thố ng để
lam viêc.
- Can thiệ p : Tai san bi truy câp bởi những ngƣơi không có thâm quyền . Cac
truyề n thông thƣ̣ c hiệ n trên hệ thố ng bi ̣ ngăn chặ n, sƣ
̉
a đổ i.
Cac đe doa đôi vơi môt hê thông thông tin có thê đên tư nhiều nguôn va đƣơc thưc
hiệ n bơ
̉
i ca
́
c đố i tƣợ ng kha
́
c nhau . Chúng ta có thê chia thanh 3 loai đôi tƣơng nhƣ sau :
cac đôi tƣơng tư ngay bên trong hê thông (insider), đây la
̀
nhƣ
̃
ng ngƣơ
̀
i co
́
quyề n truy cậ p
hợ p pha
́
p đố i vơ
́
i hệ thố ng , nhƣ
̃
ng đố i tƣợ ng bên ngoa
̀
i hệ thố ng (hacker, cracker),
thƣơ
̀
ng ca
́
c đố i tƣợ ng na
̀
y tấ n công qua nhƣ
̃
ng đƣơ
̀
ng kế t nố i vơ
́
i hệ thố ng nhƣ Internet
chẳ ng hạ n, va thƣ
́
ba la
̀
ca
́
c phầ n mề m (chẳ ng hạ n nhƣ spyware, adware …) chay trên hê
thố ng.
Các biên pháp ngăn chăn:
Thƣơ
̀
ng co
́
3 biệ n pha
́
p ngăn chặ n:
- Điề u khiể n thông qua phầ n mề m : dƣ̣ a va
̀
o ca
́
c cơ chế an toa
̀
n ba
̉
o mậ t cu
̉
a hệ
thố ng nề n (hệ điề u ha
̀
nh), cac thuât toan mât ma hoc
- Điề u khiể n thông qua phầ n cƣ
́
ng : cac cơ chê bao mât , cac thuât toan mât ma
hoc đƣơc cưng hóa đê sử dung
- Điề u khiể n thông qua ca
́
c chi
́
nh sa
́
ch cu
̉
a tổ chƣ
́
c : ban ha
̀
nh ca
́
c qui đi ̣ nh cua tô
chƣ
́
c nhằ m đa
̉
m ba
̉
o ti
́
nh an toa
̀
n ba
̉
o mậ t cu
̉
a hệ thố ng.
Trong môn họ c na
̀
y chu
́
ng ta tậ p trung xem xe
́
t ca
́
c thuậ t toa
́
n mậ t ma
̃
họ c nhƣ la
̀

mộ t phƣơng tiệ n cơ ba
̉
n, chu yêu đê đam bao an toan cho hê thông.
4. Mục tiêu va nguyên tắ c chung cu
̉
a an toa
̀
n ba
̉
o mậ t thông tin
Ba mụ c tiêu cu
̉
a an toa
̀
n ba
̉
o mậ t thông tin:
÷ Tinh bi mât: Tai san cua hê thông chỉ đƣơc truy câp bởi những ngƣơi có thâm
quyề n. Cac loai truy câp gôm có : đọ c (reading), xem (viewing), in ấ n (printing), sƣ
̉
dụ ng
chƣơng tri
̀
nh, hoặ c hiể u biế t về sƣ̣ tồ n tạ i cu
̉
a mộ t đố i tƣợ ng trong tổ chƣ
́
c .Tinh bi mât có
thể đƣợ c ba
̉
o vệ nhơ
̀
việ c kiể m soa
́
t truy cậ p (theo nhiề u kiể u kha
́
c nhau ) hoặ c nhơ
̀
ca
́
c
thuậ t toa
́
n ma hóa dữ liêu. Kiế m soa
́
t truy cậ p chi
̉
co
́
thể đƣợ c thƣ̣ c hiệ n vơ
́
i ca
́
c hệ thố ng
phầ n cƣ
́
ng vậ t ly
́
. Còn đôi vơi cac dữ liêu công công thì thƣơng phƣơng phap hiêu qua la
cac phƣơng phap cua mât ma hoc.
÷ Tinh toan ven dữ liệ u: tai san cua hê thông chỉ đƣơc thay đôi bởi những ngƣơi
có thâm quyền.
÷ Tinh săn dùng: tai san luôn săn sang đƣơc sử dung bởi những ngƣơi có thâm
quyề n.
Hai nguyên tắ c cu
̉
a an toa
̀
n ba
̉
o mậ t thông tin:
Chƣơng I: Giơ
́
i thiệ u
4
÷ Việ c thẩ m đi ̣ nh về ba
̉
o mậ t pha i la
̀
kho
́
va
̀
cầ n ti
́
nh tơ
́
i tấ t ca
̉
ca
́
c ti
̀
nh huố ng ,
kha năng tấn công có thê đƣơc thưc hiên.
÷ Tai san đƣơc bao vê cho tơi khi hêt gia tri sử dung hoặc hêt y nghĩa bi mât.
5. Mậ t ma
̃
họ c (cryptology)
Mậ t ma hoc bao gôm hai lĩnh vưc : ma hóa (cryptography) va tham ma
(cryptanalysis-codebreaking) trong đo
́
:
÷ Ma hóa: nghiên cƣ
́
u ca
́
c thuậ t toa
́
n va
̀
phƣơng thƣ
́
c để đa
̉
m ba
̉
o ti
́
nh bi
́
mậ t va
̀

xac thưc cua thông tin (thƣơ
̀
ng la
̀
dƣơ
́
i dạ ng ca
́
c văn ba
̉
n lƣu trƣ
̃
trên ma
́
y ti
́
nh ). Cac san
phẩ m cu
̉
a li
̃
nh vƣ̣ c na
̀
y la
̀
ca
́
c hệ ma
̃
mậ t , cac ham băm, cac hê chữ ky điên tử , cac cơ
chế phân phố i, quan ly khóa va cac giao thưc mât ma.
÷ Tham ma: Nghiên cƣ
́
u ca
́
c phƣơng pha
́
p pha ma hoặc tao ma gia . San phâm
cua lĩnh vưc nay la cac phƣơng phap tham ma , cac phƣơng phap gia mao chữ ky , cac
phƣơng pha
́
p tấ n công ca
́
c ha
̀
m băm va
̀
ca
́
c giao thƣ
́
c mậ t ma
̃
.
Trong giơ
́
i hạ n cu
̉
a môn họ c na
̀
y chu
́
ng ta chu
̉
yế u tậ p trung va
̀
o ti
̀
m hiể u ca
́
c vấ n đề
ma hóa vơi cac hê ma mât, cac ham băm, cac hê chữ ky điên tử, cac giao thưc mât ma.
Ma hoa (cryptography) là một ngành khoa học của các phương pháp truyền tin bảo
mật. Trong tiếng Hy Lạp, “Crypto” (krypte) co nghĩa là che dấu hay đảo lộn, còn “Graphy”
(grafik) co nghĩa là từ. [3]
Ngƣơi ta quan niêm răng: những tư, những ky tư cua ban văn ba
̉
n gôc có thê hiêu
đƣơc sẽ cấu thanh nên ban rõ (P-Plaintext), thƣơ
̀
ng thi
̀
đây la
̀
ca
́
c đoạ n văn ba
̉
n trong
mộ t ngôn ngƣ
̃
na
̀
o đo
́
; còn những tư, những ky tư ở dang bi mât không thê hiêu đƣơc thì
đƣơc goi la ban ma (C-Ciphertext).
Có 2 phƣơng thưc ma hoa cơ ban: thay thê va hoan vi:
÷ Phƣơng thưc ma hoa thay thê la phƣơng thưc ma hoa ma tưng ky tư gôc hay
môt nhóm ky tư gôc cua ban rõ đƣơc thay thê bởi cac tư, cac ky hiêu khac hay kêt hơp
vơi nhau cho phù hơp vơi môt phƣơng thưc nhất đinh va khoa.
÷ Phƣơng thưc ma hoa hoan vi la phƣơng thưc ma hoa ma cac tư ma cua ban
rõ đƣơc săp xêp lai theo môt phƣơng thưc nhất đinh.
Cac hê ma mậ t thƣơ
̀
ng sƣ
̉
dụ ng kế t hợ p ca
̉
hai ky
̃
thuậ t na
̀
y.
6. Khái niêm hê ma mât (CryptoSystem)
Một hệ ma mật là bộ 5 (P, C, K, E, D) thoả man các điều kiện sau:
1) P là không gian bản rõ: là tập hữu hạn các bản rõ co thể co.
2) C là không gian bản ma: là tập hữu hạn các bản ma co thể co.
3) K là kkhông gian khoá: là tập hữu hạn các khoá co thể co.
4) Đối với mỗi k e K, co một quy tắc ma hoá e
k
e E và một quy tắc giải ma
tương ứng d
k
e D. Với mỗi e
k
: P →C và d
k
: C →P là những hàm mà d
k
(e
k
(x)) = x cho mọi
bản rõ x e P. Hàm giải ma d
k
chinh là ánh xạ ngươc của hàm ma hoa e
k
[5]
Chƣơng I: Giơ
́
i thiệ u
5
Thƣơ
̀
ng thi
̀
không gian ca
́
c ba
̉
n ro
̃
va
̀
không gian ca
́
c ba
̉
n ma
̃
la
̀
ca
́
c văn ba
̉
n đƣợ c
tao thanh tư môt bô chữ cai A nao đó. Đo
́
co
́
thể la
̀
bộ chƣ
̃
ca
́
i tiế ng Anh, bộ ma
̃
ASCII, bộ
ma Unicode hoặc đơn gian nhất la cac bit 0 va 1.
Tinh chất 4 la tinh chất quan trong nhất cua ma hoa. Nôi dung cua nó nói răng nêu
ma hoa băng e
k
va ban ma nhân đƣơc sau đó đƣơc giai ma băng ham

d
k
thì kêt qua nhân
đƣơc phai la ban rõ ban đâu x. Rõ rang trong trƣơng hơp nay, ham e
k
(x) phai la môt đơn
anh, nêu không thì ta sẽ không giai ma đƣơc. Vì nêu tôn tai x
1
và x
2
sao cho y = e
k
(x
1
) =
e
k
(x
2
) thì khi nhân đƣơc ban ma y ta không biêt nó đƣơc ma tư x
1
hay x
2
.
Trong môt hê mât bất ky ta luôn có |C| ≥ |P| vì mỗi quy tăc ma hoa la môt đơn anh.
Khi |C| = |P| thì mỗi ham ma hoa la môt hoan vi.
7. Mô hi
̀
nh truyề n tin cơ ba
̉
n cu
̉
a mậ t ma
̃
họ c va luât Kirchoff
Mô hi
̀
nh truyề n tin thông thƣơ
̀
ng : Trong mô hi
̀
nh truyề n tin thông thƣơ
̀
ng thông tin
đƣợ c truyề n (vậ n chuyể n) tƣ
̀
ngƣơ
̀
i gƣ
̉
i đế n ngƣơ
̀
i nhậ n đƣợ c thƣ̣ c hiệ n nhơ
̀
mộ t kênh vậ t
ly (chẳ ng hạ n nhƣ việ c gƣ
̉
i thƣ) đƣợ c coi la
̀
an toa
̀
n.
Mô hình truyề n tin cơ ban cu
̉
a mậ t ma
̃
họ c:


Hình 1.1: Mô hình cơ ban cua truyền tin bao mât
Đây la mô hình cơ ban cua truyền tin bao mât. Khac vơi truyền tin thông thƣơng, có
cac yêu tô mơi đƣơc thêm vao nhƣ khai niêm ke đich (E-Enemy), các khoá mã hoá và
giai ma K đê đam bao ti
́
nh ba
̉
o mât cua thông tin cân truyền đi.
Trong mô hi
̀
nh na
̀
y ngƣơi gƣ
̉
i S (Sender) muôn gửi môt thông điệ p X (Message – la
mộ t ba
̉
n ro
̃
) tơi ngƣơi nhân R (Receiver) qua môt kênh truyền không an toa
̀
n (Insecured
Channel), ke đich E (Enemy) có thê nghe trôm, hay sửa đôi thông tin X. Vì vây, S sử dung
phep biên đôi, tưc ma hoa (E-Encryption) lên thông tin X ở dang đoc đƣơc (Plaintext) đê
tao ra môt đoan văn ba
̉
n đƣợ c mã hoá Y (C-Ciphertext) không thê hiể u đƣơc theo môt
quy luât thông thƣơ
̀
ng sƣ
̉
dụ ng mộ t thông tin bi
́
mậ t đƣơc goi la khoa K
1
(Key), khoá K
1

chinh la thông sô điều khiên cho phep biên đôi tư ba
̉
n ro
̃
X sang ba
̉
n mã Y (chỉ các bên
tham gia truyền tin S va R mơ
́
i có thê biế t kho
́
a na
̀
y). Giai ma (D-Decryption) là quá trình
ngƣơc lai cho phep ngƣơi nhân thu đƣơc thông tin X ban đâu tư đoan ma hoa Y sƣ
̉
dụ ng
khóa giai ma K
2
(chú y la khóa giai ma va khóa ma hóa có thê khac nhau hoặ c la
̀
mộ t tùy
thuộ c va
̀
o hệ ma
̃

̉
dụ ng).
Cac phep biên đôi đƣơc sử dung trong mô hình truyền tin trên thuôc về môt hê ma
mậ t (Cryptosytem) nao đó.

X Y Y X
Sender
Encrypt
Insecured
Channel
Decrypt
Receiver
K
1
K
2
Enemy
Chƣơng I: Giơ
́
i thiệ u
6
Qua trình ma hóa va giai ma yêu câu cac qua trình biên đôi dữ liêu tư dang nguyên
thuy thanh in put cho việ c ma
̃
ho
́
a va
̀
chuyể n output cu
̉
a qua
́
tri
̀
nh gia
̉
i ma
̃
tha
̀
nh ba
̉
n ro
̃
.
Cac qua trình nay la cac qua trình biên đôi không khóa va đƣơc goi la cac qua trình
encode va
̀
decode.
Theo luậ t Kirchoff (1835 - 1903) (môt nguyên tắ c cơ ban trong mã hoá) thì: toàn bộ
cơ chế ma/giải ma trừ khoá là không bi mật đối với kẻ địch [5]. Rõ rang khi đôi phƣơng
không biêt đƣơc hê ma
̃
mât đang sử dung thuậ t toa
́
n ma
̃
ho
́
a gi
̀
thì viêc tha
́
m ma sẽ rất
khó khăn. Nhƣng chúng ta không thê tin vao đô an toan cua hê ma
̃
mât chỉ dưa vao môt
gia thiêt không chăc chăn la đôi phƣơng không biêt thuậ t toa
́
n đang sử dung . Vì vây, khi
trình bay môt hê mât bất ky , chúng ta đều gia thiêt hê mât đó đƣơc trình bay dƣơi luậ t
Kirchoff.
Y nghia cua luât Kirchoff : sư an toan cua cac hê ma mât không phai dưa vao sư
phƣ
́
c tạ p cu
̉
a thuậ t toa
́
n ma
̃
ho
́
a sƣ
̉
dụ ng.
8. Sơ lƣợc về li ̣ ch sƣ
̉
mậ t ma
̃
họ c
Mậ t ma
̃
họ c la
̀
mộ t nga
̀
nh khoa họ c co
́
mộ t li ̣ ch sƣ
̉
khoa
̉
ng 4000 năm. Cac cô vât
cua nganh khao cổ họ c thu đƣợ c đa
̃
cho thấ y điề u na
̀
y . Nhƣ
̃
ng ngƣơ
̀
i Ai cậ p cổ đạ i đa
̃

̉

dung cac chữ tƣơng hình nhƣ la môt dang ma hóa đơn gian nhất trên cac bia mô cua ho .
Cac tai liêu viêt tay khac cung cho thấy cac phƣơng phap ma hóa đơn gian đâu tiên ma
loai ngƣơi đa sử dung la cua ngƣơi Ba Tƣ cô va ngƣơi Do Thai cô.
Tuy vậ y co
́
thể chia li ̣ ch sƣ
̉
mậ t ma
̃
họ c tha
̀
nh hai thơ
̀
i ky
̀
nhƣ sau:
Thơ
̀
i ky
̀
tiề n khoa họ c : Tƣ
̀
trƣơ
́
c công nguyên cho tơ
́
i năm 1949. Trong giai đoạ n
nay mât ma hoc đƣơc coi la môt nghê thuât nhiều hơn la môt môn khoa hoc mặc dù đa
đƣợ c ƣ
́
ng dụ ng trong thƣ̣ c tế .
Lich sử cua mât ma hoc đƣơc đanh dấu vao năm 1949 khi Claude Shannon đƣa ra
ly thuyêt thông tin . Sau thơ
̀
i ky
̀
na
̀
y mộ t loạ t ca
́
c nghiên cƣ
́
u quan trọ ng cu
̉
a ngha
̀
nh mậ t
ma hoc đa đƣơc thưc hiên chăng han nhƣ cac nghiên cưu về ma khôi , sƣ̣ ra đơ
̀
i cu
̉
a ca
́
c
hệ ma
̃
mậ t kho
́
a công khai va
̀
chƣ
̃
ky
́
điệ n tƣ
̉
.
Qua nhiề u thế ky
̉
pha
́
t triể n cu
̉
a mậ t ma
̃
họ c chu
̉
yế u đƣợ c phụ c vụ cho ca
́
c mụ c
đi
́
ch quân sƣ̣ (gian điêp, ngoai giao, chiế n tranh …). Mộ t vi
́
dụ điể n hi
̀
nh la
̀
2000 năm
trƣơ
́
c đây hoa
̀
ng đế La ma
̃
Julius Caesar đa
̃

̀
ng sƣ
̉
dụ ng mộ t thuậ t toa
́
n thay thế đơn
gian ma ngay nay đƣơc mang tên ông trong cuôc chiên tranh Gallic.
Tac phâm “A manuscript on Deciphering Cryptography Messages” cua Abu al -Kindi
đƣơc viêt vao thê ky thư 9 đƣợ c ti
̀
m thấ y tạ i Istabul va
̀
o năm 1987 đa
̃
cho thấ y nhƣ
̃
ng nha
̀

khoa họ c Ả rậ p la
̀
nhƣ
̃
ng ngƣơ
̀
i đầ u tiên đa
̃
pha
́
t triể n ca
́
c phƣơng pha
́
p tha
́
m ma
̃
dƣ̣ a va
̀
o
phân ti
́
ch tầ n số xuấ t hiệ n cu
̉
a ca
́
c ky
́
tƣ̣ đố i vơ
́
i ca
́
c hệ ma
̃
thay thế đơn âm (mộ t phƣơng
phap đƣơc sử dung rông rai trong thơ
̀
i ky
̀
Trung cổ do đơn gia
̉
n va
̀
kha
́
hiệ u qua
̉
).
Ơ châu Âu thơi ky Trung cô la môt khoang thơi gian u am va tăm tôi cua lich sử nên
không co
́
nhiề u pha
́
t triể n mạ nh về văn ho
́
a no
́
i chung va
̀
mậ t ma
̃
họ c no
́
i riêng . Môt vai
sư kiên đƣơc ghi lai bởi cac vi linh muc nhƣng chỉ có Roger Bacon la ngƣơi thưc sư đa
viêt về mât ma hoc trong tac phâm “Secret Work of Art and the Nullity of Magic” vao giữa
những năm 1200. Vao thơi Trung cô môt trong những cai tên nôi tiêng nhất la Chaucer,
ngƣơ
̀
i đa đƣa ra cac công trình nghiên cưu nghiêm túc đâu tiên về mât ma hoc trong cac
Chƣơng I: Giơ
́
i thiệ u
7
tac phâm cua mình chăng han nhƣ “Treatise on the Astrolabe”. Trong thơ
̀
i ky
̀
Trung cổ ơ
̉

phƣơng Tây cuôn sach cua Blaise De Vegenere (ngƣơ
̀
i pha
́
t minh ra thuậ t t oan ma hóa
thay thế đa âm tiế t ) đƣợ c xem nhƣ la
̀
mộ t tông kêt cac kiên thưc về mât ma hoc cho tơi
thơi điêm bấy giơ, bao gôm ca thuât toan thay thê đa âm tiêt va môt vai sơ đô khóa tư
đông.
Blaise De Vegenere cu
̃
ng la
̀
ta
́
c gia
̉
cu
̉
a hệ ma
̃
mang t ên ông, hệ ma
̃
na
̀
y đa
̃

̀
ng
đƣợ c xem la
̀
an toa
̀
n tuyệ t đố i va
̀
đƣợ c sƣ
̉
dụ ng trong mộ t thơ
̀
i gian da
̀
i, tuy nhiên Charles
Babbages đa thưc hiên tham ma thanh công vao năm 1854 nhƣng điều nay đƣơc giữ bi
mât. Mộ t thuât toan tham ma đƣơc phat hiên đôc lâp bởi môt nha khoa hoc ngƣơi Phổ
(thuộ c nƣơ
́
c Đƣ
́
c nga
̀
y nay ) có tên là Friedrich Kasiski . Tuy vậ y do viêc thiêu cac thiêt bi
cai tiên nên cac biên thê cua thuât toan ma hóa nay vân còn đƣơc sử dung trong những
năm đâu cua thê ky 20 ma tiêu biêu nhất la viêc tham ma thanh công may điên tin
Zimmermann cu
̉
a quân Đƣ
́
c (mộ t trong ca
́
c sƣ̣ kiệ n tiêu biể u cu
̉
a mậ t ma
̃
họ c ) trong thê
chiên thư nhất va kêt qua la sư tham gia cua My vao cuôc chiên.

́
i sƣ̣ xuấ t hiệ n cu
̉
a ca
́
c hệ thố ng ma
́
y ti
́
nh ca nhân va mang may tinh cac thông tin
văn ba
̉
n nga
̀
y ca
̀
ng đƣợ c lƣu trƣ
̃
va
̀

̉
ly
́
nhiề u hơn trên ca
́
c ma
́
y ti
́
nh do đo
́
na
̉
y sinh yêu
cầ u về an toa
̀
n ba
̉
o mậ t đố i vơ
́
i ca
́
c thông tin đƣợ c lƣu trƣ
̃
, xƣ
̉
ly
́
va
̀
truyề n giƣ
̃
a ca
́
c ma
́
y
tinh.
Vao đâu những năm 1970 la sư phat triên cua cac thuât toan ma hóa khôi đâu tiên :
Lucipher và DES . DES sau đo
́
đa
̃
co
́
mộ t sƣ̣ pha
́
t triể n ƣ
́
ng dụ ng rƣ̣ c rơ
̃
cho tơ
́
i đầ u
nhƣ
̃
ng năm 90.
Vao cuôi những năm 1970 chưng kiên sư phat triên cua cac thuât toán mã hóa
khóa công khai sau khi Whitfield Diffie va
̀
Martin Hellman công bố ba
̀
i ba
́
o “New Directions
in Cryptography” lam nền tang cho sư ra đơi cua cac hê ma khóa công khai va cac hê
chƣ
̃
ky
́
điệ n tƣ
̉
.
Do nhƣợ c điể m cu
̉
a ca
́
c hệ ma
̃
mậ t kho
́
a công khai la
̀
chậ m nên ca
́
c hệ ma
̃
khố i vẫ n
tiế p tụ c đƣợ c pha
́
t triể n vơ
́
i ca
́
c hệ ma
̃
khố i mơ
́
i ra đơ
̀
i để thay thế cho DES va
̀
o cuố i thế
ky 20 nhƣ IDEA, AES hoặ c 3DES (mộ t ca
̉
i tiế n cua DES).
Gầ n đây nhấ t la cac sư kiên liên quan tơi cac ham băm MD5 (mộ t ha
̀
m băm thuộ c
ho MD do Ron Rivest phat triên ) va SHA1. Mộ t nho
́
m ca
́
c nha khoa hoc ngƣơi Trung
Quố c (Xiaoyun Wang, Yiqun Lisa Yin, Hongbo Yu) đa
̃
pha
́
t triể n cac phƣơng phap cho
phep phat hiên ra cac đung đô cua cac ham băm đƣơc sử dung rông rai nhất trong sô cac
ham băm nay. Đây la
̀
mộ t sƣ̣ kiệ n lơ
́
n đố i vơ
́
i nga
̀
nh mậ t ma
̃
họ c do sƣ̣ ƣ
́
ng dụ ng rộ ng ra
̃
i
va có thê xem la còn quan trong hơn ban thân cac hệ ma
̃
mậ t cu
̉
a ca
́
c ha
̀
m băm . Do sƣ̣
kiệ n na
̀
y ca
́
c ha
̃
ng viế t phầ n mề m lơ
́
n (nhƣ Microsoft) va cac nha mât ma hoc đa khuyên
cao cac lâp trình viên sử dung cac ham băm manh hơn (nhƣ SHA-256, SHA-512) trong
cac ưng dung.
Bruce Schneier (mộ t trong nhƣ
̃
ng nha
̀
mậ t ma
̃
họ c ha
̀
ng đầ u , tac gia cua hê ma
Blowfish) đa
̃

̀
ng no
́
i rằ ng ca
́
c hi
̀
nh thƣ
́
c tấ n công đố i vơ
́
i ca
́
c hệ ma
̃
mậ t no
́
i riêng va
̀
tấ n
công đố i vơ
́
i ca
́
c hệ thố ng ma
́
y ti
́
nh no
́
i chung se
̃
nga
̀
y ca
̀
ng t rơ
̉
nên hoa
̀
n thiệ n hơn
“Attacks always get better ; they never get worse .” va
̀
li ̣ ch sƣ
̉
pha
́
t triể n cu
̉
a mậ t ma
̃
họ c
chinh la lich sử phat triên cua cac hình thưc tấn công đôi vơi cac hê ma mât đang đƣơc

̉
dụ ng.
Chƣơng I: Giơ
́
i thiệ u
8
9. Phân loạ i ca
́
c thuậ t toa
́
n mậ t ma
̃
họ c
Có nhiều cach khac nhau đê chúng ta có thê phân loai cac thuât toan mât ma hoc
sẽ đƣơc hoc trong chƣơng trình. Ơ đây chúng ta sẽ phân loai cac thuât toan mât ma hoc
dƣ̣ a va
̀
o hai loạ i tiêu chi
́
.
Tiêu chi
́
thƣ
́
nhấ t la
̀
dƣ̣ a va
̀
o ca
́
c di ̣ ch vụ an toa
̀
n ba
̉
o mậ t ma
̀
ca
́
c thuậ t toa
́
n cung
cấ p, dƣ̣ a va
̀
o số lƣợ ng kho
́
a sƣ
̉
dụ ng (0, 1, 2) chúng ta có cac thuât toan ma hóa sau:
1. Cac thuât toan ma hóa khóa bi mât tƣơng ưng vơi cac h ê ma mât khóa bi mât
hay kho
́
a đố i xƣ
́
ng SKC (Symmetric Key Cryptosytems), do vai tro
̀
cu
̉
a ngƣơ
̀
i nhậ n va
̀

ngƣơ
̀
i gƣ
̉
i la
̀
nhƣ nhau , ca hai đều có thê ma hóa va giai ma thông điêp , nhƣ Caesar ,
DES, AES … Kho
́
a sƣ
̉
dụ ng cho ca
́
c thuậ t toa
́
n na
̀
y la
̀
1 khóa cho ca viêc ma hóa va giai
ma.
2. Cac thuât toan ma hóa khóa công khai tƣơng ưng vơi cac hê ma khóa công
khai PKC (Public Key Cryptosystems). Đôi khi ca
́
c hệ ma
̃
nay còn đƣơc goi la cac hê ma
khóa bất đôi xưng (Asymmetric Key Cryptosytems). Khóa sử dung cho cac thuât toan nay
la 2 khóa, mộ t cho việ c ma
̃
ho
́
a va
̀
mộ t cho việ c gia
̉
i ma
̃
, khóa ma hóa đƣơc công khai
hóa.
3. Cac thuât toa n tạ o chƣ
̃
ky
́
điệ n tƣ
̉
(Digital Signature Algorithms). Cac thuât
toan tao chữ ky điên tử tao thanh cac hê chữ ky điên tử . Thông thƣơ
̀
ng mỗ i hệ chƣ
̃
ky
́

điệ n tƣ
̉
co
́
cu
̀
ng cơ sơ
̉
ly
́
thuyế t vơ
́
i mộ t hệ ma
̃
mậ t kho
́
a công khai nhƣng vơ
́
i ca
́
ch a
́
p
dung khac nhau. Trong chƣơng tri
̀
nh họ c chu
́
ng ta se
̃
họ c mộ t số hệ chƣ
̃
ky
́
điệ n tƣ
̉
phổ
biế n la
̀
RSA, ElGammma…
4. Cac ham băm (Hash functions). Cac ham băm la cac thuât toan ma hóa không
khóa hoặc có khóa va thƣơng đƣợ c sƣ
̉
dụ ng trong ca
́
c hệ chƣ
̃
ky
́
điệ n tƣ
̉
hoặ c ca
́
c hệ ma
̃

khóa công khai.
Tiêu chi
́
thƣ
́
hai phân loạ i ca
́
c thuậ t toa
́
n ma
̃
ho
́
a dƣ̣ a trên ca
́
ch thƣ
́
c xƣ
̉
ly
́
input cu
̉
a
thuậ t toa
́
n (tƣ
́
c la
̀
ba
̉
n ro
̃
), dƣ̣ a trên tiêu chi
́
na
̀
y chu
́
ng ta co
́
hai loạ i thuậ t toa
́
n ma
̃
ho
́
a
sau:
1. Cac thuât toan ma hóa khôi (chẳ ng hạ n nhƣ DES, AES …) xƣ
̉
ly
́
ba
̉
n ro
̃
dƣơ
́
i
cac đơn vi cơ ban la cac khôi có kich thƣơc giông nhau.
2. Cac thuât toan ma hóa dòng (RC4 …) coi ba
̉
n ro
̃
la
̀
mộ t luồ ng bit, byte liên tụ c.
10. Mộ t số ƣ
́
ng dụ ng cu
̉
a mậ t ma
̃
họ c
Ngay nay khó có thê tìm thấy cac ưng dung trên may tinh lai không sƣ
̉
dụ ng tơ
́
i ca
́
c
thuậ t toa
́
n va
̀
ca
́
c giao thƣ
́
c mậ t ma
̃
họ c . Tƣ
̀
ca
́
c ƣ
́
ng dụ ng cho ca
́
c ma
́
y ti
́
nh ca nhân
(Desktop Applications ) cho tơ
́
i ca
́
c chƣơng tri
̀
nh hệ thố ng nhƣ ca
́
c hệ điề u ha
̀
nh
(Operating Systems) hoặ c ca
́
c ƣ
́
ng dụ ng mạ ng nhƣ Yahoo Messenger hoặ c ca
́
c hệ cơ sơ
̉


̃
liệ u đề u co
́

̉
dụ ng ca
́
c thuậ t toa
́
n ma
̃
ho
́
a mậ t khẩ u ngƣ ơi dùng băng môt hê ma
hoặ c mộ t ha
̀
m băm na
̀
o đo
́
. Đặc biêt vơi sư phat triên manh mẽ cua thƣơng mai điên tử
cac mô hình chữ ky điên tử ngay cang đóng vai trò tich cưc cho môt môi trƣơng an toan
cho ngƣơ
̀
i du
̀
ng. Tuy vậ y chúng ta vân có thê chia cac lĩnh vưc ưng dung cua mât ma hoc
thanh cac lĩnh vưc nhỏ nhƣ sau:
Chƣơng I: Giơ
́
i thiệ u
9
÷ Bao mât (Confidentiality): che dấ u nộ i dung cu
̉
a ca
́
c thông điệ p đƣợ c trao đổ i
trong mộ t phiên truyề n thông hoặ c giao di ̣ ch hoặ c ca
́
c thông điệ p trên mộ t hệ thố ng ma
́
y
tinh (cac file, cac dữ liêu trong môt cơ sở dữ liêu …).
÷ Xac thưc hóa (Authentication): đa
̉
m ba
̉
o nguồ n gố c cu
̉
a mộ t thông điệ p , ngƣơ
̀
i
dùng.
÷ Toan ven (Integrity): đa
̉
m ba
̉
o chi
̉
co
́
ca
́
c tổ chƣ
́
c đa
̃
đƣợ c xa
́
c thƣ̣ c ho
́
a mơ
́
i co
́

thể thay đổ i ca
́
c ta
̀
i sa
̉
n cu
̉
a hệ thố ng cu
̃
ng nhƣ ca
́
c thông tin trên đƣơ
̀
ng truyề n.
÷ Dich vu không thê chôi tư (Non-Repudiation): Cac bên đa đƣơc xac thưc
không thê phu nhân viêc tham gia vao môt giao dich hơp lê.
÷ Ngoai ra còn cac dich vu quan trong khac chăng han nhƣ chữ ky điên tử , dich
vu chưng thưc danh tinh (Identification) cho phe
́
p thay thế hi
̀
nh thƣ
́
c xa
́
c thƣ̣ c ho
́
a ngƣơ
̀
i
dùng dƣ̣ a trên ca
́
c mậ t khẩ u bằ ng ca
́
c ky
̃
thuậ t mạ nh hơn hoặ c di ̣ ch vụ thƣơng mạ i điệ n

̉
cho phe
́
p tiế n ha
̀
nh ca
́
c giao di ̣ ch an toa
̀
n trên ca
́
c kênh truyề n thông không an toa
̀
n
nhƣ Internet.

Chƣơng II: Cơ sơ
̉
toán hoc
10
CHƢƠNG II: CƠ SỞ TOAN HOC
Để hiể u đƣợ c nhƣ
̃
ng thuậ t toa
́
n sƣ
̉
dụ ng trong ca
́
c hệ ma
̃
mậ t , trong ca
́
c hệ chƣ
̃
ky
́

điệ n tƣ
̉
cu
̃
ng nhƣ ca
́
c giao thƣ
́
c mậ t ma
̃
, chúng ta phai có những kiên thưc nề n ta
̉
ng cơ
ban về toan hoc, ly thuyêt thông tin … đƣợ c sƣ
̉
dụ ng trong mậ t ma
̃
họ c. Chƣơng na
̀
y tri
̀
nh
bay nhƣ
̃
ng kha
́
i niệ m cơ ba
̉
n về ly
́
thuyế t thông tin nhƣ Entropy , tố c độ cu
̉
a ngôn ngƣ
̃

(Rate of Language), độ phƣ
́
c tạ p cu
̉
a thuậ t toa
́
n , độ an toa
̀
n cu
̉
a thuậ t toa
́
n , va môt sô
kiế n thƣ
́
c toan hoc: đồ ng dƣ số họ c (modulo), số nguyên tố , đi ̣ nh ly
́
phầ n dƣ trung hoa ,
đi ̣ nh ly
́
Fermat . . . va cac thuât toan kiể m tra số nguyên tố . Nhƣ
̃
ng vấ n đề chi
́
nh se
̃
đƣợ c
trình bay trong chƣơng nay gôm :
- Ly thuyêt thông tin
- Ly thuyêt đô phưc tap
- Ly thuyêt sô hoc.
1. Ly thuyêt thông tin
Nhƣ
̃
ng kha
́
i niệ m mơ
̉
đầ u cu
̉
a ly thuyêt thông tin đƣơc đƣa ra lầ n đầ u tiên va
̀
o năm
1948 bơ
̉
i Claude Elmwood Shannon (mộ t nha
̀
khoa họ c đƣợ c coi la
̀
cha để cu
̉
a ly
́
thuyế t
thông tin). Trong phầ n na
̀
y chu
́
ng ta chi
̉
đề cậ p tơ
́
i mộ t số chu
̉
đề quan trọ ng cu
̉
a ly
́
thuyế t
thông tin.
1.1. Entropy
Ly thuyêt thông tin đinh nghĩa khố i lƣợ ng thông tin trong mộ t thông ba
́
o la sô bit nhỏ
nhấ t cầ n thiế t để ma
̃
hoa
́
tấ t ca
̉
nhƣ
̃
ng nghi
̃
a co
́
thể cu
̉
a thông ba
́
o đo
́
.
Vi du, trƣơ
̀
ng ngay_thang trong mộ t cơ sơ
̉

̃
liệ u chƣ
́
a không qua
́
3 bit thông tin,

̉
i vi
̀
thông tin nga
̀
y có thê ma hoa vơi 3 bit dữ liêu:
000 = Sunday
001 = Monday
010 = Tuesday
011 = Wednesday
100 = Thursday
101 = Friday
110 = Saturday
111 is unused
Nế u thông tin na
̀
y đƣợ c biể u diễ n bơ
̉
i chuỗ i ky
́
tƣ̣ ASCII tƣơng ƣ
́
ng , nó sẽ chiêm
nhiề u không gian nhơ
́
hơn , nhƣng cu
̃
ng không chƣ
́
a nhiề u thông tin hơn . Tƣơng tƣ̣ nhƣ
trƣơ
̀
ng gioi_tinh cu
̉
a mộ t cơ sơ
̉

̃
liệ u chỉ chưa 1 bit thông tin, nó có thê lƣu trữ nhƣ môt
trong hai xâu ky
́
tƣ̣ ASCII : Nam, Nƣ
̃
.
Khố i lƣợ ng thông tin trong mộ t thông ba
́
o M đo bơ
̉
i Entropy cu
̉
a thông ba
́
o đo
́
, ky
hiệ u la
̀
H(M). Entropy cu
̉
a thông ba
́
o gioi _tinh la
̀
1 bit, ky hiêu H(gioi_tinh) = 1, Entropy
cua thông bao sô ngay trong tuân la nhỏ hơn 3 bits.
Chƣơng II: Cơ sơ
̉
toán hoc
11
Trong trƣơ
̀
ng hợ p tổ ng quat, Entropy cua môt thông bao la log
2
n, vơ
́
i n la
̀
số kha
̉

năng co
́
thể (y nghĩa) cua thông bao.
1.2. Tố c độ cu
̉
a ngôn ngƣ
̃
. (Rate of Language)
Đôi vơi môt ngôn ngữ, tố c độ thƣ̣ c tế (actual rate) cua ngôn ngữ la:
r = H(M)/N
trong trƣơ
̀
ng hợ p na
̀
y N la
̀
độ da
̀
i cu
̉
a thông ba
́
o va M la môt thông điêp có đô dai N.
Tố c độ cu
̉
a tiế ng Anh bi
̀
nh thƣơ
̀
ng la 0.28 do đo
́
mỗ i chƣ
̃
ca
́
i tiế ng Anh co
́
1.3 bit nghĩa.
Tố c độ tuyệ t đố i (absolute rate) cua mộ t ngôn ngƣ
̃
la
̀
số bits lơ
́
n nhấ t cầ n thiế t để
ma hóa cac ky tư cua ngôn ngữ đó . Nế u co
́
L ky
́
tƣ̣ t rong mộ t ngôn ngƣ
̃
, thì tôc đô tuyêt
đố i la
̀
:
R = log
2
L
Đây la
̀
số Entropy lơ
́
n nhấ t cu
̉
a mỗ i ky
́
tƣ̣ đơn le
̉
. Đôi vơi tiêng Anh gôm 26 chƣ
̃
ca
́
i,
tố c độ tuyệ t đố i la
̀
log
2
26 = 4.7bits/chƣ
̃
ca
́
i. Sẽ không có điều gì la ngac nhiên đố i vơ
́
i tấ t
ca moi ngƣơi răng thưc tê tôc đô cua tiêng Anh nhỏ hơn nhiề u so vơ
́
i tố c độ tuyệ t đố i , va
chúng ta vân thấy răng đôi vơi môt thông bao băng tiêng Anh có thê loai bỏ môt sô chƣ
̃

cai nhƣng ngƣơi đoc vân có thể hiể u đƣợ c. Hiệ n tƣợ ng na
̀
y đƣợ c gọ i la
̀
độ dƣ thƣ
̀
a cu
̉
a
ngôn ngƣ
̃
(Redundancy) tƣ̣ nhiên.
Không chi
̉
đố i vơ
́
i tiế ng Anh ma
̀

́
i hầ u hế t ca
́
c ngôn ngƣ
̃
tƣ̣ nhiên , do cấ u tru
́
c cu
̉
a
ngôn ngƣ
̃
, do việ c sƣ
̉
dụ ng ngôn ngƣ
̃
dẫ n tơ
́
i co
́
m ôt sô chữ cai đƣơc sử dung vơi tân
suấ t không đồ ng đề u hoặ c chi
̉
co
́
thể xuấ t hiệ n vơ
́
i mộ t cấ u tru
́
c na
̀
o đo
́
la
̀
m cho chu
́
ng ta
vẫ n co
́
thể đoa
́
n đƣợ c nghi
̃
a cu
̉
a ca
́
c thông ba
́
o nế u loạ i bo
̉
ca
́
c chƣ
̃
ca
́
i na
̀
y.
Đô dƣ thưa (Redundancy) cua môt ngôn ngữ ky hiêu la D va D = R – r. Đôi vơi
tiế ng Anh:
D = 1 - .28 = .72 letters/letter
D = 4.7 – 1.3 = 3.4 bits/letter
Nhƣ vậ y mỗ i chƣ
̃
ca
́
i co
́
1.3 bit nghi
̃
a va 3.4 bit dƣ thƣ
̀
a (xấ p xi
̉
72%).
1.3. Tinh an toa
̀
n cu
̉
a hệ thố ng ma
̃
hoa
́

Shannon đi ̣ nh nghi
̃
a rấ t ro
̃
ra
̀
ng , tỉ mỉ cac mô hình toan hoc đê đanh gia đô an toa
̀
n
cua cac hê ma mât sử dung . Muc đich cua ngƣơi tham ma la phat hiên ra khoa sƣ
̉
dụ ng
cua hê ma (K-Key), ban rõ (P-PlainText), hoặ c ca
̉
hai . Hơn nƣ
̃
a họ co
́
thể ha
̀
i lo
̀
ng vơ
́
i
mộ t va
̀
i thông tin co
́
kha
̉
năng về ba
̉
n ro
̃
P chẳ ng hạ n nhƣ đo
́
la
̀
âm thanh dang số , hoặ c
la môt văn ba
̉
n tiế ng Đƣ
́
c, hoặ c la mộ t bang tinh dữ liêu, v. v . . .
Trong hầ u hế t ca
́
c lầ n tham ma, ngƣơ
̀
i tham ma thƣơ
̀
ng cố gắ ng thu thậ p mộ t số
thông tin co
́
kha
̉
năng về ban rõ P trƣơ
́
c khi bắ t đầ u. Ho có thê biêt ngôn ngữ đa đƣơc sƣ
̉

dung đê ma hoa. Ngôn ngƣ
̃
na
̀
y chắ c chắ n co
́
sƣ̣ dƣ thƣ
̀
a kế t hợ p vơ
́
i chi
́
nh ngôn ngƣ
̃
đo
́
.
Nế u no
́
la
̀
mộ t thông ba
́
o gƣ
̉
i tơ
́
i Bob, nó có thê băt đâu vơi "Dear Bob". Đoạ n văn ba
̉
n
H(M) = log
2
n
Chƣơng II: Cơ sơ
̉
toán hoc
12
"Dear Bob" sẽ la môt kha năng có thê hơn la mộ t chuỗ i không mang y
́
nghi
̃
a gi
̀
chẳ ng hạ n
"tm*h&rf". Muc đi
́
ch cu
̉
a việ c tha
́
m ma
̃
la
̀

̉
a nhƣ
̃
ng tậ p hợ p kha
̉
năng co
́
thể co
́
cu
̉
a ba
̉
n
ma (C-CipherText) vơ
́
i mỗ i kha
̉
năng co
́
thể cu
̉
a ba
̉
n ro
̃
.
Shannon pha
́
t triể n ly
́
thuyế t cho rằ ng , hệ thố ng ma
̃
hoa
́
chi
̉
an toa
̀
n tuyệ t đố i nế u
nế u số khoa có thê sƣ
̉
dụ ng it nhất phai bằ ng số thông ba
́
o co
́
thể . Hiể u theo mộ t nghi
̃
a
khac, khoa tôi thiêu cua hê ma phai dai băng thông bao cua hệ ma
̃
đo
́
.
Ngoai trư cac hê ma an toa
̀
n tuyệ t đố i , cac ban ma thƣơ
̀
ng chƣ
́
a mộ t số thông tin
đu
́
ng vơ
́
i ba
̉
n ro
̃
, điề u na
̀
y la
̀
không thể tra
́
nh đƣợ c . Mộ t thuậ t toa
́
n mậ t ma
̃
tố t giƣ
̃
cho
thông tin bi tiêt lô ở mưc nhỏ nhất va mộ t ngƣơ
̀
i tha
́
m ma
̃
gio
̉
i se
̃
khai tha
́
c tố t nhƣ
̃
ng
thông tin na
̀
y để pha
́
t hiệ n ra ba
̉
n rõ.
Ngƣơ
̀
i tham ma sử dung sư dƣ thưa tư nhiên cua ngôn ngữ đê lam giam sô kha
năng co
́
thể có cua ban rõ. Nhiề u thông tin dƣ thƣ
̀
a cu
̉
a ngôn ngƣ
̃
, sẽ dê dang hơn cho
qua trình tham ma. Chinh vì ly do nay ma nhiều mô hi
̀
nh ma
̃
ho
́
a sƣ
̉
dụ ng thuậ t toa
́
n nen
ban rõ đê giam kich thƣơc văn ban trƣơc khi ma hoa chúng. Vì qua trình nen lam giam sư
dƣ thƣ
̀
a cu
̉
a thông ba
́
o . Entropy cua mộ t hệ ma mât la kich thƣơc cua không gian khoa
(Keyspace).
H(K) = log
2
(number of keys )
Shannon cu
̃
ng đƣa ra mộ t kha
́
i niệ m gọ i la
̀
Unicity Distance (ky hiêu la U) đê đanh
gia đô an toan cua môt hê ma mât. Đôi vơi môt hê ma mât U cua nó la:
U = H(K)/D
Đây la
̀
số nho
̉
nhấ t ca
́
c ba
̉
n ma
̃
cầ n thiế t để co
́
thể tiế n ha
̀
nh tha
́
m ma
̃
theo ca
́
ch thƣ
̉

tấ t ca
̉
ca
́
c kho
́
a co
́
thể (brute-force attack) thanh công. Chẳ ng hạ n đố i vơ
́
i hệ ma
̃
thay thế
đơn âm (nhƣ Caesar) trên ba
̉
ng chƣ
̃
ca
́
i tiế ng Anh ta se
̃
co
́
:
H(K)= log
2
26! = 87. D = 3.4 suy ra U = 25.5.
Điề u na
̀
y co
́
nghi
̃
a la
̀
nế u chu
́
ng ta co
́
khoa
̉
ng 25 chƣ
̃
ca
́
i ba
̉
n ma
̃
chu
́
ng ta chi
̉
co
́
thể
thƣ
̉
để khơ
́
p vơ
́
i mộ t ba
̉
n ro
̃
.
Khai niêm Unicity Distance la môt khai niêm mang tinh xac suất nó cho chúng ta
biế t số lƣợ ng it nhất cac ban ma cân có đê có thê xac đinh duy nhất 1 ban ma chư không
phai la sô ban ma đu đê tiên hanh tham ma (chắ c chắ n tha
̀
nh công). Nế u chu
́
ng ta co
́
số
ban ma it hơn sô U thì không thê nói la dư đoan (phep thƣ
̉
) cua chúng ta la đúng . Dƣ̣ a
vao công thưc nay chúng ta thấy nêu nhƣ đô dƣ thưa cua ngôn ngữ cang gân 0 thì cang
khó tham ma mặc dù đó có thê la môt hê ma rất đơn gian . Cung dưa vao công thưc nay
suy ra để tăng ti
́
nh an toa
̀
n cu
̉
a hệ ma
̃
co
́
thể tăng không gian kho
́
a cu
̉
a no
́
.
1.4. Ky thuât lộ n xộ n va
̀
rƣơ
̀
m ra
̀
(Confusion and Diffusion)
Theo Shannon, có hai ky thuât cơ ban đê che dấu sư dƣ thưa thông tin trong thông
bao gôc, đo
́
la
̀
: sƣ̣ lộ n xộ n va sư rƣơm ra.
Ky thuât lôn xôn (Confusion): che dấ u mố i quan hệ giƣ
̃
a ba
̉
n ro
̃
va
̀
ba
̉
n gố c . Ky
thuậ t na
̀
y la
̀
m thấ t bạ i cac cố gắ ng nghiên cƣ
́
u ba
̉
n ma
̃
đê tìm kiêm thông tin dƣ thưa va
thố ng kê mẫ u. Phƣơng pha
́
p dễ nhấ t để t hƣ̣ c hiệ n điề u na
̀
y la
̀
thông qua ky thuât thay
thế . Mộ t hệ ma
̃
hoa
́
thay thế đơn gia
̉
n , chẳ ng hạ n hệ ma
̃
di ̣ ch vo
̀
ng Caesar , dƣ̣ a trên nề n
Chƣơng II: Cơ sơ
̉
toán hoc
13
tang cua sư thay thê các chƣ
̃
ca
́
i cua ban rõ, nghĩa la chữ cai nay đƣơc thay thê băng
chƣ
̃
cai khac
Ky thuât rƣơm ra (Diffusion): lam mất đi sư dƣ thưa cua ban rõ băng cach tăng
sư phu ban ma vao ban rõ (va khóa). Công việ c ti
̀
m kiế m sƣ̣ dƣ thƣ
̀
a cu
̉
a ngƣơ
̀
i tha
́
m ma
̃

sẽ rất mất thơi gian va phưc tap. Cach đơn gian nhất tao ra sư rƣơm ra la thông qua viêc
đổ i chỗ (hay co
̀
n gọ i la
̀
ky thuât hoán vi).
Thông thƣơ
̀
ng ca
́
c hệ ma
̃
hiệ n đạ i thƣơ
̀
ng kế t hợ p ca
̉
hai ky
̃
thuậ t thay thế va
̀
hoa
́
n
vi đê tao ra cac thuât toan ma hóa có đô an toan cao hơn.
2. Ly thuyêt đô phưc tap
Ly thuyêt đô phưc tap cung cấp môt phƣơng phap đê phân tich đô phưc tap tinh
toan cua thuât toan va cac ky thuât ma hoa khac nhau . Nó so sanh cac thuât toan ma
hoa, ky thuât va phat hiên ra đô an toan cua cac thuât toan đó. Ly thuyết thông tin đa cho
chung ta biết răng một thuật toán ma hoá co thể bị bại lộ . Còn ly thuyết độ phư
́
c tạ p cho
biết kha
̉
năng bi ̣ tha
́
m ma
̃
cu
̉
a mộ t hệ ma
̃
mậ t.
Đô phưc tap thơi gian cua thuât toan la mộ t ham cua kich thƣơc dữ liêu input cua
thuậ t toa
́
n đo
́
. Thuậ t toa
́
n co
́
độ phƣ
́
c tạ p thơ
̀
i gian f (n) đố i vơ
́
i mọ i n va
̀
kich thƣơc input
n, nghĩa la sô bƣơc thƣ̣ c hiệ n cu
̉
a thuậ t toa
́
n lơ
́
n hơn f(n) bƣơ
́
c.
Đô phưc tap thơi gian thuât toan phu thuôc vao mô hình cua cac thuât toan , số ca
́
c
bƣơ
́
c nho
̉
hơn nế u ca
́
c hoạ t độ ng đƣợ c tậ p trung trong mộ t bƣơ
́
c (chẳ ng hạ n nhƣ ca
́
c
vòng lặp, cac lơi goi ham …).
Cac lơp cua thuât toan, vơ
́
i độ phƣ
́
c tạ p thơ
̀
i gian la môt ham mu đố i vơ
́
i ki
́
ch thƣơ
́
c
input đƣợ c coi la
̀
"không co
́
kha
̉
năng thƣ̣ c hiệ n ". Cac thuât toan có đô phưc tap giông
nhau đƣợ c phân loạ i va
̀
o trong ca
́
c lơ
́
p tƣơng đƣơng . Vi du tất ca cac thuât toan có đô
phƣ
́
c tạ p la
̀
n
3
đƣợ c phân va
̀
o trong lơ
́
p n
3
va ky hiêu bởi O(n
3
). Có hai lơp tông quat sẽ
đƣợ c la
̀

́
p P (Polynomial) va lơp NP (NonPolynomial).
Cac thuât toan thuôc lơp P có đô phưc tap la ham đa thưc cua kich thƣơc input .
Nế u mỗ i bƣơ
́
c tiế p theo cu
̉
a thuậ t toa
́
n la
̀
duy nhấ t thi
̀
thuậ t toa
́
n gọ i la
̀
đơn đi ̣ nh . Tấ t ca
̉

thuậ t toa
́
n thuộ c lơ
́
p P đơn đi ̣ nh co
́
thơ
̀
i gian giơ
́
i hạ n la
̀
P _time, điề u na
̀
y cho biế t chu
́
ng
sẽ thưc hiên trong thơi gian đa thưc , tƣơng đƣơng vơ
́
i độ phƣ
́
c tạ p đa thƣ
́
c cua kich
thƣơ
́
c input.
Thuậ t t oan ma ở bƣơc tiêp theo viêc tinh toan phai lưa chon giai phap tư những
giơ
́
i hạ n gia
́
tri ̣ cu
̉
a hoạ t độ ng gọ i la
̀
không đơn đi ̣ nh . Ly thuyêt đô phưc tap sử du ng ca
́
c
may đặc biêt mô ta đặc điêm băng cach đƣa ra kêt luân bởi cac chuân . Máy Turing la
mộ t ma
́
y đặ c biệ t , may hoat đông trong thơi gian rơi rac , tai môt thơi điêm nó năm trong
khoang trang thai đây đu sô cua tất ca cac trang thai có thê la hữu han . Chúng ta có thê
đi ̣ nh nghi
̃
a ha
̀
m độ phƣ
́
c tạ p thơ
̀
i gian kế t hợ p vơ
́
i ma
́
y Turing A.
f
A
(n) = max{m/A kế t thu
́
c sau m bƣơ
́
c vơ
́
i đầ u va
̀
o w = n
3
}
Ơ đây chúng ta gia sử răng A la trang thai kêt thúc đôi vơi tất ca cac đâu vao , vấ n
đề sẽ trở nên khó khăn hơn nêu cac trang thai không nằ m trong P . May Turing k hông
đơn đi ̣ nh hoạ t độ ng vơ
́
i thuậ t toa
́
n NP. May Turing không đơn đinh có thê có môt vai trang
Chƣơng II: Cơ sơ
̉
toán hoc
14
thai chinh xac. S(w) la trang thai đo sư thanh công ngăn nhất cua thuât toan, (Nghĩa la sư
tinh toan dân đên trang thai cuôi cùng)
Ham sô đô phưc tap thơi gian cua may Turing không đơn đinh A đƣơc đinh nghĩa :
f
A
(n)=max{1,m/s(w) co m bƣơc đôi vơi w/w=n}
ở mỗi bƣơc may Turing không đơn đinh bô tri nhiều ban sao cua chinh nó nhƣ có
mộ t va
̀
i gia
̉
i pha
́
p va
̀
ti
́
nh toa
́
n độ c lậ p vơ
́
i mọ i lơ
̀
i gia
̉
i.
Cac thuât toan thuôc lơp NP la không đơn đinh va có thê tinh toan trên may Turing
không đơn đi ̣ nh trong thơ
̀
i gian P.
Tuy nhiên không pha
̉
i thuậ t toa
́
n ma hóa cang có đô phưc tap lơn thì hê ma mât sử
dung thuât toan đó sẽ cang an toa
̀
n theo nhƣ pha
́
t biể u cu
̉
a luậ t Kierchoff.
Vậ y co
́
thể đa
́
nh gia
́
độ an toa
̀
n cu
̉
a mộ t hệ ma
̃
mậ t nhƣ thế na
̀
o ? Vấ n đề nay đa
đƣợ c Claude Shannon tra
̉

̀
i vơ
́
i ca
́
c kha
́
i niệ m về độ an toa
̀
n cu
̉
a ca
́
c hệ ma
̃
mậ t trong
mộ t bai bao có tiêu đề “Ly thuyêt thông tin cua cac hê thông bao mât” (1949).
2.1. Đô an toan tinh toán
Đinh nghia:
Một hệ mật đươc gọi là an toàn về mặt tinh toán nếu co một thuật toán tốt nhất để
phá no thì cần it nhất N phép toán, với N là một số rất lớn nào đo. [10]
Tuy nhiên trong thưc tê, không có môt hê mât nao chưng tỏ la an toan theo đinh
nghĩa trên. Vì vây, trên thưc tê, ngƣơi ta goi hê mât la “an toan tinh toan” nêu có môt
thuât toan đê pha nó nhƣng đòi hỏi thơi gian lơn đên mưc không chấp nhân đƣơc (thuậ t
toan có đô phưc tap ham mu hoặc thuôc lơp cac bai toan có đô phưc tap NP).
Môt cach tiêp cân khac về đô “an toan tinh toan” la quy nó về môt bai toan đa đƣơc
nghiên cưu ky va đƣơc coi la khó. Vi du nhƣ bai toan “phân tich ra thưa sô nguyên tô cua
môt sô n cho trƣơc” đƣơc coi la bai toan khó vơi n lơn, vì vây ta có thê coi môt hê mât
dưa trên bai toan “phân tich ra thưa sô nguyên tô” la an toan (tất nhiên đây chỉ la đô an
toan dưa vao chưng minh môt bai toan khac chư không phai chưng minh hoan chỉnh về
đô an toan cua hê mât).
2.2. Đô an toan không điều kiên
Đinh nghia 1:
Một hệ mật đươc coi là an toàn không điều kiện khi no không thể bị phá ngay cả với
khả năng tinh toán không hạn chế. [10]
Rõ rang la “đô an toan không điều kiên” không thê nghiên cưu theo quan điêm đô
phưc tap tinh toan vì thơi gian tinh toan la không han chê. Vì vây, ở đây ly thuyêt xac suất
sẽ đƣơc đề câp đê nghiên cưu về “an toan không điều kiên”.
Đinh nghia 2:
Gia sử biên X va Y la cac biên ngâu nhiên. Ky hiêu xac suất đê X nhân gia tri x la
p(x) va đê Y nhân gia tri y la p(y). Xac suất đông thơi p(x, y) la xac suất đê đông thơi X
nhân gia tri x va Y nhân gia tri y. Xac suất có điều kiên p(x/y) la xac suất đê X nhân gia tri
Chƣơng II: Cơ sơ
̉
toán hoc
15
x vơi điều kiên Y nhân gia tri y. Cac biên X va Y đƣơc goi la đôc lâp nêu p(x, y) = p(x)p(y)
vơi moi gia tri có thê có cua X va Y.
Đinh ly Bayes:
Nếu p(y) ≠ 0 thì ta co:
( ) ( / )
( / )
( )
p x p y x
p x y
p y
=

Hê quả:
X, Y là biến độc lập khi và chỉ khi p(x/y) = p(x) với mọi x, y. [5]
Ơ đây, ta gia thiêt răng môt khoa cu thê chỉ đƣơc dùng cho môt ban ma. Ky hiêu
xac suất tiên nghiêm đê ban rõ xuất hiên la p
p
(x). Cung gia thiêt răng khoa K đƣơc chon
theo môt phân bô xac suất nao đó (thông thƣơng khoa K đƣơc chon ngâu nhiên nên cac
khoa sẽ đông kha năng). Ky hiêu xac suất khoa K đƣơc chon la p
k
(K).
Gia thiêt răng khoa K va ban rõ x la cac biên đôc lâp. Hai phân bô xac suất trên P
và K sẽ tao ra môt phân bô xac suất trên C . Ky hiêu C(K) la tâp cac ban ma có thê nêu
K là khoá.
C (K) = { e
K
(x): x
e
P }
Khi đó vơi mỗi y
e
C, ta có:
C
, ( )
( ) ( ). ( ( ))
K p K
K y C K
p y p K p d y
e
=
¿

Va xac suất có điều kiên p
C
(y/x) la xac suất đê y la ban ma vơi điều kiên ban rõ la x
đƣơc tinh theo công thưc sau:
¿
=
=
) ( ,
) ( ) / (
y d x K
K C
K
K p x y p

Bây giơ ta có thê tinh xac suất có điều kiên p
P
(x/y) la xac suất đê x la ban rõ khi ban
ma la y theo đinh ly Bayes:
, ( )
C
, ( )
( ) ( )
( ) ( / )
( / )
( ) ( ) ( ( ))
K
P K
K x d y
P
P
C K P K
K y C K
p x p K
p x p y x
p x y
p y p K p d y
=
e
= =
¿
¿

Lúc nay, ta có thê đinh nghĩa khai niêm về đô mât hoan thiên. Nói môt cach không
hình thưc, đô mât hoan thiên nghĩa la đôi phƣơng vơi ban ma trong tay cung không thê
thu nhân đƣơc thông tin gì về ban rõ. Tuy nhiên ta sẽ nêu đinh nghĩa chinh xac về đô mât
hoàn thiên nhƣ sau:
Đinh nghia:
Một hệ mật hoàn thiện nếu p
P
(x/y) = p
P
(x) với mọi x
e
P và mọi y
e
C. Tức là xác suất
hậu nghiệm để thu đươc bản rõ là x với điều kiện đa thu đươc bản ma là y đồng nhất với
xác suất tiên nghiệm để bản rõ là x. [5]
Chƣơng II: Cơ sơ
̉
toán hoc
16
Hay nói cach khac, đô mât hoan thiên cung tƣơng đƣơng vơi p
C
(y/x)= p
C
(y)).
Đinh ly Shannon:
Giả sử (P, C, K, E, D) là một hệ mật, khi đo hệ mật đạt đươc độ mật hoàn thiện khi
và chỉ khi |K| ≥ |C|. Trong trường hơp |K| = |C| = |P|, hệ mật đạt độ mật hoàn thiện khi và
chỉ khi mỗi khoá K đươc dùng với xác suất băng nhau, băng 1/|K| và với mỗi x
e
P, mỗi y
e
C co một khoá K duy nhất sao cho eK(x) = y. [5]
Nhƣ vây ta thấy đê đat đô hoan thiên đòi hỏi khoa phai rất dai, do vây rất khó khăn
trong viêc chuyên giao khoa giữa hai bên truyền tin. Vì vây trong thưc tê, chúng ta không
thê có an toan không điều kiên ma chúng ta chỉ cân an toan thưc tê, tưc la phu thuôc vao
thông tin va thơi gian cân bao mât băng cach sử dung cac hê mât khac nhau vơi đô bao
mât khac nhau.
3.3. Hê mât tich
Môt y tƣởng khac đƣơc Shannon đƣa ra la y tƣởng tao ra cac hê mât mơi dưa trên
cac hê mât cu băng cach tao tich cua chúng. Đây la môt y tƣởng quan trong trong viêc
thiêt kê cac hê mât hiên đai ngay nay.
Đê đơn gian, ở đây chúng ta chỉ xet cac hê mât trong đó C = P, cac hê mât loai nay
goi la tư đông cấu. Gia sử S1 = (P, C, K1, E1, D1) va S2 = (P, C, K2, E2, D2) la cac hê
mât tư đông cấu có cùng không gian ban rõ va ban ma. Khi đó hê mât tich đƣơc đinh
nghĩa la hê mât S = (P, C, K1
×
K2 ,E ,D). Khoa cua hê mât tich K = (K1, K2) trong đó K1
e
K1, K2
e
K2. Cac ham ma hoa va giai ma đƣơc xac đinh nhƣ sau:
)) ( ( ) (
1 2 2 1
) , (
x e e x e
K K K K
=
)) ( ( ) (
2 1 2 1
) , (
x e d x d
K K K K
=
Nêu chúng ta lấy tich cua S vơi chinh nó, ta có hê mât (S×S) (ky hiêu S2). Nêu lấy
tich n lân thì kêt qua la Sn. Ta goi Sn la môt hê mât lặp. Nêu S2 = S thì ta goi hê mât la
luy đăng. Nêu S la luy đăng thì không nên lấy tich lặp vì đô bao mât không tăng lên ma
không gian khoa lai lơn hơn. Đƣơng nhiên nêu S không luy đăng thì ta có thê lặp lai S
nhiều lân đê tăng đô bao mât. Ơ đây nay sinh môt vấn đề la lam thê nao đê có môt hê
mât không luy đăng?
Ta biêt răng nêu S1 va S2 la luy đăng va giao hoan thì S1×S2 cung luy đăng, đơn
gian vì:
(S
1
×S
2
)×(S
1
×S
2
) = S
1
×(S
2
×S
1
)×S
2

= S
1
×(S
1
×S
2
)×S
2

= (S
1
×S
1
)×(S
2
×S
2
)
= (S
1
×S
2
)
Vây nêu muôn (S1×S2) không luy đăng thì cân phai có S1 va S2 không giao hoan.
Điều nay có thê dê dang thưc hiên băng cach lấy tich cua môt hê mât theo kiêu thay thê
va môt hê mât theo kiêu hoan vi. Đây la ky thuât đƣơc dùng đê thiêt kê cac hê ma hiên
đai nhƣ ma DES.
Chƣơng II: Cơ sơ
̉
toán hoc
17
3. Ly thuyêt toán hoc
3.1. Modulo số họ c
Về cơ ba
̉
n a ÷ b(mod n) nế u a = b+kn trong đo
́
k la
̀
mộ t số nguyên . Nế u a va
̀
b
dƣơng va
̀
a nho
̉
hơn n, chúng ta có thể goi a la
̀
phầ n dƣ cu
̉
a b khi chia cho n. Nói chung a
va b đều la phầ n dƣ khi chia cho n . Ngƣơ
̀
i ta co
̀
n go b la
̀
thặ ng dƣ cu
̉
a a theo modulo n,
va a la đông dƣ cua b theo modulo n.
Modulo số họ c cu
̃
ng giố ng nhƣ số họ c bi
̀
nh thƣơ
̀
ng , bao gồ m ca
́
c phe
́
p giao hoa
́
n ,
kế t hợ p va
̀
phân phố i. Mặ t kha
́
c gia
̉
m mỗ i gia
́
tri ̣ trung gian trong suố t qua trình tinh toan.
(a+b) mod n = ((a mod n) + (b mod n)) mod n
(a- b) mod n = ((a mod n) - (b mod n)) mod n
(a×b) mod n = ((a mod n) × (b mod n)) mod n
(a×(b + c)) mod n = (((a × b) mod n) + ((a × c) mod n)) mod n
Cac phep tinh trong cac hê ma mậ t hầ u hế t đề u thƣ̣ c hiệ n đố i vơ
́
i mộ t modulo N na
̀
o
đo
́
.
3.2. Số nguyên tố
Số nguyên tố la
̀
mộ t số lơ
́
n hơn 1, nhƣng chi
̉
chia hế t cho 1 va chinh nó , ngoai ra
không co
̀
n số na
̀
o no
́
co
́
thể chia hế t nƣ
̃
a . Số 2 la môt sô ng uyên tố đầ u tiên va
̀
la
̀
số
nguyên tố chẵ n duy nhấ t . Do vậ y 7, 17, 53, 73, 2521, 2365347734339 cung la sô nguyên
tố . Số lƣợ ng số nguyên tố la
̀
vô tậ n. Hệ mậ t ma
̃
thƣơ
̀
ng sƣ
̉
dụ ng số nguyên tố lơ
́
n cơ
̃
512
bits va
̀
thậ m chi
́

́
n hơn nhƣ vậ y.
3.3. Ƣơc sô chung lơn nhât
Hai số a va
̀
n đƣợ c gọ i la
̀
hai số nguyên tố cùng nhau nêu chúng không có thưa sô
chung na
̀
o kha
́
c 1, hay no
́
i mộ t ca
́
ch kha
́
c, nế u ƣơ
́
c số chung lơ
́
n nhấ t cu
̉
a a va
̀
n la
̀
bằ ng
1. Chúng ta có thê viế t nhƣ sau :
GCD(a,n)=1, (GCD-Greatest Common Divisor)
Số 15 va 28 la hai số nguyên tố cu
̀
ng nhau, nhƣng 15 va 27 thì không phai la hai số
nguyên tố cùng nhau do co
́
ƣơ
́
c số chung la
̀
1 va 3, dễ da
̀
ng thấ y 13 va 500 cung la môt
cặ p số nguyên tố cùng nhau. Mộ t số nguyên tố se
̃
la
̀
nguyên tố cu
̀
ng nhau vơ
́
i tấ t ca
̉
ca
́
c
số nguyên kha
́
c trƣ
̀
ca
́
c bộ i số cu
̉
a no
́
.
Mộ t ca
́
ch dễ nhấ t để ti
́
nh toa
́
n ra ƣơ
́
c số chung lơ
́
n nhấ t cu
̉
a hai số la
̀
nhơ
̀
va
̀
o thuậ t
toan Euclid. Knuth mô ta
̉
thuậ t toa
́
n va
̀
mộ t va
̀
i mô hi
̀
nh cu
̉
a thuậ t toa
́
n đa
̃
đƣợ c sƣ
̉
a đổ i.
Dƣơ
́
i đây la
̀
đoạ n ma
̃
nguồ n trong ngôn ngƣ
̃
C:
/* Thuậ t toa
́
n ti
̀
m ƣơ
́
c số chung lơ
́
n nhấ t cu
̉
a x va
̀
y, gia sử x,y>0 */
int gcd(int x, int y)
{
int g;
if(x<0)
Chƣơng II: Cơ sơ
̉
toán hoc
18
x=-x;
if(y<0)
y= -y;
g=y;
while(x>0){
g=x;
x=y%x;
y=g;
}
return g;
}
3.4. Vanh Z
N
(vanh đông dƣ module N)
Tậ p ca
́
c số nguyên Z
N
= {0, 1, …, N-1} trong đo
́
N la
̀
mộ t số tƣ̣ nhiên dƣơng vơ
́
i
hai phe
́
p toa
́
n cộ ng (+) va nhân (.) đƣợ c đi ̣ nh nghi
̃
a nhƣ sau tạ o tha
̀
nh mộ t vanh đông dƣ
modulo N (hay co
̀
n gọ i la
̀
tậ p thặ ng dƣ đầ y đu
̉
theo modulo N):
Phep công:
¬ a, b eZ
N
: a+b = (a+b) mod N.
Phep nhân:
¬ a, b eZ
N
: a . b = (a * b) mod N.
Theo ti
́
nh chấ t cu
̉
a modulo số họ c chu
́
ng ta dễ da
̀
ng nhậ n thấ y Z
N
la môt vanh giao
hoan va kêt hơp. Hầ u hế t ca
́
c ti
́
nh toa
́
n trong ca
́
c hệ ma
̃
mậ t đề u đƣợ c thƣ̣ c hiệ n trên mộ t
vanh Z
N
nao đó.
Trên va
̀
nh Z
N
số 0 la phân tử trung hòa vì a + 0 = 0 + a = a, ¬ a eZ
N
, số 1 đƣợ c gọ i
la phân tử đơn vi vì a . 1 = 1 . a = a ¬ a eZ
N
.
3.5. Phầ n tƣ
̉
nghi ̣ ch đa
̉
o
Trên trƣơ
̀
ng số thƣ̣ c R, số nghi ̣ ch đa
̉
o cu
̉
a 5 la 1/5, bơ
̉
i vi
̀
5 × 1/5=1. Còn trên môt
vanh sô nguyên Z
N
ngƣơ
̀
i ta đƣa ra kha
́
i niệ m về số nghi ̣ ch đa
̉
o cu
̉
a mộ t số nhƣ sau:
Gia sử a eZ
N
va tôn tai b eZ
N
sao cho a.b = (a*b) mod N = 1. Khi đo
́
b đƣợ c gọ i la
̀

phầ n tƣ
̉
nghi ̣ ch đa
̉
o cu
̉
a a trên Z
N
va ky hiêu la a
-1
= b.
Việ c ti
̀
m phầ n tƣ
̉
nghi ̣ ch đa
̉
o cu
̉
a mộ t số a eZ
N
cho trƣơ
́
c thƣ̣ c chấ t tƣơng đƣơng

́
i việ c ti
̀
m hai số b va
̀
k sao cho: a.b = k.N + 1 trong đo
́
b, k eZ
N
. Hay viế t gọ n lạ i la
̀
:
a
-1
÷ b (mod N )
Đi ̣ nh ly
́
về sƣ̣ tồ n tạ i cu
̉
a phầ n tƣ
̉
nghi ̣ ch đa
̉
o : Nế u GCD(a, N) = 1 thì tôn tai duy
nhấ t 1 số b eZ
N
la phân tử nghich đao cua a, nghĩa la thỏa man a.b = (a*b) mod N = 1.
Chƣơng II: Cơ sơ
̉
toán hoc
19
3.6. Ham phi Ơle

́
i mỗ i số nguyên N , gia tri cua ham phi Ơle cua N la tông sô tất ca cac sô
nguyên eZ
N
va nguyên tô cùng nhau vơi N . Chẳ ng hạ n nế u P la
̀
mộ t số nguyên thi
̀
gia
́
tri ̣
ham phi Ơle cua P: C(P) = P – 1 hoặ c nế u N = p*q trong đo
́
p va
̀
q la
̀
hai số nguyên tố thi
̀

C(N) = (p-1)*(q-1).
Trong trƣơ
̀
ng hợ p tổ ng qua
́
t nế u dạ ng phân tich ra thưa sô nguyên tô cua N la:
1 2
1 2
...
k
k
N p p p
o o o
=

trong đo
́
p
i
la cac sô nguyên tô còn o
i
la cac sô nguyên dƣơng thì gia tri cua ham
phi Ơle đƣợ c ti
́
nh nhƣ sau:
1 2
1 1 1
1 1 2 2
( ) ( 1) ( 1) ...( 1)
k
k k
N p p p p p p
o o o
|
÷ ÷ ÷
= ÷ ÷ ÷

Liên quan tơ
́
i kha
́
i niệ m về ham phi Ơle chúng ta có đinh ly Ơle phat biêu nhƣ sau:
¬ a e Z
*
N
= Z
N
– {0} va GCD(a, N) = 1 ta co
́

( )
1(mod )
N
a N
|
÷ . Có nghĩa la
( ) N
a
|
chinh la gia tri nghich đao cua a trên Z
N
.
Mộ t trƣơ
̀
ng hợ p riêng cua đinh ly Ơle chinh la đinh ly Fermat nhỏ: Nế u P la
̀
mộ t số
nguyên tố thi
̀
¬ a e Z
*
P
ta co
́

1
1(mod )
P
a P
÷
÷ . Đây la
̀
mộ t trong nhƣ
̃
ng đi ̣ nh ly
́
đẹ p nhấ t
cua sô hoc.

́
i mỗ i số nguyên N va
̀
nh Z
*
N
gồ m ca
́
c phầ n tƣ
̉
thuộ c Z
N
va nguyên tô cùng nhau

́
i N, hay no
́
i ca
́
ch kha
́
c: Z
*
N
= {x: xeZ
N
, (x, N) = 1} = {x: xeZ
N
,
( )
1
N
x
|
= }.

́
i mỗ i phầ n tƣ
̉
a e Z
N
, bậ c t cu
̉
a a (ky hiêu la ord(a)) la sô nhỏ nhất sao cho : a
t
=
1. Theo đi ̣ nh ly
́
Ơle ta suy ra |(N) chia hế t cho t.
Cu thê vơi N = 21 ta co
́
ba
̉
ng sau:
aeZ
*
21
1 2 4 5 8 10 11 13 16 17 19 20
Ord(a) 1 6 3 6 2 6 6 2 3 6 6 2
Bang 2.1: Bang bâc cua cac phân tử trên Z
*
21
Nế u bậ c cu
̉
a a e Z
*
N
bằ ng |(N) thì a đƣơc goi la phân tử sinh hay phân tử nguyên thuy
cua tâp Z
*
N
. Va nêu tâp Z
*
N
chỉ có môt phân tử sinh thì nó đƣơc goi la môt cyclic.
3.7. Thặ ng dƣ bậ c hai
Gia sử a e Z*
N
, khi đo
́
a đƣợ c goi la thặng dƣ bậ c 2 theo modulo N nế u tồ n tạ i x e
Z*
N
sao cho x
2
= a (mod N). Tậ p ca
́
c phầ n tƣ
̉
thặ ng dƣ theo modulo N đƣợ c ky
́
hiệ u la
̀
Q
N
,
tậ p ca
́
c phầ n tƣ
̉
không thặ ng dƣ theo modulo N đƣợ c goi la bất thặng dƣ theo modulo N
va ky hiêu la
N
Q .
Chƣơng II: Cơ sơ
̉
toán hoc
20
Đi ̣ nh ly
́
: nế u p la
̀
mộ t số nguyên tố le
̉
va
̀
o la môt phân tử sinh cua Z*
N
, khi đo
́
a la
̀

mộ t thặ ng dƣ bậ c 2 theo modulo N khi va
̀
chi
̉
khi a = o
i
mod p, trong đo
́
i la
̀
số nguyên le
̉
.

̀
đi ̣ nh ly
́
na
̀
y suy ra ( 1) / 2
N N
Q p Q = ÷ = .
Vi du vơi p = 13, o = 6 e Z
13
ta co
́
ba
̉
ng sau:
i 0 1 2 3 4 5 6 7 8 9 10 11
o
i
mod 13 1 6 10 8 9 2 12 7 3 5 4 11
Bang 2.2: Bang luy thưa trên Z
13
Do đo
́
Q
13
= {1, 3, 4, 9, 10, 12} va
13
Q = {2, 5, 6, 7, 8, 11}.

́
i a e Q
N
. Nế u x e Z*
N
thỏa man x
2
= a (mod N) thì a đƣơc goi la căn bâc hai cua
x theo modulo N.
3.8. Thuậ t toa
́
n lu
̃
y thƣ
̀
a nhanh
Để có thê tìm phân tử nghich đao cua môt sô nguyên a trên môt vanh Z
N
cho trƣơ
́
c
chúng ta có thê sử dung đinh ly Ơle đê tinh gia tri luy thưa cua a vơi sô mu la gia tri ham
phi Ơle cu
̉
a N. Tuy nhiên để co
́
thể nhanh cho
́
ng t inh đƣơc gia tri luy thưa nay chúng ta
cầ n co
́
mộ t thuậ t toa
́
n hiệ u qua
̉
va
̀
mộ t trong ca
́
c thuậ t toa
́
n đo
́
(còn nhiều thuât toan khac
phƣ
́
c tạ p hơn) la thuât toan luy thưa nhanh . Thuậ t toa
́
n na
̀
y do Chivers đƣa ra va
̀
o năm
1984. Cac bƣơc cua thuât toan nhƣ sau:
Input: a, m, N.
Output: a
m
mod N.
Begin
Phân ti
́
ch m tha
̀
nh dạ ng nhi ̣ phân m = b
k
b
k-1
…b
0
.
j = 0, kq = a;
while (k>=j)
{
if (b
j
==1)
kq = (kq * a) mod N;
a = (a * a) mod N;
j = j + 1;
}
return kq;
end
Mộ t ca
̀
i đặ t kha
́
c bằ ng ngôn ngƣ
̃
C nhƣ sau:
long modexp(long a, long x, long n)
{
Chƣơng II: Cơ sơ
̉
toán hoc
21
long r = 1;
while (x > 0){
if (x % 2 == 1) /* is x odd? */
r = (r * a) % n;
a = (a*a) % n;
x /= 2;
}
return r;
}
Thuậ t toa
́
n na
̀
y chạ y không qua
́
log
2
(m+1) bƣơ
́
c.
3.9. Thuậ t toa
́
n Ơclit mơ
̉
rộ ng
Trong phầ n 3.3 chúng ta đa biêt thuât toan Ơclit đƣơc dùng đê tìm ƣơc sô chung

́
n nhấ t cu
̉
a ha i số nguyên va
̀
trong phầ n 3.7 chúng ta đa biêt cach tìm môt phân tử
nghich đao cua mô t số bằ ng ca
́
ch sƣ
̉
dụ ng thuậ t toa
́
n lu
̃
y thƣ
̀
a nhanh tuy nhiên vẫ n co
́

mộ t thuậ t toa
́
n hiệ u qu a khac đê tìm phân tử nghich đao goi la thuât tóan Ơclit mở rông
(do dƣ̣ a trên thuậ t toa
́
n Ơclit). Cac bƣơc cua thuât toan nhƣ sau:
input: a, N vơ
́
i GCD(a, N) = 1
output: a
-1

begin
g
0
=n, g
1
= a, u
0
= 1, u
1
= 0, v
0
= 0, v
1
= 1, i = 1;
while (g
i
<>0 )
{
y = g
i-1
div g
i
;
g
i+1
= g
i-1
– y*g
i
;
u
i+1
= u
i-1
– y*u
i
;
v
i+1
= v
i-1
– v*u
i
;
i = i + 1;
}
x = v
i-1
;
if(x>0) then
return x;
else
return (N+x);
end;
Chƣơng II: Cơ sơ
̉
toán hoc
22
3.10. Phƣơng tri
̀
nh đồ ng dƣ bậ c nhấ t 1 ân
Phƣơng tri
̀
nh đồ ng dƣ bậ c nhấ t 1 ân la phƣơng trình có dang:
ax ÷ b (mod N) trong đo
́
a, b e Z
N
la cac hê sô còn x la ân sô.
Nế u nhƣ GCD(a, N) = 1 chúng ta có thê tìm a
-1
sau đo
́
nhân va
̀
o 2 vế cu
̉
a phƣơng
trình va tìm ra nghiêm môt cach dê dang tuy nhiên nêu g = GCD(a, N) la môt gia tri khac 1
thì sao? Khi đo
́
ba
̀
i toa
́
n co
́
thể vô nghiệ m hoặ c co
́
nhiề u nghiệ m . Chúng ta xet đi ̣ nh ly
́

sau:
Gia sử g = GCD(a, N) va nêu b chia hêt cho g thì phƣơng trình đông dƣ bâc nhất 1
ân:
ax ÷ b (mod N)
sẽ có g nghiêm có dang
x ÷ ((b/g)x
0
+ t(n/g)) (mod N) trong đo
́
t = 0, …, g-1,
va x
0
la nghiêm cua phƣơng trình (a/g)x ÷ 1 (mod N/g).
3.11. Đi ̣ nh ly
́
phầ n dƣ Trung Hoa.
Đi ̣ nh ly
́
phầ n dƣ Trung Hoa la
̀
m ôt đinh ly quan trong cua sô hoc đƣơc cac nha
toan hoc Trung Quôc kham pha ra vao thê ky thư nhất. Đi ̣ nh ly
́
pha
́
t biể u nhƣ sau:
Nế u d
1
, d
2
, …, d
k
la cac sô nguy ên đôi mộ t nguyên tố cu
̀
ng nhau va
̀
N = d
1
d
2
…d
k

thì hê phƣơng trình đông dƣ:
x ÷ x
i
(mod d
i
), i=1, 2, …, k
sẽ có môt nghiêm thuôc vao Z
N
. Nghiệ m cu
̉
a hệ co
́
ti
́
nh theo công thƣ
́
c sau:
1
( / ) (mod )
k
i i i
i
x N d y x N
=
=
¿
trong đo
́
y
i
la cac nghiêm cua cac phƣơng trình đông dƣ (N/d
i
) y
i
÷ 1(mod d
i
).
Dƣơ
́
i đây la
̀
đoạ n ma
̃
đi ̣ nh ly
́
phầ n dƣ trung hoa trong ngôn ngƣ
̃
C :
int chinese_remainder(int r, int *m, int *u)
{
int i;
int modulus;
int n;
modulus = 1;
for ( i=0; i<r:++i )
modulus *=m[i];
n=0;
for ( i=0; i<r:++i )
Chƣơng II: Cơ sơ
̉
toán hoc
23
{
n+=u[i]*modexp(modulus/m[i],totient(m[i]),m[i]);
n%=modulus;
}
return n;
}
4. Các thuậ t toa
́
n kiể m tra số nguyên tố .
Ham mộ t phi
́
a (one-way functions) la môt khai niêm cơ ban cua ma hoa công
khai. Việ c nhân hai số nguyên tố la
̀
mộ t vi
́
dụ về ham môt phia , nhân ca
́
c số nguyên tố

́
n để tạ o tha
̀
nh mộ t hợ p số la
̀
dễ , nhƣng công việ c ngƣợ c lạ i phân ti
́
ch mộ t số nguyên

́
n tha
̀
nh dạ ng thƣ
̀
a số nguyên tố lai la môt bai toan khó (chƣa co
́
mộ t thuậ t toa
́
n tố t).
Cac thuậ t toa
́
n ma
̃
hoa
́
khóa công khai đều cầ n phai sử dung cac số nguyên tố . Có
mộ t số phƣơng pha
́
p để sinh ra số nguyên tố va hâu hêt chúng đều dưa trên cac thuât
toan kiêm tra tinh nguyên tô cua môt sô nguyên . Tuy nhiên co
́
mộ t số vấ n đề đƣợ c đặ t ra
đố i vơ
́
i số nguyên tố nhƣ sau
- Trong mộ t hệ thố ng co
́
thể đa
̉
m ba
̉
o hai ngƣơ
̀
i du
̀
ng se
̃
đƣợ c sƣ
̉
dụ ng hai số
nguyên tố kha
́
c nhau hay không ? Câu tra
̉

̀
i la
̀
co
́
thể vi
̀
co
́

́
i 10
150
số nguyên tố co
́
độ
dai 512 bits hoặ c nho
̉
hơn.
- Kha năng hai ngƣơi dùng sẽ lưa chon cùng môt sô nguyên tô la bao nhiêu. Vơ
́
i sƣ̣
lƣ̣ a chọ n tƣ
̀
10
150
số nguyên tố , điề u ky
̀
xay ra vơi xac xuấ t nho
̉
hơn so vơ
́
i sƣ̣ tƣ̣ bố c cha
́
y
cua may tinh.
Cac loai thuât toan kiêm tra sô nguyên tô đƣơc chia lam hai loai : thuậ t toa
́
n tấ t đi ̣ nh
va thuât toan xac suất. Cac thuât toan tất đinh cho chúng ta biêt chinh xac câu tr a lơi môt
số nguyên co
́
pha
̉
i la
̀
mộ t số nguyên tố hay không co
̀
n mộ t thuậ t toa
́
n xac suất cho biế t
xac suất cua môt sô nguyên la môt sô nguyên tô la bao nhiêu . Trong phầ n na
̀
y se
̃
tri
̀
nh
bay môt sô thuât toan kiêm tra sô nguyên tố phổ biế n.
4.1. Mộ t số ky
́
hiệ u toa
́
n họ c
4.1.1. Ky hiêu Lagrăng (Legendre Symbol)
Ky hiêu L(a,p) đƣợ c đi ̣ nh nghi
̃
a vơ
́
i a la
̀
mộ t số nguyên va
̀
p la
̀
mộ t số nguyên tố lơ
́
n
hơn 2. Nó nhân ba gia tri 0, 1, -1 :
L(a,p) = 0 nế u a chia hế t cho p.
L(a,p) = 1 nế u a e Q
N
(a la
̀
thặ ng dƣ bậ c 2 modulo p).
L(a,p) = -1 nế u a e
N
Q (a không la thặ ng dƣ bậ c 2 modulo p).
Mộ t phƣơng pha
́
p dễ da
̀
ng để ti
́
nh toa
́
n ra L(a,p) la :
L(a,p) = a
(p-1)/2
mod p
Chƣơng II: Cơ sơ
̉
toán hoc
24
4.1.2. Ky hiêu Jacobi (Jacobi Symbol)
Ky hiêu Jacobi đƣơc viêt la J (a,n), nó la sư khai quat hoa cua ky hiêu Lagrăng , nó
đi ̣ nh nghi
̃
a cho bấ t ky
̀
cặ p số nguyên a va
̀
n nao. Ky hiêu Jacobi la môt chưc năng trên
tậ p hợ p số thặ ng dƣ thấ p cu
̉
a ƣơ
́
c số n va
̀
co
́
thể ti
́
nh toa
́
n theo công thƣ
́
c sau:
- Nế u n la
̀
số nguyên tố , thì J(a,n) = 1 nế u a la
̀
thặ ng dƣ bậ c hai modulo n .
- Nế u n la
̀
số nguyên tố , thì J(a,n) = -1 nế u a không la
̀
thặ ng dƣ bậ c hai modulo
n .
- Nế u n khôn g pha
̉
i la
̀
số nguyên tố thi
̀
Jacobi (a,n) sẽ đƣơc tinh theo công thưc
sau:
- J(a,n)=J(h,p
1
) × J(h,p
2
) ×. . . × J(h,p
m
)

́
i p
1
,p
2
. . .,p
m
la cac thưa sô lơn nhất cua n.
Thuậ t toa
́
n na
̀
y ti
́
nh ra số Jacobi tuầ n hoa
̀
n theo công thƣ
́
c sau :
1. J(1,k) = 1
2. J(a×b,k) = J(a,k) × J(b,k)
3. J(2,k) =1 Nế u (k
2
-1)/8 la chia hêt va J(2,k) = -1 trong ca
́
c trƣơ
̀
ng hợ p kha
́
c.
4. J(b,a) = J((b mod a),a)
5. Nế u GCD(a,b)=1 :
a. J(a,b) × J(b,a) = 1 nế u (a-1)(b-1)/4 la chia hêt.
b. J(a,b) × J(b,a) = -1 nế u (a-1)(b-1)/4 la còn dƣ.
Sau đây la
̀
thuậ t toa
́
n trong ngôn ngƣ
̃
C :
int jacobi(int a,int b)
{
int a1,a2;
if(a>=b)
a%=b;
if(a==0)
return 0;
if(a==1)
return 1;
if(a==2)
if(((b*b-1)/8)%2==0)
return 1;
else
return -1;
Chƣơng II: Cơ sơ
̉
toán hoc
25
if(a&b&1) (ca a va b đều la sô dƣ)
if(((a-1)*(b-1)/4)%2==0)
return +jacobi(b,a);
else
return -jacobi(b,a);
if(gcd(a,b)==1)
if(((a-1)*(b-1)/4)%2==0)
return +jacobi(b,a);
else
return -jacobi(b,a);
return jacobi(a1,b) * jacobi(a2,b);
}
Trên thƣ̣ c tế co
́
thể ti
́
nh đƣợ c ky
́
hiệ u Jacobi mộ t ca
́
ch thuậ n lợ i hơn nế u dƣ̣ a va
̀
o 1
trong ca
́
c ti
́
nh chấ t sau, gia sử m, n la
̀
ca
́
c số nguyên le
̉
, a, b e Z:
(i) J(a*b, n) = J(a, n) * J(b, n) do đo
́
J(a
2
, n) = 1.
(ii) J(a, m*n) = J(a, m) * J(a, n).
(iii) nế u a ÷ b (mod n) thì J(a, n) = J(b, n).
(iv) J(1, n) = 1.
(v) J(-1, n) = (-1)
(n-1)/2

(vi) J(m, n) = J(n, m) * (-1)
(m-1)*(n-1)/4
4.2. Thuậ t toa
́
n Soloway-Strassen
Soloway va
̀
Strassen đa
̃
pha
́
t triể n thuậ t toa
́
n co
́
thể kiể m tra số nguyên tố . Thuậ t
toan nay sử dung ham Jacobi.
Thuậ t toa
́
n kiể m tra số p la
̀
số nguyên tố :
1. Chon ngâu nhiên môt sô a nhỏ hơn p.
2. Nế u ƣơ
́
c số chung lơ
́
n nhấ t gcd(a,p) = 1 thì p la hơp sô.
3. Tinh j = a
(p-1)/2
mod p.
4. Tinh sô Jacobi J(a,p).
5. Nế u j = J(a,p), thì p không phai la sô nguyên tô.
6. Nế u j = J(a,p) thì nói p có thê la sô nguyên tô vơi chăc chăn 50%.
Lặ p lạ i ca
́
c bƣơ
́
c na
̀
y n lầ n , mỗ i lầ n vơ
́
i mộ t gia tri ngâu nhiên khac nhau cua a .
Phầ n dƣ cu
̉
a hợ p số vơ
́
i n phe
́
p thƣ
̉
la
̀
không qua
́
2
n
.
Thƣ̣ c tế khi thƣ̣ c hiệ n chƣơng tri
̀
nh, thuậ t toa
́
n chạ y vơ
́
i tố c độ kha nhanh.
Chƣơng II: Cơ sơ
̉
toán hoc
26
4.3. Thuậ t toa
́
n Rabin-Miller
Thuậ t toa
́
n na
̀
y đƣợ c pha
́
t triể n bơ
̉
i Rabin , dƣ̣ a trên mộ t phầ n y
́
tƣơ
̉
ng cu
̉
a Miller .
Thƣ̣ c tế nhƣ
̃
ng phiên ba
̉
n cu
̉
a thuậ t toa
́
n đa
̃
đƣợ c giơ
́
i thiệ u tạ i NIST . (National Institute of
Standards and Technology).
Đâu tiên la chon ngâu nhiên môt sô p đê kiêm tra. Viế t p dƣơ
́
i dạ ng p = 1+2
b
m trong
đo
́
m la
̀
mộ t số le
̉
.
Sau đây la
̀
thuậ t toa
́
n :
1. Chon môt sô ngẫ u nhiên a, va gia sử a nhỏ hơn p.
2. Đặt j=0 va z=a
m
mod p.
3. Nế u z=1, hoặ c z=p-1 thì p đa qua bƣơc kiêm tra va có thể la
̀
số nguyên tố .
4. Nế u j > 0 va z=1 thì p không phai la sô nguyên tô.
5. Đặt j = j+1. Nế u j < b va
̀
z = p-1 thì đặt z=z
2
mod p va
̀
trơ
̉
lạ i bƣơ
́
c 4.
6. Nế u j = b va
̀
z = p-1, thì p không phai la sô nguyên tô.
4.4. Thuậ t toa
́
n Lehmann.
Mộ t phƣơng pha
́
p đơn gia
̉
n hơn kiể m tra số nguyên tố đƣợ c pha
́
t triể n độ c lậ p bơ
̉
i
Lehmann. Sau đây la
̀
thuậ t toa
́
n vơ
́
i số bƣơ
́
c lặ p la
̀
100.
1. Chon ngâu nhiên môt sô n đê kiêm tra.
2. Chắ c chắ n rằ ng n không chia hế t cho ca
́
c số nguyên tố nho
̉
nhƣ 2,3,5,7 va 11.
3. Chon ngâu nhiên 100 số a
1
, a
2
, . . . , a
100
giƣ
̃
a 1 va n-1.
4. Tinh a
i
(n-1)/2
(mod n) cho tấ t ca
̉
a
i
= a
1
. . . a
100
. Dƣ
̀
ng lạ i nế u bạ n ti
̀
m thấ y a
i
sao
cho phe
́
p kiể m tra la
̀
sai.
5. Nế u a
i
(n-1)/2
= 1 (mod n) vơ
́
i mọ i i, thì n có thê la hơp sô.
Nế u a
i
(n-1)/2
= 1 hoặ c -1 (mod n) vơ
́
i i bấ t ky
̀
, thì n la hơp sô.
Nế u a
i
(n-1)/2
= 1 hoặ c -1 (mod n) vơ
́
i mọ i i = 1, thì n la sô nguyên tô.
5. Bai tâp
Bai tâp 2.1: hãy tính 17
53
mod 29, hỏi cân dùng it nhất la bao nhiêu phep nhân đê
tìm ra kêt qua.
Bai tâp 2.2: Tính 876
611
mod 899.

̉
dụ ng mộ t trong ca
́
c ngôn ngƣ
̃
lậ p tri
̀
nh C, C++, Java hoặ c C# đê lam cac bai tâp sau:
Bai tâp 2.3: Viế t chƣơng tri
̀
nh ca
̀
i đặ t thuậ t toa
́
n ti
̀
m phầ n tƣ
̉
nghi ̣ ch đa
̉
o.
Bai tâp 2.4: Viế t chƣơng tri
̀
nh ca
̀
i đặ t thuậ t toa
́
n lu
̃
y thƣ
̀
a nhanh.
Bai tâp 2.5: Viế t chƣơng tri
̀
nh gia
̉
i hệ phƣơng tri
̀
nh đồ ng dƣ bậ c nhấ t hai ẩ n.
Bai tâp 2.6: Viế t chƣơng tri
̀
nh ca
̀
i đặ t thuậ t toa
́
n kiể m tra số nguyên tố vơ
́
i input la
̀

mộ t số nguyên nhỏ hơn 2000000000.
Chƣơng II: Cơ sơ
̉
toán hoc
27
Bai tâp 2.7: Viế t chƣơng tri
̀
nh ca
̀
i đặ t thƣ việ n số nguyên lơ
́
n vơ
́
i ca
́
c thao ta
́
c ti
́
nh
toan cơ ban: nhân, chia, cộ ng trƣ
̀
, lấ y modulo.
Bai tâp 2.8: Sƣ
̉
dụ ng thƣ việ n số lơ
́
n (ở bai tâp 2.5 hoặ c mộ t thƣ việ n ma
̃
nguồ n

̉
) cai đặt cac thuât toan kiêm tra sô nguyên tô đƣơc trình bay trong phân 4 cua chƣơng
2.

Chƣơng III: Các hê ma khoa bi mât
28
CHƢƠNG III: CAC HÊ MA KHOA BI MÂT
1. Các hê ma cô điên
1.1. Hệ ma
̃
hoa
́
thay thế (substitution cipher)
Hệ ma
̃
hoa
́
thay thế la
̀
hệ ma
̃
hoa
́
trong đo
́
mỗ i ky
́
tƣ̣ cu
̉
a ba
̉
n ro
̃
đƣợ c thay thế bằ ng
ky tư khac trong ban ma (có thê la môt chữ cai, mộ t số hoặ c mộ t ky
́
hiệ u).
Có 4 ky thuât thay thê sau đây:
1. Thay thế đơn (A simple substitution cipher): la hê trong đó môt ky tư cua ban rõ
đƣợ c thay bằ ng mộ t ky
́
tƣ̣ tƣơng ƣ
́
ng trong ba
̉
n ma
̃
. Mộ t a
́
nh xạ 1-1 tƣ
̀
ba
̉
n ro
̃

́
i
ban ma đƣơc sử dung đê ma hoa toan bô thông điêp.
2. Thay thế đồ ng âm (A homophonic substitution cipher ): giố ng nhƣ hệ thố ng ma
̃

hoa thay thê đơn , ngoai trư môt ky tư cua ban rõ có thê đƣơc anh xa tơi môt
trong số mộ t va
̀
i ky
́
t ư cua ban ma : sơ đồ a
́
nh xạ 1-n (one-to-many). Vi du, “A”
có thê tƣơng ưng vơi 5, 13, 25, hoặ c 56, “B” co
́
thể tƣơng ƣ
́
ng vơ
́
i 7, 19, 31,
hoặ c 42, v.v.
3. Thay thế đa mẫ u tƣ̣ (A polyalphbetic substitution cipher): đƣợ c tạ o nên tƣ
̀
nhiề u
thuậ t toa
́
n ma
̃
hoa
́
thay thế đơn. Anh xa 1-1 nhƣ trong trƣơ
̀
ng hợ p thay thế đơn,
nhƣng co
́
thể thay đổ i trong phạ m vi mộ t thông điệ p . Vi du, có thê có năm thuât
toan ma hoa đơn khac nhau đƣơc sử dung ; đặ c biệ t thuậ t toa
́
n ma
̃
hoa
́
đơn
đƣợ c sƣ
̉
dụ ng thay đổ i theo vi ̣ tri
́
cu
̉
a mỗ i ky
́
tƣ̣ trong ba
̉
n ro
̃
.
4. Thay thế đa sơ đồ (A polygram substitution cipher ): la thuât toan trong đó cac
khố i ky
́
tƣ̣ đƣợ c ma
̃
hoa
́
theo nho
́
m . Đây la
̀
thuậ t toa
́
n tổ ng qua
́
t nhấ t , cho phe
́
p
thay thế ca
́
c nho
́
m ky
́
tƣ̣ cu
̉
a văn ba
̉
n gố c . Vi du, “ABA” co
́
thể tƣơng ƣ
́
ng vơ
́
i
“RTQ”, “ABB” co
́
thể tƣơng ƣ
́
ng vơ
́
i “SLL”, v.v.
1.2. Hệ ma
̃
Caesar
Hệ ma
̃
Caesar la môt hê ma hoa thay thê đơn âm lam viêc trên bang chữ cai tiêng
Anh 26 ky tư (A, B, ... , Z). Đây la
̀
hệ ma
̃
cổ điể n va
̀
đơn gia
̉
n nhấ t đa
̃

̀
ng đƣợ c du
̀
ng
trong thƣ̣ c tế bơ
̉
i hoa
̀
ng đế La ma
̃
Caesar nên đƣợ c đặ t theo tên cu
̉
a vi ̣ hoa
̀
ng đế na
̀
y.
Không gian ca
́
c ba
̉
n ro
̃
P la cac thông điêp đƣơc tao tƣ
̀
ba
̉
ng chƣ
̃
ca
́
i A (đê tiên trình
bay chúng ta xem đây la môt bang chữ cai tông quat). Tƣơng tƣ̣ không gian ca
́
c ba
̉
n ma
̃
C
÷ P. Gia sử sô phân tử cua bang chữ cai |A| = N.
Để ma
̃
ho
́
a ngƣơ
̀
i ta đa
́
nh số ca
́
c chƣ
̃
ca
́
i tƣ
̀
0 tơ
́
i N-1. Không gian kho
́
a K = Z
N
. Vơ
́
i
mỗ i kho
́
a K e K ham ma hóa va giai ma môt ky tư có sô thư tư la i sẽ đƣơc thưc hiên nhƣ
sau:
Ma hóa: E
K
(i) = (i + k) mod N.
Giai ma: D
K
(i) = (i – k) mod N.
Hệ ma
̃
Caesar vơ
́
i ba
̉
ng chƣ
̃
ca
́
i tiế ng Anh se
̃
co
́
N = 26 chƣ
̃
ca
́
i, bang chữ cai đƣơc
đa
́
nh số nhƣ sau:

Chƣơng III: Các hê ma khoa bi mât
29
A B C D ... L M N ... W X Y Z
0 1 2 3 ... 11 12 13 ... 22 23 23 25
Bang 3.1: Bang đanh sô cac chữ cai tiêng Anh
Cac phep tinh toan sô hoc đƣợ c thƣ̣ c hiệ n trên va
̀
nh Z
26
, số kho
́
a co
́
thể sƣ
̉
dụ ng
la 26 nhƣng trên thƣ̣ c tế chi
̉
co
́
25 khóa có ich.
Vi du: vơ
́
i k=3 (trƣơ
̀
ng hợ p đa
̃
đƣợ c hoa
̀
ng đế Caesar sƣ
̉
dụ ng), ky tư A đƣợ c thay
bằ ng D, B đƣợ c thay bằ ng E, ... , W đƣợ c thay bằ ng Z, ... , X đƣợ c thay bằ ng A, Y đƣợ c
thay bằ ng B, va Z đƣơc thay băng C.
Bang chữ cai gôc:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Bang chữ cai dùng đê ma hoa:
D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

Do đo
́
chẳ ng hạ n xâu “ANGLES” se
̃
đƣợ c ma
̃
ho
́
a tha
̀
nh “DQJOHV”.
Hệ ma
̃
Caesar sƣ
̉
dụ ng phƣơng pha
́
p thay thế đơn âm nên co
́
hiệ n tƣợ ng gọ i la
̀

phu thuôc tân suất xuất hiên cua ngôn ngữ tư nhiên. Trong ngôn ngƣ
̃
tƣ̣ nhiên mộ t số chƣ
̃

cai xuất hiên nhiều hơn so vơi cac chữ cai khac (chẳ ng hạ n trong tiế ng Anh ca
́
c chƣ
̃
ca
́
i
xuấ t hiệ n nhiề u la
̀
e, t, i, h …) nên ca
́
c chƣ
̃
ca
́
i du
̀
ng để thay thế cho chu
́
ng cu
̃
ng xuấ t hiệ n
nhiề u. Điề u na
̀
y co
́
thể dẫ n tơi hê qua la ngƣơi tham ma có thê sử dung phƣơng phap thử
thay thế ca
́
c ky
́
t ư xuấ t hiệ n nhiề u trong ba
̉
n ma
̃
bằ ng ca
́
c ky
́
tƣ̣ xuấ t hiệ n nhiề u trên ca
́
c
văn ba
̉
n thƣ̣ c tế .
Trên thƣ̣ c tế hệ ma
̃
Caesar co
́
số kho
́
a i
́
t nên hoa
̀
n toan có thê tham ma băng cach
thƣ
̉
tấ t ca
̉
ca
́
c kho
́
a co
́
thể (kiể u tấ n công Brute force).
1.3. Hệ ma
̃
Affine
Không gian ca
́
c ba
̉
n ro
̃
va
̀
ba
̉
n ma
̃
cu
̉
a hệ ma
̃
la
̀
ca
́
c xâu đƣợ c hi
̀
nh tha
̀
nh tƣ
̀
mộ t
bang chữ cai A, gia sử |A| = N. Khi đo
́
không gian kho
́
a cu
̉
a hệ ma
̃
đƣợ c xa
́
c đi ̣ nh nhƣ sau:
K = { (a, b): a, b e Z
N
, (a, N) = 1}
Để ma
̃
ho
́
a ngƣơ
̀
i ta đa
́
nh số ca
́
c chƣ
̃
ca
́
i cu
̉
a ba
̉
ng chƣ
̃
ca
́
i tƣ
̀
0 tơ
́
i N – 1 va tiên
hanh ma hóa, giai ma tưng ky tư (thay thế ) theo ca
́
c công thƣ
́
c sau:
Ma hóa:
E
K
(x) = (a*x + b) mod N. Ky tư ban rõ có sô thư tư la x sẽ đƣơc chuyên thanh ky tư
có sô thư tư la (a*x+b) mod N trong ba
̉
ng chƣ
̃
ca
́
i.
Để gia
̉
i ma
̃
ta cầ n ti
̀
m a
-1
(do (a, N) = 1 nên luôn ti
̀
m đƣợ c) va tiên hanh công thưc
giai ma sau:
Chƣơng III: Các hê ma khoa bi mât
30
D
K
(y) = a*(y - b) mod N. Ky tư ban ma có sô thư tư la y sẽ đƣơc thay thê băng ky tư
có sô thư tư la a*(y - b) mod N trong ba
̉
ng chƣ
̃
ca
́
i.
Có thê thấy răng đôi vơi môt hê ma Affine thì sô khóa có thê sử dung sẽ la:
|K| = C(N) * N. Vi du vơi N = 26 tƣơng ƣ
́
ng vơ
́
i ba
̉
ng chƣ
̃
ca
́
i tiế ng Anh chu
́
ng ta se
̃

có C(26) * 26 = 12 * 26 = 312 khóa. Con số na
̀
y la
̀
tƣơng đố i nho
̉
.
1.4. Hệ ma
̃
Vigenere
Hệ ma
̃
nay đƣơc đặt theo tên cua môt nha mât ma hoc ngƣơ
̀
i Pha
́
p Blaise de
Vigenère (1523-1596).
Đôi vơi hê ma nay không gian cac ban ma va ban rõ cung la cac thông điêp đƣơc
tao thanh tư môt bang chữ cai A nhƣ trong hệ ma
̃
Caesar, cac chữ cai đƣơc đanh sô tư 0

́
i N-1 trong đo
́
N la
̀
số phầ n tƣ
̉
cu
̉
a ba
̉
ng chƣ
̃
ca
́
i.
Không gian kho
́
a K đƣợ c xa
́
c đi ̣ nh nhƣ sau:

́
i mỗ i số nguyên dƣơng M , khóa có đô dai M la môt xâu ky tư có đô dai M , K =
k
1
k
2
…k
M
.
Để ma
̃
ho
́
a mộ t ba
̉
n ro
̃
P ngƣơ
̀
i ta chia P tha
̀
nh ca
́
c đoạ n độ da
̀
i M va chuyên thanh
số thƣ
́
tƣ̣ tƣơng ƣ
́
ng cu
̉
a chu
́
ng trong ba
̉
ng chƣ
̃
ca
́
i , chẳ ng hạ n X = x
1
x
2
…x
M
. Khi đo
́
việ c
ma hóa va giai ma đƣơc thưc hiên nhƣ sau:
E
K
(X) = (x
1
+ k
1,
x
2
+ k
2
, …, x
M
+ k
M
) mod N
D
K
(Y) = (y
1
- k
1,
y
2
- k
2
, …, y
M
- k
M
) mod N vơ
́
i N la
̀
số phầ n tƣ
̉
cu
̉
a ba
̉
ng chƣ
̃
ca
́
i va Y
= y
1
y
2
…y
M
la ban ma.
Vi du: xet A la bang chữ cai tiêng Anh , ta co
́
N = 26 gia sử khóa có đô dai 6 va K =
“CIPHER”, ban rõ P = “THIS CRYPTOSYSTEM IS NOT SECURE” . Ta co
́
K = 2 8 15 7 4
17, P = 19 7 8 18 2 17 | 24 15 19 14 18 23 | 18 19 4 12 8 18 | 13 14 19 18 4 2 | 20 17 4.
Qua trình ma hóa thưc hiên nhƣ sau:
P = 19 7 8 18 2 17 | 24 15 19 14 18 23 | 18 19 4 12 8 18 | 13 14 19 18 4 2 | 20 17 4
K = 2 8 15 7 4 17 | 2 8 15 7 4 17 | 2 8 15 7 4 17 | 2 8 15 7 4 17 | 2 8 15
C = 21 15 23 25 6 8 | 0 23 8 21 22 14 | 20 1 19 19 12 9 | 15 22 8 25 8 19 | 22 25 19
Vậ y ba
̉
n ma
̃
la
̀
C = “VPXZGI AXIVWO UBTTMJ PWIZIT WZT”.
Về thƣ̣ c chấ t hệ ma
̃
na
̀
y la
̀
kế t hợ p cu
̉
a nhiề u ma
̃
Caesar , trong hệ ma
̃
Caesar
chúng ta thay thê tưng ky tư đơn le thì trong hê ma Vigenere na
̀
y thay thế tƣ
̀
ng bộ M ky
́

tƣ̣ liên tiế p. Vơ
́
i mỗ i M chu
́
ng ta co
́
số kho
́
a co
́
thể sƣ
̉
dụ ng la
̀
N
M
, cu thê la vơi bang chữ
cai tiêng Anh sẽ có 26
M
khóa có thê sử dung.
1.5. Hệ ma
̃
Hill
Hệ ma
̃
hoa
́
na
̀
y dƣ̣ a trên ly
́
thuyế t về đạ i số tuyế n ti
́
nh do Lester S .Hill đƣa ra năm
1929.
Ca không gian ban rõ va ban ma đều la cac xâu đƣơc thanh lâp tư môt bang chữ
cai A nhƣ trong hệ ma
̃
Vigenere.
Chƣơng III: Các hê ma khoa bi mât
31

́
i mỗ i số nguyên M kho
́
a cu
̉
a hệ ma
̃
la
̀
mộ t ma trậ n K vuông ki
́
ch thƣơ
́
c MxM gồ m
cac phân tử la c ac sô nguyên thuôc Z
N
trong đo
́
N la
̀
số phầ n tƣ
̉
cu
̉
a ba
̉
ng chƣ
̃
ca
́
i . Điề u
kiệ n để ma trậ n K co
́
thể sƣ
̉
dụ ng la
̀
m kho
́
a cu
̉
a hệ ma
̃
la
̀
K pha
̉
i la
̀
mộ t ma trậ n không suy
biế n trên Z
N
hay no
́
i ca
́
ch kha
́
c la
̀
tồ n tạ i ma trậ n nghi ̣ ch đa
̉
o cu
̉
a ma trậ n K trên Z
N
.
Cac ky tư cua bang chữ cai cung đƣơc đanh sô tư 0 tơ
́
i N-1.
Để ma
̃
ho
́
a mộ t ba
̉
n ro
̃
ngƣơ
̀
i ta cu
̃
ng chia ba
̉
n ro
̃
đo
́
tha
̀
nh ca
́
c xâu co
́
độ da
̀
i M ,
chuyể n cac xâu nay thanh sô thư tư cua cac chữ cai trong bang chữ cai dƣơi dang môt
vectơ ha
̀
ng M chiề u va
̀
tiế n ha
̀
nh ma
̃
ho
́
a, giai ma theo công thưc sau:
Ma hóa:
C = P * K.
Giai ma:
P = C * K
-1
.
Vi du: cho hệ ma
̃
Hill co
́
M = 2 (khóa la cac ma trân vuông cấp 2) va bang chữ cai la
bang chữ cai tiêng Anh, tƣ
́
c la
̀
N = 26. Cho kho
́
a
K =
|
|
.
|

\
|
5 2
3 3

Hay ma hóa xâu P = “HELP” va
̀
gia
̉
i ma
̃
ngƣợ c lạ i ba
̉
n ma
̃
thu đƣợ c.
Để ma
̃
ho
́
a chu
́
ng ta chia xâu ban rõ thanh hai vecto hang 2 chiề u “HE” (7 4) va “LP”
(11 15) va tiên hanh ma hóa lân lƣơt.

́
i P
1
= (7 4) ta co
́
C
1
= P
1
* K =( ) 7 4
|
|
.
|

\
|
5 2
3 3
= ( ) 3 15 = ( ) D P

́
i P
2
= (11 15) ta co
́
C
2
= P
2
* K =( ) 11 15
|
|
.
|

\
|
5 2
3 3
= ( ) 11 4 = ( ) L E
Vậ y ba
̉
n ma
̃
thu đƣợ c la
̀
C = “DPLE”.
Để gia
̉
i ma
̃
ta ti
́
nh kho
́
a gia
̉
i ma
̃
la
̀
ma trậ n nghi ̣ ch đa
̉
o cua ma trân khóa trên Z
26

theo công thƣ
́
c sau:

́
i K =
11 12
21 22
k k
k k
| |
|
\ .
va det(K) = (k
11
*k
22
– k
21
*k
12
) mod N la
̀
mộ t phầ n tƣ
̉
co
́
phầ n tƣ
̉

nghich đao trên Z
N
(ky hiêu la det(K)
-1
) thì khóa giai ma sẽ la
K
-1
= det(K)
-1
*
22 12
21 11
k -k
-k k
| |
|
\ .

Chƣơng III: Các hê ma khoa bi mât
32
Ap dung vao trƣơng hơp trên ta có det(K) = (15 - 6) mod 26 = 9. GCD(9, 26) =1 nên
ap dung thuât toan Ơclit mở rông tìm đƣơc det (K)
-1
= 3. Vậ y K
-1
= 3 *
5 23
24 3
| |
|
\ .
=
|
|
.
|

\
|
9 20
17 15
.
Qua trình giai ma tiên hanh giông nhƣ qua trình ma hóa vơi khóa ma hóa thay băng
khóa giai ma.
Giai ma C = “DP” = ( 3 15 ), P = C * K
-1
= (3 15) *
|
|
.
|

\
|
9 20
17 15
= ( ) 3 15 = “HE”.
Tƣơng tư giai ma xâu C = “LE” kêt qua sẽ đƣơc ban rõ P = “LP”.
Chú y la trong vi du trên chúng ta sử dung khóa K có kich thƣơc nhỏ nên dê dang
tìm đƣơc khóa đê giai ma còn trong trƣơng hơp tông quat điều nay la không dê dang.
1.6. Hệ ma
̃
đổ i chỗ (transposition cipher)
Mộ t hệ ma
̃
hoa
́
đổ i chỗ la
̀
hệ ma
̃
hoa
́
trong đo
́
ca
́
c ky
́
tƣ̣ cu
̉
a ba
̉
n ro
̃
vẫ n đƣợ c giƣ
̃

nguyên, nhƣng thƣ
́
tƣ̣ cu
̉
a chu
́
ng đƣợ c đổ i chỗ cho nhau.
Vi du môt hê ma hoa đôi chỗ côt đơn gian , ban rõ đƣơc viêt theo hang ngang trên
trang giấ y vơ
́
i độ da
̀
i cố đi ̣ nh, va ban ma đƣơc đoc theo hang doc.
Ban rõ: COMPUTER GRAPHICS MAY BE SLOW BUT AT LEAST IT‟S EXPENSIVE
COMPUTERGR
APHICSMAYB
ESLOWBUTAT
LEASTITSEX
PENSIVE
Ban ma: CAELPOPSEEMHLANPIOSSUCWTITSBIUEMUTERATSGYAERBTX
Bang 3.2: Ma hoa thay đôi vi tri côt
Phƣơng pha
́
p na
̀
y co
́
ca
́
c ky
̃
thuậ t sau:
1. Đa
̉
o ngƣợc toa
̀
n bộ ba
̉
n ro
̃
: nghĩa la ban rõ đƣơc viêt theo thư tư ngƣơc lai đê
tao ra ban ma . Đây la
̀
phƣơng pha
́
p ma
̃
hoa
́
đơn gia
̉
n nhấ t vi
̀
vậ y không đa
̉
m
bao an toan.
Vi du : ban rõ “TRANSPOSITION CIPHER” đƣơc ma hoa thanh
“REHPICNOITISOPSNART”.
2. Ma hoá theo mâu hinh hoc : ban rõ đƣơc săp xêp lai theo môt mẫ u hi
̀
nh họ c
nao đó, thƣơ
̀
ng la
̀
mộ t ma
̉
ng hoặ c mộ t ma trậ n hai chiề u.
Vi du: ban rõ “LIECHTENSTEINER” đƣơc viêt thanh ma trân 3×5 theo ha
̀
ng nhƣ
sau:
Cộ t 1 2 3 4 5
Ban rõ L I E C H
Chƣơng III: Các hê ma khoa bi mât
33
T E N S T
E I N E R
Bang 3.3: Ma hóa theo mâu hình hoc
Nế u lấ y ca
́
c ky
́
tƣ̣ ra theo số thƣ
́
tƣ̣ cộ t 2, 4, 1, 3, 5 thì sẽ có ban ma
“IEICSELTEENNHTR”.
Đôi chỗ côt: Đâu tiên đôi chỗ cac ky tư trong ban rõ thanh dang hình chữ nhậ t theo
cộ t, sau đo
́
ca
́
c cộ t đƣợ c sắ p xế p lạ i va
̀
ca
́
c chƣ
̃
ca
́
i đƣợ c lấ y ra theo ha
̀
ng ngang
Vi du: ban rõ gôc la “NGAY MAI BAT DAU CHIEN DICH XYZ” đƣơc viêt dƣơi dang
ma trậ n 5×5 theo cộ t nhƣ sau:
Cộ t 1 2 3 4 5
Ban rõ N A D I C
G I A E H
A B U N X
Y A C D Y
M T H I Z
Bang 3.4: Vi du ma hóa theo mâu hình hoc
Vì có 5 cộ t nên chu
́
ng co
́
thể đƣợ c sắ p lạ i theo 5!=120 cach khac nhau. Để tăng độ
an toa
̀
n co
́
thể chọ n mộ t trong cac cach săp xêp lai đó.
Nế u ta chuyể n vi ̣ ca
́
c cộ t theo thƣ
́
tƣ̣ 3, 5, 2, 4, 1 rồ i lấ y ca
́
c ky
́
tƣ̣ ra theo ha
̀
ng
ngang ta se
̃
đƣợ c ba
̉
n ma
̃
la
̀
“DCAINAHIEGUXBNACYADY HZTIM” . Lƣu y
́
rằ ng ca
́
c ky
́
tƣ̣
cach đƣơc bỏ đi.
Han chê cua phƣơng phap nay la toan bô cac ma trân ky tư phai đƣơc sinh đê ma
hoa va giai ma.
3. Hoán vi các ky tư cua bản ro theo chu ky cô đinh d : Nế u ha
̀
m f la
̀
mộ t hoa
́
n
vi cua môt khôi gôm d ky tư thì khoa ma hoa đƣơc biêu diên bởi K(d,f).
Do vậ y, ban rõ:
M = m
1
m
2
...m
d
m
d+1
...m
2d


́
i m
i
la cac ky tư , va ban ro
̃
se
̃
đƣợ c ma
̃
hoa
́
tha
̀
nh
Ek(M) = m
f(1)
m
f(2)
...m
f(d)
m
f(d)+1
...m
d+f(d)

Trong đo
́
m
f(1)
m
f(2)
...m
f(d)
la môt hoan vi cua m
1
m
2
...m
d
.
Vi du: gia sử d=5 va f hoa
́
n vi ̣ da
̃
y i=12345 thanh f(i)=35142
Vi tri đâu Vi tri hoan vi Tƣ
̀
Ma hoa
1 3 G O
2 5 R P
Chƣơng III: Các hê ma khoa bi mât
34
3 1 O G
4 4 U U
5 2 P R
Bang 3.5: Ma hóa hoan vi theo chu ky
Theo ba
̉
ng trên, ky tư đâu trong khôi 5 ky tƣ̣ đƣợ c chuyể n tơ
́
i vi ̣ tri
́
thƣ
́
3, ky tư thư
hai đƣợ c chuyể n tơ
́
i vi ̣ tri
́
thƣ
́
5, ... Chẳ ng hạ n tƣ
̀
gố c GROUP đƣợ c ma
̃
hoa
́
tha
̀
nh
OPGUR. Bằ ng ca
́
ch đo
́
, ban rõ “I LOVE BEETHOVENS MUSIC” sẽ đƣơc chuyên thanh
“OEIVLEHBTEESONVSCMIU”.
Hệ ma
̃
ADFGV cu
̉
a Đƣ
́
c , đƣợ c sƣ
̉
dụ ng trong suố t chiế n tranh thế giơ
́
i lầ n thƣ
́
I , la
mộ t hệ ma
̃
hoa
́
đổ i chỗ (có sử dung phƣơng pha
́
p thay thế đơn gia
̉
n). Nó đƣơc coi la môt
thuậ t toa
́
n ma
̃
hoa
́
phƣ
́
c tạ p va
̀
o thơ
̀
i ấ y nhƣng no
́
đa
̃
bi pha bởi Georges Painvin , mộ t
nha tham ma ngƣơi Phap . Trên thƣ̣ c tế c ó rất nhiều hê thông ma hoa sử dung phƣơng
phap đổ i chỗ , nhƣng chúng rấ t rắ c rố i vì thƣơng đòi hỏi không gian nhơ
́

́
n.
2. Các hê ma khôi
Trong phầ n na
̀
y chu
́
ng ta se
̃
họ c về ca
́
c hệ ma
̃
khố i điể n hi
̀
nh la
̀
chuẩ n ma
̃
ho
́
a dƣ
̃

liệ u DES (Data Encryption Standard), mộ t trong số ca
́
c hệ ma
̃
khố i đƣợ c sƣ
̉
dụ ng rộ ng ra
̃
i
nhấ t va
̀
la
̀
nề n ta
̉
ng cho rấ t nhiề u ca
́
c hệ ma
̃
khố i kha
́
c.
Chuẩ n ma
̃
ho
́
a dƣ
̃
liệ u DES la
̀
mộ t chuẩ n ma hoa đƣơc công bô bởi Uy ban Tiêu
chuân quôc gia Hoa Ky vao 15/02/1977. Hê ma
̃
na
̀
y đƣơc xây dưng dưa trên môt hê ma
khố i phô biên có tên la LUCIFER va đƣơc phat triên bởi IBM.
DES co
́
nhiề u ƣu điể m (nhanh, thuậ t toa
́
n công khai , dễ ca
̀
i đặ t ) va đa tưng đƣơc

̉
dụ ng trên thƣ̣ c tế trong mộ t thơ
̀
i gian rấ t da
̀
i (cho đế n trƣơ
́
c đầ u nhƣ
̃
ng năm 90) tuy
nhiên theo thơ
̀
i gian năng lƣ̣ c cu
̉
a ca
́
c ma
́
y ti
́
nh pha
́
t triể n cu
̀
ng vơ
́
i ca
́
c ky
̃
thuậ t tha
́
m ma

́
i đƣợ c đƣa ra đa
̃
cho thấ y nhu cầ u về mộ t hệ ma
̃
khố i mạ nh hơn va chuân ma hóa
cao cấp AES đa
̃
ra đơ
̀
i . Chuẩ n na
̀
y ra đơ
̀
i dƣ̣ a trên mộ t cuộ c thi về thiế t kế mộ t hệ ma
̃

khố i an toa
̀
n hơn (vao năm 1997) thay thế cho DES cu
̉
a Ủ y ban Tiêu chuẩ n quố c gia cu
̉
a
Hoa Ky (NIST). Có rất nhiều hê ma đa đƣơc gửi đên lam ưng cử viên cho AES nhƣng
cuố i cu
̀
ng hệ ma
̃
Rijndael cu
̉
a hai ta
́
c gia
̉
ngƣơ
̀
i Bi
̉
la
̀
tiế n si
̃
Joan Daemen va
̀
tiế n si
̃

Vincent Rijmen (vao năm 2001).
2.1. Mât ma khôi
Cac hê ma cô điên ma chúng ta xem xet ở phân đâu chƣơng nay đều có đặc điêm
chung la tưng ky tư cua ban rõ đƣơc ma hoa tach biêt. Điều nay lam cho viêc pha ma trở
nên dê dang hơn. Chinh vì vây, trên thưc tê ngƣơi ta hay dùng môt kiêu mât ma khac,
trong đó tưng khôi ky tư cua ban rõ đƣơc ma hoa cùng môt lúc nhƣ la môt đơn vi ma hoa
đông nhất. Trong kiêu ma hoa nay, cac tham sô quan trong la kich thƣơc (đô dai) cua mỗi
khôi va kich thƣơc khoa.
Điều kiên đê ma hoa khôi an toan:
- Kích thƣơc khôi phai đu lơn đê chông lai phƣơng an tấn công băng phƣơng
phap thông kê. Tuy nhiên điều nay sẽ dân đên thơi gian ma hoa sẽ tăng lên.
Chƣơng III: Các hê ma khoa bi mât
35
- Không gian khoa, tưc chiều dai khoa phai đu lơn đê chông lai phƣơng an tấn
công băng vet can. Tuy nhiên khoa phai đu ngăn đê viêc tao khoa, phân phôi va
lƣu trữ khoa đƣơc dê dang.
Khi thiêt kê môt hê ma khôi, phai đam bao hai yêu câu sau:
- Sư hỗn loan (confusion): sư phu thuôc giữa ban rõ va ban ma phai thưc sư
phưc tap đê gây khó khăn đôi vơi viêc tìm quy luât tham ma. Môi quan hê nay
tôt nhất la phi tuyên.
- Sư khuêch tan (diffusion): Mỗi bit cua ban rõ va khóa phai anh hƣởng lên cang
nhiều bit cua ban ma cang tôt.
Trong khi sư hỗn loan (confusion) đƣơc tao ra băng ky
̃
thuậ t thay thê thì sư khuêch
tán (diffusion) đƣơc tao ra băng cac ky
̃
thuậ t hoan vi. Cac hê ma khôi ma chúng ta xem
xet trong phân nay đều thỏa man cac yêu câu đó.
Ngoai cac hê ma khôi đƣơc trình bay trong phân nay còn rất nhiều cac hê ma khôi
khac đa phat triên q ua thơ
̀
i gian (tai cac quôc gia khac nhau va ưng dung trong cac lĩnh
vƣ̣ c kha
́
c nhau), có thê kê ra đây môt sô hê ma nôi tiêng nhƣ: Lucifer (1969), DES (1977),
Madryga (1984), NewDES (1985), FEAL, REDOC, LOKI (1990), Khufu and Khafre (1990),
RC2, RC4, IDEA (1990), MMB, CA-1.1, Shipjack, GOST, CAST, Blowfish, SAFER, 3-
Way, Crab, SXAL8/MBAL, SAFER, RC5, RC6 ...
Đặc điêm chung cua cac hê ma khôi la qua trình ma hóa lam viêc vơi cac khôi dữ
liêu (thƣơng ở dang xâu bit) có kich thƣơc khac nhau (tôi thiêu la 64 bit), khóa cua hê ma
cung la môt xâu bit có đô dai cô đinh (56 bit vơi DES, cac hê ma khac la 128, 256, hoặc
thâm chi 512 bit). Tất ca cac hê ma nay đều dưa trên ly thuyêt cua Shannon đƣa ra năm
1949 va nêu mang ma hóa hai ban rõ giông nhau sẽ thu đƣơc cùng môt ban ma. Hoat
đông cua cac hê ma khôi thƣơng đƣơc thưc hiên qua môt sô lân lặp, mỗi lân sẽ sử dung
môt khóa con đƣơc sinh ra tư khóa chinh.
2.2. Chuân ma hoá dữ liêu DES (Data Encryption Standard)
Vao cuôi thâp niên 60, hệ ma Lucifer đa đƣơc đƣa ra bởi Horst Feistel. Hệ ma
̃
na
̀
y
gắ n liề n vơ
́
i ha
̃
ng IBM nổ i tiế ng. Sau đo
́
Uy ban Tiêu chuân Hoa Ky đa
̃
da
̀
n xế p vơ
́
i IBM
đê thuât toan ma hóa nay thanh miên phi va phat triên nó thanh chuân ma hóa dữ liêu va
công bố va
̀
o nga
̀
y 15/02/1977.
2.2.1. Mô tả sơ đô ma hoá DES
Mô ta
̉
tổ ng quan:
DES la
̀
thuậ t toa
́
n ma
̃
ho
́
a vơ
́
i input la
̀
khố i 64 bit, output cu
̃
ng la
̀
khố i 64 bit. Khóa
ma hóa có đô dai 56 bit, thƣ̣ c ra chi
́
nh xa
́
c hơn pha
̉
i la
̀
64 bit vơ
́
i ca
́
c bit ơ
̉
vi ̣ tri
́
chia hế t
cho 8 có thê sử dung la cac bit kiêm tra tinh chăn le . Số khóa cua không gian khóa K la
2
56
.
Chƣơng III: Các hê ma khoa bi mât
36
Hình 3.1: Chuẩ n ma
̃
ho
́
a dƣ
̃
liệ u DES
Thuậ t toa
́
n thƣ̣ c hiệ n 16 vòng. Tƣ
̀
kho
́
a input K, 16 khóa con 48 bit K
i
sẽ đƣơc sinh
ra, mỗ i kho
́
a cho mộ t vo
̀
ng thƣ̣ c hiệ n trong qua
́
tri
̀
nh ma
̃
ho
́
a . Trong mỗ i vo
̀
ng, 8 anh xa
thay thế 6 bit tha
̀
nh 4 bit S
i
(còn goi la hôp S
i
) đƣợ c chọ n lƣ̣ a ky
̃
ca
̀
ng va
̀
cố đi ̣ nh , ky hiêu
chung la
̀
S se
̃
đƣợ c sƣ
̉
dụ ng. Ban rõ 64 bit se
̃
đƣợ c sƣ
̉
dụ ng chia tha
̀
nh hai nƣ
̉
a L
0
va R
0
.
Cac vòng có chưc năng giông nhau , nhậ n input la
̀
L
i-1
va R
i-1

̀
vo
̀
ng trƣơ
́
c va
̀
sinh ra
output la
̀
ca
́
c xâu 32 bit L
i
va R
i
nhƣ sau:
L
i
= R
i-1
; (1)
R
i
= L
i-1
© f(R
i-1
, K
i
) trong đo
́
f(R
i-1
, K
i
) = P( S( E(R
i-1
) © K
i
) ); (2)
Trong đó:
÷ © la ky hiêu cua phep tuyên loai trư (XOR) cua hai xâu bit theo modulo 2.
÷ Ham f la môt ham phi tuyên.
÷ E la
̀
hoa
́
n vi ̣ mơ
̉
rộ ng a
́
nh xạ R
i-1

̀
32 bit tha
̀
nh 48 bit (đôi khi tấ t ca
̉
ca
́
c bit se
̃

đƣợ c sƣ
̉
dụ ng hoặ c mộ t bit se
̃
đƣợ c sƣ
̉
dụ ng hai lầ n).
÷ P la
̀
hoa
́
n vi ̣ cố đi ̣ nh kha
́
c cu
̉
a 32 bit.
Mộ t hoa
́
n vi ̣ bit khơ
̉
i đầ u (IP) đƣợ c sƣ
̉
dụ ng cho vo
̀
ng đầ u tiên ; sau vo
̀
ng cuố i cu
̀
ng

̉
a tra
́
i va
̀
pha
̉
i se
̃
đƣợ c đổ i cho nhau va
̀
cuố i cu
̀
ng xâu kế t qua
̉
se
̃
đƣợ c hoa
́
n vi ̣ bit lầ n
cuố i bơ
̉
i hoa
́
n vi ̣ ngƣợ c cu
̉
a IP (IP
-1
).
Qua trình giai ma diên ra tƣơng tư nhƣng vơi cac khoa con ưng dung vao cac vòng
trong theo thƣ
́
tƣ̣ ngƣợ c lạ i.
Có thê hình dung đơn gian la phân bên phai trong mỗi vòng (sau khi mơ
̉
rộ ng input
32 bit tha
̀
nh 8 ky tư 6 bit – xâu 48 bit) sẽ thưc hiên môt tinh toan thay thế phụ thuộ c kho
́
a
trên mỗ i mộ t ky
́
tƣ̣ trong xâu 48 bit, va sau đó sử dung môt phep chuyên bit cô đinh đê
phân bố lạ i ca
́
c bit cu
̉
a ca
́
c ky
́
tƣ̣ kế t qua
̉
hi
̀
nh tha
̀
nh nên output 32 bit.
Cac khoa con K
i
(chƣ
́
a 48 bit cu
̉
a K) đƣợ c ti
́
nh bằ ng ca
́
ch sƣ
̉
dụ ng ca
́
c ba
̉
ng PC1 va
PC2 (Permutation Choice 1 va 2). Trƣơ
́
c tiên 8 bit (k
8
, k
16
,…,k
64
) cua K bi bỏ đi (ap dung
PC1). 56 bit co
̀
n lạ i đƣợ c hoa
́
n vi ̣ va
̀
ga
́
n cho hai biế n 28 bit C va
̀
D, va sau đó trong 16
vòng lặp ca C va D sẽ đƣơc quay 1 hoặ c 2 bit, va cac khóa con 48 bit K
i
đƣợ c chọ n tƣ
̀
kế t
qua cua viêc ghep hai xâu vơi nhau.
Nhƣ vây, ta có thê mô ta toan bô thuât toan sinh ma DES dƣơi dang công thưc nhƣ
sau:
Y = IP
-1
- f
16
- T- f
15
- T- ... - f
2
- T- f
1
- IP(x)
Trong đó:
÷ T mô ta phep hoan vi cua cac khôi L
i
R
i
(1 ≤ i ≤ 15).
÷ f
i
mô ta viêc dùng ham f vơi khoa K
i
(1 ≤ i ≤ 16).
Thuậ t toa
́
n chi tiế t:
Input: ban rõ M = m
1
m
2
…m
64
, khóa 64 bit K = k
1
k
2
…k
64
(bao gồ m ca
̉
8 bit chẵ n le
̉
,
việ c thêm bit chẵ n le
̉
sao cho ca
́
c đoạ n kho
́
a 8 bit co
́
số bit 1 la le)
Chƣơng III: Các hê ma khoa bi mât
37
Output: ban ma 64 bit C = c
1
c
2
…c
64

1. Sinh kho
́
a con. Tinh cac khóa con theo thuât toan sinh khóa con bên dƣơi
2. (L
0
,R
0
) ÷ IP(m
1
m
2
…m
64
) (Sƣ
̉
dụ ng ba
̉
ng hoa
́
n vi ̣ IP để hoa
́
n vi ̣ ca
́
c bit , kế t qua
̉

nhậ n đƣợ c chia tha
̀
nh hai nƣ
̉
a la
̀
L
0
= m
58
m
50
…m
8
, R
0
= m
57
m
49
…m
7
.)
3. (16 vòng) for i = 1 to 16
Tinh cac L
i
va R
i
theo ca
́
c công thƣ
́
c (1) va (2), việ c ti
́
nh
f(R
i-1
, K
i
) = P( S( E(R
i-1
) © K
i
) ) đƣợ c thƣ̣ c hiệ n nhƣ sau:
a) Mơ
̉
rộ ng R
i-1
= r
1
r
2
…r
32

̀
32 bit tha
̀
nh 48 bit bằ ng ca
́
ch sƣ
̉
dụ ng hoa
́
n vi ̣ mơ
̉

rộ ng E.
T ÷ E(R
i-1
). (Vì thê T = r
32
r
1
r
2
…r
32
r
1
)
b) T’ ÷ T © K
i
. Biể u diễ n T’ nhƣ la
̀
ca
́
c xâu gồ m 8 ky tư 6 bit T’ = (B
1
,…,B
8
)
c) T’’ ÷ (S
1
(B
1
), S
2
(B
2
),…,S
8
(B
8
)). Trong đo
́
S
i
(Bi) anh xa b
1
b
2
…b
6
thanh cac xâu 4
bit cu
̉
a phầ n tƣ
̉
thuộ c ha
̀
ng r va
̀
cộ t c cu
̉
a ca
́
c ba
̉
ng S
i
(S box) trong đo
́
r = 2 * b
1

+ b
6
va c = b
2
b
3
b
4
b
5
la môt sô nhi phân tư 0 tơ
́
i 15. Chẳ ng hạ n S
1
(011011) sẽ
cho r = 1 va c = 13 va kêt qua la 5 biể u diễ n dƣơ
́
i dạ ng nhi ̣ phân la
̀
0101.
d) T’’’ ÷ P(T’’) trong đo
́
P la
̀
hoa
́
n vi ̣ cố đi ̣ nh để hoa
́
n vi ̣ 32 bit cu
̉
a T ’’ = t
1
t
2
…t
32

sinh ra t
16
t
7
…t
25
.
4. b
1
b
2
…b
64
÷ (R
16
, L
16
) (đổ i vi ̣ tri
́
ca
́
c khố i cuố i cu
̀
ng L
16
, R
16

5. C ÷ IP
-1
(b
1
b
2
…b
64
) (Biế n đổ i sƣ
̉
dụ ng IP
-1
, C = b
40
b
8
…b
25
)
Sơ đô 16 vòng lặp cua DES:
Chƣơng III: Các hê ma khoa bi mât
38

Hình 3.2: Sơ đô ma hoa DES
K
16
(48 bit)
K
15
(48 bit)
Bản rõ (64 bit)
Bản mã (64 bit)
IP
IP
-1
L
0
(32 bit)
L
1
= R
0
R
0
(32 bit)
R
1
= L
0
© f(R
0
, K
1
)
f
K
1
(48 bit)
L
i
= R
i-1
L
15
= R
14
R
i
= L
i-1
© f(R
i-1
, K
i
)
R
15
= L
14
© f(R
14
, K
15
)
f
f
K
i
(48 bit)
L
16
= L
15
© f(R
15
, K
16
) R
16
= L
15

f
Chƣơng III: Các hê ma khoa bi mât
39
2.2.2. Hoán vi IP va hoán vi ngƣợc IP
-1

Bang hoan vi IP đƣơc đƣa ra trong bang dƣơi đây:
58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4
62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8
57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3
61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7
Bang 3.6: Bang hoan vi IP
Bang hoan vi ngƣơc IP
-1
:
40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31
38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29
36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25
Bang 3.7: Bang hoan vi ngƣợ c IP
-1
Hai hoan vi IP và IP
-1
không có y nghĩa gì về mặt mât ma ma hoan toan nhăm tao
điều kiên cho viêc “chip hoa” thuât toan DES.
Sơ đô cấu trúc môt vòng DES:

Hình 3.3: Sơ đô môt vòng DES

L
i-1
R
i-1
Hàm mở
rộng (E)
S-Box
P-Box
R
i
L
i
Trật tự nén
(PC-2)
Khoá
Khoá
Vòng dịch Vòng dịch
Hàm f
Khoá K
Chƣơng III: Các hê ma khoa bi mât
40
2.2.3. Thuậ t toa
́
n sinh kho
́
a con
Mƣơ
̀
i sa
́
u vòng lặp cua DES chay cùng thuât toan nhƣ nhau nhƣng vơi 16 khoá con
khác nhau. Cac khoá con đều đƣơc sinh ra tư khoa chinh cua DES băng môt thuât toan
sinh khoa con. Khoa chinh K (64 bit) đi qua 16 bƣơc biên đôi, tai mỗi bƣơc biên đôi nay
môt khoa con đƣơc sinh ra vơi đô dai 48 bit.
Có thê mô ta thuât toan sinh cac khóa con chi tiêt nhƣ sau:
Input: khóa 64 bit K = k1k2...k64 (bao gồ m ca
̉
8 bit kiể m tra ti
́
nh chẵ n le
̉
)
Output: 16 khóa con 48 bit K
i
, 1 s i s 16.
1) Đi ̣ nh nghi
̃
a v
i
, 1 s i s 16 nhƣ sau: v
i
= 1 đố i vơ
́
i i e {1,2,9,16}; v
i
= 2 cho ca
́
c
trƣơ
̀
ng hợ p kha
́
c (Đây la
̀
ca
́
c gia
́
tri ̣ di ̣ ch trai cho cac quay vòng 28 bit bên dƣơ
́
i).
2) T ÷ PC1(K); biể u diễ n T tha
̀
nh ca
́
c nƣ
̉
a 28 bit (C
0
, D
0
) (Sƣ
̉
dụ ng ba
̉
ng PC1 đê
chon cac bit tư K: C
0
= k
57
k
49
...k
36
, D
0
= k
63
k
55
...k
4
.)
3) For i from 1 to 16, tinh cac K
i
nhƣ sau: C
i
÷ (C
i-1
÷ v
i
), D
i
÷ (D
i-1
÷ v
i
), K
i
÷
PC2(C
i
, D
i
). (Sƣ
̉
dụ ng ba
̉
ng PC2 đê chon 48 bit tƣ
̀
xâu ghe
́
p b
1
b
2
...b
56
cua C
i
va D
i
: K
i
=
b
14
b
17
...b
32
. ‟÷ „ la
̀
ky
́
hiệ u di ̣ ch vo
̀
ng tra
́
i.)
Sơ đô sinh ca
́
c kho
́
a con cua DES:
Chƣơng III: Các hê ma khoa bi mât
41

Hình 3.4: Sơ đô tao khoa con cu
̉
a DES
64 bit đâu vao sẽ giam xuông còn 56 bit băng cach bỏ đi 8 bit (ở cac vi tri chia hêt
cho 8), cac bit nay dùng đê kiêm tra bit chăn le. Sau đó 56 bit nay lai đƣơc trich lấy 48 bit
đê sinh ra cho 16 vòng khoa cua DES.
Bang trât tư khoa (PC-1):
57 49 41 33 25 17 9 1 58 50 42 34 26 18
10 2 59 51 43 35 27 19 11 3 60 52 44 36
63 55 47 39 31 23 15 7 62 54 46 38 30 22
14 6 61 53 45 37 29 21 13 5 28 20 12 4
Bang 3.8: Bang PC-1
Đâu tiên 56 bit kho
́
a đƣợ c chia ra thanh hai nƣ
̉
a 28 bit. Sau đó, hai nƣ
̉
a 28 bit này
đƣơc dich vòng trai hoặc 1 hoặc 2 bit phu thuôc vao số bit di ̣ ch tƣơng ƣ
́
ng vơ
́
i vòng đó.
Sô bit dich cua cac vòng (LS):
Vòng lặ p 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Khoá chính (64 bit)
C
0
(28 bit) D
0
(28 bit)

PC-1
C
1
(28 bit) D
1
(28 bit)

LS
1
LS
1
C
i
(28 bit) D
i
(28 bit)

LS
2
LS
2
C
16
(28 bit) D
16
(28 bit)
LS
1
LS
1
PC-2
K
1
(48 bit)
PC-2
K
i
(48 bit)
PC-2
K
16
(48 bit)
Chƣơng III: Các hê ma khoa bi mât
42
Sô bit dich 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
Bang 3.9: Bang dich bit tai cac vòng lặp cua DES
Sau khi dich vòng, mộ t ba
̉
ng chọ n 48 bit đƣơc sƣ
̉
dụ ng. Vì ca
́
ch hoan vi nay cua
cac bit đƣơc chon nhƣ môt tô hơp con cua cac bit nên đƣơc goi la “hoan vi nen” hay “trât
tư nen”.
Bang trât tư nen(PC-2):
14 17 11 24 1 5 3 28 15 6 21 10
23 19 12 4 26 8 16 7 27 20 13 2
41 52 31 37 47 55 30 40 51 45 33 48
44 49 39 56 34 53 46 42 50 36 29 32
Bang 3.10: Bang PC-2
Vi du nhƣ chúng ta có thê nhân thấy bit ở vi tri 33 cua khoa sẽ dich sang vi tri 35 ra
ngoai, còn bit ở vi tri 18 cua khoa sẽ bi bỏ qua. Chinh viêc dich vòng nay, tao nên môt tâp
hơp con cua khoa đƣơc sử dung trong mỗi tô hơp khoa. Mỗi bit đƣơc sử dung khoang 14
lân trong tông sô 16 tô hơp khoa, dù không phai tất ca cac bit đƣơc sử dung môt cach
chinh xac cùng môt lúc trong mỗi lân sử dung.
2.2.4. Mô tả ham f
Hàm f(R
i-1
,K
i
) la môt ham có hai biế n vao: biên thư nhất R
i-1
la môt xâu bit có đô dai
32 bit, biên thư hai khoa K
i
la môt xâu bit có đô dai 48 bit. Đâu ra cua f la môt xâu bit có
đô dai 32 bit. Ham f có thê la ham bất ky tuy nhiên vì nguôn gôc “sưc manh” cua DES
năm trong ham f nên viêc chon ham f phai cân thân đê tranh bi pha ma môt cach dê dang.
Thông thƣơng ham f đƣơc chon thƣơng la ham có tinh chất f = f
-1
, tưc f(f(x)) = x.
Trong sơ đô mô ta ma hoa cua DES đƣơc công bô bởi Uy ban Tiêu chuân Quôc gia
Hoa Ky (The Untied States Nation Bureau of Standard), ham f thưc hiên cac viêc sau:
÷ Biên thư nhất R
i-1
đƣơc mở rông thanh môt xâu bit có đô dai 48 bit theo môt
ham mở rông cô đinh E. Thưc chất ham mở rông E(R
i-1
) la môt hoan vi có lặp trong đó lặp
lai 16 bit cua R
i-1
.
÷ Tính E(R
i-1
) ©K
i
va viêt kêt qua thanh 8 xâu 6 bit B
1
B
2
B
3
B
4
B
5
B
6
B
7
B
8
.
÷ Đƣa 8 khôi B
i
vao 8 bang S
1
, S
2
, ..., S
8
(đƣơc goi la cac hôp S-Box). Mỗi hôp
S-Box la môt bang 4*16 cô đinh có cac côt tư 0 đên 15 va cac hang tư 0 đên 3. Vơi mỗi
xâu 6 bit B
i
= b
1
b
2
b
3
b
4
b
5
b
6
, ta tinh đƣơc S
i
(B
i
) nhƣ sau: hai bit b
1
b
6
xac đinh hang r trong
hôp S
i
, bôn bit b
2
b
3
b
4
b
5
xac đinh côt c trong hôp S
i
. Khi đó, S
i
(B
i
) sẽ xac đinh phân tử C
i
=
S
i
(r,c), phân tử nay viêt dƣơi dang nhi phân 4 bit. Nhƣ vây, 8 khôi 6 bit B
i
(1 ≤ i ≤ 8) sẽ
cho ra 8 khôi 4 bit C
i
vơi (1 ≤ i ≤ 8).
÷ Xâu bit C = C
1
C
2
C
3
C
4
C
5
C
6
C
7
C
8
có đô dai 32 bit đƣơc hoan vi theo phep hoan
vi P (hôp P-Box). Kêt qua P(C) sẽ la kêt qua cua ham f(R
i-1
, K
i
), va cung chinh la R
i
cho
vòng sau.
Ham f cung có thê mô ta băng hình vẽ sau:
Chƣơng III: Các hê ma khoa bi mât
43

Hình 3.5: Sơ đô ham f
2.2.5. Hàm (ánh xa) mở rông (E)
Ham mở rông (E) sẽ tăng đô dai cua Ri tư 32 bit lên 48 bit băng cach thay đôi cac
thư tư cua cac bit cung nhƣ lặp lai cac bit. Viêc thưc hiên nay nhăm hai muc đich:
÷ Lam đô dai cua R
i
cùng cỡ vơi khoa K đê thưc hiên viêc công modulo XOR.
÷ Cho kêt qua dai hơn đê có thê đƣơc nen trong suôt qua trình thay thê.
Tuy nhiên, ca hai muc đich nay đều nhăm môt muc tiêu chinh la bao mât dữ liêu.
Băng cach cho phep 1 bit có thê chèn vao hai vi tri thay thê, sư phu thuôc cua cac bit đâu
ra vơi cac bit đâu vao sẽ trai rông ra. DES đƣơc thiêt kê vơi điều kiên la mỗi bit cua ban
ma phu thuôc vao mỗi bit cua ban rõ va khoa.
Sơ đô ham mở rông:
32 bit
32 bit
8×6 bit
R
i-1
(32 bit)
Hàm mở rộng (E) Khoá K
i
(48 bit)
S
1
S
2
S
3

S
4

S
5

S
6

S
7

S
8

P
R
i
(32 bit)
48 bit
8×4 bit
48 bit
Chƣơng III: Các hê ma khoa bi mât
44

Hình 3.6: Sơ đô ham mở rông (E)
Đôi khi nó đƣơc goi la ham E-Box, mỗi 4 bit cua khôi vao, bit thư nhất va bit thư tƣ
tƣơng ưng vơi 2 bit cua đâu ra, trong khi bit thư 2 va 3 tƣơng ưng vơi 1 bit ở đâu ra. Bang
sau đây miêu ta vi tri cua bit ra so vơi bit vao.
Bang mô ta ham mở rông (E):
32 1 2 3 4 5 4 5 6 7 8 9
8 9 10 11 12 13 12 13 14 15 16 17
16 17 18 19 20 21 20 21 22 23 24 25
24 25 26 27 28 29 28 29 30 31 32 1
Bang 3.11: Bang mô ta
̉
ha
̀
m mơ
̉
rộ ng E
Vi du nhƣ bit ở vi tri sô 3 cua khôi vao sẽ di chuyên đên vi tri sô 4 cua khôi ra va bit
ở vi tri 21 ở đâu vao sẽ di chuyên đên vi tri 30 va 32 ở đâu ra.
2.2.6. Mô tả hôp S - Box
Đôi vơi sơ đô ma hoa DES, moi tinh toan đều la tuyên tinh, tưc la viêc tinh phep
tuyên loai trư XOR cua hai đâu ra cung giông vơi phep tuyên loai trư XOR cua hai đâu
vao rôi tinh toan đâu ra. Chỉ duy nhất có cac tinh toan vơi hôp S la phi tuyên. Chinh vì vây
các hôp S-Box (chưa đưng cac thanh phân phi tuyên cua hê mât) la quan trong nhất đôi
vơi đô mât cua hê ma, chinh cac hôp S tao nên sư hỗn loan (confusion) va sư khuêch tan
(diffusion) cua DES. Năm 1976, NSA đa đƣa ra tiêu chuân thiêt kê hôp S nhƣ sau:
÷ Mỗi hang trong mỗi hôp S la môt hoan vi cua cac sô nguyên tư 0 đên 15.
÷ Không có hôp S nao la ham Affine hay tuyên tinh đôi vơi cac đâu vao cua nó.
÷ Sư thay đôi cua môt bit đâu vao sẽ dân đên sư thay đôi it nhất hai bit đâu ra.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 2 3 4 5 4 5 6 7 8 9 8 9 10 11 12 1312 1314 15 16 1716
32
32
Chƣơng III: Các hê ma khoa bi mât
45
÷ Đôi vơi hôp S bất ky va vơi đâu vao x (môt xâu bit có đô dai băng 6) bất ky, thì
S(x) và S(x©001100) phai khac nhau it nhất la 2 bit.
NSA cung tiêt lô 3 thuôc tinh cua hôp S, những thuôc tinh nay đam bao tinh
confusion va diffusion cua thuât toan:
÷ Cac bit vao luôn phu thuôc không tuyên tinh vơi cac bit ra.
÷ Sửa đôi ở môt bit vao lam thay đôi it nhất la hai bit ra.
÷ Khi môt bit vao đƣơc giữ cô đinh va 5 bit còn lai cho thay đôi thì hôp S thê hiên
môt tinh chất đƣơc goi la “phân bô đông nhất”: so sanh sô lƣơng bit sô 0 va 1 ở cac đâu
ra luôn ở mưc cân băng. Tinh chất nay khiên cho viêc phân tich theo ly thuyêt thông kê
đê tìm cach pha hôp S la vô ich.
Sau khi công modulo vơi khoa K, kêt qua thu đƣơc chuỗi 48 bit chia lam 8 khôi đƣa
vao 8 hôp S-Box. Mỗi hôp S-Box có 6 bit đâu vao va 4 bit đâu ra (tông bô nhơ yêu câu
cho 8 hôp S-Box chuân DES la 256 bytes). Kêt qua thu đƣơc la môt chuỗi 32 bit tiêp tuc
vao hôp P-Box.
Ta có thê xây dưng cac hôp S cua riêng mình, tuy nhiên cung có thê dùng cac hôp
S chuân đa đƣơc công bô:
14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Bang 3.12: Hôp S
1

15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
Bang 3.13: Hôp S
2

10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1
13 6 4 9 8 15 3 0 11 1 2 12 15 10 14 7
1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
Bang 3.14: Hôp S
3

7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
Chƣơng III: Các hê ma khoa bi mât
46
10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
Bang 3.15: Hôp S
4

2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
Bang 3.16: Hôp S
5

12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
Bang 3.17: Hôp S
6

4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
Bang 3.18: Hôp S
7

13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
Bang 3.19: Hôp S
8

Vi dụ:
Gia sử đâu vao cua hôp S
6
la chuỗi bit 110011 tư 31 đên 36 . Bit đâu tiên va bit cuôi
cùng kêt hơp lai thanh 11 tƣơng ưng vơi hang 3 cua hôp S
6
. Bôn bit giữa có gia tri 1001,
tƣơng ưng vơi côt 9. Nhƣ vây, gia tri nhân đƣơc la 14 (sô đêm cua côt, hang băt đâu tư
0) va gia tri 1110 đƣơc thay thê cho gia tri 110110 ở đâu ra.
2.2.7. Hôp P-Box
Viêc hoan vi nay mang tinh đơn anh, nghĩa la môt bit đâu vao sẽ cho môt bit ở đâu
ra, không bit nao đƣơc sử dung hai lân hay bi bỏ qua. Hôp P-Box thưc chất chỉ lam chưc
năng săp xêp đơn thuân theo bang sau:
Chƣơng III: Các hê ma khoa bi mât
47
Bang mô ta hôp P-Box (P):
16 7 20 21 29 12 28 17
1 15 23 26 5 18 31 10
2 8 24 14 32 27 3 9
19 13 30 6 22 11 4 25
Bang 3.20: Bang hoan vi P
Vi du nhƣ bit 21 sẽ dich chuyên đên bit thư 4, trong khi bit thư 4 lai dich chuyên đên
bit 31. Kêt qua cuôi cùng cua hôp P-Box lai đƣơc XOR vơi nƣ
̉
a trai cua khôi 64 bit cua
chinh nó (tưc Li-1 đê tao ra Ri ) va sau đó nƣ
̉
a trai va nƣ
̉
a phai đao cho nhau va băt đâu
môt vòng khac.
2.2.8. Vi dụ về ma hoá DES
Đê có thê hiêu rõ hơn về phƣơng phap ma hoa DES, chúng ta hay xet vi du sau:
÷ Môt ban rõ mang nôi dung: “0123456789ABCDEF”.
÷ Sử dung khoa (ở dang thâp phân): “133457799BBCDFFI”. Khoa nay ở dang
nhi phân la môt chuỗi bit nhƣ sau (không có bit kiêm tra):
00010010011010010101101111001001101101111011011111111000
÷ Chuyên đôi IP, chúng ta lấy ra L
0
và R
0
:
L
0
= 11001100000000001100110011111111
L
0
= R
0
= 11110000101010101111000010101010
÷ 16 vòng ma hoa đƣơc thưc hiên nhƣ sau:
E(R
0
) = 011110100001010101010101011110100001010101010101
K
1
= 000110110000001011101111111111000111000001110010
E(R
0
) ©K
1
= 011000010001011110111010100001100110010100100111
Đâu ra S-Box = 01011100100000101011010110010111
f(R
0
,K
1
) = 00100011010010101010100110111011
L
2
=R
1
= 11101111010010100110010101000100

E(R
1
) = 011101011110101001010100001100001010101000001001
K
2
= 011110011010111011011001110110111100100111100101
E(R
1
) ©K
2
= 000011000100010010001101111010110110001111101100
Đâu ra S-Box = 11111000110100000011101010101110
f(R
1
,K
2
) = 00111100101010111000011110100011
L
3
=R
2
= 11001100000000010111011100001001

Chƣơng III: Các hê ma khoa bi mât
48
E(R
2
) = 111001011000000000000010101110101110100001010011
K
3
= 010101011111110010001010010000101100111110011001
E(R
2
) ©K
3
= 101100000111110010001000111110000010011111001010
Đâu ra S-Box = 00100111000100001110000101101111
f(R
2
,K
3
) = 01001101000101100110111010110000
L
4
=R
3
= 10100010010111000000101111110100

E(R
3
) = 010100000100001011111000000001010111111110101001
K
4
= 011100101010110111010110110110110011010100011101
E(R
3
) ©K
4
= 001000101110111100101110110111100100101010110100
Đâu ra S-Box = 00100001111011011001111100111010
f(R
3
,K
4
) = 10111011001000110111011101001100
L
5
=R
4
= 01110111001000100000000001000101

E(R
4
) = 101110101110100100000100000000000000001000001010
K
5
= 011111001110110000000111111010110101001110101000
E(R
4
) ©K
5
= 110001100000010100000011111010110101000110100010
Đâu ra S-Box = 01010000110010000011000111101011
f(R
4
,K
5
) = 00101000000100111010110111000011
L
6
=R
5
= 10001010010011111010011000110111

E(R
5
) = 110001010100001001011111110100001100000110101111
K
6
= 011000111010010100111110010100000111101100101111
E(R
5
) ©K
6
= 101001101110011101100001100000001011101010000000
Đâu ra S-Box = 01000001111100110100110000111101
F(R
5
,K
6
) = 10011110010001011100110100101100
L
7
=R
6
= 11101001011001111100110101101001

E(R
6
) = 111101010010101100001111111001011010101101010011
K
7
= 111011001000010010110111111101100001100010111100
E(R
6
) ©K
7
= 000110011010111110111000000100111011001111101111
Đâu ra S-Box = 00010000011101010100000010101101
F(R
6
,K
7
) = 10001100000001010001110000100111
Chƣơng III: Các hê ma khoa bi mât
49
L
8
=R
7
= 00000110010010101011101000010000

E(R
7
) = 000000001100001001010101010111110100000010100000
K
8
= 111101111000101000111010110000010011101111111011
E(R
7
) ©K
8
= 111101110100100001101111100111100111101101011011
Đâu ra S-Box = 01101100000110000111110010101110
F(R
7
,K
8
) = 00111100000011101000011011111001
L
9
=R
8
= 11010101011010010100101110010000

E(R
8
) = 011010101010101101010010101001010111110010100001
K
9
= 111000001101101111101011111011011110011110000001
E(R
8
) ©K
9
= 100010100111000010111001010010001001101100100000
Đâu ra S-Box = 00010001000011000101011101110111
F(R
8
,K
9
) = 00100010001101100111110001101010
L
10
=R
9
= 00100100011111001100011001111010

E(R
9
) = 000100001000001111111001011000001100001111110100
K
10
= 101100011111001101000111101110100100011001001111
E(R
9
) ©K
10
= 101000010111000010111110110110101000010110111011
Đâu ra S-Box = 11011010000001000101001001110101
F(R
9
,K
10
) = 01100010101111001001110000100010
L
11
=R
10
= 10110111110101011101011110110010

E(R
10
) = 010110101111111010101011111010101111110110100101
K
11
= 001000010101111111010011110111101101001110000110
E(R
10
) ©K
11
= 011110111010000101111000001101000010111000100011
Đâu ra S-Box = 01110011000001011101000100000001
f(R
10
,K
11
) = 11100001000001001111101000000010
L
12
=R
11
= 11000101011110000011110001111000

E(R
11
) = 011000001010101111110000000111111000001111110001
K
12
= 011101010111000111110101100101000110011111101001
E(R
11
) ©K
12
= 000101011101101000000101100010111110010000011000
Chƣơng III: Các hê ma khoa bi mât
50
Đâu ra S-Box = 01111011100010110010011000110101
f(R
11
,K
12
) = 11000010011010001100111111101010
L
13
=R
12
= 01110101101111010001100001011000

E(R
12
) = 001110101011110111111010100011110000001011110000
K
13
= 100101111100010111010001111110101011101001000001
E(R
12
) ©K
13
= 101011010111100000101011011101011011100010110001
Đâu ra S-Box = 10011010110100011000101101001111
f(R
12
,K
13
) = 11011101101110110010100100100010
L
14
=R
13
= 00011000110000110001010101011010
E(R
13
) = 000011110001011000000110100010101010101011110100
K
14
= 010111110100001110110111111100101110011100111010
E(R
13
) ©K
14
= 010100000101010110110001011110000100110111001110
Đâu ra S-Box = 01100100011110011001101011110001
f(R
13
,K
14
) = 10110111001100011000111001010101
L
15
=R
14
= 11000010100011001001011000001101

E(R
14
) = 111000000101010001011001010010101100000001011011
K
15
= 101111111001000110001101001111010011111100001010
E(R
14
) ©K
15
= 010111111100010111010100011101111111111101010001
Đâu ra S-Box = 10110010111010001000110100111100
f(R
14
,K
15
) = 01011011100000010010011101101110
L
16
=R
15
= 01000011010000100011001000110100

E(R
15
) = 001000000110101000000100000110100100000110101000
K
16
= 110010110011110110001011000011100001011111110101
E(R
15
) ©K
16
= 111010110101011110001111000101000101011001011101
Đâu ra S-Box = 10100111100000110010010000101001
f(R
15
,K
16
) = 11001000110000000100111110011000
R
16
= 00001010010011001101100110010101
Bang 3.21: Vi du về cac bƣơc thưc hiệ n cu
̉
a DES
÷ Cuôi cùng, chuyên đôi IP
-1
, ta thu đƣơc ban ma (ở dang Hecxa):
“85E813540F0AB405”.
Chƣơng III: Các hê ma khoa bi mât
51
2.3. Các yêu điêm cua DES
2.3.1. Tính bù
Nêu ta ky hiêu u la phân bù cua u (vi du nhƣ: 0100101 la phân bù cua 1011010) thì
DES có tinh chất sau:
y = DES(x,k) → y = DES( x , k )
Cho nên nêu ta biêt ma y đƣơc ma hoa tư thông tin x vơi khoa K thì ta suy ra đƣơc
ban ma y đƣơc ma hoa tư ban rõ x vơi khoa k . Tinh chất nay chinh la môt yêu điêm
cua DES bởi vì qua đó đôi phƣơng có thê loai bỏ đi môt sô khoa phai thử khi tiên hanh
thử giai ma theo kiêu vet can.
2.3.2. Khoá yêu
Khoa yêu la cac khoa ma theo thuât toan sinh khoa con thì tất ca 16 khoa con đều
nhƣ nhau:
K
1
= K
2
= ... = K
15
= K
16

Điều đó khiên cho việ c mã hóa va giai ma đôi vơi khoa yêu la giông hêt nhau.
Có tất ca 4 khoa yêu sau:
Khoá yếu (Hex) C
0
D
0
0101 0101 0101 0101 {0}
28
{0}
28

FEFE FEFE FEFE FEFE {1}
28
{1}
28

1F1F 1F1F 0E0E 0E0E {0}
28
{1}
28

E0E0 E0E0 F1F1 F1F1 {1}
28
{0}
28

Bang 3.22: Cac khóa yêu cua DES
Đông thơi còn có 6 cặp khoa nƣ
̉
a yêu (semi-weak key) khac vơi thuôc tinh nhƣ sau:
y = DES(x,k
1
) và y = DES(x,k
2
)
nghĩa la vơi 2 khoa khac nhau nhƣng ma hoa ra cùng môt ban ma tư cùng môt ban
rõ:

C
0
D
0
Semi-weak key (Hex) C
0
D
0
{01}
14
{01}
14
01FE 01FE 01FE 01FE FE01 FE01 FE01 FE01 {10}
14
{10}
14

{01}
14
{10}
14
1FE0 1FE0 0EF1 0EF1 E01F E01F F10E F10E {10}
14
{01}
14

{01}
14
{0}
28
01E0 01E0 01F1 01F1 E001 E001 F101 F101 {10}
14
{0}
28

{01}
14
{1}
28
1FFE 1FFE 0EFE 0EFE FE1F FE1F FE0E FE0E {10}
14
{1}
28

{0}
28
{01}
14
011F 011F 010E 010E 1F01 1F01 0E01 0E01 {0}
28
{10}
14

{1}
28
{01}
14
E0FE E0FE F1FE F1FE FEE0 FEE0 FEF1 FEF1 {1}
28
{10}
14

Bang 3.23: Cac khóa nửa yêu cua DES
Chƣơng III: Các hê ma khoa bi mât
52
2.3.3. DES co câu trúc đai sô
Vơi 64 bit khôi ban rõ có thê đƣơc anh xa lên tất ca vi tri cua 64 bit khôi ban ma
trong 2
64
cach. Trong thuât toan DES, vơi 56 bit khoa, có thê cho chúng ta 2
56
(khoang
10
17
) vi tri anh xa. Vơi viêc đa ma hoa thì không gian anh xa còn lơn hơn. Tuy nhiên điều
nay chỉ đúng nêu viêc ma hoa DES la không có cấu trúc.
Vơi DES có cấu trúc đai sô thì viêc đa ma hoa sẽ đƣơc xem ngang băng vơi viêc
đơn ma hoa. Vi du nhƣ có hai khoa bất ky K
1
và K
2
thì sẽ luôn đƣơc khoa thư K
3
nhƣ sau:
E
K2
(E
K1
(x)) = E
K3
(x)
Nói môt cach khac, viêc ma hoa DES mang tich chất “nhóm”, đâu tiên ma hoa ban
rõ băng khoa K
1
sau đó la khoa K
2
sẽ giông vơi viêc ma hoa ở khoa K
3
. Điều nay thưc sư
quan trong nêu sử dung DES trong đa ma hoa. Nêu môt “nhóm” đƣơc phat vơi cấu trúc
ham qua nhỏ thì tinh an toan sẽ giam.
2.3.4. Không gian kho
́
a K
DES có 2
56
= 10
17
khoa. Nêu chúng ta biêt đƣơc môt cặp “tin/ma” thì chúng ta có
thê thử tất ca 10
17
kha năng nay đê tìm ra khoa cho kêt qua khơp nhất. Gia sử nhƣ môt
phep thử mất 10
-6
s, thì chúng sẽ mất 10
11
s, tưc 7300 năm. Nhƣng vơi cac may tinh đƣơc
chê tao theo xử ly song song. Chăng han vơi 10
7
con chipset ma DES chay song song thì
bây giơ mỗi môt con chipset chỉ phai chiu trach nhiêm tinh toan vơi 10
10
phep thử.
Chipset mã DES ngày nay có thê xử ly tôc đô 4.5×10
7
bit/s tưc có thê lam đƣơc hơn 10
5

phep ma DES trong môt giây.
Vao năm 1976 va 1977, Diffie va Hellman đa ƣơc lƣơng răng có thê chê tao đƣơc
môt may tinh chuyên dung đê vet can không gian khoa DES trong ½ ngay vơi cai gia 20
triêu đô la. Năm 1984, chipset ma hoa DES vơi tôc đô ma hoa 256000 lân/giây. Năm
1987, đa tăng lên 512000 lân/giây. Vao năm 1993, Michael Wiener đa thiêt kê môt may
tinh chuyên dung vơi gia 1 triêu đô la sử dung phƣơng phap vet can đê giai ma DES
trung bình trong vòng 3,5 giơ (va châm nhất la 7 giơ).
Đên năm 1990, hai nha toan hoc ngƣơi Do Thai - Biham và Shamir - đa phat minh
ra phƣơng phap pha ma vi sai (diferential cryptanalyis), đây la môt ky thuât sử dung
những phỏng đoan khac nhau trong ban rõ đê đƣa ra những thông tin trong ban ma. Vơi
phƣơng phap nay, Biham va Shamir đa chưng minh răng nó hiêu qua hơn ca phƣơng
phap vet can.
Pha ma vi sai la thuât toan xem xet những cặp ma hoa khac nhau, đây la những
cặp ma hoa ma ban rõ cua chúng la khac biêt. Ngƣơi ta sẽ phân tich tiên trình biên đôi
cua những cặp ma nay thông qua cac vòng cua DES khi chúng đƣơc ma hoa vơi cùng
môt khoa K. Sau đó sẽ chon hai ban rõ khac nhau môt cach ngâu nhiên hơp ly nhất. Sử
dung sư khac nhau cua kêt qua ma hoa va gan cho những khoá khác nhau môt cach phù
hơp nhất. Khi phân tích nhiều hơn những cặp ban ma, chúng ta sẽ tìm ra môt khoa đƣơc
xem la đúng nhất.

2.4. Triple DES (3DES)
Nhƣ đa
̃
tri
̀
nh ba
̀
y ơ
̉
ca
́
c phầ n trên , hệ ma
̃
DES (hay chuẩ n ma
̃
ho
́
a dƣ
̃
liệ u ) vơ
́
i
không gian khóa ven ven có 2
54
khóa nên thƣ̣ c tế hiệ n nay có thê bi tham ma trong
Chƣơng III: Các hê ma khoa bi mât
53
khoang thơi gian vai giơ đông hô. Vì vây viêc tìm kiêm cac hê ma khac thay thê cho DES
la môt điều cân thiêt . Mộ t trong nhƣ
̃
ng ca
́
ch thƣ
́
c đƣợ c xem xe
́
t đầ u tiên la
̀
tậ n dụ ng DES
nhƣng sƣ
̉
dụ ng ma
̃
ho
́
a nhiề u lầ n . Cach thư nhất la sử dung hai khóa đê ma hóa hai lân
nhƣ sau:
C = E
K2
(E
K1
(P))
Cach nay goi la double DES hay 2DES, khóa cua hê ma theo mô hình nay la 112
bit, có ve an toa
̀
n hơn so vơ
́
i DES , it nhất la trên nguyên tăc . Tuy nhiên ca
́
c chƣ
́
ng minh
về mặ t ly
́
thuyế t (không nằ m trong phạ m vi cu
̉
a ta
̀
i liệ u na
̀
y ) đa
̃
cho thấ y rằ ng hệ ma
̃
na
̀
y
không hề an toa
̀
n hơn DES (thuậ t toa
́
n tha
́
m ma
̃
theo kiể u ve
́
t can brute-force yêu cầ u số
phep tinh gấp đôi đê tham ma 2DES so vơ
́
i DES).
Cach thưc thư hai va hiên nay đang đƣơc sử dung rông rai la ma hóa DES ba lân ,
cach nay goi la Triple DES (TDES) hay 3DES, hoặ c mộ t ca
́
ch chuẩ n mƣ̣ c hơ n la
̀
TDEA
(Triple Data Encryption Algorithm). Mô hi
̀
nh sƣ
̉
dụ ng đơn gia
̉
n nhấ t cu
̉
a Triple DES la
̀
ma
̃

hóa 3 lầ n sƣ
̉
dụ ng 3 khóa K1, K2, K3 nhƣ hi
̀
nh minh họ a sau:

Hình 3.7: Triple DES
Ban ma C = DES
K3
(DES
K2
(DES
K1
(M)), mô hi
̀
nh na
̀
y gọ i la
̀
EEE vi
̀
ca
̉
ba bƣơ
́
c sƣ
̉

dung ba khóa ở đây đều sử dung thuât toan ma hóa chuân cua DES , mộ t biế n thể kha
́
c
cua mô hình nay goi la EDE vơi bƣơc ở giữa sử dung thuât toan giai ma cua DES:
C = DES
K3
(
1
2 K
DES
÷
(DES
K1
(M)).
Việ c lƣ̣ a chọ n ma
̃
ho
́
a hay gia
̉
i ma
̃
ơ
̉
bƣơ
́
c thƣ
́
hai không la
̀
m thay đổ i ti
́
nh an toa
̀
n
cua Triple DES. Khóa cua Triple DES la 168 bit, mộ t số biế n thể cu
̉
a Triple DES sƣ
̉
dụ ng
khóa có đô dai 112 bit (K1=K3) nhƣng kha
́
c vơ
́
i double DES, khi đo
́
phƣơng pha
́
p na
̀
y co
́

tên gọ i la
̀
Two key Triple DES . Cac chưng minh về mặt ly thuyêt va cac tấn công đôi vơi
Triple DES cho thấ y hệ ma
̃
na
̀
y vẫ n se
̃
co
̀
n đƣợ c sƣ
̉
dụ ng trong mộ t tƣơng lai d ai nữa
mặ c du
̀
trên trên thƣ̣ c tế no
́
chậ m hơn so vơ
́
i AES 6 lầ n.
Chƣơng III: Các hê ma khoa bi mât
54
2.5. Chuẩ n ma
̃
ho
́
a cao cấ p AES
2.5.1. Giơ
́
i thiệ u
Chuẩ n ma
̃
ho
́
a dƣ
̃
liệ u cao cấ p AES la
̀
mộ t hệ ma
̃
kho
́
a bi
́
mậ t co
́
tên la
̀
Rijndael (Do
hai nha
̀
mậ t ma
̃
họ c ngƣơ
̀
i Bi
̉
la Joan Daemen va
̀
Vincent Rijmen đƣa ra va
̀
trơ
̉
tha
̀
nh
chuẩ n tƣ
̀
năm 2002) cho phe
́
p xƣ
̉
ly
́
ca
́
c khố i dƣ
̃
liệ u input co
́
ki
́
ch thƣơ
́
c 128 bit sƣ
̉
dụ ng
cac khóa có đô dai 128, 192 hoặ c 256 bit. Hệ ma
̃
Rijndael đƣợ c thiế t kế để co
́
thể l am
việ c vơ
́
i ca
́
c kho
́
a va
̀
ca
́
c khố i dƣ
̃
liệ u co
́
độ da
̀
i lơ
́
n hơn tuy nhiên khi đƣợ c chọ n la
̀
mộ t
chuẩ n do Ủ y ban tiêu chuẩ n cu
̉
a Hoa Ky
̀
đƣa ra va
̀
o năm 2001, nó đƣơc qui đinh chỉ lam
việ c vơ
́
i ca
́
c khố i dƣ
̃
liệ u 128 bit va
̀
ca
́
c kho
́
a co
́
độ da
̀
i 128, 192 hoặ c 256 bit (do đo
́
co
̀
n
đặ t cho no
́
ca
́
c tên AES-128, AES-192, AES-256 tƣơng ƣ
́
ng vơ
́
i độ da
̀
i kho
́
a sƣ
̉
dụ ng).
2.5.2. Các khái niêm va đinh nghia (Definitions)
2.5.2.1. Các khái niêm va ky hiêu
Cac khai niêm va đi ̣ nh nghi
̃
a đƣợ c sƣ
̉
dụ ng để tri
̀
nh ba
̀
y về chuẩ n ma
̃
ho
́
a cao cấ p:

AES Chuẩ n ma
̃
ho
́
a cao cấ p
Biế n đổ i Affine
Phep biên đôi bao gôm môt phep nhân vơi môt ma trân
sau đo
́
la
̀
mộ t phe
́
p cộ ng cu
̉
a mộ t vectơ
Bit Mộ t số nhi ̣ phân nhậ n gia
́
tri ̣ 0 hoặ c 1
Block
Mộ t da
̃
y ca
́
c bit nhi ̣ phân tạ o tha
̀
nh input , output, trang
thai (state) va cac khóa sử dung tai cac vòng lặp (Round
Key) cua hê ma . Đô dai cua day (khố i) la sô lƣơng cac
bit ma
̀
no
́
chƣ
́
a . Cac khố i cu
̃
ng co
́
thể đƣợ c xem la
̀
mộ t
day cac byte
Byte Mộ t nho
́
m 8 bit
Cipher Thuậ t toa
́
n ma
̃
ho
́
a
Cipher Key
Khóa cua hê ma , có thê đƣơc biêu diên dƣơi dang môt
mang 2 chiề u gồ m 4 hang va Nk côt
Ciphertext Ban ma
Inverse Cipher Thuậ t toa
́
n gia
̉
i ma
̃

Thu tuc sinh khóa (Key
Expansion)
Thu tuc đƣơc sử dung đê sinh ra cac khóa sử dung tai
cac vòng lặp cua thuât toan ma hóa , giai ma tư khóa
chinh ban đâu
Round Key
La cac gia tri sinh ra tư kh óa chinh băng cach sử dung
thu tuc sinh khóa . Cac khóa nay đƣơc sử dung tai cac
vòng lặp cua thuât toan
Trang thai (State)
Cac gia tri ma hóa trung gian có thê biêu diên dƣơi dang
mộ t ma
̉
ng 2 chiề u gồ m 4 hang va Nb cộ t
S-box
Mộ t ba
̉
ng thế phi tuyế n đƣợ c sƣ
̉
dụ ng trong thu
̉
tụ c sinh
khóa va trong cac biên đôi thay thê cac byte đê thưc
hiệ n ca
́
c thay thế 1-1 đố i vơ
́
i mộ t gia
́
tri ̣ 1 byte
Word
Mộ t nho
́
m 32 bit co
́
thể đƣợ c xem nhƣ 1 đơn vi ̣ tinh toan
độ c lậ p hoặc la
̀
mộ t ma
̉
ng 4 byte
Bang 3.24: Qui ƣơ
́
c mộ t số tƣ
̀
viế t tắ t va
̀
thuậ t ngƣ
̃
cu
̉
a AES
2.5.2.2. Các ham, ky hiêu va các tham sô cua thuât toán
Cac tham sô thuât toan , cac ky hiêu va cac ham đƣơc sử dung trong mô ta
̉
thuậ t
toan:
AddRoundKey()
Ham biên đôi đƣơc sử dung trong thuât toan ma hóa va giai
ma trong đó thưc hiên phep toan XOR bit giữa môt trang
Chƣơng III: Các hê ma khoa bi mât
55
thai tr ung gian (State) va môt khóa cua vòng lặp (Round
Key). Kich thƣơc cua môt Round Key băng kich thƣơc cua
trang thai (chẳ ng hạ n vơ
́
i Nb = 4 độ da
̀
i cu
̉
a mộ t Round Key
sẽ la 128 bit hay 16 byte)
InvMixColumns()
Ham biên đôi đƣơc sử dung trong thuât toan giai ma, la ham
ngƣợ c cu
̉
a ha
̀
m MixColumns()
InvShiftRows()
Ham biên đôi trong thuât toan giai ma , la ham ngƣơc cua
ham ShiftRows()
InvSubBytes()
Ham biên đôi trong thuât toan giai ma , la ham ngƣơc cu a
ham SubBytes()
K Khóa ma hóa
MixColumns()
Ham biên đôi trong thuât toan ma hóa nhân tất ca cac côt
cua môt trang thai (State) va trôn vơi dữ liêu cua nó (không
phu thuôc lân nhau) đê nhân đƣơc môt côt mơi
Nb
Số lƣợ ng ca
́
c cộ t (la cac word 32 bit) tao thanh môt trang
thai, Nb = 4)
Nk
Số lƣợ ng ca
́
c word 32 bit tạ o tha
̀
nh kho
́
a ma
̃
ho
́
a K (Nk = 4,
6, hoặ c 8)
Nr
Số lƣợ ng ca
́
c vo
̀
ng lặ p cu
̉
a thuậ t toa
́
n , la môt ham cua Nk
va Nb (la cac gia tri cố đi ̣ nh) ( Nr = 10, 12 hoặ c 14 tƣơng
ưng vơi cac gia tri khac nhau cua Nk)
Rcon[] Mang word hăng sô sử dung trong cac vòng lặp
RotWord()
Ham sử dung trong thu tuc sinh khóa nhân môt word 4-byte
va thưc hiên môt hoan vi vòng
ShiftRows()
Ham sử dung trong qua trình ma hóa , xƣ
̉
ly
́
ca
́
c trạ ng tha
́
i
bằ ng ca
́
ch di ̣ ch vo
̀
ng ba ha
̀
ng cuố i cu
̉
a trạ ng tha
́
i vơ
́
i số lầ n
dich khac nhau
SubBytes()
Ham biên đôi sử dung trong qua trình ma hóa , xƣ
̉
ly
́
mộ t
trang tha
́
i bằ ng ca
́
ch sƣ
̉
dụ ng mộ t ba
̉
ng thế phi tuyế n ca
́
c
byte (S-box) thao ta
́
c trên mỗ i byte mộ t ca
́
ch độ c lậ p
SubWord()
Ham sử dung trong thu tuc sinh khóa nhân môt word input
4-byte va
̀

̉
dụ ng mộ t S -box trên mỗ i gia
́
tri ̣ 4-byte nay đê
thu đƣợ c 1 word output
XOR Phep or bit tuyêt đôi
© Phep or bit tuyêt đôi
© Phep nhân 2 đa thƣ
́
c (bậ c nho
̉
hơn 4) theo modulo (x
4
+ 1)
- Phep nhân trên trƣơng hữu han

2.5.3. Các ky hiêu va qui ƣơc
2.5.3.1. Input va
̀
Output
Input va
̀
Output cu
̉
a chuẩ n ma
̃
ho
́
a cao cấ p đề u la
̀
ca
́
c da
̃
y 128 bit, còn goi la cac
khố i (block), độ da
̀
i cu
̉
a mỗ i khố i na
̀
y la
̀
số bit dƣ
̃
liệ u ma nó chưa. Khóa cua chuân ma
hóa cao cấp la môt day có đô dai 128, 192 hoặ c 256 bit. Chuẩ n ma
̃
ho
́
a dƣ
̃
liệ u cao cấ p
không la
̀
m việ c vơ
́
i ca
́
c gia
́
tri ̣ input , output va
̀
kho
́
a co
́
ca
́
c độ da
̀
i kha
́
c (mặ c du
̀
thuậ t toa
́
n
cơ sơ
̉
cu
̉
a no
́
cho phe
́
p điề u na
̀
y).
Cac bit cua input, output va
̀
kho
́
a cu
̉
a hệ ma
̃
đƣợ c đa
́
nh số tƣ
̀
0.
2.5.3.2. Đơn vi ̣ Byte
Đơn vi ̣ cơ ba
̉
n để xƣ
̉
ly
́
trong AES la
̀
mộ t byte tƣ
́
c la
̀
mộ t da
̃
y 8 bit đƣợ c xem nhƣ la
̀

mộ t đố i tƣợ ng đơn. Cac gia tri input, output va
̀
kho
́
a cu
̉
a hệ ma
̃
(đƣợ c qui đi ̣ nh trong phầ n
3.1) đƣợ c xem la
̀
mộ t mang cac byte. Cac gia tri input, output va
̀
kho
́
a cu
̉
a hệ ma
̃
đƣợ c ky
́

Chƣơng III: Các hê ma khoa bi mât
56
hiệ u bơ
̉
i tên ma
̉
ng a va
̀
biể u diễ n dƣơ
́
i dạ ng a
n
hoặ c a[n] trong đo
́
n nhậ n ca
́
c gia
́
tri ̣ trong
cac khoang sau:
Nế u độ da
̀
i kho
́
a bằ ng 128 bit: 0 ≤ n < 16;
Nế u độ da
̀
i kho
́
a bằ ng 192 bit: 0 ≤ n < 24;
Nế u độ da
̀
i kho
́
a bằ ng 256 bit: 0 ≤ n < 32;
Tấ t ca
̉
ca
́
c gia
́
tri ̣ Byte sƣ
̉
dụ ng trong thuậ t toa
́
n cu
̉
a AES đề u đƣợ c biể u diễ n dƣơ
́
i
dang môt day cac bit 0 hoặ c 1 theo đi ̣ nh dạ ng {b
7
, b
6
, b
5
, b
4
, b
3
, b
2
, b
1
, b
0
}. Cac Byte nay
sau đƣợ c hiể u la
̀
ca
́
c phầ n tƣ
̉
trên trƣơ
̀
ng hƣ
̃
u hạ n bằ ng ca
́
ch sƣ
̉
dụ ng biể u diễ n tha
̀
nh
dang đa thưc:
b
7
x
7
+ b
6
x
6
+ b
5
x
5
+ b
4
x
4
+ b
3
x
3
+ b
2
x
2
+ b
1
x
1
+ b
0
x
0
=
7
0
i
i
i
b x
=
¿
.
Chẳ ng hạ n gia
́
tri ̣ {01100011} tƣơng đƣơng vơ
́
i phầ n tƣ
̉
trên trƣơ
̀
ng hƣ
̃
u hạ n x
6
+
x
5
+ x + 1.
Để thuậ n tiệ n, cac gia tri Byte đƣơc biêu diên sử dung cac ky hiêu cua hê Hexa ,

̉
dụ ng 4 bit cho mộ t ky
́
tƣ̣ va
̀
hai ky
́
tƣ̣ cho mộ t Byte nhƣ ba
̉
ng sau:
Bit Ky tư Bit Ky tư Bit Ky tư Bit Ky tư
0000 0 0100 4 1000 8 1100 c
0001 1 0101 5 1001 9 1101 d
0010 2 0110 6 1010 a 1110 e
0011 3 0111 7 1011 b 1111 f
Bang 3.25: Bang biêu diên cac xâu 4 bit
Khi đo
́
ca
́
c Byte (8 bit) sẽ đƣơc biêu diên băng hai ky tư , chẳ ng hạ n {01100011}
sẽ đƣơc biêu diên thanh {63}.
2.5.3.4. Trang thái (State)
Cac thao tac bên trong cua AES đƣơc thưc hiên trên môt mang 2 chiề u ca
́
c byte
đƣợ c gọ i la
̀
trạ ng tha
́
i . Mộ t trạ ng tha
́
i gồ m bố n ha
̀
ng ca
́
c byte , mỗ i ha
̀
ng co
́
Nb byte trong
đo
́
Nb la
̀
ki
́
ch thƣơ
́
c cu
̉
a khố i chia cho 32. Mang trang thai ky hiêu la s trong đó mỗi byte
cua mang có 2 chỉ sô hang r va côt c (0 s r, c < 4).
Tai thơi điêm băt đâu input cua thuât toan – mang cac byte in
0
, in
1
, …, in
15
đƣợ c
copy va
̀
o ma
̉
ng trạ ng tha
́
i theo qui tắ c đƣợ c minh họ a bằ ng hình vẽ:



Hình 3.8: Cac trang thai cua AES
trong đo
́
ca
́
c gia
́
tri ̣ cu
̉
a ma
̉
ng s va
̀
ma
̉
ng output đƣợ c ti
́
nh nhƣ sau:
s[r, c] = in[r + 4c] ¬ 0 s r, c < 4
input bytes
in
0
in
4
in
8
in
12

in
1
in
5
in
9
in
13

in
2
in
6
in
10
in
14

in
3
in
7
in
11
in
15

State array
S
0,0
S
0,1
S
0,2
S
0,3

S
1,0
S
1,1
S
1,2
S
1,3

S
2,0
S
2,1
S
2,2
S
2,3

S
3,0
S
3,1
S
3,2
S
3,3
output bytes
out
0
out
4
out
8
out
12

out
1
out
5
out
9
out
13

out
2
out
6
out
10
out
14

out
3
out
7
out
11
out
15

Chƣơng III: Các hê ma khoa bi mât
57
out[r + 4c] = s[r, c] ¬ 0 s r, c < 4
2.5.3.5. Biể u diễ n cu
̉
a trạ ng tha
́
i
Bố n cộ t cu
̉
a ma
̉
ng trạ ng tha
́
i cu
̉
a thuậ t toa
́
n tạ o tha
̀
nh 4 word 32-bit w
0
, w
1
, …, w
3

đƣợ c biể u diễ n nhƣ sau:
w
0
= s
0,0
s
1,0
s
2,0
s
3,0
w
1
= s
0,1
s
1,1
s
2,1
s
3,1

w
2
= s
0,2
s
1,2
s
2,2
s
3,2
w
3
= s
0,3
s
1,3
s
2,3
s
3,3

2.5.4. Thuậ t toa
́
n
Đô dai cua input , output va
̀
ca
́
c trạ ng tha
́
i (state) cua chuân ma hóa cao cấp AES la
128 bit tƣơng ƣ
́
ng vơ
́
i gia
́
tri ̣ cu
̉
a Nb = 4 (la sô lƣơng cac word 32-bit va
̀
cu
̃
ng la
̀
số cộ t
cua mỗi trang thai ). Khóa cua AES có đô dai la 128, 192 hoặ c 256 bit tƣơng ƣ
́
ng vơ
́
i ca
́
c
gia tri cua Nk la 4, 6, hoặ c 8 va cung la sô côt cua khóa ma hóa.
Tƣơng ƣ
́
ng vơ
́
i độ da
̀
i cu
̉
a kho
́
a sƣ
̉
dụ ng số vo
̀
ng lặ p cu
̉
a thuậ t toan Nr nhân cac gia
tri 10 (Nk = 4), 12 (Nk = 6) hoặ c 14 (Nk = 8). Chúng ta có thê minh hoa qua bang sau:
Đô dai khóa (Nk) Kich thƣơc khôi (Nb) Số lầ n lặ p (Nr)
AES-128 4 4 10
AES-192 6 4 12
AES-256 8 4 14

Bang 3.26: Bang đô dai khóa cua AES
Ca qua trình ma
̃
ho
́
a va
̀
gia
̉
i ma
̃
AES sƣ
̉
dụ ng mộ t ha
̀
m lặ p la
̀
kế t hợ p cu
̉
a bố n ha
̀
m
biế n đổ i (đơn vi ̣ xƣ
̉
ly
́
la
̀
byte) sau: 1) biế n đổ i thay thế byte sƣ
̉
dụ ng mộ t ba
̉
ng thế (S-box),
2) dich cac hang cua mang trang thai vơi sô lân dich c ua mỗi hang la khac nhau, 3) kế t
hợ p dƣ
̃
liệ u cu
̉
a mỗ i cộ t trong ma
̉
ng trạ ng tha
́
i va
̀
4) cộ ng mộ t kho
́
a Round Key va
̀
o trạ ng
thai. Cac biên đôi nay (va cac ham ngƣơc cua chúng ) đƣợ c mô ta
̉
trong ca
́
c phầ n 4.1.1-
4.1.4 va 4.3.1-4.3.4.
2.5.4.1. Thuậ t toa
́
n ma
̃
ho
́
a
Bắ t đầ u thuậ t toa
́
n ba
̉
n ro
̃
(input) đƣợ c copy va
̀
o ma
̉
ng trạ ng tha
́
i sƣ
̉
dụ ng ca
́
c qui
ƣơc đƣơc mô ta trong phân 3.4. Sau khi cộ ng vơ
́
i kho
́
a Round Key khơ
̉
i tạ o ma
̉
ng trạ ng
thai đƣơc biên đôi băng cac thưc hiên môt ham vòng (round function) Nr lầ n (10, 12, hoặ c
14 phu thuôc vao đô dai khóa ) trong đo
́
lầ n cuố i cu
̀
ng thƣ̣ c hiệ n kha
́
c ca
́
c lầ n trƣơ
́
c đo
́
.
Trang thai sau lân lặp cuôi cùng sẽ đƣơc chuyên thanh output cua thuâ t toa
́
n theo qui tắ c
đƣợ c mô ta
̉
trong phầ n 3.4.
Ham vòng đƣơc tham sô hóa sử dung môt (key schedule) day cac khóa đƣơc biêu
diễ n nhƣ la
̀
mộ t ma
̉
ng 1 chiề u cu
̉
a ca
́
c word 4-byte đƣợ c sinh ra tƣ
̀
thu
̉
tụ c sinh kho
́
a (Key
Expansion) đƣợ c mô ta
̉
trong phầ n 5.2.
Chúng ta có thê thấy tất ca cac vòng đều thưc hiên cac công viêc giông nhau dưa
trên 4 ham (theo thƣ
́
tƣ̣ ) SubBytes(), ShiftRows(), MixColumns() va AddRoundKey() trƣ
̀

vòng cuôi cùng bỏ qua viêc thưc hiên ham MixColumns().
Thuậ t toa
́
n đƣợ c mô ta
̉
chi tiế t qua đoạ n gia
̉
ma
̃
lệ nh sau:
Cipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])
Chƣơng III: Các hê ma khoa bi mât
58
begin
byte state[4,Nb]
state = in
AddRoundKey(state, w[0, Nb-1]) // See Sec. 5.1.4
for round = 1 step 1 to Nr–1
SubBytes(state) // See Sec. 5.1.1
ShiftRows(state) // See Sec. 5.1.2
MixColumns(state) // See Sec. 5.1.3
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])
end for
SubBytes(state)
ShiftRows(state)
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1])
out = state
end
Sơ đồ thuậ t toa
́
n:
Chƣơng III: Các hê ma khoa bi mât
59
Plaintext
Substitute bytes
Add round key
Shift rows
Mix Columns
Add round key
R
o
u
n
d

1

Substitute bytes
Shift rows
Mix Columns
Add round key
R
o
u
n
d

9
Substitute bytes
Shift rows
Add round key
R
o
u
n
d

1
0
Plaintext
(a) Mã hóa
Plaintext
Add round key
Inverse sub bytes
Inverse shift row
Ciphertext
(b) Giai ma
Key
w[0, 3]
Expand key
w[4, 7]
Inverse mix cols
Add round key
Inverse sub bytes
Inverse shift row
R
o
u
n
d

9
R
o
u
n
d

1
0
Inverse mix cols
Add round key
Inverse sub bytes
Inverse shift row
R
o
u
n
d

1
w[40, 43]
Add round key

w[36,39]

Hình 3.9: Thuậ t toa
́
n ma
̃
ho
́
a va
̀
gia
̉
i ma
̃
cu
̉
a AES
2.5.4.1.1 Ham SubBytes()
Ham SubBytes() thƣ̣ c hiệ n phe
́
p thay thế ca
́
c byte cu
̉
a ma
̉
ng trang thai băng cach

̉
dụ ng mộ t ba
̉
ng thế S -box, bang thê nay la kha nghich va đƣơc xây dưng băng cach
kế t hợ p hai biế n đố i sau:
1. Nhân nghi ̣ ch đa
̉
o trên trƣơ
̀
ng hƣ
̃
n hạ n GF (2
8
) (mô ta
̉
trong phầ n 4.2), phầ n tƣ
̉

{00} đƣợ c a
́
nh xạ thanh chinh nó
2. Ap dung biên đôi Affine sau (trên GF(2)):
Chƣơng III: Các hê ma khoa bi mât
60
'
( 4)mod8 ( 5)mod8 ( 6)mod8 ( 7)mod8 i i i i i i i
b b b b b b c
+ + + +
= © © © © © trong đo
́
0 s i <8 la bit thư i
cua byte b tƣơng ưng va c
i
la bit thư i cua byte c vơi gia tri {63} hay {01100011}.
Cac phân tử biên đôi affine cua S-box co
́
thể đƣợ c biể u diế n dƣơ
́
i dạ ng ma trậ n
nhƣ sau:
'
0 0
'
1 1
'
2 2
'
3 3
'
4 4
'
5 5
'
6 6
'
7 7
1 0 0 0 1 1 1 1 1
1 1 0 0 0 1 1 1 1
1 1 1 0 0 0 1 1 0
1 1 1 1 0 0 0 1 0
1 1 1 1 1 0 0 0 0
0 1 1 1 1 1 0 0 1
0 0 1 1 1 1 1 0 1
0 0 0 1 1 1 1 1 0
b b
b b
b b
b b
b b
b b
b b
b b
( (
(
( (
(
( (
(
( (
(
( (
(
( (
(
= +
( (
(
( (
(
( (
(
( (
(
( (
(
( ( (
¸ ¸ ¸
¸ ¸ ¸ ¸
(
(
(
(
(
(
(
(
(
(
(
(
¸

Hình sau minh hoa kêt qua cua viêc ap dung ham biên đôi SubBytes () đố i vơ
́
i ma
̉
ng
trang thai:
0,0
S

0,1
S

0,2
S

0,3
S

1,0
S

1,2
S
1,3
S
2,0
S
2,1
S
2,2
S
2,3
S
3,0
S
3,1
S
3,2
S
3,3
S

Bang thê S -box đƣợ c sƣ
̉
dụ ng trong ha
̀
m SubBytes () có thê đƣơc biêu diên dƣơi
dang hexa nhƣ sau:
'
0,0
S

'
0,1
S

'
0,2
S

'
0,3
S

'
1,0
S

'
1,2
S
'
1,3
S
'
2,0
S
'
2,1
S
'
2,2
S
'
2,3
S
'
3,0
S
'
3,1
S
'
3,2
S
'
3,3
S
, r c
S

'
, r c
S

S-Box
Chƣơng III: Các hê ma khoa bi mât
61

Bang 3.27: Bang thê S-Box cu
̉
a AES
trong đo
́
chẳ ng hạ n nế u s
1,1
= {53} có nghĩa la gia tri thay thê sẽ đƣơc xac đinh
bằ ng giao cu
̉
a ha
̀
ng co
́
chi
̉
số 5 vơ
́
i cộ t co
́
chi
̉
số 3 trong ba
̉
ng trên điề u na
̀
y tƣơng ƣ
́
ng

́
i việ c s‟
1,1
= {ed}.
2.5.4.1.2. Ham ShiftRows()
Trong ham nay cac byte trong 3 hang cuôi cua mang trang thai sẽ đƣơc dich vòng

́
i số lầ n di ̣ ch (hay số byte bi ̣ di ̣ ch) khac nhau. Hang đâu tiên r = 0 không bi ̣ di ̣ ch.
Cu thê ham nay sẽ tiên hanh biên đôi sau:

'
, ,( ( , ))mod
( 4)
r c r c shift r Nb Nb
s s Nb
+
= =
trong đo
́
gia
́
tri ̣ di ̣ ch shift (r, Nb) phu
thuộ c va
̀
o số ha
̀
ng r nhƣ sau:
shift(1, 4) = 1, shift(2, 4) = 2, shift(3, 4) = 3.
Thao ta
́
c na
̀
y se
̃
chuyể n ca
́
c byte tơ
́
i ca
́
c vi ̣ tri
́
thấ p hơn trong ca
́
c ha
̀
ng , trong khi
cac byte thấp nhấ t se
̃
đƣợ c chuyể n lên đầ u cu
̉
a ha
̀
ng . Tấ t ca
́
c ca
́
c mô ta
̉
trên co
́
thể minh
hoa qua hình vẽ sau:









S


1,1
S



S


0,0
S

0,1
S

0,2
S

0,3
S

1,1
S
1,2
S
1,3
S
1,0
S
2,2
S
2,3
S
2,0
S
2,31
S
3,3
S
3,0
S
3,1
S
3,2
S



0,0
S
0,1
S
0,2
S
0,3
S
1,0
S
1,2
S
1,3
S
2,0
S
2,1
S
2,2
S
2,3
S
3,0
S
3,1
S
3,2
S
3,3
S
0,0
S
0,1
S
0,2
S
0,3
S
0,0
S
0,1
S
0,2
S
0,3
S
ShiftRows()
Chƣơng III: Các hê ma khoa bi mât
62
Hình 3.10: Ham ShifftRows()
2.5.4.1.3. Ham MixColumns()
Ham nay lam viêc trên cac côt cua bang trang thai , nó coi mỗi côt cua mang trang
thai nhƣ la môt đa thưc gôm 4 hang tử nhƣ đƣơc mô ta trong phân 4.3. Cac côt sẽ đƣơc
xem nhƣ la
̀
ca
́
c đa thƣ
́
c trên GF(2
8
) va đƣơc nhân theo modulo x
4
+ 1 vơ
́
i mộ t đa thƣ
́
c cố
đi ̣ nh a(x):
a(x) = {03}x
3
+ {01}x
2
+ {01}x + {02}
Nhƣ đa
̃
mô ta
̉
trong phầ n 4.3 điề u na
̀
y co
́
thể biể u diễ n bằ ng mộ t phe
́
p nhân ma
trậ n:
s‟(x) = a(x)©s(x):
'
0, 0,
'
1, 1,
'
2, 2,
'
3, 3,
02 03 01 01
01 02 03 01
01 01 02 03
03 01 01 02
c c
c c
c c
c c
S S
S S
S S
S S
( (
(
( (
(
( (
(
=
( (
(
( (
(
( ( ¸ ¸
¸ ¸ ¸ ¸


́
i mọ i 0 s c < Nb = 4.
Kế t qua la bôn byte trong mỗi côt sẽ đƣơc thay thê theo công thưc sau:
'
0, 0, 1, 2, 3,
({02} ) ({03} )
c c c c c
s s s s s = - © - © ©

'
1, 0, 1, 2, 3,
({02} ) ({03} )
c c c c c
s s s s s = © - © - ©

'
2, 0, 1, 2, 3,
({02} ) ({03} )
c c c c c
s s s s s = © © - © -

'
3, 0, 1, 2, 3,
({03} ) ({02} )
c c c c c
s s s s s = - © © © -

Có thê minh hoa viêc thưc hiên cua ham nay băng hình vẽ sau:

Chƣơng III: Các hê ma khoa bi mât
63
Hình 3.11: Ham MixColumns cua AES
2.5.4.1.4. Ham AddRoundKey()
Trong ha
̀
m na
̀
y mộ t kho
́
a vo
̀
ng (Round Key ) sẽ đƣơc công vao mang trang thai
bằ ng mộ t thao ta
́
c XOR bit . Mỗ i kho
́
a vo
̀
ng gồ m Nb word đƣợ c sinh ra bơ
̉
i thu
̉
tụ c sinh
khóa (phầ n 5.2). Cac word nay sẽ đƣơc công vao mỗi côt cua mang trang thai nhƣ sau:
| |
' ' ' '
0, 1, 2, 3, 0, 1, 2, 3, *
, , , , , , 0 4
c c c c c c c c round Nb c
s s s s s s s s w c Nb
+
( ( = © ¬ s s =
¸ ¸ ¸ ¸

trong đo
́
[w
i
] la cac word cua khóa đƣơc mô ta trong phân 5.2 va round la lân lặp
tƣơng ƣ
́
ng vơ
́
i qui ƣơ
́
c 0 s round s Nr. Trong thuậ t toa
́
n ma
̃
ho
́
a phe
́
p cộ ng kho
́
a vo
̀
ng
khơ
̉
i tạ o xa
̉
y ra vơ
́
i round = 0 trƣơ
́
c khi ca
́
c vo
̀
ng lặ p cu
̉
a thuậ t toa
́
n đƣợ c thƣ̣ c hiệ n. Ham
AddRoundKey() đƣợ c thƣ̣ c hiệ n trong thuậ t toa
́
n ma
̃
ho
́
a khi 1 s round s Nr.
Việ c thƣ̣ c hiệ n cu
̉
a ha
̀
m na
̀
y co
́
thể minh họ a qua hi
̀
nh ve
̃
tring đo
́
l = round * Nb.
Đi ̣ a chi
̉
byte trong ca
́
c word cu
̉
a da
̃
y kho
́
a đƣợ c mô ta
̉
trong phầ n 3.1.

Hình 3.12: Ham AddRoundKey cua AES
2.5.4.2. Thuậ t toa
́
n sinh kho
́
a (Key Expansion)
Thuậ t toa
́
n sinh kho
́
a cu
̉
a AES nhậ n mộ t kho
́
a ma
̃
ho
́
a K sau đo
́
thƣ̣ c hiệ n mộ t thu
̉

tuc sinh khóa đê sinh môt day cac khóa cho viêc ma hóa . Thu tuc nay sẽ sinh tông sô
Nb*(Nr+1) word, thu tuc sử dung môt tâp khởi tao Nb word va mỗi môt lân lặp trong sô Nr
lầ n se
̃
cầ n tơ
́
i Nb word cu
̉
a dƣ
̃
liệ u kho
́
a . Day khóa kêt qua la môt mang tuyế n ti
́
nh ca
́
c
word 4-byte đƣợ c ky
́
hiệ u la
̀
[w
i
] trong đo
́
0 s i < Nb(Nr+1).
Sƣ̣ mơ
̉
rộ ng kho
́
a tha
̀
nh da
̃
y kho
́
a đƣợ c mô ta
̉
qua đoạ n gia
̉
ma
̃
sau:
KeyExpansion(byte key[4*Nk], word w[Nb*(Nr+1)], Nk)
begin
word temp
i = 0
while (i < Nk)
Chƣơng III: Các hê ma khoa bi mât
64
w[i] = word(key[4*i], key[4*i+1], key[4*i+2], key[4*i+3])
i = i+1
end while
i = Nk
while (i < Nb * (Nr+1)]
temp = w[i-1]
if (i mod Nk = 0)
temp = SubWord(RotWord(temp)) xor Rcon[i/Nk]
else if (Nk > 6 and i mod Nk = 4)
temp = SubWord(temp)
end if
w[i] = w[i-Nk] xor temp
i = i + 1
end while
end
SubWord() la môt ham nhân môt input 4-byte va
̀
a
́
p dụ ng ba
̉
ng thế S -box lên input
đê nhân đƣơc môt word output . Ham RotWord() nhậ n mộ t word input [a
0
, a
1
, a
2
, a
3
] thƣ̣ c
hiệ n mộ t hoan vi vòng va tra về [a
1
, a
2
, a
3
, a
0
]. Cac phân tử cua mang hăng sô Rcon [i]
chƣ
́
a ca
́
c gia
́
tri ̣ nhậ n đƣợ c bơ
̉
i [x
i-1
, {00}, {00}, {00}] trong đo
́
x
i-1
la mu hóa cua x (x đƣợ c
biể u diễ n dƣơ
́
i dạ ng {02} trên GF(2
8
) va i băt đâu tư 1).
Theo đoạ n gia
̉
ma
̃
trên chu
́
ng ta co
́
thế nhậ n thấ y rằ ng Nk word cu
̉
a kho
́
a kế t qua
̉
se
̃

đƣợ c điề n bơ
̉
i kho
́
a ma
̃
ho
́
a . Cac word sau đó w[i] sẽ băng XOR vơi word đưng trƣơc nó
w[i-1] vơ
́
i w[i-Nk]. Vơ
́
i ca
́
c word ơ
̉
vi ̣ tri
́
chia hế t cho Nk mộ t biế n đổ i se
̃
đƣợ c thƣ̣ c hiệ n vơ
́
i
w[i-1] trƣơ
́
c khi thƣ̣ c hiệ n phe
́
p XOR bit , sau đo
́
la
̀
phe
́
p XOR vơ
́
i mộ t hằ ng số Rcon [i].
Biế n đổ i na
̀
y gồ m mộ t phe
́
p di ̣ ch vo
̀
ng ca
́
c byte cu
̉
a mộ t word (RotWord()), sau đo
́
la
̀
a
́
p
dung môt bang tra lên tất ca 4 byte cu
̉
a word (SubWord()).
Chú y la thu tuc mở rông khóa đôi vơi cac khóa có đô dai 256 hơi khac so vơi thu
tuc cho cac khóa có đô dai 128 hoặ c 192. Nế u Nk = 8 va i – 4 la môt bôi sô cua Nk thì
SubWord() sẽ đƣơc ap dung cho w[i-1] trƣơ
́
c khi thƣ̣ c hiệ n phe
́
p XOR bit.
2.5.4.3. Thuậ t toa
́
n gia
̉
i ma
̃

Thuậ t toa
́
n gia
̉
i ma
̃
kha
́
giố ng vơ
́
i thuậ t toa
́
n ma
̃
ho
́
a về mặ t cấ u tru
́
c nhƣng 4 ham
cơ ba
̉
n sƣ
̉
dụ ng la
̀
ca
́
c ha
̀
m ngƣợ c cu
̉
a ca
́
c ha
̀
m trong thuậ t toa
́
n gia
̉
i ma
̃
. Đoạ n gia
̉
ma
̃

cho thuậ t toa
́
n gia
̉
i ma
̃
nhƣ sau:
InvCipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])
begin
byte state[4,Nb]
state = in
Chƣơng III: Các hê ma khoa bi mât
65
AddRoundKey(state, w[Nr*Nb, (Nr+1)*Nb-1]) // See Sec. 5.1.4
for round = Nr-1 step -1 downto 1
InvShiftRows(state) // See Sec. 5.3.1
InvSubBytes(state) // See Sec. 5.3.2
AddRoundKey(state, w[round*Nb, (round+1)*Nb-1])
InvMixColumns(state) // See Sec. 5.3.3
end for
InvShiftRows(state)
InvSubBytes(state)
AddRoundKey(state, w[0, Nb-1])
out = state
end
2.5.4.3.1. Ham InvShiftRows()
Ham nay la ham ngƣơc cua ham ShiftRows () . Cac byte cua ba hang cuôi cua
mang trang thai sẽ đƣơc dich vòng vơi cac vi tri dich khac nhau . Hang đâu tiên không bi
dich, ba ha
̀
ng cuố i bi ̣ di ̣ ch đi Nb – shift(r, Nb) byte trong đo
́
ca
́
c gia
́
tri ̣ shift (r, Nb) phu
thuộ c va
̀
o số ha
̀
ng nhƣ trong phầ n 5.1.2.
Cu thê ham nay tiên hanh xử ly sau:

'
,( ( , ))mod ,
0 4, 0 ( 4)
r c shift r Nb Nb r c
s s r c Nb Nb
+
= ¬ < < s < =

Hình minh hoa:

Chƣơng III: Các hê ma khoa bi mât
66
Hình 3.13: Ham InvShiftRows() cua AES
2.5.4.3.2. Ham InvSubBytes()
Ham nay la ham ngƣơc cua ham SubBytes(), ham sử dung nghich đao cua biên đôi
Affine bằ ng ca
́
ch thƣ̣ c hiệ n nhân nghi ̣ ch đa
̉
o trên GF(2
8
).
Bang thê đƣợ c sƣ
̉
dụ ng trong ha
̀
m la
̀
:

Bang 3.28: Bang thê cho ham InvSubBytes()
2.5.4.3.3. Ham InvMixColumns()
Ham nay la ham ngƣơc cua ham MixColumns (). Ham lam viêc trên cac côt cua
mang trang thai , coi mỗ i cộ t nhƣ la
̀
môtô đa thƣ
́
c 4 hang tử đƣơc mô ta trong phân 4.3.
Cac côt đƣơc xem la cac đa thưc trên GF(2
8
) va đƣơc nhân theo modulo x
4
+1 vơ
́
i mộ t đa
thƣ
́
c cố đi ̣ nh la
̀
a
-1
(x):
a
-1
(x) = {0b}x
3
+ {0d}x
2
+ {09}x + {0e}
Va có thê mô ta băng phe
́
p nhân ma trậ n nhƣ sau:
s‟(x) = a
-1
(x)©s(x):
'
0, 0,
'
1, 1,
'
2, 2,
'
3, 3,
0 0 0 09
09 0 0 0
0 09 0 0
0 0 09 0
c c
c c
c c
c c
e b d S S
e b d S S
d e b S S
b d e S S
( (
(
( (
(
( (
(
=
( (
(
( (
(
( ( ¸ ¸
¸ ¸ ¸ ¸

trong đo
́
0 s c < Nb.
Kế t qua
̉
la
̀
bố n byte trong mỗ i cộ t se
̃
đƣợ c thay thế theo công thƣ
́
c sau:
'
0, 0, 1, 2, 3,
({0 } ) ({0 } ) ({0 } ) ({09} )
c c c c c
s e s b s d s s = - © - © - © -

'
1, 0, 1, 2, 3,
({09} ) ({0 } ) ({0 } ) ({0 } )
c c c c c
s s e s b s d s = - © - © - © -

Chƣơng III: Các hê ma khoa bi mât
67
'
2, 0, 1, 2, 3,
({0 } ) ({09} ) ({0 } ) ({0 } )
c c c c c
s d s s e s b s = - © - © - © -

'
3, 0, 1, 2, 3,
({0 } ) ({0 } ) ({09} ) ({0 } )
c c c c c
s b s d s s e s = - © - © - © -


2.5.4.3.4. Ham nghich đảo cua ham AddRoundKey()
Thậ t thu
́
vi ̣ la
̀
ha
̀
m na
̀
y tƣ̣ ba
̉
n thân no
́
la
̀
nghi ̣ ch đa
̉
o cu
̉
a chi
́
nh no
́
la
̀
do ha
̀
m chi
̉
co
́

phep toan XOR bit.
2.5.4.3.5. Thuậ t toa
́
n giải ma tƣơng đƣơng
Trong thuậ t toa
́
n gia
̉
i ma
̃
đƣợ c tri
̀
nh ba
̀
y ơ
̉
trên chu
́
ng ta thấ y thƣ
́
tƣ̣ cu
̉
a ca
́
c ha
̀
m
biế n đổ i đƣợ c a
́
p dụ ng kha
́
c so vơ
́
i thuậ t toa
́
n ma
̃
ho
́
a trong khi dạ ng cu
̉
a danh sa
́
ch kho
́
a
cho ca
̉
2 thuậ t toa
́
n vẫ n giƣ
̃
nguyên. Tuy vậ y mộ t số đặ c điể m cu
̉
a AES cho phe
́
p chu
́
ng ta
có môt thuât toan giai ma tƣơng đƣơng có thư tư ap dung cac ham biên đôi giông vơi
thuậ t toa
́
n ma
̃
ho
́
a (tấ t nhiên la
̀
thay ca
́
c biế n đổ i bằ ng ca
́
c ha
̀
m ngƣợ c cu
̉
a chu
́
ng ). Điề u
nay đat đƣơc băng cach thay đôi danh sach khóa.
Hai thuộ c ti
́
nh sau cho phe
́
p chu
́
ng ta co
́
mộ t thuậ t toa
́
n gia
̉
i ma
̃
tƣơng đƣơng:
1. Cac ham SubBytes () va ShiftRows() hoan đôi cho nhau ; có nghĩa la môt biên
đổ i SubBytes () theo sau bơ
̉
i mộ t biế n đổ i ShiftRows () tƣơng đƣơng vơ
́
i mộ t biế n đổ i
ShiftRows() theo sau bơ
̉
i mộ t biế n đổ i SubBytes (). Điề u na
̀
y cu
̃
ng đu
́
ng vơ
́
i ca
́
c ha
̀
m
ngƣợ c cu
̉
a chu
́
ng
2. Cac ham trôn côt – MixColumns() va InvMixColumns() la cac ham tuyên tinh
đố i vơ
́
i ca
́
c cộ t input, có nghĩa la:
InvMixColumns(state XOR Round Key) = InvMixColumns(state) XOR
InvMixColumns(Round Key).
Cac đặc điêm nay cho phep thư tư cua cac ham InvSubBytes() va InvShiftRows() có
thể đổ i chỗ . Thƣ
́
tƣ̣ cu
̉
a ca
́
c ha
̀
m AddRoundKey() va InvMixColumns() cung có thê đôi chỗ
miễ n la
̀
ca
́
c cộ t cu
̉
a danh sa
́
ch kho
́
a gia
̉
i ma
̃
pha
̉
i đƣợ c thay đổ i bằ ng ca
́
ch sƣ
̉
dụ ng ha
̀
m
InvMixColumns().
Thuậ t toa
́
n gia
̉
i ma
̃
tƣơng đƣơng đƣợ c thƣ̣ c hiệ n bằ ng ca
́
ch đ ao ngƣơc thư tư cua
ham InvSubBytes () va InvShiftRows (), va thay đôi thư tư cua AddRoundKey () va
InvMixColumns() trong ca
́
c lầ n lặ p sau khi thay đổ i kho
́
a cho gia
́
tri ̣ round = 1 to Nr-1 bằ ng
cach sử dung biên đôi InvMixColumns (). Cac word đầ u tiên va
̀
cuố i cu
̀
ng cu
̉
a danh sa
́
ch
khóa không bi thay đôi khi ta ap dung phƣơng phap nay.
Thuậ t toa
́
n gia
̉
i ma
̃
tƣơng đƣơng cho mộ t cấ u tru
́
c hiệ u qua
̉
hơn so vơ
́
i thuậ t toa
́
n
giai ma trƣơc đó.
Đoạ n gia
̉
ma
̃
cho thuậ t toa
́
n giai ma tƣơng đƣơng:
EqInvCipher(byte in[4*Nb], byte out[4*Nb], word dw[Nb*(Nr+1)])
begin
byte state[4,Nb]
Chƣơng III: Các hê ma khoa bi mât
68
state = in
AddRoundKey(state, dw[Nr*Nb, (Nr+1)*Nb-1])
for round = Nr-1 step -1 downto 1
InvSubBytes(state)
InvShiftRows(state)
InvMixColumns(state)
AddRoundKey(state, dw[round*Nb, (round+1)*Nb-1])
end for
InvSubBytes(state)
InvShiftRows(state)
AddRoundKey(state, dw[0, Nb-1])
out = state
end
Cac thay đôi sau cân thưc hiên trong thuât toan sinh khóa đê thuât toan trên có th ê
hoat đông đƣơc:
for i = 0 step 1 to (Nr+1)*Nb-1
dw[i] = w[i]
end for
for round = 1 step 1 to Nr-1
InvMixColumns(dw[round*Nb, (round+1)*Nb-1]) // note change of type
end for
2.6. Các cơ chê, hinh thưc sử dụng cua ma hoa khôi (Mode of Operation)
2.6.1. Các hinh thưc sử dụng
Nhƣ chu
́
ng ta đa
̃
biế t c ac ma hóa khôi ma hóa cac khôi thông tin có đô dai cô đinh,
chăng han DES vơi cac khôi bit 64, sử dung khóa la xâu bit có đô dai băng 56. Tuy nhiên
đê sử dung cac hê ma nay trên thưc tê vân cân có môt qui đi ̣ nh về qui ca
́
ch sƣ
̉
dụ ng
chúng đê ma hóa cac dữ liêu cân ma hóa. Cach thưc sử dung môt thuât toan ma hóa khôi
trong thưc tê đƣơc goi la Mode of Use hay Mode Of Operation. Có 4 hình thưc sử dung
cac hê ma khôi đƣơc đinh nghĩa trong cac chuân ANSI (vi du ANSI X3.106-1983 danh
cho DES). Dƣ̣ a va
̀
o việ c xƣ
̉
ly
́

̃
liệ u input cu
̉
a hệ ma
̃
ngƣơ
̀
i ta chia tha
̀
nh hai loạ i cơ chế
sử dung cac hê ma khôi sau:
1. Các chê đô khôi (Block Mode): xử ly cac thông điêp theo cac khôi (ECB, CBC)
2. Các chê đô luông, dòng (Stream Modes): xử ly cac thông điêp nhƣ la môt
luông bit/byte (CFB, OFB).
Cac chê đô khôi thƣơng đƣơc sử dung đê ma hóa cac dữ liêu ma ch úng ta biêt
trƣơ
́
c về vi ̣ tri
́
, độ lơ
́
n trƣơ
́
c khi ma
̃
ho
́
a (chẳ ng hạ n nhƣ ca
́
c file , cac email trƣơc khi cân
Chƣơng III: Các hê ma khoa bi mât
69

̉
i đi ) trong khi ca
́
c chế độ luồ ng thƣơ
̀
ng đƣợ c sƣ
̉
dụ ng cho việ c ma
̃
ho
́
a ca
́
c dƣ
̃
liệ u
không đƣợ c biế t trƣơ
́
c về độ lơ
́
n c ung nhƣ vi tri chăng han nhƣ cac tin hiêu gửi về tư vê
tinh hoặ c ca
́
c ti
́
n hiệ u do mộ t bộ ca
̉
m biế n đọ c tƣ
̀
bên ngoa
̀
i va
̀
o.
Chú ý: DES, 3DES, AES (hay bất kỳ một thuật toán ma hoa khối nào khác) tạo
thành một khối xây dựng cơ bản. Tuy nhiên để sử dụng chung trong thực tế, chung ta
thường cần làm việc với các khối lương dữ liệu không thể biết trước đươc, co thể chung là
một khối dữ liệu sẵn sàng ngay cho việc ma hoa(khi đo việc sử dụng ma hoa theo cơ chế
khối là phù hơp), hoặc co thể chỉ đươc một vài bit, byte tại một thời điểm (khi đo sử dụng
chế độ dòng là phù hơp). Vì thế các cơ chế sử dụng ma khối đươc trình bày trong phần
này là riêng cho DES nhưng cu
̃
ng đượ c a
́
p dụ ng tương tự cho ca
́
c hệ ma
̃
khố i kha
́
c.
2.6.2. Cơ chế ba
̉
ng tra ma
̃
điệ n tƣ
̉
ECB (Electronic CodeBook Book)
Thông điêp cầ n ma
̃
ho
́
a đƣơc chia thanh cac khôi đôc lâp để mã hóa, mỗ i khố i ba
̉
n
ma la kêt qua cua viêc ma hóa riêng biêt khôi ban rõ tƣơng ưng vơi nó va đôc lâp vơi khôi
khac. Cach lam viêc nay giông nhƣ chúng ta thay thê cac khôi ban ma băng cac khôi ban
rõ tƣơng ưng nên có tên goi la bang tra ma điên tử.
P = P
1
P
2
…P
N
Ma hóa: C
i
= DES
K
(P
i
), kế t qua
̉
ba
̉
n ma
̃
la
̀
C = C
1
C
2
..C
N
. Qua trình giai ma tiên hanh
ngƣợ c lạ i: P
i
= DES
-1
K
(C
i
).
Ma hóa
P
P1 P2 Pn
C1 C2 Cn
E E E
C
K Giai ma
C
C1 C2 Cn
P1 P2 Pn
D D D
P
K

Hình 3.14: Cơ chế ECB
ECB la chê đô sử dung đơn gian va dê cai đặt nhất, đƣơc sử dung khi chỉ môt khôi
đơn thông tin cân đƣơc gửi đi (chăng han nhƣ môt khóa session đƣơc ma hóa băng cach
dùng môt khóa chinh).
Do trong ECB cac khôi ban rõ đƣơc ma hóa đôc lâp nên lam nay sinh môt sô nhƣơc
điể m sau: cac lặp lai cua thông điêp có thê đƣơc thê hiên trên ban ma, nghĩa la nêu có
cac ban rõ giông nhau thì tƣơng ưng cac ban ma giông nhau , điề u na
̀
y đặ c biệ t thể hiệ n
rõ vơi cac dữ liêu lặp lai nhiều chăng han nhƣ cac dữ liêu hình anh. Việ c để lộ ti
́
nh lặ p lạ i
cua ban rõ có thê dân tơi cac tấn công theo phƣơng phap phân tich thông kê . Hơn nƣ
̃
a
cac ban ma có thê bi gia mao băng cach thêm môt sô khôi ban ma gia vao kêt qua ma
hóa, bên nhậ n se
̃
không pha
́
t hiệ n ra sƣ̣ gia
̉
mạ o na
̀
y . Bên cạ nh đo
́
viêc ma hóa cac khôi
thông điêp la đôc lâp lam suy yêu DES. Trên thƣ̣ c tế ECB chỉ thưc sư có ich khi gửi môt
khôi dữ liêu nhỏ.
Chƣơng III: Các hê ma khoa bi mât
70
2.6.3. Cơ chế ma
̃
mo
́
c xi
́
ch CBC - Cipher Block Chaining
Đê vƣơt qua cac vấn đề về sư lặp lai va yêu câu đôc lâp trong ECB , chúng ta cân
môt vai cach đê lam cho ban ma phu thuôc vao tất ca cac khôi trƣơc nó . Đo
́
nay chinh la
điều ma CBC cung cấp cho chúng ta băng cach kêt hơp khôi ban rõ trƣơc vơi khôi thông
điêp hiên tai trƣơc khi ma hóa.
Cung giông nhƣ cơ chê EBC trong cơ chế CBC ba
̉
n ro
̃
se
̃
đƣơc chia thanh cac khôi
nhƣng sẽ đƣơc liên kêt vơi nhau trong qua
́
tri
̀
nh mã hóa đê tao thanh ban rõ . Chinh vì
cac khôi ban ma đƣơc móc xich vơi ban rõ va vì thê chê đô nay có tên la CBC
CBC sử dung môt vector khởi tao IV (Initial Vector) đê băt đâu:
C
0
= IV, P = P
1
P
2
..P
N
Ma hóa: C
i
= DES
K
(P
i
© C
i-1
), C = C
1
C
2
..C
N

Giai ma: P
i
= DES
-1
K
(C
i
) © C
i-1
, P = P
1
P
2
..P
N
.

Hình 3.15: Chế độ CBC
Chê đô CBC phù hơp vơi cac yêu câu cân gửi cac lƣơng lơn dữ liêu môt cach an
toan (chăng han nhƣ FTP, EMAIL, WEB)
Trong CBC mỗi khôi ban ma la phu thuôc vao tất ca cac khôi thông điêp đưng trƣơc
đó nên việ c sai lệ ch mộ t khố i ba
̉
n ro
̃
hoặ c ba
̉
n ma
̃
na
̀
o đo
́
cu
̃
ng la
̀
m sai lệ ch kế t qua
̉
ma
̃

hóa va giai ma tƣơng ưng . Khó khăn nhất trong viêc sử dung CBC chinh la quan ly cac
gia tri IV sử dung , thƣơ
̀
ng thi
̀
ca hai bên nhân va gửi đều biêt (chẳ ng hạ n nhƣ bằ ng 0)
hoặ c se
̃
đƣợ c khơ
̉
i tạ o bằ ng ca
́
c gia
́
tri ̣ mơ
́
i va
̀

̉
i cho bên nhậ n trƣơ
́
c khi ma
̃
ho
́
a . Tuy
nhiên nêu IV bi tiêt lô ke tấn công có thê lam thay đôi cac bit ở khôi đâu tiên, vì thê có thê
IV la môt gia tri cô đinh hoặc đƣơc gửi đi sau khi đa
̃
ma hóa băng ECB.
2.6.4. Chê đô ma phản hôi CFB (Cipher Feedback) va chê đô ma phản hôi đâu ra
OFB (Output Feedback)
Cac chê đô luông CFB va OFB đƣơc sử dung đê ma hóa cac dƣ
̃
liệ u đƣợ c cung
cấ p rơ
̀
i rạ c, thƣơ
̀
ng la
̀
ca
́
c ti
́
n hiệ u nhậ n đƣợ c tƣ
̀
vệ tinh hoặ c do mộ t bộ ca
̉
m biế n na
̀
o đo
́

truyề n về . Chinh vì dữ liêu đƣơc cung cấp rơi rac nên tai môt thơi điêm chúng ta không
thể biế t trƣơ
́
c độ lơ
́
n va vi tri dữ liêu sẽ đƣơc ma hóa . Do đo
́
đố i vơ
́
i ca
́
c chế độ luồ ng
x
1
e
k
y
1
IV=y
0
x
2
e
k
y
2
y
1
x
1
IV=y
0
d
k
y
2
x
2
d
k
Mã hoá Giải mã
Chƣơng III: Các hê ma khoa bi mât
71
input cho thuậ t toa
́
n ma
̃
ho
́
a đƣợ c xem la
̀
mộ t luồ ng ca
́
c bit cu
̉
a ba
̉
n ro
̃
đƣợ c lầ n lƣợ t theo
thơ
̀
i gian.
Trong chê đô OFB va CFB dòng khoa đƣơc tao ra sẽ đƣơc công modulo 2 vơi ban
rõ. OFB thưc sư la môt hê ma đông bô: dòng khoa đƣơc thanh lâp bởi viêc tao lâp cac
vector khởi tao 64 bit (vector IV). Ta xac đinh z
0
= IV và tính dòng khoá z
1
z
2
... z
n
theo quy
tăc z
i
= e
k
(z
i-1
) vơi i ≥ 1. Sau đó day ban rõ x
1
x
2
... x
n
sẽ đƣơc ma hoa băng cach tinh y
i
=
x
i
©z
i
vơi i ≥ 1.
Trong chê đô CFB, ta băt đâu vơi y
0
= IV (vector khởi tao 64 bit) va tao phân tử z
i

cua dòng khoa băng cach ma hoa khôi ban ma trƣơc đó. Tưc la z
i
= e
k
(y
i-1
) vơi i≥1 va y
i
=
x
i
©z
i
vơi i≥1. Viêc sử dung CFB đƣơc mô ta băng sơ đô sau (e
k
trong trƣơng hơp nay
đƣơc sử dung cho ca ma hoa va giai ma):

Hình 3.16: Chê đô CFB
Cung có môt vai dang khac cua OFB va CFB đƣơc goi la chê đô phan hôi k-bit (1<
k < 64). Ơ đây ta đa mô ta chê đô phan hôi 64 bit. Cac chê đô phan hôi 1-bit và 8-bit
thƣơng đƣơc sử dung cho phep ma hoa đông thơi 1 bit (hay byte) dữ liêu. Ky thuât cơ
ban đƣơc sử dung ở đây la môt thanh ghi dich 64 bit va mỗi bƣơc dich đƣơc k-bit làm
đâu vao cho ma hoa. K-bit bên trai cua đâu vao ham ma hoa đƣơc XOR vơi đơn vi đâu
cua block ban rõ tiêp theo đê đƣa ra môt đơn vi ban ma truyền đi va đơn vi nay đƣơc
đƣa lai vao k-bit bên phai cua thanh ghi dich. Qua trình xử ly tiêp tuc cho tơi khi tất ca
đơn vi ban rõ đều đƣơc ma hoa. Điêm khac nhau giữa CFB va OFB la k-bit hôi tiêp cho
bô ghi dich đƣơc lấy tư trƣơc hay sau bô XOR (nêu lấy sau bô XOR thì dữ liêu đa ma hoa
ưng vơi CFB, còn lấy phia trƣơc thì la OFB).
Nhìn chung , bôn chê đô cua DES đều có những ƣu nhƣơc điêm riêng. Ơ chê đô
ECB va OFB, sư thay đôi cua môt khôi ban rõ x
i
64 bit sẽ lam thay đôi khôi ban ma y
i

tƣơng ưng, nhƣng cac khôi ban khac thì không bi anh hƣởng. Trong môt sô tình huông,
x
1
y
1
e
k e
k
IV=y
0
x
2
y
2
y
1
x
1
e
k e
k
IV=y
0
y
2
x
2
Giải mã
Mã hoá
Chƣơng III: Các hê ma khoa bi mât
72
đây la môt tinh chất đang mong muôn. Vi du nhƣ chê đô OFB thƣơng đƣơc dùng đê ma
hoa trong viêc truyền tin hiêu qua vê tinh.
Mặt khac, ở chê đô CBC va CFB, nêu môt khôi ban rõ x
i
bi thay đôi thì y
i
va cac khôi
tiêp theo sẽ bi anh hƣởng. Nhƣ vây ở chê đô CBC va CFB có thê đƣơc sử dung rất hiêu
qua trong muc đich xac thưc. Cung vì ly do đó nên CFB thƣơ
̀
ng đƣợ c du
̀
ng để ma
̃
ho
́
a
trong ca
́
c trƣơ
̀
ng hợ p ma
̀
đƣơ
̀
ng truyề n tố t, tin hiêu it nhiêu. Đặc biêt hơn, cac chê đô nay
dùng đê tao ma xac thưc ban tin (MAC – Message Authentication Code). MAC đƣơc găn
thêm vao cac khôi ban rõ đê thuyêt phuc R (receiver) răng đây chinh la day ban rõ đƣơc
gửi tư S (sender) ma không phai môt ai khac gia mao. Nhƣ vây MAC đam bao tinh xac
thưc cua ban tin.
Ta sẽ mô ta cach sử dung chê đô CBC đê tao MAC. Ta băt đâu băng vector khởi
tao IV chưa toan sô 0. Sau đó dùng chê đô CBC đê tao cac khôi ban ma y
1
y
2
...y
n
vơi khoa
K. Cuôi cùng ta xac đinh MAC la y
n
. Ngƣơi gửi S (sender) sẽ phat đi khôi ban rõ x
1
x
2
... x
n

cùng vơi MAC. Khi ngƣơi nhân R (receiver) thu đƣơc x
1
x
2
... x
n
, anh ta sẽ khôi phuc lai y
1
,
y
2
, y
n
băng khoa bi mât K va xac minh liêu y
n
có giông MAC cua mình thu đƣơc hay
không. Nêu môt ngƣơi thư ba E (enemy) thu chặn đƣơc ban rõ x
1
x
2
... x
n
rõ ràng E không
thê tao ra MAC hơp lê nêu không biêt khoa bi mât K ma S va R đang dùng. Hơn nữa, nêu
E thay đôi it nhiều nôi dung thì chăc chăn E không thê thay đôi đƣơc MAC đê đƣơc R
chấp nhân.
Thông thƣơng ta muôn kêt hơp ca tinh xac thưc lân đô bao mât. Điều đó đƣơc thưc
hiên nhƣ sau: trƣơc tiên S dùng khoa K
1
đê tao MAC cho day ban rõ x
1
x
2
... x
n
, sau đó S
xac đinh x
n+1
la MAC, rôi ma hoa day x
1
x
2
... x
n
x
n+1
băng khoá K
2
đê tao day ban ma y
1
y
2
...
y
n
y
n+1
. Khi R nhân đƣơc y
1
y
2
...y
n
y
n+1
, R sẽ giai ma băng khoa K
2
va sau đó kiêm tra xem
x
n+1
có phai la MAC (băng khoa K
1
) cua day ban rõ x
1
x
2
... x
n
hay không.
3. Bai tâp
Bai tâp 3.1: Hay giai ma ban ma đƣơc ma hóa băng hê ma Caesar sau (sƣ
̉
dụ ng ba
̉
ng
chƣ
̃
ca
́
i tiế ng Anh): WKXPEVXS.
Bai tâp 3.2 (kho): Thông điệ p bi
́
mậ t ẩ n sau đoạ n văn ba
̉
n tiế ng Anh sau la
̀
gi
̀
:
“The supply of game for London is going steadily
up. Head keeper Hudson, we believe, has been
now told to receive all orders for fly paper and for
preservations of your hen-pheasant's life.”
Trich trong tac phâm ”The Gloria Scott”.
Bai tâp 3.3: Sƣ
̉
dụ ng ba
̉
ng sau (hệ ma
̃
Freemason) đê giai ma thông điêp:





Bang ma cac ky tư:
A B C
D E F
G H I
Chƣơng III: Các hê ma khoa bi mât
73


J
K
L
M

N• O• P•
Q• R• S•
T• U• V•


W•
X•
Y•
Z•

Gợ i y
́
: đây la
̀
mộ t hệ ma
̃
thay thế tƣợ ng hi
̀
nh.
Bai tâp 3.4: Hay tìm thông điệ p bi
́
mậ t ẩ n giấ u trong đoạ n văn ba
̉
n sau:
Dear George, 3rd March
Greetings to all at Oxford. Many thanks for your
letter and for the Summer examination package.
All Entry Forms and Fees Forms should be ready
for final dispatch to the Syndicate by Friday
20th or at the very least, I‟m told, by the 21st.
Admin has improved here, though there‟s room
for improvement still; just give us all two or three
more years and we‟ll really show you! Please
don‟t let these wretched 16+ proposals destroy
your basic O and A pattern. Certainly this
sort of change, if implemented immediately,
would bring chaos.
Bai tâp 3.5: Cho hê ma Affine đƣơc cai đặt trên Z
99
. Khi đó khóa la cac cặp (a, b) trong
đó a, b e Z
99
vơi (a, 99) = 1. Ham ma hóa E
K
(x) = (a * x + b) mod 99 va ham giai ma D
K

(x) = a
-1
* (x – b) mod 99.
a) Hay xac đinh sô khóa có thê đƣơc sử dung cho hê ma nay.
b) Nêu nhƣ khóa giai ma la K
-1
= (16, 7), hay thưc hiên ma hóa xâu m =
“DANGER”.
Bai tâp 3.6: Cho hê ma Affine đƣơc cai đặt trên Z
39
. Khi đó khóa la cac cặp (a, b) trong
đó a, b e Z
39
vơi (a, 39) = 1. Ham ma hóa E
K
(x) = (a * x + b) mod 39 va ham giai ma D
K

(x) = a
-1
* (x – b) mod 39.
a) Hay xac đinh sô khóa có thê đƣơc sử dung cho hê ma nay.
b) Nêu nhƣ khóa giai ma la K
-1
= (23, 7), hay thưc hiên ma hóa xâu m = “ATTACK”.
Bai tâp 3.7: Cho hê ma Affine đƣơc cai đặt trên Z
55
. Khi đó khóa la cac cặp (a, b) trong
đó a, b e Z
55
vơi (a, 55) = 1. Ham ma hóa E
K
(x) = (a * x + b) mod 55 va ham giai ma D
K

(x) = a
-1
* (x – b) mod 55.
a) Hay xac đinh sô khóa có thê đƣơc sử dung cho hê ma nay.
Chƣơng III: Các hê ma khoa bi mât
74
b) Khóa giai ma la K
-1
= (13, 17), hay xac đinh khóa ma hóa.
Bai tậ p 3.8: Gia sử hê ma Affine đƣơc cai đặt trên Z
99
.
a) Hay xac đinh só khóa có thê có cua hê ma.
b) Gia sử khóa ma hóa la (16, 7), hay xac đinh khóa giai ma.
Bai tậ p 3.9: Gia sử hê ma Affine đƣơc cai đặt trên Z
126
.
a) Hay xac đinh só khóa có thê có cua hê ma.
b) Gia sử khóa ma hóa la (23, 7), hay xac đinh khóa giai ma.
Bai tâp 3.10: Cho hê ma Hill có M = 2.
a) Ma trân A =
(
¸
(

¸

17 13
3 5
có thê đƣơc sử dung lam khóa cho hê ma trên không giai
thích.
b) Cho A =
(
¸
(

¸

7 3
5 12
hay thưc hiên ma hóa va giai ma vơi xâu S = “HARD”.
Bai tâp 3.11: Cho hê ma Hill có M = 2.
a) Ma trân A =
(
¸
(

¸

a 11
3 5
đƣơc sử dung lam khóa cho hê ma trên. Hay tìm tất ca cac
khóa có thê sử dung cua hê ma trên.
b) Gia sử ngƣơi ta sử dung hê ma trên đê ma hóa ban rõ P = “EASY” va thu đƣơc
ban ma la “UMQA”. Hay thưc hiên giai ma vơi ban ma la C = “MCDZUZ” va đƣa
ra ban rõ.
Bai tâp 3.12: Cho hê ma Hill có M = 2.
a) Ma trân A =
(
¸
(

¸

a 7
13 15
đƣơc sử dung lam khóa cho hê ma trên. Hay tìm tất ca
cac khóa có thê sử dung cua hê ma trên.
b) Gia sử ngƣơi ta sử dung hê ma trên đê ma hóa ban rõ P = “MARS” va thu đƣơc
ban ma la “YARH”. Hay thưc hiên giai ma vơi ban ma la C = “MANNTF” va đƣa
ra ban rõ.
Bai tâp 3.13: Cho hê ma Vigenere có M = 6, K = “CIPHER”.
a) Hay thưc hiên ma hóa xâu P = “THIS IS MY TEST“.
b) Hay thưc hiên giai ma xâu M = “EICJIC RTPUEI GBGLEK CBDUGV”.
Bai tâp 3.14: Cho hê ma Vigenere có M = 6. Ma hóa xâu P = “THIS IS MY TEST“ ngƣơi
ta thu đƣơc ban ma la “LLKJML ECVVWM”.
a) Hay tìm khóa ma hóa đa dùng cua hê ma trên.
b) Dùng khóa tìm đƣơc ở phân trên hay giai ma ban ma C = “KLGZWT
OMBRVW”.
Chƣơng III: Các hê ma khoa bi mât
75
Bai tâp 3.15: Cho hê ma Vigenere có M = 6. Ma hóa xâu P = “SPIRIT“ ngƣơi ta thu đƣơc
ban ma la “OXHRZW”.
a) Hay tìm khóa ma hóa đa dùng cua hê ma trên.
b) Dùng khóa tìm đƣơc ở phân trên hay giai ma ban ma C = “BQETYH HMBEEW”.
Bai tâp 3.16: Cho hê ma Vigenere có M = 6. Giai ma xâu C = “RANJLV” ngƣơi ta thu
đƣơc ban rõ la “CIPHER”.
a) Tìm khóa đa sử dung cua hê ma trên.
b) Dùng khóa tìm đƣơc ở phân trên hay hay giai ma xâu M = “PLDKCI DUJQJO“.
Bai tâp 3.17: Phƣơng pha
́
p ma
̃
ho
́
a thay thế đơn gia
̉
n
Đoạ n văn ba
̉
n sau đƣợ c ma
̃
ho
́
a bằ ng ca
́
ch sƣ
̉
dụ ng mộ t phƣơng pha
́
p ma
̃
ho
́
a thay
thế đơn gia
̉
n. Ban rõ la môt phân cua môt văn ban tiêng Anh viêt hoa, bỏ qua cac dấu
câu. Hay sử dung bang thông kê tân suất xuất hiên cua cac chữ cai trong tiêng Anh đê
giai ma ban ma đa cho.
ODQSOCL OW GIU BOEE QRROHOCS QV GIUR KIA QF Q DQCQSLR WIR
ICL IW CQFQF EIYQE YIDJUVLR FGFVLDF GIU SLV OCVI GIUR
IWWOYL IC VXQV DICPQG DIRCOCS VI WOCP VXL JXICLF ROCSOCS
LHLRG YQEELR OF Q POFVRQUSXV YICWUFLP CQFQ BIRMLR QCP
LHLRG YQEELR QFFURLF GIU VXQV XOF IR XLR WOEL IR
QYYIUCVOCS RLYIRP IR RLFLQRYX JRIKLYV LHLRG ICL IW BXOYX
OF DOFFOCS WRID VXL YIDJUVLR FGFVLD OF QAFIEUVLEG HOVQE
Bang thông kê tân suất xuất hiệ n cu
̉
a ca
́
c chƣ
̃
ca
́
i trong tiế ng Anh:
Chƣ
̃
ca
́
i Tầ n suấ t Chƣ
̃
ca
́
i Tầ n suấ t Chƣ
̃
ca
́
i Tầ n suấ t
A 8.2 % J 0.2 % S 6.3 %
B 1.5 % K 08 % T 9.1 %
C 2.8 % L 4.0 % U 2.8 %
D 4.3 % M 2.4 % V 1.0 %
E 12.7 % N 6.7 % W 2.3 %
F 2.2 % O 7.5 % X 0.1 %
G 2.0 % P 1.9 % Y 2.0 %
H 6.1 % Q 0.1 % Z 0.1 %
I 7.0 % R 6.0 %
Bai tậ p 3.18: Cho ba
̉
n ma
̃
sau:
EYMHP GZYHH PTIAP QIHPH YIRMQ EYPXQ FIQHI AHYIW ISITK MHXQZ PNMQQ
XFIKJ MKXIJ RIKIU XSSXQ ZEPGS ATIHP PSXZY H
Chƣơng III: Các hê ma khoa bi mât
76
Biế t rằ ng ba
̉
ng chƣ
̃
ca
́
i sƣ
̉
dụ ng la
̀
tiế ng Anh, hay thưc hiên cac yêu câu sau:
a) Hay đƣa ra bang phân phôi tân suất cua cac chữ cai trong ban ma trên.
b) Gia sử ban ma trên nhân đƣơc băng cach sử dung phƣơng phap ma hóa đôi chỗ
hoặ c thay thế đơn âm, hay dưa vao ba
̉
ng phân phố i tầ n suấ t ơ
̉
phầ n a để xa
́
c đi ̣ nh
xem kha
̉
năng na
̀
o la
̀
cao hơn (hệ ma
̃
đổ i chỗ hay thay thế đơn âm)?
c) Hay xac đinh ban rõ nêu nhƣ phân băt đâu cua ban rõ la “What ought …”.
d) Giai thich cach thanh lâp khóa cua hê ma.
Bai tâp 3.19 (kho):
Hay giai ma ban ma đƣơc ma hóa băng hê ma Vigenere sau, xac đinh đô khóa sử
dung biêt răng ban rõ gôm cac chữ cai trong bang ma tiêng Anh.
IGDLK MJSGC FMGEP PLYRC IGDLA TYBMR KDYVY XJGMR TDSVK ZCCWG ZRRIP
UERXY EEYHE UTOWS ERYWC QRRIP UERXJ QREWQ FPSZC ALDSD ULSWF FFOAM
DIGIY DCSRR AZSRB GNDLC ZYDMM ZQGSS ZBCXM OYBID APRMK IFYWF MJVLY
HCLSP ZCDLC NYDXJ QYXHD APRMQ IGNSU MLNLG EMBTF MLDSB AYVPU TGMLK
MWKGF UCFIY ZBMLC DGCLY VSCXY ZBVEQ FGXKN QYMIY YMXKM GPCIJ HCCEL
PUSXF MJVRY FGYRQ


̉
dụ ng mộ t trong ca
́
c ngôn ngƣ
̃
lậ p tri
̀
nh C, C++, Java hoặ c C# đê lam cac bai tâp sau:
Bai tâp 3.20: Viế t chƣơng tri
̀
nh đêm tân sô xuất hiên cua cac chữ cai tiêng Anh trong môt
văn ba
̉
n tiế ng Anh ơ
̉
dạ ng file text.
Bai tâp 3.21: Viế t chƣơng tri
̀
nh đêm tân sô xuất hiên cua cac chữ cai tiêng Viêt trong môt
văn ba
̉
n tiế ng Việ t ơ
̉
dạ ng file RTF.
Bai tâp 3.22: Viế t chƣơng tri
̀
nh ca
̀
i đặ t thuậ t toa
́
n ma hóa va giai ma cua hê ma Ceasar.
Bai tâp 3.23: Viế t chƣơng tri
̀
nh ca
̀
i đặ t thuậ t toa
́
n ma
̃
ho
́
a va
̀
gia
̉
i ma
̃
cu
̉
a hệ ma
̃
Affine.
Bai tâp 3.24: Viế t chƣơng tri
̀
nh ti
́
nh đi ̣ nh thƣ
́
c cu
̉
a ma trậ n vuông cấ p N (N < 20).
Bai tâp 3.25: Viế t chƣơng tri
̀
nh ca
̀
i đặ t thuậ t toa
́
n ma
̃
ho
́
a va
̀
gia
̉
i ma
̃
cu
̉
a hệ ma
̃
Hill.
Bai tâp 3.26: Viế t chƣơng tri
̀
nh ca
̀
i đặ t thuậ t toa
́
n ma
̃
ho
́
a va
̀
gia
̉
i ma
̃
cu
̉
a hệ ma
̃
Vigenere.
Bai tâp 3.27: Viế t chƣơng tri
̀
nh ma
̃
ho
́
a va
̀
gia
̉
i ma
̃
file theo hệ ma DES vơ
́
i ca
́
c cơ chế
ma hóa ECB, CBC.
Bai tâp 3.28: Viế t chƣơng tri
̀
nh ma
̃
ho
́
a va
̀
gia
̉
i ma
̃
file theo hệ ma
̃
AES vơ
́
i ca
́
c cơ chế ma
̃

hóa ECB, CBC.
Chƣơng IV: Các hê ma mât khoa công khai
77
CHƢƠNG IV: CAC HÊ MA MÂT KHOA CÔNG KHAI
Trong ca
́
c hệ ma
̃
mậ t kho
́
a bi
́
mậ t nế u chu
́
ng ta biế t kho
́
a va
̀
ha
̀
m ma
̃
ho
́
a chu
́
ng ta
có thê tìm đƣơc khóa va ham giai ma môt cach nhanh chóng (thơ
̀
i gian đa thƣ
́
c).
Mộ t hệ ma
̃
mậ t kho
́
a bi
́
mậ t la
̀
mộ t hệ ma
̃
mậ t ma tất ca moi ngƣơi đều biêt ham ma
hóa va khóa ma hóa nhƣng không tôn tai môt thuât toan thơi gian đa thưc đê có thê tinh
đƣợ c kho
́
a gia
̉
i ma
̃

̀
ca
́
c thông tin đo
́
.
1. Khái niêm hê ma mât khoa công khai
Cac hê ma đƣợ c trình bay trong ca
́
c chƣơng trƣơ
́
c đƣợ c gọ i la
̀
ca
́
c hệ ma
̃
kho
́
a bi
́

mậ t, khóa đôi xưng, hay ca
́
c hệ ma
̃
truyề n thố ng (conventional).
Cac hê ma nay có cac điêm yêu sau đây:
- Nế u số lƣợ ng ngƣơ
̀
i sƣ
̉
dung lơn thì sô khóa sẽ tăng rấ t nhanh, chẳ ng hạ n vơ
́
i n
ngƣơ
̀
i sƣ
̉
dụ ng thi
̀
số kho
́
a se
̃
la
̀
n *(n-1)/2 do đo
́
rấ t kho
́
qua
̉
n ly
́
, phƣ
́
c tạ p va
̀

không an toa
̀
n.
- Dƣ̣ a trên ca
́
c hệ ma
̃
na
̀
y không thể xây dƣ̣ ng ca
́
c kha
́
i niệ m va
̀
di ̣ ch vụ nhƣ chƣ
̃

ky điên tử, dich vu xac thưc hóa ngƣơi dùng cho cac ưng dung thƣơng mai điên

̉
.
Vao năm 1975 Diffie va
̀
Hellman trong mộ t công tri
̀
nh cu
̉
a mi
̀
nh (mộ t ba
̀
i ba
́
o) đa
̃
đề
xuấ t ra ca
́
c y
́
tƣơ
̉
ng cho phe
́
p xây dƣ̣ ng lên ca
́
c hệ ma
̃
hoạ t độ ng theo ca
́
c nguyên tắ c

́
i gắ n liề n vơ
́
i ca
́
c bên truyề n tin chƣ
́
không gắ n vơ
́
i ca
́
c cặ p truyề n tin.
Nguyên tắ c hoạ t độ ng cu
̉
a ca
́
c hệ ma
̃
la
̀
mỗ i bên tham gia truyề n tin se
̃
co
́
2 khóa,
mộ t kho
́
a gọ i la
̀
kho
́
a bi
́
mậ t va
̀
mộ t kho
́
a đƣợ c gọ i la
̀
kho
́
a công khai. Khóa bi mât la khóa
dùng đê giai ma va đƣơc giữ bi mât (K
S
), khóa công khai la khóa dùng đê sinh ma đƣơc
công khai ho
́
a để bấ t cƣ
́
ai cu
̃
ng co
́
thể sƣ
̉
dụ ng kho
́
a na
̀
y gƣ
̉
i tin cho ngƣơ
̀
i chu
̉
cu
̉
a hệ
ma (K
P
). Ngay nay chúng ta có thê thấy rất rõ nguyên tăc nay trong viêc gửi email , moi
ngƣơ
̀
i đề u co
́
thể gƣ
̉
i email tơ
́
i mộ t đi ̣ a chi
̉
email na
̀
o đo
́
, nhƣng chi
̉
co
́
ngƣơ
̀
i chu
̉

̉

̃
u
cua đia chỉ email đó mơi có thê đoc đƣơc nôi dung c ua bưc thƣ, còn những ngƣơi khac
thì không. Vơ
́
i ca
́
c hệ ma
̃
kho
́
a công khai việ c phân phố i kho
́
a se
̃
trơ
̉
nên dễ da
̀
ng hơn
qua ca
́
c kênh cung cấ p kho
́
a công cộ ng , số lƣợ ng kho
́
a hệ thố ng qua
̉
n ly
́
cu
̃
ng se
̃
i
́
t hơn
(la n khóa cho n ngƣơi du
̀
ng). Cac dich vu mơi nhƣ chữ ky điên tử, thỏa thuân khóa cung
đƣợ c xây dƣ̣ ng dƣ̣ a trên ca
́
c hệ ma
̃
na
̀
y.
Cac yêu câu cua loai hê ma nay:
- Việ c sinh K
P
, K
S
phai dê dang
- Việ c ti
́
nh E(K
P
, M) la dê dang
- Nế u co
́
C = E(K
P
, M) va K
S
thì viêc tìm ban rõ cung la dê
- Nế u biế t K
P
thì viêc dò tìm K
S
la khó
- Việ c khôi phụ c ba
̉
n ro
̃

̀
ba
̉
n ma
̃
la
̀
rấ t kho
́

Khi A muố n truyề n tin cho B , A se
̃

̉
dụ ng kho
́
a K
P
cua B đê ma hóa tin tưc va
truyề n ba
̉
n ma
̃

́
i cho B, B se
̃

̉
dụ ng kho
́
a bi
́
mậ t cu
̉
a mi
̀
nh để gia
̉
i ma
̃
va
̀
đọ c tin:
Chƣơng IV: Các hê ma mât khoa công khai
78




Hình 4.1: Mô hi
̀
nh sƣ
̉
dụ ng 1 cua cac hê ma khóa công khai PKC
Ciphertext = E(K
P
,Plaintext) ,Plantext = D(K
S
, E(K
P
,Plaintext)) (1)




Hình 4.2: Mô hi
̀
nh sƣ
̉
dụ ng 2 cua cac hê ma khóa công khai PKC
Ciphertext = D(K
S
, Plaintext), Plaintext = E(K
P
, D(K
S
, Plaintext)) (2)
Mô hi
̀
nh (2) đƣợ c sƣ
̉
dụ ng c ho ca
́
c hệ chƣ
̃
ky
́
điệ n tƣ
̉
co
̀
n mô hi
̀
nh (1) đƣợ c sƣ
̉

dung cho cac hê ma mât . Cac hê ma nay đƣơc goi la cac hê ma khóa công khai PKC
(Public Key Cryptosystems) hay ca
́
c hệ ma
̃
bấ t đố i xƣ
́
ng (Asymmetric Encryption
Scheme).
2. Nguyên tắ c cấ u tạ o cu
̉
a ca
́
c hệ ma
̃
mậ t kho
́
a công khai
Cac hê ma khóa công khai đƣơc xây dưng dưa trên cac ham đƣơc goi la cac ham 1
phia hay ham 1 chiề u (one–way functions).
Ham môt chiều f : X ÷ Y la
̀
m mộ t ha
̀
m ma
̀
nế u biế t x e X ta co
́
thể dễ da
̀
ng ti
́
nh
đƣợ c y = f(x). Nhƣng vơ
́
i y bấ t ky
̀
e Y việ c ti
̀
m x e X sao cho y = f(x) la khó. Có nghĩa la
việ c ti
̀
m ha
̀
m ngƣợ c f
-1
la rất khó.
Vi du nêu chúng ta có cac sô nguyên tô P
1
, P
2
, ..., P
n
thì viêc tinh N = P
1
* P
2
* ... *
P
n
la dê nhƣng nêu có N thì viêc phân tich ngƣơc lai la môt bai toan khó vơi N lơn.
Để thuậ n tiệ n ca
́
c ha
̀
m mộ t phi
́
a đƣợ c sƣ
̉
dụ ng trong ca
́
c hệ ma
̃
PKC thƣơ
̀
ng đƣợ c
trang bi ̣ ca
́
c cƣ
̉
a bẫ y (trapdoor) giúp cho việ c ti
̀
m x tho
̉
a ma
̃
y = f(x) la dê dang nêu chúng
ta biế t đƣợ c cƣ
̉
a bẫ y na
̀
y.
Ham cua bây (trapdoor function): la môt ham môt chiều trong đó viêc tinh f
-1
la rất
nhanh khi chu
́
ng ta biế t đƣợ c cƣ
̉
a bẫ y cu
̉
a ha
̀
m. Vi du viêc tìm nghiệ m cu
̉
a ba
̀
i toa
́
n xế p
balô 0/1 trong hệ ma
̃
xế p balô Knapsack ma
̀
chu
́
ng ta se
̃
họ c trong phầ n tiế p theo la
̀
mộ t
ham môt phia (việ c ma
̃
ho
́
a rấ t nhanh va
̀
dễ da
̀
ng nhƣng ti
̀
m vectơ nghiệ m tƣơng ƣ
́
ng la
̀

khó) nhƣng nế u ta biế t cƣ
̉
a b ây (Vectơ xế p balô siêu tăng A‟ ) thì viêc giai bai toan lai rất
dễ da
̀
ng.
3. Mộ t số hệ ma
̃
kho
́
a công khai
3.1. Hệ ma
̃
knapsack
Bai toan xêp ba lô tông quat:
Khóa công
khai (K
P
)
Khóa bí mật
(K
S
)
Mã hóa Giải mã
Plaintext Plaintext
Ciphertext
A B
Mã hóa Giải mã
Plaintext
Khóa bí mật
(K
S
)
Khóa công
khai (K
P
)
Plaintext
Signed Message
A B
Chƣơng IV: Các hê ma mât khoa công khai
79
Cho M, N va
̀
A
1
, A
2
, ...., A
N
la cac sô nguyên dƣơng tìm cac sô x
i
không âm sao cho:
M =
1
*
N
i i
i
x A
=
¿
Vecto A = (A
1
, A
2
, ..., A
N
) đƣợ c gọ i la
̀
vecto xế p balô co
̀
n vectơ X = (x
1
, x
2
, …, x
N
) la
vectơ nghiệ m.
Mộ t trƣơ
̀
ng hợ p riêng đa
́
ng quan tâm cu
̉
a ba
̀
i toa
́
n xế p ba lô tổ ng qua
́
t la
̀
trƣơ
̀
ng
hợ p ma x
i
e {0, 1}. Khi đo
́
ta co
́
ba
̀
i toa
́
n xế p ba lô 0, 1.
Vecto xế p ba lô siêu tăng : Trong trƣơ
̀
ng hợ p vecto (A
1
, A
2
, ..., A
N
) đƣợ c sắ p lạ i
thanh (A‟
1
, A‟
2
, ..., A‟
N
) sao cho:
¬ i ta co
́
:
'
j
j i
A
<
¿
< A‟
i
thì vecto (A
1
, A
2
, ..., A
N
) đƣợ c gọ i la
̀
vecto xế p balo siêu tăng.
Khi (A
1
, A
2
, ..., A
N
) la môt vecto xêp balo siêu tăng ta co
́
ngay ti
́
nh chấ t : M >= A‟
i
¬ i.
Do đo
́
việ c gia
̉
i ba
̀
i toa
́
n xế p ba lô 0/1 trơ
̉
nên dễ da
̀
ng hơn rấ t nhiề u.
Hệ ma
̃
knapsack do Merkle va
̀
Hellman đƣa ra va
̀
o năm 1978.
Cách xây dưng:
1. Chon 1 vecto siêu tăng A

= (a

1
, a

2
, ..., a

N
), chon 1 số M > 2 * a

N
, chon ngâu
nhiên 1 số u < M va
̀
(u, M) = 1
2. Xây dƣ̣ ng Vecto A = (a
1
, a
2
, ..., a
N
) trong đo
́
a
i
= (a

i
* u) mod M
3. Khóa: K
P
= (A, M), K
S
= (u, u
-1
)
4. Không gian ca
́
c ba
̉
n ro
̃
la
̀
không gian mọ i da
̃
y N bit
P = (x
1
, x
2
, ..., x
n
).
Ma hóa: C = (
1
*
N
i i
i
a x
=
¿
)mod M
Giai ma: tinh C

= C * u
-1
mod M sau đo
́
gia
̉
i ba
̀
i toa
́
n xế p ba lô 0/1 vơ
́
i A

, C


̀
đo
́

tìm đƣơc P = (x
1
, x
2
, ..., x
n
).
Vi du 1: Cho hệ ma
̃
Knapsack co
́
A

= (2, 3, 6, 12, 25), N = 5, M = 53, u = 46, u
-1
=
15.
a) Hay tìm cac khóa cua hê ma trên
b) Ma hóa va giai ma ban ma tƣơng ưng cua ban rõ M = 01001.
3.2. Hệ ma RSA
Hệ ma
̃
RSA đƣợ c đặ t tên dƣ̣ a theo ca
́
c chƣ
̃
ca
́
i đầ u cu
̉
a 3 tac gia cua hê ma la
Rivest, Shamir va
̀
Adleman. Đây la thuât toan ma hóa nôi tiêng nhất va cung la thuât toan
đƣơc ưng dung thưc tê nhất.
Để cai đặt RSA ban đâu mỗi ngƣơi dùng sinh khóa công khai và khóa bi mât cua
mình băng cach:
Chƣơng IV: Các hê ma mât khoa công khai
80
- chon hai sô nguyên tô lơn ngâu nhiên (cỡ gân 100 chữ sô) khac nhau p và q
- tính N = p*q
- chon môt sô e nhỏ hơn N va (e, C(N)) = 1, e đƣợ c gọ i la
̀
số mu
̃
lậ p ma
̃

- tìm phân tử ngƣơc cua e trên vanh module C(N), d la
̀
số mu
̃
gia
̉
i ma
̃

- khóa công khai là K
P
= (e, N)
- khóa bi mât la K
S
= K
-1
P
= (d, p, q)
Viêc thiêt lâp khóa nay đƣơc thưc hiên 1 lân khi môt ngƣơi dùng thiêt lâp (thay thê)
khóa công khai cua ho. Mu e thƣơng la kha nhỏ (đê ma hóa nhanh), va phai la nguyên tô
cùng nhau vơi C(N). Cac gia tri thƣơng đƣơc chon cho e la 3 hoặ c 2
16
– 1 = 65535. Tuy
nhiên khi e nho
̉
thi
̀
d se
̃
tƣơng đố i lơ
́
n . Khoa bi mât la (d, p, q). Cac sô p va q thƣơng có
gia tri xấp xỉ nhau nhƣng không đƣơc băng nhau . Chú y la viêc đê lô môt trong cac thanh
phân trên sẽ lam cho hê ma hóa trở thanh không an toa
̀
n.
Sử dung RSA
- đê ma hóa môt thông điêp M: C = M
e
(mod N) (0<= M < N)
- giai ma: M = C
d
(mod N)
Thuât toan ma hóa RSA lam viêc đƣơc bởi vì nó dưa trên cơ sở toan hoc la sư tông
quat đinh ly Ferma nhỏ cua Ơclit: X
C(N)
= 1 (mod N). Trong thuât toan RSA chúng ta chon
e và d là nghich đao cua nhau trên vanh Z
C(N
) vơi e đƣơc chon trƣơc.
Do đó chúng ta sẽ có e.d ÷ 1 mod C(N), suy ra:
M = C
d
= M
e.d
= M
1+q.C(N)
= M . (M
C(N)
)
q
= M mod N
Công thưc nay đam bao viêc giai ma sẽ cho kêt qua đúng la ban rõ ban đâu (chú y
la điều nay chỉ đúng khi p khac q).
Vi du 1: Cho hê ma RSA có N = p*q = 11 * 47 = 517, e = 3.
- Hãy tìm các khóa công khai va bi mât cua hê ma trên
- Ma hóa ban rõ M = 26.
Đâu tiên ta tinh đƣơc C(N) = 460 = 10 * 46, do (3,460) = 1 nên ap dung thuât toa
́
n
Ơclit mở rông ta tìm đƣơc d = 307.
Vây khóa công khai cua hê ma K
P
= (e, N) = (3, 517), khóa bi mât la K
S
= (d, p, q) =
(307, 11, 47).
Mã hóa M = 26 ta có C = M
e
mod N = 26
3
mod 517 = 515.
Đô an toan cua RSA
Đô an toan cua RSA phu thuôc vao đô khó cua viêc tinh C(N) va điều nay đòi hỏi
chúng ta cân phân tich N ra thưa sô nguyên tô. Thuât toan phân tich sô nguyên tô hiêu
qua nhất hiên nay la Brent-Pollard, chúng ta hay xem xet bang thông kê sau đê thấy đƣơc
tôc đô hoat đông cua nó:
Sô chữ sô trong hê thâp phân cua N Sô các thao tác Bit đê phân tich N
Chƣơng IV: Các hê ma mât khoa công khai
81
20 7.20e+03
40 3.11e+06
60 4.63e+08
80 3.72e+10
100 1.97e+12
120 7.69e+13
140 2.35e+15
160 5.92e+16
180 1.26e+18
200 2.36e+19
Bang 4.1: Tố c độ cu
̉
a thuậ t toa
́
n Brent-Pollard
Cac nghiên cưu về vấn đề phân tich cac sô nguyên lơn hiên nay tiên triên rất châm,
cac tiên bô lơn nhất cung chỉ la cac cai tiên về thuât toan va có thê nói răng trư khi có cac
đôt pha trong viêc phân tich cac sô 1024 bit, RSA la an toan trong thơi điêm hiên nay.
Cac nha mât ma hoc phat minh ra hê ma RSA đa đƣa ra môt giai thƣởng tri gia 100
$ vao năm 1977. Đó la môt hê ma vơi sô N có 129 chữ sô, thach thưc nay đa đƣơc pha.
Trên thưc tê đê cai đặt RSA cân phai thưc hiên cac thao tac modulo vơi cac sô 300
chữ sô (hay 1024 bit) ma hiên nay cac may tinh mơi chỉ thao tac vơi cac sô nguyên 64 bit,
điều nay dân đên nhu câu cân cac thƣ viên sô hoc nhân chinh xac đê lam viêc vơi cac sô
nguyên lơn nay. Ngoai ra viêc sử dung RSA cân tơi cac sô nguyên tô lơn nên chúng ta
cung phai có môt cơ sở dữ liêu cac sô nguyên tô.
Đê tăng tôc cho RSA chúng ta có thê sử dung môt sô phƣơng phap khac chăng han
nhƣ cai tiên cac phep tinh toan nhân hai sô lơn hoặc tăng tôc viêc tìm ban ma, ban rõ.
Đôi vơi phep nhân 2 sô n bit thông thƣơng chúng ta cân thưc hiên O(n
2
) phép tính
bit. Thuât toan nhân cac sô nguyên Schonhage – Strassen cho phep chúng ta thưc hiên
phep nhân 2 sô vơi đô phưc tap la O(n log n) vơi cac bƣơc nhƣ sau:
- Chia mỗi sô nguyên thanh cac khôi, sử dung cac khôi nay nhƣ cac hê sô cua
môt đa thưc.
- Tinh cac đa thưc nay tai môt sô cac điêm thich hơp, va nhân cac kêt qua thu
đƣơc.
- Nôi suy cac kêt qua nay hình thanh cac hê sô cua đa thưc tich
- Kêt hơp cac hê sô đê hình thanh nên tich cua hai sô ban đâu
- Biên đôi Fourier rơi rac, va ly thuyêt chặp có thê đƣơc sử dung đê tăng tôc đô
cua qua trình nôi suy.
Chƣơng IV: Các hê ma mât khoa công khai
82
Môt cach khac nữa đê tăng tôc viêc nhân cac sô lơn trong hê ma RSA la sử dung
cac phân cưng chuyên dung vơi cac thuât toan song song.
Nhƣ đa trình bay ở phân trƣơc khi mã hóa chúng ta thƣơng chon e nhỏ đê đây
nhanh qua trình ma hóa nhƣng điều nay cung đông nghĩa la viêc giai ma sẽ châm do sô
mu lơn. Môt cai tiên đang kê trong tôc đô giai ma RSA có thê nhân đƣơc băng cach sử
dung đinh ly phân dƣ Trung Hoa lam viêc vơi modulo p va q tƣơng ưng thay vì N. Vì p và
q chỉ băng môt nửa cua N nên tinh toan sẽ nhanh hơn nhiều.
Đinh ly phân dƣ Trung Hoa đƣơc sử dung trong RSA băng cach tao ra hai phƣơng
trình tư viêc giai ma M = C
d
(mod N) nhƣ sau:
M
1
= M mod p = (C mod p)
d mod (p-1)

M
2
= M mod q = (C mod q)
d mod (q-1)

Sau đó ta giai hê:
M = M
1
mod p
M = M
2
mod q
Hê nay có nghiêm duy nhất theo đinh ly phân dƣ Trung Hoa
M = [(M
2
+ q – M
1
)u mod q] p + M
1

Trong đó p.u mod q = 1
Viêc sử dung đinh ly phân dƣ Trung Hoa la môt phƣơng phap đƣợ c sử dung rông
rai va phô biên đê tăng tôc đô giai ma cua RSA.
Hiệ n tƣợng lộ ba
̉
n ro
̃

Mộ t hiệ n tƣợ ng cầ n lƣu y
́
khi sƣ
̉
dụ ng ca
́
c hệ ma
̃
RSA la
̀
hiệ n tƣợ ng lộ ba
̉
n ro
̃
. Ta
hay xet hê ma RSA có N = p*q = 5*7, e = 17, khi đo
́

́
i M = 6 ta co
́
C = 6
17
mod N = 6.
Tƣơng tƣ̣ vơ
́
i hệ ma
̃
RSA co
́
N = p*q = 109*97, e = 865, vơ
́
i mọ i M ta đề u co
́
M
e

mod N = M.
Theo ti
́
nh toa
́
n thi
̀

́
i mộ t hệ ma
̃
RSA co
́
N = p*q va
̀
e bấ t ky
̀
, số lƣợ ng ba
̉
n ro
̃
se
̃
bi ̣
lộ khi ma
̃
ho
́
a se
̃
la
̀
(1 + (e-1, p-1))*(1 + (e-1, q-1)).
Trong số ca
́
c hệ ma
̃
kho
́
a công khai thi
̀
co
́
le
̃
hệ ma
̃
RSA (cho tơ
́
i thơ
̀
i điể m hiệ n tạ i )
la hê ma đƣơc sử dung rông rai nhất.Tuy nhiên do khi la
̀
m việ c vơ
́
i dƣ
̃
liệ u đầ u va
̀
o (thông
điệ p ma
̃
ho
́
a , ban rõ) lơ
́
n thi
̀
khố i lƣợ ng ti
́
nh toa
́
n rấ t lơ
́
n nên trên thƣ̣ c tế ngƣơ
̀
i ta hay
dùng hê ma nay đê ma hóa cac dữ liêu có kich thƣơc nhỏ , hoặ c co
́
yêu cầ u ba
̉
o mậ t cao,
chẳ ng hạ n nhƣ ca
́
c kho
́
a phiên (session key) trong ca
́
c phiên truyề n tin. Khi đo
́
hệ ma
̃

RSA se
̃
đƣợ c sƣ
̉
dụ ng kế t hợ p vơ
́
i mộ t hệ ma
̃
khố i kha
́
c , chẳ ng hạ n nhƣ AES , theo mô
hình lai ghep nhƣ sau:
Chƣơng IV: Các hê ma mât khoa công khai
83
B - ngƣơi nhân
RSA
Khóa công
khai cua B
Khóa
phiên K
C1
RSA
Khóa bi mât
cua B
C1
Khóa
phiên K
AES P
C2
AES
C2
P
A - ngƣơi gửi

Hình 4.3: Mô hi
̀
nh ƣ
́
ng dụ ng lai ghe
́
p RSA vơ
́
i ca
́
c hệ ma
̃
khố i
3.3. Hệ ma
̃
El Gamal
Hê ma El Gamal la môt biên thê cua sơ đô phân phôi khoa Diffie – Hellman. Hê ma
này đƣơc El Gamal đƣa ra vao năm 1985. Giông nhƣ sơ đô phân phôi khóa Diffie –
Hellman tinh an toan cua nó dưa trên tinh khó giai cua bai toan logarit rơi rac. Nhƣơc
điêm chinh cua nó la kich thƣơc thông tin sau khi ma hóa gửi đi sẽ tăng gấp đôi so vơi
thông tin gôc.
Tuy nhiên so vơi RSA, El Gamal không có nhiều răc rôi về vấn đề ban quyền sử
dung.
Ban đâu ngƣơi ta sẽ chon môt sô nguyên tô lơn p va hai sô nguyên tuy y nhỏ hơn p
là a (a la
̀
mộ t phầ n tƣ
̉
nguyên thu
̉
y cu
̉
a Z
*
P
) va x (x la cua ngƣơi nhân, bi mât) sau đó tinh:
y = a
x
mod p
Đê ma hóa môt thông điêp M (la môt sô nguyên trên Z
P
) thanh ban ma C ngƣơi gửi
chon môt sô ngâu nhiên k nhỏ hơn p va tinh khóa ma hóa K:
K = y
k
mod p
Sau đó tinh cặp ban ma:
- C
1
= a
k
mod p
- C
2
= K.M mod p
Va gửi ban ma C = (C
1
, C
2
) đi (chú y la sau đó k sẽ bi huy).
Đê giai ma thông điêp đâu tiên ta cân tinh lai khóa ma hóa thông điêp K:
K = C
1
x
mod p = a
k.x
mod p
Sau đó tinh M băng cach giai phƣơng trình sau đây:
M = C
2
. K
-1
mod p
Viêc giai ma bao gôm viêc tinh lai khóa tam thơi K (rất giông vơi mô hình cua Diffie
– Hellman đƣa ra). Khóa công khai cua hê ma la (p, a, y), khóa bi mât la x.
Vi du: Cho hê ma El Gamal có P = 97, a = 5, x = 58.
Chƣơng IV: Các hê ma mât khoa công khai
84
- Tìm khóa cua hê ma trên.
- Ma hóa ban rõ M = 3 vơi k đƣơc chon băng 36.
Trƣơc hêt ta tinh y = 5
58
mod 97 = 44, tư đó suy ra K
P
= (P, a, y) = (97, 5, 44) và K
S

= (58).
Đê ma hóa thông điêp M = 3 ta tính khóa K = 44
36
mod 97 = 75 sau đó tinh:
- C
1
= 5
36
= 50 mod 97
- C
2
= 75.3 mod 97 = 31 mod 97
Vây ban ma thu đƣơc la C = (50, 31).
Vấn đề đôi vơi cac hê ma khóa công khai nói chung va El Gamal nói riêng la tôc đô
(do phai lam viêc vơi cac sô nguyên lơn), bên canh đó dung lƣơng bô nhơ danh cho viêc
lƣu trữ cac khóa cung lơn. Vơi hê ma El Gamal chúng ta cân gấp đôi bô nhơ đê chưa ban
ma so vơi cac hê ma khac. Ngoai ra do viêc sử dung cac sô nguyên tô nên viêc sinh khóa
va quan ly khóa cung khó khăn hơn vơi cac hê ma khôi. Trên thưc tê cac hê ma khóa
công khai thƣơng đƣơc sử dung kêt hơp vơi cac hê ma khôi (ma hóa khóa cua hê ma)
hoặc đê ma hóa cac thông tin có dung lƣơng nhỏ va la môt phân quan trong cua môt
phiên truyền tin nao đó.
Thám ma đôi vơi hê ma El Gamal
Để thƣ̣ c hiệ n tha
́
m ma
̃
hệ ma
̃
El Gamal chu
́
ng ta cầ n gia
̉
i ba
̀
i toa
́
n Logaritm rơ
̀
i rạ c .
Ơ đây chúng ta sẽ xem xet hai thuât toan có thê ap dung đê giai bai toa n na
̀
y, vơ
́
i độ
phƣ
́
c tạ p va
̀
kha
̉
năng a
́
p dụ ng kha
́
c nhau.
Thuậ t toa
́
n Shank
Thuậ t toa
́
n na
̀
y co
̀
n co
́
tên kha
́
c la
̀
thuậ t toa
́
n cân bằ ng thơ
̀
i gian – bộ nhơ
́
(Time-
Memory Trade Off), có nghĩa la nêu chúng ta có đu bô nhơ thì có thê s ử dung bô nhơ đó
đê lam giam thơi gian thưc hiên cua thuât toan xuông.
Input: số nguyên tố p, phầ n tƣ
̉
nguyên thu
̉
y a cu
̉
a
*
p
Z , số nguyên y.
Output: cầ n ti
̀
m x sao cho a
x
mod p = y.
Thuậ t toa
́
n:
Goi m = [(p-1)
1/2
] (lấ y phầ n nguyên).
Bƣơ
́
c 1: Tinh a
mj
mod p vơ
́
i 0 ≤ j ≤ m-1.
Bƣơ
́
c 2: Sắ p xế p ca
́
c cặ p (j, a
mj
mod p) theo a
mj
mod p va
̀
lƣu va
̀
o danh sa
́
ch L
1
.
Bƣơ
́
c 3: Tinh ya
-i
mod p vơ
́
i 0 ≤ i ≤ m-1.
Bƣơ
́
c 4: Sắ p xế p ca
́
c cặ p (i, ya
-i
mod p) theo a
mj
mod p va
̀
lƣu va
̀
o danh sa
́
ch L
2
.
Bƣơ
́
c 5: Tìm trong hai danh sach L
1
va L
2
xem co
́
tồ n tạ i cặ p (j, a
mj
mod p) va (i, ya
-i

mod p) nao ma a
mj
mod p = ya
-i
mod p (toa đô thư hai cua hai cặp băng nhau).
Bƣơ
́
c 6: x = (mj + i) mod (p-1). Kế t qua nay có thê kiêm chưng tư công thưc a
mj
mod
p = ya
-i
mod p => a
mj + i
mod p = y mod p => x = (mj + i) mod (p-1).
Chƣơng IV: Các hê ma mât khoa công khai
85
Đô phưc tap cua thuât toan phu thuôc vao m = [(p-1)
1/2
], vơ
́
i gia
́
tri ̣ cu
̉
a m, chúng ta
cầ n ti
́
nh ca
́
c phầ n tƣ
̉
thuộ c hai danh sa
́
ch L
1
va L
2
, đều la cac phep toan luy thưa phu
thuộ c va
̀
o j va
̀
i , i va
̀
j lạ i phụ thuộ c va
̀
o m nên co
́
thể nhậ n thấ y la
̀
thuậ t toa
́
n na
̀
y chi
̉
co
́

thể a
́
p dụ ng trong nhƣ
̃
ng trƣơ
̀
ng hợ p ma
̀
p nho
̉
.
Thuậ t toa
́
n Pohlig-Hellman
Có những trƣơng hơp đặc biêt ma bai toan Logarithm rơi rac có thê giai quyêt vơi
độ phƣ
́
c tạ p nho
̉
hơn O(p
1/2
), chẳ ng hạ n nhƣ khi p – 1 chỉ có cac ƣơc nguyên tô nhỏ. Mộ t
thuậ t toa
́
n la
̀
m việ c vơ
́
i ca
́
c trƣơ
̀
ng hợ p nhƣ vậ y đa
̃
đƣợ c Pohlig va
̀
Hellman đƣa ra va
̀
o
năm 1978.
Gia sử p – 1 = 2
n
.
Goi a la phân tử nguyên thuy cua
*
p
Z , p la
̀
mộ t số le
̉
va
̀
a
(p-1)/2
mod p = -1. Goi m la
số nguyên thuộ c khoa
̉
ng [0, p-2] ma chúng ta cân tìm đê y = a
m
mod p. Gia sử m đƣơc
biể u diễ n tha
̀
nh dạ ng nhi ̣ phân m = m
0
+ 2m
1
+ 4m
2
+ … + 2
n-1
m
n-1
. Khi đo
́
:
2 1
0
0 1 2 1
1 1 1 1
0 2 2 ... 2
2 2 2 2
0
1 0
( ) ( )
1 1
nÕu m
nÕu m
n
n
p p p p
m
m m m m m
y a a a
÷
÷
÷ ÷ ÷ ÷
+ + + +
=
¦
= = = =
´
÷ =
¹

Việ c ti
́
nh y
(p-1)/2
mấ t nhiề u nhấ t 2[log
2
p] bƣơ
́
c va
̀
se
̃
cho ta m
0
. Khi xa
́
c đi ̣ nh đƣợ c y
1

= ya
-m
0
, ta lặ p lạ i thao ta
́
c tƣơng tƣ̣ để ti
́
nh m
1
:
2
1
1 2 1
1 1 1
1 2 ... 2
4 2 2
1
1
1 0
( )
1 1
nÕu m
nÕu m
n
n
p p p
m
m m m
c a a
÷
÷
÷ ÷ ÷
+ + +
=
¦
= = =
´
÷ =
¹

Qua trình tinh toan cư thê tiêp diên cho tơi khi chúng ta tìm đƣơc m
i
. Đô phưc tap
cua thuât toan la: n(2[log
2
p] + 2) ~ O((log
2
p)
2
).
3.4. Các hê ma mât dưa trên các đƣơng cong Elliptic
Hầ u hế t ca
́
c sa
̉
n phẩ m va
̀
ca
́
c chuẩ n sƣ
̉
dụ ng ca
́
c hệ ma
̃
kho
́
a công khai để ma
̃
ho
́
a
va chữ ky điên tử hiên nay đều sử dung hệ ma
̃
RSA . Tuy nhiên vơ
́
i sƣ̣ pha
́
t triể n cu
̉
a
nganh tham ma va năng lưc ngay cang tăng nhanh chóng cua cac hê thông may tinh , độ
dai khóa đê đam bao an toan cho hê ma RSA cung ngay cang tăng nhanh chóng , điề u
nay lam giam đa
́
ng kể hiệ u năng cu
̉
a ca
́
c hệ thố ng sƣ
̉
dụ ng hệ ma
̃
RSA , đặ c biệ t la
̀

́
i
cac ưng dung thƣơng mai điên tử trưc tuyên hay cac hê thông realtime đòi hỏi thơi gian

̉
ly
́
nhanh cho
́
ng . Gầ n đây mộ t hệ ma
̃

́
i đa
̃
xuấ t hiệ n va
̀
có kha năng thay thê cho
RSA, đo
́
la
̀
ca
́
c hệ ma
̃
kho
́
a công khai dƣ̣ a trên ca
́
c đƣơ
̀
ng cong Elliptic – ECC (Elliptic
Curve Cryptography).
Điể m hấ p dẫ n nhấ t cu
̉
a ca
́
c hệ ma
̃
dƣ̣ a trên ca
́
c đƣơ
̀
ng cong Elliptic la
̀
no
́
cho
phep đat đƣơc tinh an toa
̀
n tƣơng đƣơng vơ
́
i RSA trong khi ki
́
ch thƣơ
́
c kho
́
a sƣ
̉
dụ ng lạ i
nhỏ hơn rất nhiều, lam giam sô phep tinh sử dung khi ma hóa, giai ma va do đó đat đƣơc
hiệ u năng va
̀
tố c độ cầ n thiế t . Trên ly
́
thuyế t ti
́
nh an toa
̀
n cu
̉
a ECC không cao bằ ng so vơ
́
i
RSA va
̀
cu
̃
ng kho
́
gia
̉
i thi
́
ch mộ t ca
́
ch dễ hiể u hơn so vơ
́
i RSA hay Diffie -Hellman. Cơ sơ
̉

toan hoc đây đu cua cac hê ma dưa trên đƣơng cong Elliptic vƣơt ra ngoai pham vi cua
tai liêu nay , trong phầ n na
̀
y ch úng ta sẽ chỉ xem xet cac vấn đề cơ ban cua cac đƣơng
cong Elliptic va
̀
ca
́
c hệ ma
̃
ECC.
Chƣơng IV: Các hê ma mât khoa công khai
86
3.4.1. Nhom Abel
Nhóm Abel G, thƣơ
̀
ng đƣợ c ky
́
hiệ u la
̀
{G, •} la môt tâp hơp vơi môt phep toan hai
ngôi ky
́
hiệ u la
̀
•, kế t qu
̉
a thƣ̣ c hiệ n cua phep toan vơi hai phân tử a, b e G, ky hiêu la (a •
b) cung la môt phân tử thuôc G, tinh chất nay goi la đóng đôi vơi tâp G. Đôi vơi phep toan
• ca
́
c mệ nh đề sau đề u tho
̉
a ma
̃
n:
(A1): ¬ a, b e G thi
̀
(a • b) eG, tinh đóng (Closure)
(A2): ¬ a, b, c e G thi
̀
a • (b • c) = (a • b) • c, tinh kêt hơp (Associate)
(A3): Tồ n tạ i e e G: e • a = a • e = a ¬ a e G, e đƣợ c gọ i la
̀
phầ n tƣ
̉
đơn vi ̣ cu
̉
a tậ p
G.
(A4): ¬ a e G, luôn - a‟ e G: a • a‟ = a‟ • a = e, a‟ la phân tử nghich đao cua a.
(A5): ¬ a, b e G: a • b = b • a, tinh giao hoan (Commutative).
Rấ t nhiề u ca
́
c hệ ma
̃
kho
́
a công khai dƣ̣ a trên ca
́
c nho
́
m Abel . Chẳ ng hạ n, giao thƣ
́
c
trao đổ i kho
́
a Diffie -Hellman liên quan tơ
́
i việ c nhân ca
́
c c ặp sô nguyên khac không theo
modulo q (nguyên tố ). Cac khóa đƣơc sinh ra bởi phep tinh luy thưa trên nhóm.
Đôi vơi cac hê ma ECC, phep toan công trên cac đƣơng cong Elliptic đƣơc sử dung
la phep toan cơ ban. Phep nhân đƣơc đinh nghĩa la sư lặp lai cua nhiều phep công : a x k
= (a + a + … + a). Việ c tha
́
m ma
̃
liên quan tơ
́
i việ c xa
́
c đi ̣ nh gia
́
tri ̣ cu
̉
a k vơ
́
i ca
́
c thông tin
công khai la
̀
a va
̀
(a x k).
Mộ t đƣơ
̀
ng cong Elliptic la
̀
mộ t phƣơng tri
̀
nh vơ
́
i hai biế n va
̀
ca
́
c hệ số . Cac đƣơng
cong sƣ
̉
dụ ng cho ca
́
c hệ ma
̃
mậ t co
́
ca
́
c biế n va
̀
ca
́
c hệ thố ng la
̀
ca
́
c phầ n tƣ
̉
thuộ c về
mộ t trƣơ
̀
ng hƣ
̃
u hạ n, điề u na
̀
y tạ o tha
̀
nh mộ t nho
́
m Abel . Trƣơ
́
c hế t chu
́
ng ta se
̃
xem xe
́
t
cac đƣơng cong Elliptic trên trƣơ
̀
ng số thƣ̣ c.
3.4.2. Các đƣơng cong Elliptic trên trƣơ
̀
ng số thƣ̣ c
Cac đƣơng cong Elliptic không phai la cac đƣơng Ellipse . Tên gọ i đƣơ
̀
ng cong
Elliptic đƣợ c đặ t vi
̀
loạ i đƣơ
̀
ng cong na
̀
y đƣợ c mô ta
̉

̉
i ca
́
c phƣơng tri
̀
nh bậ c ba, tƣơng
tƣ̣ nhƣ ca
́
c phƣơng tri
̀
nh đƣợ c du
̀
ng để ti
́
nh chu vi cu
̉
a mộ t Ellipse . Ơ dang chung nhất
phƣơng tri
̀
nh bậ c 3 biể u diễ n mộ t đƣơ
̀
ng cong Elliptic co
́
dạ ng:
y
2
+ axy + by = x
3
+ cx
2
+ dx + e.
Trong đo
́
a, b, c, d, e la
̀
ca
́
c số thƣ̣ c , x va y la cac biên thuôc trƣơng sô thưc . Vơ
́
i
muc đich đê hiêu về cac hê ma ECC chúng ta chỉ xet cac dang đƣơng cong Elliptic có
dang:
y
2
= x
3
+ ax + y (phƣơng tri
̀
nh 1)
Cac phƣơng trình nay đƣơc goi la cac phƣơng trình bâc ba, trên ca
́
c đƣơ
̀
ng cong
Elliptic chu
́
ng ta đi ̣ nh nghi
̃
a mộ t điể m đặ c biệ t gọ i la
̀
điể m O hay điể m tạ i vô cu
̀
ng (point at
infinity). Để ve
̃
đƣơ
̀
ng cong Elliptic chu
́
ng ta cầ n ti
́
nh ca
́
c gia
́
tri ̣ theo phƣơng tri
̀
nh:
3
y x ax b = + +

́
i mỗ i gia
́
tri ̣ cụ thể cu
̉
a a va
̀
b , sẽ cho chúng ta hai gia tri cua y (mộ t âm va
̀
mộ t
dƣơng) tƣơng ƣ
́
ng vơ
́
i mộ t gia
́
tri ̣ cu
̉
a x , cac đƣơng cong dang nay luôn đôi xưng qua
đƣơ
̀
ng thẳ ng y = 0. Vi du về hình anh cua môt đƣơng cong Elliptic:
Chƣơng IV: Các hê ma mât khoa công khai
87

Hình 4.4: Cac đƣơng cong Elliptic trên trƣơng sô thưc
Chúng ta xem xet tâp điêm E (a, b) chƣ
́
a tấ t ca
̉
cac điêm (x, y) thỏa man phƣơng
trình 1, cùng vơi điêm O. Sƣ
̉
dụ ng ca
́
c cặ p (a, b) khac nhau chu
́
ng ta co
́
ca
́
c tậ p E (a, b)
khac nhau. Sƣ
̉
dụ ng ky
́
hiệ u na
̀
y ta co
́
hi
̀
nh ve
̃
minh họ a trên la
̀
biể u diễ n cu
̉
a hai tậ p hợ p
E(1, 0) va E(1, 1) tƣơng ƣ
́
ng.
3.4.3. Mô ta
̉
hi
̀
nh họ c cu
̉
a phe
́
p cộ ng trên ca
́
c đƣơ
̀
ng cong Elliptic

́
i mỗ i cặ p (a, b) cu thê chúng ta có thê thanh lâp môt nhóm trên tâp E (a, b) vơ
́
i
cac điều kiên sau:
3 2
4 27 0 a b + = (điề u kiệ n 1).
Chƣơng IV: Các hê ma mât khoa công khai
88

́
i điề u kiệ n bổ sung na
̀
y ta đi ̣ nh nghi
̃
a phe
́
p cộ ng trên đƣơ
̀
ng cong Elliptic , mô ta
̉

về mặ t hi
̀
nh họ c nhƣ sau: nế u ba điể m trên mộ t đƣơ
̀
ng cong Elliptic tạ o tha
̀
nh mộ t đƣơ
̀
ng
thẳ ng thi
̀
tổ ng cu
̉
a chu
́
ng bằ ng O. Vơ
́
i đi ̣ nh nghi
̃
a na
̀
y ca
́
c luậ t cu
̉
a phe
́
p cộ ng trên đƣơ
̀
ng
cong Elliptic nhƣ sau:
1. O la phân tử trung hòa cua phep công. ¬ P e E(a, b): P + O= P. Trong ca
́
c
mệ nh đề sau chu
́
ng ta gia
̉

̉
P, Q ≠ O.
2. P = (x, y) thì phân tử đôi cua P, ky hiêu la P, sẽ la (x, -y) va P + (P) = P P =
O. P va
̀
P nằ m trên mộ t đƣơ
̀
ng thẳ ng đƣ
́
ng
3. Để cộ ng hai điể m P va
̀
Q không co
́
cùng hoang đô x, vẽ môt đƣơng thăng
nố i chu
́
ng va
̀
ti
̀
m giao điể m R. Dễ da
̀
ng nhậ n thấ y chi
̉
co
́
mộ t điể m R nhƣ vậ y , tổ ng cu
̉
a P
va Q la điêm đôi xưng vơi R qua đƣơng thăng y = 0.
4. Giao điể m cu
̉
a đƣơ
̀
ng thẳ ng nố i P vơ
́
i đố i cu
̉
a P, tƣ
́
c P, đƣợ c xem nhƣ cắ t
đƣơ
̀
ng cong tạ i điể m vô cƣ̣ c va
̀
đo
́
chi
́
nh la
̀
O.
5. Để nhân đôi mộ t điể m Q, ta ve
̃
mộ t tiế p tuyế n tạ i Q vơ
́
i đƣơ
̀
ng cong va
̀
ti
̀
m
giao điể m S: Q + Q = 2Q = S.

́
i 5 điề u kiệ n na
̀
y E(a, b) la môt nhóm Abel.
3.4.4. Mô ta
̉
đạ i sô về phep công
Trong phầ n na
̀
y chu
́
ng ta se
̃
tri
̀
nh ba
̀
y mộ t số kế t qua
̉
cho phe
́
p ti
́
nh toa
́
n trên ca
́
c
đƣơ
̀
ng cong Elliptic. Vơ
́
i hai điể m phân biệ t P = (x
P
, y
P
) va Q = (x
Q
, y
Q
) không pha
̉
i la
̀
đố i
cua nhau, độ dố c cu
̉
a đƣơ
̀
ng nố i l giƣ
̃
a chu
́
ng la
̀
Ä = (y
Q
, y
P
). Có chinh xac môt điêm
khac ma l giao vơi đƣơng cong , va đó chinh la đôi cua tông giữa P va Q . Sau mộ t số
phep toan đai sô chúng ta có thê tinh ra R = P + Q nhƣ sau:
2
R P Q
x y x = A ÷ ÷
( )
R P P R
y y x y = ÷ +A ÷
Phep toan nhân đôi đôi vơi P đƣơc tinh nhƣ sau:
2
2
3
( ) 2
2
P
R P
P
x a
x x
y
+
= ÷
2
3
( )( )
2
P
R P R P
P
x a
y x x y
y
+
= ÷ ÷
3.4.5. Các đƣơng cong Elliptic trên Z
P
Cac hê ma ECC sử dung cac đƣơng cong Elliptic vơi cac biên va cac hê sô giơi han
thuộ c về mộ t trƣơ
̀
ng hƣ
̃
u hạ n . Có hai ho cac đƣơng cong Elliptic có thê sử dung vơi cac
hệ ma
̃
ECC: cac đƣơng cong nguyên tô trên Z
P
va cac đƣơng cong nhi phân trên GF(2
m
).
Mộ t đƣơ
̀
ng cong nguyên tố trên Z
P
, chúng ta sử dung phƣơng trình bâc ba ma cac biên
va cac hê sô cua nó đều la cac gia tri nguyên năm tư 0 tơ
́
i p-1 va cac phep tinh đƣơc
thƣ̣ c hiệ n theo modulo P. Trên đƣơ
̀
ng cong nhi ̣ phân, cac biên va cac hê sô la cac gia tri
trên GF(2
n
). va cac tinh toan đƣơc thưc hiên trên GF (2
n
). Cac nghiên cưu về ly thuyêt đa
cho thấ y ca
́
c đƣơ
̀
ng cong nguyên tố la
̀
phu
̀
hợ p nhấ t cho ca
́
c ƣ
́
ng dụ ng phầ n mề m vi
̀

nhƣ
̃
ng phƣ
́
c tạ p trong ti
́
nh toa
́
n đố i vơ
́
i ca
́
c đƣơ
̀
ng cong nhi ̣ phân, nhƣng đố i vơ
́
i ca
́
c ƣ
́
ng
dung phân cưng thì viêc sử dung cac đƣơng cong nhi phân lai tôt hơn vì cơ chê lam viêc
cua cac mach, cac con chip rất phù hơp vơi cac tinh toan trên trƣơng nhi phân.
Chƣơng IV: Các hê ma mât khoa công khai
89

́
i ca
́
c đƣơ
̀
ng cong Elliptic trên Z
P
chúng ta đinh nghĩa lai phƣơng trình biêu diên
nhƣ sau:
y
2
mod p = (x
3
+ ax + y) mod p. (phƣơng tri
̀
nh 2)
Chẳ ng hạ n ca
́
c gia
́
tri ̣ a = 1, b = 1, x = 9, y = 9, y = 7, p = 23 thỏa man phƣơng trình
trên.
Cac gia tri hê số a, b va
̀
ca
́
c biế n số x , y đề u thuộ c Z
P
. Tậ p E
P
(a, b) gồ m tấ t ca
̉
ca
́
c
cặ p (x, y) thỏa man phƣơng trình phƣơng trình 2.
Vi du vơi p = 23, a = b = 1, ta co
́
tậ p E
23
(1, 1):
(0, 1) (6, 4) (12, 19)
(0, 22) (6, 19) (13, 7)
(1, 7) (7, 11) (13, 16)
(1, 16) (7, 12) (17, 3)
(3, 10) (9, 7) (17, 20)
(3, 13) (9, 16) (18, 3)
(4, 0) (11, 3) (18, 20)
(5, 4) (11, 20) (19, 5)
(5, 19) (12, 4) (19, 18)

Bang 4.2: Biể u diễ n cu
̉
a tậ p E23(1, 1)
Chƣơng IV: Các hê ma mât khoa công khai
90
Cac qui tăc về phep công cung đƣơc đinh nghĩa tƣơng tư đôi vơi cac đƣơng cong
Elliptic nguyên tố :
Điề u kiệ n: (4a
3
+ 27b
2
) mod p ≠ 0.
1. P + O = P
2. Nế u P = (x
P
, y
P
) thì P +(x
P
, y
P
) = O, điể m (x
P
, y
P
) đƣợ c gọ i la
̀
đố i cu
̉
a P, ky
hiệ u la
̀
P. Chẳ ng hạ n trên E
23
(1, 1), P = (13, 7) ta co
́
P = (13, 7) nhƣng 7 mod 23 = 16 nên
P = (13, 16), cung thuôc E
23
(1, 1).
3. Vơ
́
i hai điể m phân biệ t P = (x
P
, y
P
) va Q = (x
Q
, y
Q
), R = P + Q = (x
R
, y
R
)
đƣợ c đi ̣ nh nghi
̃
a nhƣ sau:
2
( ) mod
( ( ) ) mod
R P Q
R P R P
x x x p
y x x y p
ì
ì
= ÷ ÷
= ÷ ÷

Trong đo
́
:
2
( ) mod , ( )
3
( ) mod , () )
2
Q P
Q P
P
P
y y
p P Q
x x
x a
p p Q
y
ì
÷ ¦
=
¦
÷
¦
=
´
+
¦
=
¦
¹

4. Phep nhân đƣơc đinh nghĩa la tông cua cac phep công , chẳ ng hạ n 4P = P
+ P + P + P. Vi du vơi P = (3, 10) va Q = (9, 7) trên E
23
(1, 1) ta co
́
:
7 10 3 1
( ) mod23 ( ) mod23 ( ) mod23 11
9 3 6 2
ì
÷ ÷ ÷
= = = =
÷
nên
x
R
= (11
2
- 3 - 9 ) mod 23 = 17
y
R
= (11(3 - 17) - 10) mod 23 = 20. Nên P + Q = (17, 20).
Để ti
̀
m 2P ta ti
́
nh:
2
3(3 ) 1 5 1
( ) mod23 ( ) mod23 ( ) mod23 6
2 10 20 4
ì
+
= = = =
×

Chú y la đê thưc hiên phep tinh cuôi cùng ta lấy phân tử nghich đao cua 4 trên Z
23

sau đo
́
nhân vơ
́
i tƣ
̉
số la
̀
1.
x
R
=(6
2
(3 - 7) - 10) mod 23 = 30 mod 23 = 7
y
R
= (6(3 - 7) - 10) mod 23 = 34 mod 23 = 12
Kế t luậ n: 2P = (7, 12).
Để xa
́
c đi ̣ nh độ an toa
̀
n cu
̉
a ca
́
c hệ ma
̃
mậ t dƣ̣ a trên ca
́
c đƣơ
̀
ng cong Elliptic , ngƣơ
̀
i
ta thƣơ
̀
ng dƣ̣ a trên mộ t con số la
̀
số phầ n điể m trên mộ t nho
́
m Abel hƣ
̃
u hạ n , goi la N,
đƣợ c đi ̣ nh nghi
̃
a trên mộ t đƣơ
̀
ng cong Elliptic . Trong trƣơ
̀
ng hợ p nho
́
m hƣ
̃
u hạ n E
P
(a, b),
ta co
́
ca
́
c cậ n cu
̉
a N la
̀
:
1 2 1 2 p p N p p + ÷ s s + + , con số na
̀
y xấ p xi
̉
bằ ng số phầ n tƣ
̉
cu
̉
a Z
P
(bằ ng p).
3.4.6. Các đƣơng cong Elliptic dưa trên các trƣơng hữu han GF(2
m
)
Số phầ n tƣ
̉
cu
̉
a trƣơ
̀
ng hƣ
̃
u hạ n GF (2
m
) la 2
m
, cac phep toan đƣơc trang bi trên
GF(2
m
) la phep toan công va phep toan nhân đƣơc thưc hiên vơi cac đa thưc . Đôi vơi cac
đƣơ
̀
ng cong Elliptic dƣ̣ a trên GF(2
m
), chúng ta sử dung môt phƣơng trình bâc ba vơi cac
biế n va
̀
ca
́
c tham số co
́
gia
́
tri ̣ thuộ c GF (2
m
), cac phep tinh đƣơc thưc hiên tuân theo cac
phep toan trên GF(2
m
).
1. Phƣơng tri
̀
nh biể u diễ n
Chƣơng IV: Các hê ma mât khoa công khai
91
So vơ
́
i ca
́
c hệ ma
̃
mậ t dƣ̣ a trên ca
́
c đƣơ
̀
ng cong trên Z
P
, dang biêu diên cua cac hê
ma dưa trên GF(2
m
) tƣơng đố i kha
́
c:
y
2
+ xy = x
3
+ ax
2
+ b (phƣơng tri
̀
nh 3)
Trong đo
́
ca
́
c biế n x, y va
̀
ca
́
c hệ số a, b la
̀
ca
́
c phầ n tƣ
̉
cu
̉
a GF(2
m
) va cac phep tinh
toan đƣơc thưc hiên tuân theo cac qui tăc trên GF(2
m
).
Chúng ta ky hiêu E
2
m
(a, b) la tất ca cac cặp sô nguyên (x, y) thỏa man phƣơng trình
phƣơng tri
̀
nh 3 va điêm vô cùng O.
Vi du: chúng ta có thê sử dung GF(2
4
) vơ
́
i đa thƣ
́
c bấ t kha
̉
qui f(x) = x
4
+ x + 1. Phầ n

̉
sinh cu
̉
a GF(2
4
) la g thỏa man f(g) = 0, g
4
= g + 1, hay ơ
̉
dạ ng nhi ̣ phân la
̀
0010. Chúng
ta co
́
ba
̉
ng lu
̃
y thƣ
̀
a cu
̉
a g nhƣ sau:
g0 = 0001 g4 = 0011 g8 = 0101 g12 = 1111
g1 = 0010 g5 = 0110 g9 = 1010 g13 = 1101
g2 = 0100 g6 = 1100 g10 = 0111 g14 = 1001
g3 = 1000 g7 = 1011 g11 = 1110 g15 = 0001
Chẳ ng hạ n g
5
= g
4
g = (g+1)g = g
2
+ g = 0110.
Xet đƣơng cong Elliptic y
2
+ xy = x
3
+ g
4
x
2
+ 1, trong trƣơ
̀
ng hợ p na
̀
y a = g
4
va b =
g
0
= 1. Mộ t điể m nằ m trên đƣơ
̀
ng cong la
̀
(g
5
, g
3
):
(g
3
)
2
+ (g
5
)(g
3
) = (g
5
)
3
+ (g
4
)(g
5
)
2
+ 1
 g
6
+ g
8
= g
15
+ g
14
+ 1
 1100 + 0101 = 0001 + 1001 + 0001
 1001 = 1001
Bang sau la cac điêm trên E
2
4
(g
4
, 1):
(0, 1) (g
5
, g
3
) (g
9
, g
13
)
(1, g
6
) (g
5
, g
11
) (g
10
, g)
(1, g
13
) g
6
, g
8
) (g
10
, g
8
)
(g
3
, g
8
) (g
6
, g
14
) (g
12
,0)
(g
3
, g
13
) (g
9
, g
10
) (g
12
, g
12
)
Hình biêu diên tƣơng đƣơng:
Chƣơng IV: Các hê ma mât khoa công khai
92

Hình 4.5: Hình biêu diên E
2
4
(g
4
, 1)
Mộ t nho
́
m Abel co
́
thể đi ̣ nh nghi
̃
a dƣ̣ a trên E
2
m
(a, b) vơ
́
i điề u kiệ n b≠0. Cac luât thưc
hiệ n vơ
́
i phe
́
p cộ ng, ¬ a, b eE
2
m
(a, b):
1. P + O = P
2. Nế u P = (x
P
, y
P
) thì P + (x
P
, x
P
+ y
P
) = O. Điể m (x
P
, x
P
+ y
P
) la điêm đôi cua
P, ky hiêu la P.
3. Nế u P = (x
P
, y
P
) va Q = (x
Q
, y
Q
) va P≠Q, P≠Q thì R = P + Q = (x
R
, y
R
) đƣợ c
xac đinh băng cac công thưc sau:
2
( )
R
R


P Q
P R R P
x x x a
y x x x y a
ì ì
ì
= + + + +
= + + + +

Trong đo
́
:
Q P
Q P
y y
x x
ì
+
=
+

4. Nế u P = (x
P
, y
P
) thì R = 2P = (x
R
, y
R
) đƣợ c xa
́
c đi ̣ nh bằ ng ca
́
c công thƣ
́
c
sau:
2
2
( 1)
R
R


P R
x a
y x x
ì ì
ì
= + +
= + +

Trong đo
́
:
P
P
P
y
x
x
ì = +
Chƣơng IV: Các hê ma mât khoa công khai
93
3.4.7. Hệ ma
̃
mậ t dƣ̣ a trên ca
́
c đƣơ
̀
ng cong Elliptic
Phep toan công trên đƣơng cong Elliptic tƣơng ưng vơi phep nhân theo modulo
trong hệ ma
̃
RSA , còn phep toan nhân (cộ ng nhiề u lầ n ) trên đƣơ
̀
ng cong Ellipti c tƣơng
ưng vơi phep luy thưa theo modulo trong hê ma RSA . Tƣơng tƣ̣ nhƣ ba
̀
i toa
́
n cơ sơ
̉
cu
̉
a
hệ ma
̃
RSA la
̀
ba
̀
i toa
́
n phân ti
́
ch ra dạ ng thƣ
̀
a số nguyên tố cu
̉
a mộ t số nguyên lơ
́
n , cac
hệ ma
̃
dƣ̣ a trên ca
́
c đƣơ
̀
ng cong Elliptic cu
̃
ng co
́
cac bai toan cơ sở la môt bai toan khó
giai, goi la bai toan Logarithm trên đƣơng cong Elliptic:
Xet phƣơng trình Q = kP trong đo
́
P, Q e E
P
(a, b) va k < p. Việ c ti
́
nh Q nế u biế t P va
̀

k la
̀
mộ t ba
̀
i toa
́
n dễ (thƣ̣ c hiệ n theo ca
́
c công thƣ
́
c). Nhƣng việ c xa
́
c đi ̣ nh k vơ
́
i gia
́
tri ̣ P, Q
cho trƣơ
́
c lạ i la
̀
ba
̀
i toa
́
n kho
́
.
Chúng ta xem xet vi du (Certicom Website www.certicom.com): E
23
(9, 17) đƣợ c xa
́
c
đi ̣ nh bơ
̉
i phƣơng tri
̀
nh y
2
mod 23 = (x
3
+ 9x + 17) mod 23.

́
i Q = (4, 5) va P = (16, 5) thì k thỏa man Q = kP se
̃
bằ ng bao nhiêu ? Phƣơng
phap đơn gian nhất la nhân P lên nhiều lân cho tơi khi băng Q:
P = (16, 5), 2P = (20, 20), 3P = P = (16, 5); 2P = (20, 20); 3P = (14, 14); 4P = (19,
20); 5P = (13, 10); 6P = (7, 3); 7P = (8, 7); 8P (12, 17); 9P = (4, 5).
Nhƣ vậ y k = 9. Trên thƣ̣ c tế ca
́
c hệ ma
̃
se
̃
đa
̉
m ba
̉
o gia
́
tri ̣ k la
̀
đu
̉

́
n để phƣơng
phap vet can nhƣ trên la không thê thưc hiên đƣơc.
3.4.8. Phƣơng pha
́
p trao đổ i kho
́
a Diffie-Hellman dƣ̣ a trên ca
́
c đƣơ
̀
ng cong Elliptic
Ban đầ u ngƣơ
̀
i ta chọ n mộ t số nguyên lơ
́
n q , có thê la môt sô nguyên tô p hay có
dang 2
m
tƣơng ƣ
́
ng vơ
́
i ca
́
c phƣơng tri
̀
nh biể u diễ n va
̀
ca
́
c tham số a , b. Việ c lƣ̣ a chọ n
nay cho chúng ta tâp hơp E
q
(a, b). Tiế p theo chọ n mộ t điể m G = (x
1
, y
1
) e E
P
(a, b) có bâc
n rấ t lơ
́
n, bậ c n cu
̉
a điể m G la
̀
số nguyên nho
̉
nhấ t tho
̉
a ma
̃
n nG = O. E
q
(a, b) va G la cac
tham số công khai cho hệ ma
̃
mậ t dƣ̣ a trên đƣơ
̀
ng cong Elliptic tƣơng ƣ
́
ng vơ
́
i ca
́
c tham
số p, a, b.
Phƣơng pha
́
p trao đổ i kho
́
a giƣ
̃
a hai ngƣơ
̀
i du
̀
ng A va
̀
B co
́
thể thƣ̣ c hiệ n nhƣ sau:
1. A chọ n mộ t số nguyên n
A
nhỏ hơn n. Đo
́
chi
́
nh la
̀
kho
́
a riêng cu
̉
a A. Sau đo
́

sinh kho
́
a công khai P
A
= n
A
x G, khóa nay la môt điêm trên E
q
(a, b).
2. Tƣơng tƣ̣ B cu
̃
ng chọ n mộ t kho
́
a riêng n
B
va tinh khóa công khai P
B
.
3. A sinh mộ t kho
́
a bi
́
mậ t K = n
A
x P
B
. B sinh kho
́
a bi
́
mậ t K = n
B
x P
A
.
Dễ da
̀
ng kiể m chƣ
́
ng ca
́
c kho
́
a bi
́
mậ t cu
̉
a A va
̀
B tinh đƣơc đều băng nhau: n
A
x P
B

= n
A
x (n
B
x G) = n
B
x (n
A
x G) = n
B
x P
A
.
Hình minh hoa cac bƣơc:
Chƣơng IV: Các hê ma mât khoa công khai
94

Hình 4.6: Phƣơng pha
́
p trao đổ i kho
́
a Diffie-Hellman dƣ̣ a trên ECC
Để tấ n công phƣơng pha
́
p trao đổ i kho
́
a trên , ke tấn công cân phai tinh đƣơc gia tri
k vơ
́
i ca
́
c gia
́
tri ̣ công khai la
̀
G va
̀
kG, va đây chinh la bai toan Logarithm trên đƣơng cong
Elliptic, mộ t ba
̀
i toa
́
n kho
́
.
Vi du: p = 211, E
211
(0, 4) tƣơng ƣ
́
ng vơ
́
i phƣơng tri
̀
nh biể u diễ n y
2
= x
3
+ 4, ta chọ n
G = (2, 2). Do 240G = O nên n = 240. A chọ n kho
́
a riêng la
̀
n
A
= 121, khóa công khai
tƣơng ƣ
́
ng cu
̉
a A se
̃
la
̀
P
A
= 121(2, 2) = (115, 48). Khóa riêng cua B la n
B
= 203 nên kho
́
a
công khai cu
̀
a B la
̀
P
B
= 203(2, 2) = ( 130, 203). Khóa bi
́
mậ t (chia se
̉
) giƣ
̃
a A va
̀
B la
̀

121(130, 203) = 203(115, 48) = (161, 69).
3.4.9. Thuậ t toa
́
n ma
̃
ho
́
a va
̀
gia
̉
i ma
̃

Có nhiều cach ma hóa /giai ma đa đƣơc nghiên cưu vơi cac hê ma trên cac đƣơng
cong Elliptic, ở đây chúng ta sẽ xem xe
́
t ca
́
ch đơn gia
̉
n nhấ t . Thuậ t toa
́
n ma
̃
ho
́
a ban đầ u
sẽ thưc hiên phep biên đôi tiền xử ly tư input la môt ban rõ m thanh dang môt điêm P
m
.
Điể m P
m
sẽ đƣơc ma hóa thanh ban ma va sau đó giai ma . Thƣ̣ c chấ t việ c tiề n xƣ
̉
ly
́
na
̀
y
không đơn gia
̉
n vi
̀
không pha
̉
i tấ t ca
̉
ca
́
c tọ a độ co
́
dạ ng (x, y) đều thuôc E
P
(a, b). Có
Chƣơng IV: Các hê ma mât khoa công khai
95
nhiề u ca
́
ch kha
́
c nhau cho việ c tiề n xƣ
̉
ly
́
na
̀
y , chúng ta không ban ky tơi chúng ở đây
nhƣng thƣ̣ c tế la
̀
co
́
mộ t va
̀
i ca
́
ch dễ hiể u để thƣ̣ c hiệ n việ c đo
́
.
Giố ng nhƣ đố i vơ
́
i hệ trao đổ i kho
́
a , chúng ta cân môt điêm G va môt nhóm Elliptic
E
q
(a, b) lam tham sô . Mỗ i ngƣơ
̀
i du
̀
ng A lƣ̣ a chọ n mộ t kho
́
a riêng n
A
va sinh môt khóa
công khai P
A
= n
A
x G.
Để ma
̃
ho
́
a mộ t thông điệ p P
m
đê gửi tơi cho B , A se
̃
chọ n mộ t số nguyên dƣơng
ngẫ u nhiên k va
̀
sinh ba
̉
n ma
̃
C
m
gồ m mộ t cặ p điể m:
C
m
= {kG, P
m
+ kP
B
}.
Chú y la ở đây A sử dung khóa công khai cua B . Để gia
̉
i ma
̃
ba
̉
n ma
̃
, B se
̃
nhân
điể m thƣ
́
nhấ t vơ
́
i kho
́
a bi
́
mậ t cu
̉
a B va
̀
lấ y kế t qua
̉
nhậ n đƣợ c trƣ
̀
đi điể m thƣ
́
hai:
P
m
+ kP
B
n
B
(kG) = P
m
+ k(n
B
G) n
B
(kG) = P
m
.
A đa
̃
che đi gia
́
tri ̣ cu
̉
a P
m
bằ ng ca
́
ch cộ ng kP
B
vao P
m
. Chỉ có duy nhất A biêt gia tri
k, nên thậ m chi
́
biế t kh óa công khai P
B
, không ai co
́
thể loạ i bo
̉
mặ t nạ kP
B
đê tìm ra P
m
.
Tuy nhiên gia
́
tri ̣ cu
̉
a C
m
cung gôm môt đâu môi đê B (ngƣơ
̀
i duy nhấ t giƣ
̃
kho
́
a riêng n
B
)
có thê dưa vao đâu môi đó ma tìm ra P
m
.
Vi du: p = 751, E
P
(1, 188) tƣơng ƣ
́
ng vơ
́
i phƣơng tri
̀
nh y
2
= x
3
+ x + 188, G = (0,
376). Gia sử A muôn gửi môt thông điêp tƣơng ưng vơi P
m
= (562, 201) va A lưa chon k =
386, khóa công khai cua B la P
B
= (201, 5). Chúng ta có 386(0, 376) = (676, 558) va (562,
201) + 386(201, 5) = (385, 328). Ban ma sẽ la C
m
= {(676, 558), (385, 328)}.
3.4.10. Đô an toan cua các hê ma mât dưa trên các đƣơng cong Elliptic
Đô an toan cua cac hê ma ECC phu thuôc vao viêc xac đinh đƣơc gia tri cua k dưa
trên cac gia tri kP va P. Bai toan nay đƣơc goi la bai toan Logarithm trên cac đƣơng cong
Elliptic. Thuậ t toa
́
n nhanh nhấ t để gia
̉
i ba
̀
i toa
́
n na
̀
y la
̀
thuậ t toa
́
n cu
̉
a Pollard . Bang sau
cho chu
́
ng ta sƣ̣ so sa
́
nh tƣơng quan giƣ
̃
a ca
́
c hệ ma
̃
:
Symmetric Scheme
(key size in bits)
ECC-Based Scheme
(size of n in bits)
RSA/DSA (modulus
size in bits)
56 112 512
80 160 1024
112 224 2048
128 256 3072
92 384 7680
256 512 15360
Nguồ n: Certicom
Bang 4.3: Bang so sanh cac hê ma ECC vơi hê ma RSA
Chƣơng IV: Các hê ma mât khoa công khai
96
Có thê thấy la so vơi RSA , cac hê ma ECC có ƣu thê hơn về đô dai khóa sử dung ,
đặ c biệ t la
̀
khi chu
́
ng ta sƣ
̉
dụ ng ca
́
c kho
́
a co
́
độ da
̀
i nho
̉
thi
̀
ECC co
̀
n co
́
ƣu thế về tố c độ
(số phe
́
p ti
́
nh) xƣ
̉
ly
́
trong ma
̃
ho
́
a va
̀
gia
̉
i ma
̃
.
4. Bai tâp
Bai tâp 4.1: Cho N = 1517. Hãy tính 13
1435
mod N.
Bai tâp 4.2: Trong hê ma RSA có N = p * q = 103 * (2
19
– 1) thì có thê sử dung tôi đa la
bao nhiêu gia tri cua e đê lam khóa ma hóa, giai thich.
Bai tâp 4.3: Trong hê ma RSA có N = p*q = 103 * 113 sẽ có bao nhiêu trƣơng hơp lô ban
rõ.
Bai tâp 4.4: Trong hê chữ ky điên tử ElGamma có p = 2
31
– 1 khi ky lên môt văn ban có
thê sử dung tôi đa bao nhiêu gia tri k, giai thich.
Bai tâp 4.5: Cho hê ma ElGamma có p = 31, a = 11 va x = 6. Đê ma hóa M = 18 ngƣơi ta
chon k = 7. Hay thưc hiên tinh toan va đƣa ra ban ma kêt qua.
Bai tâp 4.6: Cho hê RSA có n = 1363, biêt phi(n) = 1288 hay ma hóa ban rõ M = 2007.
Bai tâp 4.7: Tƣơng tư Câu 1 vơi n = 215629 và phi(n) = 214684 hay giai ma ban ma M =
2007.
Bai tậ p 4.8: Gia sử có 4 tô chưc sử dung 4 hê ma RSA đê truyền thông vơi nhau. Goi N
1
,
N
2
, N
3
, N
4
lân lƣơt la cac tham sô tƣơng ưng ma ho sử dung va (N
i
, N
j
) = 1 ¬ i = j và i, j e
Z
5
/{0}. Ca bôn hê RSA nay đều có sô mu lâp ma la e = 3. Môt thông điêp m sau khi ma
hóa băng 4 hê ma trên nhân đƣơc 4 ban ma tƣơng ưng la C
1
, C
2
, C
3
, C
4
. Hãy tìm m.
Bai tâp 4.9: Cho hê ma Knapsack có A = {11, 15, 30, 60}, M = 150 va u = 77.
a) Hãy tìm khóa công khai K
P
, và khóa bi mât K
S
cua hê ma trên.
b) Đê ma hóa cac thông điêp viêt băng tiêng Anh ngƣơi ta dùng môt ham chuyên
đôi tư cac ky tư thanh cac xâu nhi phân nhƣ sau:
Ky tư Xâu bít Ky tư Xâu bít Ky tư Xâu bít Ky tư Xâu bít
A 00000 H 00111 O 01110 V 10101
B 00001 I 01000 P 01111 W 10110
C 00010 J 01001 Q 10000 X 10111
D 00011 K 01010 R 10001 Y 11000
E 00100 L 01011 S 10010 Z 11001
F 00101 M 01100 T 10011
G 00110 N 01101 U 10100
Khi đó vi du xâu ABCD sẽ đƣơc chuyên thanh 00000 00001 00010 00011 va căt
thanh cac xâu có đô dai 4 đê thưc hiên ma hóa. Kêt qua thu đƣơc ban ma la môt day cac
sô e Z
M
. Hay thưc hiên ma hóa xâu P = “ANTI”.
c) Gia sử ban ma thu đƣơc la C = <120, 105, 105, 0, 60, 75, 30, 22, 22, 30>. Hãy
thưc hiên giai ma ban ma trên đê thu đƣơc thông điêp ban đâu.
Bai tâp 4.10: Cho hê ma Knapsack có A = {7, 13, 31, 53}, M = 173 va u = 97.
a) Hãy tìm khóa công khai K
P
, va khóa bi mât K
S
cua hê ma trên.
Chƣơng IV: Các hê ma mât khoa công khai
97
b) Đê ma hóa cac thông điêp viêt băng tiêng Anh ngƣơi ta dùng môt ham chuyên
đôi tư cac ky tư thanh cac xâu nhi phân nhƣ sau:
Ky tư Xâu bít Ky tư Xâu bít Ky tư Xâu bít Ky tư Xâu bít
A 00000 H 00111 O 01110 V 10101
B 00001 I 01000 P 01111 W 10110
C 00010 J 01001 Q 10000 X 10111
D 00011 K 01010 R 10001 Y 11000
E 00100 L 01011 S 10010 Z 11001
F 00101 M 01100 T 10011
G 00110 N 01101 U 10100

Khi đó vi du xâu ABCD sẽ đƣơc chuyên thanh 00000 00001 00010 00011 va căt
thanh cac xâu có đô dai 4 đê thưc hiên ma hóa. Kêt qua thu đƣơc ban ma la môt day cac
sô e Z
M
. Hay thưc hiên ma hóa xâu P = “AUNT”.
c) Gia sử ban ma thu đƣơc la C = < 67,160, 66, 66, 0, 116, 4, 111, 0, 17>. Hãy
thưc hiên giai ma ban ma trên đê thu đƣơc thông điêp ban đâu.
Bai tâp 4.11: Cho hê ma Knapsack có A = {2, 3, 7, 13, 29, 57}, M = 151 va u = 71.
a) Hãy tìm khóa công khai K
P
, va khóa bi mât K
S
cua hê ma trên.
b) Đê ma hóa cac thông điêp viêt băng tiêng Anh ngƣơi ta dùng môt ham chuyên
đôi tư cac ky tư thanh cac xâu nhi phân nhƣ sau:
Ky tư Xâu bít Ky tư Xâu bít Ky tư Xâu bít Ky tư Xâu bít
A 00000 H 00111 O 01110 V 10101
B 00001 I 01000 P 01111 W 10110
C 00010 J 01001 Q 10000 X 10111
D 00011 K 01010 R 10001 Y 11000
E 00100 L 01011 S 10010 Z 11001
F 00101 M 01100 T 10011
G 00110 N 01101 U 10100

Khi đó vi du xâu ABCDEF sẽ đƣơc chuyên thanh 00000 00001 00010 00011
00100 00101 va căt thanh cac xâu có đô dai 6 đê thưc hiên ma hóa. Kêt qua thu đƣơc
ban ma la môt day cac sô e Z
M
. Hay thưc hiên ma hóa xâu P = “ANSWER”.
c) Gia sử ban ma thu đƣơc la C = <44, 40, 121, 104, 0>. Hay thưc hiên giai ma
ban ma trên đê thu đƣơc thông điêp ban đâu.
Bai tâp 4.12: Cho hê ma RSA có p = 31, q = 41, e = 271.
a) Hãy tìm khóa công khai K
P
, va khóa bi mât K
S
cua hê ma trên.
b) Đê ma hóa cac thông điêp đƣơc viêt băng tiêng Anh ngƣơi ta dùng môt ham
chuyên đôi cac ky tư thanh cac sô thâp phân có hai chữ sô nhƣ sau:
Ky tư A B C D E F G H I J K L M
Mã hóa 00 01 02 03 04 05 06 07 08 09 10 11 12
Ky tư N O P Q R S T U V W X Y Z
Mã hóa 13 14 15 16 17 18 19 20 21 22 23 24 25

Chƣơng IV: Các hê ma mât khoa công khai
98
Khi đó vi du xâu ABC sẽ đƣơc chuyên thanh 00 01 02 va sau đó căt thanh cac sô
có 3 chữ sô 000 (băng 0) va 102 đê ma hóa. Ban ma thu đƣơc la môt tâp cac sô e Z
N
.
Hay thưc hiên ma hóa xâu P = ”SERIUS”.
c) Gia sử ban ma thu đƣơc la C = <201, 793, 442, 18> hay thưc hiên giai ma đê
tìm ra thông điêp ban rõ ban đâu.
Bai tâp 4.13: Cho hê ma RSA có p = 29, q = 43, e = 11.
a) Hãy tìm khóa công khai K
P
, va khóa bi mât K
S
cua hê ma trên.
b) Đê ma hóa cac thông điêp đƣơc viêt băng tiêng Anh ngƣơi ta dùng môt ham
chuyên đôi cac ky tư thanh cac sô thâp phân có hai chữ sô nhƣ sau:
Ky tư A B C D E F G H I J K L M
Mã hóa 00 01 02 03 04 05 06 07 08 09 10 11 12
Ky tư N O P Q R S T U V W X Y Z
Mã hóa 13 14 15 16 17 18 19 20 21 22 23 24 25

Khi đó vi du xâu ABC sẽ đƣơc chuyên thanh 00 01 02 va sau đó căt thanh cac sô
có 3 chữ sô 000 (băng 0) va 102 đê ma hóa. Ban ma thu đƣơc la môt tâp cac sô e Z
N
.
Hay thưc hiên ma hóa xâu P = ”TAURUS”.
c) Gia sử ban ma thu đƣơc la C = <1, 169, 1206, 433> hay thưc hiên giai ma đê
tìm ra thông điêp ban rõ ban đâu.
Bai tâp 4.14: Cho hê ma RSA có n = 1363, e = 57.
a) Hãy tìm khóa công khai K
P
, va khóa bi mât K
S
cua hê ma trên.
b) Gia sử ban rõ P = 102 hay ma hóa va đƣa ra ban ma C.
c) Gia sử hê ma trên đƣơc dùng lam hê chữ ky điên tử, hay tinh chữ ky vơi thông
điêp M = 201.
Bai tâp 4.15: Cho hê ma ElGamma có p = 83, a = 5 la môt phân tử nguyên thuy cua Z
P
*
,
x = 37.
a) Hãy tìm khóa công khai K
P
, va khóa bi mât K
S
cua hê ma trên.
b) Đê ma hóa ban rõ P = 72 ngƣơi ta chon k = 23, hay ma hóa va đƣa ra ban ma.
c) Hay tìm tất ca cac phân tử nguyên thuy cua Z
P
*
.
Bai tâp 4.16: Cho hê ma mât ElGamma có p = 1187, a = 79 la môt phân tử nguyên thuy
cua Z
P
*
, x = 113.
a) Hãy tìm khóa công khai K
P
, va khóa bi mât K
S
cua hê ma trên.
b) Đê ma hóa cac thông điêp đƣơc viêt băng tiêng Anh ngƣơi ta dùng môt ham
chuyên đôi cac ky tư thanh cac sô thâp phân có hai chữ sô nhƣ sau:
Ky tư A B C D E F G H I J K L M
Mã hóa 00 01 02 03 04 05 06 07 08 09 10 11 12
Ky tư N O P Q R S T U V W X Y Z
Mã hóa 13 14 15 16 17 18 19 20 21 22 23 24 25

Chƣơng IV: Các hê ma mât khoa công khai
99
Khi đó vi du xâu ABC sẽ đƣơc chuyên thanh 00 01 02 va sau đó căt thanh cac sô
có 3 chữ sô 000 (băng 0) va 102 đê ma hóa. Ban ma thu đƣơc la môt tâp cac cặp sô (C1,
C2) e Z
P
. Hay thưc hiên ma hóa xâu m = ”TAURUS” vơi cac gia tri 13 < k < 19.
c) Gia sử thu đƣơc ban ma la môt tâp cac cặp (C1, C2) la <(358, 305), (1079,
283), (608, 925),(786, 391)>. Hay giai ma va đƣa ra thông điêp ban đâu.
Bai tâp 4.17: Cho ba
̉
n ma
̃
nhậ n đƣợ c bằ ng ca
́
ch sƣ
̉
dụ ng mộ t hệ ma
̃
RSA nhƣ sau:
11437 6198 16611 2405 18636 2679 12205 24142 6375 2134
16611 2405 9529 7260 7834 15094 4667 24027 762 5878
5206 16683 5359 10888 4168 3536 23229 20351 15580 6704
7977 374 6525 4287 14402 527 12887 21628 11884 9402
15470 1339 10420 18051 23125 7747 135 22007 20049 9984
13199 15176 1379 8313 19574 7989 22869 406 10057 21758
3918 23991 14237 7989 3947 19529 15728 5601 3527 7200
7601 13282 21160 6291 15994 7785 8982 3045 6596 16796
4663 2405 20302 11929 17125 14533 21001 8351 11571 22082
11040 8687 6704 3330 5630 19650 13024
Khóa công khai có n = 24637 va e = 3.
a) Hay xac đinh p, q va
̀
d.
b) Giai ma ban ma đê nhân đƣơc ban rõ (la cac sô trên Z24637).
c) Chuyể n ba
̉
n ro
̃
nhậ n đƣợ c tha
̀
nh dạ ng văn ba
̉
n tiế ng Anh , biế t rằ ng mỗ i số
nguyên trên Z24637 biể u diễ n mộ t bộ 3 chƣ
̃
ca
́
i theo qui tắ c sau:
DOG 3 × 26
2
+ 14× 26 + 6 = 2398
CAT 2 × 26
2
+ 0× 26 + 19 = 1371
ZZZ 25 × 26
2
+ 25× 26 + 25 = 17575
Bai tâp 3.18: Cho hệ ma
̃
ElGamal co
́
p = 71 va a = 7.
a) Gia sử khóa công khai cua B la Y
B
= 3 va A chon sô ngâu nhiên k = 2, hay xac
đi ̣ nh ba
̉
n ma
̃
tƣơng ƣ
́
ng vơ
́
i ba
̉
n ma
̃
M = 30.
b) Gia sử A chon môt gia tri ngâu nhiên k khac va ban ma tƣơng ưng vơi M = 30
bây giơ
̀
la
̀
C = (59, C
2
). Hay xac đinh C
2
?
Bai tâp 3.19: Cho hệ ma
̃
dƣ̣ a trên đƣơ
̀
ng cong Elliptic co
́
ca
́
c tham số la
̀
E
11
(1, 6) va G =
(2, 7). Khóa bi mât cua B la n
B
= 7.
a) Hay xac đinh khóa công khai cua B?
b) Gia sử cân ma hóa ban rõ P
m
= (10, 9) va sô ngâu nhiên k = 3. Hay xac đinh
ban ma C
m
.
c) Minh họ a qua
́
tri
̀
nh gia
̉
i ma
̃

́
i C
m
nhậ n đƣợ c ơ
̉
phầ n b.

̉
dụ ng mộ t trong ca
́
c ngôn ngƣ
̃
lậ p tri
̀
nh C, C++, Java hoặ c C# đê lam cac bai tâp sau:
Chƣơng IV: Các hê ma mât khoa công khai
100
Bai tâp 3.20: Viế t chƣơ ng tri
̀
nh ca
̀
i đặ t thuậ t toa
́
n ma
̃
ho
́
a va
̀
gia
̉
i ma
̃
cu
̉
a hệ ma
̃

Knapsack.
Bai tâp 3.21: Viế t chƣơng tri
̀
nh ca
̀
i đặ t thuậ t toa
́
n ma
̃
ho
́
a va
̀
gia
̉
i ma
̃
cu
̉
a hệ ma
̃
RSA.
Bai tâp 3.22: Viế t chƣơng tri
̀
nh ca
̀
i đặ t thuậ t toa
́
n ma
̃
ho
́
a va
̀
gia
̉
i ma cua hê ma El
Gammal.
Bai tâp 3.23: Viế t chƣơng tri
̀
nh ma
̃
ho
́
a va
̀
gia
̉
i ma
̃
File vơ
́
i thuậ t toa
́
n ma
̃
ho
́
a va
̀
gia
̉
i ma
̃

RSA.
Bai tâp 3.24: Viế t chƣơng tri
̀
nh truyề n file qua hệ thố ng mạ ng sƣ
̉
dụ ng thuậ t toa
́
n ma
̃
ho
́
a
RSA.
Bai tâp 3.25: Viế t chƣơng tri
̀
nh chia se
̉
file trên mạ ng cụ c bộ sƣ
̉
dụ ng hệ ma
̃
RSA.
Bai tâp 3.26: Viế t chƣơng tri
̀
nh phân phố i kho
́
a dƣ̣ a trên hệ ma
̃
RSA.
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
101
CHƢƠNG V: CHƢ̃ KÝ ĐIỆ N TƢ̉ VA HAM BĂM
1. Chƣ
̃
ky
́
điệ n tƣ
̉

1.1. Khái niêm về chữ ky điên tử
Kê tư khi con ngƣơi phat minh ra chữ viêt, cac chữ ky thƣơng luôn đƣơc sử dung
hang ngay, chăng han nhƣ ky môt biên nhân trên môt bưc thƣ nhân tiền tư ngân hang, ky
hơp đông hay môt văn ban bất ky nao đó. Chữ ky viêt tay thông thƣơng trên tai liêu
thƣơng đƣơc dùng đê xac đinh ngƣơi ky nó.
Sơ đô chữ ky điên tử la môt phƣơng phap ky môt văn ban hay lƣu bưc điên dƣơi
dang điên tử. Chăng han môt bưc điên có chữ ky đƣơc lƣu hanh trên mang may tinh.
Chữ ky điên tử tư khi ra đơi đa có nhiều ưng dung rông rai trong cac giao dich thƣơng
mai, tư viêc xac minh chữ ky cho đên cac the tin dung, cac sơ đô đinh danh va cac sơ đô
chia se
̉
bi mât ... Sau đây, chúng ta sẽ tìm hiêu môt sô sơ đô chữ ky quan trong. Song
trƣơc hêt, chúng ta sẽ thao luân môt vai điêm khac biêt cơ ban giữa chữ ky thông thƣơng
va chữ ky điên tử.
Đâu tiên la vấn đề ky môt tai liêu. Vơi chữ ky thông thƣơng nó la môt phân vât ly
cua tai liêu. Tuy nhiên, môt chữ ky điên tử không găn theo kiêu vât ly vao bưc điên nên
thuât toan đƣơc dùng phai la “không nhìn thấy” theo cach nao đó trên bưc điên.
Thư hai la vấn đề kiêm tra. Chữ ky thông thƣơng đƣơc kiêm tra băng cach so sanh
nó vơi cac chữ ky xac thưc khac. Vi du, ai đó ky môt tấm sec đê mua hang, ngƣơi ban sẽ
so sanh chữ ky trên manh giấy đó vơi chữ ky năm ở mặt sau the tin dung đê kiêm tra.
Mặt khac, chữ ky sô có thê kiêm tra băng môt thuât toan kiêm tra môt cach công khai.
Nhƣ vây, bất ky ai cung có thê kiêm tra đƣơc chữ ky điên tử. Viêc sử dung môt sơ đô ky
an toan có thê ngăn chặn đƣơc kha năng gia mao.
Sư khac biêt cơ ban giữa chữ ky điên tử va chữ ky thông thƣơng la ở chỗ: môt ban
copy tai liêu có chữ ky đƣơc đông nhất vơi ban gôc. Nói cach khac, tai liêu có chữ ky trên
giấy thƣơng có thê khac biêt vơi ban gôc điều nay đê ngăn chặn môt bưc điên đƣơc ky
khỏi bi dùng lai. Vi du, nêu B ky môt bưc điên xac minh cho A rút 100$ tư tai khoan cua
mình, anh ta chỉ muôn A có kha năng lam điều đó môt lân. Vì thê, ban thân bưc điên phai
chưa thông tin đê khỏi bi dùng lai, chăng han nhƣ dùng dich vu gan nhan thơi gian (Time
Stamping Service).
Môt sơ đô chữ ky điên tử thƣơng chưa hai thanh phân: thuât toan ky sig() va thuât
toan xac minh ver(). B có thê ky môt bưc điên x dùng thuât toan ky an toan (bi mât). Kêt
qua chữ ky y = sig(x) nhân đƣơc có thê đƣơc kiêm tra băng thuât toan xac minh công
khai ver(y). Khi cho trƣơc cặp (x, y), thuât toan xac minh cho gia tri TRUE hay FALSE tuy
thuôc vao viêc chữ ky đƣơc xac thưc nhƣ thê nao.
Vây thê nao la chữ ky điên tử? Chúng ta có môt sô đinh nghĩa nhƣ sau:
- La môt đinh danh điên tử đƣơc tao ra bởi may tinh đƣơc cac tô chưc sử dung
nhăm đat đƣơc tinh hiêu qua va có hiêu lưc nhƣ la cac chữ ky tay.
- La môt cơ chê xac thưc hóa cho phep ngƣơi tao ra thông điêp đinh kèm môt ma
sô vao thông điêp giông nhƣ la viêc ky môt chữ ky lên môt văn ban bình
thƣơng.
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
102
Cac chữ ky điên tử đƣơc sinh va sử dung bởi cac hê chữ ky (sơ đô) điên tử, dƣơi
đây la đinh nghĩa môt hê chữ ky điên tử.
Đinh nghia:
Một sơ đồ chữ ky điệ n tư
̉
là bộ 5 (P, A, K, S, V) thoả man các điều kiện dưới
đây:
1) P là tập hữu hạn các bức điện (thông điệ p, bản rõ) co thể.
2) A là tập hữu hạn các chữ ky co thể.
3) K là tập không gian khoá (tập hữu hạn các khoá co thể).
4) Với mỗi khoá K e K tồn tại một thuật toán ky sig
K
e S và một thuật toán xác
minh ver
K
e V. Mỗi sig
k
: P → A và ver
K
: P x A → {TRUE, FALSE} là những hàm sao cho
mỗi bức điện x e P và mỗi chữ ky y e A thoả man phương trình dưới đây:
Ver (x, y) =
¹
´
¦

TRUE nếu y = sig(x)
FALSE nếu y ≠ sig(x). [5]
Vơi mỗi K e K, hàm sig
K
và ver
K
la cac ham đa thưc thơi gian. Ham ver
K
sẽ la ham
công khai còn hàm sig
K
la bi mât. Không thê dê dang tinh toan đê gia mao chữ ky cua B
trên bưc điên x, nghĩa la vơi x cho trƣơc chỉ có B mơi có thê tinh đƣơc y đê ver(x, y) =
TRUE. Môt sơ đô chữ ky không thê an toan vô điều kiên vì môt ngƣơi C nao đó có thê
kiêm tra tất ca chữ sô y trên bưc điên x nhơ dùng thuât toan ver() công khai cho tơi khi
anh ta tìm thấy chữ ky đúng. Vì thê, nêu có đu thơi gian, C luôn có thê gia mao chữ ky
cua B. Nhƣ vây muc đich cua chúng ta la tìm cac sơ đô chữ ky điên tử an toan về mặt
tính toán.
Chú ý răng ai đó có thê gia mao chữ ky cua B trên môt bưc điên “ngâu
nhiên” x băng cach tinh x = e
K
(y) vơi y nao đó; khi đó y = sig
K
(x). Môt biên phap
xung quanh vấn đề khó khăn nay la yêu câu cac bưc điên chưa đu phân dƣ đê
chữ ky gia mao kiêu nay không phù hơp vơi toan bô nôi dung cua bưc điên x trư
môt xac suất rất nhỏ. Có thê dùng cac ham Băm (hash function) nhƣ MD4, MD5
trong viêc tinh kêt nôi cac sơ đô chữ ky điên tử sẽ loai trư phƣơng phap gia mao
này (sẽ trình bay trong cac phân sau cua tai liêu).
1.2. Hê chữ ky RSA
Dưa vao ƣu điêm cua hê ma RSA, nêu thiêt lâp đƣơc sơ đô chữ ky dưa trên bai
toan phân tich ra thưa sô nguyên tô thì đô an toan cua chữ ky sẽ rất cao. Viêc thiêt lâp sơ
đô xac thưc chữ ky RSA rất đơn gian, ta chỉ cân đao ngƣơc ham ma hoa va giai ma. Sau
đây la sơ đô chữ ky RSA.
Cho n = p*q, trong đo p, q là các số nguyên tố. Đặt P = A = Z
n
và định nghĩa:
K = {(n, p, q, a, b): n=p*q, p và q là các số nguyên tố, ab ≡ 1 (mod | (n))}.
Các giá trị n và b là công khai; còn p, q, a là bi mật.
Với K = (n, p, q, a, b), ta xác định:
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
103
sig
K
(x) = x
a
mod n

ver
K
(x,y) = TRUE · x ≡ y
b
(mod n) với x, y e Z
n
. [5]
Thông thƣơng, chữ ky đƣơc kêt hơp vơi ham ma hoa công khai. Gia sử A muôn gửi
môt bưc điên đa đƣơc ma hoa va đa đƣơc ky đên cho B. Vơi ban rõ x cho trƣơc, A sẽ
tinh toan chữ ky cua mình y = sig
A
(x) va sau đó ma hoa ca x va y sử dung khoa công khai
e
B
cua B, kêt qua nhân đƣơc la z = e
B
(x, y). Ban ma z sẽ đƣơc gửi tơi B, khi B nhân đƣơc
z, đâu tiên anh ta giai ma vơi ham giai ma d
B
cua mình đê nhân đƣơc (x, y). Sau đó anh
ta dùng ham xac minh công khai cua A đê kiêm tra xem ver
A
(x,y) = TRUE hay không.
Song nêu đâu tiên A ma hoa x , rôi sau đó mơi ky lên ban ma nhân đƣơc thì sao?
Khi đó, A sẽ tinh:
y = sig
A
(e
B
(x))
A sẽ truyền cặp (z, y) tơi B, B sẽ giai ma z va nhân đƣơc x, sau đó xac minh chữ ky
y trên x nhơ dùng ver
A
. Môt vấn đề nay sinh nêu A truyền (x, y) kiêu nay thì môt ngƣơi thư
ba C có thê thay chữ ky y cua A băng chữ ky cua chinh mình:
y‟ = sig
C
(e
B
(x))
Chú y răng, C có thê ky lên ban ma e
B
(x) ngay ca khi anh ta không biêt ban rõ x. Khi
đó nêu C truyền (z, y‟) đên B, chữ ky cua C đƣơc B xac minh băng ver
C
va do đó, B cho
răng ban rõ x xuất phat tư C. Do khó khăn nay, hâu hêt ngƣơi sử dung đƣơc khuyên nghi
“ky trƣơc khi ma”.
1.3. Hê chữ ky ElGammal
Hê chữ ky ElGammal đƣơc đƣa ra vao 1985. Môt phiên ban sửa đôi hê nay đƣơc
Hoc viên Quôc gia tiêu chuân va ky thuât (NIST) đƣa ra nhƣ môt chuân cua chữ ky điên
tử. Hê chữ ky ElGammal đƣơc thiêt kê riêng biêt cho muc đich chữ ky, trai ngƣơc vơi
RSA thƣơng đƣơc sử dung cho ca muc đich ma hoa công khai va chữ ky. Hê chữ ky
ElGammal la không xac đinh, nghĩa la có rất nhiều gia tri chữ ky cho cùng môt bưc điên
cho trƣơc. Thuât toan xac minh phai có kha năng nhân bất ky gia tri chữ ky nao nhƣ la
viêc xac thưc. Sơ đô chữ ky ElGammal đƣơc miêu ta nhƣ sau:
Cho p là một số nguyên tố như là bài toán logarit rời rạc trong Z
p
, α e Z
p
*
là một
phần tử nguyên tử và P = Z
p
*
, A = (Z
p
*
)*Z
p-1
, và định nghĩa:
K = {(p, α, a, β) : β ≡ α
a
(mod p)}
trong đo giá trị p, α và β là công khai, còn a là bi mật.
Với K = (p, α, a, β) và chọn một số ngẫu nhiên k e Z
p-1
*
, định nghĩa:
sig
K
(x, k) = (¸, o)
trong đo: ¸ = α
k
mod p
o = (x - a*¸)k
-1
mod (p – 1).
Với x, ¸ e Z
p
*
và o e Z
p-1
, định nghĩa:
ver(x, ¸, o) = TRUE · β
¸
¸
o
≡ α
x
(mod p). [5]
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
104
Nêu chữ ky la đúng thì viêc xac nhân thanh công khi:
β
¸
¸
o
≡ α

α
ko
(mod p)
≡ α
x
(mod p).
trong đó: a¸ + ko ≡ x (mod p -1).
B sẽ tinh toan chữ ky băng viêc sử dung ca gia tri bi mât a (môt phân cua khoa) va
sô bi mât ngâu nhiên k (gia tri đê ky bưc điên). Viêc xac minh có thê thưc hiên đƣơc chỉ
vơi cac thông tin đƣơc công khai:
Vi dụ:
Chúng ta chon p = 467, α = 2, a = 127. Ta tính: β = α
a
mod p = 2
127
mod 467 = 132.
Bây giơ B muôn ky lên bưc điên x = 100 va anh ta chon môt gia tri ngâu nhiên k =
213 (chú ý là UCLN(213, 466) = 1 và 213
-1
mod 466 = 431). Sau đó tinh:
¸ = 2
213
mod 467 = 29
o = (100 – 127*29)431 mod 466 = 51.
Bất cư ai cung có thê kiêm tra chữ ky nay băng cach tinh:
132
29
29
51
≡ 189 (mod 467)
2
100
≡ 189 (mod 467).
Gia sử ke thư ba C muôn gia mao chữ ky cua B trên bưc điên x ma không biêt sô bi
mât a. Nêu C chon môt gia tri ¸ va cô găng tìm o, anh ta phai tinh môt ham logarit rơi rac
log
¸
α
x
|

. Mặt khac, nêu đâu tiên anh ta chon o đê cô găng tìm ¸ thì anh ta phai tinh |
¸
¸
o
=
α
x
(mod p). Ca hai viêc nay đều không thê thưc hiên đƣơc.
Tuy nhiên có môt ly thuyêt ma C có thê ky lên môt bưc điên ngâu nhiên băng cach
chon đông thơi ¸, o va x. Cho i, j la sô nguyên vơi 0 ≤ i, j ≤ p - 2, và UCLN(j, p - 1) = 1. Sau
đó tinh:
¸ = α
i
β
j
mod p
o = - ¸j
-1
(mod p-1)
x = - ¸ij
-1
(mod p-1).
Nhƣ vây, ta xem (¸, o) la gia tri chữ ky cho bưc điên x. Viêc xac minh sẽ thưc hiên
nhƣ sau:
β
¸
¸
o
≡ ) (mod ) (
1
p
j j i
j i j i ÷
÷ | o | o
| o |
≡ ) (mod
1
p
j i j i j i
ij | o | o | o
| o |
÷ ÷
÷

≡ ) (mod
1
p
j i
ij | o
o
÷
÷

≡ ) (mod
1
p
ij
÷
÷¸
o
≡ α
x
(mod p).
Ví dụ:
Nhƣ vi du trên, ta chon p = 467, α = 2, β = 132. Kê thư ba C sẽ chon i = 99 va j =
179. Anh ta sẽ tinh:
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
105
¸ = 2
99
132
179
mod 467 = 117
o = -117*151 mod 466 = 41
x = 99*44 mod 466 = 331
Cặp gia tri (117, 41) la gia tri chữ ky cho bưc điên 331. Viêc xac minh đƣơc thưc
hiên nhƣ sau:
132
117
117
41
≡ 303 (mod 467)
2
331
≡ 303 (mod 467).
Môt phƣơng phap thư hai có thê gia mao chữ ky la sử dung lai chữ ky cua bưc điên
trƣơc đó, nghĩa la vơi cặp (¸, o) la gia tri chữ ky cua bưc điên x, nó sẽ đƣơc C ky cho
nhiều bưc điên khac. Cho h, i va j la cac sô nguyên, trong đó 0≤ i, j, h ≤ p-2 và UCLN(h¸ -
jo, p-1) = 1.
λ = ¸
h
α
i
β
j
mod p
μ = oλ(h¸ - jo)
-1
mod (p-1)
x‟ = λ(hx + io)(h¸ - jo)
-1
mod (p-1).
Ta có thê kiêm tra: β
λ
λ
μ
= α
x‟
mod p. Va do đó, (λ, μ) la cặp gia tri chữ ky cua bưc
điên x‟.
Điều thư ba la vấn đề sai lâm cua ngƣơi ky khi sử dung cùng môt gia tri k trong viêc
ký hai bưc điên khac nhau. Cho (¸, o
1
) la chữ ky trên bưc điên x
1
và (¸, o
2
) la chữ ky trên
bưc điên x
2
. Viêc kiêm tra sẽ thưc hiên:
β
¸
¸
1
o
≡ α
1
x
(mod p)
β
¸
¸
2 o
≡ α
2 x
(mod p).
Do đó: ) (mod
2 1 2 1
p
x x o o
¸ o
÷ ÷
÷ .
Đặt ¸ = α
k
, khi đó: x
1
- x
2
= k(o
1
- o
2
) (mod p-1).
Bây giơ đặt d = UCLN(o
1
- o
2
, p - 1). Vì d | (o
1
- o
2
) và d | (p - 1) nên nó cung chia hêt
cho (x
1
- x
2
). Ta đặt tiêp:
x‟ =
d
x
2 1
x ÷

o‟ =
d
2 1
o o ÷

p‟ =
d
p 1 ÷

Cuôi cùng, ta đƣơc: x‟ ≡ ko‟ (mod p‟). Vì UCLN(o‟, p‟) = 1 nên ta có:
c = (o‟)
-1
mod p‟
Nhƣ vây, gia tri k sẽ đƣơc xac đinh nhƣ sau:
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
106
k = x‟c (mod p‟) = x‟c + ip‟ (mod p)
Vơi 0 ≤ i ≤ d-1, ta có thê tìm đƣơc gia tri k duy nhất băng ham kiêm tra:
¸ ≡ α
k
mod p.
1.4. Chuân chữ ky điên tử (Digital Signature Standard)
1.4.1. Thuât toán chữ ky điên tử (Digital Signature Algorithm)
Thang 8/1991, NIST đa đƣa ra thuât toan chữ ky điên tử (DSA) la cơ sở cho chuân
chữ ky điên tử. Đây la môt biên thê cua thuât toan ElGammal.
1) Chọn một số nguyên tố q với 2
159
< q < 2
160
.
2) Chọn t sao cho 0 ≤ t ≤ 8 và chọn một số nguyên tố p, trong đo 2
511+64t
< p <
2
512+64t
và q phải chia hết (p-1) (hay q la
̀
mộ t ươ
́
c nguyên tố của p-1).
3) Bây giờ, tạo ra một số α duy nhất cho q trong trường Z
p
*
.
- Chọn một giá trị g e Z
p
*
và tinh α = g
(p-1)/q
mod p.
- Nếu α = 1 thì quay lại bước trên. (chọn lại giá trị g cho phù hơp)
4) Chọn một số nguyên ngẫu nhiên a để 1 ≤ a ≤ q-1.
5) Tinh y = α
a
mod p.
6) Như vậy , khoá để ky là (p, q, α, y) đươc công khai và a là khoá bi mật.
1.4.2. Chuân chữ ky điên tử
Chuân chữ ky điên tử (DSS) đƣơc sửa đôi tư hê chữ ky ElGammal. Nó đƣơc công
bô tai hôi nghi Tiêu chuân xử ly thông tin Liên Bang (FIPS) vao 19/05/1994 va trở thanh
chuân vao 01/12/1994. DSS sử dung môt khoa công khai đê kiêm tra tinh toan ven cua
dữ liêu nhân đƣơc va đông nhất vơi dữ liêu cua ngƣơi gửi. DSS cung có thê sử dung bởi
ngƣơi thư ba đê xac đinh tinh xac thưc cua chữ ky va dữ liêu trong nó. Đâu tiên chúng ta
hay tìm hiêu đông cơ cua sư thay đôi nay, sau đó sẽ tìm hiêu thuât toan cua DSS.
Trong rất nhiều trƣơng hơp, môt bưc điên có thê đƣơc ma hoa va giai ma môt lân,
vì vây nó đap ưng cho viêc sử dung cua bất ky hê thông bao mât nao đƣơc biêt la an
toan lúc bưc điên đƣơc ma hoa. Nói cach khac, môt bưc điên đƣơc ky đam nhiêm chưc
năng nhƣ môt văn ban hơp phap, chăng han nhƣ cac ban hơp đông, vì vây nó cung
giông nhƣ viêc cân thiêt đê xac minh chữ ky sau rất nhiều năm bưc điên đƣơc ky. Điều
nay rất quan trong cho viêc phòng ngưa về đô an toan cua chữ ky đƣơc đƣa ra bởi môt
hê thông bao mât. Vì hê chữ ky ElGammal không đam nhân đƣơc điều nay, viêc thưc
hiên nay cân môt gia tri lơn modulo p. Tất nhiên p nên có it nhất 512-bit, va nhiều ngƣơi
cho răng đô dai cua p nên la 1024-bit nhăm chông lai viêc gia mao trong tƣơng lai.
Tuy nhiên, ngay ca môt thuât toan modulo 512-bit dùng đê ky cung phai thưc hiên
viêc tinh toan đên 1024-bit. Cho ưng dung tiềm năng nay, có rất nhiều card thông minh
đƣơc đƣa ra, nhăm thưc hiên môt chữ ky ngăn hơn nhƣ mong muôn. DSS đa sửa đôi hê
chữ ky ElGammal cho phù hơp theo cach nay môt cach kheo leo, đê mỗi 160-bit bưc điên
đƣơc ky sử dung môt chữ ky 320-bit, nhƣng viêc tinh toan đƣơc thưc hiên vơi 512-bit
modulo p. Cach nay đƣơc thưc hiên nhơ viêc chia nhỏ Z
p
*
thanh cac trƣơng có kich
thƣơc 2
160
. Viêc thay đôi nay sẽ lam thay đôi gia tri o:
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
107
o = (x + α¸)k
-1
mod(p - 1).
Điều nay cung lam cho gia tri kiêm tra cung thay đôi:
α
x
β
¸
≡ ¸
o
(mod p). (1.4.2.1)
Nêu UCLN(x + α¸, p - 1) = 1 thì sẽ tôn tai o
-1
mod (p - 1), do đó (6.1) sẽ biên đôi
thành:
1 1 ÷ ÷
¸o o
| o
x
≡ ¸ (mod p). (1.4.2.2)
Đây chinh la sư đôi mơi cua DSS. Chúng ta cho q la môt sô nguyên tô 160-bit sao
cho q | (p-1), va α la môt sô thư q cua 1 mod p, thì β va ¸ cung la sô thư q cua 1 mod p.
Do đó α, β va ¸ có thê đƣơc tôi gian trong modulo p ma không anh hƣởng gì đên viêc xac
minh chữ ky. Sơ đô thuât toan nhƣ sau:
Cho p là một số nguyên tố 512-bit trong trường logarit rời rạc Z
p
; q là một số nguyên
tố 160-bit và q chia hết (p-1). Cho α e Z
p
*
; P = Z
p
*
, A = Z
q
*Z
q
, và định nghĩa:
K = {(p, q, α, a, β) : β ≡ α
a
(mod p)}
trong đo giá trị p, q, α và β là công khai, còn a là bi mật.
Với K = (p, α, a, β) và chọn một số ngẫu nhiên k (1 ≤ k ≤ q-1), định nghĩa:
sig
K
(x, k) = (¸, o)
trong đo: ¸ = (α
k
mod p) mod q
o = (x + a*¸)k
-1
mod q.
Với x e Z
p
*
và ¸, o e Z
q
, việc xác minh đươc thực hiên băng cách tinh:
e
1
= xo
-1
mod q
e
2
= ¸o
-1
mod q
ver(x, ¸, o) = TRUE · (
2 1
e e
| o mod p) mod q = ¸. [5]
Chú y răng, vơi DSS thì o = 0 (mod q) vì gia tri: o
-1
mod q cân cho viêc xac minh chữ
ky (điều nay cung tƣơng tư nhƣ viêc yêu câu UCLN(o, p-1) = 1 đê (1.4.2.1) → (1.4.2.2)).
Khi B tinh môt gia tri o ≡ 0 (mod q) trong thuât toan ky, anh ta nên bỏ nó đi va chon môt sô
ngâu nhiên k mơi.
Vi dụ:
Chúng ta chon q = 101 và p = 78*q + 1 = 7879 và g = 3 la môt nguyên tô trong
Z
7879
. Vì vây , ta có thê tinh:
α = 3
78
mod 7879 = 170.
Chon a = 75, do đó: β = α
a
mod 7879 = 4567.
Bây giơ, B muôn ky môt bưc điên x = 1234, anh ta chon môt sô ngâu nhiên k = 50.
Vì vây :
k
-1
mod 101 = 99.
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
108
Tiêp đó: ¸ = (170
50
mod 7879) mod 101 = 2518 mod 101 = 94
o = (1234 + 75*94)99 mod 101 = 97.
Cặp chữ ky (94, 97) cho bưc điên 1234 đƣơc xac thƣc nhƣ sau:
o
-1
= 97
-1
mod 101 = 25
e
1
= 1234*25 mod 101 = 45
e
2
= 94*25 mod 101 = 27
(170
45
4567
27
mod 7879) mod 101 = 2518 mod 101 = 94.
Kê tư khi DSS đƣơc đề xuất vao năm 1991, đa có nhiều phê bình đƣa ra. Chăng
han nhƣ kich cỡ cua moduloe p bi cô đinh 512-bit, điều ma nhiều ngƣơi không muôn. Vì
vây, NIST đa thay đôi chuân nay đê có thê thay đôi kich thƣơc moduloe (chia bởi 64)
thanh môt day tư 512 đên 1024-bit.
Ngoai ra, môt sư phê bình khac về DSS la chữ ky đƣơc tao ra nhanh hơn so vơi
viêc xac minh nó. Trai ngƣơc vơi hê chữ ky RSA thì viêc xac minh công khai la rất nhanh
chóng (ma ta biêt trong thƣơng mai điên tử viêc xac minh la rất quan trong va đòi hỏi thơi
gian thưc hiên phai nhanh chóng).
1.5. Mô hi
̀
nh ƣ
́
ng dụ ng cu
̉
a chƣ
̃
ky
́
điệ n tƣ
̉

Khac vơi chữ ky thông thƣơ
̀
ng trên thƣ̣ c tế , cac chữ ky điên tử la môt thông tin ở
dang sô hó a đƣợ c tạ o ra tƣ
̀
văn ba
̉
n sƣ
̉
dụ ng hệ chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
không pha
̉
i la
̀
mộ t
phầ n cu
̉
a văn ba
̉
n . Do đo
́
sau khi đƣợ c tạ o ra , chƣ
̃
ky
́
điệ n tƣ
̉
se
̃
đƣợ c gƣ
̉
i đi cu
̀
ng vơ
́
i
thông điệ p, ngƣơ
̀
i nhậ n nhậ n đƣợ c thông điệ p va
̀
chƣ
̃
ky
́
tƣơng ưng sẽ thưc hiên thuât
toan kiêm tra xem chữ ky có đúng la chữ ky cua ngƣơi gửi lên văn ban nhân đƣơc hay
không. Mô hi
̀
nh ƣ
́
ng dụ ng na
̀
y co
́
thể đƣợ c minh họ a qua hi
̀
nh ve
̃
sau:
B - ngƣơi nhân
RSA
Khóa công
khai cua B
Khóa
phiên K
C1
RSA
Khóa bi mât
cua B
C1
Khóa
phiên K
AES P, S
C2
AES
C2
P, S
A - ngƣơi gửi
Ky
P
S
Khóa bi mât
cua A
Kiêm tra
chữ ky
P
Khóa công
khai cua B

Hình 5.1: Mô hi
̀
nh ƣ
́
ng dụ ng cu
̉
a chƣ
̃
ky
́
điệ n tƣ
̉

Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
109
2. Ham Băm (Hash Function)
2.1. Khái niêm
Ta thấy răng cac hê chữ ky đƣơc miêu ta ở trên chỉ cho phep ky cac bưc điên ngăn.
Vi du nhƣ trong DSS, 160-bit bưc điên đƣơc ky vơi 320-bit. Nhƣ vây vơi những bưc điên
hang Megabyte thì chúng ta phai lam thê nao!
Môt cach đơn gian đê giai quyêt vấn đề nay la chia bưc điên lơn thanh những đoan
nhỏ 160-bit, va sau đó ky lên mỗi đoan nhỏ đó, điều nay cung tƣơng tư nhƣ ma hoa môt
chuỗi dai ban rõ băng viêc ma hoa tưng ky tư ban rõ sử dung cùng môt khoa.
Nhƣng có môt vai vấn đề trong viêc tao chữ ky điên tử. Đâu tiên la vơi môt bưc điên
dai, chúng ta sẽ kêt thúc vơi môt lƣơng chữ ky không lô. Ngoai ra, điều bất tiên la hâu hêt
cac hê chữ ky đều rất châm. Nghiêm trong hơn la vơi rất nhiều đoan đƣơc ky nhƣ vây sẽ
dân đên khi săp xêp lai va có thê môt vai đoan bi bỏ đi (mất đi tinh toan ven).
Đê giai quyêt tất ca cac răc rôi nay, ngƣơi ta sử dung ham Băm (hash function).
Đinh nghia:
Môt ham Băm H sẽ lấy ở đâu vao môt thông tin X có kich thƣơc biên thiên va sinh
kêt qua la môt chuỗi có đô dai cô đinh, đƣơc goi la côt cua bưc điên (message digest).
Vi du nhƣ khi B muôn ky môt bưc điên x (đô dai bất ky), đâu tiên anh ta tinh côt cua
bưc điên z = h(x) (đô dai cô đinh) va sau đó ky y = sig
K
(z). Anh ta phat cặp (x,y) lên kênh
truyền, bây giơ viêc kiêm tra có thê thưc hiên băng viêc tinh lai côt cua bưc điên z = h(x),
sau đó kiêm tra ver
K
(z,y) có băng TRUE hay không.


Hình 5.2: Sơ đô chữ ky sử dung ham Băm
2.2. Đăc tinh cua ham Băm
Môt vấn đề cân ban ở đây la tinh đung đô cua ham Băm. Theo nguyên ly Diricle:
nếu co n+1 con thỏ đươc bỏ vào n cái chuồng thì phải tồn tại it nhất một cái chuồng mà
trong đo co it nhất là hai con thỏ ở chung [9]. Rõ rang vơi không gian gia tri Băm nhỏ hơn
rất nhiều so vơi không gian tin về mặt kich thƣơc thì chăc chăn sẽ tôn tai đung đô, nghĩa
là có hai tin x = x‟ ma gia tri Băm cua chúng la giông nhau, tưc h(x) = h(x‟).
Sau đây chúng ta sẽ xet cac dang tấn công có thê có, tư đó rút ra cac tinh chất cua
ham Băm:
z = h(x) y = sig
K
(z) x
x.y
ver
K
(y)
z = h(x)
0: true
1: false
x.y
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
110
Dang tấn công thư nhất la ngƣơi C băt đâu vơi môt bưc điên đƣơc ky có gia tri (x,
y), trong đó y = sig
K
(h(x)) (cặp (x, y) có thê la bất ky bưc điên trƣơc đó ma B đa ky). Sau
đó, C tinh z = h(x) va cô găng tìm x‟ = x đê h(x‟) = h(x). Nêu C lam đƣơc điều nay thì cặp
(x‟, y) sẽ la môt bưc điên đƣơc ky có gia tri (môt bưc điên gia mao có gia tri). Đê ngăn can
viêc nay, ham Băm h phai thoa man tinh chất sau:
Tinh chât 1:
Một hàm Băm h co tinh phi đụng độ cao khi với một bức điện x cho trước , không
tìm ra một bức điện x’ = x sao cho h(x’) = h(x). [5]
Môt dang tấn công khac ma ngƣơi C có thê lam la: đâu tiên anh ta tìm 2 bưc điên x
= x‟ sao cho h(x) = h(x‟). Sau đó C đƣa bưc điên x cho B va thuyêt phuc B ky vao côt bưc
điên h(x); va vì vây, anh ta tìm đƣơc y. Nhƣ vây, cặp (x‟, y) la môt cặp chữ ky gia có giá
tri. Điều nay la nguyên nhân ma viêc thiêt kê ham Băm phai thoa man tinh chất 2 nhƣ
sau:
Tinh chât 2:
Một hàm Băm h co tinh đụng độ cao khi không thể tìm ra những bức điện x và x’
sao cho x’ = x và h(x’) = h(x). [5]
Dang tấn công thư 3 la chon môt gia tri côt z ngâu nhiên. Ngƣơi C sẽ tinh môt chữ
ky vơi môt gia tri ngâu nhiên z, sau đó anh ta tìm môt bưc điên x sao cho z = h(x). Nêu
anh ta lam đƣơc điều nay thì cặp (x, y) la cặp chữ ky gia có gia tri. Nhƣ vây môt tinh chất
nữa ma h cân thoa man la tinh môt chiều:
Tinh chât 3:
Một hàm Băm h co tinh một chiều khi với cốt của một bức điện z cho trước không
thể tìm đươc một bức điện x sao cho h(x) = z. [5]
2.3. Birthday attack
Nhƣ đa biêt, môt dang tấn công có kha năng đôi vơi cac hê chữ ky điên tử có dùng
ham Băm la tìm cach tao ra những văn ban x va x‟ có nôi dung khac nhau (môt có lơi va
môt la bất lơi cho bên ky) ma gia tri Băm giông nhau. Ke đich có thê tìm cach tao ra môt
sô lƣơng rất lơn cac văn ban có nôi dung không thay đôi nhƣng khac nhau về biêu diên
nhi phân (đơn gian la viêc thêm bơt khoang trăng hay dùng nhiều tư đông nghĩa đê thay
thê ...), sau đó sử dung môt chƣơng trình may tinh đê tinh gia tri Băm cua cac văn ban đó
va đem so sanh vơi nhau đê hi vong tìm ra môt cặp văn ban đung đô (sử dung phƣơng
phap thông kê).
Nhƣng viêc nay đòi hỏi sô văn ban cân đƣơc tinh gia tri Băm phai lơn hơn kich
thƣơc không gian Băm rất nhiều. Chăng han nhƣ nêu ham Băm có không gian Băm 64-
bit thì sô lƣơng văn ban cân đƣơc đem ra nap vao chƣơng trình phai it nhất 2
64
(vơi môt
may tinh có thê thưc hiên viêc Băm 1 triêu bưc điên trong 1 giây, thì phai mất 6000.000
năm tinh toan [6])
Tuy nhiên nêu ke đich thử vơi lƣơng văn ban it hơn nhiều, trong pham vi có thê tinh
đƣơc thì xac suất đê tìm đƣơc đung đô sẽ nhƣ thê nao? Câu tra lơi la “có thê thưc hiên
đƣơc”. Ban chất cua hiên tƣơng nay đƣơc minh hoa rõ thông qua phat biêu sau, thƣơng
đƣơc goi la nghich ly ngay sinh (birthday paradox):
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
111
Trong một nhom co 23 người bất kỳ , xác suất để co hai người co cùng ngày sinh
nhật it nhất là ½. [5]
Môt cach tông quat, gia sử môt ham Băm có n gia tri Băm khac nhau, nêu chúng ta
có k gia tri Băm tư k thông tin khac nhau đƣơc chon ngâu nhiên, thì xac suất đê không
xay ra đung đô la:
(1-
n
1
)(1-
n
2
) ... (1-
n
k 1 ÷
) =
[
÷
=
÷
1
1
) 1 (
k
i
n
i
.
Vơi 1 <<
n
i
, thì
[
÷
=
÷
1
1
) 1 (
k
i
n
i
n
k k
k
i
n
i
e e
2
) 1 (
1
1
÷ ÷
÷
=
÷
= ~
[
. Do đó, xac suất đê xay ra đung đô it
nhất la
n
k k
e
2
) 1 (
1
÷ ÷
÷ . Gia sử goi xac suất trên la c ta co
́
:
( 1)
2
1
k k
n
e c
÷ ÷
÷ ~
(*)
Suy ra :
2
1
2 log
1
k k n
c
÷ ~
÷
, suy ra:
1
2 log
1
k n
c
~
÷
(**)
Theo công thƣ
́
c (**) nay khi gia tri e rất gân vơi 1 thì
1
log
1 c ÷
vẫ n kha
́
nho
̉
nên k la
̀

tỉ lê vơi
n
. Vơ
́
i ε = 0.5 ta co
́
k≈1.1774
n
(***).

Vi dụ:

́
i k = 23 la sô ngƣơi , n = 365 la sô ngay trong năm thì xac xuất tôn tai hai ngƣơi
có cùng sinh nhât sẽ la c = 1 – 2,7
-0,7
~0,5075. Va đây chinh la nghich ly ngay sinh đa
phat biêu ở trên. Hoặ c chu
́
ng ta co
́
thể thay n = 365 vao công thưc (***) sẽ nhân đƣơc k =
22.49 ≈23.
Nghich ly ngay sinh hay công thƣ
́
c (*) cho phe
́
p chu
́
ng ta dƣ̣ đoa
́
n đƣợ c chặ n dƣơ
́
i
cua sô lƣơng phep thử cân thưc hiên đê tìm ra đung đô cua môt ham băm . Mộ t ha
̀
m băm
40-bit se
̃
la
̀
không an toa
̀
n vi
̀
chi
̉
cầ n thƣ
̉
2
20
(khoang 1 tỉ) phep thử chúng ta đa có xac
suấ t đụ ng độ la
̀
50%.
Tƣơng tƣ̣ , vơi môt ham Băm có không gian Băm 64-bit nêu trên thì số phe
́
p thƣ
̉
để
có xac suất đung đô la 50% sẽ la 2
32
, điều nay la có kha năng thưc hiên đƣơc. Vi du vơi
loai may tinh nêu trên chỉ mất khoang 1 giơ tinh toan.
Ham băm đƣơc coi la an toan la cac ham băm 128 bit (nhƣ MD5 ..) vì khi đó sô
lƣợ ng phe
́
p thƣ
̉
se
̃
la
̀
2
64
. Tuy nhiên hiệ n nay vơ
́
i sƣ̣ pha
́
t triể n cu
̉
a ca
́
c thuậ t toa
́
n tha
́
m
ma ham băm mơi đƣơc phat hiên cac ham băm 128 cung đƣơc khuyên nghi la không nên

̉
dụ ng trong ca
́
c hệ thố ng ba
̉
o mậ t mơ
́
i . Cac ham băm đƣơc khuyên nghi thay th ê cho
MD5 la cac ham băm 164 bit nhƣ DSS, SHA2.
2.4. Môt sô ham Băm nôi tiêng
2.4.1. MD5 (Message Digest)
Ronald Rivest la ngƣơi đa phat minh ra cac ham Băm MD2, MD4 (1990) va MD5
(1991). Do tinh chất tƣơng tư cua cac ham Băm nay, sau đây chu
́
ng ta se
̃
xem xe
́
t hàm
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
112
Băm MD5, đây la môt cai tiên cua MD4 va la ham Băm đƣơc sử dung rông rai nhất,
nguyên tắ c thiế t kế cu
̉
a ha
̀
m băm na
̀
y cu
̃
ng la
̀
nguyên tắ c chung cho rấ t nhiề u ca
́
c ha
̀
m
băm kha
́
c.
a. Miêu tả MD5:
Đâu vao la những khôi 512-bit, đƣơc chia cho 16 khôi con 32-bit. Đâu ra cua thuât
toan la môt thiêt lâp cua 4 khôi 32-bit đê tao thanh môt ham Băm 128-bit duy nhất.
Đâu tiên, ta chia bưc điên thanh cac khôi 512-bit, vơi khôi cuôi cùng (đặt la x va x <
512-bit) cua bưc điên, chúng ta công thêm môt bit 1 vao cuôi cua x, theo sau đó la cac bit
0 đê đƣơc đô dai cân thiêt (512 bit). Kêt qua la bưc điên vao la môt chuỗi M có đô dai
chia hêt cho 512; vì vây ta có thê chia M ra thanh cac N word 32-bit (N word nay sẽ chia
hêt cho 16).
Bây giơ, ta băt đâu tìm côt cua bưc điên vơi 4 khôi 32-bit A, B, C va D (đƣơc xem
nhƣ thanh ghi) :
A = 0x01234567
B = 0x89abcdef
C = 0xfedcba98
D = 0x76543210.
ngƣơi ta thƣơng goi A, B, C, D la cac chuỗi biên sô (chaining variables).
Bưc điên đƣơc chia ra thanh nhiều khôi 512-bit, mỗi khôi 512-bit lai đƣơc chia ra 16
khôi 32-bit đi vao bôn vòng lặp cua MD5. Gia sử ta đặt a, b, c va d thay cho A, B, C va D
đôi vơi khôi 512-bit đâu tiên cua bưc điên. Bôn vòng lặp trong MD5 đều có cấu trúc giông
nhau. Mỗi vòng thưc hiên 16 lân biên đôi: thưc hiên vơi môt ham phi tuyên cua 3 trong 4
gia tri a, b, c va d; sau đó nó công kêt qua đên gia tri thư 4, tiêp đó công vơi môt khôi con
32-bit va môt hăng sô. Sau đó, nó dich trai môt lƣơng bit thay đôi va công kêt qua vao
môt trong 4 gia tri a, b, c hay d. Kêt qua cuôi cùng la môt gia tri mơi đƣơc thay thê môt
trong 4 gia tri a, b, c hay d.


Hình 5.3: Sơ đô vòng lặp chinh cua MD5
A
B
C
D
Vòng
1
Vòng
2
Vòng
3
Vòng
4
A
B
C
D
Khối của bức
điện
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
113

Hình 5.4: Sơ đô môt vòng lặp MD5
Có bôn ham phi tuyên, mỗi ham nay đƣơc sử dung cho mỗi vòng:
F(X,Y,Z ) = (X ± Y) ((÷X) ± Z)
G(X,Y,Z ) = ((X ± Z) (Y ± (÷Z)))
H(X,Y,Z ) = X © Y © Z
I(X,Y,Z ) = Y © (X (÷Z)).
trong đó: © là XOR, ± là AND, là OR, và ÷ là NOT.
Những ham nay đƣơc thiêt kê sao cho cac bit tƣơng ưng cua X, Y va Z la đôc lâp
va không ƣu tiên, va mỗi bit cua kêt qua cung đôc lâp va ngang băng nhau.
Nêu M
j
la môt biêu diên cua khôi con thư j (j = 16) va <<<s la phep dich trai cua s
bit, thì cac vòng lặp có thê biêu diên nhƣ sau:
FF(a,b,c,d,M
j
,s,t
i
) đƣơc biêu diên a = b + ((a + F(b,c,d) + M
j
+ t
i
) <<< s)
GG(a,b,c,d,M
j
,s,t
i
) đƣơc biêu diên a = b + ((a + G(b,c,d) + M
j
+ t
i
) <<< s)
HH(a,b,c,d,M
j
,s,t
i
) đƣơc biêu diên a = b + ((a + H(b,c,d) + M
j
+ t
i
) <<< s)
II(a,b,c,d,M
j
,s,t
i
) đƣơc biêu diên a = b + ((a + I(b,c,d) + M
j
+ t
i
) <<< s).
Bôn vòng (64 bƣơc) sẽ thưc hiên nhƣ sau:
Vòng 1:
FF (a, b, c, d, M
0
, 7, 0x76aa478)
FF (d, a, b, c, M
1
, 12, 0xe8c7b756)
FF (c, d, a, b, M
2
, 17, 0x242070db)
FF (b, c, d, a, M
3
, 22, 0xc1bdceee)
FF (a, b, c, d, M
4
, 7, 0xf57c0faf)
FF (d, a, b, c, M
5
, 12, 0x4787c62a)
FF (c, d, a, b, M
6
, 17, 0xa8304613)
FF (b, c, d, a, M
7
, 22, 0xfd469501)
FF (a, b, c, d, M
8
, 7, 0x698098d8)
FF (d, a, b, c, M
9
, 12, 0x8b44f7af)
a



b



c



d

Hàm phi
tuyến
<<< s
M
j
t
i
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
114
FF (c, d, a, b, M
10
, 17, 0xffff5bb1)
FF (b, c, d, a, M
11
, 22, 0x895cd7be)
FF (a, b, c, d, M
12
, 7, 0x6b901122)
FF (d, a, b, c, M
13
, 12, 0xfd987193)
FF (c, d, a, b, M
14
, 17, 0xa679438e)
FF (b, c, d, a, M
15
, 22, 0x49b40821).
Vòng 2:
GG (a, b, c, d, M
1
, 5, 0x61e2562)
GG (d, a, b, c, M
6
, 9, 0xc040b340)
GG (c, d, a, b, M
11
, 14, 0x265e5a51)
GG (b, c, d, a, M
0
, 20, 0xe9b6c7aa)
GG (a, b, c, d, M
5
, 5, 0xd62f105d)
GG (d, a, b, c, M
10
, 9, 0x02441453)
GG (c, d, a, b, M
15
, 14, 0xd8a1e681)
GG (b, c, d, a, M
4
, 20, 0xe7d3fbc8)
GG (a, b, c, d, M
9
, 5, 0x21e1cde6)
GG (d, a, b, c, M
14
, 9, 0xc33707d6)
GG (c, d, a, b, M
3
, 14, 0xf4d50d87)
GG (b, c, d, a, M
8
, 20, 0x455a14ed)
GG (a, b, c, d, M
13
, 5, 0xa9e3e905)
GG (d, a, b, c, M
2
, 9, 0xfcefa3f8)
GG (c, d, a, b, M
7
, 14, 0x676f02d9)
GG (b, c, d, a, M
12
, 20, 0x8d2a4c8a).
Vòng 3:
HH (a, b, c, d, M
5
, 4, 0xfffa3942)
HH (d, a, b, c, M
8
, 11, 0x8771f681)
HH (c, d, a, b, M
11
, 16, 0x6d9d6122)
HH (b, c, d, a, M
14
, 23, 0xfde5380c)
HH (a, b, c, d, M
1
, 4, 0xa4beea44)
HH (d, a, b, c, M
4
, 11, 0x4bdecfa9)
HH (c, d, a, b, M
7
, 16, 0xf6bb4b60)
HH (b, c, d, a, M
10
, 23, 0xbebfbc70)
HH (a, b, c, d, M
13
, 4, 0x289b7ec6)
HH (d, a, b, c, M
0
, 11, 0xeaa127fa)
HH (c, d, a, b, M
3
, 16, 0xd4ef3085)
HH (b, c, d, a, M
6
, 23, 0x04881d05)
HH (a, b, c, d, M
9
, 4, 0xd9d4d039)
HH (d, a, b, c, M
12
, 11, 0xe6db99e5)
HH (c, d, a, b, M
15
, 16, 0x1fa27cf8)
HH (b, c, d, a, M
2
, 23, 0xc4ac5665).
Vòng 4:
II (a, b, c, d, M
0
, 6, 0xf4292244)
II (d, a, b, c, M
7
, 10, 0x432aff97)
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
115
II (c, d, a, b, M
14
, 15, 0xab9423a7)
II (b, c, d, a, M
5
, 21, 0xfc93a039)
II (a, b, c, d, M
12
, 6, 0x655b59c3)
II (d, a, b, c, M
3
, 10, 0x8f0ccc92)
II (c, d, a, b, M
10
, 15, 0xffeff47d)
II (b, c, d, a, M
1
, 21, 0x85845dd1)
II (a, b, c, d, M
8
, 6, 0x6fa87e4f)
II (d, a, b, c, M
15
, 10, 0xfe2ce6e0)
II (c, d, a, b, M
6
, 15, 0xa3013414)
II (b, c, d, a, M
13
, 21, 0x4e0811a1)
II (a, b, c, d, M
4
, 6, 0xf7537e82)
II (d, a, b, c, M
11
, 10, 0xbd3af235)
II (c, d, a, b, M
2
, 15, 0x2ad7d2bb)
II (b, c, d, a, M
9
, 21, 0xeb86d391).
Những hăng sô t
i
đƣơc chon theo quy luât sau: ở bƣơc thư i gia tri t
i
la phân nguyên
cua 2
32
*abs(sin(i)), trong đó i = [0..63] đƣơc tinh theo radian.
Sau tất ca những bƣơc nay a, b, c va d lân lƣơt đƣơc công vơi A, B, C va D đê cho
kêt qua đâu ra; va thuât toan tiêp tuc vơi khôi dữ liêu 512-bit tiêp theo cho đên hêt bưc
điên. Đâu ra cuôi cùng la môt khôi 128-bit cua A, B, C va D, đây chinh la ham Băm nhân
đƣơc.
b. Tinh bảo mật trong MD5:
Ron Rivest đa phac hoa những cai tiên cua MD5 so vơi MD4 nhƣ sau:
÷ Vòng thư 4 đƣơc thêm vao (còn MD4 chỉ có 3 vòng).
÷ Mỗi bƣơc đƣơc công thêm môt hăng sô duy nhất.
÷ Ham G ở vòng 2 thay đôi tư ((X ± Y) (X ± Z) (Y ± Z)) thành ((X ± Z) (Y ±
(÷Z))) nhăm giam tinh đôi xưng cua G (giam tinh tuyên tính).
÷ Mỗi bƣơc đƣơc công kêt qua cua bƣơc trƣơc nó, lam cac qua trình có tinh liên
kêt, phu thuôc lân nhau.
÷ Viêc cac khôi con bi thay đôi khi vao vòng 2 va vòng 3 lam cho khuôn dang
cấu trúc vòng lặp thay đôi theo.
÷ Sô lƣơng lƣơng bit dich trai cua mỗi vòng đƣơc tôi ƣu va cac bƣơc dich ở mỗi
vòng là khác nhau.
Năm 1993, den Boer va Bosselaers đa tìm ra đung đô trong viêc sử dung ham nen
(vòng 2 va 3) cua MD5. Điều nay pha vỡ quy luât thiêt kê MD5 la chông lai sư đung đô,
nhƣng MD5 vân la ham Băm đƣơc sử dung rông rai hiên nay.
2.4.2. SHA (Secure Hash Algorithm)
Năm 1995, tô chưc NIST cùng NSA đa thiêt kê ra thuât toan ham Băm an toan
(SHA) sử dung cho chuân chữ ky điên tử DSS. SHA đƣơc thiêt kê dưa trên những
nguyên tăc cua MD4/MD5, tao ra 160-bit gia tri Băm.
a. Miêu tả SHA:
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
116
Cung giông vơi MD5, bưc điên đƣơc công thêm môt bit 1va cac bit 0 ở cuôi bưc
điên đê bưc điên có thê chia hêt cho 512. SHA sử dung 5 thanh ghi dich:
A = 0x67452301
B = 0xefcdab89
C = 0x98badcfe
D = 0x10325476
E = 0xc3d2e1f0
Bưc điên đƣơc chia ra thanh nhiều khôi 512-bit. Ta cung đặt la a, b, c, d va e thay
cho A, B, C, D va E đôi vơi khôi 512-bit đâu tiên cua bưc điên. SHA có bôn vòng lặp chinh
vơi mỗi vòng thưc hiên 20 lân biên đôi: bao gôm thưc hiên vơi môt ham phi tuyên cua 3
trong 5 gia tri a, b, c, d va e; sau đó cung đƣơc công va dich nhƣ trong MD5.
SHA xac lâp bôn ham phi tuyên nhƣ sau:
f
t
(X,Y,Z) = (X ± Y) ((÷X) ± Z) vơi 0 ≤ t ≤ 19
f
t
(X,Y,Z) = X © Y © Z vơi 20 ≤ t ≤ 39
f
t
(X,Y,Z) = (X ± Y) (X ± Z) (Y ± Z) vơi 40 ≤ t ≤ 59
f
t
(X,Y,Z) = X © Y © Z vơi 60 ≤ t ≤ 79.
Bôn hăng sô sử dung trong thuât toan la:
K
t
= 2
1/2
/4 = 0x5a827999 vơi 0 ≤ t ≤ 19
K
t
= 3
1/2
/4 = 0x6ed9eba1 vơi 20 ≤ t ≤ 39
K
t
= 5
1/2
/4 = 0x8f1bbcdc vơi 40 ≤ t ≤ 59
K
t
= 10
1/2
/4 = 0xca62c1d6 vơi 60 ≤ t ≤ 79.
Các khôi bưc điên đƣơc mở rông tư 16 word 32-bit (M
0
đên M
15
) thành 80 word 32-
bit (W
0
đên W
79
) băng viêc sử dung thuât toan mở rông:
W
t
= M
t
với 0 ≤ t ≤ 15
W
t
= (W
t-3
© W
t-8
© W
t-14
© W
t-16
) với 16 ≤ t ≤ 79.
Ta có thê miêu ta môt vòng lặp cua SHA nhƣ sau:
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
117


Hình 5.5: Sơ đô môt vòng lặp cua SHA
Nêu goi W
t
la biêu diên cua khôi con thư t cua bưc điên đƣơc mở rông, va <<<s la
biêu diên dich trai s bit, thì vòng lặp chinh cua SHA nhƣ sau:
a = A, b = B, c = C, D = D, e = E,
for t = 0 to 79
{
TEMP = (a <<< 5) + f
t
(b, c, d) + e +W
t
+ K
t
,
e = d,
d = c,
c = b <<< 30,
b = a,
a = TEMP,
}
A = A + a, B = B + b, C = C + c, D = D + d, E = E + e,
Thuât toan tiêp tuc vơi khôi 512-bit tiêp theo cho tơi khi hêt bưc điên, va kêt qua sau
cùng trong 4 thanh ghi A, B, C, D va E chinh la ham Băm SHA 160-bit.
b. Tinh bảo mật trong SHA:
Đê hiêu rõ hơn về tinh bao mât cua SHA, ta hay so sanh SHA vơi MD5 đê có thê
tìm ra những điêm khac nhau cua hai ham Băm nay:
- MD5 và SHA đều công thêm cac bit “gia” đê tao thanh những khôi chia hêt cho
512-bit, nhƣng SHA sử dung cùng môt ham phi tuyên f cho ca bôn vòng.
e
i-1


d
i-1


c
i-1


b
i-1


a
i-1


e
i


d
i


c
i


b
i


a
i


Hàm phi
tuyến
<<< 30
<<< 5
W
t
K
t
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
118
- MD5 sử dung mỗi hăng sô duy nhất cho mỗi bƣơc biên đôi, SHA sử dung mỗi
hăng sô cho mỗi vòng biên đôi, hăng sô dich nay la môt sô nguyên tô đôi vơi đô
lơn cua word (giông vơi MD4).
- Trong ham phi tuyên thư 2 cua MD5 có sư cai tiên so vơi MD4, SHA thì sử dung
lai ham phi tuyên cua MD4, tưc (X ± Y) (X ± Z) (Y ± Z).
- Trong MD5 vơi mỗi bƣơc đƣơc công kêt qua cua bƣơc trƣơc đó. Sư khac biêt
đôi vơi SHA la côt thư 5 đƣơc công (không phai b, c hay d nhƣ trong MD5), điều
nay lam cho phƣơng phap tấn công cua Boer-Bosselaers đôi vơi SHA bi thất bai
(den Boer va Bosselaers la hai ngƣơi đa pha thanh công 2 vòng cuôi trong
MD4).
Cho đên nay, chƣa có môt công bô nao đƣơc đƣa ra trong viêc tấn công SHA, bởi
vì đô dai cua ham Băm SHA la 160-bit, nó có thê chông lai phƣơng phap tấn công băng
vet can (kê ca birthday attack) tôt hơn so vơi ham Băm MD5 128-bit.
2.5. Môt sô ƣ
́
ng dụ ng cu
̉
a ham Băm
Nhƣ đa
̃
tri
̀
nh ba
̀
y ơ
̉
phầ n đầ u chƣơng , ưng dung chinh cua cac ham băm la sử
dung vơi cac hê chữ ky điên tử , trong đo
́
thay vi
̀
ky
́
trƣ̣ c tiế p lên ca
́
c văn ba
̉
n , thông điệ p
(ma trong đa sô trƣơng hơp la rất lơn, tố c độ chậ m) ngƣơ
̀
i ta se
̃
ky
́
lên gia
́
tri ̣ băm đạ i diệ n
cho toa
̀
n bộ văn ba
̉
n đo
́
. Điề u na
̀
y đặ c biệ t quan trọ ng va
̀
hiệ u qua
̉

̉
i vi
̀
chu
́
ng ta biế t
rằ ng ca
́
c hệ chƣ
̃
ky
́
điệ n tƣ
̉
đề u la
̀
m việ c vơ
́
i ca
́
c phe
́
p ti
́
nh số họ c số lơ
́
n nên ba
̉
n thân
chúng đa tƣơng đôi châm, việ c sƣ
̉
dụ ng gia
́
tri ̣ băm thay cho toa
̀
n bộ văn ba
̉
n la
̀
gia
̉
i pha
́
p
toan diên khăc phuc đƣơc yêu điêm nay cua cac hê chữ ky điên tử . Ngoai viêc xử dung

́
i ca
́
c hệ chƣ
̃
ky
́
điệ n tƣ
̉
ha
̀
m băm co
̀
n đƣ ơc sử dung vao cac muc đich khac nhƣ : xac
thƣ̣ c ho
́
a thông điệ p, xac thưc hóa ngƣơi dùng.
Đôi vơi cac ưng dung không cân giữ bi mât thông điêp ma chỉ cân đam bao thông
điệ p không bi ̣ thay đổ i trên đƣơ
̀
ng truyề n ngƣơ
̀
i ta se
̃

̉
dụ ng ha
̀
m băm cho mụ c đi
́
ch xa
́
c
thƣ̣ c ti
́
nh nguyên vẹ n cu
̉
a thông điệ p đo
́
. Chẳ ng hạ n chu
́
ng ta co
́
mộ t phầ n mề m ma
̃

nguồ n mơ
̉
ơ
̉
dạ ng setup muố n phân phố i cho ngƣơ
̀
i du
̀
ng , rõ rang viêc gửi phân mềm đó

́
i ma
́
y ti
́
nh cu
̉
a ngƣơ
̀
i du
̀
ng la
̀
không cầ n pha
̉
i ma
̃
ho
́
a , tuy nhiên nế u nhƣ phầ n mề m đo
́

bi thay đôi trên đƣơng truyền (chẳ ng hạ n nhƣ bi ̣ gắ n thêm ca
́
c spyware , virus …) thì sẽ
rấ t nguy hiể m. Để đa
̉
m ba
̉
o chu
́
ng ta se
̃
cung cấ p gia
́
tri ̣ băm cu
̉
a phầ n mề m đ ó (khi đo
́

phầ n mề m chi
́
nh la
̀
thông điệ p ). Ngƣơ
̀
i du
̀
ng se
̃
download ca
̉
phầ n mề m va
̀
gia
́
tri ̣ băm
nhậ n đƣợ c , sau đo
́
tiế n ha
̀
nh băm lạ i , đố i sa
́
nh gia
́
tri ̣ băm nhậ n đƣợ c vơ
́
i gia
́
tri ̣ băm
đƣợ c cung cấ p cu
̀
ng vơ
́
i phầ n mề m , nế u hai gi a tri nay khơp nhau thì có thê đam bao
phầ n mề m không bi ̣ sƣ
̉
a đổ i trên đƣơ
̀
ng truyề n. Hiệ n nay đa số ca
́
c phầ n mề m ma
̃
nguồ n

̉
đề u đƣợ c phân phố i theo ca
́
ch na
̀
y.
Trong ca
́
c hệ thố ng yêu cầ u co
́
xa
́
c thƣ̣ c ngƣơ
̀
i du
̀
ng nhƣ ca
́
c hệ qua
̉
n tri ̣ cơ sơ
̉

̃

liệ u, hệ điề u ha
̀
nh , cac ưng dung web , ưng dung dang desktop application , đê lƣu mât
khẩ u ngƣơ
̀
i du
̀
ng ngƣơ
̀
i ta cu
̃
ng sƣ
̉
dụ ng ca
́
c ha
̀
m băm hoặ c ca
́
c hệ ma
̃
trong ca
́
c vai tro
̀

cua ham băm (không sƣ
̉
dụ ng kho
́
a ). Khi đo
́
mỗ i ta
̀
i khoa
̉
n cu
̉
a ngƣơ
̀
i du
̀
ng thay vi
̀
lƣu
dƣơ
́
i dạ ng tên truy cậ p (username) va mât khâu (password) sẽ đƣơc lƣu dƣơi dang : tên
ngƣơ
̀
i du
̀
ng, gia tri băm cua mât khâu . Khi mộ t ngƣơ
̀
i du
̀
ng đăng nhậ p va
̀
o hệ thố ng , hệ
thố ng se
̃
lấ y tên truy cậ p , mậ t khẩ u họ nhậ p va
̀
o , kiể m tra xem co
́
tên truy cậ p na
̀
o nhƣ
vậ y hay không . Nế u co
́
se
̃
tiế n ha
̀
nh băm gia
́
tri ̣ mậ t khẩ u do ngƣơ
̀
i du
̀
ng nhậ p va
̀
o , đố i
Chƣơng V: Chƣ
̃
ky
́
điệ n tƣ
̉
va
̀
ha
̀
m băm
119
sanh vơi gia tri băm tƣơng ưng lƣu trong cơ sở dữ liêu (có thê ở dang file text , xml, hay
file cơ sơ
̉

̃
liệ u cu
̉
a mộ t hệ qua
̉
n tri ̣ cơ sơ
̉

̃
liệ u na
̀
o đo
́
). Nế u kế t qua
̉
đố i sa
́
nh la
̀
khơ
́
p
thì ngƣơi dùng đó la hơp lê , ngƣợ c lạ i nế u không khơ
́
p co
́
nghi
̃
a la
̀
sai mậ t khẩ u . Hiệ n
nay tấ t ca
̉
ca
́
c hệ qua
̉
n tri ̣ cơ sơ
̉

̃
liệ u đề u đƣợ c trang bi ̣ ca
́
c ha
̀
m băm để cho phe
́
p
ngƣơ
̀
i du
̀
ng tạ o ra ca
́
c gia
́
tri ̣ băm cu
̉
a mậ t khẩ u ngƣơ
̀
i du
̀
ng va
̀
lƣu lạ i ca
́
c gia
́
tri ̣ băm na
̀
y.
Việ c lƣu ca
́
c gia
́
tri ̣ băm đa
̉
m ba
̉
o chu
́
ng ta khôn g bi ̣ lộ mậ t khẩ u do mậ t khẩ u đƣợ c lƣu ơ
̉

dang nguyên ban trên ma y ti
́
nh hoặ c khi truyề n qua hệ thố ng mạ ng . Hệ điề u ha
̀
nh Unix

̉
dụ ng nguyên tắ c lƣu mậ t khẩ u nhƣ trên vơ
́
i ha
̀
m băm la
̀
hệ ma
̃
DES đƣợ c lặ p lạ i 25
lầ n, mậ t khẩ u cua ngƣơi dùng đƣơc sử dung nhƣ khóa cua hê ma, ban rõ đem ma hóa la
xâu 64 bit 0.
Ngay nay vơi sư phat triên manh mẽ cua thƣơng mai điên tử , cac giao dich đều
đƣợ c thƣ̣ c hiệ n tƣ
̀
xa, trên ca
́
c hệ thố ng mạ ng nên việ c ƣ
́
ng dung cua cac hê chữ ky điên

̀
va
̀
đi ke
̀
m vơ
́
i đo
́
la
̀
ca
́
c ha
̀
m băm nga
̀
y ca
̀
ng trơ
̉
nên quan trọ ng . Moi thông tin trong
cac giao dich thƣơng mai điên tử đều cân đƣơc bao vê băng cac chữ ky , ham băm. Vì
thế co
́
thể no
́
i rằ ng đôi khi ca
́
c ha
̀
m băm co
̀
n quan trọ ng hơn ca
̉
ca
́
c hệ ma
̃
mậ t.
3. Bai tâp
Bai tâp 5.1: Cho hê chữ ky điên tử ElGamma có p = 1019, a = 191 la môt phân tử
nguyên thuy cua Z
P
*
, x = 37.
a) Hãy tìm khóa công khai K
P
, va khóa bi mât K
S
cua hê chữ ky trên.
b) Đê ky lên ban rõ M = 102 ngƣơi ta chon k = 143, hay thưc hiên ky đƣa ra chữ ky
tƣơng ưng.
c) Kiêm tra xem cặp (K, S) = (251, 507) có la chữ ky lên văn ban M = 127 hay
không.
Bai tâp 5.2: Cho hê chƣ
̃
ky
́
điệ n tƣ
̉
RSA có p = 31, q = 41, e = 271.
a) Hãy tìm khóa công khai K
P
, va khóa bi mât K
S
cua hê ma trên.
b) Hay tinh chữ ky cho thông điêp M = 100.
Bai tâp 5.3: Cho thuậ t toa
́
n chƣ
̃
ky
́
điệ n tƣ
̉
DSA co
́
q = 11, p = 67, α = 9, β = 62, khóa bi
mậ t a = 4, đê ky lên văn ban M = 8, ngƣơ
̀
i ta chọ n k = 2. Hay xac đinh chữ ky lên văn ban
M.
Bai tâp 5.4: Cho hệ chƣ
̃
ky
́
điệ n tƣ
̉
RSA co
́
p = 47, q = 71, e= 79. Hay xac đinh chữ ky
cua hê ma lên thông điêp M = 688.

̉
dụ ng mộ t trong ca
́
c ngôn ngƣ
̃
lậ p tri
̀
nh C, C++, Java hoặ c C# đê lam cac bai tâp sau:
Bai tâp 5.5: Cai đặt hê chữ ky điên tử RSA.
Bai tậ p 5.6: Cai đặt hê chữ ky điên tử El Gammal.
Bai tâp 5.7: Cai đặt ham băm MD5.
Bai tâp 5.8: Cai đặt ham băm SHA.
Gợi y
́
: Có thê sử dung cac thƣ viên sô lơn nhƣ MIRACL hoặ c ca
́
c thƣ việ n ma
̃
nguồ n mơ
̉

nhƣ Crypto++ (chi tiế t tạ i đi ̣ a chi
̉
website: http://www.cryptopp.com/), Cryptolib ( chi tiế t tạ i
đi ̣ a chi
̉
website http://www.cs.auckland.ac.nz/~pgut001/cryptlib).

Chƣơng VI: Quản ly khoa
120
CHƢƠNG VI: QUAN LY KHOA
1. Quản ly
́
khoá trong các mang truyền tin
Trong cac chƣơng trƣơc, ta đa lam quen vơi cac phƣơng phap lâp ma va cac bai
toan quan trong khac liên quan đên viêc truyền tin bao mât trên cac mang truyền tin công
công nói chung. Ta cung đa thấy răng cac hê mât ma khoa công khai công khai có nhiều
ƣu viêt hơn cac hê mât ma đôi xưng trong viêc lam nền tang cho cac giai phap an toan
thông tin, va đặc biêt đôi vơi cac hê ma khoa đôi xưng thì viêc thưc hiên đôi hỏi những
kênh bi mât đê chuyên khoa hoặc trao đôi khoa giữa cac đôi tac, thì về nguyên tăc, đôi
vơi cac hê ma hoa vơi khoa công khai không cân có những kênh bi mât nhƣ vây, vì cac
khoa công khai có thê đƣơc truyền hay trao đôi cho nhau môt cach công khai qua cac
kênh truyền tin công công. Tuy nhiên, trên thưc tê, đê bao đam cho cac hoat đông thông
tin đƣơc thât sư an toan, không phai bất cư thông tin nao về cac khoa công khai cua môt
hê ma, cua môt thuât toan kiêm tra chữ ky, cua môt giao thưc xac nhân thông bao hay
xac nhân danh tinh … cung phat công khai môt cach tran lan trên mang công công, mặc
dù la công khai nhƣng ngƣơi ta cung muôn la những ai cân biêt thì mơi nên biêt ma thôi.
Do đó, mặc dù sử dung cac hê có khoa công khai, ngƣơi ta cung muôn có những giao
thưc thưc hiên viêc trao đôi khoa giữa cac đôi tac thưc sư có nhu câu giao lƣu thông tin
vơi nhau, kê ca trao đôi khoa công khai. Viêc trao đôi khoa giữa cac chu thê trong môt
công đông nao đó có thê đƣơc thiêt lâp môt cach tư do giữa bất cư hai ngƣơi nao khi có
nhu câu trao đôi thông tin, hoặc có thê đƣơc thiêt lâp môt cach tƣơng đôi lâu dai trong
thơi gian nao đó trong ca công đông vơi sư điều phôi cua môt cơ quan đƣơc uy thac TA.
Viêc trao đôi khoa trong trƣơng hơp thư nhất ta goi đơn gian la thoa thuân khoa, còn
trong trƣơng hơp thư hai ta goi la phân phôi khoa; TA la nơi thưc hiên viêc phân phôi,
cung la nơi quan ly khoa. Viêc thoa thuân khoa nói chung không cân có sư tham gia cua
môt TA nao va chỉ có thê xay ra khi cac hê bao mât ma ta sử dung la hê có khoa công
khai, còn viêc phân phôi khoa thì có thê xay ra đôi vơi cac trƣơng hơp sử dung cac hê
khoa đôi xưng cung nhƣ cac hê có khoa công khai. Viêc phân phôi khoa vơi vai trò quan
tri khoa cua môt TA la môt viêc bình thƣơng, đa tôn tai rất lâu trƣơc khi có cac hê mât ma
khoá công khai . Ta sẽ băt đâu vơ
́
i môt vai hê phân phôi khoa nhƣ vây, sau đo
́
sẽ giơi
thiêu môt sô hê phân phôi hoặc trao đôi khoa khi dùng cac sơ đô an toan va bao mât vơi
khoá công khai.
2. Môt sô hê phân phôi khoá
2.1. Sơ đô phân phôi khoá Blom
Gia sử ta có môt mang gôm có n ngƣơi dùng va mỗi ngƣơi dùng đó đều có nhu câu
trao đôi thông tin bi mât vơi moi ngƣơi trong mang. Gia sử sơ đô mât ma đƣơc sử dung
la môt sơ đô mât ma khoa đôi xưng (chăng han nhƣ DES). Toan bô mang cân có
2
) 1 ( ÷ n n
khoa khac nhau cho chưng ấy cặp ngƣơi dùng khac nhau trong mang. Môt cơ
quan uy thac TA quan ly chưng ấy khoa va phai chuyên cho mỗi ngƣơi dùng (n-1) khoá
chung vơi (n-1) ngƣơi còn lai trong mang; nhƣ vây TA phai truyền băng những kênh bi
mât tất ca la n(n-1) lƣơt khoa đên tất ca n ngƣơi dùng.
Chƣơng VI: Quản ly khoa
121
Năm 1985, Blom đề nghi ̣ mộ t sơ đồ phân phố i khoa
́
, ma sau đây ta goi la sơ đô
Blom, trong trƣơ
̀
ng hợ p đơn gia
̉
n nhấ t đƣợ c mô ta
̉
nhƣ sau:
- TA chon môt sô nguyên tô p ≥ n, va chon cho mỗi ngƣơi dùng A môt sô
p A
Z r e
. Sô p va cac sô r
A
đƣơc công bô công khai.
- Sau đó, TA chon ba sô ngâu nhiên a, b, c
p
Z e va lâp đa thưc:
p cxy y x b a y x f mod ) ( ) , ( + + + =
- Vơi mỗi ngƣơi dùng A, TA tinh p x b a r x f x g
A A A A
mod ) , ( ) ( + = = , trong đó
p br a a
A
mod
A
+ = , p cr b b
A A
mod + = . TA chuyên bi mât cặp sô (a
A
, b
A
) cho
A. Nhƣ vây, A biêt x b a x g
A A
+ =
A
) ( .
So vơi viêc TA phai truyền bi mât n(n-1) lƣơt khoa trên thì vơi sơ đô Blom, TA chỉ
phai truyền n lƣơt cac cặp sô (a
A
, b
A
) mà thôi.
Sau khi đa thưc hiên xong cac công viêc chuân bi đó, bây giơ nêu hai ngƣơi dùng A
va B muôn tao khoa chung đê truyền tin băng mât ma cho nhau thì khoa chung K
A,B
đó sẽ
là:
), , ( ) ( ) (
, B A A B B A B A
r r f r g r g K = = =
ma mỗi ngƣơi A va B tinh đƣơc băng những thông tin mình đa có.
Nhƣ vây, theo sơ đô phân phôi nay, TA phân phôi cho moi ngƣơi dùng môt phân bi
mât cua khoa, hai ngƣơi dùng bất ky phôi hơp phân bi mât cua riêng mình vơi phân công
khai cua ngƣơi kia đê cùng tao nên khoa bi mât chung cho hai ngƣơi. Sơ đô nay la an
toan theo nghĩa sau đây: bất ky môt ngƣơi thưc ba C nao (kê ca C la môt ngƣơi tham gia
trong mang) có thê đƣơc phat hiên đƣơc khoa bi mât riêng cua hai ngƣơi A va B. Thưc
vây, dù C có la ngƣơi tham gia trong mang đi nữa, thì cai ma C biêt nhiều lăm la hai sô
a
C
, b
C
do TA cấp cho. Ta chưng minh răng vơi những gì ma C biêt thì bất ky gia tri
p
Z e 
nao cung có thê đƣơc chấp nhân la K
A,B
. Những gì ma C biêt , kê ca chấp nhân
B A
K
,
=  ,
đƣơc thê hiên thành:
C C
C C
B A B A
b cr b
a br a
r cr r r b a
= +
= +
= + + +  ) (

Nêu xem a, b, c la ân sô, ta có đinh thưc cac hê sô ở vê phai la:
), )( (
1 0
0 1
1
B C A C
C
C
B A B A
r r r r
r
r
r r r r
÷ ÷ =
+

Theo gia thiêt chon cac sô r, đinh thưc đó khac 0, do đó hê phƣơng trình luôn có
nghiêm (a, b, c), tưc viêc chấp nhân  la gia tri cua K
A,B
la hoan toan có thê. Bất ky gia tri
Chƣơng VI: Quản ly khoa
122
p
Z e  nao cung có thê đƣơc C chấp nhân la K
A,B
, điều đó đông nghĩa vơi viêc C không
biêt K
A,B
la sô nao.
Tuy nhiên, nêu có hai ngƣơi tham gia C va D (khac A, B) liên minh vơi nhau đê phat
hiên K
A,B
thì lai rất dê dang, vì ca C va D biêt:
D D
D
C
C
b
a
b
a
= +
= +
= +
= +
cr b
br a
cr b
br a
D
C
C

bôn phƣơng trình đó đu đê xac đinh (a, b, c) tư đó tìm đƣơc K
A,B
.
Ta có thê mở rông sơ đô Blom nói trên đê đƣơc môt sơ đô Blom tông quat, trong đó
moi khoa chung K
A,B
cua hai ngƣơi dùng A va B la bi mât hoan toan đôi vơi bất ky liên
minh nao gôm k ngƣơi ngoai A va B, nhƣng không còn la bi mât đôi vơi moi liên minh
gôm k+1 ngƣơi tham gia trong mang. Muôn vây, ta chỉ cân thay đa thưc f(x, y) nói trên
băng môt đa thưc đôi xưng bâc 2k sau đây:
¿¿
= =
=
k
i
k
j
j i
ij
p y x a y x f
0 0
, mod ) , (
trong đó
ji ij p ij
a a k j i Z a = s s e , , 0 , vơi moi i, j.
2.2. Hê phân phôi khoá Kerberos
Kerberos la tên cua môt hê dich vu phân phôi (hay cấp phat) khoa phiên (sesion
key) cho tưng phiên truyền tin bao mât theo yêu câu cua ngƣơi dùng trong môt mang
truyền tin. Hê mât ma đƣơc sử dung thƣơng la hê có khoa đôi xưng chăng han nhƣ DES.
Đê thưc hiên hê nay, trƣơc hêt cơ quan đƣơc uy thac (hay trung tâm điều phôi) TA
cân chia se môt khoa DES bi mât K
A
vơi mỗi thanh viên A trong mang. Sau đó, mỗi lân A
có nhu câu truyền tin bao mât vơi môt thanh viên khac B thì yêu câu TA cấp môt khoa
phiên cho ca A va B. Viêc cấp phat đó sẽ đƣơc thưc hiên băng môt giao thưc phân phôi
khoa nhƣ sau:
1) TA chon ngâu nhiên môt khoa phiên K, xac đinh môt tem thơi gian T va thơi
gian sông L (nhƣ thê có nghĩa la khoa phiên K có gia tri sử dung trong khoang thơi gian
tư T đên T+L).
2) TA tính ), , ), ( , (
1
L T B ID K e m
A
K
= ) , ), ( , (
2
L T A ID K e m
B
K
= va gửi (m
1
, m
2
) đên
A.
3) A dùng ham giai ma
A
K
d cho m
1
đê thu đƣơc K, T, L, ID(B). Sau đó tinh
), ), ( (
3
T A ID e m
K
= va gửi (m
3
, m
2
) cho B.
4) B dùng cac ham giai ma
B
K
d cho m
2
và d
K
cho m
3
đê thu đƣơc K, T, L, ID(A)
va ID(A), T. Nêu thấy hai gia tri cua ID(A) va cua T trùng nhau thì B tinh tiêp m
4
= e
K
(T +
1) va gửi m
4
cho A.
Chƣơng VI: Quản ly khoa
123
5) A dùng ham giai ma d
K
cho m
4
va thử xem kêt qua thu đƣơc có đúng la T+1
hay không.
Trong giao thưc nói trên, cac ky hiêu ID(A) va ID(B) la chỉ danh tinh cua A va cua B,
cac thông tin đó la công khai.
Hoan thanh giao thưc gôm 5 bƣơc nói trên, TA (cùng vơi A va B) đa thưc hiên xong
viêc cấp phat môt khoa phiên K cho hai ngƣơi dùng A va B đê truyền tin mât ma cho
nhau. Tất ca cac viêc trao đôi cac thông tin trong giao thưc đó đều đƣơc thưc hiên trên
cac kênh công công, dù khoa K vân la bi mât (chỉ A, B va TA la đƣơc biêt ma thôi). Ngoai
viêc cấp phat khoa, giao thưc đó còn thưc hiên đƣơc viêc xac nhân khoa: B va A đều tin
chăc đƣơc răng đôi tac cua mình đa thưc sư có khoa K do kêt qua cua viêc thưc hiên cac
phep thử ở bƣơc 4 va 5. Thêm nữa, ca A va B còn biêt đƣơc thơi han có hiêu lưc cua
khoá.
Phân phôi khoa bi mât theo giao thưc Kerberos có đô tin cây cao, tuy nhiên trong
thưc tê, viêc sử dung nó cung đòi hỏi tôn nhiều thơi gian nên ngay nay cung chỉ đƣơc
dùng trong những trƣơng hơp han chê.
2.3. Hê phân phôi kho
́
a Diffe-Hellman
Hê phân phôi khoa Diffe-Hellman không đòi hỏi TA phai biêt va chuyên bất ky thông
tin mât nao về khoa cua cac ngƣơi tham gia trong mang đê ho thiêt lâp đƣơc khoa chung
bi mât cho viêc truyền tin vơi nhau.
Trong môt hê phân phôi khoa Diffe-Hellman, TA chỉ viêc chon môt sô nguyên tô lơn
p va môt phân tử nguyên thuy o theo mod p sao cho bài toán tính log
a
trong
*
p
Z la rất
khó. Cac sô p va o đƣơc công bô công khai cho moi ngƣơi tham gia trong mang. Ngoai
ra, TA có môt sơ đô chữ ky vơi thuât toan ky bi mât sig
TA
va thuât toan kiêm tra công khai
ver
TA
.
Môt thanh viên bất ky A vơi danh tinh ID(A) tuy y chon môt sô a
A
(0 ≤ a
A
≤ p-2) và
tính p b
a
A
mod
A
o = . A giữ bi mât a
A
va đăng ky cac thông tin (ID(A), b
A
) vơi TA. TA cấp
cho A chưng chỉ:
C(A) = (ID(A), b
A
, sig
TA
(ID(A), b
A
)).
Cac chưng chỉ cua cac thanh viên trong mang có thê đƣơc lƣu giữ trong môt cơ sở
dữ liêu công khai hoặc uy thac cho TA lƣu giữ va cung cấp công khai cho cac thanh viên
mỗi khi cân đên.
Khi hai thanh viên A va B trong mang cân có môt khoa bi mât chung đê truyền tin
bao mât cho nhau thì A dùng thông tin công khai b
B
có trong C(B) kêt hơp vơi sô bi mât
cua mình la a
A
đê tao nên khoa.
. mod mod
A
,
p p b K
A B
a a a
B B A
o = =
Khoa chung đó B cung tao ra đƣơc tư cac thông tin công khai b
A
cua A va sô bi mât
a
B
cua mình:
. mod mod
B
,
p p b K
B A
a a a
B B A
o = =
Chƣơng VI: Quản ly khoa
124
Đê bao đam đƣơc cac thông tin về b
B
và b
A
la chinh xac, A va B có thê dùng thuât
toán ver
TA
đê kiêm tra chữ ky xac nhân cua TA trong cac chưng chỉ C(B) va C(A) tƣơng
ưng.
Cơ sơ
̉
ly
́
thuyế t đa
̉
m b ao cho sư an toan cua cac phƣơng phap trao đôi khóa dưa
trên hệ phân phố i kho
́
a Diffie -Hellman la
̀
ba
̀
i toa
́
n Logarithm rơ
̀
i rạ c , có thê tham khao
thêm trong phầ n 3.3 chƣơng IV để biế t thêm.
3. Trao đôi khoá va thoả thuân khoá
3.1. Giao thưc trao đôi khoá Diffie-Hellman
Hê phân phôi khoa Diffie-Hellman nói trong muc trƣơc có thê dê dang biên đôi
thanh môt giao thưc trao đôi (hay thoa thuân) khoa trưc tiêp giữa cac ngƣơi sử dung ma
không cân có sư can thiêp cua môt TA lam nhiêm vu điều hanh hoặc phân phôi khoa. Môt
nhóm bất ky ngƣơi sử dung có thê thoa thuân cùng dùng chung môt sô nguyên tô lơn p
va môt phân tử nguyên thuy o theo mod p, hai ngƣơi bất ky trong nhóm A va B mỗi khi
muôn truyền tin bao mât cho nhau có thê cùng thưc hiên giao thưc sau đây đê trao đôi
khoá:
1) A chon ngâu nhiên sô a
A
(0 ≤ a
A
≤ p-2) bi mât, tinh p b
a
A
mod
A
o = va gửi b
A

cho B .
2) Tƣơng tư, B chon ngâu nhiên sô a
B
(0 ≤ a
B
≤ p-2) bi mât, tinh p b
a
B
mod
B
o =
va gửi b
B
cho A.
3) A va B cùng tinh đƣơc khoa chung:
). mod ( mod mod
A A
,
p p b p b K
B B
a a a
A
a
B B A
o = = =
Giao thưc trao đôi khoa Diffie-Hellman có cac tinh chất sau:
- Giao thưc la an toan đôi vơi viêc tấn công thu đông, nghĩa la môt ngƣơi thư ba
dù biêt b
A
và b
B
sẽ khó ma biêt đƣơc K
A,B
.
Chúng ta biêt răng bai toan “biêt b
A
và b
B
tìm K
A,B
” chinh la bai toan Diffie-Hellman,
bai toan nay tƣơng đƣơng vơi bai toan pha ma ElGammal. Bây giơ ta sẽ chưng minh điều
này.
Phep mât ma ElGammal vơi khoa K = ( | o , , , a p ), trong đó p
a
mod o | = cho ta tư
môt ban rõ x va môt sô ngâu nhiên
1 ÷
e
p
Z k lâp đƣơc mât ma e
K
(x, k) = (y
1
, y
2
) vơi
p y
k
mod
1
o = , . mod
2
p x y
k
| = Va phep giai ma đƣơc cho bởi p y
k
mod
1
o = .
Gia sử ta có thuât toan A giai bai toan Diffie-Hellman. Ta sẽ dùng A đê pha ma
ElGammal nhƣ sau:
Cho mât ma (y
1
, y
2
). Trƣơc tiên, dung A cho p y
k
mod
1
o = và , mod p
a
o | = ta
đƣơc p B y A
k ka
mod ) , (
1
| o = = . Sau đó, ta thu đƣơc ban rõ x tư
k
| và y
2
nhƣ sau:
. mod ) (
1
2
p y x
k ÷
= |
Chƣơng VI: Quản ly khoa
125
Ngƣơc lai, gia sử có môt thuât toan khac la B dùng đê pha ma ElGammal, tưc
. mod ) ( ) , , , , (
1
1 2 2 1
p y y x y y p B
a ÷
= = | o Ap dung B cho
A
b = | , y
1
= b
B
, y
2
=1, ta đƣơc
, mod ) ) .( 1 ( ) 1 , , , , (
A A
1 1 1
p b b b p B
B
a a a
B B A
o o = =
÷ ÷ ÷
tưc giai đƣơc bai toan Diffie-Hellman.
- Giao thưc la không an toan đôi vơi viêc tấn công chu đông băng cach đanh
trao giữa đƣơng.
Nghĩa la môt ngƣơi thư ba C có thê đanh trao cac thông tin trao đôi giữa A va B.
Chăng han, C thay
A
a
o ma A đinh gửi cho B bởi
A
a'
o và thay
B
a
o ma B đinh gửi cho A
bởi
B
a'
o . Nhƣ vây, sau khi thưc hiên giao thưc trao đôi khoa, A đa lâp môt khoa chung
B
a a '
A
o vơi C ma vân tƣởng la vơi B; đông thơi B cung lâp môt khoa chung
B A
a a'
o vơi C
ma vân tƣởng la vơi A. C có thê gia ma moi thông bao ma A tƣởng nhâm la mình gửi đên
B cung nhƣ moi thông bao ma B tƣởng nhâm la mình gửi đên A.
Môt cach khăc phuc kiêu tấn công nay la lam sao đê A va B có kiêm thử đê xac
nhân tinh đúng đăn cua cac khoa công khai b
A
và b
B
. Ngƣơi ta đƣa vao giao thưc trao đôi
khoá Diffie-Hellman thêm vai trò điều phôi cua môt TA đê đƣơc môt hê phân phôi khoa
Diffie-Hellman nhƣ môt cach khăc phuc nhƣơc điêm nay. Trong hê phân phôi khoa Diffie-
Hellman, sư can thiêp cua TA la rất yêu, thưc ra TA chỉ lam mỗi viêc la cấp chưng chỉ xac
nhân khoa công khai cho tưng ngƣơi dùng chư không đòi hỏi biêt thêm bất cư môt bi mât
nao cua ngƣơi dùng. Tuy nhiên, nêu chƣa thoa man vơi vai trò han chê đó cua TA thì có
thê cho TA môt vai trò xac nhân yêu hơn, không liên quan gì đên khoa, chăng han nhƣ
xac nhân thuât toan kiêm thử chữ ky cua ngƣơi dùng, còn ban thân cac thông tin về khoa
(ca bi mât lân công khai) thì do cac ngƣơi dùng trao đôi trưc tiêp vơi nhau. Vơi cach khăc
phuc có vai trò hêt sưc han chê đó cua TA, ta đƣơc giao thưc sau đây:
3.2. Giao thưc trao đôi khoá Diffie-Hellman co chưng chỉ xác nhân
Mỗi ngƣơi dùng A có môt danh tinh ID(A) va môt sơ đô chữ ky vơi thuât toan ky sig
A

va thuât toan kiêm thử ver
A
. TA cung có môt vai trò xac nhân, nhƣng không phai xac nhân
bất ky thông tin nao liên quan đên viêc tao khoa mât ma cua ngƣơi dùng (dù la khoa bi
mât hay khoa công khai), ma chỉ la xac nhân môt thông tin it quan hê khac nhƣ thuât toan
kiêm thử chữ ky cua ngƣơi dùng. Còn ban thân cac thông tin liên quan đên viêc tao khoa
mât ma thì cac ngƣơi dùng sẽ trao đôi trưc tiêp vơi nhau. TA cung có môt sơ đô chữ ky
cua mình, gôm môt thuât toan ky sig
TA
va môt thuât toan kiêm thử công khai ver
TA
. Chưng
chỉ ma TA cấp cho mỗi ngƣơi A sẽ la:
C(A) = (ID(A), ver
A
, sig
TA
(ID(A), ver
A
)).
Rõ rang trong chưng chỉ đó TA không xac nhân bất ky điều gì liên quan đên viêc tao
khoa cua A ca. Viêc trao đôi khoa giữa hai ngƣơi dùng A va B đƣơc thưc hiên theo giao
thưc sau đây:
1) A chon ngâu nhiên sô a
A
(0 ≤ a
A
≤ p-2), tính p b
a
A
mod
A
o = va gửi b
A
cho B.
2) B chon ngâu nhiên sô a
B
(0 ≤ a
B
≤ p-2), tính p b
B
a
B
mod o = tinh tiêp
, mod p b K
B
a
A
= ), , (
A B B B
b b sig y = va gửi (C(A), b
B
, y
B
) cho A.
Chƣơng VI: Quản ly khoa
126
3) A tính , mod p b K
A
a
B
= dùng ver
B
đê kiêm thử y
B
, dùng ver
TA
đê kiêm thử C(B),
sau đó tinh y
A
= sig
A
(b
A
, b
B
) va gửi (C(A), y
A
) cho B.
4) B dùng ver
A
đê kiêm thử y
A
và dùng ver
TA
đê kiêm thử C(A).
Nêu tất ca cac bƣơc đó đƣơc thưc hiên va cac phep kiêm thử đều cho kêt qua đúng
đăn thì giao thưc đƣơc kêt thúc, va ca A va B đều có đƣơc khoa chung K. Do viêc dùng
cac thuât toan kiêm thử nên A biêt chăc gia tri b
B
la cua B va B biêt chăc gia tri b
A
cua A,
loai trư kha năng môt ngƣơi C nao khac đanh trao cac gia tri đó giữa đƣơng.
3.3. Giao thưc trao đôi khoá Matsumoto-Takashima-Imai
Giao thưc trình bay trong muc trên dùng ba lân chuyên tin qua lai đê thiêt lâp môt
khoa chung. Cac tac gia Nhât Matsumoto, Takashima va Imai đề nghi môt cai tiên đê chỉ
dùng môt giao thưc gôm hai lân chuyên tin (môt tư A đên B va môt tư B đên A) đê thoa
thuân khoa nhƣ sau:
Ta gia sử răng trƣơc khi thưc hiên giao thưc, TA đa ky cấp chưng chỉ cho mỗi
ngƣơi dùng A theo cach trong giao thưc trao đôi DH:
C(A) = (ID(A), b
A
, sig
TA
(ID(A), b
A
)).
va thuât toan kiêm thử chữ ky ver
TA
la công khai. Trong giao thưc nay, cac b
A
không
trưc tiêp tao nên cac khoa mât ma cho truyền tin, ma vơi mỗi phiên truyền tin bao mât,
khoa phiên (sesion key) sẽ đƣơc tao ra cho tưng phiên theo giao thưc.
Giao thưc trao đôi khoa phiên MTI gôm ba bƣơc (trong đó có hai lân chuyên tin)
nhƣ sau:
1) A chon ngâu nhiên sô r
A
(0 ≤ r
A
≤ p-2), tính , mod p s
A
r
A
o = va gửi (C(A), s
A
)
cho B.
2) B chon ngâu nhiên sô r
B
(0 ≤ r
B
≤ p-2), tính , mod p s
B
r
B
o = va gửi (C(B), s
B
)
cho A.
3) A tính , mod .
A
p b s K
A
r
B
a
B
= vơi gia tri b
B
thu đƣơc tư C(B)
B tính , mod . p b s K
B B
r
B
a
A
= vơi gia tri b
B
thu đƣơc tư C(A).
Hai cach tinh đó cho cùng môt gia tri . mod
A
p K
a r a r
B B A
+
=o
Giao thưc nay cung có kha năng giữ bi mât khoa K nhƣ đôi vơi giao thưc Diffie-
Hellman trƣơc sư tấn công thu đông. Tuy nhiên, vì không có chưng chỉ đôi vơi cac gia tri
s
A
, s
B
nên vân có nguy cơ cua sư tấn công tich cưc băng viêc đanh trao giữa đƣơng bởi
môt ngƣơi C nao đó theo kiêu sau đây:

Lẽ ra A gửi đên B cặp (C(A), s
A
) thì C đanh trao băng cach (C(A), s
A
) va gửi đên B
gia tri (C(A), s‟
A
) vơi p s
A
r
A
mod '
'
o = . Va ngƣơc lai, đang lẽ B gửi đên A gia tri (C(B), s
B
)
C(A),
A
r'
o

A

C

B
C(A),
A
r
o
C(B),
B
r'
o C(B),
B
r
o
Chƣơng VI: Quản ly khoa
127
thì C đanh trao băng cach nhân (C(B), s
B
) va gửi đên A gia tri (C(B), s‟
B
) vơi
p s
B
r
B
mod '
'
o = . Khi đó A tinh đƣơc khoa:
, mod
A
'
1
p K
a r a r
B B A
+
=o
va B tinh đƣơc khoa:
. mod
A
'
2
p K
a r a r
B B A
+
=o
Hai gia tri K
1
và K
2
nay khac nhau nên không giúp A va B truyền tin đƣơc cho nhau,
nhƣng C không có kha năng tinh đƣơc gia tri nao trong hai gia tri đó (vì không biêt a
A

a
B
) nên khac vơi giao thưc Diffie-Hellman, ở đây C chỉ có thê pha rôi, chư không thê đanh
căp thông tin đƣơc.
3.4. Giao thưc Girault trao đôi khoá không chưng chỉ
Giao thưc Girault đƣơc đề xuất năm 1991. Trong giao thưc nay, ngƣơi sử dung A
không cân dùng chưng chỉ C(A) ma thay băng môt khoa công khai tư chưng thưc đƣơc
cấp trƣơc bởi môt TA. Phƣơng phap nay sử dung kêt hơp cac đặc tinh cua bai toan RSA
va logarit rơi rac.
Gia sử n la tich cua hai sô nguyên tô lơn p va q, n = p*q, p va q có dang p = 2p
1
+1,
q = 2q
1
+1, trong đó p
1
và q
1
cung la cac sô nguyên tô. Nhóm nhân
*
n
Z đăng cấu vơi tich
* *
q p
xZ Z . Cấp cao nhất cua môt phân tử trong
*
n
Z la bôi chung be nhất cua p-1 và q-1, tưc
la băng 2p
1
q
1
. Gia sử o la môt phân tử cấp 2p
1
q
1
cua
*
n
Z . Nhóm tuân hoan sinh bởi o
đƣơc ky hiêu la G, bai toan tinh logarit rơi rac theo cơ sô o trong G đƣơc gia thiêt la rất
khó.
Cac sô n va o la công khai. Chỉ TA biêt p, q. TA chon sô mu công khai e vơi
UCLN(e, ) (n | ) = 1, va giữ bi mât ). ( mod
1
n e d |
÷
=
Mỗi ngƣơi dùng A có môt danh tinh ID(A), chon ngâu nhiên môt sô G a e
A
, giữ bi
mât a
A
và tính n b
a
A
mod
A
o = , rôi gửi a
A
, b
A
cho TA. TA thử lai điều kiên n b
a
A
mod
A
o =
, rôi cấp cho A môt khoa công khai tư chưng thưc p
A
= (b
A
-ID(A))
d
mod n. Trong khoá
công khai p
A
không có thông tin về a
A
nhƣng TA cân biêt a
A
đê thử điều kiên
n b
a
A
mod
A
o = .
Giao thưc Girault trao đôi khoa giữa hai ngƣơi dùng A va B đƣơc thưc hiên bởi cac
bƣơc sau đây:
1) A chon ngâu nhiên G r
A
e , tính n s
A
r
A
mod o = va gửi cho B cac gia tri (ID(A),
p
A
, s
A
).
2) B chon ngâu nhiên G r
B
e , tính n s
B
r
B
mod o = va gửi cho B cac gia tri (ID(B),
p
B
, s
B
).
3) A tính khoá , mod )) ( (
A
n V ID p s K
A
r e
B
a
B
+ =
B tính khoá . mod )) ( (
B
n A ID p s K
B
r e
A
a
A
+ =
Chƣơng VI: Quản ly khoa
128
Ca hai gia tri đó cua K đều băng nhau va băng . mod
A
n K
a r a r
B B A
+
=o .
Băng cac lâp luân tƣơng tư nhƣ ở muc trƣơc, ta dê thấy răng môt ngƣơi thư ba C
khó ma tao ra cac thông tin gia mao đê gửi đên A hoặc B, nêu tấn công băng cach đanh
trao giữa đƣơng thì có thê pha rôi đê ngăn can A va B tao lâp khoa chung nhƣng không
thê đanh căp thông tin trao đôi giữa A va B.
Còn lai vấn đề: tai sao TA cân biêt a
A
va thử điều kiên n b
a
A
mod
A
o = trƣơc khi
cấp p
A
cho A! Ta gia sử răng TA không biêt a
A
va cấp p
A
= (b
A
-ID(A))
d
mod n cho A , và
thử xem có thê xay ra chuyên gì?
Môt ngƣơi thư ba C có thê chon môt gia tri a‟
A
và tính n b
a
A
mod '
A
'
o = , rôi tinh b‟
C
=
b‟
A
- ID(A) – ID(C) va đƣa (ID(C), b‟
C
) cho TA. TA sẽ cấp cho C môt “khoa công khai tư
chưng thưc”:
p‟
C
= (b‟
C
– ID(C))
d
mod n.
Vì b‟
C
– ID(C) = b‟
A
– ID(A) nên thưc tê C đa đƣơc cấp:
p‟
C
= p‟
A
= (b‟
A
– ID(A))
d
mod n.
Bây giơ gia sử A va B thưc hiên giao thưc trao đôi khoa va C xen vao ở giữa. Nhƣ
vây, A gửi cho B ) mod , ), ( ( n p A ID
A
r
A
o , nhƣng do C đanh trao nên B sẽ nhân đƣơc
) mod , ' ), ( (
'
n p A ID
A
r
A
o . Do đó, B va C tinh đƣơc cùng môt khoa:
, mod )) ( ( mod '
' ' ' '
A
n B ID p s n K
A A B B A
r e
B
a
B
a r a r
+ = =
+
o
còn A tinh đƣơc khoa . mod
A
n K
a r a r
B B A
+
=o

B va C có cùng môt khoa khac vơi khoa cua A nhƣng B vân nghĩ răng mình có
chung khoa vơi A. Vì thê, C có thê giai ma moi thông bao ma B gửi cho A, tưc đanh căp
thông tin tư B đên A. Viêc TA biêt a
A
va thử điều kiên n b
a
A
mod
A
o = trƣơc khi cấp p
A
cho A la đê loai trư kha năng đanh trao nhƣ vây cua môt ke tấn công C.
4.Bai tâp
Bai tâp 6.1: Gia sử A va B sử dung ky thuât phân phôi khóa Diffie -Hellman đê truyề n tin
cho nhau vơ
́
i số nguyên tố đƣợ c chọ n la
̀
p = 71 va phân tử nguyên thuy α = 7.
a) Nế u kho
́
a bi
́
mậ t cu
̉
a A la
̀
X
A
= 5 thì khóa công khai cua A la gì?
b) Nế u kho
́
a bi
́
mậ t cu
̉
a B la
̀
X
B
= 12 thì khóa công khai cua B la gì?
c) Cho biế t kho
́
a bi
́
mậ t du
̀
ng để truyề n tin?
Bai tâp 6.2: A va
̀
B sƣ
̉
dụ ng ky
̃
thuậ t phân phố i kho
́
a Diffie-Hellman để truyề n tin cho
nhau vơ
́
i p = 11 va phân tử nguyên thuy α = 2.
a) Hay chưng minh răng α = 2 đu
́
ng la
̀
phầ n tƣ
̉
nguyên thu
̉
y cu
̉
a Z
*
11
.
b) Nế u kho
́
a công khai cu
̉
a A la
̀
Y
A
= 9 thì khóa bi mât cua A la bao nhiêu?
(ID)A, p'
A
,
A
r'
o

A

C

B
(ID)A, p
A
,
A
r
o
(ID)B, p
B
,
B
r
o (ID)B, p
B
,
B
r
o
Chƣơng VI: Quản ly khoa
129
c) Gia sử B có khóa công khai la Y
B
= 3, hay tìm khóa bi mât dùng đê truyền tin
giƣ
̃
a A va
̀
B.


Chƣơng VII: Giao thƣ
́
c mậ t ma
̃

130
CHƢƠNG VII: GIAO THƢ́ C MẬT MA
1. Giao thưc
Đinh nghia:
Một giao thức (protocol) chỉ đơn giản là một chuỗi các bước thực hiện trong đo co it
nhất 2 bên tham dự, đươc thiết kế để thực hiện một nhiệm vụ nào đo.[2]
Đinh nghĩa nay đơn gian nhƣng chặt chẽ: “môt chuỗi cac bƣơc” nghĩa la môt day
cac bƣơc có thư tư, có đâu có cuôi, bƣơc trƣơc phai đƣơc kêt thúc trƣơc khi thưc hiên
bƣơc sau. “Có it nhất hai bên tham gia” nghĩa la có thê có nhiều ngƣơi cùng tham gia
thưc hiên chuỗi bƣơc nay, do đó nêu môt ngƣơi thưc hiên môt chuỗi cac bƣơc thì không
thê goi la môt giao thưc đƣơc. Va cuôi cùng môt giao thưc phai đƣơc thiêt kê nhăm đat
đƣơc tơi môt kêt qua nao đó.
Môt giao thưc có những đặc tinh nhƣ sau:
÷ Cac bên tham gia phai hiêu cach thưc va cac bƣơc thưc hiên môt giao thưc khi
tham gia thưc hiên.
÷ Cac bên phai đông y tuyêt đôi tuân thu cac bƣơc.
÷ Giao thưc phai rõ rang, tất ca cac bƣơc phai đƣơc viêt tƣơng minh, không có
chỗ nao gây nên kha năng hiêu nhâm.
÷ Giao thưc phai đây đu, tất ca cac tình huông biên đôi đều phai đƣơc đƣa ra.
Giao thưc mât ma la môt giao thưc có vân dung cac kiên thưc cua ly thuyêt mât ma
đê đat đƣơc cac muc tiêu về mặt an toan va bao mât cho hê thông. Cac thanh phân tham
gia có thê la ban bè tin tƣởng lân nhau, nhƣng cung có thê la những ke đich cua nhau.
Môt giao thưc mât ma có liên quan đên cac thuât toan cua mât ma nhƣng thông thƣơng
muc đich cua nó đi xa hơn la tinh bao mât thuân tuy. Cac bên có thê tham dư vao viêc
chia se cac phân cua môt bi mât đƣơc dùng đê chiêt xuất ra môt thông tin nao đó, có thê
cùng kêt hơp phat ra môt chuỗi sô ngâu nhiên, có thê chưng minh danh tinh cua mình
cho bên kia hay đông thơi ky vao môt văn ban hơp đông. Toan bô vấn đề cua ly thuyêt
mât ma ở đây la lam sao dò ra va chông lai cac kha năng nghe trôm hay lưa dôi.
Nguyên tăc đê thiêt kê giao thưc: phai lam sao đê không ai, không bên nao có thê
thu đƣơc nhiều hơn, biêt đƣơc nhiều hơn những gì ma thiêt kê ban đâu gia đinh.
2. Mục đich cua các giao thưc
Ngay nay, vơi sư phat triên vu bao cua hê thông may tinh toan câu đi đên tưng hô
gia đình, viêc đƣa cac nghi thưc thu tuc lam ăn bình thƣơng cua ngƣơi ta thưc hiên qua
mang cung la không bao xa. Nhƣ vây cân phai thiêt kê những thu tuc lam viêc tƣơng ưng
cho may tinh đê có thê thay thê cho cac thu tuc trong đơi thƣơng. Điêm khac biêt đặc
trƣng ở đây la bây giơ ngƣơi lam viêc vơi nhau thông qua cac may tinh ma không cân
thấy mặt nhau nữa. Hơn nữa may tinh không phai la ngƣơi, nó không thê dê dang thich
nghi vơi thay đôi nhƣ chúng ta đây. Vì vây cân tinh đên moi tình huông, moi kha năng có
thê cua giao thưc.
Chƣơng VII: Giao thƣ
́
c mậ t ma
̃

131
Rất nhiều cac thu tuc lam ăn hang ngay cua chúng ta đƣơc tin tƣởng dưa trên sư
có mặt cùng nhau cua cac bên đôi tac, chinh vì thê nên viêc xây dưng những giao thưc
trên may tinh la không còn đơn gian nhƣ cac thu tuc đơi thƣơng ma nó thay thê. Ban cư
tư hỏi xem ngƣơi ta có thê trao môt chông tiền mặt cho môt ngƣơi la đê nhơ mua hang có
đƣơc không? Hay thử hỏi xem ban có dam gửi thƣ cho chinh phu vơi phiêu bâu cua ban
ma không có cac thu tuc đam bao về viêc giấu tên. Thât la ngây thơ nêu tin răng moi
ngƣơi lam viêc trên mang may tinh đều trung thưc. Va cung thât la ca tin nêu cho răng
cac nha quan tri mang, hay thâm chi ngay ca cac nha thiêt kê ra cac mang nay la trung
thưc đên cùng. Dù hâu hêt la nhƣ thê nhƣng chỉ cân môt thiêu sô những ngƣơi không
trung thưc cung đu ngây ra thiêt hai nêu chúng ta không có cac biên phap đam bao.
Vơi phƣơng phap hình thưc hoa, chúng ta có thê thử thiêt kê cac giao thưc rôi tìm
hiêu, kiêm tra kha năng cua nó có vững hay không trƣơc moi kiêu xâm pham cua cac ke
không trung thưc; tư đó ma cai tiên, phat triên lên đê chông lai cac kiêu tấn công đó. Băng
cach đó ma ngƣơi ta đa xây dưng cac giao thưc cho cac may tinh giai quyêt đƣơc cac
nhiêm vu, cac bai toan đơi sông hang ngay.
Hơn nữa giao thưc may tinh la môt hình thưc trưu tƣơng hoa va không quan tâm
đên viêc cai đặt cu thê. Môt giao thưc la giông nhau dù nó đƣơc cai đặt trên bất cư hê
điều hanh nao. Vì thê môt khi chúng đa có thê khăng đinh đƣơc đô tin cây cua giao thưc
ta có thê ap dung nó ở bất cư đâu, dù la cho may tinh, cho điên thoai hay cho môt lò vi
sóng thông minh ...
3. Các bên tham gia vao giao thưc (the players in protocol)
Đê có thê tiêp cân thông nhất vơi tất ca cac giao thưc thì môt điều cân thiêt la có
môt qui đinh thông nhất cach goi tên tất ca cac bên tham gia va dinh liu có thê có trong
giao thưc: [6]
Alice bên thư nhất trong cac giao thưc.
Bob bên thư hai trong cac giao thưc.
Carol bên tham gia thư ba trong cac giao thưc.
Dave bên tham gia thư tƣ trong cac giao thưc.
Eve ke nghe trôm (eavesdropper).
Mallory
ke tấn công chu đông có nhiều quyền lưc trên mang va rất nguy hiêm
(malicious active attacker).
Trent trong tai (trusted arbitrator).
Walter
ngƣơi canh gac (warden), có thê đưng canh gac Alice va Bob trong môt
sô giao thưc .
Peggy ngƣơi chưng minh (prover).
Victor
ngƣơi thâm tra (verifier), Peggy cân phai chưng minh vơi Victor về môt
quyền sở hữu nao đó chăng han nhƣ danh tinh cua anh ta khai la đúng
hay anh ta đúng la ke có thâm quyền đê đƣơc truy nhâp vao môt nơi
quan trong ...
Chƣơng VII: Giao thƣ
́
c mậ t ma
̃

132
4. Các dang giao thưc
4.1. Giao thưc co trong tai
Ngƣơi trong tai la ngƣơi thoa man cac điều kiên sau:
÷ Không có quyền lơi riêng trong giao thưc va không thiên vi cho môt bên nao.
÷ Cac bên tham gia có quyền lơi trong giao thưc đều tin tƣởng vao trong tai răng
bất ky cai gì ma anh ta nói va lam đều la đúng va chinh xac, đông thơi tin tƣởng anh ta sẽ
hoan thanh trach nhiêm cua mình trong giao thưc.
Nhƣ vây trong tai có thê đưng ra đê giúp hoan thanh cac giao thưc giữa những bên
tham gia không tin tƣởng lân nhau.
Ví dụ 1:
Alice muôn ban môt chiêc xe cho môt ngƣơi la la Bob. Bob muôn tra băng sec, tuy
nhiên Alice lai không có cach nao đê biêt đƣơc sec đó có gia tri thât sư hay không. Do
vây, cô ta chỉ muôn đƣơc chuyên sec trƣơc khi giao xe cho Bob va đấy chinh la mâu
thuân bê tăc vì Bob cung chăng tin gì Alice nên anh ta sẽ không đƣa sec trƣơc khi nhân
đƣơc chiêc xe.
Cach giai quyêt sẽ thông qua Trent (ngƣơi ma ca Bob va Alice đều tin tƣởng) va
môt giao thưc sẽ diên ra nhƣ sau đê đam bao tinh trung thưc:
÷ Alice chuyên vât cân ban cho Trent
÷ Bob đƣa tơ sec cho Alice.
÷ Alice chuyên sec vao tai khoan cua cô ta ở ngân hang.
÷ Đơi môt khoang thơi gian nhất đinh đên khi sec đa chuyên xong, Trent sẽ giao
hang cho Bob. Nêu tơ sec không hơp lê thì Alice sẽ bao cho Trent biêt vơi băng chưng cu
thê va Trent sẽ giao tra lai hang cho cô ta.
Trong giao thưc nay:
÷ Alice tin tƣởng răng Trent sẽ không trao hang cho Bob trư khi sec đƣơc
chuyên xong va sẽ chuyên lai hang cho cô ta nêu sec không có gia tri.
÷ Bob tin tƣởng Trent sẽ giữ hang trong thơi gian sec đƣơc chuyên va sẽ giao
nó cho anh ta môt khi đƣơc chuyên xong.
÷ Trent không quan tâm đên viêc tơ sec có gia tri thât sư va có chuyên đƣơc hay
không, anh ta lam phân viêc cua mình trong ca hai trƣơng hơp có thê xay ra đúng nhƣ
giao thưc qui đinh, đơn gian vì anh ta sẽ đƣơc tra tiền công trong ca hai trƣơng hơp.
Vi dụ 2:
Nha băng cung có thê đưng ra lam trong tai cho ALice va Bob. Bob sử dung môt cai
sec có chưng nhân cua nha băng đê mua ban vơi Alice:
÷ Bob viêt môt sec va chuyên cho nha băng.
÷ Sau khi câm môt sô tiền tư tai khoan cua Bob băng gia tri cua tơ sec, nha băng
ky chưng nhân lên sec va chuyên tra lai cho Bob.
Chƣơng VII: Giao thƣ
́
c mậ t ma
̃

133
÷ Alice giao xe cho Bob cùng lúc Bob đƣa Alice tơ sec có chưng nhân cua nha
băng.
÷ Alice chuyên sec vao nha băng.
Giao thưc nay thưc hiên đƣơc bởi vì Alice tin tƣởng vao chưng nhân cua nha băng,
tin răng nha băng câm giữ sô tiền cua Bob cho cô ta ma không sử dung nó vao đâu tƣ ở
bất cư đâu.
Tƣ tƣởng nay đƣơc đem ap dung vao thê giơi may tinh, tuy nhiên ở đây xuất hiên
môt sô vấn đề nhất đinh đôi vơi hê thông máy tính:
÷ Có thê dê dang tìm thấy va đặt lòng tin vao môt bên thư ba trung gian (trong
tai) nêu ta biêt va có thê nhìn tân mặt ho. Tuy nhiên nêu hai bên tham gia giao thưc đa
nghi ngơ nhau thì viêc cùng đặt lòng tin vao môt bên thư ba nao đó năm đâu đó khuất
diên trên mang may tinh cung trở nên có thê đang ngơ.
÷ Mang may tinh phai tôn thêm chi phi đê quan ly va bao trì may tinh trong tai.
÷ Luôn luôn có những khoang trê vôn găn liền vơi bất ky môt giao thưc có trong
tài nào.
÷ Trong tai phai tham gia vao moi giao dich trên mang, điều đó có nghĩa ở đó sẽ
trở nên môt điêm thăt nút cô chai (bottleneck), dê tăc trên mang môt khi giao thưc đa
đƣơc triên khai cho môt ưng dung rông rai. Tăng cƣơng sô trong tai có thê giúp tranh bê
tăc nay nhƣng lai lam tăng thêm chi phi đê quan ly bao trì những may tinh có trong tai đó.
÷ Bởi vì tất ca moi ngƣơi trên mang đều tin trong tai, dê gây ra ở đây môt điêm
nhay cam chiu ap lưc tấn công tâp trung tư cac ke rình râp đê pha hê thông.
4.2. Giao thưc co ngƣơi phân xử
Đê yên tâm giao dich, Alice va Bob cân mơi môt trong tai có uy tin cao, tuy nhiên ở
đây sẽ nay sinh vấn đề về viêc phai tra sô tiền xưng đang cho ngƣơi nay, rõ rang la
không phai không đang kê. Vì vây ngƣơi ta đa nay sinh y nghĩ chia giao thưc có trong tài
tham dư (arbitrated protocol) thanh hai phân giao thưc (subprotocol) ở hai cấp dƣơi:
÷ Môt la môt giao thưc không cân đên trong tai, thưc hiên bất ky khi nao muôn
tiên hanh giao dich.
÷ Hai la môt arbitrated giao thưc chỉ đƣơc sử dung khi Alice va Bob cai nhau và
muôn có ngƣơi phân xử.
Vì thê trong trƣơng hơp nay ta không dùng khai niêm ngƣơi trong tai (arbitrated) vơi
nghĩa la ngƣơi phai trưc tiêp tham gia vao giao thưc, ma sử dung ngƣơi phân xử
(adjudicator), bao ham y nghĩa ngƣơi nay không cân phai có mặt khi Alice va Bob tiên
hanh giao dich ma chỉ đƣơc mơi đên khi Alice va Bob yêu câu giai quyêt tranh cai.
Cung giông nhƣ trong tai, ngƣơi phân xử phai không có quyền lơi liên can đên giao
dich cua Alice va Bob, va đƣơc ca hai ngƣơi nay tin tƣởng. Anh ta không tham gia trưc
tiêp vao giao dich nhƣ trong tai nhƣng sẽ đưng ra đê xac đinh xem la giao dich có đƣơc
tiên hanh đúng không va xac đinh bên sai bên đúng nêu nhƣ có tranh cai.Nhƣng điêm
khac biêt giữa trong tai va ngƣơi phân xử la ngƣơi phân xử không phai luôn luôn cân
thiêt, nêu có tranh cai thì mơi cân ngƣơi phân xử (không có tranh cai thì thôi).
Chƣơng VII: Giao thƣ
́
c mậ t ma
̃

134
Cac thâm phan la những ngƣơi phân xử chuyên nghiêp. Khac vơi công chưng viên,
môt thâm phan - ngƣơi ma sẽ chỉ đƣơc biêt đên hơp đông nay khi nao môt trong hai
ngƣơi Alice hay Bob lôi ngƣơi kia ra toa. Giao thưc dùng cho ky kêt hơp đông nay có thê
đƣơc hình thưc hoa nhƣ sau:
Vi dụ:
Tai moi thơi điêm:
÷ Alice va Bob thoa thuân cac điều khoan trong hơp đông.
÷ Alice ky hơp đông.
÷ Bob ky hơp đông.
Khi có tranh cai cân giai quyêt:
÷ Alice va Bob đên gặp quan toa nhơ phân xử.
÷ Alice đƣa ra chưng cơ cua cô ta.
÷ Bob trình bay cac chưng cơ cua anh ta.
÷ Quan toa xem xet cac chưng cơ va phan quyêt.
Y tƣởng dùng ngƣơi phân xử nay có thê đem vao ap dung trên may tinh. Trong
những giao thưc thê nay nêu có môt bên tham gia ma không trung thưc thì dữ liêu lƣu
đƣơc tư giao thưc sẽ cho phep ngƣơi phân xử sau nay phat hiên đƣơc ai la ngƣơi đa lưa
dôi. Nhƣ vây thay vì ngăn chặn trƣơc sư lưa đao, giao thưc ngƣơi phân xử sẽ phat hiên
đƣơc lưa dôi nêu xay ra, thưc tê nay khi đƣơc phô biên rông rai sẽ có tac dung ngăn
chặn, lam lùi bƣơc những ke có y đinh lưa đao.
4.3. Giao thưc tƣ̣ phân xƣ
̉

Giao thưc tƣ̣ phân xƣ
̉
la loai tôt nhất trong sô cac giao thưc. Loai giao thưc nay tư
ban thân nó có thê đam bao đƣơc tinh công băng, không cân đên trong tai hay môt thâm
phan đê phân xử khi tranh cai. Nghĩa la giao thưc loai nay đƣơc chê ra sao cho không thê
có cac kẽ hở cho tranh cai nay sinh. Nêu có bên nao cô y sai luât thì tiên trình sẽ cho
phep phia bên kia phat hiên ra ngay va giao thưc dưng lai ngay lâp tưc. Điều mong muôn
cho tất ca cac giao thưc đều nên chê tao nhƣ thê, nhƣng đang tiêc la không phai lúc nao
cung có giao thưc loai nay cho moi tình huông.
5. Các dang tân công đôi vơi giao thưc
Nêu nhƣ giao thưc đƣơc coi nhƣ môt nghi thưc giao tiêp đê cac bên lam viêc vơi
nhau thì đôi vơi cryptography giao thưc, bên dƣơi cai vỏ “ngoai giao” đó la cac ky thuât,
cac thuât toan mât ma đƣơc vân dung, cai đặt trong cac bƣơc cu thê cua giao thưc. Cac
tấn công cua ke pha hoai nhăm pha hoai tinh an ninh cua hê thông cung nhƣ xâm pham
tinh bi mât riêng tƣ cua thông tin, có thê hƣơng vao môt trong cac yêu tô sau: cac xử ly
ky thuât, cac thuât toan mât ma hay la chinh ban thân giao thưc.
Trong phân nay, chúng ta hay gac lai kha năng thư nhất - gia sử răng cac ky thuât
va thuât toan mât ma đều la an toan; chúng ta chỉ xem xet kha năng thư hai, tưc la phân
tich cac dang tấn công có thê, trong đó ke thù lơi dung cac ke hở logic đê kiêm lơi hay
pha hoai. Cac dang tấn công có thê phân thanh hai loai chinh nhƣ sau:
Chƣơng VII: Giao thƣ
́
c mậ t ma
̃

135
÷ Vơi dang tấn công thu đông: ke đich chỉ đưng ngoai nghe trôm chư không can
thiêp hay anh hƣởng gì đên giao thưc. Muc đich cua nó la cô găng quan sat va thu lƣơm
thông tin. Tuy nhiên thông tin nghe trôm đƣơc chỉ ở dang ma hoa, do đó ke đich cân phai
biêt cach phân tich, giai ma thì mơi dùng đƣơc (cipher only attack). Mặc dù hình thưc tấn
công nay không manh nhƣng rất khó phat hiên vì ke đich không gây đông.
÷ Vơi dang tấn công chu đông (active attack): ke đich la môt thê lưc trong mang,
năm nhiều kha năng va phƣơng tiên đê có thê chu đông tấn công can thiêp, gây anh
hƣởng phưc tap đên giao thưc. Nó có thê đóng gia vơi môt cai tên khac can thiêp vao
giao thưc băng những thông bao kiêu mơi, xoa bỏ những thông bao đang phat trên
đƣơng truyền, thay thê thông bao thât băng thông bao gia, ngăt ngang cac kênh thông tin
hay sửa chửa vao cac kho thông tin trên mang. Cac kha năng khac nhau nay la phu thuôc
vao tô chưc mang va vai trò cua ke đich trên mang.
Ke tấn công trong tấn công thu đông (Eve) chỉ cô găng thu lƣơm thông tin tư cac
bên tham gia giao thưc, thông qua thu nhâp cac thông bao truyền tin giữa cac bên đê
phân tich giai ma. Trong khi đó, ke tấn công chu đông (Mallory) có thê gây ra cac tac hai
rất phưc tap đa dang. Ke tấn công có thê có muc đich đơn thuân la tóm đƣơc tin ma nó
quan tâm, nhƣng ngoai ra nó có thê gây ra cac pha hoai khac nhƣ pha hoai đƣơng truyền
truy nhâp vao những hê thông thông tin ma chỉ danh cho những ngƣơi có đu thâm quyền.
Ke đich trong tấn công chu đông thât sư rất nguy hiêm, đặc biêt la trong cac giao
thưc ma cac bên khac nhau không nhất thiêt phai tin nhau. Hơn nữa phai nhơ răng ke
đich không phai chỉ có thê la những ke xa la bên ngoai ma nó có thê la môt ca nhân hơp
phap trong hê thông, thâm chi ngay chinh la ngƣơi quan tri mang. Ngoai ra còn có thê có
nhiều ca nhân liên kêt vơi nhau thanh môt nhóm ke đich, lam tăng lên sư nguy hiêm cho
giao thưc.
Môt điều cung có thê xay ra la Mallory lai chinh la đôi tac trong giao thưc. Anh ta có
thê có hanh đông lưa dôi hoặc la không chiu tuân theo giao thưc. Loai ke đich nay đƣơc
la ke lưa đao (cheater). Ke lưa đao thuôc loai thu đông thì có thê lam đúng theo giao thưc
nhƣng lai cô tình thu nhặt thêm thông tin tư cac bên đôi tac hơn la đƣơc phep theo qui
đinh. Ke lưa đao chu đông thì pha vỡ giao thưc trong môt cô găng lưa dôi. Rất khó đê giữ
an toan cho môt giao thưc nêu nhƣ phân lơn cac bên tham gia đều la những ke lưa đao
chu đông, tuy nhiên đôi khi ngƣơi ta cung có cac biên phap đê cac bên hơp phap có thê
dò ra đƣơc sư lưa đao đang diên ra. Tất nhiên cac giao thưc cung cân phai đƣơc bao vê
đê chông lai những ke lưa đao loai thu đông.


Tai liêu tham khảo
136
TAI LIÊU THAM KHAO
[1] Nik Goots, Boris Izotov, Alex Moldovyan and Nik Moldovyan, “Modern Cryptography-
Protect Your Data with Fast Block Ciphers”, A-LIST Publishing , 2003.
[2] Whitfield Diffie, Martin E. Hellman, “New Directions in Cryptography”, IEEE
transactions on information theory, Vol. IT-22, No. 6, November 1976.
[3] Randy Nichols (LANAKI), “Classical cryptography course”, 1995.
http://www.forturecity.com/course/LANAKI.html
[4] A.Menezes, P. van Oorchot, and S.Vanstone, “Hand book of Applied Cryptography”,
CRC Press, 1996. http://www.cacr.math.uwaterloo.ca/hac
[5] Douglas R.Stinson, “Cryptography: theory and practice”, CRC Press,
1995.http://www.mindspring.com/~pate/stinson/
[6] Bruce Schneier, “Applied Cryptography, Second Edition: Protocols, Algorthms, and
Source Code in C (cloth)”, MIST Press, 1996.
[7] Gil Held, “Learn Encryption Techniques with BASIC and C++”, CRC Press, 1998.
[8] FIPS 186 - (DSS)http://www.itl.nist.gov/fipspubs/fip186.htm
[9] Jean Berstel, Dominique, “Theory of code”, Academic Press Inc, 1985.
[10] C. Shannon, “Communication theory of secret systems” (tap chi khoa hoc), 1949.
[11] RSA library. www.fpt.rsa.org/PKI
[12] “System and Network Security”. http://www.cs.ncl.ac.uk/old/modules/2000-
01/csc331/notes/
[13] “Cryptography and Computer Security”.
http://www.cs.adfa.edu.au/teaching/studinfo/csc/lectures/
[14] http://www.securitydynamics.com/rsalabs/changelenges/factoring/rsa155.html.
[15] “Data security and cryptography”. http://www.islab.oregonestate.edu/koc/ece575
[16] “OPT8 Advanced Cryptography”.
http://www.isg.rhul.ac.uk/msc/teaching/opt8/macs.pdf
Đề thi tham kha
̉
o
137
Đề 1:
Câu 1 : Cho hệ mã Hill có M = 2 và ma trận khóa A =
(
¸
(

¸

7 3
5 12
hãy thực hiện
mã hóa với xâu S = “HARD”.

Câu 2 : Vẽ mô hình quản lý khóa dựa vào hệ mã khóa công khai. Giải thích
rõ các chức năng và các bước thực hiện.

Câu 3: Các mệnh đề sau đúng hay sai, giải thích?
1. So với tấn công chủ động tấn công thụ động nguy hiểm hơn.
2. Giao thức 3 bước Shamir hỗ trợ khả năng xác thực hóa nguồn gốc thông
điệp.
3. Cơ chế mã móc xích an toàn hơn cơ chế bảng tra mã điện tử
4. Một trong các yếu điểm của các hệ mã mật khóa công khai là chậm.
5. Giao thức 3 bước Shamir là giao thức trao đổi thông tin không cần trao đổi
khóa.
6. Các hệ mã mâ ̣ t RSA, ElGamma, Knapsack đượ c go ̣ i la
̀
ca
́
c hê ̣ ma
̃
mâ ̣ t
khóa công khai vì khóa của chúng đều được công khai hóa.
Đề 2:
Câu 1 : Vẽ lược đồ chế độ sử dụng mã khối móc xích CBC . Mô ta
̉
thuâ ̣ t toa
́
n
sinh va
̀
gia
̉
i ma
̃
.

Câu 2 : Cho kho
́
a K =
(
¸
(

¸

7 3
8 11
và tin gốc là „July‟ xác định trên trường Z
26
.
Tìm tin mã theo giải thuật Hill – cipher.

Câu 3: Các mệnh đề sau đúng hay sai, giải thích?
1. Tất cả có 4 loại hàm băm: các hàm băm dựa vào các hệ mã khối (chẳng
hạn như DES), các hàm băm dựa vào các phép tính số học, các hàm băm
đăc biệt và các hàm băm dựa vào các hệ mã khóa công khai.
2. Một trong các yếu điểm chính của hệ Knapsack là việc lưu khóa cần bộ
nhớ lớn.
3. Chuẩn mã hóa dữ liệu (DES) không còn an toàn nên không còn được dùng
trong thực tế.
4. Để tăng tính bảo mật cho DES có thể mã hóa nhiều lần với các khóa khác
nhau.
5. Trong hệ mã ElGamma luôn xuất hiện hiện tượng lộ bản rõ.
6. Để sử dụng cơ chế bảng tra mã điện tử (EBC) khi cài đăt không cần có
một gía trị khởi tạo IV.
Đề 3:
Câu 1 : Vẽ lược đồ chế độ sử dụng mã khối phản hồi CFB . Mô ta
̉
thuâ ̣ t toa
́
n
sinh va
̀
gia
̉
i ma
̃
.
Đề thi tham kha
̉
o
138

Câu 2 : Cho ve
́
c tơ siêu tăng A = (1, 2, 4, 8, 16, 32, 64, 128), m = 301, u =
31, và tin gốc (bản rõ) là 10. Tìm tin mã (bản mã) theo gia
̉
i thuâ ̣ t Knapsack.

Câu 3: Các mệnh đề sau đúng hay sai, giải thích?
1. Trong chế độ mã móc xích thông điệp được chia thành n khối, nếu như
khối thứ i bị lỗi trước khi đem mã hóa thì sẽ làm ảnh hưởng tới các khối
mã hóa sau đó.
2. Cho N = 2000, khi đó giá trị hàm Ơ le của N: u(N) = 800.
3. Giao thức 3 bước Shamir là giao thức trao đổi thông tin không cần trao đổi
khóa.
4. Các hệ chữ ký điện tử hoạt động theo 3 bước: sinh chữ ký, gửi chữ ký và
kiểm tra chữ ký.
5. Các hệ mã mật SKC và PKC đều cho phép sử dụng trong mô hình chữ ký
điện tử.
6. Cơ chế mã móc xích an toàn hơn cơ chế bảng tra mã điện tử.

Đề 4:
Câu 1 : Vẽ lược đồ giải t huâ ̣ t sinh ma
̃
DES va
̀
gia
̉
i thi
́
ch ca
́
c công thư
́
c đượ c
dùng.

Câu 2 : Cho ve
́
c tơ siêu tăng a = (1, 2, 4, 8, 16, 32, 64, 128), m = 300, w = 29,
và tin gốc là 16. Tìm tin mã theo giải thuật Knapsack.

Câu 3: Các mệnh đề sau đúng hay sai, giải thích?
1. Từ luật Kierchoff suy ra muốn tăng độ an toàn của một hệ mã mật cần sử
dụng thuật toán mã hóa càng phức tạp càng tốt.
2. So với kiểu tấn công thụ động kiểu tấn công chủ động khó phát hiện hơn
và nguy hiểm hơn.
3. Giao thức 3 bước Shamir là giao thức trao đổi thông tin không cần trao đổi
khóa.
4. Một trong các yếu điểm chính của hệ Knapsack là việc lưu khóa cần bộ
nhớ lớn.
5. Điều kiện để giao thức 3 bước Shamir hoạt động là:
E
Z2
-1
(E
Z1
(E
Z2
( X ))) = E
Z2
(X).
6. Các hệ mã mật khóa công khai thường được gọi là PKC trong đó PKC có
nghĩa là Private Key Cryptography.
Đề 5:
Câu 1 : Vẽ lược đồ sinh khóa từ khóa chính của DES và giải thích các công
thư
́
c đượ c du
̀
ng.

Câu 2 : Cho p = 13, q = 23, e = 173, và tin mã là 122. Tìm tin gốc theo giải
thuâ ̣ t RSA.
Đề thi tham kha
̉
o
139

Câu 3: Các mệnh đề sau đúng hay sai, giải thích?
1. Cơ chế CBC là cơ chế sử dụng mã khối đơn giản nhất và dễ dùng nhất.
2. Trong cơ chế ECB nếu một khối nào đó bị hỏng trước khi đưa vào mã hóa
sẽ làm ảnh hưởng tới tất cả các khối mã hóa đứng trước nó.
3. Khóa mã hóa của chuẩn mã hóa dữ liệu có độ dài bằng 56 bit.
4. Các chế độ sử dụng mã khối đều sử dụng các đơn vị khối dữ liệu 64 bit..
5. Trong hệ mã ElGamma luôn xuất hiện hiện tượng lộ bản rõ.
6. Cơ chế mã móc xích an toàn hơn cơ chế bảng tra mã điện tử.

Tên học phần: An toàn bảo mâ ̣t thông tin Bộ môn phụ trách giảng dạy: Khoa học máy tính. Khoa phụ trách: Công nghệ thông tin Mã học phần: TS tiết 75 Lý thuyết 45 Thực hành/ Xemina 30 Tự học 0

Loại học phần: II Tổng số TC: 3 Bài tập lớn 0 Đồ án môn học 0

Điều kiện tiên quyết: Sinh viên cầ n ho ̣c xong các ho ̣c phầ n : Lâ ̣p trình hướng đố i tươ ̣ng Cấ u trúc dữ liê ̣u Phân tích, thiế t kế và đánh giá thuâ ̣t toán.

Mục đích của học phần: Truyền đạt cho sinh viên những kiến thức cơ bản về các lĩnh vực riêng trong an toàn bảo mật máy tính: - Các giải thuật mã hóa trong truyền tin. - Các thuật toán tạo hàm băm và chữ ký điện tử. - Các mô hình trao chuyển khóa. - Các mô hình chứng thực và các giao thức mật mã. Nội dung chủ yếu: Gồ m 2 phầ n: - Phầ n lý thuyế t : cung cấ p các lý thuyế t về thuâ ̣t toán mã hóa , các giao thức. - Phầ n lâ ̣p trình: cài đặt các hệ mã, viế t các ứng du ̣ng sử du ̣ng các hê ̣ mã mâ ̣t Nội dung chi tiết của học phần: Tên chương mục Chương I. Giới thiệu nhiệm vụ của an toàn và bảo mật thông tin. 1.1. Các khái niệm mở đầu. 1.1.1. Thành phần của một hệ thống thông tin 1.1.2. Những mối đe dọa và thiệt hại đối với hệ thống thông tin. 1.1.3. Giải pháp điều khiển kiểm soát an toàn bảo mật 1.2. Mục tiêu và nguyên tắc chung của ATBM. 1.2.1. Ba mục tiêu. 1.2.2. Hai nguyên tắc 1.3. Giới thiệu chung về các mô hình mật mã. 1.3.1. Mô hình cơ bản trong truyền tin và luật Kirchoff. 1.3.2. Những giai đoạn phát triển của lý thuyết mã hóa. Phân phối số tiết TS 4 LT 3 1 Xemine 1 BT 0 KT 0

1 1 1

Chương II. Một số phương pháp mã hóa cổ điển. 2.1. Phương pháp mã đơn giản. 2.1.1. Mã hoán vị trong bảng Alphabet. 2.1.2. Mật mã cộng tính. 2.2.3. Mật mã nhân tính. 2.1.4. Phân tích mã theo phương pháp thống kê. 2.2. Phương pháp mã bằng phẳng đồ thị tần xuất. 2.2.1. Mã với bảng thế đồng âm. 2.2.2. Mã đa bảng thế: giải thuật mã Vigenre và One time pad. 2.2.3. Lý thuyết về sự bí mật tuyệt đối. 2.2.4. Đánh giá mức độ bảo mật của một phương pháp mã hóa. Kiể m tra Chương III. Mật mã khối. 3.1. Khái niệm. 3.1.1. Điều kiện an toàn cho mật mã khối 3.1.2. Nguyên tắc thiết kế. 3.2. Chuẩ n mã hóa dữ liê ̣u DES 3.2.1. Lịch sử của DES 3.2.2. Cấu trúc vòng lặp DES. 3.2.3. Thuật toán sinh khóa con 3.2.4. Cấu trúc hàm lặp. 3.2.5. Thuật toán giải mã DES. 3.2.6. Đánh giá mức độ an toàn bảo mật của DES. 3.2.7. TripleDES 3.3. Chuẩ n mã hóa cao cấ p AES 3.3.1. Giới thiê ̣u về AES 3.3.2. Thuâ ̣t toán mã hóa 3.3.3. Thuâ ̣t toán giải mã 3.3.4. Cài đặt AES 3.4 Một số chế độ sử dụng mã khối. 3.4.1. Chế độ bảng tra mã điện tử 3.4.2. Chế độ mã móc xích 3.4.3. Chế độ mã phản hồi Chương IV. Hệ thống mã với khóa công khai. 4.1. Khái niệm khóa công khai. 4.1.1. Đặc trưng và ứng dụng của hệ mã khóa công khai. 4.1.2. Nguyên tắc cấu tạo hệ khóa công khai 4.2. Giới thiệu một số giải thuật PKC phổ biến. 4.1.1. Hệ mã Trapdoor Knapsack. 4.1.2. Hệ mã RSA

13

5 2

5 2

2 1

1

3

3

1

1 16 8 1 7 1 0

3

3

0,5

3

3

0,5

1

1

16

6 1

7

2

1

2 1 2 1 3

1. 6. Định nghĩa. 5. VanOorschot. Đại học Quốc Gia Hà Nội. Ứng dụng của chữ ký điện tử 5.5 3 1 5 0 0 3 2 0. Stinson. Giới thiệu phương pháp quản lý khóa. Định nghĩa. Hàm băm SHA1 Chương VI. Quản lý khóa trong hệ thống mật mã 6. 1995.3. P.1. Hàm băm MD5 5.2. Tìm hiểu thiết kế các giao thức mật mã điển hình 7.2.2.1.3.2.3. Chuẩ n chữ ký điê ̣n tử DSA 5.4. Một số dạng tấn công đối với giao thức mật mã. Handbook of Applied Cryptography.1. and S. Sinh chữ ký điện tử với hàm băm 5.2.1. Giao thức trao chuyển khóa Needham – Schoeder 6. Quản lý khóa đối với hệ SKC 6. Giao thức trao đổ i khóa Diffie-Hellman 6.3. 5.1. Hê ̣ chữ ký điê ̣n tử ElGamal 5.2. Phan Đình Diệu.4.5 1. Douglas R. Mô ̣t số hàm băm thông du ̣ng 5.1. 6 8 12 2 7 0. Mục đích giao thức mật mã. Giao thức Kerberos Chương VII.1. Tài liệu học tập: 1.2. A.5 3 1.3.1. Kiểm tra.2.2.3. 7. Chữ ký điện tử.1. Menezes.2. CRC Press.2.4.1. 3. Chữ ký điện tử và hàm băm.2.4. Định nghĩa giao thức mật mã 7. 2.1. CRC Press. 1996.3. Hàm băm. 5.2. Giao thức mật mã 7.2. Lý thuyết mật mã và An toàn thông tin.2.5 5 1 1 1 1 1 3 1 3 0 0 1 2 2 0 1 2 2 1 Nhiệm vụ của sinh viên: Lên lớp đầy đủ và chấp hành mọi quy định của Nhà trường. 5.2. 7.1. . Các bên tham gia vào giao thức mật mã 7.1.2. Giới thiệu một số giao thức mật mã. Khái niệm giao thức mật mã 7.1. 7. Vanstone.1. Cryptography Theory and practice. Quản lý khóa trong các hệ PKC 6. Hê ̣ chữ ký điê ̣n tử RSA 5. 5. Hệ mã ElGamal Kiểm tra Chương V.2.1.3. Giới thiê ̣u mô ̣t số hê ̣ chữ ký điê ̣n tử 5.1.

2005. Prentice Hall.7 Y. Cryptography and Network Security Principles and Practices.3 X + 0. Điểm đánh giá học phần: Z = 0. Apress. . 5. 2005. William Stallings.Sinh viên phải bảo đảm các điều kiện theo Quy chế của Nhà trường và của Bộ. Cryptography in C and C++. MichaelWelschenbach. Hình thức và tiêu chuẩn đánh giá sinh viên: . Thang điểm : Thang điểm 10.4. Fourth Edition. .Sinh viên phải làm các bài kiểm tra trong quá trình học và thực hành. Thi vấn đáp.

..................... 17 3................................................................................................................................................................ 10 1......................... Lý thuyết độ phức tạp ...................................................... 5 8...................5................................2................................. 22 ̣ 4..................MỤC LỤC ̀ LƠI NOI ĐÂU ................ Phân loại các thuật toán mật mã học ................... 12 2......................... 8 ́ ̉ CHƢƠNG II: CƠ SƠ TOÁN HỌC . Kỹ thuật lộn xộn và rƣờm rà (Confusion and Diffusion)....... Bài tập ............. 51 ..................... 28 1....2.... 28 1......................................... Mục tiêu và nguyên tắc chung của an toàn bảo mật thông tin ................................................. 25 4............... 19 3.........................................................4............................................ 17 ́ 3.. Chuẩn mã hoá dữ liệu DES (Data Encryption Standard) ............................................................................................... 23 4.......6........ 13 2............................ Tính an toàn của hệ thống mã hoá ...............................................................9....... 26 CHƢƠNG III: CÁC HỆ MÃ KHÓA BÍ MẬT .. 11 1........................................................................... Mô hình truyề n tin cơ bản của mật mã học và luật Kirchoff ........................................................................................ Phƣơng trình đồ ng dƣ bậc nhấ t 1 ẩn .....................3...... Một số ƣng dụng của mật mã học .............. 16 3. 28 1.......1......................................3......................................... 10 1. 14 2................................................3...................................................... ........ 2 4.......................................................... Hệ mã Vigenere .................8........ 18 ̣ ̉ 3...................... Sơ lƣợ c về lich sƣ mật mã học......................... Ƣớc số chung lơn nhấ t ........................................2.................................1.................. Entropy . Khái niệm hệ thống và tài sản của hệ thống ................................................................3.................... Thuật toán lũy thƣa nhanh .............. 28 1................................................................4.................................................................. 26 4.............4............................. Số nguyên tố ................................................11.......... 19 3.. Hệ mã đổ i chỗ (transposition cipher).........................................................5.................. Một số ký hiệu toán học .............1................................... An toàn bảo mật thông tin và mật mã học ................................................................................. 29 1.......... Các yếu điểm của DES ............................................... 10 1........................................... 2 2....................................................................................................... Phầ n tƣ nghich đảo ...................1............................................................. 4 7........... (Rate of Language) ..............................1................................................................ Hệ mật tích ................... Hệ mã Affine .................................................... Đinh lý phầ n dƣ Trung Hoa....... 18 3...................................................... 11 1......... Mật mã khối ... 34 2.2...................... 34 2........................ Vành ZN (vành đồng dƣ module N) ............... 30 1........................ 23 4................................................................................................................................................................................................6................................ Thuật toán Soloway-Strassen ..........................................................................10.................... Thuật toán Lehmann.................... Các hệ mã cổ điển............................................ 17 3............... 2 3.... Các thuật toán kiểm tra số nguyên tố.................................................. Độ an toàn không điều kiện ... Hệ mã Caesar .................. 6 ̣ ̉ 9.................. Các hệ mã khối ...................... Thặng dƣ bậc hai........... 14 3........ Thuật toán Rabin-Miller... 26 5... Tố c độ của ngôn ngƣ̃.................................... Mật mã học (cryptology) ............. Lý thuyết thông tin .................................................................... 30 1........................................................ Khái niệm hệ mã mật (CryptoSystem) ..................... 4 6........................2.................................3............. ................... .......................... 17 3..................................................................................................1........2............. Độ an toàn tính toán ............................ Hệ mã Hill . 2 ́ 1................................... 20 ̀ 3............ Các mối đe doạ đối với một hệ thống và các biện pháp ngăn chặn ................... Modulo số học ............... 32 2.......................................... 8 10............ Hệ mã hoá thay thế (substitution cipher)................ 3 5...................................................... 21 ̉ 3............. Hàm phi Ơle .............................. 22 3..3............................................... 1 ̀ ́ CHƢƠNG I: GIƠI THIỆU .......................... 35 2.....7..............4............................................................................................. Lý thuyết toán học ....................................................................................................................................................... Thuật toán Ơclit mơ rộng ........................................................

....................................... 118 ́ 3................2.....................1........ Hàm Băm (Hash Function) ............ 131 4........... Các dạng tấn công đối với giao thức ......................... 136 .......1..... 120 2... Giao thức có trọng tài .............................1......................................................................................... Giao thức tƣ̣ phân xƣ ..........1..................................................................................... 77 2.............. Chuẩn chữ ký điện tử (Digital Signature Standard) .............................................. Hệ phân phối khoá Kerberos ..... 111 2........ 101 1.....................6... Hệ mã knapsack ................................................... 101 ̃ ̀ 1........................... Hệ mã El Gamal .................... 54 2.................4.......3............................... 120 2.........1.............................................................................................................. 72 CHƢƠNG IV: CÁC HỆ MÃ MẬT KHÓA CÔNG KHAI...................... Giao thức Girault trao đổi khoá không chứng chỉ ..... Nguyên tắ c cấ u tạo của các hệ mã mật khóa công khai ................................1.................................................................................... Khái niệm hệ mã mật khóa công khai .................................................. 126 3......................... 103 1.....3......................................................2...2.....................................................................................3... 106 1........ 125 3....................................................................... 120 2.................................................... Các dạng giao thức .......... Trao đổi khoá và thoả thuận khoá .............................................. 124 3...................................................................3.......................... Bài tập ............................. Giao thức có ngƣời phân xử .. Giao thức trao đổi khoá Matsumoto-Takashima-Imai..........5.............................................. Các bên tham gia vào giao thức (the players in protocol) .............................................................. 101 ̉ 1........................................... 77 1.......................................4..... 78 3........................... 102 1.......................... Birthday attack ........ 108 ̉ ́ 2................................................ 134 TÀI LIỆU THAM KHẢO. 130 3.......... Một số ƣng dụng của hàm Băm ......................... 134 ̉ 5...............2................... Các cơ chế........... Một số hệ mã khóa công khai .....................................4................................................................................ 78 3... Hệ chữ ký RSA ............... 132 4........ 109 2........... Hệ phân phối khóa Diffe-Hellman .................................... 83 3.......................2..4........................................................................................ 130 ́ 1..................................... Bài tập ................................................................. 127 4............... 85 4. Giao thức ................ Một số hàm Băm nổi tiếng .................4...............................5................................................... 109 2........ 96 ̉ CHƢƠNG V: CHƢ KÝ ĐIỆN TƢ VÀ HAM BĂM............................... Mô hình ƣng dụng của chƣ̃ ký điện tƣ .......................... 124 3......................... 133 4................... 119 CHƢƠNG VI: QUẢN LÝ KHÓA............................................................................................... Triple DES (3DES)........................................................... 130 2.......................................................................................... Đặc tính của hàm Băm .........................3.............................................. 52 2....................5...... 123 3......................................................................................... Khái niệm ..................................3.......................... Quản lý khoá trong các mạng truyền tin ......................................... 128 CHƢƠNG VII: GIAO THƢC MẬT MÃ .................................................... Hệ mã RSA................................................. 120 1...............................................................................2..................... Sơ đồ phân phối khoá Blom ....................................................................................... Chƣ̃ ký điện tƣ............ 78 3.............................. Khái niệm về chữ ký điện tử .................Bài tập ........................................ Mục đích của các giao thức ..2......................................... 79 3........................ Chuẩ n mã hóa cao cấ p AES ..................................................................................... 110 2..................................... Giao thức trao đổi khoá Diffie-Hellman .. hình thức sử dụng của mã hóa khối (Mode of Operation) .......... 109 2......................................................... Bài tập ... Giao thức trao đổi khoá Diffie-Hellman có chứng chỉ xác nhận ................ 132 4......... 68 3........................................................... Hệ chữ ký ElGammal .................. Các hệ mã mật dựa trên các đƣờng cong Elliptic ...... Một số hệ phân phối khoá .......................................................................................... 122 2...................

........ 38 Hình 3.................5: Sơ đồ một vòng lặp của SHA .2: Sơ đồ chữ ký sử dụng hàm Băm ........................................ 117 ........................................ 113 Hình 5....................... 1) ........................... 56 Hình 3.....3: Mô hinh ƣng dụng lai ghép RSA vơi các hệ mã khố i ...................... 39 Hình 3.................................. 62 Hình 3............13: Hàm InvShiftRows() của AES .............. 78 ̉ Hình 4...............................................................................................................4: Sơ đồ tạo khoá con của DES ..................3: Sơ đồ một vòng DES ..............16: Chế độ CFB .............................5: Hình biểu diễn E 24(g4..................................... 109 Hình 5....2: Mô hình sƣ dụng 2 của các hệ mã khóa công khai PKC ................3: Sơ đồ vòng lặp chính của MD5 ....................................................................................6: Phƣơng pháp trao đổ i khóa Diffie-Hellman dƣ̣ a trên ECC.............................................1: Chuẩ n mã hóa dƣ̃ liệu DES ......12: Hàm AddRoundKey của AES ...............................................................11: Hàm MixColumns của AES .............. 108 ̉ ́ Hình 5................................... 78 ̉ Hình 4................ 83 ̀ ́ ́ Hình 4................. 66 Hình 3.................2: Sơ đồ mã hoá DES ................... 69 Hình 3.......................5: Sơ đồ hàm f .................................9: Thuật toán mã hóa và giải mã của AES ..............................................................................6: Sơ đồ hàm mở rộng (E) ..................... 94 Hình 5....................................................................................... 36 Hình 3..........................................Danh mục hình vẽ DANH MỤC HÌNH VẼ Hình 1..............14: Cơ chế ECB .............4: Các đƣờng cong Elliptic trên trƣơng số thƣ̣ c ..... 70 Hình 3........................................................................................................... 43 Hình 3.............................. 5 Hình 3............... 59 Hình 3........ 63 Hình 3...1: Mô hình sƣ dụng 1 của các hệ mã khóa công khai PKC .............. 63 Hình 3............. 44 Hình 3......................................................................10: Hàm ShifftRows() .......................15: Chế độ CBC ...........................................7: Triple DES ................................................................................................................................................. 53 Hình 3.................................................................... 71 Hình 4.............8: Các trạng thái của AES ................................................. 112 Hình 5.................................... 87 ̀ Hình 4........... 92 Hình 4.......................................................................................................................................................................4: Sơ đồ một vòng lặp MD5 ......................1: Mô hình cơ bản của truyền tin bảo mật .1: Mô hình ƣng dụng của chƣ̃ ký điện tƣ .......................................................................................... 41 Hình 3.................................................

.............28: Bảng thế cho hàm InvSubBytes() ................................................. 56 Bảng 3..................... 46 Bảng 3........................................................... 54 ́ ̀ Bảng 3..........................................5: Mã hóa hoán vị theo chu kỳ ................ 33 Bảng 3.................................................... 42 Bảng 3...................1: Bảng bậc của các phần tử trên Z*21 .................................16: Hộp S5............................................ 1) ....................................6: Bảng hoán vị IP ........................20: Bảng hoán vị P ..................... 33 Bảng 3.............................................12: Hộp S1..................................25: Bảng biểu diễn các xâu 4 bit ........ 34 Bảng 3..... 44 Bảng 3..................................................................................................... 51 Bảng 3............................................................................................11: Bảng mô tả hàm mở rộng E ................................................................................................. 42 Bảng 3................................................................................................................................................................................................23: Các khóa nửa yếu của DES ......................... 39 Bảng 3..............................................................................................................................................14: Hộp S3....................... 47 Bảng 3................ 39 Bảng 3...........................................................................................................22: Các khóa yếu của DES .................................................................. 46 Bảng 3.....................1: Tố c độ của thuật toán Brent-Pollard ..10: Bảng PC-2 ...................... 57 Bảng 3.................. 61 Bảng 3...............8: Bảng PC-1 .....................................26: Bảng độ dài khóa của AES ................................................ 45 Bảng 3................................ 50 Bảng 3........................... 81 Bảng 4....21: Ví dụ về các bƣớc thực hiện của DES .....3: Bảng so sánh các hệ mã ECC với hệ mã RSA......................19: Hộp S8................................................................................................................................................................................................................................................................ 41 Bảng 3.......................................... 20 Bảng 3. 46 Bảng 3...................................................................... 29 Bảng 3................................2: Bảng lũy thừa trên Z13 ......................15: Hộp S4...........................................................7: Bảng hoán vị ngƣợc IP-1 ....................................................... 46 Bảng 3....... 32 Bảng 3............................................... 45 Bảng 3............................................. 66 Bảng 4..........................................................................4: Ví dụ mã hóa theo mẫu hình học ....1: Bảng đánh số các chữ cái tiếng Anh ......... 51 Bảng 3..... 45 Bảng 3......................13: Hộp S2.....................................27: Bảng thế S-Box của AES ... 19 Bảng 2.................................................................................................... 46 Bảng 3...............................................17: Hộp S6.....3: Mã hóa theo mẫu hình học .......................................9: Bảng dịch bit tại các vòng lặp của DES ......................................2: Mã hoá thay đổi vị trí cột .............................18: Hộp S7......24: Qui ƣơc một số tƣ viế t tắ t và thuật ngữ của AES ..........................2: Biể u diễn của tập E23(1.......Danh mục bảng ̉ DANH MỤC BANG Bảng 2.... 89 Bảng 4.................. 95 .....

văn bản quan trọng. quan trọng ngày càng trở nên cấp thiết. các bạn độc giả một tài liệu bổ ích. Khó có thể thấy một ứng dụng Tin học có ích nào lại không sử dụng các thuật toán mã hóa thông tin. đã ̣ luôn tạo điều kiện tố t nhấ t. các bạn độc giả góp ý chân thành để tôi có thể hoàn thiện hơn nữa cuố n sách này. Mặc dù đã rất cố gắng song vẫn không tránh khỏi một số thiếu sót. các tài liệu văn bản giấy tờ và các thông tin quan trọng đều đƣợc số hóa và xử lý trên máy tính. góp ý cho tôi trong quá trình biên soạn .Lơi nói đầ u ̀ ̀ LƠI NOI ĐÂU ̀ ́ Từ trƣớc công nguyên con ngƣời đã phải quan tâm tới việc làm thế nào để đảm bảo an toàn bí mật cho các tài liệu. đặc biệt là trong lĩnh vực quân sự. Xin gƣi lơi cảm ơn sâu sắ c tơi ̉ ̀ ̀ ́ Thạc sỹ Phạm Tuấn Đạt . giải pháp để bảo vệ sự an toàn và bí mật của các thông tin nhạy cảm. Mật mã học chính là ngành khoa học đảm bảo cho mục đích này. các giao thức mật mã. các em sinh viên. ngƣơi đã đọc và cho nhƣ̃ng nhận xét . đƣợ c truyền đi trong một môi trƣờng mà mặc định là không an toàn. Xin gửi lời cảm ơn chân thành tới các bạn bè đồng nghiệp . nhƣ̃ng ngƣơi thân đã ̀ luôn độ ng viên. đặc biệt là Tiế n sỹ Lê Quố c Đinh – chủ nhiệm khoa. Ngày nay với sự xuất hiện của máy tính. Cuố i cùng xin gƣi lơi cảm ơn tơi Ban chủ ̉ ̀ ́ nhiệm khoa Công nghệ Thông tin. Tài liệu này dựa trên những kinh nghiệm và nghiên cứu mà tác giả đã đúc rút. hy vọng sẽ đƣợc các bạn bè đồng nghiệp. Hải phòng. Đại học Hàng hải Việt nam. Xin gƣi lơi cảm ơn tơi Thạc sỹ ̉ ̀ ́ Nguyễn Đinh Dƣơng . ngƣơi đã hiệu đính một cách kỹ càng và cho rấ t nhiề u nhận xét ̀ có giá trị cho bản thảo của cuốn sách này . tháng 12 năm 2007 Tác giả Nguyễn Hữu Tuân 1 . Với bảy chƣơng đƣợc chia thành các chủ đề khác nhau từ cơ sở toán học của mật mã học cho tới các hệ mã. góp ý quí báu cho phần viết ̀ ̀ về hệ mã khóa công khai dƣ̣ a trên các đƣơng cong Elliptic. hy vọng sẽ cung cấp cho các em sinh viên. ngoại giao. giúp đỡ để cuố n sách này có thể hoàn thành. thu thập trong quá trình giảng dạy môn học An toàn và Bảo mật Thông tin tại khoa Công nghệ Thông tin. Do đó yêu cầu về việc có một cơ chế.

Thƣơng thì các mục tiêu của an toàn bảo ̀ mật thông tin không thể đạt đƣợ c nế u chỉ đơn thuầ n dƣ̣ a vào các thuật toán toán học và các giao thức. số học. Tuy nhiên sƣ̣ thay đổ i đáng kể đế n ơ đây chính là khả ̉ năng sao chép và thay đổ i thông tin. Về mặt ý tƣơng việc lƣu giƣ̃ thông tin là không có nhiề u thay đổ i đáng kể qua thơi ̉ ̀ gian. 2. một ngành khoa học có lich sƣ lâu đơi ̣ ̉ ̀ dƣ̣ a trên nề n tảng các thuật toán toán học.Chƣơng I: Giơi thiê ̣u ́ CHƢƠNG I: GIƠI THIỆU ́ 1. ́ ̀ Tài sản của hệ thống bao gồm:       Phầ n cƣng ́ Phầ n mề m Dƣ̃ liệu Các truyền thông giữa các máy tính của hệ thống Môi trƣơng làm việc ̀ Con ngƣơi ̀ 3. sách. Các mối đe doạ đối với một hệ thống và các biện pháp ngăn chặn Có 3 hình thức chủ yếu đe dọa đối với hệ thống: 2 . Ngày xƣa thông tin thƣờng đƣợc lƣu và vận chuyển trên giấy tờ . mà để đạt đƣợc điều này đòi hỏi cần có các kỹ thuật mang tính thủ tục và sƣ̣ tôn trọng các điề u luật . báo …). Chẳ ng hạn sƣ̣ bí mật của các bƣc thƣ tay là do sƣ̣ phân phát ́ các lá thƣ đã có đóng dấu bởi một dịch vụ thƣ tín đã đƣợc chấp nhận . Khái niệm hệ thống và tài sản của hệ thống Khái niệm hệ thống : Hệ thố ng là một tập hợ p các máy tinh gồ m các thành phầ n ́ phấ n cƣng. chẳ ng hạn nhƣ tiề n giấ y đòi hỏi phải đƣợ c in bằ ng loại mƣ̣ c và giấ y tố t để không bị làm giả. trong khi giơ đây ̀ chúng đƣợc lƣu dƣới dạng số hóa và đƣợc vận chuyển bằng các hệ thống viễn thông hoặc các hệ thố ng không dây . Vơi các tài liệu lƣu trƣ̃ và vận chuyể n trên ́ giấ y điề u này khó khăn hơn nhiề u. Ngƣơi ta có thể tạo ra hàng ngàn mẩ u tin giố ng nhau ̀ và không thể phân biệt đƣợc nó với bản gốc . Và điều cần thiết đối với một xã hội mà thông tin hầu hế t đƣợ c lƣu trƣ̃ và vận chuyể n trên các phƣơng tiện điện tƣ chinh là các phƣơng tiện ̉ ́ đảm bảo an toàn bảo mật thông tin độc lập vơi các phƣơng tiện lƣu trƣ̃ và vận chuyển vật ́ lý của nó . phầ n mề m và dƣ̃ liệu làm việc đƣợ c tích luỹ qua thơi gian. Tính an toàn về mặt vật lý của các lá thƣ là hạn chế (nó có thể bị xem trộm ) nên để đảm bảo sƣ̣ bí mậ t của bức thƣ pháp luật đã đƣa ra qui định : việc xem thƣ mà không đƣợ c sƣ̣ đồ ng ý của chủ nhân hoặc những ngƣời có thẩm quyền là phạm pháp và sẽ bị trừng phạt . Đôi khi mục đích của an toàn bảo mật thô ng tin lại đạt đƣợ c nhơ chính phƣơng tiện vật lý mang ̀ chúng. Phƣơng tiện đó chính là mật mã học . xác suất và các môn khoa học khác. An toàn bảo mâ ̣t thông tin và mâ ̣t mã học Trải qua nhiều thế kỷ hàng loạt các giao thƣc (protocol) và các cơ chế (mechanism) ́ đã đƣợ c tạo ra để đáp ƣng nhu cầ u an toàn bảo mật thông tin khi mà nó đƣợ c truyề n tải ́ trên các phƣơng tiện vật lý (giấ y.

các thuật toán mật mã ́ học đƣợc cứng hóa để sử dụng Điề u khiể n thông qua các chính sách của tổ chƣc : ban hành các qui đinh của tổ ̣ ́ chƣc nhằ m đảm bảo tinh an toàn bảo mật của hệ thố ng. xem (viewing). Chúng ta có thể chia thành 3 loại đối tƣợng nhƣ sau : ̉ các đối tƣợng từ ngay bên trong hệ thống (insider). ́ quyề n ngƣơi dùng trong hệ thố ng làm họ không thể truy cập vào hệ thố ng để ̀ làm việc. hoặc hiể u biế t về sƣ̣ tồ n tại của một đố i tƣợ ng trong tổ chƣc . Các biện pháp ngăn chặn: Thƣơng có 3 biện pháp ngăn chặn: ̀    Điề u khiể n thông qua phầ n mề m : dƣ̣ a vào các cơ chế an toàn bảo mật của hệ thố ng nề n (hệ điề u hành). in ấ n (printing). cracker). chủ yếu để đảm bảo an toàn cho hệ thống. sƣa đổ i.Chƣơng I: Giơi thiê ̣u ́   Phá hoại: kẻ thù phá hỏng thiết bị phần cứng hoặc phần mềm hoạt động trên hệ thố ng. sƣ dụng ̉ chƣơng trình. các thuật toán mật mã học Điề u khiể n thông qua phầ n cƣng : các cơ chế bảo mật . Còn đối với các dữ liệu công cộng thì thƣờng phƣơng pháp hiệu quả là ́ các phƣơng pháp của mật mã học. Các loại truy cập gồm có : đọc (reading).  quyề n. adware …) chạy trên hệ ́ thố ng. Can thiệp : Tài sản bị truy cập bởi những ngƣời không có thẩm quyền truyề n thông thƣ̣ c hiện trên hệ thố ng bi ̣ ngăn chặn. và thƣ ba là các phầ n mề m (chẳ ng hạn nhƣ spyware. Chẳ ng hạn nhƣ thay đổ i mật khẩ u . Mục tiêu và nguyên tắ c chung của an toàn bảo mâ ̣t thông tin Ba mục tiêu của an toàn bảo mật thông tin:  Tính bí mật: Tài sản của hệ thống chỉ đƣợc truy cập bởi những ngƣời có thẩm quyề n.  Tính toàn vẹn dữ liệu: tài sản của hệ thống chỉ đƣợc thay đổi bởi những ngƣời có thẩm quyền. Điề u này thƣơng làm cho hệ ̉ ̀ thố ng không làm đúng chƣc năng của nó . nhƣ̃ng đố i tƣợ ng bên ngoài hệ thố ng (hacker. Sƣa đổ i: Tài sản của hệ thống bị sửa đổi trái phép . Kiế m soát truy cập chỉ có thể đƣợ c thƣ̣ c hiện vơi các hệ thố ng ́ phầ n cƣng vật lý . Tính sẵn dùng: tài sản luôn sẵn sàng đƣợc sử dụng bởi những ngƣời có thẩm Hai nguyên tắ c của an toàn bảo mật thông tin: 3 . ̉ . đây là nhƣ̃ng ngƣơi có quyề n truy cập ̀ hợ p pháp đố i vơi hệ thố ng . 4.Tính bí mật có ́ thể đƣợ c bảo vệ nhơ việc kiể m soát truy cập (theo nhiề u kiể u khác nhau ) hoặc nhơ các ̀ ̀ thuật toán mã hóa dữ liệu. ́ thƣơng các đố i tƣợ ng này tấ n công qua nhƣ̃ng đƣơng kế t nố i vơi hệ thố ng nhƣ Internet ̀ ̀ ́ chẳ ng hạn. ́ ́ Trong môn học này chúng ta tập trung xem xét các thuật toán mật mã học nhƣ là một phƣơng tiện cơ bản. Các  Các đe dọa đối với một hệ thống thông tin có thể đến từ nhiều nguồn và đƣợc thực hiện bơi các đố i tƣợ ng khác nhau .

[3] Ngƣời ta quan niệm rằng : những từ. C là không gian bản mã: là tập hữu hạn các bản mã có thể có. K. Khái niệm hệ mã mật (CryptoSystem) Một hệ mã mật là bộ 5 (P. ̉ ̀ 6. các phƣơng pháp tấ n công các hàm băm và các giao thƣc mật ma. K là kkhông gian khoá: là tập hữu hạn các khoá có thể có. Các hệ mã mật thƣơng sƣ dụng kế t hợ p cả hai kỹ thuật này. các giao thức mật mã. những ký tự của bản văn bản gốc có thể hiểu đƣợc sẽ cấu thành nên bản rõ (P-Plaintext).  Tài sản đƣợc bảo vệ cho tới khi hết gía trị sử dụng hoặc hết ý nghĩa bí mật. Sản phẩm ́ của lĩnh vực này là các phƣơng pháp thám mã . các cơ ̃ chế phân phố i. 5. quản lý khóa và các giao thức mật mã. Mâ ̣t mã học (cryptology) Mật mã học bao gồm hai lĩnh vực (cryptanalysis-codebreaking) trong đó: : mã hóa (cryptography) và thám mã  Mã hóa: nghiên cƣu các thuật toán và phƣơng thƣc để đảm bả o tính bí mật và ́ ́ xác thực của thông tin (thƣơng là dƣơi dạng cá c văn bản lƣu trƣ̃ trên máy tính ). ́ ̃ Trong giơi hạn của môn học này chúng ta chủ yế u tập trung vào tìm hiể u các vấ n đề ́ mã hóa với các hệ mã mật. các ký hiệu khác hay kết hợp với nhau cho phù hợp với một phƣơng thức nhất định và khoá. các hệ chữ ký điện tử.  Phƣơng thức mã hoá hoán vị là phƣơng thức mã hoá mà các từ mã của bản rõ đƣợc sắp xếp lại theo một phƣơng thức nhất định. các hàm băm. 4) Đối với mỗi k  K. D) thoả mãn các điều kiện sau: 1) 2) 3) P là không gian bản rõ: là tập hữu hạn các bản rõ có thể có. những ký tự ở dạng bí mật không thể hiểu đƣợc thì đƣợc gọi là bản mã (C-Ciphertext). thƣơng thì đây là các đoạn văn bản trong ̀ một ngôn ngƣ̃ nào đó . các hàm băm . Với mỗi ek: P →C và dk: C →P là những hàm mà dk(ek(x)) = x cho mọi bản rõ x  P. có một quy tắc mã hoá ek  E và một quy tắc giải mã tương ứng dk  D. Có 2 phƣơng thức mã hoá cơ bản: thay thế và hoán vị:  Phƣơng thức mã hoá thay thế là phƣơng thức mã hoá mà từng ký tự gốc hay một nhóm ký tự gốc của bản rõ đƣợc thay thế bởi các từ.Chƣơng I: Giơi thiê ̣u ́  Việc thẩ m đi nh về bảo mật phả i là khó và cầ n tính tơi tấ t cả các tình huố ng ̣ ́ khả năng tấn công có thể đƣợc thực hiện.  Thám mã: Nghiên cƣu các phƣơng pháp phá mã hoặc tạo mã giả . còn những từ. Các sản ̀ ́ phẩ m của linh vƣ̣ c này là các hệ mã mật . . các phƣơng pháp giả mạo chữ ký . C. “Crypto” (krypte) có nghĩa là che dấu hay đảo lộn. các hệ chữ ký điện tử . Hàm giải mã dk chính là ánh xạ ngược của hàm mã hóa ek [5] 4 . còn “Graphy” (grafik) có nghĩa là từ. E. Trong tiếng Hy Lạp. Mã hóa (cryptography) là một ngành khoa học của các phương pháp truyền tin bảo mật.

Trong một hệ mật bất kỳ ta luôn có |C| ≥ |P| vì mỗi quy tắc mã hoá là một đơn ánh. khoá K1 ̉ ̀ chính là thông số điều khiển cho phép biến đổi từ bản rõ X sang bản mã Y (chỉ các bên tham gia truyền tin S và R mơi có thể biế t khóa này). kẻ địch E (Enemy) có thể nghe trộm. ̉ Các phép biến đổi đƣợc sử dụng trong mô hình truyền tin trên thuộc về một hệ mã mật (Cryptosytem) nào đó. Tính chất 4 là tính chất quan trọng nhất của mã hoá. hàm ek(x) phải là một đơn ánh. Khi |C| = |P| thì mỗi hàm mã hoá là một hoán vị. bộ mã ASCII. Vì nếu tồn tại x1 và x2 sao cho y = ek(x1) = ek(x2) thì khi nhận đƣợc bản mã y ta không biết nó đƣợc mã từ x1 hay x2. Trong mô hình này ngƣời gƣi S (Sender) muốn gửi một thông điệp X (Message – là ̉ một bản rõ ) tới ngƣời nhận R (Receiver) qua một kênh truyền không an toàn (Insecured Channel). 7. Rõ ràng trong trƣờng hợp này. 5 . Vì vậy. Nội dung của nó nói rằng nếu mã hoá bằng ek và bản mã nhận đƣợc sau đó đƣợc giải mã bằng hàm dk thì kết quả nhận đƣợc phải là bản rõ ban đầu x. Đó có thể là bộ chƣ̃ cái tiế ng Anh . Giải mã (D-Decryption) là quá trình ́ ngƣợc lại cho phép ngƣời nhận thu đƣợc thông tin X ban đầu từ đoạn mã hoá Y sƣ dụng ̉ khóa giải mã K 2 (chú ý là khóa giải mã và khóa mã hóa có thể khác nhau hoặc là một tùy thuộc vào hệ mã sƣ dụng). có các yếu tố mới đƣợc thêm vào nhƣ khái niệm kẻ địch (E-Enemy). các khoá mã hoá và giải mã K để đảm bảo tính bảo mật của thông tin cần truyền đi. ̉ Mô hình truyề n tin cơ bản của mật mã học: K1 Insecured Channel K2 Sender X Encrypt Y Y Decrypt X Receiver Enemy Hình 1. hay sửa đổi thông tin X. tức mã hoá (E-Encryption) lên thông tin X ở dạng đọc đƣợc (Plaintext) để tạo ra một đoạn văn bản đƣợ c mã hoá Y (C-Ciphertext) không thể hiể u đƣợc theo một quy luật thông thƣơng sƣ dụng một thông tin bí mật đƣợc gọi là khoá K1 (Key). Mô hinh truyề n tin cơ bản của mâ ̣t mã học và luật Kirchoff ̀ Mô hình truyề n tin thông thƣơng : Trong mô hinh truyề n tin thông thƣơng thông tin ̀ ̀ ̀ đƣợ c truyề n (vận chuyể n) tƣ ngƣơi gƣi đế n ngƣơi nhận đƣợ c thƣ̣ c hiện nhơ một kênh vật ̉ ̀ ̀ ̀ ̀ lý (chẳ ng hạn nhƣ việc gƣi thƣ) đƣợ c coi là an toàn.1: Mô hình cơ bản của truyền tin bảo mật Đây là mô hình cơ bản của truyền tin bảo mật. S sử dụng phép biến đổi. Khác với truyền tin thông thƣờng. bộ mã Unicode hoặc đơn giản nhất là các bit 0 và 1. nếu không thì ta sẽ không giải mã đƣợc.Chƣơng I: Giơi thiê ̣u ́ Thƣơng thì không gian các bản rõ và không gian các bản mã là các văn bản đƣợ c ̀ tạo thành từ một bộ chữ cái A nào đó.

Chƣơng I: Giơi thiê ̣u ́ Quá trình mã hóa và giải mã yêu cầu các quá trình biến đổi dữ liệu từ dạng nguyên thuỷ thành in put cho việc mã hóa và chuyể n output của quá trình giải mã thành bản rõ . Ý nghĩa của luật Kirchoff : sự an toàn của các hệ mã mật không phải dựa vào sự phƣc tạp của thuật toán mã hóa sƣ dụng. Một ví dụ điể n hình là 2000 năm ́ trƣơc đây hoàng đế La mã Julius Caesar đã tƣng sƣ dụng một thuật toán thay thế đơn ̉ ́ ̀ giản mà ngày nay đƣợc mang tên ông trong cuộc chiến tranh Gallic. khi trình bày một hệ mật bất kỳ . Nhƣng chúng ta không thể tin vào độ an toàn của hệ mã mật chỉ dựa vào một giả thiết không chắc chắn là đối phƣơng không biết thuật toán đang sử dụng . ngoại giao . Tuy vậy có thể chia lich sƣ mật mã học thành hai thơi kỳ nhƣ sau: ̣ ̉ ̀ Thơi kỳ tiề n khoa học : Tƣ trƣơc công nguyên cho tơi năm 1949. Tác phẩm “A manuscript on Deciphering Cryptography Messages” của Abu al -Kindi đƣợc viết vào thế kỷ thứ 9 đƣợ c tìm thấ y tại Istabul vào năm 1987 đã cho thấ y nhƣ̃ng nhà khoa học Ả rập là nhƣ̃ng ngƣơi đầ u tiên đã phát triể n các phƣơng pháp thám mã dƣ̣ a vào ̀ phân tich tầ n số xuấ t hiện của các ký tƣ̣ đố i vơi các hệ mã thay thế đơn âm (một phƣơng ́ ́ pháp đƣợc sử dụng rộng rãi trong thơi kỳ Trung cổ do đơn giản và khá hiệu quả). ̉ ́ 8.1903) (một nguyên tắ c cơ bản trong mã hoá) thì: toàn bộ cơ chế mã/giải mã trừ khoá là không bí mật đối với kẻ địch [5]. Một vài sự kiện đƣợc ghi lại bởi các vị linh mục nhƣng chỉ có Roger Bacon là ngƣời thực sự đã viết về mật mã học trong tác phẩm “Secret Work of Art and the Nullity of Magic” vào giữa những năm 1200. Nhƣ̃ng ngƣơi Ai cập cổ đại đã sƣ ̉ ̀ dụng các chữ tƣợng hình nhƣ là một dạng mã hóa đơn giản nhất trên các bia mộ của họ . sƣ̣ ra đơi của các ̀ hệ mã mật khóa công khai và chƣ̃ ký điện tƣ. chúng ta đều giả thiết hệ mật đó đƣợc trình bày dƣới luật Kirchoff. chiế n tranh …). ̀ Ở châu Âu thời kỳ Trung cổ là một khoảng thời gian u ám và tăm tối của lịch sử nên không có nhiề u phát triể n mạnh về văn hóa nói chung và mật mã học nói riêng . Rõ ràng khi đối phƣơng không biết đƣợc hệ mã mật đang sử dụng thuật toán mã hóa gì thì việc thám mã sẽ rất khó khăn. Trong giai đoạn ̀ ̀ ́ ́ này mật mã học đƣợc coi là một nghệ thuật nhiều hơn là một môn khoa học mặc dù đã đƣợ c ƣng dụng trong thƣ̣ c tế . Vào thời Trung cổ một trong những cái tên nổi tiếng nhất là Chaucer. ́ Lịch sử của mật mã học đƣợc đánh dấu vào năm 1949 khi Claude Shannon đƣa ra lý thuyết thông tin . Sơ lƣợc về lich sƣ mâ ̣t mã học ̣ ̉ Mật mã học là một ngành khoa học có một lich sƣ khoảng ̣ 4000 năm. Theo luật Kirchoff (1835 . Sau thơi kỳ này một loạt các nghiên cƣu quan trọng của nghành mật ̀ ́ mã học đã đƣợc thực hiện chẳng hạn nhƣ các nghiên cứu về mã khối . Các cổ vật ̉ của ngành khảo cổ học thu đƣợ c đã cho thấ y điề u này . ngƣơi đã đƣa ra các công trình nghiên cứu nghiêm túc đầu tiên về mật mã học trong các ̀ 6 . Các tài liệu viết tay khác cũng cho thấy các phƣơng pháp mã hóa đơn giản đầu tiên mà loài ngƣời đã sử dụng là của ngƣời Ba Tƣ cổ và ngƣời Do Thái cổ. ̉ Qua nhiề u thế kỷ phát triể n của mật mã học chủ yế u đƣợ c phục vụ cho các mục đich quân sƣ̣ (gián điệp . Vì vậy. Các quá trình này là các quá trình biến đổi không khóa và đƣợc gọi là các quá trình encode và decode.

Yiqun Lisa Yin. xƣ lý và truyề n giƣ̃a các máy ̉ ́ tính. Đây là một sƣ̣ kiện lơn đố i vơi ngành mật mã học do sƣ̣ ƣng dụng rộng rãi ́ ́ ́ và có thể xem là còn quan trọng hơn bản thân các hệ mã mật của các hàm băm . DES sau đó đã có một sƣ̣ phát triể n ƣng dụng rƣ̣ c rỡ cho tơi đầ u ́ ́ nhƣ̃ng năm 90. ̉ Do nhƣợ c điể m của các hệ mã mật khóa công khai là chậm nên các hệ mã khố i vẫn tiế p tục đƣợ c phát triể n vơi các hệ mã khố i mơi ra đơi để thay thế cho DES vào cuố i thế ́ ́ ̀ kỷ 20 nhƣ IDEA. tuy nhiên Charles ̉ ̀ Babbages đã thực hiện thám mã thành công vào năm 1854 nhƣng điều này đƣợc giữ bí mật. tác giả của hệ mã Blowfish) đã tƣng nói rằ ng các hinh thƣc tấ n công đố i vơi các hệ mã mật nói riêng và tấ n ̀ ̀ ́ ́ công đố i vơi các hệ thố ng máy tinh nói chung sẽ ngày càng t rơ nên hoàn thiện hơn ̉ ́ ́ “Attacks always get better .” và lich sƣ phát triể n của mật mã học ̣ ̉ chính là lịch sử phát triển của các hình thức tấn công đối với các hệ mã mật đang đƣợc sƣ dụng. Tuy vậy do việc thiếu các thiết bị ́ ́ cải tiến nên các biến thể của thuật toán mã hóa này vẫn còn đƣợc sử dụng trong những năm đầu của thế kỷ 20 mà tiêu biểu nhất là việc thám mã thành công máy điện tín Zimmermann của quân Đƣc (một trong các sƣ̣ kiện tiêu biể u của mật mã học ) trong thế ́ chiến thứ nhất và kết quả là sự tham gia của Mỹ vào cuộc chiến. Vơi sƣ̣ xuấ t hiện của các hệ thố ng máy tính cá nhân và mạng máy tính các thông tin ́ văn bản ngày càng đƣợ c lƣu trƣ̃ và xƣ lý nhiề u hơn trên các máy tính do đó nảy sinh yêu ̉ cầ u về an toàn bảo mật đố i vơi các thông tin đƣợ c lƣu trƣ̃ . they never get worse . Hongbo Yu) đã phát triể n các phƣơng pháp cho phép phát hiện ra các đụng độ của các hàm băm đƣợc sử dụng rộng rãi nhất trong số các hàm băm này. Blaise De Vegenere cũng là tác giả của hệ mã mang t ên ông. Vào cuối những năm 1970 chứng kiến sự phát triển của các thuật toán mã hóa khóa công khai sau khi Whitfield Diffie và Martin Hellman công bố bài báo “New Directions in Cryptography” làm nền tảng cho sự ra đời của các hệ mã khóa công khai và các hệ chƣ̃ ký điện tƣ. ̉ 7 . Một nhóm các nhà khoa học ngƣời Trung Quố c (Xiaoyun Wang. Vào đầu những năm 1970 là sự phát triển của các thuật toán mã hóa khối đầu tiên : Lucipher và DES . Bruce Schneier (một trong nhƣ̃ng nhà mật mã học hàng đầ u . hệ mã này đã tƣng ̀ đƣợ c xem là an toàn tuyệt đố i và đƣợ c sƣ dụng trong một thơi gian dài. Một thuật toán thám mã đƣợc phát hiện độc lập bởi một nhà khoa học ngƣời Phổ (thuộc nƣơc Đƣc ngày nay ) có tên là Friedrich Kasiski . SHA-512) trong các ứng dụng. Do sƣ̣ kiện này các hãng viế t phầ n mề m lơn (nhƣ Microsoft) và các nhà mật mã học đã khuyến ́ cáo các lập trình viên sử dụng các hàm băm mạnh hơn (nhƣ SHA-256.Chƣơng I: Giơi thiê ̣u ́ tác phẩm của mình chẳng hạn nhƣ “Treatise on the Astrolabe”. Gầ n đây nhấ t là các sự kiện liên quan tới các hàm băm MD 5 (một hàm băm thuộc họ MD do Ron Rivest phát triển ) và SHA 1. AES hoặc 3DES (một cải tiế n của DES). Trong thơi kỳ Trung cổ ơ ̉ ̀ phƣơng Tây cuốn sách của Blaise De Vegenere (ngƣơi phát minh ra thuật t oán mã hóa ̀ thay thế đa âm tiế t ) đƣợ c xem nhƣ là một tổng kết các kiến thức về mật mã học cho tới thời điểm bấy giờ. bao gồm cả thuật toán thay thế đa âm tiết và một vài sơ đồ khóa tự động.

2) chúng ta có các thuật toán mã hóa sau: ̉ 1. nhƣ Caesar . Tƣ các ƣng dụng cho các máy tính cá nhân ́ ̀ ́ (Desktop Applications ) cho tơi các chƣơng trình hệ thố ng nhƣ các hệ điề u hành ́ (Operating Systems) hoặc các ƣng dụng mạng nhƣ Yahoo Messenger hoặc các hệ cơ sơ ̉ ́ dƣ̃ liệu đề u có sƣ dụng các thuật toán mã hóa mật khẩ u ngƣ ời dùng bằng một hệ mã ̉ hoặc một hàm băm nào đó .Chƣơng I: Giơi thiê ̣u ́ 9. Khóa sử dụng cho các thuật toán này là 2 khóa. Ở đây chúng ta sẽ phân loại các thuật toán mật mã học dƣ̣ a vào hai loại tiêu chí . cả hai đều có thể mã hóa và giải mã thông điệp . Tiêu chí thƣ hai phân loại các thuật toán mã hóa dƣ̣ a trên cách thƣc xƣ lý input của ̉ ́ ́ thuật toán (tƣc là bản rõ ). Phân loại các thuâ ̣t toán mâ ̣t mã học Có nhiều cách khác nhau để chúng ta có thể phân loại các thuật toán mật mã học sẽ đƣợc học trong chƣơng trình . Các hàm băm là các thuật toán mã hóa không khóa hoặc có khóa và thƣờng đƣợ c sƣ dụng trong các hệ chƣ̃ ký điện tƣ hoặc các hệ mã ̉ ̉ khóa công khai. byte liên tục. dƣ̣ a trên tiêu chí này chúng ta có hai loại thuật toán mã hóa ́ sau: 1. 2. Các thuật toán mã hóa khóa bí mật tƣơng ứng với các h ệ mã mật khóa bí mật hay khóa đố i xƣng SKC (Symmetric Key Cryptosytems). AES …) xƣ lý bản rõ dƣơi ̉ ́ các đơn vị cơ bản là các khối có kích thƣớc giống nhau. Các thuật ̉ toán tạo chữ ký điện tử tạo thành các hệ chữ ký điện tử . khóa mã hóa đƣợc công khai hóa. 1. Các hàm băm (Hash functions). do vai trò của ngƣơi nhận và ́ ̀ ngƣơi gƣi là nhƣ nhau . Thông thƣơng mỗi hệ chƣ̃ ký ̀ điện tƣ có cùng cơ sơ lý thuyế t vơi một hệ mã mật khóa công khai nhƣng vơi cách áp ̉ ̉ ́ ́ dụng khác nhau . Một số ƣng dụng của mâ ̣t mã học ́ Ngày nay khó có thể tìm thấy các ứng dụng trên máy tính lại không sƣ dụng tơi các ̉ ́ thuật toán và các giao thƣc mật mã học . dƣ̣ a vào số lƣợ ng khóa sƣ dụng (0. Đôi khi các hệ mã này còn đƣợc gọi là các hệ mã khóa bất đối xứng (Asymmetric Key Cryptosytems). ̉ ̀ DES. Các thuật toán mã hóa khóa công khai tƣơng ứng với các hệ mã khóa công khai PKC (Public Key Cryptosystems). 3. AES … Khóa sƣ dụng cho các thuật toán này là 1 khóa cho cả việc mã hóa và giải ̉ mã. một cho việc mã hóa và một cho việc giải mã . Các thuật toán mã hóa dòng (RC4 …) coi bản rõ là một luồ ng bit. Tiêu chí thƣ nhấ t là dƣ̣ a vào các dich vụ an toàn bảo mật mà các thuật toán cung ̣ ́ cấ p. Các thuật toán mã hóa khối (chẳ ng hạn nhƣ DES . Đặc biệt với sự phát triển mạnh mẽ của thƣơng mại điện tử các mô hình chữ ký điện tử ngày càng đóng vai trò tích cực cho một môi trƣờng an toàn cho ngƣơi dùng. ElGammma… 4. 2. Tuy vậy chúng ta vẫn có thể chia các lĩnh vực ứng dụng của mật mã học ̀ thành các lĩnh vực nhỏ nhƣ sau: 8 . Trong chƣơng trình học chúng ta sẽ học một số hệ chƣ̃ ký điện tƣ phổ ̉ biế n là RSA. 10. Các thuật toá n tạo chƣ̃ ký điện tƣ (Digital Signature Algorithms).

ngƣơi ̀ 9 .  Toàn vẹn (Integrity): đảm bảo chỉ có các tổ chƣc đã đƣợ c xác thƣ̣ c hóa mơi có ́ ́ thể thay đổ i các tài sản của hệ thố ng cũng nhƣ các thông tin trên đƣơng truyề n.Chƣơng I: Giơi thiê ̣u ́  Bảo mật (Confidentiality): che dấ u nội dung của các thông điệp đƣợ c trao đổ i trong một phiên truyề n thông hoặc giao dich hoặc các thông điệp trên một hệ thố ng máy ̣ tính (các file.  dùng. các dữ liệu trong một cơ sở dữ liệu …).  Ngoài ra còn các dịch vụ quan trọng khác chẳng hạn nhƣ chữ ký điện tử . ̀  Dịch vụ không thể chối từ (Non-Repudiation): Các bên đã đƣợc xác thực không thể phủ nhận việc tham gia vào một giao dịch hợp lệ. dịch vụ chứng thực danh tính (Identification) cho phép thay thế hình thƣc xác thƣ̣ c hóa ngƣơi ́ ̀ dùng dƣ̣ a trên các mật khẩ u bằ ng các kỹ thuật mạnh hơn hoặc dich vụ thƣơng mại điện ̣ tƣ cho phép tiế n hành các giao dich an toàn trên các kênh truyề n thông không an toàn ̣ ̉ nhƣ Internet. Xác thực hóa (Authentication): đảm bảo nguồ n gố c của một thông điệp .

Nhƣ̃ng vấ n đề chinh sẽ đƣợ c ̣ ́ trình bày trong chƣơng này gồm :  Lý thuyết thông tin  Lý thuyết độ phức tạp  Lý thuyết số học. Lý thuyết thông tin Nhƣ̃ng khái niệm mơ đầ u của lý thuyết thông tin đƣợc đƣa ra lầ n đầ u tiên vào năm ̉ 1948 bơi Claude Elmwood Shannon (một nhà khoa học đƣợ c coi là cha để của lý thuyế t ̉ thông tin). lý thuyết thông tin … đƣợ c sƣ dụng trong mật mã học. nó sẽ chiếm ̉ ́ nhiề u không gian nhơ hơn .1. trƣơng ngay_thang trong một cơ sơ dƣ̃ liệu chƣa không quá 3 bít thông tin. đinh lý phầ n dƣ trung hoa . Trong phầ n này chúng ta chỉ đề cập tơi một số chủ đề quan trọng của lý thuyế t ́ thông tin. Entropy Lý thuyết thông tin định nghĩa khố i lƣợ ng thông tin trong một thông báo là số bít nhỏ nhấ t cầ n thiế t để mã hoá tấ t cả nhƣ̃ng nghia có thể của thông báo đó. chúng ta phải có những kiến thức nề n tảng cơ ̉ ́ bản về toán học. trong các hệ chƣ̃ ký ̉ điện tƣ cũng nhƣ các giao thƣc mật mã . nó có thể lƣu trữ nhƣ một ̉ ̀ trong hai xâu ký tƣ̣ ASCII : Nam. ̣ ́ đinh lý Fermat . ký hiệu H (gioi_tinh) = 1. Chƣơng này trinh ̉ ̀ bày nhƣ̃ng khái niệm cơ bản về lý thuyế t thông tin nhƣ Entropy . Khố i lƣợ ng thông tin trong một thông báo M đo bơi Entropy của thông báo đó. Tƣơng tƣ̣ nhƣ ́ ́ trƣơng gioi_tinh của một cơ sơ dƣ̃ liệu chỉ chứa 1 bít thông tin. ký ̉ hiệu là H(M). số nguyên tố . ̃ Ví dụ. ̉ ̀ ́ bơi vì thông tin ngày có thể mã hoá với 3 bít dữ liệu: ̉ 000 = Sunday 001 = Monday 010 = Tuesday 011 = Wednesday 100 = Thursday 101 = Friday 110 = Saturday 111 is unused Nế u thông tin này đƣợ c biể u diễn bơi chuỗi ký tƣ̣ ASCII tƣơng ƣng . độ an toàn của thuật toán . . .Chƣơng II: Cơ sơ toán học ̉ ̉ CHƢƠNG II: CƠ SƠ TOÁN HỌC Để hiể u đƣợ c nhƣ̃ng thuật toán sƣ dụng trong các hệ mã mật . 1. và các thuật toán kiể m tra số nguyên tố . và một số ́ kiế n thƣc toán học: đồ ng dƣ số học (modulo). Nƣ̃. 10 . Entropy của thông báo gioi _tinh là 1 bít. 1. độ phƣc tạp của thuật toán . Entropy của thông báo số ngày trong tuần là nhỏ hơn 3 bits. nhƣng cũng không chƣa nhiề u thông tin hơn . tố c độ của ngôn ngƣ̃ (Rate of Language).

thì tốc độ tuyệt đố i là : R = log2L Đây là số Entropy lơn nhấ t của mỗi ký tƣ̣ đơn lẻ . ̀ ́ ́ Nế u nó là một thông báo gƣi tơi Bob. Đối với tiếng Anh gồm 26 chƣ̃ cái. Hơn nƣ̃a họ có thể hài lòng vơi ́ một vài thông tin có khả năng về bản rõ P chẳ ng hạn nhƣ đó là âm thanh dạng số .7bits/chƣ̃ cái. hoặc cả hai . v . . Nế u có L ký tƣ̣ t rong một ngôn ngƣ̃ . tỉ mỉ các mô hình toán học để đánh giá độ an toàn ̣ ̃ của các hệ mã mật sử dụng .3 bit nghia và 3.4 bit dƣ thƣa (xấ p xỉ 72%).Chƣơng II: Cơ sơ toán học ̉ Trong trƣơng hợ p tổ ng quát. (Rate of Language) Đối với một ngôn ngữ.3 = 3. Ngôn ngƣ̃ này chắ c chắ n có sƣ̣ dƣ thƣa kế t hợ p vơi chinh ngôn ngƣ̃ đó. hoặc là một bảng tính dữ liệu. Entropy của một thông báo là log 2n. Không chỉ đố i vơi tiế ng Anh mà vơi hầ u hế t các ngôn ngƣ̃ tƣ̣ nhiên .28 = .72 letters/letter D = 4. bản rõ (P-PlainText).7 – 1. Sẽ không có điều gì là ngạc nhiên đố i vơi tấ t ́ cả mọi ngƣời rằng thực tế tốc độ của tiếng Anh nhỏ hơn nhiề u so vơi tố c độ tuyệt đố i . ngƣơi thám mã thƣơng cố gắ ng thu thập một số ̀ ̀ thông tin có khả năng về bản rõ P trƣơc khi bắ t đầ u. ̀ Tố c độ của tiế ng Anh bình thƣơng là 0. nó có thể bắt đầu với "Dear Bob". Hiện tƣợ ng này đƣợ c gọi là độ dƣ thƣa của ̀ ngôn ngƣ̃ (Redundancy) tƣ̣ nhiên. Đoạn văn bản ̉ ́ = R – r. .3 bit nghĩa. do việc sƣ dụng ngôn ngƣ̃ dẫn tơi có m ột số chữ cái đƣợc sử dụng với tần ̉ ́ suấ t không đồ ng đề u hoặc chỉ có thể xuấ t hiện vơi một cấ u trúc nào đó làm cho chúng ta ́ vẫn có thể đoán đƣợ c nghia của các thông báo nế u loại bỏ các chƣ̃ cái này. Họ có thể biết ngôn ngữ đã đƣợc sƣ ̉ ́ dụng để mã hoá. Đối với 11 . vơi n là số khả ̀ ́ năng có thể (ý nghĩa) của thông báo.. Mục đích của ngƣời thám mã là phát hiện ra khoá sƣ dụng ̉ của hệ mã (K-Key). Tố c độ của ngôn ngƣ̃.3. ́ Trong hầ u hế t các lầ n thám mã. H(M) = log2n 1. v. hoặc là một văn bản tiế ng Đƣc. ̃ Độ dƣ thừa (Redundancy) của một ngôn ngữ ký hiệu là D và D tiế ng Anh: D = 1 . và ́ chúng ta vẫn thấy rằng đối với một thông báo bằng tiếng Anh có thể loại bỏ một số chƣ̃ cái nhƣng ngƣời đọc vẫn có thể hiể u đƣợ c . ́ tố c độ tuyệt đố i là log 226 = 4. do cấ u trúc của ́ ́ ngôn ngƣ̃ . tố c độ thƣ̣ c tế (actual rate) của ngôn ngữ là: r = H(M)/N trong trƣơng hợ p này N là độ dài của thông báo và M là một thông điệp có độ dài N. Tính an toàn của hê ̣ thố ng mã hoá Shannon đinh nghia rấ t rõ ràng .4 bits/letter Nhƣ vậy mỗi chƣ̃ cái có 1. ̀ Tố c độ tuyệt đố i (absolute rate) của một ngôn ngƣ̃ là số bits lơn nhấ t cầ n thiế t để ́ mã hóa các ký tự của ngôn ngữ đó .2. ̃ ̀ 1.28 do đó mỗi chƣ̃ cái tiế ng Anh có 1.

Entropy của một hệ mã mật là kích thƣớc của không gian khoá ̀ (Keyspace). Điề u này có nghia là nế u chúng ta có khoảng 25 chƣ̃ cái bản mã chúng ta chỉ có thể ̃ thƣ để khơp vơi một bản ro. Ngƣơi thám mã sử dụng sự dƣ thừa tự nhiên của ngôn ngữ để làm giảm số khả ̀ năng có thể có của bản rõ . Mục đích của việc thám mã là sƣa nhƣ̃ng tập hợ p khả năng có thể có của bản ̉ mã (C-CipherText) vơi mỗi khả năng có thể của bản rõ. Dƣ̣ a ̉ vào công thức này chúng ta thấy nếu nhƣ độ dƣ thừa của ngôn ngữ càng gần 0 thì càng khó thám mã mặc dù đó có thể là một hệ mã rất đơn giản . Chẳ ng hạn đố i vơi hệ mã thay thế ́ đơn âm (nhƣ Caesar) trên bảng chƣ̃ cái tiế ng Anh ta sẽ có: H(K)= log226! = 87. Nế u chúng ta có số bản mã ít hơn số U thì không thể nói là dự đoán (phép thƣ) của chúng ta là đúng . H(K) = log2(number of keys ) Shannon cũng đƣa ra một khái niệm gọi là Unicity Distance (ký hiệu là U ) để đánh giá độ an toàn của một hệ mã mật. Phƣơng pháp dễ nhấ t để t hƣ̣ c hiện điề u này là thông qua kỹ thuật thay thế . có hai kỹ thuật cơ bản để che dấu sự dƣ thừa thông tin trong thông báo gốc. hệ thố ng mã hoá chỉ an toàn tuyệt đố i nế u nế u số kho á có thể sƣ dụng ít nhất phải bằ ng số thông báo có thể . khoá tối thiểu của hệ mã phải dài bằng thông báo của hệ mã đó. Vì quá trình nén làm giảm sự dƣ thƣa của thông báo . Một thuật toán mật mã tố t giƣ̃ cho ́ thông tin bị tiết lộ ở mức nhỏ nhất và một ngƣơi thám mã giỏi sẽ khai thác tố t nhƣ̃ng ̀ thông tin này để phát hiện ra bản rõ. sẽ dễ dàng hơn cho ̀ quá trình thám mã. Đối với một hệ mã mật U của nó là: U = H(K)/D Đây là số nhỏ nhấ t các bản mã cầ n thiế t để có thể tiế n hành thám mã theo cách thƣ ̉ tấ t cả các khóa có thể (brute-force attack) thành công. Ngoại trừ các hệ mã an toàn tuyệt đố i . Nhiề u thông tin dƣ thƣa của ngôn ngƣ̃ . điề u này là không thể tránh đƣợ c .5. ́ Shannon phát triể n lý thuyế t cho rằ ng . Kỹ thuật lộn xộn và rƣơm rà (Confusion and Diffusion) ̀ Theo Shannon.4. D = 3. Cũng dựa vào công thức này suy ra để tăng tính an toàn của hệ mã có thể tăng không gian khóa của nó. Kỹ thuật này làm thấ t bại các cố gắ ng nghiên cƣu bản mã để tìm kiếm thông tin dƣ thừa và ́ thố ng kê mẫu .Chƣơng II: Cơ sơ toán học ̉ "Dear Bob" sẽ là một khả năng có thể hơn là một chuỗi không mang ý nghia gì chẳ ng hạn ̃ "tm*h&rf". các bản mã thƣơng chƣa một số thông tin ̀ ́ đúng vơi bản rõ . ̉ ́ ́ ̃ Khái niệm Unicity Distance là một khái niệm mang tính xác suất nó cho chúng ta biế t số lƣợ ng ít nhất các bản mã cần có để có thể xác định duy nhất 1 bản mã chứ không phải là số bản mã đủ để tiến hành thám mã (chắ c chắ n thành công ). Kỹ thuật lộn xộn (Confusion): che dấ u mố i quan hệ giƣ̃a bản rõ và bản gố c . Hiể u theo một nghia ̉ ̃ khác. Một hệ mã hoá thay thế đơn giản .4 suy ra U = 25. đó là: sƣ̣ lộn xộn và sự rƣờm rà. Chính vì lý do này mà nhiều mô hìn h mã hóa sƣ dụng thuật toán nén ̉ bản rõ để giảm kích thƣớc văn bản trƣớc khi mã hoá chúng. 1. dƣ̣ a trên nề n ̣ 12 . chẳ ng hạn hệ mã dich vòng Caesar .

Các lớp của thuật toán. các lời gọi hàm …). Máy Turing không đơn định có thể có một vài trạng ̣ ́ 13 . tƣơng đƣơng vơi độ phƣc tạp đa thƣc của kích ́ ́ ́ thƣơc input. Nó so sánh các thuật toán mã hoá. Lý thuyết thông tin đã cho chúng ta biết rằng một thuật toán mã hoá có thể bị bại lộ . máy hoạt động trong thời gian rời rạc . 2. ́ Các thuật toán thuộc lớp P có độ phức tạp là hàm đa thức của kích thƣớc input . Máy Turing là một máy đặc biệt . Thông thƣơng các hệ mã hiện đại thƣơng kế t hợ p cả hai kỹ thuật thay thế và hoán ̀ ̀ vị để tạo ra các thuật toán mã hóa có độ an toàn cao hơn. Độ phức tạp thời gian của thuật toán là một hàm của kích thƣớc dữ liệu input của thuật toán đó . Chúng ta có thể đinh nghia hàm độ phƣc tạp thơi gian kế t hợ p vơi máy Turing A. ́ Thuật t oán mà ở bƣớc tiếp theo việc tính toán phải lựa chọn giải pháp từ những giơi hạn giá tri ̣ của hoạt động gọi là không đơn đinh . tại một thời điểm nó nằm trong khoảng trạng thái đầy đủ số của tất cả các trạng thái có thể là hữu hạn . Các thuật toán có độ phức tạp giống nhau đƣợ c phân loại vào trong các lơp tƣơng đƣơng . Lý thuyết độ phức tạp Lý thuyết độ phức tạp cung cấp một phƣơng pháp để phân tích độ phức tạp tính toán của thuật toán và các kỹ thuật mã hoá khác nhau . Tấ t cả ̣ ́ thuật toán thuộc lơp P đơn đinh có thơi gian giơi hạn là P _time. vấ n đề sẽ trở nên khó khăn hơn nếu các trạng thái không nằ m trong P . số các bƣơc nhỏ hơn nế u các hoạt động đƣợ c tập trung trong một bƣơc (chẳ ng hạn nhƣ các ́ ́ vòng lặp. ́ ́ Độ phức tạp thời gian thu ật toán phụ thuộc vào mô hình của các thuật toán . Máy Turing k hông đơn đinh hoạt động vơi thuật toán NP. Cách đơn giản nhất tạo ra sự rƣờm rà là thông qua việc đổ i chỗ (hay còn gọi là kỹ thuật hoán vị). nghĩa là chữ cái này đƣợc thay thế bằng chƣ̃ cái khác Kỹ thuật rƣờm rà (Diffusion): làm mất đi sự dƣ thừa của bản rõ bằng cách tăng sự phụ bản mã vào bản rõ (và khóa).Chƣơng II: Cơ sơ toán học ̉ tảng của sự thay thế các chƣ̃ cái của bản rõ. kỹ thuật và phát hiện ra độ an toàn của các thuật toán đó. Thuật toán có độ phƣc tạp thơi gian f (n) đố i vơi mọi n và kích thƣớc input ́ ̀ ́ n. vơi độ phƣc tạp thơi gian là một hàm mũ đố i vơi kich thƣơc ́ ́ ̀ ́ ́ ́ input đƣợ c coi là "không có khả năng thƣ̣ c hiện ". Còn lý thuyết độ phưc tạp cho ́ biế t khả năng bi ̣ thám mã của một hệ mã mật. Ví dụ tất cả các thuật toán có độ ́ phƣc tạp là n3 đƣợ c phân vào trong lơp n 3 và ký hiệu bởi O(n3). nghĩa là số bƣớc thƣ̣ c hiện của thuật toán lơn hơn f(n) bƣơc. Có hai lớp tổng quát sẽ ́ ́ đƣợ c là lơp P (Polynomial) và lớp NP (NonPolynomial). Lý thuyết độ phức tạp sử dụ ng các ̣ ́ máy đặc biệt mô tả đặc điểm bằng cách đƣa ra kết luận bởi các chuẩn . Công việc tìm kiế m sƣ̣ dƣ thƣa của ngƣơi thám mã ̀ ̀ sẽ rất mất thời gian và phức tạp. Nế u mỗi bƣơc tiế p theo của thuật toán là duy nhấ t thì thuật toán gọi là đơn đinh . ̣ ̃ ́ ̀ ́ fA(n) = max{m/A kế t thúc sau m bƣơc vơi đầ u vào w = n3 } ́ ́ Ở đây c húng ta giả sử rằng A là trạng thái kết thúc đối với tất cả các đầu vào . điề u này cho biế t chúng ̣ ́ ̀ ́ sẽ thực hiện trong thời gian đa thức .

Chƣơng II: Cơ sơ toán học ̉ thái chính xác. S(w) là trạng thái đo sự thành công ngắn nhất của thuật toán, (Nghĩa là sự tính toán dẫn đến trạng thái cuối cùng) Hàm số độ phức tạp thời gian của máy Turing không đơn định A đƣợc định nghĩa : fA(n)=max{1,m/s(w) có m bƣớc đối với w/w=n} ở mỗi bƣớc máy Turing không đơn định bố trí nhiều bản sao của một vài giải pháp và tinh toán độc lập vơi mọi lơi giải. ́ ́ ̀ chính nó nhƣ có

Các thuật toán thuộc lớp NP là không đơn định và có thể tính toán trên máy Turing không đơn đinh trong thơi gian P. ̣ ̀ Tuy nhiên không phải thuật toán mã hóa càng có độ phức tạp lớn thì hệ mã mật sử dụng thuật toán đó sẽ càng an toàn theo nhƣ phát biể u của luật Kierchoff. Vậy có thể đánh giá độ an toàn của một hệ mã mật nhƣ thế nào ? Vấ n đề này đã đƣợ c Claude Shannon trả lơi vơi các khái niệm về độ an toàn củ a các hệ mã mật trong ̀ ́ một bài báo có tiêu đề “Lý thuyết thông tin của các hệ thống bảo mật” (1949). 2.1. Độ an toàn tính toán Định nghĩa: Một hệ mật được gọi là an toàn về mặt tính toán nếu có một thuật toán tốt nhất để phá nó thì cần ít nhất N phép toán, với N là một số rất lớn nào đó. [10] Tuy nhiên trong thực tế, không có một hệ mật nào chứng tỏ là an toàn theo định nghĩa trên. Vì vậy, trên thực tế, ngƣời ta gọi hệ mật là “an toàn tính toán” nếu có một thuật toán để phá nó nhƣng đòi hỏi thời gian lớn đến mức không chấp nhận đƣợc (thuật toán có độ phức tạp hàm mũ hoặc thuộc lớp các bài toán có độ phức tạp NP). Một cách tiếp cận khác về độ “an toàn tính toán” là quy nó về một bài toán đã đƣợc nghiên cứu kỹ và đƣợc coi là khó. Ví dụ nhƣ bài toán “phân tích ra thừa số nguyên tố của một số n cho trƣớc” đƣợc coi là bài toán khó với n lớn, vì vậy ta có thể coi một hệ mật dựa trên bài toán “phân tích ra thừa số nguyên tố” là an toàn (tất nhiên đây chỉ là độ an toàn dựa vào chứng minh một bài toán khác chứ không phải chứng minh hoàn chỉnh về độ an toàn của hệ mật). 2.2. Độ an toàn không điều kiện Định nghĩa 1: Một hệ mật được coi là an toàn không điều kiện khi nó không thể bị phá ngay cả với khả năng tính toán không hạn chế. [10] Rõ ràng là “độ an toàn không điều kiện” không thể nghiên cứu theo quan điểm độ phức tạp tính toán vì thời gian tính toán là không hạn chế. Vì vậy, ở đây lý thuyết xác suất sẽ đƣợc đề cập để nghiên cứu về “an toàn không điều kiện”. Định nghĩa 2: Giả sử biến X và Y là các biến ngẫu nhiên. Ký hiệu xác suất để X nhận giá trị x là p(x) và để Y nhận giá trị y là p(y). Xác suất đồng thời p(x, y) là xác suất để đồng thời X nhận giá trị x và Y nhận giá trị y. Xác suất có điều kiện p(x/y) là xác suất để X nhận giá trị

14

Chƣơng II: Cơ sơ toán học ̉ x với điều kiện Y nhận giá trị y. Các biến X và Y đƣợc gọi là độc lập nếu p(x, y) = p(x)p(y) với mọi giá trị có thể có của X và Y. Định lý Bayes: Nếu p(y) ≠ 0 thì ta có:

p( x / y ) 
Hệ quả:

p ( x) p ( y / x) p( y )

X, Y là biến độc lập khi và chỉ khi p(x/y) = p(x) với mọi x, y. [5] Ở đây, ta giả thiết rằng một khoá cụ thể chỉ đƣợc dùng cho một bản mã. Ký hiệu xác suất tiên nghiệm để bản rõ xuất hiện là pp(x). Cũng giả thiết rằng khoá K đƣợc chọn theo một phân bố xác suất nào đó (thông thƣờng khoá K đƣợc chọn ngẫu nhiên nên các khoá sẽ đồng khả năng). Ký hiệu xác suất khoá K đƣợc chọn là pk(K). Giả thiết rằng khoá K và bản rõ x là các biến độc lập. Hai phân bố xác suất trên P và K sẽ tạo ra một phân bố xác suất trên C . Ký hiệu C(K) là tập các bản mã có thể nếu K là khoá. C (K) = { eK(x): x  P } Khi đó với mỗi y  C, ta có:

pC ( y) 

K , yC ( K )

pK ( K ). p p (d K ( y ))

Và xác suất có điều kiện pC(y/x) là xác suất để y là bản mã với điều kiện bản rõ là x đƣợc tính theo công thức sau:

pC ( y / x) 

K K , xd K ( y )

p

(K )

Bây giờ ta có thể tính xác suất có điều kiện pP(x/y) là xác suất để x là bản rõ khi bản mã là y theo định lý Bayes:

p ( x) pC ( y / x) pP ( x / y )  P  pC ( y )

pP ( x )
K , yC ( K )

K , xdK ( y )

pK ( K )

pK ( K ) pP (d K ( y ))

Lúc này, ta có thể định nghĩa khái niệm về độ mật hoàn thiện. Nói một cách không hình thức, độ mật hoàn thiện nghĩa là đối phƣơng với bản mã trong tay cũng không thể thu nhận đƣợc thông tin gì về bản rõ. Tuy nhiên ta sẽ nêu định nghĩa chính xác về độ mật hoàn thiện nhƣ sau: Định nghĩa: Một hệ mật hoàn thiện nếu pP(x/y) = pP(x) với mọi x  P và mọi y  C. Tức là xác suất hậu nghiệm để thu được bản rõ là x với điều kiện đã thu được bản mã là y đồng nhất với xác suất tiên nghiệm để bản rõ là x. [5]

15

Chƣơng II: Cơ sơ toán học ̉ Hay nói cách khác, độ mật hoàn thiện cũng tƣơng đƣơng với pC(y/x)= pC(y)). Định lý Shannon: Giả sử (P, C, K, E, D) là một hệ mật, khi đó hệ mật đạt được độ mật hoàn thiện khi và chỉ khi |K| ≥ |C|. Trong trường hợp |K| = |C| = |P|, hệ mật đạt độ mật hoàn thiện khi và chỉ khi mỗi khoá K được dùng với xác suất bằng nhau, bằng 1/|K| và với mỗi x  P, mỗi y  C có một khoá K duy nhất sao cho eK(x) = y. [5] Nhƣ vậy ta thấy để đạt độ hoàn thiện đòi hỏi khoá phải rất dài, do vậy rất khó khăn trong việc chuyển giao khoá giữa hai bên truyền tin. Vì vậy trong thực tế, chúng ta không thể có an toàn không điều kiện mà chúng ta chỉ cần an toàn thực tế, tức là phụ thuộc vào thông tin và thời gian cần bảo mật bằng cách sử dụng các hệ mật khác nhau với độ bảo mật khác nhau. 3.3. Hệ mật tích Một ý tƣởng khác đƣợc Shannon đƣa ra là ý tƣởng tạo ra các hệ mật mới dựa trên các hệ mật cũ bằng cách tạo tích của chúng. Đây là một ý tƣởng quan trọng trong việc thiết kế các hệ mật hiện đại ngày nay. Để đơn giản, ở đây chúng ta chỉ xét các hệ mật trong đó C = P, các hệ mật loại này gọi là tự đồng cấu. Giả sử S1 = (P, C, K1, E1, D1) và S2 = (P, C, K2, E2, D2) là các hệ mật tự đồng cấu có cùng không gian bản rõ và bản mã. Khi đó hệ mật tích đƣợc định nghĩa là hệ mật S = (P, C, K1  K2 ,E ,D). Khoá của hệ mật tích K = (K1, K2) trong đó K1  K1, K2  K2. Các hàm mã hoá và giải mã đƣợc xác định nhƣ sau:

e( K1 , K2 ) ( x)  eK2 (eK1 ( x)) d ( K1 , K2 ) ( x)  d K1 (eK2 ( x))
Nếu chúng ta lấy tích của S với chính nó, ta có hệ mật (S×S) (ký hiệu S2). Nếu lấy tích n lần thì kết quả là Sn. Ta gọi Sn là một hệ mật lặp. Nếu S2 = S thì ta gọi hệ mật là luỹ đẳng. Nếu S là luỹ đẳng thì không nên lấy tích lặp vì độ bảo mật không tăng lên mà không gian khoá lại lớn hơn. Đƣơng nhiên nếu S không luỹ đẳng thì ta có thể lặp lại S nhiều lần để tăng độ bảo mật. Ở đây nảy sinh một vấn đề là làm thế nào để có một hệ mật không luỹ đẳng? Ta biết rằng nếu S1 và S2 là luỹ đẳng và giao hoán thì S1×S2 cũng luỹ đẳng, đơn giản vì:

(S1×S2)×(S1×S2) = S1×(S2×S1)×S2 = S1×(S1×S2)×S2 = (S1×S1)×(S2×S2) = (S1×S2)
Vậy nếu muốn (S1×S2) không luỹ đẳng thì cần phải có S1 và S2 không giao hoán. Điều này có thể dễ dàng thực hiện bằng cách lấy tích của một hệ mật theo kiểu thay thế và một hệ mật theo kiểu hoán vị. Đây là kỹ thuật đƣợc dùng để thiết kế các hệ mã hiện đại nhƣ mã DES.

16

Số nguyên tố Số nguyên tố là một số lơn hơn 1. 73. Chúng ta có thể viế t nhƣ sau : GCD(a. if(x<0) 17 . 2521.Chƣơng II: Cơ sơ toán học ̉ 3.b) mod n = ((a mod n) . giả sử x. Một số nguyên tố sẽ là nguyên tố cùng nhau vơi tấ t cả các ́ số nguyên khác trƣ các bội số của nó. ̀ kế t hợ p và phân phố i. Modulo số học cũng giố ng nhƣ số học bình thƣơng . ̉ Dƣơi đây là đoạn mã nguồ n trong ngôn ngƣ̃ C: ́ /* Thuật toán tim ƣơc số chung lơn nhấ t của x và y. nhƣng chỉ chia hế t cho 1 và chính nó . nhƣng 15 và 27 thì không phải là hai số nguyên tố cùng nhau do có ƣơc số chung là 1 và 3. Mặt khác giảm mỗi giá tri ̣ trung gian trong suố t quá trình tính toán. Knuth mô tả thuật toán và một vài mô hình của thuật toán đã đƣợ c sƣa đổ i. Số lƣợ ng số nguyên tố là vô tận . Nói chung a và b đều là phầ n dƣ khi chia cho n . Hệ mật mã thƣơng sƣ dụng số nguyên tố lơn cỡ 512 ̉ ̀ ́ bits và thậm chí lơn hơn nhƣ vậy. dễ dàng thấ y 13 và 500 cũng là một ́ cặp số nguyên tố cùng nhau. Ngƣơi ta còn gọ b là thặng dƣ của a theo modulo n. (GCD-Greatest Common Divisor) Số 15 và 28 là hai số nguyên tố cùng nhau. bao gồ m các phép giao hoán . 17. Số 2 là một số ng uyên tố đầ u tiên và là số nguyên tố chẵn duy nhấ t . int y) { int g. (a+b) mod n = ((a mod n) + (b mod n)) mod n (a. 3. nế u ƣơc số chung lơn nhấ t của a và n là bằ ng ́ ́ 1. 2365347734339 cũng là số nguyên tố . chúng ta có thể gọi a là phầ n dƣ của b khi chia cho n. ́ 3. 53. ̀ và a là đồng dƣ của b theo modulo n.y>0 */ ̀ ́ ́ int gcd(int x. Do vậy 7. ngoài ra ́ không còn số nào nó có thể chia hế t nƣ̃a . Nế u a và b dƣơng và a nhỏ hơn n. Lý thuyết toán học 3.2. Modulo số học Về cơ bản a  b(mod n ) nế u a = b+kn trong đó k là một số nguyên .n)=1.1. ̀ Một cách dễ nhấ t để tính toán ra ƣơc số chung lơn nhấ t của hai số là nhơ vào thuật ́ ́ ̀ toán Euclid. Ƣớc số chung lớn nhất Hai số a và n đƣợ c gọi là hai số nguyên tố cùng nhau nếu chúng không có thừa số chung nào khác 1. hay nói một cách khác.(b mod n)) mod n (ab) mod n = ((a mod n)  (b mod n)) mod n (a(b + c)) mod n = (((a  b) mod n) + ((a  c) mod n)) mod n Các phép tính trong các hệ mã mật hầ u hế t đề u thƣ̣ c hiện đố i vơi một modulo N nào ́ đó.3.

if(y<0) y= -y. } 3. b ZN: a+b = (a+b) mod N.b = k.4. ̣ ̉ Việc tim phầ n tƣ nghich đảo của một số a ZN cho trƣơc thƣ̣ c chấ t tƣơng đƣơng ̣ ̉ ̀ ́ vơi việc tim hai số b và k sao cho: a. 1 = 1 . Còn trên một ̣ ̉ ̀ vành số nguyên ZN ngƣơi ta đƣa ra khái niệm về số nghich đảo của một số nhƣ sau: ̣ ̀ Giả sử a ZN và tồn tại b ZN sao cho a. x=y%x.) đƣợ c đinh nghia nhƣ sau tạo thành một vành đồng dƣ ̣ ̃ modulo N (hay còn gọi là tập thặng dƣ đầ y đủ theo modulo N): Phép cộng:  a. 18 . k ZN. ….N + 1 trong đó b. N) = 1 thì tồn tại duy ̣ ̣ ̉ nhấ t 1 số b ZN là phần tử nghịch đảo của a. 3. N-1} trong đó N là một số tƣ̣ nhiên dƣơng vơi ́ hai phép toán cộng (+) và nhân (. số nghich đảo của 5 là 1/5.b = (a*b) mod N = 1. Phầ n tƣ nghich đảo ̣ ̉ Trên trƣơng số thƣ̣ c R . 1. a = a  a ZN. Phép nhân:  a.Chƣơng II: Cơ sơ toán học ̉ x=-x. nghĩa là thỏa mãn a. } return g.5. Hầ u hế t các tính toán trong các hệ mã mật đề u đƣợ c thƣ̣ c hiện trên một vành ZN nào đó. y=g. g=y.b = (a*b) mod N = 1. while(x>0){ g=x.  a ZN. Trên vành Z N số 0 là phần tử trung hòa vì a + 0 = 0 + a = a. b = (a * b) mod N. Hay viế t gọn lại là: ́ ̀ a-1  b (mod N ) Đinh lý về sƣ̣ tồ n tại của phầ n tƣ nghich đảo : Nế u GCD(a. Vành ZN (vành đồng dƣ module N) Tập các số nguyên ZN = {0. Khi đó b đƣợ c gọi là phầ n tƣ nghich đảo của a trên ZN và ký hiệu là a-1 = b. số 1 đƣợ c gọi là phần tử đơn vị vì a . bơi vì 5  1/5=1. b ZN: a . Theo tinh chấ t của modulo số học chúng ta dễ dàng nhận thấ y Z N là một vành giao ́ hoán và kết hợp.

Theo đinh lý Ơle ta suy ra (N) chia hế t cho t.1: Bảng bậc của các phần tử trên Z*21 Nế u bậc của a  Z*N bằ ng (N) thì a đƣợc gọi là phần tử sinh hay phần tử nguyên thủy của tập Z*N. pk k trong đó p i là các số nguyên tố còn i là các số nguyên dƣơng thì giá trị của hàm phi Ơle đƣợ c tinh nhƣ sau: ́  ( N )  ( p 1 1) p1 1 ( p 2 1) p2 1. Và nếu tập Z*N chỉ có một phần tử sinh thì nó đƣợc gọi là một cyclic. Một trƣơng hợ p riêng của định lý Ơle chính là định lý Fermat nhỏ : Nế u P là một số ̀ nguyên tố thì  a  Z*P ta có của số học. N) = 1} = {x: xZN.Chƣơng II: Cơ sơ toán học ̉ 3. (x. khi đó a đƣợ c gọi là thặng dƣ bậc 2 theo modulo N nế u tồ n tại x  Z*N sao cho x2 = a (mod N). ́ Vơi mỗi phầ n tƣ a  ZN. Thặng dƣ bâ ̣c hai Giả sử a  Z*N. x ( N )  1 }. ̉ tập các phầ n tƣ không thặng dƣ theo modulo N đƣợ c gọi là bất thặng dƣ theo modulo N ̉ và ký hiệu là Q N . giá trị của hàm phi Ơle của N là tổng số tất cả các số ́ nguyên ZN và nguyên tố cùng nhau với N . Hàm phi Ơle Vơi mỗi số nguyên N . Trong trƣơng hợ p tổ ng quát nế u dạng phân tích ra thừa số nguyên tố của N là: ̀ N  p11 p22 .7. Có nghĩa là a ( N ) chính là giá trị nghịch đảo của a trên ZN. N) = 1 ta có a ( N )  1(mod N ) . Đây là một trong nhƣ̃ng đi ̣nh lý đẹp nhấ t Vơi mỗi số nguyên N vành Z *N gồ m các phầ n tƣ thuộc Z N và nguyên tố cùng nhau ̉ ́ * vơi N... 19 .. bậc t của a (ký hiệu là ord (a)) là số nhỏ nhất sao cho : at = ̉ ́ 1.6.( p k 1) pk  1 2 k 1 Liên quan tơi khái niệm về hàm phi Ơle chúng ta có định lý Ơle phát biểu nhƣ sau: ́  a  Z*N = ZN – {0} và GCD(a. 3. Chẳ ng hạn nế u P là một số nguyên thì giá tri ̣ hàm phi Ơle của P: (P) = P – 1 hoặc nế u N = p*q trong đó p và q là hai số nguyên tố thì (N) = (p-1)*(q-1). hay nói cách khác: Z N = {x: xZN. a P1  1(mod P) .. ̣ Cụ thể với N = 21 ta có bảng sau: aZ*21 Ord(a) 1 1 2 6 4 3 5 6 8 2 10 6 11 6 13 2 16 3 17 6 19 6 20 2 Bảng 2. Tập các phầ n tƣ thặng dƣ theo modulo N đƣợ c ký hiệu là Q N.

7. 4. 9. a = (a * a) mod N. Nế u x  Z*N thỏa mãn x 2 = a (mod N) thì a đƣợc gọi là căn bậc hai của ́ x theo modulo N. j = j + 1.  = 6  Z13 ta có bảng sau: i i mod 13 0 1 1 6 2 10 3 8 4 9 5 2 6 12 7 7 8 3 9 5 10 4 11 11 Bảng 2. Thuâ ̣t toán lũy thƣa nhanh ̀ Để có thể tìm phần tử nghịch đảo của một số nguyên a trên một vành Z N cho trƣơc ́ chúng ta có thể sử dụng định lý Ơle để tính giá trị lũy thừa của a với số mũ là giá trị hàm phi Ơle của N . m. 5. N. long n) { 20 . 8. trong đó i là số nguyên lẻ . kq = a. Các bƣớc của thuật toán nhƣ sau: Input: a. j = 0.Chƣơng II: Cơ sơ toán học ̉ Đinh lý: nế u p là một số nguyên tố lẻ và  là một phần tử sinh của Z *N. Begin Phân tích m thành dạng nhi ̣ phân m = bkbk-1…b0. Tƣ đinh lý này suy ra Q N  ( p  1) / 2  QN . while (k>=j) { if (bj==1) kq = (kq * a) mod N. Output: am mod N.8.2: Bảng lũy thừa trên Z13 Do đó Q13 = {1. Thuật toán này do Chivers đƣa ra vào năm ́ 1984. 12} và Q13 = {2. khi đó a là ̣ một thặng dƣ bậc 2 theo modulo N khi và chỉ khi a = i mod p. Tuy nhiên để có thể nhanh chóng t ính đƣợc giá trị lũy thừa này chúng ta cầ n có một thuật toán hiệu quả và một trong các thuật toán đó (còn nhiều thuật toán khác phƣc tạp hơn ) là thuật toán lũy thừa nhanh . 3. 10. Vơi a  QN. long x. 11}. ̣ ̀ Ví dụ với p = 13. } return kq. end Một cài đặt khác bằ ng ngôn ngƣ̃ C nhƣ sau: long modexp(long a. 6. 3.

a = (a*a) % n. 21 . } x = vi-1. Thuâ ̣t toán Ơclit mơ rộng ̉ Trong phầ n 3. g1 = a. else return (N+x). } return r. while (gi <>0 ) { y = gi-1 div gi.3 chúng ta đã biết thuật toán Ơclit đƣợc dùng để tìm ƣớc số chung lơn nhấ t của ha i số nguyên và trong phầ n 3. u0 = 1. Các bƣớc của thuật toán nhƣ sau: input: a.9. i = 1. } Thuật toán này chạy không quá log2(m+1) bƣơc. ́ 3.Chƣơng II: Cơ sơ toán học ̉ long r = 1. v1 = 1. while (x > 0){ if (x % 2 == 1) /* is x odd? */ r = (r * a) % n. N vơi GCD(a. gi+1 = gi-1 – y*gi. N) = 1 ́ output: a-1 begin g0=n. ui+1 = ui-1 – y*ui. end. x /= 2. vi+1 = vi-1 – v*ui. v0 = 0. if(x>0) then return x. u1 = 0.7 chúng ta đã biết cách tìm một phần tử ́ nghịch đảo của mộ t số bằ ng cách sƣ dụng thuật toán lũy thƣa nhanh tuy nhiên vẫn có ̉ ̀ một thuật toán hiệu qu ả khác để tìm phần tử nghịch đảo gọi là thuật tóan Ơclit mở rộng (do dƣ̣ a trên thuật toán Ơclit). i = i + 1.

̣ Đinh lý phầ n dƣ Trung Hoa là m ột định lý quan trọng của số học đƣợc các nhà ̣ toán học Trung Quốc khám phá ra vào thế kỷ thứ nhất. 3. g-1. Nế u nhƣ GCD(a. int *m. int *u) { int i. for ( i=0. N) là một giá trị khác 1 thì sao ? Khi đó bài toán có thể vô nghiệm hoặc có nhiề u nghiệm . …. int modulus. Nghiệm của hệ có tính theo công thƣc sau: ́ x   ( N / di ) yi xi (mod N ) i 1 k trong đó yi là các nghiệm của các phƣơng trình đồng dƣ (N/di) yi  1(mod di). N) = 1 chúng ta có thể tìm a -1 sau đó nhân vào 2 vế của phƣơng trình và tìm ra nghiệm một cách dễ dàng tuy nhiên nếu g = GCD(a. …. for ( i=0. Đinh lý phát biể u nhƣ sau: ̣ Nế u d 1. d2.Chƣơng II: Cơ sơ toán học ̉ 3. Dƣơi đây là đoạn mã đinh lý phầ n dƣ trung hoa trong ngôn ngƣ̃ C : ̣ ́ int chinese_remainder(int r. i<r:++i ) modulus *=m[i]. k sẽ có một nghiệm thuộc vào ZN.11. và x0 là nghiệm của phƣơng trình (a/g)x  1 (mod N/g). i=1. Đinh lý phầ n dƣ Trung Hoa. dk là các số nguy ên đôi một nguyên tố cùng nhau và N = d1d2…dk thì hệ phƣơng trình đồng dƣ: x  xi (mod di). i<r:++i ) 22 . modulus = 1. Phƣơng trình đồ ng dƣ bâ ̣c nhấ t 1 ẩn Phƣơng trình đồ ng dƣ bậc nhấ t 1 ẩn là phƣơng trình có dạng: ax  b (mod N) trong đó a. n=0. …. b  ZN là các hệ số còn x là ẩn số. 2. Chúng ta xét đinh lý ̣ sau: Giả sử g = GCD(a. int n. N) và nếu b chia hết cho g thì phƣơng trình đồng dƣ bậc nhất 1 ẩn: ax  b (mod N) sẽ có g nghiệm có dạng x  ((b/g)x0 + t(n/g)) (mod N) trong đó t = 0.10.

Các loại thuật toán kiểm tra số nguyên tố đƣợc chia làm hai loại : thuật toán tấ t đinh ̣ và thuật toán xác suất. ́ ̀ Các thuật toán mã hoá khóa công khai đều cầ n phải sử dụng các số nguyên tố .p) = 0 nế u a chia hế t cho p. L(a.p) = -1 nế u a  Q N (a không là thặng dƣ bậc 2 modulo p). nhƣng công việc ngƣợ c lại phân tich một số nguyên ́ ́ lơn thành dạng thƣa số nguyên tố lại là một bài toán khó (chƣa có một thuật toán tố t). Các thuâ ̣t toán kiể m tra số nguyên tố .p) = a (p-1)/2 mod p 23 .Chƣơng II: Cơ sơ toán học ̉ { n+=u[i]*modexp(modulus/m[i].1. nhân các số nguyên tố lơn để tạo thành một hợ p số là dễ .1.  Khả năng hai ngƣời dùng sẽ lựa chọn cùng một số nguyên tố là bao nhiêu .p) = 1 nế u a  QN (a là thặng dƣ bậc 2 modulo p).m[i]). Tuy nhiên có một số vấ n đề đƣợ c đặt ra đố i vơi số nguyên tố nhƣ sau ́  Trong một hệ thố ng có thể đảm bảo hai ngƣơi dùng sẽ đƣợ c sƣ dụng hai số ̉ ̀ nguyên tố khác nhau hay không ? Câu trả lơi là có thể vì có tơi 10150 số nguyên tố có độ ̀ ́ dài 512 bits hoặc nhỏ hơn. Một phƣơng pháp dễ dàng để tinh toán ra L(a. Hàm một phía (one-way functions) là một khái niệm cơ bản của mã hoá công khai. Trong phầ n này sẽ trình bày một số thuật toán kiểm tra số nguyên tố phổ biế n. L(a. điề u kỳ xảy ra với xác xuấ t nhỏ hơn so vơi sƣ̣ tƣ̣ bố c cháy ̀ ́ của máy tính. Nó nhận ba giá trị 0. } 4. Ký hiệu Lagrăng (Legendre Symbol) Ký hiệu L(a.1. Có một số phƣơng pháp để sinh ra số nguyên tố và hầu hết chúng đều dựa trên các thuật toán kiểm tra tính nguyên tố của một số nguyên . Các thuật toán tất định cho chúng ta biết chính xác câu tr ả lời một số nguyên có phải là một số nguyên tố hay không còn một thuật toán xác suất cho biế t xác suất của một số nguyên là một số nguyên tố là bao nhiêu . Việc nhân hai số nguyên tố là một ví dụ về hàm một phía .p) đƣợ c đinh nghia vơi a là một số nguyên và p là một số nguyên tố lơn ̣ ̃ ́ ́ hơn 2. -1 : L(a. 1. } return n.p) là : ́ L(a. 4. Vơi sƣ̣ ́ lƣ̣ a chọn tƣ 10150 số nguyên tố .totient(m[i]). n%=modulus. Một số ký hiê ̣u toán học 4.

p2. 24 .a) = J((b mod a).b)  J(b. if(a==1) return 1.b)  J(b.pm là các thừa số lớn nhất của n. a. Nế u n khôn g phải là số nguyên tố thì Jacobi (a. thì J(a.n) = 1 nế u a là thặng dƣ bậc hai modulo n . ̀ J(b. . J(1.a) Nế u GCD(a.p1)  J(h.2.a) = 1 nế u (a-1)(b-1)/4 là chia hết. if(a==2) if(((b*b-1)/8)%2==0) return 1. b. 3.k) =1 Nế u (k2-1)/8 là chia hết và J(2.n) = -1 nế u a không là thặng dƣ bậc hai modulo n.n) sẽ đƣợc tính theo công thức sau: J(a..p2) .pm) vơi p1.b)=1 : J(a. .n).n)=J(h. else return -1. ́ Thuật toán này tinh ra số Jacobi tuầ n hoàn theo công thƣc sau : ́ ́ 1. thì J(a. Ký hiệu Jacobi là một chức năng trên ̣ ̃ tập hợ p số thặng dƣ thấ p của ƣơc số n và có thể tính toán theo công thƣc sau: ́ ́     Nế u n là số nguyên tố .1.  J(h.k) J(2. nó là sự khái quát hoá của ký hiệu Lagrăng . if(a==0) return 0. Nế u n là số nguyên tố . if(a>=b) a%=b.k) = -1 trong các trƣơng hợ p khác. 4. nó đinh nghia cho bấ t kỳ cặp số nguyên a và n nào.k)  J(b. J(a. 5. Ký hiệu Jacobi (Jacobi Symbol) Ký hiệu Jacobi đƣợc viết là J (a. 2.k) = 1 J(ab.a) = -1 nế u (a-1)(b-1)/4 là còn dƣ. .Chƣơng II: Cơ sơ toán học ̉ 4. Sau đây là thuật toán trong ngôn ngƣ̃ C : int jacobi(int a. .int b) { int a1.k) = J(a.a2.

n là các số nguyên lẻ. (v) J(-1. giả sử m. ̉ ́ Thƣ̣ c tế khi thƣ̣ c hiện chƣơng trinh. Nế u j  J(a. n). m*n) = J(a. n) = 1. 6. if(gcd(a.b) * jacobi(a2.p) thì nói p có thể là số nguyên tố với chắc chắn 50%.p).b).Chƣơng II: Cơ sơ toán học ̉ if(a&b&1) (cả a và b đều là số dƣ) if(((a-1)*(b-1)/4)%2==0) return +jacobi(b. mỗi lầ n vơi một giá trị ngẫu nhiên khác nhau của a . . 3.a). 4. m) * J(a. thuật toán chạy vơi tố c độ khá nhanh. thì p không phải là số nguyên tố. 5. m) * (-1)(m-1)*(n-1)/4 4.2. (iv) J(1. else return -jacobi(b. n) = J(a. Thuâ ̣t toán Soloway-Strassen Soloway và Strassen đã phát triể n thuật toán có thể kiể m tra số nguyên tố toán này sử dụng hàm Jacobi.a). n) = J(b. return jacobi(a1. n) = 1. n). Thuật toán kiể m tra số p là số nguyên tố : 1. (iii) nế u a  b (mod n) thì J(a. Thuật Lặp lại các bƣơc này n lầ n . Nế u ƣơc số chung lơn nhấ t gcd(a. ́ ́ Tính j = a(p-1)/2 mod p. Tính số Jacobi J(a. a. Chọn ngẫu nhiên một số a nhỏ hơn p. 2.a). n) * J(b.b)==1) if(((a-1)*(b-1)/4)%2==0) return +jacobi(b. (ii) J(a. n) = J(n. n) = (-1)(n-1)/2 (vi) J(m.p). ̀ ́ 25 . b  Z: ́ (i) J(a*b. } Trên thƣ̣ c tế có thể tinh đƣợ c ký hiệu Jacobi một cách thuận lợ i hơn nế u dƣ̣ a vào 1 ́ trong các tinh chấ t sau. Nế u j = J(a.a). ́ ́ Phầ n dƣ của hợ p số vơi n phép thƣ là không quá 2n. n) do đó J(a2.p)  1 thì p là hợp số. else return -jacobi(b.

7 và 11. a100 giƣ̃a 1 và n-1. Bài tập Bài tập 2. ́ 5. Sƣ dụng một trong các ngôn ngƣ̃ lập trinh C. ̀ ̀ Bài tập 2. 4. 5. .6: Viế t chƣơng trinh cài đặt thuật toán kiể m tra số nguyên tố vơi input là ̀ ́ một số nguyên nhỏ hơn 2000000000. Tính ai(n-1)/2 (mod n) cho tấ t cả ai = a1. Chọn ngẫu nhiên một số n để kiểm tra. 4. hỏi cần dùng ít nhất là bao nhiêu phép nhân để tìm ra kết quả. ̉ ̉ Thƣ̣ c tế nhƣ̃ng phiên bản của thuật toán đã đƣợ c giơi thiệu tại NIST .Chƣơng II: Cơ sơ toán học ̉ 4. . a2. ̣ ̉ Bài tập 2. Nế u ai(n-1)/2 = 1 (mod n) vơi mọi i. Viế t p dƣơi dạng p = 1+2bm trong ́ đó m là một số lẻ. Chắ c chắ n rằ ng n không chia hế t cho các số nguyên tố nhỏ nhƣ 2. Thuâ ̣t toán Rabin-Miller Thuật toán này đƣợ c phát triể n bơi Rabin . ́ Nế u ai(n-1)/2 = 1 hoặc -1 (mod n) vơi mọi i  1. Đặt j = j+1. Java hoặc C# để làm các bài tập sau: ̉ ̀ Bài tập 2. Sau đây là thuật toán vơi số bƣơc lặp là 100. hoặc z=p-1 thì p đã qua bƣớc kiểm tra và có thể là số nguyên tố . thì p không phải là số nguyên tố. và giả sử a nhỏ hơn p. ́ Nế u ai(n-1)/2  1 hoặc -1 (mod n) vơi i bấ t kỳ. thì n là hợp số.5: Viế t chƣơng trinh giải hệ phƣơng trinh đồ ng dƣ bậc nhấ t hai ẩ n. 2. 3. ́ ́ 1.1: hãy tính 1753 mod 29. 2. Nế u j > 0 và z=1 thì p không phải là số nguyên tố. Bài tập 2. (National Institute of ́ Standards and Technology).2: Tính 876611 mod 899. dƣ̣ a trên một phầ n ý tƣơng của Miller . C++. Chọn ngẫu nhiên 100 số a1. Chọn một số ngẫu nhiên a. 26 . ̉ ́ 6. . ̀ Bài tập 2. Đặt j=0 và z=am mod p.5. Dƣng lại nế u bạn tim thấ y a i sao ̀ ̀ cho phép kiể m tra là sai. Nế u z=1. Nế u j < b và z  p-1 thì đặt z=z2 mod p và trơ lại bƣơc 4.4: Viế t chƣơng trình cài đặt thuật toán lũy thƣa nhanh. Một phƣơng pháp đơn giản hơn kiể m tra số nguyên tố đƣợ c phát triể n độc lập bơi ̉ Lehmann. . Nế u j = b và z  p-1. a100 . Sau đây là thuật toán : 1. .3: Viế t chƣơng trình cài đặt thuật toán tìm phầ n tƣ nghich đảo.3.4. 3. thì n có thể là hợp số. thì n là số nguyên tố. Thuâ ̣t toán Lehmann.3. 4. 5. Đầu tiên là chọn ngẫu nhiên một số p để kiểm tra. .

27 . chia. cộng trƣ. ̀ Bài tập 2.Chƣơng II: Cơ sơ toán học ̉ Bài tập 2. lấ y modulo.8: Sƣ dụng thƣ viện số lơn (ở bài tập 2.5 hoặc một thƣ viện mã nguồ n ̉ ́ mơ) cài đặt các thuật toán kiểm tra số nguyên tố đƣợc trình bày trong phần 4 của chƣơng ̉ 2.7: Viế t chƣơng trình cài đặt thƣ viện số nguyên lơn vơi các thao tác tính ́ ́ toán cơ bản: nhân.

2. B. “ABA” có thể tƣơng ƣng vơi ́ ́ “RTQ”. ̉ Không gian các bản rõ P là các thông điệp đƣợc tạo tƣ bảng chƣ̃ cái A (để tiện trình ̀ bày chúng ta xem đây là một bảng chữ cái tổng quát). Để mã hóa ngƣơi ta đánh số các chƣ̃ cá i tƣ 0 tơi N-1. 25.1. “B” có thể tƣơng ƣng vơi 7. Hê ̣ mã hoá thay thế (substitution cipher) Hệ mã hoá thay thế là hệ mã hoá trong đó mỗi ký tƣ̣ của bản rõ đƣợ c thay thế bằ ng ký tự khác trong bản mã (có thể là một chữ cái. ngoại trừ một ký tự của bản rõ có thể đƣợc ánh xạ tới một trong số một vài ký t ự của bản mã : sơ đồ ánh xạ 1-n (one-to-many). ́ ́ 1. v. bảng chữ cái đƣợc ́ đánh số nhƣ sau: 28 . cho phé p thay thế các nhóm ký tƣ̣ của văn bản gố c . Hê ̣ mã Caesar Hệ mã Caesar là một hệ mã hoá thay thế đơn âm làm việc trên bảng chữ cái tiếng Anh 26 ký tự (A. đặc biệt thuật toán mã hoá đơn đƣợ c sƣ dụng thay đổ i theo vi ̣ trí của mỗi ký tƣ̣ trong bản ro. Thay thế đơn (A simple substitution cipher): là hệ trong đó một ký tự của bản rõ đƣợ c thay bằ ng một ký tƣ̣ tƣơng ƣng trong bản ma. Thay thế đa mẫu tƣ̣ (A polyalphbetic substitution cipher): đƣợ c tạo nên tƣ nhiề u ̀ thuật toán mã hoá thay thế đơn . Các hệ mã cổ điển 1. Tƣơng tƣ̣ không gian các bản mã C  P. ̉ ̃ 4. . Ví dụ. Đây là hệ mã cổ điể n và đơn giản nhấ t đã tƣng đƣợ c dùng ̀ trong thƣ̣ c tế bơi hoàng đế La mã Caesar nên đƣợ c đặt theo tên của vi ̣ hoàng đế này.2. Giải mã: DK(i) = (i – k) mod N. Một ánh xạ 1-1 tƣ bản rõ tơi ́ ̃ ̀ ́ bản mã đƣợc sử dụng để mã hoá toàn bộ thông điệp.Chƣơng III: Các hệ mã khóa bí mật CHƢƠNG III: CÁC HỆ MÃ KHÓA BÍ MẬT 1. 3. Ví dụ . v. ̀ nhƣng có thể thay đổ i trong phạm vi một thông điệp . Có 4 kỹ thuật thay thế sau đây: 1. có thể có năm thuật toán mã hoá đơn khác nhau đƣợc sử dụng . “ABB” có thể tƣơng ƣng vơi “SLL”. 13. hoặc 56. Thay thế đồ ng âm (A homophonic substitution cipher ): giố ng nhƣ hệ thố ng mã hoá thay thế đơn . Ánh xạ 1-1 nhƣ trong trƣơng hợ p thay thế đơn. Đây là thuật toán tổ ng quát nhấ t . một số hoặc một ký hiệu).. Z).v. Giả sử số phần tử của bảng chữ cái |A| = N. Vơi ̀ ̀ ́ ́ mỗi khóa K  K hàm mã hóa và giải mã một ký tự có số thứ tự là i sẽ đƣợc thực hiện nhƣ sau: Mã hóa: EK(i) = (i + k) mod N. Hệ mã Caesar vơi bảng chƣ̃ cái tiế ng Anh sẽ có N = 26 chƣ̃ cái. 19.v. 31. Không gian khóa K = ZN.. Thay thế đa sơ đồ (A polygram substitution cipher ): là thuật toán trong đó các khố i ký tƣ̣ đƣợ c mã hoá theo nhóm . “A” có thể tƣơng ứng với 5. . ́ ́ hoặc 42. Ví dụ.

. Để giải mã ta cầ n tìm a -1 (do (a.Chƣơng III: Các hệ mã khóa bí mật A 0 B 1 C 2 D 3 . và Z đƣợc thay bằng C. N) = 1} Để mã hóa ngƣơi ta đánh số các chƣ̃ cái của bảng chƣ̃ cái tƣ ̀ ̀ hành mã hóa. Trên thƣ̣ c tế hệ mã Caesar có số khóa it nên hoàn toàn có thể thám mã bằng cách ́ thƣ tấ t cả các khóa có thể (kiể u tấ n công Brute force).. Khi đó không gian khóa của hệ mã đƣợ c xác đinh nhƣ sau: ̣ K = { (a. ... . b): a. .3. giải mã từng ký tự (thay thế ) theo các công thƣc sau: ́ Mã hóa: EK(x) = (a*x + b) mod N.. (a... ký tự A đƣợ c thay ̉ ́ ̀ bằ ng D. i. giả sử |A| = N. Trong ngôn ngƣ̃ tƣ̣ nhiên một số chƣ̃ cái xuất hiện nhiều hơn so với các chữ cái khác (chẳ ng hạn trong tiế ng Anh các chƣ̃ cái xuấ t hiện nhiề u là e. . W đƣợ c thay bằ ng Z .. B đƣợ c thay bằ ng E .. Bảng chữ cái gốc: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Bảng chữ cái dùng để mã hoá: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C Do đó chẳ ng hạn xâu “ANGLES” sẽ đƣợ c mã hóa thành “DQJOHV”. .1: Bảng đánh số các chữ cái tiếng Anh Các phép tính toán số học đƣợ c thƣ̣ c hiện trên vành Z 26. X đƣợ c thay bằ ng A . Điề u này có thể dẫn tới hệ quả là ngƣời thám mã có thể sử dụng phƣơng pháp thử thay thế các ký t ự xuấ t hiện nhiề u trong bản mã bằ ng các ký tƣ̣ xuấ t hiện nhiề u trên các văn bản thƣ̣ c tế . t. Hê ̣ mã Affine Không gian các bản rõ và bản mã của hệ mã là các xâu đƣợ c hình thành tƣ một ̀ bảng chữ cái A. Y đƣợ c thay bằ ng B. W 22 X 23 Y 23 Z 25 Bảng 3. Ví dụ: vơi k=3 (trƣơng hợ p đã đƣợ c hoàng đế Caesar sƣ dụng). h …) nên các chƣ̃ cái dùng để thay thế cho chúng cũng xuấ t hiện nhiề u... N) = 1 nên luôn tìm đƣợ c ) và tiến hành công thức giải mã sau: 0 tơi N – 1 và tiến ́ 29 . số khóa có thể sƣ dụng ̉ là 26 nhƣng trên thƣ̣ c tế chỉ có 25 khóa có ích.. L 11 M 12 N 13 . Ký tự bản rõ có số thứ tự là x sẽ đƣợc chuyển thành ký tự có số thứ tự là (a*x+b) mod N trong bảng chƣ̃ cái. Hệ mã Caesar sƣ dụng phƣơng pháp thay thế đơn âm nên có hiện tƣợ ng gọi là ̉ phụ thuộc tần suất xuất hiện của ngôn ngữ tự nhiên. b  ZN. . ̉ 1.

5. P = 19 7 8 18 2 17 | 24 15 19 14 18 23 | 18 19 4 12 8 18 | 13 14 19 18 4 2 | 20 17 4. Hê ̣ mã Hill Hệ mã hoá này dƣ̣ a trên lý thuyế t về đại số tuyế n tinh do Lester S . bản rõ P = “THIS CRYPTOSYSTEM IS NOT SECURE” .b) mod N.b) mod N trong bảng chƣ̃ cái. Để mã hóa một bản rõ P ngƣơi ta chia P thành các đoạn độ dài M và chuyển thành ̀ số thƣ tƣ̣ tƣơng ƣng củ a chúng trong bảng chƣ̃ cái . 1. ̉ ́ Không gian khóa K đƣợ c xác đinh nhƣ sau: ̣ Vơi mỗi số nguyên dƣơng M . cụ thể là với bảng chữ ̉ ́ cái tiếng Anh sẽ có 26M khóa có thể sử dụng. x2 + k2. trong hệ mã Caesar chúng ta thay thế từng ký tự đơn lẻ thì trong hệ mã Vigenere này thay thế tƣng bộ M ký ̀ M tƣ̣ liên tiế p. K = ́ k1k2…kM. y2 . Hê ̣ mã Vigenere Hệ mã này đƣợc đặt theo tên của một nhà mật mã Vigenère (1523-1596). …. khóa có độ dài M là một xâu ký tự có độ dài M . Ký tự bản mã có số thứ tự là y sẽ đƣợc thay thế bằng ký tự có số thứ tự là a*(y . Về thƣ̣ c chấ t hệ mã này là kế t hợ p của nhiề u mã Caesar .k1. Có thể thấy rằng đối với một hệ mã Affine thì số khóa có thể sử dụng sẽ là: |K| = (N) * N. Quá trình mã hóa thực hiện nhƣ sau: P = 19 7 8 18 2 17 | 24 15 19 14 18 23 | 18 19 4 12 8 18 | 13 14 19 18 4 2 | 20 17 4 K = 2 8 15 7 4 17 | 2 8 15 7 4 17 | 2 8 15 7 4 17 | 2 8 15 7 4 17 | 2 8 15 C = 21 15 23 25 6 8 | 0 23 8 21 22 14 | 20 1 19 19 12 9 | 15 22 8 25 8 19 | 22 25 19 Vậy bản mã là C = “VPXZGI AXIVWO UBTTMJ PWIZIT WZT”.4. học ngƣơi Pháp Blaise de ̀ Đối với hệ mã này không gian các bản mã và bản rõ cũng là các thông điệp đƣợc tạo thành từ một bảng chữ cái A nhƣ trong hệ mã Caesar.k2.kM) mod N vơi N là số phầ n tƣ của bảng chƣ̃ cái và Y ̉ ́ = y1y2…yM là bản mã. …. Ta có K = 2 8 15 7 4 17.Hill đƣa ra năm ́ 1929.Chƣơng III: Các hệ mã khóa bí mật DK(y) = a*(y . ta có N = 26 giả sử khóa có độ dài 6 và K = “CIPHER”. xM + kM) mod N DK(Y) = (y1 . các chữ cái đƣợc đanh số từ 0 tơi N-1 trong đó N là số phầ n tƣ của bảng chƣ̃ cái. yM . Cả không gian bản rõ và bản mã đều là cái A nhƣ trong hệ mã Vigenere. Ví dụ: xét A là bảng chữ cái tiếng Anh . 1. Ví dụ với N = 26 tƣơng ƣng vơi bảng chƣ̃ cái tiế ng Anh chúng ta sẽ ́ ́ có (26) * 26 = 12 * 26 = 312 khóa. chẳ ng hạn X = x1x2…xM. Vơi mỗi M chúng ta có số khóa có thể sƣ dụng là N . Con số này là tƣơng đố i nhỏ. các xâu đƣợc thành lập từ một bảng chữ 30 . Khi đó việc ́ ́ mã hóa và giải mã đƣợc thực hiện nhƣ sau: EK(X) = (x1 + k1.

Điề u ̉ kiện để ma trận K có thể sƣ dụng làm khóa của hệ mã là K phải là một ma trận không suy ̉ biế n trên ZN hay nói cách khác là tồ n tại ma trận nghich đảo của ma trận K trên ZN. ̀ chuyể n các xâu này thành số thứ tự của các chữ cái trong bảng chữ cái dƣới dạng một vectơ hàng M chiề u và tiế n hành mã hóa. ́ Để mã hóa một bản rõ ngƣơi ta cũng chia bản rõ đó thành các xâu có độ dài M . Ví dụ: cho hệ mã Hill có M = 2 (khóa là các ma trận vuông cấp 2) và bảng chữ cái là bảng chữ cái tiếng Anh. Để mã hóa chúng ta chia xâu bản rõ thành hai vecto hàng 2 chiề u “HE” (7 4) và “LP” (11 15) và tiến hành mã hóa lần lƣợt. tƣc là N = 26. ̣ Các ký tự của bảng chữ cái cũng đƣợc đánh số từ 0 tơi N-1. Cho khóa ́ K=   3 2 3  5  Hãy mã hóa xâu P = “HELP” và giải mã ngƣợ c lại bản mã thu đƣợ c. Để giải mã ta tính khóa giải mã là ma trận nghich đảo ̣ theo công thƣc sau: ́ Vơi K =  ́ của ma trận khóa trên Z 26  k11  k 21 k12  ̉ ̉  và det(K) = (k11*k22 – k21*k12) mod N là một phầ n tƣ có phầ n tƣ k 22  nghịch đảo trên ZN (ký hiệu là det(K)-1) thì khóa giải mã sẽ là K-1 = det(K)-1*   k 22 -k12    -k 21 k11  31 . Vơi P1 = (7 4) ta có C1 = P1 * K =  7 4   ́  3 2 3  =  3 15  =  D P  5  3 2 3  = 11 4  =  L E  5  Vơi P2 = (11 15) ta có C2 = P2 * K = 11 15   ́  Vậy bản mã thu đƣợ c là C = “DPLE”. giải mã theo công thức sau: Mã hóa: C = P * K. Giải mã: P = C * K-1.Chƣơng III: Các hệ mã khóa bí mật Vơi mỗi số nguyên M khóa của hệ mã là một ma trận K vuông kích thƣơc MxM gồ m ́ ́ các phần tử là c ác số nguyên thuộc Z N trong đó N là số phầ n tƣ của bảng chƣ̃ cái .

Vậy K -1 = 3 *  23  5 = 3  24 15 17    20 9  . Ví dụ : bản rõ “TRANSPOSITION CIPHER” đƣợc mã hoá thành “REHPICNOITISOPSNART”. và bản mã đƣợc đọc theo hàng dọc.Chƣơng III: Các hệ mã khóa bí mật Áp dụng vào trƣờng hợp trên ta có det(K) = (15 . Mã hoá theo mẫu hình học : bản rõ đƣợc sắp xếp lại theo một nào đó. thƣơng là một mảng hoặc một ma trận hai chiề u. 26) =1 nên áp dụng thuật toán Ơclit mở rộng tìm đƣợc det (K)-1 = 3. Giải mã C = “DP” = ( 3 15 ). ́ Ví dụ một hệ mã hoá đổi chỗ cột đơn giản .    Quá trình giải mã tiến hành giống nhƣ quá trình mã hóa với khóa mã hóa thay bằng khóa giải mã. P = C * K-1 = (3 15) *   15 17   =  3 15 = “HE”. 2. GCD(9. Đây là phƣơng pháp mã hoá đơn giản nhấ t vì vậy không đảm bảo an toàn. nhƣng thƣ tƣ̣ của chúng đƣợ c đổ i chỗ cho nhau.   20 9  Tƣơng tự giải mã xâu C = “LE” kết quả sẽ đƣợc bản rõ P = “LP”. ̣ ́ Bản rõ: COMPUTER GRAPHICS MAY BE SLOW BUT AT LEAST IT‟S EXPENSIVE COMPUTERGR APHICSMAYB ESLOWBUTAT LEASTITSEX PENSIVE Bản mã: CAELPOPSEEMHLANPIOSSUCWTITSBIUEMUTERATSGYAERBTX Bảng 3. 1. bản rõ đƣợc viết theo hàng ngang trên trang giấ y vơi độ dài cố đinh. Hê ̣ mã đổ i chỗ (transposition cipher) Một hệ mã hoá đổ i chỗ là hệ mã hoá trong đó các ký tƣ̣ của bản rõ vẫn đƣợ c giƣ̃ nguyên.6) mod 26 = 9. ̀ Ví dụ : bản rõ “LIECHTENSTEINER” đƣợc viết thành ma trận sau: Cột Bản rõ 1 L 2 I 3 E 4 C 5 H mẫu hình học 35 theo hàng nhƣ 32 .2: Mã hoá thay đổi vị trí cột Phƣơng pháp này có các kỹ thuật sau: 1.6. Chú ý là trong ví dụ trên chúng ta sử dụng khóa K có kích thƣớc nhỏ nên dễ dàng tìm đƣợc khóa để giải mã còn trong trƣờng hợp tổng quát điều này là không dễ dàng. Đảo ngƣợc toàn bộ bản rõ : nghĩa là bản rõ đƣợc viết theo thứ tự ngƣợc lại để tạo ra bản mã .

.mf(d) là một hoán vị của m1m2. Do vậy....mdmd+1. Hạn chế của phƣơng pháp này là toàn bộ các ma trận ký tự phải đƣợc sinh để mã hoá và giải mã.. Nế u ta chuyể n vi ̣ các cột theo thƣ tƣ̣ 3. 1 rồ i lấ y các ký tƣ̣ ra theo hàng ́ ngang ta sẽ đƣợ c bản mã là “DCAINAHIEGUXBNACYADY HZTIM” .Chƣơng III: Các hệ mã khóa bí mật T E E I N N S E T R Bảng 3. Lƣu ý rằ ng các ký tƣ̣ cách đƣợc bỏ đi. bản rõ: M = m1m2.md+f(d) Trong đó mf(1)mf(2).md. 2. 3. 2.mf(d)mf(d)+1.4: Ví dụ mã hóa theo mẫu hình học Vì có 5 cột nên chúng có thể đƣợ c sắ p lại theo 5!=120 cách khác nhau.. 4.. 5. Hoán vị các ký tự của bản rõ theo chu kỳ cố định d : Nế u hàm f là một hoán vị của một khối gồm d ký tự thì khoá mã hoá đƣợc biểu diễn bởi K(d.m2d Vơi mi là các ký tự . sau đó các cột đƣợ c sắ p xế p lại và các chƣ̃ cái đƣợ c lấ y ra theo hàng ngang Ví dụ: bản rõ gốc là “NGAY MAI BAT DAU CHIEN DICH XYZ” đƣợc viết dƣới dạng ma trận 55 theo cột nhƣ sau: Cột Bản rõ 1 N G A Y M 2 A I B A T 3 D A U C H 4 I E N D I 5 C H X Y Z Bảng 3.f).3: Mã hóa theo mẫu hình học Nế u lấ y các ký tƣ̣ ra theo số thƣ tƣ̣ cột ́ “IEICSELTEENNHTR”... Ví dụ: giả sử d=5 và f hoán vi ̣ dãy i=12345 thành f(i)=35142 Vị trí đầu 1 2 Vị trí hoán vị 3 5 Tƣ ̀ G R Mã hoá O P 33 . 3. Để tăng độ an toàn có thể chọn một trong các cách sắp xếp lại đó. 4. và bản rõ sẽ đƣợ c mã hoá thành ́ Ek(M) = mf(1)mf(2). 1.... 5 thì sẽ có bản mã Đổi chỗ cột: Đầu tiên đổi chỗ các ký tự trong bản rõ thành dạng hình chữ nhật theo cột.

trên thực tế ngƣời ta hay dùng một kiểu mật mã khác. thuật toán công khai . ́ ́ 2.Chƣơng III: Các hệ mã khóa bí mật 3 4 5 1 4 2 O U P G U R Bảng 3. Trên thƣ̣ c tế c ó rất nhiều hệ thống mã hoá sử dụng phƣơng pháp đổ i chỗ.. DES có nhiề u ƣu điể m (nhanh. Hệ mã này đƣợc xây dựng dựa trên một hệ mã khố i phổ biến có tên là LUCIFER và đƣợc phát triển bởi IBM. ký tự đầu trong khối 5 ký tƣ̣ đƣợ c chuyể n tơi vi ̣ trí thƣ 3. ký tự thứ ́ ́ hai đƣợ c chuyể n tơi vi ̣ trí thƣ 5. Chẳ ng hạn tƣ gố c GROUP đƣợ c mã hoá thành ́ ́ ̀ OPGUR. trong đó từng khối ký tự của bản rõ đƣợc mã hoá cùng một lúc nhƣ là một đơn vị mã hoá đồng nhất. 2. Điều kiện để mã hoá khối an toàn:  Kích thƣớc khối phải đủ lớn để chống lại phƣơng án tấn công bằng phƣơng pháp thống kê. một trong số các hệ mã khố i đƣợ c sƣ dụng rộng rãi ̉ nhấ t và là nề n tảng cho rấ t nhiề u các hệ mã khố i khác.1. Có rất nhiều hệ mã đã đƣợc gửi đến làm ứng cử viên cho AES nhƣng cuố i cùng hệ mã Rijndael của hai tác giả ngƣơi Bỉ là tiế n si ̃ Joan Daemen và tiế n si ̃ ̀ Vincent Rijmen (vào năm 2001). Chuẩ n này ra đơi dƣ̣ a trên một cuộc thi về thiế t kế một hệ mã ̀ ̀ ̉ khố i an toàn hơn (vào năm 1997) thay thế cho DES của U y ban Tiêu chuẩ n quố c gia của Hoa Kỳ (NIST). Chuẩ n mã hóa dƣ̃ liệu DES là một chuẩ n mã hoá đƣợc công bố bởi Uỷ ban Tiêu chuẩn quốc gia Hoa Kỳ vào 15/02/1977. đƣợ c sƣ dụng trong suố t chiế n tranh thế giơi lầ n thƣ I . Bằ ng cách đó . dễ cài đặt ) và đã từng đƣợc sƣ dụng trên thƣ̣ c tế trong một thơi gian rấ t dài (cho đế n trƣơc đầ u nhƣ̃ng năm 90) tuy ̉ ̀ ́ nhiên theo thơi gian năng lƣ̣ c của các máy tinh phát triể n cùng vơi các kỹ thuật thám mã ̀ ́ ́ mơi đƣợ c đƣa ra đã cho thấ y nhu cầ u về một hệ mã khố i mạnh hơn và chuẩn mã hóa ́ cao cấp AES đã ra đơi . Mật mã khối Các hệ mã cổ điển mà chúng ta xem xét ở phần đầu chƣơng này đều có đặc điểm chung là từng ký tự của bản rõ đƣợc mã hoá tách biệt. Tuy nhiên điều này sẽ dẫn đến thời gian mã hoá sẽ tăng lên. Trong kiểu mã hoá này. Các hệ mã khối Trong phầ n này chúng ta sẽ học về các hệ mã khố i điể n hinh là chuẩ n mã hóa dƣ̃ ̀ liệu DES (Data Encryption Standard). bản rõ “I LOVE BEETHOVENS MUSIC” sẽ đƣợc chuyển thành “OEIVLEHBTEESONVSCMIU”. Hệ mã ADFGV của Đƣc .. Điều này làm cho việc phá mã trở nên dễ dàng hơn. Chính vì vậy. . một ́ ̀ nhà thám mã ngƣời Pháp . 34 .5: Mã hóa hoán vị theo chu kỳ Theo bảng trên. Nó đƣợc coi là một thuật toán mã hoá phƣc tạp vào thơi ấ y nhƣng nó đã bị phá bởi Georges Painvin . các tham số quan trọng là kích thƣớc (độ dài) của mỗi khối và kích thƣớc khoá. nhƣng chúng rấ t rắ c rố i vì thƣờng đòi hỏi không gian nhơ lơn. là ̉ ́ ́ ́ một hệ mã hoá đổ i chỗ (có sử dụng phƣơng pháp thay thế đơn giản).

 Trong khi sự hỗn loạn (confusion) đƣợc tạo ra bằng kỹ thuậ t thay thế thì sự khuếch tán (diffusion) đƣợc tạo ra bằng các kỹ thuật hoán vị. FEAL. SAFER. output cũng là khố i 64 bit.2. Các hệ mã khối mà chúng ta xem xét trong phần này đều thỏa mãn các yêu cầu đó. MMB. hệ mã Lucifer đã đƣợc đƣa ra bởi Horst Feistel.1. 35 . Chuẩn mã hoá dữ liệu DES (Data Encryption Standard) Vào cuối thập niên 60. phân phối và lƣu trữ khoá đƣợc dễ dàng. IDEA (1990). 2. Ngoài các hệ mã khối đƣợc trình bày trong phần này còn rất nhiều các hệ mã khối khác đã phát triển q ua thơi gian (tại các quốc gia khác nhau và ứng dụng trong các lĩnh ̀ vƣ̣ c khác nhau). các hệ mã khác là 128.Chƣơng III: Các hệ mã khóa bí mật  Không gian khoá. Khóa ́ mã hóa có độ dài 56 bit. Sự khuếch tán (diffusion): Mỗi bit của bản rõ và khóa phải ảnh hƣởng lên càng nhiều bit của bản mã càng tốt. RC5. CA-1.2. CAST. 256. thƣ̣ c ra chinh xác hơn phải là 64 bit vơi các bit ơ vi ̣ trí chia hế t ̉ ́ ́ cho 8 có thể sử dụng là các bit kiểm tra tính chẵn lẻ . Mô tả sơ đồ mã hoá DES Mô tả tổ ng quan: DES là thuật toá n mã hóa vơi input là khố i 64 bit. tức chiều dài khoá phải đủ lớn để chống lại phƣơng án tấn công bằng vét cạn. Crab. Tất cả các hệ mã này đều dựa trên lý thuyết của Shannon đƣa ra năm 1949 và nếu mang mã hóa hai bản rõ giống nhau sẽ thu đƣợc cùng một bản mã. 3Way. Khi thiết kế một hệ mã khối. Mối quan hệ này tốt nhất là phi tuyến. Sau đó Uỷ ban Tiêu chuẩn Hoa Kỳ đã dàn xế p vơi IBM ́ ́ để thuật toán mã hóa này thành miễn phí và phát triển nó thành chuẩn mã hóa dữ liệu và công bố vào ngày 15/02/1977. Madryga (1984). Shipjack. có thể kể ra đây một số hệ mã nổi tiếng nhƣ: Lucifer (1969). SAFER. LOKI (1990). 2. SXAL8/MBAL. Hệ mã này gắ n liề n vơi hãng IBM nổ i tiế ng. RC6 . Khufu and Khafre (1990). DES (1977).. mỗi lần sẽ sử dụng một khóa con đƣợc sinh ra từ khóa chính. Blowfish. khóa của hệ mã cũng là một xâu bit có độ dài cố định (56 bit với DES. Hoạt động của các hệ mã khối thƣờng đƣợc thực hiện qua một số lần lặp. RC2. Đặc điểm chung của các hệ mã khối là quá trình mã hóa làm việc với các khối dữ liệu (thƣờng ở dạng xâu bit) có kích thƣớc khác nhau (tối thiếu là 64 bit). NewDES (1985).1. RC4.. Tuy nhiên khoá phải đủ ngắn để việc tạo khoá. hoặc thậm chí 512 bit). Số khóa của không gian khóa K là 256. phải đảm bảo hai yêu cầu sau:  Sự hỗn loạn (confusion): sự phụ thuộc giữa bản rõ và bản mã phải thực sự phức tạp để gây khó khăn đối với việc tìm quy luật thám mã. REDOC. GOST.

Chƣơng III: Các hệ mã khóa bí mật Hình 3. và sau đó sử dụng một phép chuyển bit cố định để phân bố lại các bit của các ký tƣ̣ kế t quả hình thành nên output 32 bit. Ki) trong đó f(Ri-1. việc thêm bit chẵn lẻ sao cho các đoạn khóa 8 bit có số bit 1 là lẻ) 36 . ̉ ̉ ̉ Các vòng có chức năng giống nhau . 16 khóa con 48 bit Ki sẽ đƣợc sinh ̀ ra. (1) Ri = Li-1  f(Ri-1.. ta có thể mô tả toàn bộ thuật toán sinh mã DES dƣới dạng công thức nhƣ sau: Y = IP-1  f16  T  f15  T  . Ki) = P( S( E(Ri-1)  Ki ) ).  f2  T  f1  IP(x) Trong đó:   T mô tả phép hoán vị của các khối LiRi (1 ≤ i ≤ 15). (2) Trong đó:    là ký hiệu của phép tuyển loại trừ (XOR) của hai xâu bit theo modulo 2. mỗi khóa cho một vòng thƣ̣ c hiện trong quá trình mã hóa . nhận input là L i-1 và R i-1 tƣ vòng trƣơc và sinh ra ̀ ́ output là các xâu 32 bit Li và Ri nhƣ sau: Li = Ri-1. fi mô tả việc dùng hàm f với khoá Ki (1 ≤ i ≤ 16).  E là hoán vi ̣ mơ rộng ánh xạ R i-1 tƣ 32 bit thành 48 bit (đôi khi tấ t cả các bit sẽ ̉ ̀ đƣợ c sƣ dụng hoặc một bit sẽ đƣợ c sƣ dụng hai lầ n). Bản rõ 64 bit sẽ đƣợ c sƣ dụng chia thành hai nƣa L 0 và R0. Trƣơc tiên 8 bit (k8. 56 bit còn lại đƣợ c hoán vi ̣ và gán cho hai biế n 28 bit C và D . 8 ánh xạ thay thế 6 bit thành 4 bit Si (còn gọi là hộp S i) đƣợ c chọn lƣ̣ a kỹ càng và cố đinh . ̉ Quá trình giải mã diễn ra tƣơng tự nhƣng với các khoá con ứng dụng vào các vòng trong theo thƣ tƣ̣ ngƣợ c lại. Nhƣ vậy. khóa 64 bit K = k1k2…k64 (bao gồ m cả 8 bit chẵn lẻ . Thuâ ̣t toán chi tiế t: Input: bản rõ M = m1m2…m64. k16. ̉ ̉  P là hoán vi ̣ cố đinh khác của 32 bit. Tƣ khóa input K .k64) của K bị bỏ đi (áp dụng ́ PC1). Các khoá con Ki (chƣa 48 bit của K) đƣợ c tinh bằ ng cách sƣ dụng các bảng PC1 và ̉ ́ ́ PC2 (Permutation Choice 1 và 2). Trong mỗi vòng . và sau đó trong 16 vòng lặp cả C và D sẽ đƣợc quay 1 hoặc 2 bit. ̣ Một hoán vi ̣ bit khơi đầ u (IP) đƣợ c sƣ dụng cho vòng đầ u tiên . Hàm f là một hàm phi tuyến. ́ Có thể hình dung đơn giản là phần bên phải trong mỗi vòng (sau khi mơ rộng input ̉ 32 bit thành 8 ký tự 6 bit – xâu 48 bit) sẽ thực hiện một tính toán thay thế phụ thuộc khóa trên mỗi một ký tƣ̣ trong xâu 48 bit.1: Chuẩ n mã hóa dƣ̃ liệu DES Thuật toán thƣ̣ c hiện 16 vòng.. sau vòng cuố i cù ng ̉ ̉ nƣa trái và phải sẽ đƣợ c đổ i cho nhau và cuố i cùng xâu kế t quả sẽ đƣợ c hoán vi ̣ bit lầ n ̉ cuố i bơi hoán vi ̣ ngƣợ c của IP (IP-1).…. ký hiệu ̣ chung là S sẽ đƣợ c sƣ dụng. và các khóa con 48 bit Ki đƣợ c chọn tƣ kế t ̀ quả của việc ghép hai xâu với nhau.

C = b40b8…b25) ̉ Sơ đồ 16 vòng lặp của DES: 37 .Chƣơng III: Các hệ mã khóa bí mật Output: bản mã 64 bit C = c1c2…c64 1. (16 vòng) for i = 1 to 16 Tính các Li và Ri theo các công thƣc (1) và (2). S2(B2). Biể u diễn T’ nhƣ là các xâu gồ m 8 ký tự 6 bit T’ = (B1. 4. Tính các khóa con theo thuật toán sinh khóa con bên dƣới 2.R0)  IP(m1m2…m64) (Sƣ dụng bảng hoán vi ̣ IP để hoán vi ̣ các bit . Trong đó Si(Bi) ánh xạ b 1b2…b6 thành các xâu 4 bit của phầ n tƣ thuộc hàng r và cột c của các bảng S i (S box) trong đó r = 2 * b1 ̉ + b6 và c = b2b3b4b5 là một số nhị phân từ 0 tơi 15.S8(B8)). việc tính ́ f(Ri-1. R0 = m57m49…m7.…. Ki) = P( S( E(Ri-1)  Ki ) ) đƣợ c thƣ̣ c hiện nhƣ sau: a) Mơ rộng R i-1 = r1r2…r32 tƣ 32 bit thành 48 bit bằ ng cách sƣ dụng hoán vi ̣ mơ ̉ ̉ ̉ ̀ rộng E. L16) (đổ i vi ̣ trí các khố i cuố i cùng L16. R16 C  IP-1(b1b2…b64) (Biế n đổ i sƣ dụng IP-1. ́ d) T’’’  P(T’’) trong đó P là hoán vi ̣ cố đinh để hoán vi ̣ ̣ sinh ra t16t7…t25. Chẳ ng hạn S 1(011011) sẽ ́ cho r = 1 và c = 13 và kết quả là 5 biể u diễn dƣơi dạng nhi ̣ phân là 0101.) ̉ 3. Sinh khóa con. 5.…. (L0. T  E(Ri-1). (Vì thế T = r32r1r2…r32r1) b) T’  T  Ki. kế t quả ̉ nhận đƣợ c chia thành hai nƣa là L0 = m58m50…m8. 32 bit của T ’’ = t1t2…t32 b1b2…b64  (R16.B8) c) T’’  (S1(B1).

Ki) K15 (48 bit) f L15 = R14 R15 = L14  f(R14. K1) Ki (48 bit) f Li = Ri-1 Ri = Li-1  f(Ri-1.Chƣơng III: Các hệ mã khóa bí mật Bản rõ (64 bit) IP L0(32 bit) R0(32 bit) K1 (48 bit) f L1 = R0 R1 = L0  f(R0. K15) K16 (48 bit) f L16 = L15  f(R15.2: Sơ đồ mã hoá DES 38 . K16) R16 = L15 IP-1 Bản mã (64 bit) Hình 3.

Chƣơng III: Các hệ mã khóa bí mật 2.6: Bảng hoán vị IP Bảng hoán vị ngƣợc IP-1: 40 38 36 34 8 6 4 2 48 46 44 42 16 14 12 10 56 54 52 50 24 22 20 18 64 62 60 58 32 30 28 26 39 37 35 33 7 5 3 1 47 45 43 41 15 13 11 9 55 53 51 49 23 21 19 17 63 61 59 57 31 29 27 25 Bảng 3. Sơ đồ cấu trúc một vòng DES: Li-1 Ri-1 Vòng dịch Hàm mở rộng (E) Khoá Vòng dịch Trật tự nén (PC-2) S-Box P-Box Hàm f Li Ri Khoá Khoá K Hình 3.2. Hoán vị IP và hoán vị ngƣợc IP-1 Bảng hoán vị IP đƣợc đƣa ra trong bảng dƣới đây: 58 62 57 61 50 54 49 53 42 46 41 45 34 38 33 37 26 30 25 29 18 22 17 21 10 14 9 13 2 6 1 5 60 64 59 63 52 56 51 55 44 48 43 47 36 40 35 39 28 32 27 31 20 24 19 23 12 16 11 15 4 8 3 7 Bảng 3.2.7: Bảng hoán vị ngƣợ c IP-1 Hai hoán vị IP và IP-1 không có ý nghĩa gì về mặt mật mã mà hoàn toàn nhằm tạo điều kiện cho việc “chip hoá” thuật toán DES.3: Sơ đồ một vòng DES 39 .

vi = 2 cho các ̣ ̃ ́ trƣơng hợ p khác (Đây là các giá tri ̣ dich trái cho các quay vòng 28 bit bên dƣơi).... 1) Đinh nghia v i. Có thể mô tả thuật toán sinh các khóa con chi tiết nhƣ sau: Input: khóa 64 bit K = k1k2. Ki PC2(Ci.k4. biể u diễn T thành các nƣa 28 bit (C0. Các khoá con đều đƣợc sinh ra từ khoá chính của DES bằng một thuật toán sinh khoá con. Di  (Di-1  vi).k64 (bao gồ m cả 8 bit kiể m tra tinh chẵn lẻ) ́ Output: 16 khóa con 48 bit Ki.. tại mỗi bƣớc biến đổi này một khoá con đƣợc sinh ra với độ dài 48 bit.2. Di).16}... D0 = k63k55.b32. ̣ ̀ ́ 2) T  PC1(K).Chƣơng III: Các hệ mã khóa bí mật 2. Khoá chính K (64 bit) đi qua 16 bƣớc biến đổi. ‟ „ là ký hiệu dich vòng trái.3. 1  i  16.2. 1  i  16 nhƣ sau: vi = 1 đố i vơi i  {1. (Sƣ dụng bảng PC 2 để chọn 48 bit tƣ xâu ghép b 1b2..k36.b56 của C i và D i: Ki = ̉ ̀ b14b17.. Thuâ ̣t toán sinh khóa con Mƣơi sáu vòng lặp của DES chạy cùng thuật toán nhƣ nhau nhƣng với 16 khoá con ̀ khác nhau.) 3) For i from 1 to 16. tính các K i nhƣ sau: Ci  (Ci-1  vi). D0) (Sƣ dụng bảng PC1 để ̉ ̉ chọn các bit từ K: C0 = k57k49.) ̣ Sơ đồ sinh các khóa con của DES: 40 ...9.

Sau đó.4: Sơ đồ tạo khoá con của DES 64 bit đầu vào sẽ giảm xuống còn 56 bit bằng cách bỏ đi 8 bit (ở các vị trí chia hết cho 8). các bit này dùng để kiểm tra bit chẵn lẻ.8: Bảng PC-1 Đầu tiên 56 bit khóa đƣợ c chia ra thành hai nƣa 28 bit. Sau đó 56 bit này lại đƣợc trích lấy 48 bit để sinh ra cho 16 vòng khoá của DES. ̣ ́ ́ Số bit dịch của các vòng (LS): Vòng lặp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 41 . Bảng trật tự khoá (PC-1): 57 10 63 14 49 2 55 6 41 59 47 61 33 51 39 53 25 43 31 45 17 35 23 37 9 27 15 29 1 19 7 21 58 11 62 13 50 3 54 5 42 60 46 28 34 52 38 20 26 44 30 12 18 36 22 4 Bảng 3. hai nƣ a 28 bit này ̉ ̉ đƣợc dịch vòng trái hoặc 1 hoặc 2 bit phụ thuộc vào số bit dich tƣơng ƣng vơi vòng đó.Chƣơng III: Các hệ mã khóa bí mật Khoá chính (64 bit) PC-1 C0 (28 bit) D0 (28 bit) LS1 LS1 C1 (28 bit) D1(28 bit) PC-2 K1 (48 bit) LS2 LS2 Ci (28 bit) Di (28 bit) PC-2 Ki (48 bit) LS1 LS1 C16 (28 bit) D16 (28 bit) PC-2 K16 (48 bit) Hình 3.

tức f(f(x)) = x. Khi đó.  Xâu bit C = C1C2C3C4C5C6C7C8 có độ dài 32 bit đƣợc hoán vị theo phép hoán vị P (hộp P-Box).c). biến thứ hai khoá Ki là một xâu bít có độ dài 48 bit. Mô tả hàm f Hàm f(Ri-1. phần tử này viết dƣới dạng nhị phân 4 bit. ta tính đƣợc Si(Bi) nhƣ sau: hai bit b1b6 xác định hàng r trong hộp Si. Bảng trật tự nén(PC-2): 14 23 41 44 17 19 52 49 11 12 31 39 24 4 37 56 1 26 47 34 5 8 55 53 3 16 30 46 28 7 40 42 15 27 51 50 6 20 45 36 21 13 33 29 10 2 48 32 Bảng 3. Mỗi bit đƣợc sử dụng khoảng 14 lần trong tổng số 16 tổ hợp khoá. Chính việc dịch vòng này.10: Bảng PC-2 Ví dụ nhƣ chúng ta có thể nhận thấy bit ở vị trí 33 của khoá sẽ dịch sang vị trí 35 ra ngoài. 8 khối 6 bit Bi (1 ≤ i ≤ 8) sẽ cho ra 8 khối 4 bit Ci với (1 ≤ i ≤ 8). Thực chất hàm mở rộng E(Ri-1) là một hoán vị có lặp trong đó lặp lại 16 bit của Ri-1. Với mỗi xâu 6 bit Bi = b1b2b3b4b5b6. Đầu ra của f là một xâu bit có độ dài 32 bit. dù không phải tất cả các bít đƣợc sử dụng một cách chính xác cùng một lúc trong mỗi lần sử dụng..9: Bảng dịch bit tại các vòng lặp của DES Sau khi dịch vòng. và cũng chính là Ri cho vòng sau. . tạo nên một tập hợp con của khoá đƣợc sử dụng trong mỗi tổ hợp khoá. còn bit ở vị trí 18 của khoá sẽ bị bỏ qua. Thông thƣờng hàm f đƣợc chọn thƣờng là hàm có tính chất f = f-1. Trong sơ đồ mô tả mã hoá của DES đƣợc công bố bởi Uỷ ban Tiêu chuẩn Quốc gia Hoa Kỳ (The Untied States Nation Bureau of Standard). bốn bit b2b3b4b5 xác định cột c trong hộp Si. Kết quả P(C) sẽ là kết quả của hàm f(Ri-1. Mỗi hộp S-Box là một bảng 4*16 cố định có các cột từ 0 đến 15 và các hàng từ 0 đến 3.. S2. hàm f thực hiện các việc sau:  Biến thứ nhất Ri-1 đƣợc mở rộng thành một xâu bit có độ dài 48 bit theo một hàm mở rộng cố định E. Si(Bi) sẽ xác định phần tử Ci = Si(r.2.Ki) là một hàm có hai biế n vào: biến thứ nhất Ri-1 là một xâu bit có độ dài 32 bit. Hàm f cũng có thể mô tả bằng hình vẽ sau: 42 . Vì cách hoán vị này của ̉ các bit đƣợc chọn nhƣ một tổ hợp con của các bit nên đƣợc gọi là “hoán vị nén” hay “trật tự nén”.4. Hàm f có thể là hàm bất kỳ tuy nhiên vì nguồn gốc “sức mạnh” của DES nằm trong hàm f nên việc chọn hàm f phải cẩn thận để tránh bị phá mã một cách dễ dàng..  Đƣa 8 khối Bi vào 8 bảng S1. 2. một bảng chọn 48 bit đƣợc sƣ dụng.  Tính E(Ri-1)  Ki và viết kết quả thành 8 xâu 6 bit B1B2B3B4B5B6B7B8. Ki). Nhƣ vậy. S8 (đƣợc gọi là các hộp S-Box).Chƣơng III: Các hệ mã khóa bí mật Số bit dịch 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 Bảng 3.

sự phụ thuộc của các bit đầu ra với các bit đầu vào sẽ trải rộng ra. DES đƣợc thiết kế với điều kiện là mỗi bit của bản mã phụ thuộc vào mỗi bit của bản rõ và khoá. cả hai mục đích này đều nhằm một mục tiêu chính là bảo mật dữ liệu. Cho kết quả dài hơn để có thể đƣợc nén trong suốt quá trình thay thế.Chƣơng III: Các hệ mã khóa bí mật Ri-1 (32 bit) Hàm mở rộng (E) 48 bit 48 bit Khoá Ki (48 bit) 8×6 bit S1 S2 S3 S4 S5 S6 S7 S8 8×4 bit 32 bit P 32 bit Ri (32 bit) Hình 3. Tuy nhiên. Sơ đồ hàm mở rộng: 43 .2.5.5: Sơ đồ hàm f 2. Bằng cách cho phép 1 bit có thể chèn vào hai vị trí thay thế. Việc thực hiện này nhằm hai mục đích:   Làm độ dài của Ri cùng cỡ với khoá K để thực hiện việc cộng modulo XOR. Hàm (ánh xạ) mở rộng (E) Hàm mở rộng (E) sẽ tăng độ dài của Ri từ 32 bit lên 48 bit bằng cách thay đổi các thứ tự của các bit cũng nhƣ lặp lại các bit.

chính các hộp S tạo nên sự hỗn loạn (confusion) và sự khuếch tán (diffusion) của DES. Bảng sau đây miêu tả vị trí của bit ra so với bit vào. Không có hộp S nào là hàm Affine hay tuyến tính đối với các đầu vào của nó. bit thứ nhất và bit thứ tƣ tƣơng ứng với 2 bit của đầu ra. tức là việc tính phép tuyển loại trừ XOR của hai đầu ra cũng giống với phép tuyển loại trừ XOR của hai đầu vào rồi tính toán đầu ra. Bảng mô tả hàm mở rộng (E): 32 8 16 24 1 9 17 25 2 10 18 26 3 11 19 27 4 12 20 28 5 13 21 29 4 12 20 28 5 13 21 29 6 14 22 30 7 15 23 31 8 16 24 32 9 17 25 1 Bảng 3. trong khi bit thứ 2 và 3 tƣơng ứng với 1 bit ở đầu ra. Sự thay đổi của một bit đầu vào sẽ dẫn đến sự thay đổi ít nhất hai bit đầu ra. mỗi 4 bit của khối vào.6. mọi tính toán đều là tuyến tính. NSA đã đƣa ra tiêu chuẩn thiết kế hộp S nhƣ sau:    Mỗi hàng trong mỗi hộp S là một hoán vị của các số nguyên từ 0 đến 15. 44 .11: Bảng mô tả hàm mơ rộng E ̉ Ví dụ nhƣ bit ở vị trí số 3 của khối vào sẽ di chuyển đến vị trí số 4 của khối ra và bit ở vị trí 21 ở đầu vào sẽ di chuyển đến vị trí 30 và 32 ở đầu ra.Box Đối với sơ đồ mã hoá DES. 2. Chỉ duy nhất có các tính toán với hộp S là phi tuyến. Mô tả hộp S .Chƣơng III: Các hệ mã khóa bí mật 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 32 32 12 3 4 54 56 7 8 98 9 10 11 12 1312 1314 15 16 1716 Hình 3.2. Năm 1976. Chính vì vậy các hộp S-Box (chứa đựng các thành phần phi tuyến của hệ mật) là quan trọng nhất đối với độ mật của hệ mã.6: Sơ đồ hàm mở rộng (E) Đôi khi nó đƣợc gọi là hàm E-Box.

14: Hộp S3 7 13 13 14 3 8 11 5 0 6 6 15 9 0 10 3 1 4 2 7 8 2 5 12 11 12 4 15 1 10 14 9 45 . Kết quả thu đƣợc là một chuỗi 32 bit tiếp tục vào hộp P-Box. Mỗi hộp S-Box có 6 bit đầu vào và 4 bit đầu ra (tổng bộ nhớ yêu cầu cho 8 hộp S-Box chuẩn DES là 256 bytes). tuy nhiên cũng có thể dùng các hộp S chuẩn đã đƣợc công bố: 14 0 4 4 15 1 13 1 7 2 15 11 2 6 9 13 2 1 8 1 3 10 10 6 6 12 5 9 3 9 5 0 3 7 8 0 4 14 12 11 9 3 7 14 8 13 8 2 4 11 15 12 7 5 11 10 5 0 15 12 14 10 6 13 Bảng 3. kết quả thu đƣợc chuỗi 48 bit chia làm 8 khối đƣa vào 8 hộp S-Box.12: Hộp S1 15 3 0 13 1 13 14 8 8 4 7 10 14 7 6 15 11 2 4 15 3 8 13 4 4 9 7 2 1 13 12 0 10 6 12 6 9 0 5 10 5 15 9 14 12 0 1 2 5 9 11 3 2 11 10 1 3 8 12 7 11 6 5 14 Bảng 3. những thuộc tính này đảm bảo tính confusion và diffusion của thuật toán:   Các bit vào luôn phụ thuộc không tuyến tính với các bit ra. Tính chất này khiến cho việc phân tích theo lý thuyết thống kê để tìm cách phá hộp S là vô ích. Sửa đổi ở một bit vào làm thay đổi ít nhất là hai bit ra. Sau khi cộng modulo với khoá K. Ta có thể xây dựng các hộp S của riêng mình.  Khi một bit vào đƣợc giữ cố định và 5 bit còn lại cho thay đổi thì hộp S thể hiện một tính chất đƣợc gọi là “phân bố đồng nhất”: so sánh số lƣợng bit số 0 và 1 ở các đầu ra luôn ở mức cân bằng.Chƣơng III: Các hệ mã khóa bí mật  Đối với hộp S bất kỳ và với đầu vào x (một xâu bit có độ dài bằng 6) bất kỳ.13: Hộp S2 10 13 13 1 0 7 6 9 0 4 14 6 9 9 0 3 3 15 5 4 6 10 0 7 1 2 11 4 13 12 8 1 5 2 7 11 4 2 8 1 7 12 14 12 11 15 12 15 10 14 3 11 5 2 8 15 3 6 9 8 10 13 15 14 Bảng 3. NSA cũng tiết lộ 3 thuộc tính của hộp S. thì S(x) và S(x  001100) phải khác nhau ít nhất là 2 bit.

2. Hộp P-Box Việc hoán vị này mang tính đơn ánh.17: Hộp S6 4 13 1 6 11 0 4 2 11 14 15 7 4 0 9 3 4 8 1 7 10 13 3 12 3 9 5 6 0 7 12 8 5 2 0 10 15 5 2 6 8 9 3 1 6 2 12 10 14 11 13 12 8 1 14 10 15 7 9 5 11 13 15 14 Bảng 3. tƣơng ứng với cột 9. Bốn bit giữa có giá trị 1001. Bit đầu tiên và bit cuối cùng kết hợp lại thành 11 tƣơng ứng với hàng 3 của hộp S6. không bit nào đƣợc sử dụng hai lần hay bị bỏ qua.2.16: Hộp S5 12 1 10 15 9 4 2 7 2 2 12 8 5 6 9 12 8 5 3 0 6 7 13 1 0 3 4 14 0 1 6 7 5 11 8 10 15 9 4 13 14 4 1 10 7 11 3 14 15 5 3 13 11 6 0 8 13 2 12 9 15 10 11 14 Bảng 3. giá trị nhận đƣợc là 14 (số đếm của cột.7. Nhƣ vậy. hàng bắt đầu từ 0) và giá trị 1110 đƣợc thay thế cho giá trị 110110 ở đầu ra.18: Hộp S7 13 1 7 2 2 8 4 8 1 7 6 10 9 4 15 11 3 7 1 4 2 10 12 0 9 5 6 3 6 14 11 5 0 0 14 3 5 12 9 5 6 7 2 8 11 15 13 11 1 4 14 12 14 10 8 10 13 15 9 0 3 13 15 12 Bảng 3.19: Hộp S8 Ví dụ: Giả sử đầu vào của hộp S6 là chuỗi bit 110011 từ 31 đến 36 .Chƣơng III: Các hệ mã khóa bí mật 10 3 6 15 9 0 0 12 11 6 10 1 7 13 13 15 8 9 1 4 3 5 14 5 2 7 8 4 11 12 2 14 Bảng 3. nghĩa là một bit đầu vào sẽ cho một bit ở đầu ra.15: Hộp S4 2 12 4 1 7 10 11 7 13 7 2 6 1 8 13 8 5 15 6 5 0 9 15 3 15 13 3 6 10 0 14 9 9 3 4 8 6 14 11 4 11 2 8 2 12 4 15 10 12 0 5 9 1 11 10 13 12 7 1 14 0 14 5 3 Bảng 3. Hộp P-Box thực chất chỉ làm chức năng sắp xếp đơn thuần theo bảng sau: 46 .

Khoá này ở dạng nhị phân là một chuỗi bit nhƣ sau (không có bit kiểm tra): 00010010011010010101101111001001101101111011011111111000  Chuyển đổi IP.Chƣơng III: Các hệ mã khóa bí mật Bảng mô tả hộp P-Box (P): 16 1 2 19 7 15 8 13 20 23 24 30 21 26 14 6 29 5 32 22 12 18 27 11 28 31 3 4 17 10 9 25 Bảng 3.K1) L2=R1 = = = = = = 011110100001010101010101011110100001010101010101 000110110000001011101111111111000111000001110010 011000010001011110111010100001100110010100100111 01011100100000101011010110010111 00100011010010101010100110111011 11101111010010100110010101000100 E(R1) K2 E(R1)  K2 Đầu ra S-Box f(R1. Kết quả cuối cùng của hộp P-Box lại đƣợc XOR với nƣ a trái của khối 64 bit của ̉ chính nó (tức Li-1 để tạo ra Ri ) và sau đó nƣa trái và nƣ a phải đảo cho nhau và bắt đầu ̉ ̉ một vòng khác. chúng ta lấy ra L0 và R0: L0 = 11001100000000001100110011111111 L0 = R0 = 11110000101010101111000010101010  16 vòng mã hoá đƣợc thực hiện nhƣ sau: E(R0) K1 E(R0)  K1 Đầu ra S-Box f(R0.K2) L3=R2 = = = = = = 011101011110101001010100001100001010101000001001 011110011010111011011001110110111100100111100101 000011000100010010001101111010110110001111101100 11111000110100000011101010101110 00111100101010111000011110100011 11001100000000010111011100001001 47 . trong khi bit thứ 4 lại dịch chuyển đến bit 31. chúng ta hãy xét ví dụ sau:  Một bản rõ mang nội dung: “0123456789ABCDEF”.8.20: Bảng hoán vị P Ví dụ nhƣ bit 21 sẽ dịch chuyển đến bit thứ 4.  Sử dụng khoá (ở dạng thập phân): “133457799BBCDFFI”. Ví dụ về mã hoá DES Để có thể hiểu rõ hơn về phƣơng pháp mã hoá DES. 2.2.

K5) L6=R5 = = = = = = 101110101110100100000100000000000000001000001010 011111001110110000000111111010110101001110101000 110001100000010100000011111010110101000110100010 01010000110010000011000111101011 00101000000100111010110111000011 10001010010011111010011000110111 E(R5) K6 E(R5)  K6 Đầu ra S-Box F(R5.K7) = = = = = 111101010010101100001111111001011010101101010011 111011001000010010110111111101100001100010111100 000110011010111110111000000100111011001111101111 00010000011101010100000010101101 10001100000001010001110000100111 48 .K3) L4=R3 = = = = = = 111001011000000000000010101110101110100001010011 010101011111110010001010010000101100111110011001 101100000111110010001000111110000010011111001010 00100111000100001110000101101111 01001101000101100110111010110000 10100010010111000000101111110100 E(R3) K4 E(R3)  K4 Đầu ra S-Box f(R3.K4) L5=R4 = = = = = = 010100000100001011111000000001010111111110101001 011100101010110111010110110110110011010100011101 001000101110111100101110110111100100101010110100 00100001111011011001111100111010 10111011001000110111011101001100 01110111001000100000000001000101 E(R4) K5 E(R4)  K5 Đầu ra S-Box f(R4.K6) L7=R6 = = = = = = 110001010100001001011111110100001100000110101111 011000111010010100111110010100000111101100101111 101001101110011101100001100000001011101010000000 01000001111100110100110000111101 10011110010001011100110100101100 11101001011001111100110101101001 E(R6) K7 E(R6)  K7 Đầu ra S-Box F(R6.Chƣơng III: Các hệ mã khóa bí mật E(R2) K3 E(R2)  K3 Đầu ra S-Box f(R2.

Chƣơng III: Các hệ mã khóa bí mật L8=R7 = 00000110010010101011101000010000 E(R7) K8 E(R7)  K8 Đầu ra S-Box F(R7.K8) L9=R8 = = = = = = 000000001100001001010101010111110100000010100000 111101111000101000111010110000010011101111111011 111101110100100001101111100111100111101101011011 01101100000110000111110010101110 00111100000011101000011011111001 11010101011010010100101110010000 E(R8) K9 E(R8)  K9 Đầu ra S-Box F(R8.K9) L10=R9 = = = = = = 011010101010101101010010101001010111110010100001 111000001101101111101011111011011110011110000001 100010100111000010111001010010001001101100100000 00010001000011000101011101110111 00100010001101100111110001101010 00100100011111001100011001111010 E(R9) K10 E(R9)  K10 Đầu ra S-Box F(R9.K10) L11=R10 = = = = = = 000100001000001111111001011000001100001111110100 101100011111001101000111101110100100011001001111 101000010111000010111110110110101000010110111011 11011010000001000101001001110101 01100010101111001001110000100010 10110111110101011101011110110010 E(R10) K11 E(R10)  K11 Đầu ra S-Box f(R10.K11) L12=R11 = = = = = = 010110101111111010101011111010101111110110100101 001000010101111111010011110111101101001110000110 011110111010000101111000001101000010111000100011 01110011000001011101000100000001 11100001000001001111101000000010 11000101011110000011110001111000 E(R11) K12 E(R11)  K12 = = = 011000001010101111110000000111111000001111110001 011101010111000111110101100101000110011111101001 000101011101101000000101100010111110010000011000 49 .

K16) R16 = = = = = = 001000000110101000000100000110100100000110101000 110010110011110110001011000011100001011111110101 111010110101011110001111000101000101011001011101 10100111100000110010010000101001 11001000110000000100111110011000 00001010010011001101100110010101 Bảng 3. ta thu đƣợc bản mã (ở dạng Hecxa): “85E813540F0AB405”. chuyển đổi IP-1. 50 .Chƣơng III: Các hệ mã khóa bí mật Đầu ra S-Box f(R11.K14) L15=R14 = = = = = = = = = = = = 001110101011110111111010100011110000001011110000 100101111100010111010001111110101011101001000001 101011010111100000101011011101011011100010110001 10011010110100011000101101001111 11011101101110110010100100100010 00011000110000110001010101011010 000011110001011000000110100010101010101011110100 010111110100001110110111111100101110011100111010 010100000101010110110001011110000100110111001110 01100100011110011001101011110001 10110111001100011000111001010101 11000010100011001001011000001101 E(R14) K15 E(R14)  K15 Đầu ra S-Box f(R14.K15) L16=R15 = = = = = = 111000000101010001011001010010101100000001011011 101111111001000110001101001111010011111100001010 010111111100010111010100011101111111111101010001 10110010111010001000110100111100 01011011100000010010011101101110 01000011010000100011001000110100 E(R15) K16 E(R15)  K16 Đầu ra S-Box f(R15.21: Ví dụ về các bƣớc thực hiện của DES  Cuối cùng.K12) L13=R12 = = = 01111011100010110010011000110101 11000010011010001100111111101010 01110101101111010001100001011000 E(R12) K13 E(R12)  K13 Đầu ra S-Box f(R12.K13) L14=R13 E(R13) K14 E(R13)  K14 Đầu ra S-Box f(R13.

3.k) → y = DES( x . Khoá yếu Khoá yếu là các khoá mà theo thuật toán sinh khoá con thì tất cả 16 khoá con đều nhƣ nhau: K1 = K2 = .23: Các khóa nửa yếu của DES 51 ..3. Tính chất này chính là một yếu điểm của DES bởi vì qua đó đối phƣơng có thể loại bỏ đi một số khoá phải thử khi tiến hành thử giải mã theo kiểu vét cạn.k1) và y = DES(x. Tính bù Nếu ta ký hiệu u là phần bù của u (ví dụ nhƣ: 0100101 là phần bù của 1011010) thì DES có tính chất sau: y = DES(x.Chƣơng III: Các hệ mã khóa bí mật 2. Các yếu điểm của DES 2.k2) nghĩa là với 2 khoá khác nhau nhƣng mã hoá ra cùng một bản mã từ cùng một bản rõ: C0 D0 Semi-weak key (Hex) C0 D0 {01}14 {01}14 01FE 01FE 01FE 01FE FE01 FE01 FE01 FE01 {10}14 {10}14 {01}14 {10}14 1FE0 1FE0 0EF1 0EF1 E01F E01F F10E F10E {10}14 {01}14 {01}14 {0}28 01E0 01E0 01F1 01F1 E001 E001 F101 F101 {10}14 {0}28 {01}14 {1}28 1FFE 1FFE 0EFE 0EFE FE1F FE1F FE0E FE0E {10}14 {1}28 {0}28 {01}14 011F 011F 010E 010E 1F01 1F01 0E01 0E01 {0}28 {10}14 {1}28 {01}14 E0FE E0FE F1FE F1FE FEE0 FEE0 FEF1 FEF1 {1}28 {10}14 Bảng 3..3. Có tất cả 4 khoá yếu sau: Khoá yếu (Hex) 0101 0101 0101 0101 C0 D0 {0}28 {0}28 FEFE FEFE FEFE FEFE {1}28 {1}28 1F1F E0E0 1F1F E0E0 0E0E 0E0E {0}28 {1}28 F1F1 F1F1 {1}28 {0}28 Bảng 3.22: Các khóa yếu của DES Đồng thời còn có 6 cặp khoá nƣa yếu (semi-weak key) khác với thuộc tính nhƣ sau: ̉ y = DES(x. 2. k ) Cho nên nếu ta biết mã y đƣợc mã hoá từ thông tin x với khoá K thì ta suy ra đƣợc bản mã y đƣợc mã hoá từ bản rõ x với khoá k .2.1. = K15 = K16 Điều đó khiến cho việc mã hóa và giải mã đối với khoá yếu là giống hệt nhau.

hệ mã DES (hay chuẩ n mã hóa dƣ̃ liệu ) vơi ̉ ̀ ́ không gian khóa vẻn vẹn có 254 khóa nên thƣ̣ c tế hiện nay có thể bị thám mã trong 52 . Diffie và Hellman đã ƣớc lƣợng rằng có thể chế tạo đƣợc một máy tính chuyên dụng để vét cạn không gian khoá DES trong ½ ngày với cái giá 20 triệu đô la. tức 7300 năm. đã tăng lên 512000 lần/giây. Năm 1987. Ngƣời ta sẽ phân tích tiến trình biến đổi của những cặp mã này thông qua các vòng của DES khi chúng đƣợc mã hoá với cùng một khoá K. Chipset mã DES ngày nay có thể xử lý tốc độ 4. Nhƣng với các máy tính đƣợc chế tạo theo xử lý song song. đây là một kỹ thuật sử dụng những phỏng đoán khác nhau trong bản rõ để đƣa ra những thông tin trong bản mã. Nếu chúng ta biết đƣợc một cặp “tin/mã” thì chúng ta có thể thử tất cả 1017 khả năng này để tìm ra khoá cho kết quả khớp nhất.4. chúng ta sẽ tìm ra một khoá đƣợc xem là đúng nhất. Giả sử nhƣ một phép thử mất 10-6s. hai nhà toán học ngƣời Do Thái . Phá mã vi sai là thuật toán xem xét những cặp mã hoá khác nhau. Nếu một “nhóm” đƣợc phát với cấu trúc hàm quá nhỏ thì tính an toàn sẽ giảm.4. chipset mã hoá DES với tốc độ mã hoá 256000 lần/giây. Không gian khóa K DES có 256 = 1017 khoá. Điều này thực sự quan trọng nếu sử dụng DES trong đa mã hoá.3.5 giờ (và chậm nhất là 7 giờ).3. 2. Vào năm 1976 và 1977. Với phƣơng pháp này. thì chúng sẽ mất 1011s. Với việc đa mã hoá thì không gian ánh xạ còn lớn hơn. Sử dụng sự khác nhau của kết quả mã hoá và gán cho những khoá khác nhau một cách phù hợp nhất. với 56 bit khoá. Ví dụ nhƣ có hai khoá bất kỳ K1 và K2 thì sẽ luôn đƣợc khoá thứ K3 nhƣ sau: EK2(EK1(x)) = EK3(x) Nói một cách khác. Biham và Shamir đã chứng minh rằng nó hiệu quả hơn cả phƣơng pháp vét cạn. có thể cho chúng ta 256 (khoảng 1017) vị trí ánh xạ. Vào năm 1993. DES có cấu trúc đại số Với 64 bit khối bản rõ có thể đƣợc ánh xạ lên tất cả vị trí của 64 bit khối bản mã trong 264 cách.5×107 bit/s tức có thể làm đƣợc hơn 105 phép mã DES trong một giây. Sau đó sẽ chọn hai bản rõ khác nhau một cách ngẫu nhiên hợp lý nhất. Đến năm 1990. Với DES có cấu trúc đại số thì việc đa mã hoá sẽ đƣợc xem ngang bằng với việc đơn mã hoá. 2.đã phát minh ra phƣơng pháp phá mã vi sai (diferential cryptanalyis).Chƣơng III: Các hệ mã khóa bí mật 2. Trong thuật toán DES.3. Chẳng hạn với 107 con chipset mã DES chạy song song thì bây giờ mỗi một con chipset chỉ phải chịu trách nhiệm tính toán với 1010 phép thử. Michael Wiener đã thiết kế một máy tính chuyên dụng với giá 1 triệu đô la sử dụng phƣơng pháp vét cạn để giải mã DES trung bình trong vòng 3. Năm 1984.Biham và Shamir . việc mã hoá DES mang tích chất “nhóm”. Triple DES (3DES) Nhƣ đã trinh bày ơ các phầ n trên . đầu tiên mã hoá bản rõ bằng khoá K1 sau đó là khoá K2 sẽ giống với việc mã hoá ở khoá K3. Tuy nhiên điều này chỉ đúng nếu việc mã hoá DES là không có cấu trúc. Khi phân tích nhiều hơn những cặp bản mã. đây là những cặp mã hoá mà bản rõ của chúng là khác biệt.

Mô hình sƣ dụng đơn giản nhấ t của Triple DES là mã ̉ hóa 3 lầ n sƣ dụng 3 khóa K1. mô hình này gọi là EEE vì cả ba bƣơc sƣ ̉ ́ dụng ba khóa ở đây đều sử dụng thuật toán mã hóa chuẩn của DES . Vì vậy việc tìm kiếm các hệ mã khác thay thế cho DES là một điều cần thiết . khóa của hệ mã theo mô hình này là 112 bit. Tuy nhiên các chƣng minh ́ ́ về mặt lý thuyế t (không nằ m trong phạm vi của tài liệu này ) đã cho thấ y rằ ng hệ mã này không hề an toàn hơn DES (thuật toán thám mã theo kiể u vét cạn brute-force yêu cầ u số phép tính gấp đôi để thám mã 2DES so vơi DES). khi đó phƣơng pháp này có ́ tên gọi là Two key Triple DES . Một trong nhƣ̃ng cách thƣc đƣợ c xem xét đầ u tiên là tận dụng DES ́ nhƣng sƣ dụng mã hóa nhiề u lầ n . hoặc một cách chuẩ n mƣ̣ c hơ n là TDEA (Triple Data Encryption Algorithm). một biế n thể khác của mô hình này gọi là EDE với bƣớc ở giữa sử dụng thuật toán giải mã của DES:  C = DESK3( DES K1 (DESK1(M)). có vẻ an toàn hơn so vơi DES . một số biế n thể của Triple DES sƣ dụng ̉ khóa có độ dài 112 bit (K1=K3) nhƣng khác vơi double DES . cách này gọi là Triple DES (TDES) hay 3DES. ́ 53 .Chƣơng III: Các hệ mã khóa bí mật khoảng thời gian vài giờ đồng hồ . ít nhất là trên nguyên tắc .7: Triple DES Bản mã C = DESK3(DESK2(DESK1(M)). Khóa của Triple DES là 168 bit. K2. Cách thứ nhất là sử dụng hai khóa để mã hóa hai lần ̉ nhƣ sau: C = EK2(EK1(P)) Cách này gọi là double DES hay 2DES. Các chứng minh về mặt lý thuyết và các tấn công đối với Triple DES cho thấ y hệ mã này vẫn sẽ còn đƣợ c sƣ dụng trong một tƣơng lai d ài nữa ̉ mặc dù trên trên thƣ̣ c tế nó chậm hơn so vơi AES 6 lầ n. 2 Việc lƣ̣ a chọn mã hóa hay giải mã ơ bƣơc thƣ hai không làm thay đổ i tính an toàn ̉ ́ ́ của Triple DES. ́ Cách thức thứ hai và hiện nay đang đƣợc sử dụng rộng rãi là mã hóa DES ba lần . K3 nhƣ hình minh họa sau: ̉ Hình 3.

Các khố i cũng có thể đƣợ c xem là một ́ dãy các byte Byte Một nhóm 8 bit Cipher Thuật toán mã hóa Khóa của hệ mã . AES-192.5.5. ký hiệu và các tham số của thuật toán Các tham số thuật toán . nó đƣợc qui định chỉ làm việc vơi các khố i dƣ̃ liệu 128 bit và các khó a có độ dài 128. 192 hoặc 256 bit (do đó còn ́ đặt cho nó các tên AES-128. ̉ ́ ́ 2.1. Chuẩ n mã hóa cao cấ p AES 2. Các khóa này đƣợc sử dụng tại các vòng lặp của thuật toán Các giá trị mã hóa trung gian có thể biểu diễn dƣới dạng Trạng thái (State) một mảng 2 chiề u gồ m 4 hàng và Nb cột Một bảng thế phi tuyế n đƣợ c sƣ dụng trong thủ tục sinh ̉ S-box khóa và trong các biến đổi thay thế các byte để thực hiện các thay thế 1-1 đố i vơi một giá tri ̣1 byte ́ Một nhóm 32 bit có thể đƣợ c xem nhƣ 1 đơn vi ̣ tính toán Word độc lập hoặc là một mảng 4 byte AES Bảng 3.2. có thể đƣợc biểu diễn dƣới dạng một Cipher Key mảng 2 chiề u gồ m 4 hàng và Nk cột Ciphertext Bản mã Inverse Cipher Thuật toán giải mã Thủ tục đƣợc sử dụng để sinh ra các khóa sử dụng tại Thủ tục sinh khóa (Key các vòng lặp của thuật toán mã hóa .2. Giơi thiê ̣u ́ Chuẩ n mã hóa dƣ̃ liệu cao cấ p AES là một hệ mã khóa bí mật có tên là Rijndael (Do hai nhà mật mã học ngƣơi Bỉ là Joan Daemen và Vincent Rijmen đƣa ra và trơ thành ̉ ̀ chuẩ n tƣ năm 2002) cho phép xƣ lý các khố i dƣ̃ liệu input có kích thƣơc 128 bit sƣ dụng ̉ ̉ ̀ ́ các khóa có độ dài 128. giải mã từ khóa Expansion) chính ban đầu Là các giá trị sinh ra từ kh óa chính bằng cách sử dụng Round Key thủ tục sinh khóa . output. Các khái niệm và định nghĩa (Definitions) 2. AES-256 tƣơng ƣng vơi độ dài khóa sƣ dụng). Hệ mã Rijndael đƣợ c thiế t kế để có thể l àm việc vơi các khóa và các khố i dƣ̃ liệu có độ dài lơn hơn tuy nhiên khi đƣợ c chọn là một ́ ́ ̉ chuẩ n do Uy ban tiêu chuẩ n của Hoa Kỳ đƣa ra vào năm 2001.24: Qui ƣơc một số tƣ viế t tắ t và thuật ngƣ̃ của AES ́ ̀ 2.Chƣơng III: Các hệ mã khóa bí mật 2.5. Các hàm. Độ dài của dãy (khố i) là số lƣợng các bit mà nó chƣa . trạng thái (state) và các khóa sử dụng tại các vòng lặp (Round Block Key) của hệ mã .1.5. các ký hiệu và các hàm đƣợc sử dụng trong toán: AddRoundKey() Hàm biến đổi đƣợc sử dụng trong thuật toán mã hóa và giải mã trong đó thực hiện phép toán XOR bit giữa một trạng 54 mô tả thuật .5. Các khái niệm và ký hiệu Các khái niệm và đinh nghia đƣợ c sƣ dụng để trinh bày về chuẩ n mã hóa cao cấ p: ̣ ̉ ̃ ̀ Chuẩ n mã hóa cao cấ p Phép biến đổi bao gồm một phép nhân với một ma trận Biế n đổ i Affine sau đó là một phép cộng của một vectơ Bit Một số nhi ̣ phân nhận giá tri ̣ 0 hoặc 1 Một dãy các bit nhi ̣ phân tạo thành input . 192 hoặc 256 bit.2.2.

12 hoặc 14 tƣơng ̣ ứng với các giá trị khác nhau của Nk) Mảng word hằng số sử dụng trong các vòng lặp Hàm sử dụng trong thủ tục sinh khóa nhận một word 4-byte và thực hiện một hoán vị vòng Hàm sử dụng trong quá trình mã hóa . là hàm ngƣợc của hàm ShiftRows() Hàm biến đổi trong thuật toán giải mã . output và khóa của hệ mã đƣợ c đánh số tƣ 0. độ dài của mỗi khố i này là số bit dƣ̃ liệu mà nó chứa.5.5.3. ̀ 2.5. Kích thƣớc của một Round Key bằng kích thƣớc của trạng thái (chẳ ng hạn vơi Nb = 4 độ dài của một Round Key ́ sẽ là 128 bit hay 16 byte) Hàm biến đổi đƣợc sử dụng trong thuật toán giải mã. hoặc 8) Số lƣợ ng các vòng lặp của thuật toán . Các giá trị input. Các giá trị input. Input và Output Input và Output của chuẩ n mã hóa cao cấ p đề u là các dãy 128 bit. Nb = 4) Số lƣợ ng các word 32 bit tạo thành khóa mã hóa K (Nk = 4. Các ký hiệu và qui ƣớc 2. xƣ lý một ̉ trạng thái bằ ng cách sƣ dụng một bảng thế phi tuyế n các ̉ byte (S-box) thao tác trên mỗi byte một cách độc lập Hàm sử dụng trong thủ tục sinh khóa nhận một word input 4-byte và sƣ dụng một S -box trên mỗi giá tri ̣ 4-byte này để ̉ thu đƣợ c 1 word output Phép or bit tuyệt đối Phép or bit tuyệt đối Phép nhân 2 đa thƣc (bậc nhỏ hơn 4) theo modulo (x4 + 1) ́ Phép nhân trên trƣờng hữu hạn InvMixColumns() InvShiftRows() InvSubBytes() K MixColumns() Nb Nk Nr Rcon[] RotWord() ShiftRows() SubBytes() SubWord() XOR    2.3. 6. output và khóa của hệ mã đƣợ c ký 55 .1) đƣợ c xem là một mảng các byte. ̉ Các bit của input.3. xƣ lý các trạng thái ̉ bằ ng cách dich vòng ba hàng cuố i của trạng thái vơi số lầ n ̣ ́ dịch khác nhau Hàm biến đổi sử dụng trong quá trình mã hóa . là hàm ngƣợ c của hàm MixColumns() Hàm biến đổi trong thuật toán giải mã .Chƣơng III: Các hệ mã khóa bí mật thái tr ung gian (State) và một khóa của vòng lặp (Round Key).2.1. là hàm ngƣợc củ a hàm SubBytes() Khóa mã hóa Hàm biến đổi trong thuật toán mã hóa nhận tất cả các cột của một trạng thái (State) và trộn với dữ liệu của nó (không phụ thuộc lẫn nhau) để nhận đƣợc một cột mới Số lƣợ ng các cột (là các word 32 bit) tạo thành một trạng thái. còn gọi là các khố i (block). là một hàm của Nk và Nb (là các giá trị cố đinh ) ( Nr = 10. Chuẩ n mã hóa dƣ̃ liệu cao cấ p không làm việc vơi các giá tri ̣ input. 192 hoặc 256 bit. output và khóa của hệ mã (đƣợ c qui đinh trong phầ n ̣ 3. Đơn vi ̣ Byte Đơn vi ̣ cơ bản để xƣ lý trong AES là một byte tƣc là một dãy 8 bit đƣợ c xem nhƣ là ̉ ́ một đố i tƣợ ng đơn. output và khóa có các độ dài khác (mặc dù thuật toán ́ cơ sơ của nó cho phép điề u này). Khóa của chuẩn mã hóa cao cấp là một dãy có độ dài 128.

b4.4.2 S3.3 output bytes out4 out8 out12 out5 out9 out13 out6 out10 out14 out7 out11 out15 out0 out1 out2 out3 Hình 3.Chƣơng III: Các hệ mã khóa bí mật hiệu bơi tên mảng a và biể u diễn dƣơi dạng a n hoặc a[n] trong đó n nhận các giá tri ̣ trong ̉ ́ các khoảng sau: Nế u độ dài khóa bằ ng 128 bit: 0 ≤ n < 16. b2.2 S2. mỗi hàng có Nb byte trong đó Nb là kích thƣơc của khố i chia cho 32. b3. Tấ t cả các giá tri ̣ Byte sƣ dụng trong thuật toán của AES đề u đƣợ c biể u diễn dƣơi ̉ ́ dạng một dãy các bit 0 hoặc 1 theo đinh dạng {b7.1 S0. b6. + Để thuận tiện .8: Các trạng thái của AES trong đó các giá tri ̣ của mảng s và mảng output đƣợ c tính nhƣ sau: s[r. b1. c] = in[r + 4c]  0  r.5.3 S1.0 S0.1 S2.1 S1.3. Trạng thái (State) Các thao tác bên trong của AES đƣợc thực hiện trên một mảng 2 chiề u các byte đƣợ c gọi là trạng thái . chẳ ng hạn {01100011} sẽ đƣợc biểu diễn thành {63}. 2. 6 Chẳ ng hạn giá tri ̣ {01100011} tƣơng đƣơng vơi phầ n tƣ trên trƣơng hƣ̃u hạn x ̉ ́ ̀ 5 x + x + 1.2 S0.0 S1.1 S3.0 S3.3 S2. Một trạng thái gồ m bố n hàng các byte . in15 đƣợ c copy vào mảng trạng thái theo qui tắ c đƣợ c minh họa bằ ng hình vẽ: input bytes in0 in4 in8 in12 in1 in5 in9 in13 in2 in6 in10 in14 in3 in7 in11 in15 State array S0.25: Bảng biểu diễn các xâu 4 bit Khi đó các Byte (8 bit) sẽ đƣợc biểu diển bằng hai ký tự . in1. c < 4). b0}. Các Byte này ̣ sau đƣợ c hiể u là các phầ n tƣ trên trƣơng hƣ̃u hạn bằ ng cách sƣ dụng biể u diễn thành ̉ ̉ ̀ dạng đa thức: b7x7 + b6x6 + b5x5 + b4x4 + b3x3 + b2x2 + b1x1 + b0x0 = b x i 0 i 7 i . các giá trị Byte đƣợc biểu diễn sử dụng các ký hiệu của hệ Hexa .0 S2.2 S1. Tại thời điểm bắt đầu input của thuật toán – mảng các byte in 0. Nế u độ dài khóa bằ ng 192 bit: 0 ≤ n < 24. …. c < 4 56 . b5. Nế u độ dài khóa bằ ng 256 bit: 0 ≤ n < 32. sƣ dụng 4 bit cho một ký tƣ̣ và hai ký tƣ̣ cho một Byte nhƣ bảng sau: ̉ Bit Ký tự Bit Ký tự Bit Ký tự Bit Ký tự 0000 0 0100 4 1000 8 1100 c 0001 1 0101 5 1001 9 1101 d 0010 2 0110 6 1010 a 1110 e 0011 3 0111 7 1011 b 1111 f Bảng 3.3 S3. Mảng trạng thái ký hiệu là s trong đó mỗi byte ́ của mảng có 2 chỉ số hàng r và cột c (0  r.

4.0 w2 = s0. output và các trạng thái (state) của chuẩn mã hóa cao cấp AES là 128 bit tƣơng ƣng vơi giá tri ̣ của Nb = 4 (là số lƣợng các word 32-bit và cũng là số cột ́ ́ của mỗi trạng thái ).0 s3. word w[Nb*(Nr+1)]) 57 .0 s1.4. Các biến đối này (và các hàm ngƣợc của chúng ) đƣợ c mô tả trong các phầ n 4.1.3 4 word 32-bit w0. Tƣơng ƣng vơi độ dài của khóa sƣ dụng số vòng lặp của thuật toán Nr nhận các giá ̉ ́ ́ trị 10 (Nk = 4). Chúng ta có thể minh họa qua bảng sau: AES-128 AES-192 AES-256 Độ dài khóa (Nk) 4 6 8 Kích thƣớc khối (Nb) 4 4 4 Số lầ n lặp (Nr) 10 12 14 Bảng 3.3. Thuâ ̣t toán mã hóa Bắ t đầ u thuật toán bản rõ (input) đƣợ c copy vào mảng trạng thái sƣ dụng các qui ̉ ƣớc đƣợc mô tả trong phần 3.1-4.3 s1.3.3 s2. 12 (Nk = 6) hoặc 14 (Nk = 8).14.5. Hàm vòng đƣợc tham số hóa sử dụng một (key schedule) dãy các khóa đƣợc biểu diễn nhƣ là một mảng 1 chiề u của các word 4-byte đƣợ c sinh ra tƣ thủ tục sinh khóa (Key ̀ Expansion) đƣợ c mô tả trong phầ n 5.4.1. hoặc 14 phụ thuộc vào độ dài khóa ) trong đó lầ n cuố i cùng thƣ̣ c hiện khác các lầ n trƣơc đó . 2.26: Bảng độ dài khóa của AES Cả quá trình mã hóa và giải mã AES sƣ dụng một hàm lặp là kế t hợ p của bố n hàm ̉ biế n đổ i (đơn vi ̣ xƣ lý là byte) sau: 1) biế n đổ i thay thế byte sƣ dụng một bảng thế (S-box). 192 hoặc 256 bit tƣơng ƣng vơi các ́ ́ giá trị của Nk là 4.1. hoặc 8 và cũng là số cột của khóa mã hóa. MixColumns() và AddRoundKey() trƣ ́ ̀ vòng cuối cùng bỏ qua việc thực hiện hàm MixColumns(). ́ Trạng thái sau lần lặp cuối cùng sẽ đƣợc chuyển thành output của thuậ t toán theo qui tắ c đƣợ c mô tả trong phầ n 3. w3 2. Sau khi cộng vơi khóa Round Key khơi tạo mảng trạng ̉ ́ thái đƣợc biến đổi bằng các thực hiện một hàm vòng (round function) Nr lầ n (10.5.2 s1.2.2 s3.0 s2.4. ̉ ̉ 2) dịch các hàng của mảng trạng thái với số lần dịch c ủa mỗi hàng là khác nhau . Biể u diễn của trạng thái Bố n cột của mảng trạng thái của thuật toán tạo thành đƣợ c biể u diễn nhƣ sau: w0 = s0.Chƣơng III: Các hệ mã khóa bí mật out[r + 4c] = s[r. Thuâ ̣t toán Độ dài của input . c < 4 2. c]  0  r. ShiftRows().1 w3 = s0.3 s3. …. w1. byte out[4*Nb].2 s2. 3) kế t hợ p dƣ̃ liệu của mỗi cột trong mảng trạng thái và 4) cộng một khóa Round Key vào trạng thái.2 w1 = s0. 6. Khóa của AES có độ dài là 128. Chúng ta có thể thấy tất cả các vòng đều thực hiện các công việc giống nhau dựa trên 4 hàm (theo thƣ tƣ̣ ) SubBytes().1 s1.5.3. 12.4.5.4 và 4. Thuật toán đƣợ c mô tả chi tiế t qua đoạn giả mã lệnh sau: Cipher(byte in[4*Nb].1 s3.1 s2.

5.1.1.2 MixColumns(state) // See Sec. w[round*Nb. (round+1)*Nb-1]) end for SubBytes(state) ShiftRows(state) AddRoundKey(state.3 AddRoundKey(state. 5. Nb-1]) // See Sec. w[0.Chƣơng III: Các hệ mã khóa bí mật begin byte state[4. 5. w[Nr*Nb.1 ShiftRows(state) // See Sec.4 for round = 1 step 1 to Nr–1 SubBytes(state) // See Sec. (Nr+1)*Nb-1]) out = state end Sơ đồ thuật toán: 58 .1.1. 5.Nb] state = in AddRoundKey(state.

2). phầ n tƣ ̣ ̉ ̀ {00} đƣợ c ánh xạ thành chính nó 2.Chƣơng III: Các hệ mã khóa bí mật Plaintext Key w[0. 43] Add round key Plaintext (a) Mã hóa Ciphertext (b) Giải mã Hình 3. bảng thế này là khả nghịch và đƣợc xây dựng bằng cách ̉ kế t hợ p hai biế n đố i sau: 1. 7] Inverse mix cols Add round key Inverse sub bytes Inverse shift row Substitute bytes Shift rows Mix Columns Add round key w[36.39] … Round 9 Inverse mix cols Add round key Inverse sub bytes Inverse shift row Substitute bytes Round 10 Shift rows Add round key w[40. 3] Plaintext Add round key Inverse sub bytes Round 10 Round 1 Round 9 Add round key Substitute bytes Shift rows Round 1 Expand key Inverse shift row Mix Columns Add round key w[4.5.9: Thuật toán mã hóa và giải mã của AES 2. Áp dụng biến đổi Affine sau (trên GF(2)): … 59 . Nhân nghich đảo trên trƣơng hƣ̃n hạn GF (28) (mô tả trong phầ n 4.1 Hàm SubBytes() Hàm SubBytes () thƣ̣ c hiện phép thay thế các byte của mảng trạng thái bằng cách sƣ dụng một bảng thế S -box.4.1.

0 S0.0 S1.2 ' S 2.2 S1.0 ' S3.0 ' S3.2 S0.3 Bảng thế S -box đƣợ c sƣ dụng trong hàm SubBytes () có thể đƣợc biểu diễn dƣới ̉ dạng hexa nhƣ sau: 60 .1 S3.0 S 2.2 S3.1 ' S3.Chƣơng III: Các hệ mã khóa bí mật bi'  bi  b(i 4)mod8  b(i 5)mod8  b(i 6)mod8  b(i 7)mod8  ci trong đó 0  i <8 là bit thứ i của byte b tƣơng ứng và ci là bit thứ i của byte c với giá trị {63} hay {01100011}.1 S0.3 S3.2 ' S3.0 S3.3 ' S1.3 S-Box ' S0.2 ' S0.3 S ' 2.3 S r .1 ' S1.0 ' S1.0 ' S0.2 r .1 ' S0.3 ' S 2.1 S S ' 2. Các phần tử biến đổi affine của nhƣ sau: ' b0  1  '   b1  1 ' b2  1  '   b3   1 b '   1  4  ' b5  0 b '   0  6  ' b7  0    S-box có thể đƣợ c biể u diế n dƣơi dạng ma trận ́ 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 1 1  b0  1    1  b1  1     1  b2  0      1  b3  0   0  b4  0      0  b5  1  0  b6  1      1  b7  0      Hình sau minh họa kết quả của việc áp dụng hàm biến đổi SubBytes () đố i vơi mảng ́ trạng thái: S0.c ' S 2.2 S 2.3 S1.c S 2.

3 S0.1 S3. Tấ t các các mô tả trên có thể minh họa qua hình vẽ sau: ShiftRows() S0.2 S0.1 = {53} có nghĩa là giá trị thay thế sẽ đƣợc xác định bằ ng giao của hàng có chỉ số 5 vơi cột có chỉ số 3 trong bảng trên điề u này tƣơng ƣng ́ ́ vơi việc s‟1. Thao tác này sẽ chuyể n các byte tơi các vi ̣ trí thấ p hơn trong các hàng .0 S0.3 S0. 4) = 2.0 S0.0 S1.0 S2. 4) = 1.4. shift(3.c  sr .31 S3.3 S3. 4) = 3.0 S0.1 S 2.3 S1.0 S3.3 S3.1 S S0. Nb) phụ shift(1.1 S0. Hàng đầu tiên r = 0 không bi ̣ dich.3 S 2.3 S0.1 = {ed}. ́ 2.2 S 2.5. Nb ))mod Nb ( Nb  4) thuộc vào số hàng r nhƣ sau: trong đó giá tri ̣ dich shift ̣ (r.3 S 2.27: Bảng thế S-Box của AES trong đó chẳ ng hạn nế u s 1.(c  shift ( r .0 S3.1 S 2.3 S1.0 S 2.Chƣơng III: Các hệ mã khóa bí mật Bảng 3.2.1 S1.2 S 2.2 S1.0 S1.1 S1.1.1 S0.2 S1. shift(2.0 S0.2 S0.3 S0. ̣ ̣ ̣ ́ Cụ thể hàm này sẽ tiến hành biến đổi sau: sr' . Hàm ShiftRows() Trong hàm này các byte trong 3 hàng cuối của mảng trạng thái sẽ đƣợc dịch vòng vơi số lầ n dich (hay số byte bi ̣ dich) khác nhau.2 S S0.1 S3. trong khi ́ các byte thấp nhấ t sẽ đƣợ c chuyể n lên đầ u của hàng .2 S3.2 ’ S0.2 61 .

c  s0. nó coi mỗi cột của mảng trạng thái nhƣ là một đa thức gồm 4 hạng tử nhƣ đƣợc mô tả trong phần 4.c  02  '    S1.c )  ({03}  s2.Chƣơng III: Các hệ mã khóa bí mật Hình 3.c )  ({03}  s1.c )  s2.c  ({02}  s2.c  ({02}  s0.c   03   03 02 01 01 01 03 02 01 01  S0.c    02   S3.c )  ({03}  s3.c ) ' s3.5.c   03  S2.3.c ' s1.c    01  S1.c  ({02}  s1.c ' s2.3.1.4.3 điề u này có thể biể u diễn bằ ng một phép nhân ma trận: s‟(x) = a(x)s(x): '  S0.c  ({02}  s3.c  ({03}  s0.c  s1.c  s0.c )  s3.10: Hàm ShifftRows() 2.c ) Có thể minh họa việc thực hiện của hàm này bằng hình vẽ sau: 62 .c    01 '  S2. Hàm MixColumns() Hàm này làm việc trên các cột của bảng trạng thái .c )  s1.c  s2. Các cột sẽ đƣợc xem nhƣ là các đa thƣc trên GF (28) và đƣợc nhân theo modulo x4 + 1 vơi một đa thƣc cố ́ ́ ́ đinh a(x): ̣ a(x) = {03}x3 + {01}x2 + {01}x + {02} Nhƣ đã mô tả trong phầ n 4.c  s3. ́ Kế t quả là bốn byte trong mỗi cột sẽ đƣợc thay thế theo công thức sau: ' s0.c    vơi mọi 0  c < Nb = 4.c   01  '    S3.

2). s2.c .4. Thuâ ̣t toán sinh khóa (Key Expansion) Thuật toán sinh khóa của AES nhận mộ t khóa mã hóa K sau đó thƣ̣ c hiện một thủ tục sinh khóa để sinh một dãy các khóa cho việc mã hóa .1.2 và round là lần lặp tƣơng ƣng vơi qui ƣơc 0  round  Nr. s3. Hàm ̉ ́ ́ AddRoundKey() đƣợ c thƣ̣ c hiện trong thuật toán mã hóa khi 1  round  Nr. Hình 3. Thủ tục này sẽ sinh tổng số Nb*(Nr+1) word.c . word w[Nb*(Nr+1)]. thủ tục sử dụng một tập khởi tạo Nb word và mỗi một lần lặp trong số Nr lầ n sẽ cầ n tơi Nb word của dƣ̃ liệu khóa .1.11: Hàm MixColumns của AES 2. s2.12: Hàm AddRoundKey của AES 2. Sƣ̣ mơ rộng khóa thành dãy khóa đƣợ c mô tả qua đoạn giả mã sau: ̉ KeyExpansion(byte key[4*Nk].5.Chƣơng III: Các hệ mã khóa bí mật Hình 3.c .4.5. Mỗi khóa vòng gồ m Nb word đƣợ c sinh ra bơi thủ tục sinh ̉ khóa (phầ n 5. Trong thuật toán mã hóa phép cộng khóa vòng ́ ́ ́ khơi tạo xảy ra vơi round = 0 trƣơc khi các vòng lặp của thuật toán đƣợ c thƣ̣ c hiện . s3. Các word này sẽ đƣợc cộng vào mỗi cột của mảng trạng thái nhƣ sau: ' ' ' '  s0. s1. Dãy khóa kết quả là một mảng tuyế n tinh các ́ ́ word 4-byte đƣợ c ký hiệu là [wi] trong đó 0  i < Nb(Nr+1).4. ̣ = round * Nb.c    s0.2.c .c . s1. Việc thƣ̣ c hiện của hàm này có thể minh họa qua hình vẽ tring đó l Đia chỉ byte trong các word của dãy khóa đƣợ c mô tả trong phầ n 3. Nk) begin word temp i=0 while (i < Nk) 63 .c .c    wround *Nb c  0  c  Nb  4     trong đó [wi] là các word của khóa đƣợc mô tả trong phần 5. Hàm AddRoundKey() Trong hàm này một khóa vòng (Round Key ) sẽ đƣợc cộng vào mảng trạng thái bằ ng một thao tác XOR bit .

Các word sau đó w [i] sẽ bằng XOR với word đứng trƣớc nó ̉ w[i-1] vơi w[i-Nk]. Hàm RotWord() nhận một word input [a0.3.4. byte out[4*Nb]. a3. {00}] trong đó x i-1 là mũ hóa của x (x đƣợ c ̉ ́ biể u diễn dƣơi dạng {02} trên GF(28) và i bắt đầu từ 1). sau đó là áp ̣ dụng một bảng tra lên tất cả 4 byte của word (SubWord()). ́ Theo đoạn giả mã trên chúng ta có thế nhận thấ y rằ ng Nk word của khóa kế t quả sẽ đƣợ c điề n bơi khóa mã hóa . Chú ý là thủ tục mở rộng khóa đối với các khóa có độ dài 256 hơi khác so với thủ tục cho các khóa có độ dài 128 hoặc 192. key[4*i+1]. ́ 2.Nb] state = in 64 . a2. key[4*i+3]) i = i+1 end while i = Nk while (i < Nb * (Nr+1)] temp = w[i-1] if (i mod Nk = 0) temp = SubWord(RotWord(temp)) xor Rcon[i/Nk] else if (Nk > 6 and i mod Nk = 4) temp = SubWord(temp) end if w[i] = w[i-Nk] xor temp i=i+1 end while end SubWord() là một hàm nhận một input 4-byte và áp dụng bảng thế S -box lên input để nhận đƣợc một word output . Vơi các word ơ vi ̣ trí chia hế t cho Nk một biế n đổ i sẽ đƣợ c thƣ̣ c hiện vơi ̉ ́ ́ ́ w[i-1] trƣơc khi thƣ̣ c hiện phép XOR bit . a3] thƣ̣ c hiện một hoán vị vòng và trả về [a1. a1.Chƣơng III: Các hệ mã khóa bí mật w[i] = word(key[4*i].5. a2. ́ ́ Biế n đổ i này gồ m một phép dich vòng các byte của một word (RotWord()). Thuâ ̣t toán giải mã Thuật toán giải mã khá giố ng vơi thuật toán mã hóa về mặt cấ u trúc nhƣng 4 hàm ́ cơ bản sƣ dụng là các hàm ngƣợ c của các hàm trong thuật toán giải mã . key[4*i+2]. Nế u Nk = 8 và i – 4 là một bội số của Nk thì SubWord() sẽ đƣợc áp dụng cho w[i-1] trƣơc khi thƣ̣ c hiện phép XOR bit. {00}. Các phần tử của mảng hằng số Rcon [i] chƣa các giá tri ̣ nhận đƣợ c bơi [xi-1. word w[Nb*(Nr+1)]) begin byte state[4. sau đó là phép XOR vơi một hằ ng số Rcon [i]. {00}. Đoạn giả mã ̉ cho thuật toán giải mã nhƣ sau: InvCipher(byte in[4*Nb]. a0].

Cụ thể hàm này tiến hành xử lý sau: sr' . Nb) phụ ̣ thuộc vào số hàng nhƣ trong phầ n 5.0  c  Nb( Nb  4) Hình minh họa: 65 .Chƣơng III: Các hệ mã khóa bí mật AddRoundKey(state.2.(c shift ( r .4.3.4 for round = Nr-1 step -1 downto 1 InvShiftRows(state) // See Sec.1. 5.3. (round+1)*Nb-1]) InvMixColumns(state) // See Sec. w[round*Nb. Nb ))mod Nb  sr . w[Nr*Nb. 5.1.2 AddRoundKey(state.1. w[0. Hàng đầu tiên không bị dịch.3. 5. Nb-1]) out = state end 2. Nb) byte trong đó các giá tri ̣ shift (r.3. Các byte của ba hàng cuối của mảng trạng thái sẽ đƣợc dịch vòng với các vị trí dịch khác nhau .3 end for InvShiftRows(state) InvSubBytes(state) AddRoundKey(state.1 InvSubBytes(state) // See Sec. Hàm InvShiftRows() Hàm này là hàm ngƣợc của hàm ShiftRows () . ba hàng cuố i bi ̣ dich đi Nb – shift(r.5. 5.c0  r  4. (Nr+1)*Nb-1]) // See Sec.

c )  ({09}  s3.c  0d 09 0e 0b   S2.3. Hàm InvSubBytes() Hàm này là hàm ngƣợc của hàm SubBytes ().c      trong đó 0  c < Nb.28: Bảng thế cho hàm InvSubBytes() 2.c )  ({0b}  s2.c   0e 0b 0d 09   S0.Chƣơng III: Các hệ mã khóa bí mật Hình 3.c  ({0e}  s0.c )  ({0e}  s1.3.c )  ({0d}  s3.3.c    09 0e 0b 0d   S1.2.c ) 66 . ̣ Bảng thế đƣợ c sƣ dụng trong hàm là: ̉ Bảng 3.5.c  '  S2. Kế t quả là bố n byte trong mỗi cột sẽ đƣợ c thay thế theo công thƣc sau: ́ ' s0.c  ({09}  s0. Hàm InvMixColumns() Hàm này là hàm ngƣợc của hàm MixColumns ().c )  ({0d}  s2.c   '      S1.c )  ({0b}  s1.4.c   0b 0d 09 0e   S3.c ) ' s1.5. Hàm làm việc trên các cột của mảng trạng thái .c   '      S3. ́ 8 Các cột đƣợc xem là các đa thức trên GF (2 ) và đƣợc nhân theo modulo x 4+1 vơi một đa ́ thƣc cố đinh là a-1(x): ̣ ́ a-1(x) = {0b}x3 + {0d}x2 + {09}x + {0e} Và có thể mô tả bằng phép nhân ma trận nhƣ sau: s‟(x) = a-1(x)s(x): '  S0. hàm sử dụng nghịch đảo của biến đổi Affine bằ ng cách thƣ̣ c hiện nhân nghich đảo trên GF(28). coi mỗi cột nhƣ là môtô đa thƣc 4 hạng tử đƣợc mô tả trong phần 4.4.13: Hàm InvShiftRows() của AES 2.3.

c )  ({0e}  s3.4.c )  ({09}  s1. Tuy vậy một số đặc điể m của AES cho phép chúng ta có một thuật toán giải mã tƣơng đƣơng có thứ tự áp dụng các hàm biến đổi giống với thuật toán mã hóa (tấ t nhiên là thay các biế n đổ i bằ ng các hàm ngƣợ c của chúng ). Hai thuộc tính sau cho phép chúng ta có một thuật toán giải mã tƣơng đƣơng: 1.3.c )  ({09}  s2.c ) ' s3. Các hàm trộn cột – MixColumns() và InvMixColumns () là các hàm tuyến tính đố i vơi các cột input.c )  ({0b}  s3.4. Thuâ ̣t toán giải mã tƣơng đƣơng Trong thuật toán giải mã đƣợ c trình bày ơ trên chúng ta thấ y thƣ tƣ̣ của các hàm ̉ ́ biế n đổ i đƣợ c áp dụng khác so vơi thuật toán mã hóa trong khi dạng của danh sách khóa ́ cho cả 2 thuật toán vẫn giƣ̃ nguyên.Chƣơng III: Các hệ mã khóa bí mật ' s2.c ) 2.c  ({0b}  s0.4. Các word đầ u tiên và cuố i cùng của danh sách khóa không bị thay đổi khi ta áp dụng phƣơng pháp này.c )  ({0e}  s2. Đoạn giả mã cho thuật toán giải mã tƣơng đƣơng: EqInvCipher(byte in[4*Nb]. Round Key) = InvMixColumns(state) XOR Các đặc điểm này cho phép thứ tự của các hàm InvSubBytes() và InvShiftRows() có thể đổ i chỗ .c  ({0d}  s0. byte out[4*Nb].Nb] 67 . Thuật toán giải mã tƣơng đƣơng đƣợ c thƣ̣ c hiện bằ ng cách đ ảo ngƣợc thứ tự của hàm InvSubBytes () và InvShiftRows (). Thƣ tƣ̣ của các hàm AddRoundKey() và InvMixColumns() cũng có thể đổi chỗ ́ miễn là các cột của danh sách khóa giải mã phải đƣợ c thay đổ i bằ ng cách sƣ dụng hàm ̉ InvMixColumns(). word dw[Nb*(Nr+1)]) begin byte state[4. Các hàm SubBytes () và ShiftRows() hoán đổi cho nhau .5. 2.3. Thuật toán giải mã tƣơng đƣơng cho một cấ u trúc hiệu quả hơn so vơi thuật toán ́ giải mã trƣớc đó. và thay đổi thứ tự của AddRoundKey () và InvMixColumns() trong các lầ n lặp sau khi thay đổ i khóa cho giá tri ̣ round = 1 to Nr-1 bằ ng cách sử dụng biến đổi InvMixColumns ().c )  ({0d}  s1. Hàm nghịch đảo của hàm AddRoundKey() Thật thú vi ̣ là hàm này tƣ̣ bản thân nó là nghich đảo của chinh nó là do hàm chỉ có ̣ ́ phép toán XOR bit. Điề u này cũng đúng vơi các hàm ̉ ́ ngƣợ c của chúng 2.5. có nghĩa là: ́ InvMixColumns(state XOR InvMixColumns(Round Key). Điề u này đạt đƣợc bằng cách thay đổi danh sách khóa. có nghĩa là một biến đổ i SubBytes () theo sau bơi một biế n đổ i ShiftRows () tƣơng đƣơng vơi một biế n đổ i ̉ ́ ShiftRows() theo sau bơi một biế n đổ i SubBytes ().5.

Nb-1]) out = state end Các thay đổi sau cần thực hiện trong thuật toán sinh khóa để thuật toán trên có th ể hoạt động đƣợc: for i = 0 step 1 to (Nr+1)*Nb-1 dw[i] = w[i] end for for round = 1 step 1 to Nr-1 InvMixColumns(dw[round*Nb. sử dụng khóa là xâu bít có độ dài bằng 56. Tuy nhiên để sử dụng các hệ mã này trên thực tế vẫn cần có một qui đinh về qui cách sƣ dụng ̣ ̉ chúng để mã hóa các dữ liệu cần mã hóa. độ lơn trƣơc khi mã hóa (chẳ ng hạn nhƣ các file .6.Chƣơng III: Các hệ mã khóa bí mật state = in AddRoundKey(state. Dƣ̣ a vào việc xƣ lý dƣ̃ liệu input của hệ mã ngƣơi ta chia thành hai loại cơ chế ̉ ̀ sử dụng các hệ mã khối sau: 1. các email trƣớc khi cần ́ ́ ́ 68 . (Nr+1)*Nb-1]) for round = Nr-1 step -1 downto 1 InvSubBytes(state) InvShiftRows(state) InvMixColumns(state) AddRoundKey(state. dòng (Stream Modes): xử lý các thông điệp nhƣ là một luồng bit/byte (CFB. (round+1)*Nb-1]) // note change of type end for 2. chẳng hạn DES với các khối bit 64. CBC) 2. Có 4 hình thức sử dụng các hệ mã khối đƣợc định nghĩa trong các chuẩn ANSI (ví dụ ANSI X3.1. dw[Nr*Nb. Các hình thức sử dụng Nhƣ chúng ta đã biế t c ác mã hóa khối mã hóa các khối thông tin có độ dài cố định. Các cơ chế. dw[0. hình thức sử dụng của mã hóa khối (Mode of Operation) 2.6. Cách thức sử dụng một thuật toán mã hóa khối trong thực tế đƣợc gọi là Mode of Use hay Mode Of Operation. Các chế độ luồng. OFB). Các chế độ khối (Block Mode): xử lý các thông điệp theo các khối (ECB. dw[round*Nb. Các chế độ khối thƣờng đƣợc sử dụng để mã hóa các dữ liệu mà ch úng ta biết trƣơc về vi ̣ trí . (round+1)*Nb-1]) end for InvSubBytes(state) InvShiftRows(state) AddRoundKey(state.106-1983 dành cho DES).

Do trong ECB các khối bản rõ đƣợc mã hóa độc lập nên làm nảy sinh một số nhƣợc điể m sau: các lặp lại của thông điệp có thể đƣợc thể hiện trên bản mã. Vì thế các cơ chế sử dụng mã khối được trình bày trong phần này là riêng cho DES nhưng cũng được áp dụng tương tự cho các hệ mã khố i khác. nghĩa là nếu có các bản rõ giống nhau thì tƣơng ứng các bản mã giống nhau . Tuy nhiên để sử dụng chúng trong thực tế.Chƣơng III: Các hệ mã khóa bí mật gƣi đi ) trong khi các chế độ luồ ng thƣơng đƣợ c sƣ dụng cho việc mã hóa các dƣ̃ liệu ̉ ̉ ̀ không đƣợ c biế t trƣơc về độ lơn c ũng nhƣ vị trí chẳng hạn nhƣ các tín hiệu gửi về từ vệ ́ ́ tinh hoặc các tin hiệu do một bộ cảm biế n đọc tƣ bên ngoài vào. có thể chúng là một khối dữ liệu sẵn sàng ngay cho việc mã hóa(khi đó việc sử dụng mã hóa theo cơ chế khối là phù hợp).14: Cơ chế ECB ECB là chế độ sử dụng đơn giản và dễ cài đặt nhất. ́ ̀ Chú ý: DES.6. Bên cạnh đó việc mã hóa các khối thông điệp là độc lập làm suy yếu DES. đƣợc sử dụng khi chỉ một khối đơn thông tin cần đƣợc gửi đi (chẳng hạn nhƣ một khóa session đƣợc mã hóa bằng cách dùng một khóa chính). Cơ chế bảng tra mã điê ̣n tƣ ECB (Electronic CodeBook Book) ̉ Thông điệp cầ n mã hóa đƣợc chia thành các khối độc lập để mã hóa. 3DES. hoặc có thể chỉ được một vài bit. byte tại một thời điểm (khi đó sử dụng chế độ dòng là phù hợp). 69 . 2. bên nhận sẽ không phát hiện ra sƣ̣ giả mạo này . điề u này đặc biệt thể hiện rõ với các dữ liệu lặp lại nhiều chẳng hạn nhƣ các dữ liệu hình ảnh. Quá trình giải mã tiến hành ngƣợ c lại: Pi = DES-1K(Ci). Hơn nƣ̃a các bản mã có thể bị giả mạo bằng cách thêm một số khối bản mã giả vào kết quả mã hóa. chúng ta thường cần làm việc với các khối lượng dữ liệu không thể biết trước được. AES (hay bất kỳ một thuật toán mã hóa khối nào khác) tạo thành một khối xây dựng cơ bản.CN. P = P1P2…PN Mã hóa: Ci = DESK(Pi). mỗi khố i bản mã là kết quả của việc mã hóa riêng biệt khối bản rõ tƣơng ứng với nó và độc lập với khối khác. Trên thƣ̣ c tế ECB chỉ thực sự có ích khi gửi một khối dữ liệu nhỏ. Cách làm việc này giống nhƣ chúng ta thay thế các khối bản mã bằng các khối bản rõ tƣơng ứng nên có tên gọi là bảng tra mã điện tử.. Việc để lộ tinh lặp lại ́ của bản rõ có thể dẫn tới các tấn công theo phƣơng pháp phân tích thống kê . kế t quả bản mã là C = C1C2.2. P P1 K P2 Mã hóa Pn K C1 C2 Giải mã C Cn E C1 E C2 E Cn D P1 D P2 D Pn C P Hình 3.

. WEB) Trong CBC mỗi khối bản mã là phụ thuộc vào tất cả các khối thông điệp đứng trƣớc đó nên việc sai lệch một khố i bản rõ hoặc bản mã nào đó cũng làm sai lệch kế t quả mã hóa và giải mã tƣơng ứng . vì thế có thể IV là một giá trị cố định hoặc đƣợc gửi đi sau khi đã mã hóa bằng ECB.Cipher Block Chaining Để vƣợt qua các vấn đề về sự lặp lại và yêu cầu độc lập trong ECB .6. P = P1P2.4. Chính vì dữ liệu đƣợc cung cấp rời rạc nên tại một thời điểm chúng ta không thể biế t trƣơc độ lơn và vị trí dữ liệu sẽ đƣợc mã hóa .15: Chế độ CBC x2 Chế độ CBC phù hợp với các yêu cầu cần gửi các lƣợng lớn dữ liệu một cách an toàn (chẳng hạn nhƣ FTP. Do đó đố i vơi các chế độ luồ ng ́ ́ ́ 70 . chúng ta cần một vài cách để làm cho bản mã phụ thuộc vào tất cả các khối trƣớc nó . P = P1P2.. x1 x2 y1 y2 IV=y0 IV=y0 dk dk ek ek y1 Mã hoá y2 x1 Giải mã Hình 3. thƣơng thì cả hai bên nhận và gửi đều biết (chẳ ng hạn nhƣ bằ ng 0) ̀ hoặc sẽ đƣợ c khơi tạo bằ ng các giá tri ̣ mơi và gƣi cho bên nhận trƣơc khi mã hóa .. Cũng giống nhƣ cơ chế EBC trong cơ chế CBC bản rõ sẽ đƣợc chia thành các khối nhƣng sẽ đƣợc liên kết với nhau trong quá trình mã hóa để tạo thành bản rõ . C = C1C2. EMAIL.Chƣơng III: Các hệ mã khóa bí mật 2. Cơ chế mã móc xích CBC . Chế độ mã phản hồi CFB (Cipher Feedback) và chế độ mã phản hồi đầu ra OFB (Output Feedback) Các chế độ luồng CFB và OFB đƣợc sử dụng để mã hóa các dƣ̃ liệu đƣợ c cung cấ p rơi rạc .CN Giải mã: Pi = DES-1K(Ci)  Ci-1. Đó này chính là điều mà CBC cung cấp cho chúng ta bằng cách kết hợp khối bản rõ trƣớc với khối thông điệp hiện tại trƣớc khi mã hóa.PN Mã hóa: Ci = DESK (Pi  Ci-1). Tuy ̉ ̉ ́ ́ nhiên nếu IV bị tiết lộ kẻ tấn công có thể làm thay đổi các bit ở khối đầu tiên.PN. Khó khăn nhất trong việc sử dụng CBC chính là quản lý các giá trị IV sử dụng .3. 2. Chính vì các khối bản mã đƣợc móc xích với bản rõ và vì thế chế độ này có tên là CBC CBC sử dụng một vector khởi tạo IV (Initial Vector) để bắt đầu: C0 = IV.6. thƣơng là các tin hiệu nhận đƣợ c tƣ vệ tinh hoặc do một bộ cảm biế n nào đó ̀ ̀ ́ ̀ truyề n về .

Trong một số tình huống. Quá trình xử lý tiếp tục cho tới khi tất cả đơn vị bản rõ đều đƣợc mã hoá. OFB thực sự là một hệ mã đồng bộ: dòng khoá đƣợc thành lập bởi việc tạo lập các vector khởi tạo 64 bit (vector IV). còn lấy phía trƣớc thì là OFB). K-bit bên trái của đầu vào hàm mã hoá đƣợc XOR với đơn vị đầu của block bản rõ tiếp theo để đƣa ra một đơn vị bản mã truyền đi và đơn vị này đƣợc đƣa lại vào k-bit bên phải của thanh ghi dịch. ̀ Trong chế độ OFB và CFB dòng khoá đƣợc tạo ra sẽ đƣợc cộng modulo 2 với bản rõ.Chƣơng III: Các hệ mã khóa bí mật input cho thuật toán mã hóa đƣợ c xem là một luồ ng các bit của bản rõ đƣợ c lầ n lƣợ t theo thơi gian. Tức là zi = ek(yi-1) với i≥1 và yi = xi  zi với i≥1. sự thay đổi của một khối bản rõ xi 64 bit sẽ làm thay đổi khối bản mã yi tƣơng ứng. Nhìn chung . Trong chế độ CFB.. Các chế độ phản hồi 1-bit và 8-bit thƣờng đƣợc sử dụng cho phép mã hoá đồng thời 1 bit (hay byte) dữ liệu. 71 . Ở đây ta đã mô tả chế độ phản hồi 64 bit. Điểm khác nhau giữa CFB và OFB là k-bit hồi tiếp cho bộ ghi dịch đƣợc lấy từ trƣớc hay sau bộ XOR (nếu lấy sau bộ XOR thì dữ liệu đã mã hoá ứng với CFB. nhƣng các khối bản khác thì không bị ảnh hƣởng.. ta bắt đầu với y0 = IV (vector khởi tạo 64 bit) và tạo phần tử zi của dòng khoá bằng cách mã hoá khối bản mã trƣớc đó. bốn chế độ của DES đều có những ƣu nhƣợc điểm riêng.. Ở chế độ ECB và OFB. zn theo quy tắc zi = ek(zi-1) với i ≥ 1. Kỹ thuật cơ bản đƣợc sử dụng ở đây là một thanh ghi dịch 64 bit và mỗi bƣớc dịch đƣợc k-bit làm đầu vào cho mã hoá.16: Chế độ CFB x2 Cũng có một vài dạng khác của OFB và CFB đƣợc gọi là chế độ phản hồi k-bit (1< k < 64). Việc sử dụng CFB đƣợc mô tả bằng sơ đồ sau (ek trong trƣờng hợp này đƣợc sử dụng cho cả mã hoá và giải mã): x1 Mã hoá IV=y0 ek ek x2 y1 y2 y1 Giải mã IV=y0 ek ek y2 x1 Hình 3. Ta xác định z0 = IV và tính dòng khoá z1z2 . xn sẽ đƣợc mã hoá bằng cách tính yi = xi  zi với i ≥ 1.. Sau đó dãy bản rõ x1x2 .

Bài tập Bài tập 3.1: Hãy giải mã bản mã đƣợc mã hóa bằng hệ mã Caesar sau (sƣ dụng bảng ̉ chƣ̃ cái tiế ng Anh): WKXPEVXS.. anh ta sẽ khôi phục lại y1.yn với khoá K. rồi mã hoá dãy x1x2 .. R sẽ giải mã bằng khoá K2 và sau đó kiểm tra xem xn+1 có phải là MAC (bằng khoá K1) của dãy bản rõ x1x2 . Ta bắt đầu bằng vector khởi tạo IV chứa toàn số 0.” Trích trong tác phẩm ”The Gloria Scott”. tín hiệu ít nhiễu. Khi ngƣời nhận R (receiver) thu đƣợc x1x2 . xn.ynyn+1. Nếu một ngƣời thứ ba E (enemy) thu chặn đƣợc bản rõ x1x2 . MAC đƣợc gắn thêm vào các khối bản rõ để thuyết phục R (receiver) rằng đây chính là dãy bản rõ đƣợc gửi từ S (sender) mà không phải một ai khác giả mạo. xn rõ ràng E không thể tạo ra MAC hợp lệ nếu không biết khoá bí mật K mà S và R đang dùng. xnxn+1 bằng khoá K2 để tạo dãy bản mã y1y2 ... xn. we believe. y2. ở chế độ CBC và CFB.. Đặc biệt hơn... Điều đó đƣợc thực hiện nhƣ sau: trƣớc tiên S dùng khoá K1 để tạo MAC cho dãy bản rõ x1x2. các chế độ này ̀ ̀ dùng để tạo mã xác thực bản tin (MAC – Message Authentication Code). Khi R nhận đƣợc y1y2.. yn bằng khoá bí mật K và xác minh liệu yn có giống MAC của mình thu đƣợc hay không. Cuối cùng ta xác định MAC là yn... Ví dụ nhƣ chế độ OFB thƣờng đƣợc dùng để mã hoá trong việc truyền tín hiệu qua vệ tinh. xn cùng với MAC.Chƣơng III: Các hệ mã khóa bí mật đây là một tính chất đáng mong muốn. ynyn+1. Sau đó dùng chế độ CBC để tạo các khối bản mã y1y2.. Bài tập 3. Hơn nữa. nếu một khối bản rõ xi bị thay đổi thì yi và các khối tiếp theo sẽ bị ảnh hƣởng. Bài tập 3. Head keeper Hudson. nếu E thay đổi ít nhiều nội dung thì chắc chắn E không thể thay đổi đƣợc MAC để đƣợc R chấp nhận.... has been now told to receive all orders for fly paper and for preservations of your hen-pheasant's life. xn hay không.3: Sƣ dụng bảng sau (hệ mã Freemason) để giải mã thông điệp: ̉ • • Bảng mã các ký tự: A B C D E F G H I 72 .2 (khó): Thông điệp bí mật ẩ n sau đoạn văn bản tiế ng Anh sau là gì: “The supply of game for London is going steadily up.. sau đó S xác định xn+1 là MAC.. Cũng vì lý do đó nên CFB thƣơng đƣợ c dùng để mã hóa ̀ trong các trƣơng hợ p mà đƣơng truyề n tố t. Nhƣ vậy MAC đảm bảo tính xác thực của bản tin.. Ta sẽ mô tả cách sử dụng chế độ CBC để tạo MAC. Mặt khác. 3.. Thông thƣờng ta muốn kết hợp cả tính xác thực lẫn độ bảo mật. Nhƣ vậy ở chế độ CBC và CFB có thể đƣợc sử dụng rất hiệu quả trong mục đích xác thực. Ngƣời gửi S (sender) sẽ phát đi khối bản rõ x1x2 .

Certainly this sort of change. b) Nếu nhƣ khóa giải mã là K-1 = (16. would bring chaos. b) trong đó a. Khi đó khóa là các cặp (a. a) Hãy xác định số khóa có thể đƣợc sử dụng cho hệ mã này. Hàm mã hóa EK (x) = (a * x + b) mod 55 và hàm giải mã DK (x) = a-1 * (x – b) mod 55. a) Hãy xác định số khóa có thể đƣợc sử dụng cho hệ mã này.4: Hãy tìm thông điệp bí mật ẩ n giấ u trong đoạn văn bản sau: Dear George. Hàm mã hóa EK (x) = (a * x + b) mod 99 và hàm giải mã DK (x) = a-1 * (x – b) mod 99. Hàm mã hóa EK (x) = (a * x + b) mod 39 và hàm giải mã DK (x) = a-1 * (x – b) mod 39. if implemented immediately. Admin has improved here. b  Z39 với (a.7: Cho hệ mã Affine đƣợc cài đặt trên Z55. a) Hãy xác định số khóa có thể đƣợc sử dụng cho hệ mã này. b) Nếu nhƣ khóa giải mã là K-1 = (23. Many thanks for your letter and for the Summer examination package. Bài tập 3. 55) = 1. All Entry Forms and Fees Forms should be ready for final dispatch to the Syndicate by Friday 20th or at the very least. Khi đó khóa là các cặp (a. b) trong đó a. 73 . I‟m told. Bài tập 3.6: Cho hệ mã Affine đƣợc cài đặt trên Z39. hãy thực hiện mã hóa xâu m = “ATTACK”.5: Cho hệ mã Affine đƣợc cài đặt trên Z99. b  Z55 với (a. hãy thực hiện mã hóa xâu m = “DANGER”. 7). 99) = 1. just give us all two or three more years and we‟ll really show you! Please don‟t let these wretched 16+ proposals destroy your basic O and A pattern. 3rd March Greetings to all at Oxford.Chƣơng III: Các hệ mã khóa bí mật J K M L N• O• P• Q• R• S• T• U• V• W• X• Z• Y• Gợ i ý: đây là một hệ mã thay thế tƣợ ng hình. b) trong đó a. 7). by the 21st. b  Z99 với (a. 39) = 1. Bài tập 3. though there‟s room for improvement still. Bài tập 3. Khi đó khóa là các cặp (a.

hãy xác định khóa giải mã. 7). Bài tập 3.9: Giả sử hệ mã Affine đƣợc cài đặt trên Z126. Bài tập 3.Chƣơng III: Các hệ mã khóa bí mật b) Khóa giải mã là K-1 = (13. b) Cho A =  5 3  có thể đƣợc sử dụng làm khóa cho hệ mã trên không giải 13 17 12 5  hãy thực hiện mã hóa và giải mã với xâu S = “HARD”. Bài tâ ̣p 3. Hãy tìm tất cả các 11 a  khóa có thể sử dụng của hệ mã trên. hãy xác định khóa giải mã. K = “CIPHER”. a) Hãy thực hiện mã hóa xâu P = “THIS IS MY TEST“.12: Cho hệ mã Hill có M = 2.8: Giả sử hệ mã Affine đƣợc cài đặt trên Z99. b) Giả sử khóa mã hóa là (16. 74 . b) Giả sử ngƣời ta sử dụng hệ mã trên để mã hóa bản rõ P = “MARS” và thu đƣợc bản mã là “YARH”. a) Ma trận A =  thích. a) Hãy tìm khóa mã hóa đã dùng của hệ mã trên. a) Ma trận A =   5 3  đƣợc sử dụng làm khóa cho hệ mã trên. Hãy thực hiện giải mã với bản mã là C = “MCDZUZ” và đƣa ra bản rõ. b) Dùng khóa tìm đƣợc ở phần trên hãy giải mã bản mã C = “KLGZWT OMBRVW”. b) Giả sử khóa mã hóa là (23. Bài tâ ̣p 3. Mã hóa xâu P = “THIS IS MY TEST“ ngƣời ta thu đƣợc bản mã là “LLKJML ECVVWM”.11: Cho hệ mã Hill có M = 2. a) Hãy xác định só khóa có thể có của hệ mã. Hãy tìm tất cả 7 a các khóa có thể sử dụng của hệ mã trên.10: Cho hệ mã Hill có M = 2. 7). Hãy thực hiện giải mã với bản mã là C = “MANNTF” và đƣa ra bản rõ.13: Cho hệ mã Vigenere có M = 6. b) Giả sử ngƣời ta sử dụng hệ mã trên để mã hóa bản rõ P = “EASY” và thu đƣợc bản mã là “UMQA”. a) Ma trận A =  15 13  đƣợc sử dụng làm khóa cho hệ mã trên.  3 7 Bài tập 3. hãy xác định khóa mã hóa. a) Hãy xác định só khóa có thể có của hệ mã.14: Cho hệ mã Vigenere có M = 6. Bài tập 3. 17). b) Hãy thực hiện giải mã xâu M = “EICJIC RTPUEI GBGLEK CBDUGV”. Bài tập 3.

8 % 4.3 % 9. Mã hóa xâu P = “SPIRIT“ ngƣời ta thu đƣợc bản mã là “OXHRZW”. bỏ qua các dấu câu. Bài tập 3.2 % 1.5 % 2.7 % 7.4 % 6. Giải mã xâu C = “RANJLV” ngƣời ta thu đƣợc bản rõ là “CIPHER”.Chƣơng III: Các hệ mã khóa bí mật Bài tập 3.16: Cho hệ mã Vigenere có M = 6.1 % Bài tâ ̣p 3. a) Tìm khóa đã sử dụng của hệ mã trên.0 % 2.1 % 7. Hãy sử dụng bảng thống kê tần suất xuất hiện của các chữ cái trong tiếng Anh để giải mã bản mã đã cho.2 % 2. Bài tập 3.0 % 2.7 % 2.1 % 2.3 % 0.0 % Chƣ̃ cái S T U V W X Y Z Tầ n suấ t 6. b) Dùng khóa tìm đƣợc ở phần trên hãy giải mã bản mã C = “BQETYH HMBEEW”. a) Hãy tìm khóa mã hóa đã dùng của hệ mã trên.0 % Chƣ̃ cái J K L M N O P Q R Tầ n suấ t 0.0 % 0.1 % 6. b) Dùng khóa tìm đƣợc ở phần trên hãy hãy giải mã xâu M = “PLDKCI DUJQJO“.0 % 6.15: Cho hệ mã Vigenere có M = 6.8 % 1.9 % 0.5 % 1.18: Cho bản mã sau: EYMHP GZYHH PTIAP QIHPH YIRMQ EYPXQ FIQHI AHYIW ISITK MHXQZ PNMQQ XFIKJ MKXIJ RIKIU XSSXQ ZEPGS ATIHP PSXZY H 75 .1 % 2.17: Phƣơng pháp mã hóa thay thế đơn giản Đoạn văn bản sau đƣợ c mã hóa bằ ng cách sƣ dụng một phƣơng pháp mã hóa thay ̉ thế đơn giản. Bản rõ là một phần của một văn bản tiếng Anh viết hoa. ODQSOCL OW GIU BOEE QRROHOCS QV GIUR KIA QF Q DQCQSLR WIR ICL IW CQFQF EIYQE YIDJUVLR FGFVLDF GIU SLV OCVI GIUR IWWOYL IC VXQV DICPQG DIRCOCS VI WOCP VXL JXICLF ROCSOCS LHLRG YQEELR OF Q POFVRQUSXV YICWUFLP CQFQ BIRMLR QCP LHLRG YQEELR QFFURLF GIU VXQV XOF IR XLR WOEL IR QYYIUCVOCS RLYIRP IR RLFLQRYX JRIKLYV LHLRG ICL IW BXOYX OF DOFFOCS WRID VXL YIDJUVLR FGFVLD OF QAFIEUVLEG HOVQE Bảng thống kê tần suất xuất hiện của các chƣ̃ cái trong tiế ng Anh: Chƣ̃ cái A B C D E F G H I Tầ n suấ t 8.3 % 12.2 % 08 % 4.

IGDLK MJSGC FMGEP PLYRC IGDLA TYBMR KDYVY XJGMR TDSVK ZCCWG ZRRIP UERXY EEYHE UTOWS ERYWC QRRIP UERXJ QREWQ FPSZC ALDSD ULSWF FFOAM DIGIY DCSRR AZSRB GNDLC ZYDMM ZQGSS ZBCXM OYBID APRMK IFYWF MJVLY HCLSP ZCDLC NYDXJ QYXHD APRMQ IGNSU MLNLG EMBTF MLDSB AYVPU TGMLK MWKGF UCFIY ZBMLC DGCLY VSCXY ZBVEQ FGXKN QYMIY YMXKM GPCIJ HCCEL PUSXF MJVRY FGYRQ Sƣ dụng một trong các ngôn ngƣ̃ lập trinh C.25: Viế t chƣơng trinh cài đặt thuật toán mã hóa và giải mã của hệ mã Hill.28: Viế t chƣơng trình mã hóa và giải mã file theo hệ mã AES vơi các cơ chế mã ́ hóa ECB.22: Viế t chƣơng trình cài đặt thuật toán mã hóa và giải mã của hệ mã Ceasar. Bài tập 3. 76 . b) Giả sử bản mã trên nhận đƣợc bằng cách sử dụng phƣơng pháp mã hóa đổi chỗ hoặc thay thế đơn âm. ̣ ́ Bài tập 3. hãy thực hiện các yêu cầu sau: ̉ a) Hãy đƣa ra bảng phân phối tần suất của các chữ cái trong bản mã trên.26: Viế t chƣơng trinh cài đặt thuật toán mã hóa và giải mã của hệ mã Vigenere. ̉ Bài tập 3. CBC.19 (khó): Hãy giải mã bản mã đƣợc mã hóa bằng hệ mã Vigenere sau . CBC.23: Viế t chƣơng trinh cài đặt thuật toán mã hóa và giải mã của hệ mã Affine. hãy dựa vào bảng phân phố i tầ n suấ t ơ phầ n a để xác đinh ̣ ̉ xem khả năng nào là cao hơn (hệ mã đổ i chỗ hay thay thế đơn âm)? c) Hãy xác định bản rõ nếu nhƣ phần bắt đầu của bản rõ là “What ought …”. Java hoặc C# để làm các bài tập sau: ̉ ̀ Bài tập 3. ̀ Bài tập 3. mã DES vơi các cơ chế ́ Bài tập 3. d) Giải thích cách thành lập khóa của hệ mã.24: Viế t chƣơng trình tính đinh thƣc của ma trận vuông cấ p N (N < 20).20: Viế t chƣơng trình đếm tần số xuất hiện của các chữ cái tiếng Anh trong một văn bản tiế ng Anh ơ dạng file text. ̀ Bài tập 3. Bài tập 3. ̀ Bài tập 3. C++.27: Viế t chƣơng trình mã hóa và giải mã file theo hệ mã hóa ECB.Chƣơng III: Các hệ mã khóa bí mật Biế t rằ ng bảng chƣ̃ cái sƣ dụng là tiế ng Anh. ̉ Bài tập 3.21: Viế t chƣơng trình đếm tần số xuất hiện của các chữ cái tiếng Việt trong một văn bản tiế ng Việt ơ dạng file RTF. xác định độ khóa sử dụng biết rằng bản rõ gồm các chữ cái trong bảng mã tiếng Anh.

̀ ́ Một hệ mã mật khóa bí mật là một hệ mã mật mà tất cả mọi ngƣời đều biết hàm mã hóa và khóa mã hóa nhƣng không tồn tại một thuật toán thời gian đa thức để có thể tính đƣợ c khóa giải mã tƣ các thông tin đó. hay các hệ mã truyề n thố ng (conventional). thỏa thuận khóa cũng đƣợ c xây dƣ̣ ng dƣ̣ a trên các hệ mã này. ̉  Vào năm 1975 Diffie và Hellman trong một công trinh của minh (một bài báo) đã đề ̀ ̀ xuấ t ra các ý tƣơng cho phép xây dƣ̣ ng lên các hệ mã hoạt động theo các nguyên tắ c ̉ mơi gắ n liề n vơi các bên truyề n tin chƣ không gắ n vơi các cặp truyề n tin. khóa đối xứng. Khóa bí mật là khóa dùng để giải mã và đƣợc giữ bí mật (KS).Việc sinh KP. phƣc tạp và ̉ ̀ ́ không an toàn. ̀ 1. Các yêu cầu của loại hệ mã này: . B sẽ sƣ dụng khóa bí mật của mình để giải mã và đọc tin: ̉ ́ 77 . mọi ngƣơi đề u có thể gƣi email tơi một đia chỉ email nào đó .Nế u biế t KP thì việc dò tìm KS là khó .Chƣơng IV: Các hệ mã mật khóa công khai CHƢƠNG IV: CÁC HỆ MÃ MẬT KHÓA CÔNG KHAI Trong các hệ mã mật khóa bí mật nế u chúng ta biế t khóa và hàm mã hóa chúng ta có thể tìm đƣợc khóa và hàm giải mã một cách nhanh chóng (thơi gian đa thƣc). chẳ ng hạn vơi n ̉ ̀ ́ ngƣơi sƣ dụng thì số khóa sẽ là n *(n-1)/2 do đó rấ t khó quản lý . M) và KS thì việc tìm bản rõ cũng là dễ . một khóa gọi là khóa bí mật và một khóa đƣợ c gọi là khóa công khai. Vơi các hệ mã khóa công khai việc phân phố i khóa sẽ trơ nên dễ dàng hơn ̉ ́ qua các kênh cung cấ p khóa công cộng . M) là dễ dàng . Dƣ̣ a trên các hệ mã này không thể xây dƣ̣ ng các khái niệm và dich vụ nhƣ chƣ̃ ̣ ký điện tử. ́ ́ ́ ́ Nguyên tắ c hoạt động của các hệ mã là mỗi bên tham gia truyề n tin sẽ có 2 khóa. dịch vụ xác thực hóa ngƣời dùng cho các ứng dụng thƣơng mại điện tƣ. còn những ngƣời khác thì không . Các hệ mã này có các điểm yếu sau đây:  Nế u số lƣợ ng ngƣơi sƣ dụng lớn thì số khóa sẽ tăng rấ t nhanh. KS phải dễ dàng . Khái niệm hệ mã mật khóa công khai Các hệ mã đƣợ c trình bày trong các chƣơng trƣơc đƣợ c gọi là các hệ mã khóa bí ́ mật. khóa công khai là khóa dùng để sinh mã đƣợc công khai hóa để bấ t cƣ ai cũng có thể sƣ dụng khóa này gƣi tin cho ngƣơi chủ của hệ ̉ ̉ ́ ̀ mã (KP).Nế u có C = E(KP. Ngày nay chúng ta có thể thấy rất rõ nguyên tắc này trong việc gửi email . số lƣợ ng khóa hệ thố ng quản lý cũng sẽ it hơn ́ (là n khóa cho n ngƣời dùng).Việc tính E(KP. Các dịch vụ mới nhƣ chữ ký điện tử .Việc khôi phục bản rõ tƣ bản mã là rấ t khó ̀ Khi A muố n truyề n tin cho B . A sẽ sƣ dụng khóa K P của B để mã hóa tin tức và ̉ truyề n bản mã tơi cho B. nhƣng chỉ có ngƣơi chủ sơ hƣ̃u ̣ ̉ ̉ ̀ ́ ̀ của địa chỉ email đó mới có thể đọc đƣợc nội dung c ủa bức thƣ .

Chƣơng IV: Các hệ mã mật khóa công khai

Plaintext A

Khóa công khai (KP) Mã hóa

Khóa bí mật (KS) Giải mã

Plaintext B

Ciphertext
Hình 4.1: Mô hình sƣ dụng 1 của các hệ mã khóa công khai PKC ̉ Ciphertext = E(KP,Plaintext) ,Plantext = D(KS, E(KP,Plaintext)) (1)

Plaintext A

Khóa bí mật (KS) Mã hóa

Khóa công khai (KP) Giải mã

Plaintext B

Signed Message
Hình 4.2: Mô hình sƣ dụng 2 của các hệ mã khóa công khai PKC ̉ Ciphertext = D(KS, Plaintext), Plaintext = E(KP, D(KS, Plaintext)) (2) Mô hình (2) đƣợ c sƣ dụng c ho các hệ chƣ̃ ký điện tƣ còn mô hinh (1) đƣợ c sƣ ̉ ̉ ̉ ̀ dụng cho các hệ mã mật . Các hệ mã này đƣợc gọi là các hệ mã khóa công khai PKC (Public Key Cryptosystems) hay các hệ mã bấ t đố i xƣng (Asymmetric Encryption ́ Scheme). 2. Nguyên tắ c cấ u tạo của các hê ̣ mã mâ ̣t khóa công khai Các hệ mã khóa công khai đƣợc xây dựng dựa trên các hàm đƣợc gọi là các hàm 1 phía hay hàm 1 chiề u (one–way functions). Hàm một chiều f : X  Y làm một hàm mà nế u biế t x  X ta có thể dễ dàng tinh ́ đƣợ c y = f(x). Nhƣng vơi y bấ t kỳ  Y việc tìm x  X sao cho y = f(x) là khó. Có nghĩa là ́ việc tim hàm ngƣợ c f-1 là rất khó. ̀ Ví dụ nếu chúng ta có các số nguyên tố P 1, P2, ..., Pn thì việc tính N = P1 * P2 * ... * Pn là dễ nhƣng nếu có N thì việc phân tích ngƣợc lại là một bài toán khó với N lớn. Để thuận tiện các hàm một phía đƣợ c sƣ dụng trong các hệ mã PKC thƣơng đƣợ c ̉ ̀ trang bi ̣ các cƣa bẫy (trapdoor) giúp cho việc tìm x thỏa mã y = f(x) là dễ dàng nếu chúng ̉ ta biế t đƣợ c cƣa bẫy này. ̉ Hàm của bẫy (trapdoor function): là một hàm một chiều trong đó việc tính f -1 là rất nhanh khi chúng ta biế t đƣợ c cƣa bẫy của hàm . Ví dụ việc tìm nghiệm của bài toán xế p ̉ balô 0/1 trong hệ mã xế p balô Knapsack mà chúng ta sẽ học trong phầ n tiế p theo là một hàm một phía (việc mã hóa rấ t nhanh và dễ dàng nhƣng tim vectơ nghiệm tƣơng ƣng là ̀ ́ khó) nhƣng nế u ta biế t cƣa b ẫy (Vectơ xế p balô siêu tăng A‟ ) thì việc giải bài toán lại rất ̉ dễ dàng. 3. Một số hê ̣ mã khóa công khai 3.1. Hê ̣ mã knapsack Bài toán xếp ba lô tổng quát:

78

Chƣơng IV: Các hệ mã mật khóa công khai Cho M, N và A1, A2, ...., AN là các số nguyên dƣơng tìm các số xi không âm sao cho:

M=

x *A
i 1 i

N

i

Vecto A = (A1, A2, ..., AN) đƣợ c gọi là vecto xế p balô còn vectơ X = (x1, x2, …, xN) là vectơ nghiệm. Một trƣơng hợ p riêng đáng quan tâm của bài toán xế p ba lô tổ ng quát là trƣơng ̀ ̀ hợ p mà xi  {0, 1}. Khi đó ta có bài toán xế p ba lô 0, 1. Vecto xế p ba lô siêu tăng : Trong trƣơng hợ p vecto (A1, A2, ..., AN) đƣợ c sắ p lại ̀ thành (A‟1, A‟2, ..., A‟N) sao cho:

 i ta có:

A
j i

' j < A‟i thì vecto (A1, A2, ..., AN) đƣợ c gọi là vecto xế p balo siêu tăng.

Khi (A1, A2, ..., AN) là một vecto xếp balo siêu tăng ta có ngay tính chấ t: M >= A‟i  i. Do đó việc giải bài toán xế p ba lô 0/1 trơ nên dễ dàng hơn rấ t nhiề u. ̉ Hệ mã knapsack do Merkle và Hellman đƣa ra vào năm 1978. Cách xây dựng: 1. Chọn 1 vecto siêu tăng A‟ = (a‟1, a‟2, ..., a‟N), chọn 1 số M > 2 * a‟N, chọn ngẫu nhiên 1 số u < M và (u, M) = 1 2. 3. 4. Xây dƣ̣ ng Vecto A = (a1, a2, ..., aN) trong đó ai = (a‟i * u) mod M Khóa: KP = (A, M), KS = (u, u-1) Không gian các bản rõ là không gian mọi dãy N bit P = (x1, x2, ..., xn). Mã hóa: C = (

 a * x )mod M
i 1 i i

N

Giải mã: tính C ‟ = C * u-1 mod M sau đó giải bài toán xế p ba lô tìm đƣợc P = (x1, x2, ..., xn). 15. a) Hãy tìm các khóa của hệ mã trên b) Mã hóa và giải mã bản mã tƣơng ứng của bản rõ M = 01001. 3.2. Hê ̣ mã RSA

0/1 vơi A ‟, C‟ tƣ đó ́ ̀

Ví dụ 1: Cho hệ mã Knapsack có A‟ = (2, 3, 6, 12, 25), N = 5, M = 53, u = 46, u-1 =

Hệ mã RSA đƣợ c đặt tên dƣ̣ a theo các chƣ̃ cái đầ u của 3 tác giả của hệ mã là Rivest, Shamir và Adleman. Đây là thuật toán mã hóa nổi tiếng nhất và cũng là thuật toán đƣợc ứng dụng thực tế nhất. Để cài đặt RSA ban đầu mỗi ngƣời dùng sinh khóa công khai và khóa bí mật của mình bằng cách:

79

Chƣơng IV: Các hệ mã mật khóa công khai       chọn hai số nguyên tố lớn ngẫu nhiên (cỡ gần 100 chữ số) khác nhau p và q tính N = p*q chọn một số e nhỏ hơn N và (e, (N)) = 1, e đƣợ c gọi là số mũ lập mã tìm phần tử ngƣợc của e trên vành module (N), d là số mũ giải mã khóa công khai là KP = (e, N) khóa bí mật là KS = K-1P = (d, p, q)

Việc thiết lập khóa này đƣợc thực hiện 1 lần khi một ngƣời dùng thiết lập (thay thế) khóa công khai của họ. Mũ e thƣờng là khá nhỏ (đễ mã hóa nhanh), và phải là nguyên tố cùng nhau với (N). Các giá trị thƣờng đƣợc chọn cho e là 3 hoặc 216 – 1 = 65535. Tuy nhiên khi e nhỏ thì d sẽ tƣơng đố i lơn . Khoá bí mật là (d, p, q). Các số p và q thƣờng có ́ giá trị xấp xỉ nhau nhƣng không đƣợc bằng nhau . Chú ý là việc để lộ một trong các thành phần trên sẽ làm cho hệ mã hóa trở thành không an toàn. Sử dụng RSA   để mã hóa một thông điệp M: C = Me (mod N) (0<= M < N) giải mã: M = Cd (mod N)

Thuật toán mã hóa RSA làm việc đƣợc bởi vì nó dựa trên cơ sở toán học là sự tổng quát định lý Ferma nhỏ của Ơclit: X(N) = 1 (mod N). Trong thuật toán RSA chúng ta chọn e và d là nghịch đảo của nhau trên vành Z(N) với e đƣợc chọn trƣớc. Do đó chúng ta sẽ có e.d  1 mod (N), suy ra: M = Cd = M e.d = M1+q.(N) = M . (M(N))q = M mod N Công thức này đảm bảo việc giải mã sẽ cho kết quả đúng là bản rõ ban đầu (chú ý là điều này chỉ đúng khi p khác q). Ví dụ 1: Cho hệ mã RSA có N = p*q = 11 * 47 = 517, e = 3.   Hãy tìm các khóa công khai và bí mật của hệ mã trên Mã hóa bản rõ M = 26.

Đầu tiên ta tính đƣợc (N) = 460 = 10 * 46, do (3,460) = 1 nên áp dụng thuật toán Ơclit mở rộng ta tìm đƣợc d = 307. Vậy khóa công khai của hệ mã KP = (e, N) = (3, 517), khóa bí mật là KS = (d, p, q) = (307, 11, 47). Mã hóa M = 26 ta có C = Me mod N = 263 mod 517 = 515. Độ an toàn của RSA Độ an toàn của RSA phụ thuộc vào độ khó của việc tính (N) và điều này đòi hỏi chúng ta cần phân tích N ra thừa số nguyên tố. Thuật toán phân tích số nguyên tố hiệu quả nhất hiện nay là Brent-Pollard, chúng ta hãy xem xét bảng thống kê sau để thấy đƣợc tốc độ hoạt động của nó: Số chữ số trong hệ thập phân của N Số các thao tác Bit để phân tích N

80

1: Tố c độ của thuật toán Brent-Pollard Các nghiên cứu về vấn đề phân tích các số nguyên lớn hiện nay tiến triển rất chậm. các tiến bộ lớn nhất cũng chỉ là các cải tiến về thuật toán và có thể nói rằng trừ khi có các đột phá trong việc phân tích các số 1024 bit.20e+03 3.69e+13 2.36e+19 Bảng 4. Để tăng tốc cho RSA chúng ta có thể sử dụng một số phƣơng pháp khác chẳng hạn nhƣ cải tiến các phép tính toán nhân hai số lớn hoặc tăng tốc việc tìm bản mã.92e+16 1. bản rõ.97e+12 7. Trên thực tế để cài đặt RSA cần phải thực hiện các thao tác modulo với các số 300 chữ số (hay 1024 bit) mà hiện nay các máy tính mới chỉ thao tác với các số nguyên 64 bit. điều này dẫn đến nhu cầu cần các thƣ viện số học nhân chính xác để làm việc với các số nguyên lớn này. sử dụng các khối này nhƣ các hệ số của một đa thức. và lý thuyết chặp có thể đƣợc sử dụng để tăng tốc độ của quá trình nội suy. Đó là một hệ mã với số N có 129 chữ số.26e+18 2.11e+06 4. 81 . Ngoài ra việc sử dụng RSA cần tới các số nguyên tố lớn nên chúng ta cũng phải có một cơ sở dữ liệu các số nguyên tố. Đối với phép nhân 2 số n bit thông thƣờng chúng ta cần thực hiện O(n2) phép tính bit. Tính các đa thức này tại một số các điểm thích hợp. RSA là an toàn trong thời điểm hiện nay. thách thức này đã đƣợc phá.Chƣơng IV: Các hệ mã mật khóa công khai 20 40 60 80 100 120 140 160 180 200 7.35e+15 5.72e+10 1.63e+08 3. Nội suy các kết quả này hình thành các hệ số của đa thức tích Kết hợp các hệ số để hình thành nên tích của hai số ban đầu Biến đổi Fourier rời rạc. và nhân các kết quả thu đƣợc. Thuật toán nhân các số nguyên Schonhage – Strassen cho phép chúng ta thực hiện phép nhân 2 số với độ phức tạp là O(n log n) với các bƣớc nhƣ sau:      Chia mỗi số nguyên thành các khối. Các nhà mật mã học phát minh ra hệ mã RSA đã đƣa ra một giải thƣởng trị giá 100 $ vào năm 1977.

vơi mọi M ta đề u có M ́ e Theo tinh toán thì vơi một hệ mã RSA có N = p*q và e bấ t kỳ . Trong số các hệ mã khóa công khai thì có lẽ hệ mã RSA (cho tơi thơi điể m hiện tại ) ́ ̀ là hệ mã đƣợc sử dụng rộng rãi nhất.Chƣơng IV: Các hệ mã mật khóa công khai Một cách khác nữa để tăng tốc việc nhân các số lớn trong hệ mã RSA là sử dụng các phần cứng chuyên dụng với các thuật toán song song. khi đó vơi M = 6 ta có C = 617 mod N = 6. Ta ̉ hãy xét hệ mã RSA có N = p*q = 5*7.Tuy nhiên do khi làm việc vơi dƣ̃ liệu đầ u vào (thông ́ điệp mã hóa . Vì p và q chỉ bằng một nửa của N nên tính toán sẽ nhanh hơn nhiều. Nhƣ đã trình bày ở phần trƣớc khi mã hóa chúng ta thƣờng chọn e nhỏ để đẩy nhanh quá trình mã hóa nhƣng điều này cũng đồng nghĩa là việc giải mã sẽ chậm do số mũ lớn. hoặc có yêu cầ u bảo mật cao . theo mô ̉ ́ hình lai ghép nhƣ sau: 82 . p-1))*(1 + (e-1. Hiê ̣n tƣợng lộ bản rõ Một hiện tƣợ ng cầ n lƣu ý khi sƣ dụng các hệ mã RSA là hiện tƣợ ng lộ bản rõ . Một cải tiến đáng kể trong tốc độ giải mã RSA có thể nhận đƣợc bằng cách sử dụng định lý phần dƣ Trung Hoa làm việc với modulo p và q tƣơng ứng thay vì N. số lƣợ ng bản rõ sẽ bi ̣ ́ ́ lộ khi mã hóa sẽ là (1 + (e-1. bản rõ) lơn thì khố i lƣợ ng tính toán rấ t lơn nên trên thƣ̣ c tế ngƣơi ta hay ́ ́ ̀ dùng hệ mã này để mã hóa các dữ liệu có kích thƣớc nhỏ . chẳ ng hạn nhƣ các khóa phiên (session key) trong các phiên truyề n tin . chẳ ng hạn nhƣ AES . e = 865. ́ Tƣơng tƣ̣ vơi hệ mã RSA có N ́ mod N = M. e = 17.u mod q = 1 Việc sử dụng định lý phần dƣ Trung Hoa là một phƣơng pháp đƣợ c sử dụng rộng rãi và phổ biến để tăng tốc độ giải mã của RSA. = p*q = 109*97. q-1)). Định lý phần dƣ Trung Hoa đƣợc sử dụng trong RSA bằng cách tạo ra hai phƣơng trình từ việc giải mã M = Cd (mod N) nhƣ sau: M1 = M mod p = (C mod p)d mod (p-1) M2 = M mod q = (C mod q)d mod (q-1) Sau đó ta giải hệ: M = M1 mod p M = M2 mod q Hệ này có nghiệm duy nhất theo định lý phần dƣ Trung Hoa M = [(M2 + q – M1)u mod q] p + M1 Trong đó p. Khi đó hệ mã RSA sẽ đƣợ c sƣ dụng kế t hợ p vơi một hệ mã khố i khác .

x mod p Sau đó tính M bằng cách giải phƣơng trình sau đây: M = C2 . khóa bí mật là x. Hệ mã này đƣợc El Gamal đƣa ra vào năm 1985. Giống nhƣ sơ đồ phân phối khóa Diffie – Hellman tính an toàn của nó dựa trên tính khó giải của bài toán logarit rời rạc. C2) đi (chú ý là sau đó k sẽ bị huỷ).Chƣơng IV: Các hệ mã mật khóa công khai Khóa công khai của B Khóa phiên K C1 RSA Khóa bí mật của B C1 RSA Khóa phiên K P A . y). Để giải mã thông điệp đầu tiên ta cần tính lại khóa mã hóa thông điệp K: K = C1x mod p = ak. x = 58.3. K-1 mod p Việc giải mã bao gồm việc tính lại khóa tạm thời K (rất giống với mô hình của Diffie – Hellman đƣa ra). Nhƣợc điểm chính của nó là kích thƣớc thông tin sau khi mã hóa gửi đi sẽ tăng gấp đôi so với thông tin gốc. Ban đầu ngƣời ta sẽ chọn một số nguyên tố lớn p và hai số nguyên tuỳ ý nhỏ hơn p là a (a là một phầ n tƣ nguyên thủy của Z*P) và x (x là của ngƣời nhận. Hê ̣ mã El Gamal Hệ mã El Gamal là một biến thể của sơ đồ phân phối khoá Diffie – Hellman. 83 .ngƣời nhận Hình 4.M mod p Và gửi bản mã C = (C1.ngƣời gửi AES C2 C2 AES P B . Ví dụ: Cho hệ mã El Gamal có P = 97. a = 5. Tuy nhiên so với RSA. El Gamal không có nhiều rắc rối về vấn đề bản quyền sử dụng. a. bí mật) sau đó tính: ̉ y = ax mod p Để mã hóa một thông điệp M (là một số nguyên trên ZP) thành bản mã C ngƣời gửi chọn một số ngẫu nhiên k nhỏ hơn p và tính khóa mã hóa K: K = yk mod p Sau đó tính cặp bản mã:   C1 = ak mod p C2 = K. Khóa công khai của hệ mã là (p.3: Mô hình ƣng dụng lai ghép RSA vơi các hệ mã khố i ́ ́ 3.

Bƣơc 1: Tính amj mod p vơi 0 ≤ j ≤ m-1.Chƣơng IV: Các hệ mã mật khóa công khai   Tìm khóa của hệ mã trên. phầ n tƣ nguyên thủy a của Z p . Trƣớc hết ta tính y = 558 mod 97 = 44. Thám mã đối với hệ mã El Gamal Để thƣ̣ c hiện thám mã hệ mã El Gamal chúng ta cầ n giải bài toán Logaritm rơi rạc . từ đó suy ra KP = (P. 31). Bƣơc 6: x = (mj + i) mod (p-1). ́ Thuâ ̣t toán Shank Thuật toán này còn có tên khác là thuật toán cân bằ ng thơi gian – bộ nhơ (Timè ́ Memory Trade Off). y) = (97. 44) và KS = (58). a. * Input: số nguyên tố p. ́ Bƣơc 5: Tìm trong hai danh sách L 1 và L2 xem có tồ n tại cặp (j. ́ Bƣơc 3: Tính ya-i mod p vơi 0 ≤ i ≤ m-1. 84 . ̀ Ở đây chúng ta sẽ xem xét hai thuật toán có thể áp dụng để giải bài toá n này .3 mod 97 = 31 mod 97 Vậy bản mã thu đƣợc là C = (50. Thuật toán: Gọi m = [(p-1)1/2] (lấ y phầ n nguyên). ́ ́ Bƣơc 2: Sắ p xế p các cặp (j. ya-i mod p) theo amj mod p và lƣu vào danh sách L2. Trên thực tế các hệ mã khóa công khai thƣờng đƣợc sử dụng kết hợp với các hệ mã khối (mã hóa khóa của hệ mã) hoặc để mã hóa các thông tin có dung lƣợng nhỏ và là một phần quan trọng của một phiên truyền tin nào đó. ̉ Output: cầ n tìm x sao cho ax mod p = y. số nguyên y. có nghĩa là nếu chúng ta có đủ bộ nhớ thì có thể s ử dụng bộ nhớ đó để làm giảm thời gian thực hiện của thuật toán xuống. amj mod p) theo amj mod p và lƣu vào danh sách L1. Kế t quả này có thể kiểm chứng từ công thức amj mod ́ -i p = ya mod p => amj + i mod p = y mod p => x = (mj + i) mod (p-1). ́ ́ Bƣơc 4: Sắ p xế p các cặp (i. Với hệ mã El Gamal chúng ta cần gấp đôi bộ nhớ để chứa bản mã so với các hệ mã khác. Mã hóa bản rõ M = 3 với k đƣợc chọn bằng 36. vơi độ ́ phƣc tạp và khả năng áp dụng khác nhau. amj mod p) và (i. bên cạnh đó dung lƣợng bộ nhớ dành cho việc lƣu trữ các khóa cũng lớn. 5. ya-i ́ mod p) nào mà amj mod p = ya-i mod p (tọa độ thứ hai của hai cặp bằng nhau). Vấn đề đối với các hệ mã khóa công khai nói chung và El Gamal nói riêng là tốc độ (do phải làm việc với các số nguyên lớn). Để mã hóa thông điệp M = 3 ta tính khóa K = 4436 mod 97 = 75 sau đó tính:   C1 = 536 = 50 mod 97 C2 = 75. Ngoài ra do việc sử dụng các số nguyên tố nên việc sinh khóa và quản lý khóa cũng khó khăn hơn với các hệ mã khối.

Giả sử m đƣợc biể u diễn thành dạng nhi ̣ phân m = m0 + 2m1 + 4m2 + … + 2n-1mn-1. đó là các hệ mã khóa công khai dƣ̣ a trên các đƣơng cong Elliptic – ECC (Elliptic ̀ Curve Cryptography). Giả sử p – 1 = 2n. Khi xác đinh đƣợ c y 1 ̣ ́ = ya 0. trong phầ n này ch úng ta sẽ chỉ xem xét các vấn đề cơ bản của các đƣờng cong Elliptic và các hệ mã ECC. Tuy nhiên vơi sƣ̣ phát triể n của ́ ngành thám mã và năng lực ngày càng tăng nhanh chóng của các hệ thống máy tính . chẳ ng hạn nhƣ khi p – 1 chỉ có các ƣớc nguyên tố nhỏ . p-2] mà chúng ta cần tìm để y = am mod p. Điể m hấ p dẫn nhấ t của các hệ mã dƣ̣ a trên các đƣơng cong Elliptic là nó cho ̀ phép đạt đƣợc tính an toàn tƣơng đƣơng vơi RSA trong khi kich thƣơc khóa sƣ dụng lại ̉ ́ ́ ́ nhỏ hơn rất nhiều. Các hệ mã mật dựa trên các đƣờng cong Elliptic Độ phức tạ p Hầ u hế t các sản phẩ m và các chuẩ n sƣ dụng các hệ mã khóa công khai để mã hóa ̉ và chữ ký điện tử hiện nay đều sử dụng hệ mã RSA . vơi giá tri ̣ của m .. Quá trình tính toán cứ thể tiếp diễn cho tới khi chúng ta tìm đƣợc m của thuật toán là: n(2[log2p] + 2) ~ O((log2p)2). Một ́ thuật toán làm việc vơi các trƣơng hợ p nhƣ vậy đã đƣợ c Pohlig và Hellman đƣa ra vào ́ ̀ năm 1978. làm giảm số phép tính sử dụng khi mã hóa.4. điề u này làm giả m đáng kể hiệu năng của các hệ thố ng sƣ dụng hệ mã RSA . i và j lại phụ thuộc vào m nên có thể nhận thấ y là thuật toán này chỉ có thể áp dụng trong nhƣ̃ng trƣơng hợ p mà p nhỏ. độ dài khóa để đảm bảo an toàn cho hệ mã RSA cũng ngày càng tăng nhanh chóng . Gọi m là số nguyên thuộc khoảng [0. 3. 2n2 mn1 ) p 1 2 a m1 p 1 2 u 1 nÕ m1  0  u 1 nÕ m1  1 i.. p là một số lẻ và a (p-1)/2 mod p = -1. đều là các phép toán lũy thừa phụ ̉ thuộc vào j và i . Khi đó: y p 1 2  (a m ) p 1 2  (a m0  2 m1  2 m2 . giải mã và do đó đạt đƣợc hiệu năng và tố c độ cầ n thiế t . 85 . chúng ta ́ cầ n tính các phầ n tƣ thuộc hai danh sách L 1 và L 2.Chƣơng IV: Các hệ mã mật khóa công khai Độ phức tạp của thuật toán phụ thuộc vào m = [(p-1)1/2]. Gầ n đây một hệ mã mơi đã xuấ t hiện và có khả năng thay thế cho ̉ ́ RSA. * Gọi a là phần tử nguyên thủy của Z p ... Trên lý thuyế t tính an toàn của ECC không cao bằ ng so vơi ́ RSA và cũng khó giải thích một cách dễ hiể u hơn so vơi RSA hay Diffie -Hellman. 2 2 n1 mn1 ) p 1 2 a m0 p 1 2 u 1 nÕ m0  0  u 1 nÕ m0  1 Việc tính y (p-1)/2 mấ t nhiề u nhấ t 2[log2p] bƣơc và sẽ cho ta m 0. ̀ Thuâ ̣t toán Pohlig-Hellman Có những trƣờng hợp đặc biệt mà bài toán Logarithm rời rạc có thể giải quyết với độ phƣc tạp nhỏ hơn O(p1/2). ta lặp lại thao tác tƣơng tƣ̣ để tính m1: -m c1 p 1 4  (a m1  2 m2 . đặc biệt là vơi ̉ ́ các ứng dụng thƣơng mại điện tử trực tuyến hay các hệ thống realtime đòi hỏi thời gian xƣ lý nhanh chóng . Cơ sơ ̉ ́ toán học đầy đủ của các hệ mã dựa trên đƣờng cong Elliptic vƣợt ra ngoài phạm vi của tài liệu này .

b. c  G thì a • (b • c) = (a • b) • c. Ở dạng chung nhất phƣơng trình bậc 3 biể u diễn một đƣơng cong Elliptic có dạng: ̀ y2 + axy + by = x3 + cx2 + dx + e. sẽ cho chúng ta hai giá trị của y (một âm và một ́ dƣơng) tƣơng ƣng vơi một giá tri ̣ của x .Chƣơng IV: Các hệ mã mật khóa công khai 3. Đối với các hệ mã ECC. Nhóm Abel Nhóm Abel G . Việc thám mã liên quan tơi việc xác đinh giá tri ̣ của k vơi các thông tin ̣ ́ ́ công khai là a và (a x k). Tên gọi đƣơng cong ̀ Elliptic đƣợ c đặt vì loại đƣơng cong này đƣợ c mô tả bơi các phƣơng trinh bậc ba.4.2. Các đƣờng ̀ ́ cong sƣ dụng cho các hệ mã mật có các biế n và các hệ thố ng là các phầ n tƣ thuộc về ̉ ̉ một trƣơng hƣ̃u hạn . tính đóng (Closure) (A2):  a. Chẳ ng hạn. các đƣờng cong dạng này luôn đối xứng qua ́ ́ đƣơng thẳ ng y = 0. a‟ là phần tử nghịch đảo của a. trên các đƣơng cong ̀ Elliptic chúng ta đinh nghia một điể m đặc biệt gọi là điể m O hay điể m tại vô cùng (point at ̣ ̃ infinity). tính giao hoán (Commutative). b  G. thƣơng đƣợ c ký hiệu là {G. Đối với phép toán • các mệnh đề sau đề u thỏa mãn: (A1):  a. Các đƣờng cong Elliptic trên trƣơng số thƣ̣c ̀ Các đƣờng cong Elliptic không phải là các đƣờng Ellipse . d. (A5):  a. phép toán cộng trên các đƣờng cong Elliptic đƣợc sử dụng là phép toán cơ bản . tính kết hợp (Associate) (A3): Tồ n tại e  G: e • a = a • e = a  a  G. Một đƣơng cong Elliptic là một phƣơng trình vơi hai biế n và các hệ số . ký hiệu là (a • b) cũng là một phần tử thuộc G. kế t qủa thƣ̣ c hiện của phép toán với hai phần tử a . Ví dụ về hình ảnh của một đƣờng cong Elliptic: ̀ 86 . Rấ t nhiề u các hệ mã khóa công khai dƣ̣ a trên các nhóm Abel. tƣơng ̉ ̀ ̀ tƣ̣ nhƣ các phƣơng trình đƣợ c dùng để tính chu vi của một Ellipse .4. Các khóa đƣợc sinh ra bởi phép tính lũy thừa trên nhóm. Trƣơc hế t chúng ta sẽ xem xét ̀ ́ các đƣờng cong Elliptic trên trƣơng số thƣ̣ c. b  G: a • b = b • a. (A4):  a  G. b  G thì (a • b) G. c. Phép nhân đƣợc định nghĩa là sự lặp lại của nhiều phép cộng : a x k = (a + a + … + a).1. tính chất này gọi là đóng đối với tập G . điề u này tạo thành một nhóm Abel . •} là một tập hợp với một phép toán hai ̀ ngôi ký hiệu là •. luôn  a‟  G: a • a‟ = a‟ • a = e. Trong đó a . b. ̀ 3. e đƣợ c gọi là phầ n tƣ đơn vi ̣ của tập ̉ G. e là các số thƣ̣ c . giao thƣc ́ trao đổ i khóa Diffie -Hellman liên quan tơi việc nhân các c ặp số nguyên khác không theo ́ modulo q (nguyên tố ). x và y là các biến thuộc trƣờng số thực . Vơi ́ mục đích để hiểu về các hệ mã ECC chúng ta chỉ xét các dạng đƣờng cong Elliptic có dạng: y2 = x3 + ax + y (phƣơng trinh 1) ̀ Các phƣơng trình này đƣợc gọi là các phƣơng trình bậc ba. Để vẽ đƣơng cong Elliptic chúng ta cầ n tính các giá tri ̣ theo phƣơng trình: ̀ y  x3  ax  b Vơi mỗi giá tri ̣ cụ thể của a và b .

3. 1) tƣơng ƣng. Sƣ dụng các cặp (a. 0) và E(1. cùng với điểm O. b) chƣa tấ t cả các điểm (x.Chƣơng IV: Các hệ mã mật khóa công khai Hình 4.4: Các đƣờng cong Elliptic trên trƣờng số thực Chúng ta xem xét tập điểm E (a. 87 . ́ 3. b) khác nhau chúng ta có các tập E (a.4. y) thỏa mãn phƣơng ́ trình 1. b) ̉ khác nhau. Mô tả hình học của phép cộng trên các đƣơng cong Elliptic ̀ Vơi mỗi cặp (a. b) vơi ́ ́ các điều kiện sau: 4a3  27b2  0 (điề u kiện 1). Sƣ dụng ký hiệu này ta có hình vẽ minh họa trên là biể u diễn của hai tập hợ p ̉ E(1. b) cụ thể chúng ta có thể thành lập một nhóm trên tập E (a.

tƣc P. vẽ một đƣờng thẳng nố i chúng và tìm giao điể m R .5. Giao điể m của đƣơng thẳ ng nố i P vơi đố i của P. Trong các mệnh đề sau chúng ta giả sƣ P. yP). 88 .  P  E(a. b) là một nhóm Abel. O là phần tử trung hòa của phép cộng . ́ 3.4. Sau một số phép toán đại số chúng ta có thể tính ra R = P + Q nhƣ sau: xR  2  yP  xQ yR   yP  ( xP  yR ) Phép toán nhân đôi đối với P đƣợc tính nhƣ sau: xR  ( yR  ( 2 3xP  a 2 )  2 xP 2 yP 2 3xP  a )( xP  xR )  yP 2 yP 3. Có chính xác một điểm ̀ khác mà l giao với đƣờng cong . và đó chính là đối của tổng giữa P và Q . Các đƣờng cong Elliptic trên ZP Các hệ mã ECC sử dụng các đƣờng cong Elliptic với các biến và các hệ số giới hạn thuộc về một trƣơng hƣ̃u hạn . Các nghiên cứu về lý thuyết đã cho thấ y các đƣơng cong nguyên tố là phù hợ p nhấ t cho các ƣng dụng phầ n mề m vì ̀ ́ nhƣ̃ng phƣc tạp trong tính toán đố i vơi các đƣơ ng cong nhi ̣ phân. yP) và Q = (xQ. P = (x. Trên đƣơng cong nhi ̣ phân . Có hai họ các đƣờng cong Elliptic có thể sử dụng với các ̀ hệ mã ECC: các đƣờng cong nguyên tố trên Z P và các đƣờng cong nhị phân trên GF(2m).Chƣơng IV: Các hệ mã mật khóa công khai Vơi điề u kiện bổ sung này ta đinh nghia phép cộng trên đƣơng cong Elliptic . ký hiệu là P. P và P nằ m trên một đƣơng thẳ ng đƣng ̀ ́ 3. Vơi 5 điề u kiện này E(a. yQ) không phải là đố i ̀ ́ của nhau . tổ ng của P và Q là điểm đối xứng với R qua đƣờng thẳng y = 0. ̉ 2. Vơi hai điể m phân biệt P = (xP. mô tả ̣ ́ ̃ ̀ về mặt hì nh học nhƣ sau: nế u ba điể m trên một đƣơng cong Elliptic tạo thành một đƣơng ̀ ̀ thẳ ng thì tổ ng của chúng bằ ng O. ta vẽ một tiế p tuyế n tại Q vơi đƣơng cong và tìm ́ ̀ giao điể m S: Q + Q = 2Q = S. b): P + O= P. chúng ta sử dụng phƣơng trình bậc ba mà các biến ̀ và các hệ số của nó đều là các giá trị nguyên nằm từ 0 tơi p-1 và các phép tính đƣợc ́ thƣ̣ c hiện theo modulo P . -y) và P + (P) = P P = O. Dễ dàng nhận thấ y chỉ có một điể m R nhƣ vậy . Để nhân đôi một điể m Q. Để cộng hai điể m P và Q không có cùng hoàng độ x . và các tính toán đƣợc thực hiện trên GF (2n). Q ≠ O. nhƣng đố i vơi các ƣng ́ ́ ̀ ́ ́ dụng phần cứng thì việc sử dụng các đƣờng cong nhị phân lại tốt hơn vì cơ chế làm việc của các mạch. các biến và các hệ số là các giá trị ̀ trên GF(2n). y) thì phần tử đối của P. 4. Một đƣơng cong nguyên tố trên Z P. đƣợ c xem nhƣ cắ t ̀ ́ ́ đƣơng cong tại điể m vô cƣ̣ c và đó chinh là O. Mô tả đại số về phép cộng Trong phầ n này chúng ta sẽ trinh bày một số kế t quả cho phép tinh toán trên các ̀ ́ đƣơng cong Elliptic.4.4. ̀ ́ 5. độ dố c của đƣơ ng nố i l giƣ̃a chúng là Ä = (yQ. Vơi đinh nghia này các luật của phép cộng trên đƣơng ̣ ́ ̃ ̀ cong Elliptic nhƣ sau: 1. sẽ là (x. các con chíp rất phù hợp với các tính toán trên trƣờng nhị phân.

16) (7. a = b = 1. b = 1. 20) (19. b và các biế n số x . 1) 89 . y) thỏa mãn phƣơng trình phƣơng trình 2. 5) (19. b) gồ m tấ t cả các cặp (x. 4) Bảng 4. 18) (5. 7) (7. 7) (13. 0) (5. ta có tập E23(1. 4) (12. 12) (3. 16) (4. 20) (18. 7) (3. x = 9. Tập E P(a. 3) (18. 19) (1. 22) (6. 16) (17. 13) (9. Ví dụ với p = 23. 3) (11. 19) (12. y đề u thuộc Z P. 4) (11. 1) (6. 10) (9. 20) (0.Chƣơng IV: Các hệ mã mật khóa công khai Vơi các đƣơ ng cong Elliptic trên ZP chúng ta định nghĩa lại phƣơng trình biểu diễn ́ ̀ nhƣ sau: y2 mod p = (x3 + ax + y) mod p. Các giá trị hệ số a. 1): (0.2: Biể u diễn của tập E23(1. (phƣơng trinh 2) ̀ Chẳ ng hạn các giá tri ̣ a = 1. p = 23 thỏa mãn phƣơng trình trên. 3) (17. y = 7. 11) (1. 19) (13. y = 9.

ngƣơi ̣ ̀ ̀ ta thƣơng dƣ̣ a trên một con số là số phầ n điể m trên mộ t nhóm Abel hƣ̃u hạn . Phƣơng trinh biể u diễn ̀ 90 . yR) ́ đƣợ c đinh nghia nhƣ sau: ̣ ̃ xR  ( 2  xP  xQ ) mod p yR  ( ( xP  xR )  yP ) mod p Trong đó:  yQ  yP ) mod p. 10) và Q = (9. 1) ta có:  ( 7  10 3 1 ) mod 23  ( ) mod 23  ( ) mod 23  11 nên 93 6 2 xR = (112 . Để tìm 2P ta tính:  ( 3(32 )  1 5 1 ) mod 23  ( ) mod 23  ( ) mod 23  6 2 10 20 4 Chú ý là để thực hiện phép tính cuối cùng ta lấy phần tử nghịch đảo của 4 trên Z23 sau đó nhân vơi tƣ số là 1. 7) ta có P = (13. () p  Q)  2y P  4. ̀ đƣợ c đinh nghia trên một đƣơng cong Elliptic . chúng ta sử dụng một phƣơng trình bậc ba với các ̀ biế n và các tham số có giá tri ̣ thuộc GF (2m). P = (13.4. điể m (xP. Vơi hai điể m phân biệt P = (xP. Để xác đinh độ an toàn của các hệ mã mật dƣ̣ a trên các đƣơng cong Elliptic .7) . ( P  Q) (  xQ  xP  2 ( 3xP  a ) mod p. b). ́ ̉ xR=(62(3 .3 . 20). Phép nhân đƣợc định nghĩa là tổng của các phép cộng . gọi là N .17) . con số này xấ p xỉ bằ ng số phầ n tƣ của ZP (bằ ng p). ký hiệu là P. 1). Trong trƣơng hợ p nhóm hƣ̃u hạn E P(a. cũng thuộc E23(1.7) . ̉ 3. yP) và Q = (xQ.10) mod 23 = 34 mod 23 = 12 Kế t luận: 2P = (7. các phép toán đƣợc trang bị trên ̉ ̀ GF(2m) là phép toán cộng và phép toán nhân đƣợc thực hiện với các đa thức . yP) đƣợ c gọi là đố i của P . 1.10) mod 23 = 20.6. yP) thì P +(xP. 7) trên E23(1.Chƣơng IV: Các hệ mã mật khóa công khai Các qui tắc về phép cộng cũng đƣợc định nghĩa tƣơng tự đối với các đƣờng cong Elliptic nguyên tố : Điề u kiện: (4a3 + 27b2) mod p ≠ 0. Chẳ ng hạn trên E23(1. 3. Các đƣờng cong Elliptic dựa trên các trƣờng hữu hạn GF(2m) Số phầ n tƣ của trƣơng hƣ̃u hạn GF (2m) là 2m. 12). Nế u P = (xP. yQ). các phép tính đƣợc thực hiện tuân theo các phép toán trên GF(2m). 16). Đối với các đƣơng cong Elliptic dƣ̣ a trên GF (2m). ̣ ̃ ̀ ̀ ta có các cận của N là: p  1  2 p  N  p  1  2 p . 1). Ví dụ với P = (3. R = P + Q = (xR. 1. 7) nhƣng 7 mod 23 = 16 nên P = (13.10) mod 23 = 30 mod 23 = 7 yR = (6(3 . P+O=P 2. chẳ ng hạn 4P = P + P + P + P.9 ) mod 23 = 17 yR = (11(3 . Nên P + Q = (17. yP) = O.

b là các phầ n tƣ của GF(2m) và các phép tính ̉ toán đƣợc thực hiện tuân theo các qui tắc trên GF(2m). g13) (g9. g8) Hình biểu diễn tƣơng đƣơng: (g5. g6) (1. g3): ̀ (g3)2 + (g5)(g3) = (g5)3 + (g4)(g5)2 + 1  g6 + g8 = g15 + g14 + 1  1100 + 0101 = 0001 + 1001 + 0001  1001 = 1001 Bảng sau là các điểm trên E24(g4. y) thỏa mãn phƣơng trình phƣơng trình 3 và điểm vô cùng O.Chƣơng IV: Các hệ mã mật khóa công khai So vơi các hệ mã mật dƣ̣ a trên các đƣơng cong trên Z P. g11) (g10. g4 = g + 1. g13) (g3. g14) (g12. g3) (g9. Một điể m nằ m trên đƣơng cong là (g5. Phầ n ́ ́ tƣ sinh của GF(24) là g thỏa mãn f(g) = 0. g8) (g6. g8) (g10. hay ơ dạng nhi ̣ phân là 0010.0) (g3. Chúng ta ký hiệu E 2m(a. 1): (0. trong trƣơng hợ p này a = g4 và b = ̀ g0 = 1. g12) 91 . 1) (1. g) g6. g10) (g12. g13) (g5. Xét đƣờng cong Elliptic y 2 + xy = x3 + g4x2 + 1. Chúng ̉ ̉ ta có bảng lũy thƣa của g nhƣ sau: ̀ g0 = 0001 g4 = 0011 g8 = 0101 g1 = 0010 g5 = 0110 g9 = 1010 g12 = 1111 g13 = 1101 g2 = 0100 g6 = 1100 g10 = 0111 g14 = 1001 g3 = 1000 g7 = 1011 g11 = 1110 g15 = 0001 Chẳ ng hạn g5 = g4 g = (g+1)g = g2 + g = 0110. b) là tất cả các cặp số nguyên (x. dạng biểu diễn của các hệ ́ ̀ m mã dựa trên GF(2 ) tƣơng đố i khác: y2 + xy = x3 + ax2 + b (phƣơng trình 3) Trong đó các biế n x. Ví dụ: chúng ta có thể sử dụng GF(24) vơi đa thƣc bấ t khả qui f(x) = x4 + x + 1. y và các hệ số a.

Nế u P = (xP.  a. sau: yQ  yP xQ  xP Nế u P = (xP. b) vơi điề u kiện b≠0. xP + yP) = O. yR) đƣợ c xác đinh bằ ng các công thƣc ̣ ́ xR   2    a 2 yR  xP  (  1) xR Trong đó:   xP  yP xP 92 . yP) và Q = (xQ. b): ́ 1. P≠Q thì R = P + Q = (xR. Các luật thực ̣ ̃ ́ hiện vơi phép cộng. yP) thì R = 2P = (xR. P+O=P 2. b E2m(a. ký hiệu là P.5: Hình biểu diễn E24(g4. Nế u P = (xP. yR) đƣợ c xác định bằng các công thức sau: xR   2    xP  xQ  a yR   ( xP  xR )  xR  yP  a Trong đó:  4. 1) Một nhóm Abel có thể đinh nghia dƣ̣ a trên E 2m(a. xP + yP) là điểm đối của P.Chƣơng IV: Các hệ mã mật khóa công khai Hình 4. yP) thì P + (xP. yQ) và P≠Q. Điể m (xP. 3.

Phƣơng pháp trao đổ i khóa Diffie-Hellman dƣ̣a trên các đƣơng cong Elliptic ̀ Ban đầ u ngƣơi ta chọn một số nguyên lơn q . còn phép toán nhân (cộng nhiề u lầ n ) trên đƣơng cong Ellipti c tƣơng ̀ ứng với phép lũy thừa theo modulo trong hệ mã RSA . 2P = (20. 17). Nhƣ vậy k = 9. 3. 3P = (14. 20). có thể là một số nguyên tố p hay có ̀ ́ dạng 2m tƣơng ƣng vơi các phƣơng trinh biể u diễn và các tham số a . y1)  EP(a. 3P = P = (16. b. Phƣơng pháp trao đổ i khóa giƣ̃a hai ngƣơi dùng A và B có thể thƣ̣ c hiện nhƣ sau: ̀ 1. Đó chinh là khóa riêng của A . A sinh một khóa bí mật K = nA x PB. Hê ̣ mã mâ ̣t dƣ̣a trên các đƣơng cong Elliptic ̀ Phép toán cộng trên đƣờng cong Elliptic tƣơng ứng với phép nhân theo modulo trong hệ mã RSA . Việc tinh Q nế u biế t P và ́ k là một bài toán dễ (thƣ̣ c hiện theo các công thƣc). gọi là bài toán Logarithm trên đƣờng cong Elliptic: Xét phƣơng trình Q = kP trong đó P. Hình minh họa các bƣớc: 93 . 6P = (7. 7). 5) và P = (16. 9P = (4. b).certicom. khóa này là một điểm trên Eq(a. 20). Tƣơng tƣ̣ B cũng chọn một khóa riêng nB và tính khóa công khai PB. Q ̣ ́ ́ cho trƣơc lại là bài toán khó. Tiế p theo chọn một điể m G = (x1. 5). 8P (12. 3). b) và G là các ́ tham số công khai cho hệ mã mật dƣ̣ a trên đƣơng cong Elliptic tƣơng ƣng vơi các tham ̀ ́ ́ số p. B sinh khóa bí mật K = nB x PA. 5) thì k thỏa mãn Q = kP sẽ bằ ng bao nhiêu ? Phƣơng ́ pháp đơn giản nhất là nhân P lên nhiều lần cho tới khi bằng Q: P = (16. Dễ dàng kiể m chƣng các khóa bí mật của A và B tính đƣợc đều bằng nhau : nA x PB ́ = nA x (nB x G) = nB x (nA x G) = nB x PA.4. bậc n của điể m G là số nguyên nhỏ nhấ t thỏa mãn nG = O.com): E23(9.8. Trên thƣ̣ c tế các hệ mã sẽ đảm bảo giá tri ̣ k là đủ lơn để phƣơng ́ pháp vét cạn nhƣ trên là không thể thực hiện đƣợc. b). Tƣơng tƣ̣ nhƣ bài toán cơ sơ của ̉ hệ mã RSA là bài toán phân tich ra dạng thƣa số nguyên tố của một số nguyên lơn . 5). 17) đƣợ c xác đinh bơi phƣơng trình y2 mod 23 = (x3 + 9x + 17) mod 23.4. 4P = (19. Việc lƣ̣ a chọn ́ ́ ̀ này cho chúng ta tập hợp E q(a. Sau đó ́ sinh khóa công khai PA = nA x G. 14). ́ Chúng ta xem xét ví dụ (Certicom Website www. 7P = (8. ̣ ̉ Vơi Q = (4. 5). 2P = (20. b) và k < p. 5P = (13. a. 20). 3. b) có bậc n rấ t lơn. Nhƣng việc xác đinh k vơi giá tri ̣ P. Q  EP(a.Chƣơng IV: Các hệ mã mật khóa công khai 3. các ́ ̀ ́ hệ mã dƣ̣ a trên các đƣơng cong Elliptic cũng có các bài toán cơ sở là một bài toán khó ̀ giải.7. b. 10). 2. Eq(a. A chọn một số nguyên n A nhỏ hơn n.

3. 69). Do 240G = O nên n = 240. 48).9. khóa công khai tƣơng ƣng của A sẽ là P A = 121(2. y) đều thuộc E P(a. A chọn khóa riêng là n A = 121. Ví dụ: p = 211. ở đây chúng ta sẽ xem xét cách đơn giản nhấ t . một bài toán khó. ta chọn ́ ́ ̀ G = (2. Thuâ ̣t toán mã hóa và giải mã Có nhiều cách mã hóa /giải mã đã đƣợc nghiên cứu với các hệ mã trên các đƣờng cong Elliptic. 2) = (115. Khóa riêng của B là n B = 203 nên khóa ́ công khai cùa B là P B = 203(2. E211(0. Có 94 . Thuật toán mã hóa ban đầ u sẽ thực hiện phép biến đổi tiền xử lý từ input là một bản rõ m thành dạng một điểm P m. 2).4. 203). 2) = ( 130. Khóa bí mật (chia sẻ ) giƣ̃a A và B là 121(130. 48) = (161. Điể m Pm sẽ đƣợc mã hóa thành bản mã và sau đó giải mã .6: Phƣơng pháp trao đổ i khóa Diffie-Hellman dƣ̣ a trên ECC Để tấ n công phƣơng pháp trao đổ i khóa trên . và đây chính là bài toán Logarithm trên đƣờng cong ́ Elliptic. 203) = 203(115. 4) tƣơng ƣng vơi phƣơng trinh biể u diễn y 2 = x3 + 4.Chƣơng IV: Các hệ mã mật khóa công khai Hình 4. Thƣ̣ c chấ t việc tiề n xƣ lý này ̉ không đơn giản vì không phải tấ t cả các tọa độ có dạng (x. b). kẻ tấn công cần phải tính đƣợc giá trị k vơi các giá tri ̣ công khai là G và kG.

4. Giố ng nhƣ đố i vơi hệ trao đổ i khóa . chúng ta cần một điểm G và một nhóm Elliptic ́ Eq(a. Tuy nhiên giá tri ̣ của C m cũng gồm một đầu mối để B (ngƣơi duy nhấ t giƣ̃ khóa riêng n B) ̀ có thể dựa vào đầu mối đó mà tìm ra Pm. (385. 3. Bảng sau cho chúng ta sƣ̣ so sánh tƣơng quan giƣ̃a các hệ ma: ̃ Symmetric Scheme ECC-Based Scheme RSA/DSA (modulus (key size in bits) (size of n in bits) size in bits) 56 80 112 128 92 256 Nguồ n: Certicom Bảng 4. Giả sử A muốn gửi một thông điệp tƣơng ứng với Pm = (562. 376) = (676. 188) tƣơng ƣng vơi phƣơng trinh y 2 = x3 + x + 188. Thuật toán nhanh nhấ t để giải bài toán này là thuật toán của Pollard . Ví dụ: p = 751. chúng ta không bàn kỹ tới chúng ở đây ̉ nhƣng thƣ̣ c tế là có một vài cách dễ hiể u để thƣ̣ c hiện việc đó. khóa công khai của B là P B = (201. Để giải mã bản mã .3: Bảng so sánh các hệ mã ECC với hệ mã RSA 112 160 224 256 384 512 512 1024 2048 3072 7680 15360 95 . Chỉ có duy nhất A biết giá trị k. G = (0. Độ an toàn của các hệ mã mật dựa trên các đƣờng cong Elliptic Độ an toàn của các hệ mã ECC phụ thuộc vào việc xác định đƣợc giá trị của k dựa trên các giá trị kP và P. B sẽ nhân điể m thƣ nhấ t vơi khóa bí mật của B và lấ y kế t quả nhận đƣợ c trƣ đi điể m thƣ hai: ́ ́ ̀ ́ Pm + kPB nB(kG) = Pm + k(nBG) nB(kG) = Pm. 201) + 386(201. EP(1. không ai có thể loại bỏ mặt nạ kP B để tìm ra P m. 558) và (562. Bài toán này đƣợc gọi là bài toán Logarithm trên các đƣờng cong Elliptic. Bản mã sẽ là Cm = {(676. Pm + kPB}. b) làm tham số . Mỗi ngƣơi dùng A lƣ̣ a chọn một khóa riêng n A và sinh một khóa ̀ công khai PA = nA x G.Chƣơng IV: Các hệ mã mật khóa công khai nhiề u cách khác nhau cho việc tiề n xƣ lý này . Chú ý là ở đây A sử dụng khóa công khai của B .10. 201) và A lựa chọn k = 386. Để mã hó a một thông điệp P m để gửi tới cho B . nên thậm chí biế t kh óa công khai P B. A đã che đi giá tri ̣ của P m bằ ng cách cộng kP B vào P m. Chúng ta có 386(0. 558). A sẽ chọn một số nguyên dƣơng ngẫu nhiên k và sinh bản mã Cm gồ m một cặp điể m: Cm = {kG. ́ ́ ̀ 376). 5). 328)}. 5) = (385. 328).

Hãy thực hiện giải mã bản mã trên để thu đƣợc thông điệp ban đầu. N3. M = 173 và u = 97. 30. Để mã hóa M = 18 ngƣời ta chọn k = 7.7: Tƣơng tự Câu 1 với n = 215629 và phi(n) = 214684 hãy giải mã bản mã M = 2007. Kết quả thu đƣợc bản mã là một dãy các số  ZM. 22. a) Hãy tìm khóa công khai KP. Hãy thực hiện tính toán và đƣa ra bản mã kết quả. Bài tập 4. 105. ̉ ̃ 4. Bài tâ ̣p 4. 53}.1: Cho N = 1517. và khóa bí mật KS của hệ mã trên. C4.2: Trong hệ mã RSA có N = p * q = 103 * (219 – 1) thì có thể sử dụng tối đa là bao nhiêu gía trị của e để làm khóa mã hóa.5: Cho hệ mã ElGamma có p = 31.Chƣơng IV: Các hệ mã mật khóa công khai Có thể thấy là so với RSA . Hãy tìm m. Bài tập 4. Cả bốn hệ RSA này đều có số mũ lập mã là e = 3. 30>. biết phi(n) = 1288 hãy mã hóa bản rõ M = 2007. a = 11 và x = 6. Bài tập 4. b) Để mã hóa các thông điệp viết bằng tiếng Anh ngƣời ta dùng một hàm chuyển đổi từ các ký tự thành các xâu nhị phân nhƣ sau: Ký tự Xâu bít Ký tự Xâu bít Ký tự Xâu bít Ký tự Xâu bít A 00000 H 00111 O 01110 V 10101 B 00001 I 01000 P 01111 W 10110 C 00010 J 01001 Q 10000 X 10111 D 00011 K 01010 R 10001 Y 11000 E 00100 L 01011 S 10010 Z 11001 F 00101 M 01100 T 10011 G 00110 N 01101 U 10100 Khi đó ví dụ xâu ABCD sẽ đƣợc chuyển thành 00000 00001 00010 00011 và cắt thành các xâu có độ dài 4 để thực hiện mã hóa.8: Giả sử có 4 tổ chức sử dụng 4 hệ mã RSA để truyền thông với nhau. Nj) = 1  i  j và i. Bài tập 4. 0. Một thông điệp m sau khi mã hóa bằng 4 hệ mã trên nhận đƣợc 4 bản mã tƣơng ứng là C1. j  Z5/{0}. 105. C2. 30. N4 lần lƣợt là các tham số tƣơng ứng mà họ sử dụng và (Ni. 75. Bài tập 4. các hệ mã ECC có ƣu thế hơn về độ dài khóa sử dụng . 22. Hãy tính 131435 mod N. đặc biệt là khi chúng ta sƣ dụng các khóa có độ dài nhỏ thì ECC còn có ƣu thế về tố c độ ̉ (số phép tính) xƣ lý trong mã hóa và giải ma. giải thích. 60. Gọi N 1. 60}. Hãy thực hiện mã hóa xâu P = “ANTI”. 15. 31. Bài tập Bài tập 4. a) Hãy tìm khóa công khai KP. 96 .4: Trong hệ chữ ký điện tử ElGamma có p = 231 – 1 khi ký lên một văn bản có thể sử dụng tối đa bao nhiêu gía trị k. 13. N2. Bài tập 4. C3.3: Trong hệ mã RSA có N = p*q = 103 * 113 sẽ có bao nhiêu trƣờng hợp lộ bản rõ.6: Cho hệ RSA có n = 1363. c) Giả sử bản mã thu đƣợc là C = <120. M = 150 và u = 77. Bài tập 4.9: Cho hệ mã Knapsack có A = {11. giải thích.10: Cho hệ mã Knapsack có A = {7. và khóa bí mật KS của hệ mã trên. Bài tập 4.

b) Để mã hóa các thông điệp đƣợc viết bằng tiếng Anh ngƣời ta dùng một hàm chuyển đổi các ký tự thành các số thập phân có hai chữ số nhƣ sau: Ký tự Mã hóa Ký tự Mã hóa A 00 N 13 B 01 O 14 C 02 P 15 D 03 Q 16 E 04 R 17 F 05 S 18 G 06 T 19 H 07 U 20 I 08 V 21 J 09 W 22 K 10 X 23 L 11 Y 24 M 12 Z 25 97 . 29. Kết quả thu đƣợc bản mã là một dãy các số  ZM.12: Cho hệ mã RSA có p = 31.Chƣơng IV: Các hệ mã mật khóa công khai b) Để mã hóa các thông điệp viết bằng tiếng Anh ngƣời ta dùng một hàm chuyển đổi từ các ký tự thành các xâu nhị phân nhƣ sau: Ký tự A B C D E F G Xâu bít 00000 00001 00010 00011 00100 00101 00110 Ký tự H I J K L M N Xâu bít 00111 01000 01001 01010 01011 01100 01101 Ký tự O P Q R S T U Xâu bít 01110 01111 10000 10001 10010 10011 10100 Ký tự V W X Y Z Xâu bít 10101 10110 10111 11000 11001 Khi đó ví dụ xâu ABCD sẽ đƣợc chuyển thành 00000 00001 00010 00011 và cắt thành các xâu có độ dài 4 để thực hiện mã hóa. b) Để mã hóa các thông điệp viết bằng tiếng Anh ngƣời ta dùng một hàm chuyển đổi từ các ký tự thành các xâu nhị phân nhƣ sau: Ký tự A B C D E F G Xâu bít 00000 00001 00010 00011 00100 00101 00110 Ký tự H I J K L M N Xâu bít 00111 01000 01001 01010 01011 01100 01101 Ký tự O P Q R S T U Xâu bít 01110 01111 10000 10001 10010 10011 10100 Ký tự V W X Y Z Xâu bít 10101 10110 10111 11000 11001 Khi đó ví dụ xâu ABCDEF sẽ đƣợc chuyển thành 00000 00001 00010 00011 00100 00101 và cắt thành các xâu có độ dài 6 để thực hiện mã hóa. 3. 0. 116. 111. Kết quả thu đƣợc bản mã là một dãy các số  ZM. Bài tập 4.11: Cho hệ mã Knapsack có A = {2. M = 151 và u = 71. Hãy thực hiện mã hóa xâu P = “AUNT”. 4. q = 41. a) Hãy tìm khóa công khai KP. 40. 57}. 66. và khóa bí mật KS của hệ mã trên. 66. và khóa bí mật KS của hệ mã trên. Hãy thực hiện mã hóa xâu P = “ANSWER”. 13. c) Giả sử bản mã thu đƣợc là C = <44. 17>. 121.160. c) Giả sử bản mã thu đƣợc là C = < 67. 0. 7. e = 271. Hãy thực hiện giải mã bản mã trên để thu đƣợc thông điệp ban đầu. Bài tập 4. Hãy thực hiện giải mã bản mã trên để thu đƣợc thông điệp ban đầu. 104. 0>. a) Hãy tìm khóa công khai KP.

Chƣơng IV: Các hệ mã mật khóa công khai Khi đó ví dụ xâu ABC sẽ đƣợc chuyển thành 00 01 02 và sau đó cắt thành các số có 3 chữ số 000 (bằng 0) và 102 để mã hóa. 1206. q = 43. a = 79 là một phần tử nguyên thuỷ của ZP*. và khóa bí mật KS của hệ mã trên. x = 37. Bài tập 4. 793. 18> hãy thực hiện giải mã để tìm ra thông điệp bản rõ ban đầu. c) Giả sử bản mã thu đƣợc là C = <201. Bài tập 4. Bài tập 4. a = 5 là một phần tử nguyên thuỷ của Z P*. 433> hãy thực hiện giải mã để tìm ra thông điệp bản rõ ban đầu. Hãy thực hiện mã hóa xâu P = ”TAURUS”. a) Hãy tìm khóa công khai KP. e = 11. hãy mã hóa và đƣa ra bản mã. Bản mã thu đƣợc là một tập các số  ZN. b) Giả sử bản rõ P = 102 hãy mã hóa và đƣa ra bản mã C. hãy tính chữ ký với thông điệp M = 201. a) Hãy tìm khóa công khai KP. b) Để mã hóa các thông điệp đƣợc viết bằng tiếng Anh ngƣời ta dùng một hàm chuyển đổi các ký tự thành các số thập phân có hai chữ số nhƣ sau: Ký tự Mã hóa Ký tự Mã hóa A 00 N 13 B 01 O 14 C 02 P 15 D 03 Q 16 E 04 R 17 F 05 S 18 G 06 T 19 H 07 U 20 I 08 V 21 J 09 W 22 K 10 X 23 L 11 Y 24 M 12 Z 25 Khi đó ví dụ xâu ABC sẽ đƣợc chuyển thành 00 01 02 và sau đó cắt thành các số có 3 chữ số 000 (bằng 0) và 102 để mã hóa. 169. a) Hãy tìm khóa công khai KP.15: Cho hệ mã ElGamma có p = 83. x = 113. Hãy thực hiện mã hóa xâu P = ”SERIUS”. c) Giả sử bản mã thu đƣợc là C = <1. c) Giả sử hệ mã trên đƣợc dùng làm hệ chữ ký điện tử. và khóa bí mật KS của hệ mã trên. a) Hãy tìm khóa công khai KP.13: Cho hệ mã RSA có p = 29. và khóa bí mật KS của hệ mã trên. c) Hãy tìm tất cả các phần tử nguyên thuỷ của ZP*. e = 57. Bản mã thu đƣợc là một tập các số  ZN. 442. b) Để mã hóa bản rõ P = 72 ngƣời ta chọn k = 23.14: Cho hệ mã RSA có n = 1363. Bài tập 4. b) Để mã hóa các thông điệp đƣợc viết bằng tiếng Anh ngƣời ta dùng một hàm chuyển đổi các ký tự thành các số thập phân có hai chữ số nhƣ sau: Ký tự Mã hóa Ký tự Mã hóa A 00 N 13 B 01 O 14 C 02 P 15 D 03 Q 16 E 04 R 17 F 05 S 18 G 06 T 19 H 07 U 20 I 08 V 21 J 09 W 22 K 10 X 23 L 11 Y 24 M 12 Z 25 98 . và khóa bí mật KS của hệ mã trên.16: Cho hệ mã mật ElGamma có p = 1187.

Khóa bí mật của B là nB = 7. Java hoặc C# để làm các bài tập sau: ̉ 99 . (1079. C2)  ZP. hãy xác đinh bản mã tƣơng ƣng vơi bản mã M = 30. a) Giả sử khóa công khai của B là Y B = 3 và A chọn số ngẫu nhiên k = 2. biế t rằ ng mỗi số nguyên trên Z24637 biể u diễn một bộ 3 chƣ̃ cái theo qui tắ c sau: DOG CAT ZZZ 3 × 262 + 14× 26 + 6 = 2398 2 × 262 + 0× 26 + 19 = 1371 25 × 262 + 25× 26 + 25 = 17575 Bài tập 3. C2).17: Cho bản mã nhận đƣợ c bằ ng cách sƣ dụng một hệ mã RSA nhƣ sau: ̉ 11437 16611 6198 16611 2405 9529 2405 18636 2679 12205 24142 7260 7834 15094 4667 24027 6375 762 2134 5878 6704 9402 9984 5206 16683 7977 15470 374 5359 10888 6525 4168 3536 23229 20351 15580 527 12887 21628 11884 135 22007 20049 4287 14402 1339 10420 18051 23125 7747 1379 13199 15176 8313 19574 7989 22869 7989 3947 19529 15728 8982 406 10057 21758 5601 3045 3527 7200 3918 23991 14237 7601 13282 21160 4663 11040 6291 15994 7785 6596 16796 2405 20302 11929 17125 14533 21001 8687 6704 3330 5630 19650 13024 8351 11571 22082 Khóa công khai có n = 24637 và e = 3. (608. 6) và G = a) Hãy xác định khóa công khai của B? b) Giả sử cần mã hóa bản rõ P m = (10.19: Cho hệ mã dƣ̣ a trên đƣơng cong Elliptic có các tham số là E ̀ (2. 391)>.(786. 11(1. ̣ ́ ́ b) Giả sử A chọn một giá trị ngẫu nhiên k khác và bản mã tƣơng ứng với M = 30 bây giơ là C = (59. Hãy giải mã và đƣa ra thông điệp ban đầu. 7). c) Giả sử thu đƣợc bản mã là một tập các cặp (C1. c) Minh họa quá trình giải mã vơi Cm nhận đƣợ c ơ phầ n b. 305).Chƣơng IV: Các hệ mã mật khóa công khai Khi đó ví dụ xâu ABC sẽ đƣợc chuyển thành 00 01 02 và sau đó cắt thành các số có 3 chữ số 000 (bằng 0) và 102 để mã hóa. Bài tập 4. Hãy xác định C 2? ̀ Bài tập 3. Hãy thực hiện mã hóa xâu m = ”TAURUS” với các giá trị 13 < k < 19.18: Cho hệ mã ElGamal có p = 71 và a = 7. c) Chuyể n bản rõ nhận đƣợ c thành dạng văn bản tiế ng Anh . a) Hãy xác định p. b) Giải mã bản mã để nhận đƣợc bản rõ (là các số trên Z24637). C++. 925). 283). ̉ ́ Sƣ dụng một trong các ngôn ngƣ̃ lập trình C. 9) và số ngẫu nhiên k = 3. q và d. Hãy xác định bản mã Cm. C2) là <(358. Bản mã thu đƣợc là một tập các cặp số (C1.

26: Viế t chƣơng trình phân phố i khóa dƣ̣ a trên hệ mã RSA.22: Viế t chƣơng trình cài đặt thuật toán mã hóa và giải Gammal.24: Viế t chƣơng trinh truyề n file qua hệ thố ng mạng sƣ dụng thuật toán mã hóa ̉ ̀ RSA.Chƣơng IV: Các hệ mã mật khóa công khai Bài tập 3. Bài tập 3. Bài tập 3. mã của hệ mã El Bài tập 3. Bài tập 3.20: Viế t chƣơ ng trình cài đặt thuật toán mã hóa và giải mã của hệ mã Knapsack.21: Viế t chƣơng trình cài đặt thuật toán mã hóa và giải mã của hệ mã RSA. ̉ Bài tập 3. Bài tập 3. 100 .23: Viế t chƣơng trình mã hóa và giải mã File vơi thuật toán mã hóa và giải mã ́ RSA.25: Viế t chƣơng trình chia sẻ file trên mạng cục bộ sƣ dụng hệ mã RSA.

Sau đây. Chữ ký viết tay thông thƣờng trên tài liệu thƣờng đƣợc dùng để xác định ngƣời ký nó. chẳng hạn nhƣ ký một biên nhận trên một bức thƣ nhận tiền từ ngân hàng. một chữ ký điện tử không gắn theo kiểu vật lý vào bức điện nên thuật toán đƣợc dùng phải là “không nhìn thấy” theo cách nào đó trên bức điện. chúng ta sẽ thảo luận một vài điểm khác biệt cơ bản giữa chữ ký thông thƣờng và chữ ký điện tử. nếu B ký một bức điện xác minh cho A rút 100$ từ tài khoản của mình. Khi cho trƣớc cặp (x. chẳng hạn nhƣ dùng dịch vụ gán nhãn thời gian (Time Stamping Service).. Sơ đồ chữ ký điện tử là một phƣơng pháp ký một văn bản hay lƣu bức điện dƣới dạng điện tử. anh ta chỉ muốn A có khả năng làm điều đó một lần. ký hợp đồng hay một văn bản bất kỳ nào đó. Song trƣớc hết. Kết quả chữ ký y = sig(x) nhận đƣợc có thể đƣợc kiểm tra bằng thuật toán xác minh công khai ver(y). từ việc xác minh chữ ký cho đến các thẻ tín dụng. Nói cách khác. B có thể ký một bức điện x dùng thuật toán ký an toàn (bí mật). Ví dụ. các sơ đồ định danh và các sơ đồ chia sẻ bí mật . các chữ ký thƣờng luôn đƣợc sử dụng hàng ngày. Sự khác biệt cơ bản giữa chữ ký điện tử và chữ ký thông thƣờng là ở chỗ: một bản copy tài liệu có chữ ký đƣợc đồng nhất với bản gốc. Đầu tiên là vấn đề ký một tài liệu. thuật toán xác minh cho giá tri TRUE hay FALSE tuỳ thuộc vào việc chữ ký đƣợc xác thực nhƣ thế nào. bản thân bức điện phải chứa thông tin để khỏi bị dùng lại. Vì thế. Chữ ký thông thƣờng đƣợc kiểm tra bằng cách so sánh nó với các chữ ký xác thực khác. ai đó ký một tấm séc để mua hàng. bất kỳ ai cũng có thể kiểm tra đƣợc chữ ký điện tử.1. 101 . Là một cơ chế xác thực hóa cho phép ngƣời tạo ra thông điệp đính kèm một mã số vào thông điệp giống nhƣ là việc ký một chữ ký lên một văn bản bình thƣờng. Một sơ đồ chữ ký điện tử thƣờng chứa hai thành phần: thuật toán ký sig() và thuật toán xác minh ver(). Khái niệm về chữ ký điện tử Kể từ khi con ngƣời phát minh ra chữ viết. Chữ ký điện tử từ khi ra đời đã có nhiều ứng dụng rộng rãi trong các giao dịch thƣơng mại. Vậy thế nào là chữ ký điện tử? Chúng ta có một số định nghĩa nhƣ sau:   Là một định danh điện tử đƣợc tạo ra bởi máy tính đƣợc các tổ chức sử dụng nhằm đạt đƣợc tính hiệu quả và có hiệu lực nhƣ là các chữ ký tay. Với chữ ký thông thƣờng nó là một phần vật lý của tài liệu. Việc sử dụng một sơ đồ ký an toàn có thể ngăn chặn đƣợc khả năng giả mạo. Mặt khác. Nhƣ vậy. y). Chƣ̃ ký điê ̣n tƣ ̉ 1.Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉ ̉ CHƢƠNG V: CHƢ KÝ ĐIỆN TƢ VÀ HÀM BĂM ̃ 1. tài liệu có chữ ký trên giấy thƣờng có thể khác biệt với bản gốc điều này để ngăn chặn một bức điện đƣợc ký khỏi bị dùng lại. Thứ hai là vấn đề kiểm tra. ngƣời bán sẽ so sánh chữ ký trên mảnh giấy đó với chữ ký nằm ở mặt sau thẻ tín dụng để kiểm tra. Chẳng hạn một bức điện có chữ ký đƣợc lƣu hành trên mạng máy tính. chúng ta sẽ tìm hiểu một số sơ đồ chữ ký quan trọng. Ví dụ. chữ ký số có thể kiểm tra bằng một thuật toán kiểm tra một cách công khai. Tuy nhiên..

Vì thế. b). Một sơ đồ chữ ký không thể an toàn vô điều kiện vì một ngƣời C nào đó có thể kiểm tra tất cả chữ số y trên bức điện x nhờ dùng thuật toán ver() công khai cho tới khi anh ta tìm thấy chữ ký đúng. A. C luôn có thể giả mạo chữ ký của B. V) thoả mãn các điều kiện dưới ̉ đây: 1) P là tập hữu hạn các bức điện (thông điệp.Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉ Các chữ ký điện tử đƣợc sinh và sử dụng bởi các hệ chữ ký (sơ đồ) điện tử. ta chỉ cần đảo ngƣợc hàm mã hoá và giải mã. còn p. Với K = (n. Hàm verK sẽ là hàm công khai còn hàm sigK là bí mật. Nhƣ vậy mục đích của chúng ta là tìm các sơ đồ chữ ký điện tử an toàn về mặt tính toán. khi đó y = sigK(x). a. Các giá trị n và b là công khai. ta xác định: 102 . a là bí mật. q. bản rõ) có thể. ab ≡ 1 (mod  (n))}. 4) Với mỗi khoá K  K tồn tại một thuật toán ký sigK  S và một thuật toán xác minh verK  V. p và q là các số nguyên tố. nếu thiết lập đƣợc sơ đồ chữ ký dựa trên bài toán phân tích ra thừa số nguyên tố thì độ an toàn của chữ ký sẽ rất cao. Mỗi sigk: P → A và verK: P x A → {TRUE. Định nghĩa: Một sơ đồ chữ ký điện tư là bộ 5 (P. S. y) =    TRUE FALSE nếu nếu y = sig(x) y ≠ sig(x). nghĩa là với x cho trƣớc chỉ có B mới có thể tính đƣợc y để ver(x. 3) K là tập không gian khoá (tập hữu hạn các khoá có thể). p. Có thể dùng các hàm Băm (hash function) nhƣ MD4. q là các số nguyên tố. hàm sigK và verK là các hàm đa thức thời gian. p. [5] Với mỗi K  K. Không thể dễ dàng tính toán để giả mạo chữ ký của B trên bức điện x. Hệ chữ ký RSA Dựa vào ƣu điểm của hệ mã RSA. Chú ý rằng ai đó có thể giả mạo chữ ký của B trên một bức điện “ngẫu nhiên” x bằng cách tính x = eK(y) với y nào đó. MD5 trong việc tính kết nối các sơ đồ chữ ký điện tử sẽ loại trừ phƣơng pháp giả mạo này (sẽ trình bày trong các phần sau của tài liệu). y) = TRUE. Một biện pháp xung quanh vấn đề khó khăn này là yêu cầu các bức điện chứa đủ phần dƣ để chữ ký giả mạo kiểu này không phù hợp với toàn bộ nội dung của bức điện x trừ một xác suất rất nhỏ. q. Việc thiết lập sơ đồ xác thực chữ ký RSA rất đơn giản. Cho n = p*q. b): n=p*q. Sau đây là sơ đồ chữ ký RSA. FALSE} là những hàm sao cho mỗi bức điện x  P và mỗi chữ ký y  A thoả mãn phương trình dưới đây: Ver (x. dƣới đây là định nghĩa một hệ chữ ký điện tử. 1. 2) A là tập hữu hạn các chữ ký có thể. Đặt P = A = Zn và định nghĩa: K = {(n. a. trong đó p. nếu có đủ thời gian. q. K.2.

Một phiên bản sửa đổi hệ này đƣợc Học viện Quốc gia tiêu chuẩn và kỹ thuật (NIST) đƣa ra nhƣ một chuẩn của chữ ký điện tử. α.a*)k-1 mod (p – 1). Sơ đồ chữ ký ElGammal đƣợc miêu tả nhƣ sau: Cho p là một số nguyên tố như là bài toán logarit rời rạc trong Z p.y) = TRUE  x ≡ yb (mod n) với x. Một vấn đề nảy sinh nếu A truyền (x. Sau đó anh ta dùng hàm xác minh công khai của A để kiểm tra xem verA(x. k) = (. sau đó xác minh chữ ký y trên x nhờ dùng verA. rồi sau đó mới ký lên bản mã nhận đƣợc thì sao? Khi đó. A = (Zp*)*Zp-1. 1. a. A sẽ tính toán chữ ký của mình y = sigA(x) và sau đó mã hoá cả x và y sử dụng khoá công khai eB của B. nghĩa là có rất nhiều giá trị chữ ký cho cùng một bức điện cho trƣớc. β) và chọn một số ngẫu nhiên k  Zp-1*. y) kiểu này thì một ngƣời thứ ba C có thể thay chữ ký y của A bằng chữ ký của chính mình: y‟ = sigC(eB(x)) Chú ý rằng.y) = TRUE hay không. ) trong đó:  = αk mod p  = (x . A sẽ tính: y = sigA(eB(x)) A sẽ truyền cặp (z. y). chữ ký của C đƣợc B xác minh bằng ver C và do đó. kết quả nhận đƣợc là z = eB(x. Hệ chữ ký ElGammal Hệ chữ ký ElGammal đƣợc đƣa ra vào 1985. định nghĩa: sigK(x. chữ ký đƣợc kết hợp với hàm mã hoá công khai. Song nếu đầu tiên A mã hoá x . y  Zn. α và β là công khai. α  Zp* là một phần tử nguyên tử và P = Zp*. . Bản mã z sẽ đƣợc gửi tới B. hầu hết ngƣời sử dụng đƣợc khuyến nghị “ký trƣớc khi mã”. B sẽ giải mã z và nhận đƣợc x. B cho rằng bản rõ x xuất phát từ C. đầu tiên anh ta giải mã với hàm giải mã dB của mình để nhận đƣợc (x. Hệ chữ ký ElGammal đƣợc thiết kế riêng biệt cho mục đích chữ ký. Khi đó nếu C truyền (z. khi B nhận đƣợc z. a. Hệ chữ ký ElGammal là không xác định. ) = TRUE  β ≡ αx (mod p). Giả sử A muốn gửi một bức điện đã đƣợc mã hoá và đã đƣợc ký đến cho B.   Zp* và   Zp-1. α.Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉ sigK(x) = xa mod n và verK(x. y). định nghĩa: ver(x. Với K = (p. và định nghĩa: K = {(p. y‟) đến B. y) tới B. Với bản rõ x cho trƣớc. Thuật toán xác minh phải có khả năng nhận bất kỳ giá trị chữ ký nào nhƣ là việc xác thực. β) : β ≡ αa (mod p)} trong đó giá trị p. trái ngƣợc với RSA thƣờng đƣợc sử dụng cho cả mục đích mã hoá công khai và chữ ký.3. Do khó khăn này. [5] 103 . C có thể ký lên bản mã eB(x) ngay cả khi anh ta không biết bản rõ x. Với x. [5] Thông thƣờng. còn a là bí mật.

β = 132. Nếu C chọn một giá trị  và cố gắng tìm .j-1 (mod p-1) x = . Tuy nhiên có một lý thuyết mà C có thể ký lên một bức điện ngẫu nhiên bằng cách chọn đồng thời . Cho i. Bây giờ B muốn ký lên bức điện x = 100 và anh ta chọn một giá trị ngẫu nhiên k = 213 (chú ý là UCLN(213. ) là giá trị chữ ký cho bức điện x. α = 2.1) = 1. Sau đó tính:  = 2213 mod 467 = 29  = (100 – 127*29)431 mod 466 = 51. p . Kể thứ ba C sẽ chọn i = 99 và j = 179. α = 2. Mặt khác. B sẽ tính toán chữ ký bằng việc sử dụng cả giá trị bí mật a (một phần của khoá) và số bí mật ngẫu nhiên k (giá trị để ký bức điện). ta chọn p = 467.Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉ Nếu chữ ký là đúng thì việc xác nhận thành công khi: β ≡ αaαk (mod p) ≡ αx (mod p). Việc xác minh sẽ thực hiện nhƣ sau: β ≡    ( i  j )   i j i j 1 j (mod p) ≡     ij i j 1 i  j    (mod p) i j  ij ≡ 1  i j 1 (mod p)  ij (mod p) ≡ ≡ αx (mod p).ij-1 (mod p-1). Ta tính: β = αa mod p = 2127 mod 467 = 132. Anh ta sẽ tính: 104 . Cả hai việc này đều không thể thực hiện đƣợc. Việc xác minh có thể thực hiện đƣợc chỉ với các thông tin đƣợc công khai: Ví dụ: Chúng ta chọn p = 467. Giả sử kẻ thứ ba C muốn giả mạo chữ ký của B trên bức điện x mà không biết số bí mật a. nếu đầu tiên anh ta chọn  để cố gắng tìm  thì anh ta phải tính   = αx (mod p). Nhƣ vậy. j là số nguyên với 0 ≤ i. ta xem (. Ví dụ: Nhƣ ví dụ trên. Sau đó tính:  = αiβj mod p  = . và UCLN(j.  và x. 466) = 1 và 213-1 mod 466 = 431). anh ta phải tính một hàm logarit rời rạc logαx-. Bất cứ ai cũng có thể kiểm tra chữ ký này bằng cách tính: 132292951 ≡ 189 (mod 467) 2100 ≡ 189 (mod 467). a = 127. j ≤ p .2. trong đó: a + k ≡ x (mod p -1).

Vì UCLN(‟. Ta đặt tiếp: x‟ = ‟ = p‟ = x 1  x2 d 1   2 d p 1 d Cuối cùng.x2 = k(1 .2) và d | (p . 1) là chữ ký trên bức điện x1 và (. j.1). λ = hαiβj mod p μ = λ(h . 41) là giá trị chữ ký cho bức điện 331. nghĩa là với cặp (. 2) là chữ ký trên bức điện x2. Điều thứ ba là vấn đề sai lầm của ngƣời ký khi sử dụng cùng một giá trị k trong việc ký hai bức điện khác nhau.Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉  = 299132179 mod 467 = 117  = -117*151 mod 466 = 41 x = 99*44 mod 466 = 331 Cặp giá trị (117. Đặt  = αk. h ≤ p-2 và UCLN(h j. Ta có thể kiểm tra: βλλμ = αx‟ mod p.x2). Việc kiểm tra sẽ thực hiện: β 1 ≡ α x1 (mod p) β  2 ≡ α x 2 (mod p). p-1) = 1.2) (mod p-1).j)-1 mod (p-1). khi đó: x1 . ta đƣợc: x‟ ≡ k‟ (mod p‟). μ) là cặp giá trị chữ ký của bức điện x‟. Cho h. Một phƣơng pháp thứ hai có thể giả mạo chữ ký là sử dụng lại chữ ký của bức điện trƣớc đó. (λ. ) là giá trị chữ ký của bức điện x. trong đó 0≤ i. Bây giờ đặt d = UCLN(1 .2. Việc xác minh đƣợc thực hiện nhƣ sau: 13211711741 ≡ 303 (mod 467) 2331 ≡ 303 (mod 467). i và j là các số nguyên. Vì d | (1 . giá trị k sẽ đƣợc xác định nhƣ sau: 105 .j)-1 mod (p-1) x‟ = λ(hx + i)(h . nó sẽ đƣợc C ký cho nhiều bức điện khác. p . Do đó:  x1  x2   1  2 (mod p) . Cho (. p‟) = 1 nên ta có:  = (‟)-1 mod p‟ Nhƣ vậy.1) nên nó cũng chia hết cho (x1 . Và do đó.

ta có thể tìm đƣợc giá trị k duy nhất bằng hàm kiểm tra:  ≡ αk mod p.2. Đây là một biến thể của thuật toán ElGammal. Điều này rất quan trọng cho việc phòng ngừa về độ an toàn của chữ ký đƣợc đƣa ra bởi một hệ thống bảo mật. 1. Cho ứng dụng tiềm năng này. trong đó 2511+64t < p < 2512+64t và q phải chia hết (p-1) (hay q là một ươc nguyên tố của p-1). Nếu α = 1 thì quay lại bước trên. vì vậy nó cũng giống nhƣ việc cần thiết để xác minh chữ ký sau rất nhiều năm bức điện đƣợc ký. 2) Chọn t sao cho 0 ≤ t ≤ 8 và chọn một số nguyên tố p. Đầu tiên chúng ta hãy tìm hiểu động cơ của sự thay đổi này. Thuật toán chữ ký điện tử (Digital Signature Algorithm) Tháng 8/1991. Chuẩn chữ ký điện tử Chuẩn chữ ký điện tử (DSS) đƣợc sửa đổi từ hệ chữ ký ElGammal. Cách này đƣợc thực hiện nhờ việc chia nhỏ Zp* thành các trƣờng có kích thƣớc 2160. Nó đƣợc công bố tại hội nghị Tiêu chuẩn xử lý thông tin Liên Bang (FIPS) vào 19/05/1994 và trở thành chuẩn vào 01/12/1994. nhằm thực hiện một chữ ký ngắn hơn nhƣ mong muốn. khoá để ký là (p. Nói cách khác.4. Vì hệ chữ ký ElGammal không đảm nhận đƣợc điều này. Chuẩn chữ ký điện tử (Digital Signature Standard) 1. một bức điện có thể đƣợc mã hoá và giải mã một lần. Chọn một giá trị g  Zp* và tính α = g(p-1)/q mod p. để mỗi 160-bit bức điện đƣợc ký sử dụng một chữ ký 320-bit.1.4. 1. q. Như vậy . NIST đã đƣa ra thuật toán chữ ký điện tử (DSA) là cơ sở cho chuẩn chữ ký điện tử. Việc thay đổi này sẽ làm thay đổi giá trị : 106 . ngay cả một thuật toán modulo 512-bit dùng để ký cũng phải thực hiện việc tính toán đến 1024-bit. ́ 3) 4) 5) 6) Bây giờ. DSS cũng có thể sử dụng bởi ngƣời thứ ba để xác định tính xác thực của chữ ký và dữ liệu trong nó. DSS sử dụng một khoá công khai để kiểm tra tính toàn vẹn của dữ liệu nhận đƣợc và đồng nhất với dữ liệu của ngƣời gửi. Tất nhiên p nên có ít nhất 512-bit.Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉ k = x‟ (mod p‟) = x‟ + ip‟ (mod p) Với 0 ≤ i ≤ d-1.4. chẳng hạn nhƣ các bản hợp đồng. Tuy nhiên. và nhiều ngƣời cho rằng độ dài của p nên là 1024-bit nhằm chống lại việc giả mạo trong tƣơng lai. Tính y = αa mod p. vì vậy nó đáp ứng cho việc sử dụng của bất kỳ hệ thống bảo mật nào đƣợc biết là an toàn lúc bức điện đƣợc mã hoá. nhƣng việc tính toán đƣợc thực hiện với 512-bit modulo p. DSS đã sửa đổi hệ chữ ký ElGammal cho phù hợp theo cách này một cách khéo léo. sau đó sẽ tìm hiểu thuật toán của DSS. Trong rất nhiều trƣờng hợp. có rất nhiều card thông minh đƣợc đƣa ra. 1) Chọn một số nguyên tố q với 2159 < q < 2160. một bức điện đƣợc ký đảm nhiệm chức năng nhƣ một văn bản hợp pháp. (chọn lại giá trị g cho phù hợp) Chọn một số nguyên ngẫu nhiên a để 1 ≤ a ≤ q-1. α. y) được công khai và a là khoá bí mật. việc thực hiện này cần một giá trị lớn modulo p. tạo ra một số α duy nhất cho q trong trường Zp*.

p . p-1) = 1 để (1.2.4.4.1) → (1.1). Ví dụ: Chúng ta chọn q = 101 và p = 78*q + 1 = 7879 và g = 3 là một nguyên tố trong Z7879. β và  có thể đƣợc tối giản trong modulo p mà không ảnh hƣởng gì đến việc xác minh chữ ký.1) Nếu UCLN(x + α. và α là một số thứ q của 1 mod p. do đó (6. 107 . [5] Chú ý rằng.1) sẽ biến đổi thành:  x   ≡  (mod p). ta có thể tính: α = 378 mod 7879 = 170. Vì vậy . ) = TRUE  (  e1  e2 mod p) mod q = .2.   Zq. α.2. ) trong đó:  = (αk mod p) mod q  = (x + a*)k-1 mod q. do đó: β = αa mod 7879 = 4567. Sơ đồ thuật toán nhƣ sau: Cho p là một số nguyên tố 512-bit trong trường logarit rời rạc Zp. việc xác minh được thực hiên bằng cách tính: e1 = x-1 mod q e2 = -1 mod q ver(x. và định nghĩa: K = {(p.4. Chúng ta cho q là một số nguyên tố 160-bit sao cho q | (p-1). q. Cho α  Zp*. định nghĩa: sigK(x. với DSS thì   0 (mod q) vì giá trị: -1 mod q cần cho việc xác minh chữ ký (điều này cũng tƣơng tự nhƣ việc yêu cầu UCLN(.2)). còn a là bí mật. α và β là công khai. a. Chọn a = 75. Vì vậy : k-1 mod 101 = 99. B muốn ký một bức điện x = 1234. q. Với x  Zp* và . Khi B tính một giá trị  ≡ 0 (mod q) trong thuật toán ký.4. β) và chọn một số ngẫu nhiên k (1 ≤ k ≤ q-1). (1. anh ta chọn một số ngẫu nhiên k = 50. Điều này cũng làm cho giá trị kiểm tra cũng thay đổi: αxβ ≡  (mod p). a. Với K = (p. α. Bây giờ. 1 1 (1. Do đó α.1) = 1 thì sẽ tồn tại -1 mod (p . k) = (.2.Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉  = (x + α)k-1 mod(p .2) Đây chính là sự đổi mới của DSS. . P = Zp*. β) : β ≡ αa (mod p)} trong đó giá trị p. A = Zq*Zq. anh ta nên bỏ nó đi và chọn một số ngẫu nhiên k mới. thì β và  cũng là số thứ q của 1 mod p. q là một số nguyên tố 160-bit và q chia hết (p-1).1).

Mô hinh ƣng dụng của chƣ̃ ký điê ̣n tƣ ̉ ̀ ́ Khác với chữ ký thông thƣơng trên thƣ̣ c tế .ngƣời gửi Ký S Khóa công khai của B Kiểm tra chữ ký B . Ngoài ra. 1. NIST đã thay đổi chuẩn này để có thể thay đổi kích thƣớc moduloe (chia bởi 64) thành một dãy từ 512 đến 1024-bit.Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉ Tiếp đó:  = (17050 mod 7879) mod 101 = 2518 mod 101 = 94  = (1234 + 75*94)99 mod 101 = 97. các chữ ký điện tử là một thông tin ở ̀ dạng số hó a đƣợ c tạo ra tƣ văn bản sƣ dụng hệ chƣ̃ ký điện tƣ và không phải là một ̉ ̉ ̀ phầ n của văn bản . đã có nhiều phê bình đƣa ra. ngƣơi nhận nhận đƣợ c thông điệp và chƣ̃ ký tƣơng ứng sẽ thực hiện thuật ̀ toán kiểm tra xem chữ ký có đúng là chữ ký của ngƣời gửi lên văn bản nhận đƣợc hay không. S AES C2 C2 AES P. S Khóa bí mật của A P A .1: Mô hình ƣng dụng của chƣ̃ ký điện tƣ ̉ ́ 108 . 97) cho bức điện 1234 đƣợc xác thƣc nhƣ sau: -1 = 97-1 mod 101 = 25 e1 = 1234*25 mod 101 = 45 e2 = 94*25 mod 101 = 27 (17045456727 mod 7879) mod 101 = 2518 mod 101 = 94. Trái ngƣợc với hệ chữ ký RSA thì việc xác minh công khai là rất nhanh chóng (mà ta biết trong thƣơng mại điện tử việc xác minh là rất quan trọng và đòi hỏi thời gian thực hiện phải nhanh chóng).5. điều mà nhiều ngƣời không muốn.ngƣời nhận P Hình 5. Chẳng hạn nhƣ kích cỡ của moduloe p bị cố định 512-bit. chƣ̃ ký điện tƣ sẽ đƣợ c gƣi đi cùng vơi ̉ ̉ ́ thông điệp . Vì vậy. Do đó sau khi đƣợ c tạo ra . Cặp chữ ký (94. một sự phê bình khác về DSS là chữ ký đƣợc tạo ra nhanh hơn so với việc xác minh nó. Mô hinh ƣng dụng này có thể đƣợ c minh họa qua hinh vẽ sau: ̀ ́ ̀ Khóa công khai của B Khóa phiên K RSA C1 Khóa bí mật của B C1 RSA Khóa phiên K P. Kể từ khi DSS đƣợc đề xuất vào năm 1991.

Ngoài ra. Khái niệm Ta thấy rằng các hệ chữ ký đƣợc miêu tả ở trên chỉ cho phép ký các bức điện ngắn.y) có bằng TRUE hay không. chúng ta sẽ kết thúc với một lƣợng chữ ký khổng lồ. Hàm Băm (Hash Function) 2. ngƣời ta sử dụng hàm Băm (hash function). Nhƣ vậy với những bức điện hàng Megabyte thì chúng ta phải làm thế nào! Một cách đơn giản để giải quyết vấn đề này là chia bức điện lớn thành những đoạn nhỏ 160-bit.y verK(y) 0: true x. Để giải quyết tất cả các rắc rối này. Anh ta phát cặp (x.y 1: false z = h(x) Hình 5. nghĩa là có hai tin x  x‟ mà giá trị Băm của chúng là giống nhau.Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉ 2. Nghiêm trọng hơn là với rất nhiều đoạn đƣợc ký nhƣ vậy sẽ dẫn đến khi sắp xếp lại và có thể một vài đoạn bị bỏ đi (mất đi tính toàn vẹn).1.y) lên kênh truyền.2. bây giờ việc kiểm tra có thể thực hiện bằng việc tính lại cốt của bức điện z = h(x). Định nghĩa: Một hàm Băm H sẽ lấy ở đầu vào một thông tin X có kích thƣớc biến thiên và sinh kết quả là một chuỗi có độ dài cố định. Đặc tính của hàm Băm Một vấn đề cần bàn ở đây là tính đụng độ của hàm Băm. Rõ ràng với không gian giá trị Băm nhỏ hơn rất nhiều so với không gian tin về mặt kích thƣớc thì chắc chắn sẽ tồn tại đụng độ. x z = h(x) y = sigK(z) x. Theo nguyên lý Diricle: nếu có n+1 con thỏ được bỏ vào n cái chuồng thì phải tồn tại ít nhất một cái chuồng mà trong đó có ít nhất là hai con thỏ ở chung [9]. Sau đây chúng ta sẽ xét các dạng tấn công có thể có. và sau đó ký lên mỗi đoạn nhỏ đó. Nhƣng có một vài vấn đề trong việc tạo chữ ký điện tử. đầu tiên anh ta tính cốt của bức điện z = h(x) (độ dài cố định) và sau đó ký y = sigK(z). Ví dụ nhƣ khi B muốn ký một bức điện x (độ dài bất kỳ). Đầu tiên là với một bức điện dài. điều bất tiện là hầu hết các hệ chữ ký đều rất chậm. 160-bit bức điện đƣợc ký với 320-bit. tức h(x) = h(x‟).2: Sơ đồ chữ ký sử dụng hàm Băm 2. sau đó kiểm tra verK(z. từ đó rút ra các tính chất của hàm Băm: 109 . điều này cũng tƣơng tự nhƣ mã hoá một chuỗi dài bản rõ bằng việc mã hoá từng ký tự bản rõ sử dụng cùng một khoá. đƣợc gọi là cốt của bức điện (message digest). Ví dụ nhƣ trong DSS.

Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉ Dạng tấn công thứ nhất là ngƣời C bắt đầu với một bức điện đƣợc ký có giá trị (x, y), trong đó y = sigK(h(x)) (cặp (x, y) có thể là bất kỳ bức điện trƣớc đó mà B đã ký). Sau đó, C tính z = h(x) và cố gắng tìm x‟  x để h(x‟) = h(x). Nếu C làm đƣợc điều này thì cặp (x‟, y) sẽ là một bức điện đƣợc ký có giá trị (một bức điện giả mạo có giá trị). Để ngăn cản việc này, hàm Băm h phải thoả mãn tính chất sau: Tính chất 1: Một hàm Băm h có tính phi đụng độ cao khi với một bức điện x cho trước , không tìm ra một bức điện x’  x sao cho h(x’) = h(x). [5] Một dạng tấn công khác mà ngƣời C có thể làm là: đầu tiên anh ta tìm 2 bức điện x  x‟ sao cho h(x) = h(x‟). Sau đó C đƣa bức điện x cho B và thuyết phục B ký vào cốt bức điện h(x); và vì vậy, anh ta tìm đƣợc y. Nhƣ vậy, cặp (x‟, y) là một cặp chữ ký giả có giá trị. Điều này là nguyên nhân mà việc thiết kế hàm Băm phải thoả mãn tính chất 2 nhƣ sau: Tính chất 2: Một hàm Băm h có tính đụng độ cao khi không thể tìm ra những bức điện x và x’ sao cho x’  x và h(x’) = h(x). [5] Dạng tấn công thứ 3 là chọn một giá trị cốt z ngẫu nhiên. Ngƣời C sẽ tính một chữ ký với một giá trị ngẫu nhiên z, sau đó anh ta tìm một bức điện x sao cho z = h(x). Nếu anh ta làm đƣợc điều này thì cặp (x, y) là cặp chữ ký giả có giá trị. Nhƣ vậy một tính chất nữa mà h cần thoả mãn là tính một chiều: Tính chất 3: Một hàm Băm h có tính một chiều khi với cốt của một bức điện z cho trước không thể tìm được một bức điện x sao cho h(x) = z. [5] 2.3. Birthday attack Nhƣ đã biết, một dạng tấn công có khả năng đối với các hệ chữ ký điện tử có dùng hàm Băm là tìm cách tạo ra những văn bản x và x‟ có nội dung khác nhau (một có lợi và một là bất lợi cho bên ký) mà giá trị Băm giống nhau. Kẻ địch có thể tìm cách tạo ra một số lƣợng rất lớn các văn bản có nội dung không thay đổi nhƣng khác nhau về biểu diễn nhị phân (đơn giản là việc thêm bớt khoảng trắng hay dùng nhiều từ đồng nghĩa để thay thế ...), sau đó sử dụng một chƣơng trình máy tính để tính giá trị Băm của các văn bản đó và đem so sánh với nhau để hi vọng tìm ra một cặp văn bản đụng độ (sử dụng phƣơng pháp thống kê). Nhƣng việc này đòi hỏi số văn bản cần đƣợc tính giá trị Băm phải lớn hơn kích thƣớc không gian Băm rất nhiều. Chẳng hạn nhƣ nếu hàm Băm có không gian Băm 64bit thì số lƣợng văn bản cần đƣợc đem ra nạp vào chƣơng trình phải ít nhất 2 64 (với một máy tính có thể thực hiện việc Băm 1 triệu bức điện trong 1 giây, thì phải mất 6000.000 năm tính toán [6]) Tuy nhiên nếu kẻ địch thử với lƣợng văn bản ít hơn nhiều, trong phạm vi có thể tính đƣợc thì xác suất để tìm đƣợc đụng độ sẽ nhƣ thế nào? Câu trả lời là “có thể thực hiện đƣợc”. Bản chất của hiện tƣợng này đƣợc minh hoạ rõ thông qua phát biểu sau, thƣờng đƣợc gọi là nghịch lý ngày sinh (birthday paradox):

110

Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉ Trong một nhóm có 23 người bất kỳ , xác suất để có hai người có cùng ngày sinh nhật ít nhất là ½. [5] Một cách tổng quát, giả sử một hàm Băm có n giá trị Băm khác nhau, nếu chúng ta có k giá trị Băm từ k thông tin khác nhau đƣợc chọn ngẫu nhiên, thì xác suất để không xảy ra đụng độ là: (1-

1 2 k 1 )(1- ) ... (1)= n n n i  1 , thì n
 k ( k 1) 2n
k 1

 (1  n ) .
i 1

k 1

i

Với

k 1 i (1  )   e n  e  n i1 i 1

i

 k ( k 1) 2n

. Do đó, xác suất để xảy ra đụng độ ít

nhất là 1  e

. Giả sử gọi xác suất trên là  ta có:

1 e

 k ( k 1) 2n

  (*)

2 Suy ra : k  k  2n log

1 1 , suy ra: k  2n log (**) 1  1 
1 vẫn khá nhỏ nên k là 1 

Theo công thƣc (**) này khi giá trị e rất gần với 1 thì log ́ tỉ lệ với

n . Vơi ε = 0.5 ta có k≈1.1774 n (***). ́

Ví dụ: Vơi k = 23 là số ngƣời, n = 365 là số ngày trong năm thì xác xuất tồn tại hai ngƣời ́ có cùng sinh nhật sẽ là  = 1 – 2,7-0,7  0,5075. Và đây chính là nghịch lý ngày sinh đã phát biểu ở trên. Hoặc chúng ta có thể thay n = 365 vào công thức (***) sẽ nhận đƣợc k = 22.49 ≈23. Nghịch lý ngày sinh hay công thƣc (*) cho phép chúng ta dƣ̣ đoán đƣợ c chặn dƣơi ́ ́ của số lƣợng phép thử cần thực hiện để tìm ra đụng độ của một hàm băm . Một hàm băm 40-bit sẽ là không an toàn vì chỉ cầ n thƣ 220 (khoảng 1 tỉ) phép thử chúng ta đã có xác ̉ suấ t đụng độ là 50%. Tƣơng tƣ̣ , với một hàm Băm có không gian Băm 64-bit nêu trên thì số phép thƣ để ̉ có xác suất đụng độ là 50% sẽ là 232, điều này là có khả năng thức hiện đƣợc. Ví dụ với loại máy tính nêu trên chỉ mất khoảng 1 giờ tính toán. Hàm băm đƣợc coi là an toàn là các hàm băm 128 bit (nhƣ MD5 ..) vì khi đó số lƣợ ng phép thƣ sẽ là 264. Tuy nhiên hiện nay vơi sƣ̣ phát triể n của các thuật toán thám ̉ ́ mã hàm băm mới đƣợc phát hiện các hàm băm 128 cũng đƣợc khuyến nghị là không nên sƣ dụng trong các hệ thố ng bảo mật mơi . Các hàm băm đƣợc khuyến nghị thay th ế cho ̉ ́ MD5 là các hàm băm 164 bit nhƣ DSS, SHA2. 2.4. Một số hàm Băm nổi tiếng 2.4.1. MD5 (Message Digest) Ronald Rivest là ngƣời đã phát minh ra các hàm Băm MD2, MD4 (1990) và MD5 (1991). Do tính chất tƣơng tự của các hàm Băm này, sau đây chúng ta sẽ xem xét hàm

111

Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉ Băm MD5, đây là một cải tiến của MD4 và là hàm Băm đƣợc sử dung rộng rãi nhất, nguyên tắ c thiế t kế của hàm băm này cũng là nguyên tắ c chung cho rấ t nhiề u các hàm băm khác. a. Miêu tả MD5: Đầu vào là những khối 512-bit, đƣợc chia cho 16 khối con 32-bit. Đầu ra của thuật toán là một thiết lập của 4 khối 32-bit để tạo thành một hàm Băm 128-bit duy nhất. Đầu tiên, ta chia bức điện thành các khối 512-bit, với khối cuối cùng (đặt là x và x < 512-bit) của bức điện, chúng ta cộng thêm một bit 1 vào cuối của x, theo sau đó là các bit 0 để đƣợc độ dài cần thiết (512 bit). Kết quả là bức điện vào là một chuỗi M có độ dài chia hết cho 512; vì vậy ta có thể chia M ra thành các N word 32-bit (N word này sẽ chia hết cho 16). Bây giờ, ta bắt đầu tìm cốt của bức điện với 4 khối 32-bit A, B, C và D (đƣợc xem nhƣ thanh ghi) : A = 0x01234567 B = 0x89abcdef C = 0xfedcba98 D = 0x76543210. ngƣời ta thƣờng gọi A, B, C, D là các chuỗi biến số (chaining variables). Bức điện đƣợc chia ra thành nhiều khối 512-bit, mỗi khối 512-bit lại đƣợc chia ra 16 khối 32-bit đi vào bốn vòng lặp của MD5. Giả sử ta đặt a, b, c và d thay cho A, B, C và D đối với khối 512-bit đầu tiên của bức điện. Bốn vòng lặp trong MD5 đều có cấu trúc giống nhau. Mỗi vòng thực hiện 16 lần biến đổi: thực hiện với một hàm phi tuyến của 3 trong 4 giá trị a, b, c và d; sau đó nó cộng kết quả đến giá trị thứ 4, tiếp đó cộng với một khối con 32-bit và một hằng số. Sau đó, nó dịch trái một lƣợng bit thay đổi và cộng kết quả vào một trong 4 giá trị a, b, c hay d. Kết quả cuối cùng là một giá trị mới đƣợc thay thế một trong 4 giá trị a, b, c hay d.

Khối của bức điện

A B C D

Vòng 1

Vòng 2

Vòng 3

Vòng 4

A B C D

Hình 5.3: Sơ đồ vòng lặp chính của MD5

112

Mj.b.c. b.Mj.ti) đƣợc biểu diễn a = b + ((a + I(b. a. và mỗi bit của kết quả cũng độc lập và ngang bằng nhau. 0x698098d8) FF (d.Mj.b. 0x8b44f7af) 113 . d. M0. a. 0xfd469501) FF (a. a.s. Bốn vòng (64 bƣớc) sẽ thực hiện nhƣ sau: Vòng 1: FF (a.s. M1. trong đó:  là XOR.d) + Mj + ti) <<< s) HH(a.c.Mj. 0x4787c62a) FF (c. b. Nếu Mj là một biểu diễn của khối con thứ j (j = 16) và <<<s là phép dịch trái của s bit. d.Y. b. d. c. a. M6. b. 7. 0xf57c0faf) FF (d. a. M5. là OR. 17. và  là NOT. d. c.d) + Mj + ti) <<< s) II(a.s.4: Sơ đồ một vòng lặp MD5 Có bốn hàm phi tuyến. d.d. M3.c. 0xc1bdceee) FF (a. c. 0xe8c7b756) FF (c. b. thì các vòng lặp có thể biểu diễn nhƣ sau: FF(a. 12.c. c.Z ) = (X  Y) ((X)  Z) G(X. M9. a.d. 12. 7.d) + Mj + ti) <<< s) GG(a. d.Y. M4. c.d. c. 0xa8304613) FF (b. M2. a.c.Y. 22.c. 0x242070db) FF (b.c.ti) đƣợc biểu diễn a = b + ((a + G(b. M7. d.ti) đƣợc biểu diễn a = b + ((a + H(b. 12.c. 17.  là AND. Những hàm này đƣợc thiết kế sao cho các bit tƣơng ứng của X. b.Z ) = ((X  Z) (Y  (Z))) H(X.Z ) = Y  (X (Z)).Z ) = X  Y  Z I(X. c. 0x76aa478) FF (d.Y. Y và Z là độc lập và không ƣu tiên. M8.s.Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉ a Mj ti b Hàm phi tuyến c <<< s d Hình 5. 22. mỗi hàm này đƣợc sử dụng cho mỗi vòng: F(X.ti) đƣợc biểu diễn a = b + ((a + F(b.d) + Mj + ti) <<< s). b.b.d.b. 7. c. b.

c. M1. M13. M11. 0xe7d3fbc8) GG (a. 0x676f02d9) GG (b. 9. a. c. d. 0x04881d05) HH (a. a. d. b. 0xd8a1e681) GG (b. d. 12. c. d. 0xc33707d6) GG (c. 16. 9. b. 0x8771f681) HH (c. M11. M7. 16. 0x289b7ec6) HH (d. 20. b. 0xd4ef3085) HH (b. b. 16. 0xfcefa3f8) GG (c. M10. b. c. b. M15. 23. 0x1fa27cf8) HH (b. 0x49b40821). a. c. a. d. 0x02441453) GG (c. 5. 0xffff5bb1) FF (b. Vòng 2: GG (a. 4. c. M0. 10. a. d. 0xa4beea44) HH (d. d. 0x6b901122) FF (d. a. M8. 0xd9d4d039) HH (d. M3. 9. a. c. d. M0. 5. 22. a. d. c. d. d. d. c. 23. c. c. d. c. 0xe6db99e5) HH (c. 0x265e5a51) GG (b. 11. 17. M3. 0x21e1cde6) GG (d. a. b. a. a. 7. M4. 11. M11. 4. M12. 0xa9e3e905) GG (d. d. 0xa679438e) FF (b. c. 0xc4ac5665). a. b. b. 0xfffa3942) HH (d. d. M1. M6. 0xf4292244) II (d. b. b. c. 23. 0xfde5380c) HH (a. d. c. d. d. d. b. M9. 0x6d9d6122) HH (b. b. M14. b. 0x455a14ed) GG (a. b. d. c. b. 0xe9b6c7aa) GG (a. d. 0x895cd7be) FF (a. 11. 0x61e2562) GG (d. d. a. b. M9. M2. a. a. c. 0xf4d50d87) GG (b. a. M7. M13. d. b. 23. c. 5. 14. 14. a. 6. c. 0xfd987193) FF (c. Vòng 3: HH (a. a. b. 20. b. c. M10. 0x4bdecfa9) HH (c. b. 4. c. a. M12. M12. a. 0xc040b340) GG (c. M13. b. d. 0xf6bb4b60) HH (b. 20. a. 16. b. c. 22. d. 5. a. c. 14. d. d. 20. b. b. c. M15. M0. M14. M5. c. 9. a. 0xbebfbc70) HH (a.Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉ FF (c. M4. 0xeaa127fa) HH (c. c. c. c. M14. b. a. a. M6. a. b. a. b. M8. 11. Vòng 4: II (a. c. d. M15. 14. 0x432aff97) 114 . d. M2. 4. a. 0xd62f105d) GG (d. 0x8d2a4c8a). b. M10. M5. a. M7. d. 17. b. c. a.

0x8f0ccc92) II (c.  Mỗi bƣớc đƣợc cộng kết quả của bƣớc trƣớc nó. 15. M14. 0x4e0811a1) II (a. 32 Sau tất cả những bƣớc này a. b. b. Mỗi bƣớc đƣợc cộng thêm một hằng số duy nhất. 15. a. c.Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉ II (c. c. M13. 0xf7537e82) II (d. Những hằng số ti đƣợc chọn theo quy luật sau: ở bƣớc thứ i giá trị ti là phần nguyên của 2 *abs(sin(i)). M4. 0xfc93a039) II (a. a. b. 0x655b59c3) II (d. 0x6fa87e4f) II (d. c. c. 15. 2. a. M12. b. 6. M6. và thuật toán tiếp tục với khối dữ liệu 512-bit tiếp theo cho đến hết bức điện. 10. C và D để cho kết quả đầu ra. 0x85845dd1) II (a. b. 21. 21. c. M3. 21. làm các quá trình có tính liên kết. 21. Đầu ra cuối cùng là một khối 128-bit của A. c. tạo ra 160-bit giá trị Băm. B. d. a. d. c.  Hàm G ở vòng 2 thay đổi từ ((X  Y) (X  Z) (Y  Z)) thành ((X  Z) (Y  (Z))) nhằm giảm tính đối xứng của G (giảm tính tuyến tính). SHA đƣợc thiết kế dựa trên những nguyên tắc của MD4/MD5. SHA (Secure Hash Algorithm) Năm 1995. d. a. a. C và D. b. 10. 15. d. Điều này phá vỡ quy luật thiết kế MD5 là chống lại sự đụng độ. đây chính là hàm Băm nhận đƣợc. a. M2. M11. b. 6. M5. a. 6. a. den Boer và Bosselaers đã tìm ra đụng độ trong việc sử dụng hàm nén (vòng 2 và 3) của MD5. 0xffeff47d) II (b.. B. 0xa3013414) II (b. M9. d. a.  Số lƣợng lƣợng bit dịch trái của mỗi vòng đƣợc tối ƣu và các bƣớc dịch ở mỗi vòng là khác nhau. b. d. c. M15. 0x2ad7d2bb) II (b. b. c và d lần lƣợt đƣợc cộng với A. d. Năm 1993. nhƣng MD5 vẫn là hàm Băm đƣợc sử dụng rộng rãi hiện nay. phụ thuộc lẫn nhau.4. Tính bảo mật trong MD5: Ron Rivest đã phác hoạ những cải tiến của MD5 so với MD4 nhƣ sau:   Vòng thứ 4 đƣợc thêm vào (còn MD4 chỉ có 3 vòng). M10. c. d. a. Miêu tả SHA: 115 .2. 0xeb86d391). 0xfe2ce6e0) II (c. b. tổ chức NIST cùng NSA đã thiết kế ra thuật toán hàm Băm an toàn (SHA) sử dụng cho chuẩn chữ ký điện tử DSS. M8. c.63] đƣợc tính theo radian. M1. a.  Việc các khối con bị thay đổi khi vào vòng 2 và vòng 3 làm cho khuôn dạng cấu trúc vòng lặp thay đổi theo. trong đó i = [0. d. 0xbd3af235) II (c. b. d. 0xab9423a7) II (b. b. d. 10.

c. bức điện đƣợc cộng thêm một bit 1và các bit 0 ở cuối bức điện để bức điện có thể chia hết cho 512. d và e. D và E đối với khối 512-bit đầu tiên của bức điện. sau đó cũng đƣợc cộng và dịch nhƣ trong MD5.Y.Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉ Cũng giống với MD5. b. C.Y. Ta cũng đặt là a. SHA có bốn vòng lặp chính với mỗi vòng thực hiện 20 lần biến đổi: bao gồm thực hiện với một hàm phi tuyến của 3 trong 5 giá trị a. d và e thay cho A. Ta có thể miêu tả một vòng lặp của SHA nhƣ sau: 116 .Z) = X  Y  Z với 60 ≤ t ≤ 79. SHA sử dụng 5 thanh ghi dịch: A = 0x67452301 B = 0xefcdab89 C = 0x98badcfe D = 0x10325476 E = 0xc3d2e1f0 Bức điện đƣợc chia ra thành nhiều khối 512-bit.Z) = (X  Y) ((X)  Z) với 0 ≤ t ≤ 19 ft(X. Các khối bức điện đƣợc mở rộng từ 16 word 32-bit (M0 đến M15) thành 80 word 32bit (W 0 đến W 79) bằng việc sử dụng thuật toán mở rộng: Wt = Mt với 0 ≤ t ≤ 15 Wt = (Wt-3  Wt-8  Wt-14  Wt-16) với 16 ≤ t ≤ 79. c. SHA xác lập bốn hàm phi tuyến nhƣ sau: ft(X.Z) = (X  Y) (X  Z) (Y  Z) với 40 ≤ t ≤ 59 ft(X. B.Y. Bốn hằng số sử dụng trong thuật toán là: Kt = 21/2 /4 = 0x5a827999 với 0 ≤ t ≤ 19 Kt = 31/2 /4 = 0x6ed9eba1 với 20 ≤ t ≤ 39 Kt = 51/2 /4 = 0x8f1bbcdc với 40 ≤ t ≤ 59 Kt = 101/2 /4 = 0xca62c1d6 với 60 ≤ t ≤ 79.Z) = X  Y  Z với 20 ≤ t ≤ 39 ft(X.Y. b.

for t = 0 to 79 { TEMP = (a <<< 5) + ft(b. thì vòng lặp chính của SHA nhƣ sau: a = A. } A = A + a. b. b = a. 117 . d) + e +Wt + Kt. a = TEMP. Tính bảo mật trong SHA: Để hiểu rõ hơn về tính bảo mật của SHA. B = B + b. c = b <<< 30. nhƣng SHA sử dụng cùng một hàm phi tuyến f cho cả bốn vòng. D và E chính là hàm Băm SHA 160-bit. c = C. d = c. b = B. c. ta hãy so sánh SHA với MD5 để có thể tìm ra những điểm khác nhau của hai hàm Băm này:  MD5 và SHA đều cộng thêm các bit “giả” để tạo thành những khối chia hết cho 512-bit.5: Sơ đồ một vòng lặp của SHA Nếu gọi W t là biểu diễn của khối con thứ t của bức điện đƣợc mở rộng. B. e = E.Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉ Wt ei-1 di-1 ci-1 bi-1 ai-1 Hàm phi tuyến Kt ei di ci bi ai <<< 30 <<< 5 Hình 5. C. e = d. D = D. Thuật toán tiếp tục với khối 512-bit tiếp theo cho tới khi hết bức điện. và <<<s là biểu diễn dịch trái s bit. E = E + e. D = D + d. C = C + c. và kết quả sau cùng trong 4 thanh ghi A.

xác thực hóa ngƣời dùng. điều này làm cho phƣơng pháp tấn công của Boer-Bosselaers đối với SHA bị thất bại (den Boer và Bosselaers là hai ngƣời đã phá thành công 2 vòng cuối trong MD4). hệ điề u hành . Ngƣơi dùng sẽ download cả phầ n mề m và giá tri ̣ băm ̀ nhận đƣợ c . nế u hai gi á trị này khớp nhau thì có thể đảm bảo ́ phầ n mề m không bi ̣ sƣa đổ i trên đƣơng truyề n . c hay d nhƣ trong MD5). rõ ràng việc gửi phần mềm đó ̉ ̉ ̀ tơi máy tinh của ngƣơ i dùng là không cầ n phải mã hóa . SHA sử dụng mỗi hằng số cho mỗi vòng biến đổi. các ứng dụng web . tuy nhiên nế u nhƣ phầ n mề m đó ́ ́ ̀ bị thay đổi trên đƣờng truyền (chẳ ng hạn nhƣ bi ̣ gắ n thêm các spyware . Sự khác biệt đối với SHA là cột thứ 5 đƣợc cộng (không phải b. nó có thể chống lại phƣơng pháp tấn công bằng vét cạn (kể cả birthday attack) tốt hơn so với hàm Băm MD5 128-bit. đố i sánh giá tri ̣ băm nhận đƣợ c vơi giá tri ̣ băm ́ đƣợ c cung cấ p cùng vơi phầ n mề m . thông điệp (mà trong đa số trƣờng hợp là rất lớn. Chẳ ng hạn chúng ta có một phầ n mề m mã nguồ n mơ ơ dạng setup muố n phân phố i cho ngƣơi dùng . Khi đó mỗi tài khoản của ngƣơi dùng thay vì lƣu ̉ ̀ dƣơi dạng tên truy cập (username) và mật khẩu (password) sẽ đƣợc lƣu dƣới dạng : tên ́ ngƣơi dùng. Trong hàm phi tuyến thứ 2 của MD5 có sự cải tiến so với MD4. đố i ̀ 118 . Một số ƣng dụng của hàm Băm ́ Nhƣ đã trinh bày ơ phầ n đầ u chƣơng . trong đó thay vì ký trƣ̣ c tiế p lên các văn bản . tức (X  Y) (X  Z) (Y  Z). Khi một ngƣơi dùng đăng nhập vào hệ thố ng . mật khẩ u họ nhập vào . bởi vì độ dài của hàm Băm SHA là 160-bit. hằng số dịch này là một số nguyên tố đối với độ lớn của word (giống với MD4).   Cho đến nay. Ngoài việc xử dụng vơi các hệ chƣ̃ ký điện tƣ hàm băm còn đƣ ợc sử dụng vào các mục đích khác nhƣ : xác ̉ ́ thƣ̣ c hóa thông điệp. ứng dụng chính của các hàm băm là sử ̉ ̀ dụng với các hệ chữ ký điện tử . virus …) thì sẽ rấ t nguy hiể m . 2. để lƣu mật khẩ u ngƣơi dùng ngƣơi ta cũng sƣ dụng các hàm băm hoặc các hệ mã trong các vai trò ̉ ̀ ̀ của hàm băm (không sƣ dụng khóa ). Hiện nay đa số các phầ n mề m mã nguồ n ̉ ̀ mơ đề u đƣợ c phân phố i theo cách này. SHA thì sử dụng lại hàm phi tuyến của MD4. hệ ̀ ̀ thố ng sẽ lấ y tên truy cập . ̉ Trong các hệ thố ng yêu cầ u có xác thƣ̣ c ngƣơi dùng nhƣ các hệ quản tri ̣ cơ sơ dƣ̃ ̉ ̀ liệu. kiể m tra xem có tên truy cập nào nhƣ vậy hay không . Điề u này đặc biệt quan trọng và hiệu quả bơi vì chúng ta biế t ̉ rằ ng các hệ chƣ̃ ký điện tƣ đề u làm việc vơi các phép tính số học số lơn nên bản thân ̉ ́ ́ chúng đã tƣơng đối chậm. Nế u có sẽ tiế n hành băm giá tri ̣ mật khẩ u do ngƣơi dùng nhập vào . ứng dụng dạng desktop application . tố c độ chậm) ngƣơi ta sẽ ký lên giá tri ̣ băm đại diện ̀ cho toàn bộ văn bản đó . Đối với các ứng dụng không cần giữ bí mật thông điệp mà chỉ cần đảm bảo thông điệp không bi ̣ thay đổ i trên đƣơng truyề n ngƣơi ta sẽ sƣ dụng hàm băm cho mục đich xác ̉ ̀ ̀ ́ thƣ̣ c tính nguyên vẹn của thông điệp đó . giá trị băm của mật khẩu . Trong MD5 với mỗi bƣớc đƣợc cộng kết quả của bƣớc trƣớc đó. chƣa có một công bố nào đƣợc đƣa ra trong việc tấn công SHA. việc sƣ dụng giá tri ̣ băm thay cho toàn bộ văn bản là giải pháp ̉ toàn diện khắc phục đƣợc yếu điểm này của các hệ chữ ký điện tử .Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉  MD5 sử dụng mỗi hằng số duy nhất cho mỗi bƣớc biến đổi.5. sau đó tiế n hành băm lại . Để đảm bảo chúng ta sẽ cung cấ p giá tri ̣ băm của phầ n mề m đ ó (khi đó phầ n mề m chính là thông điệp ).

Cryptolib ( chi tiế t tại ̣ đia chỉ website http://www. Hãy xác định chữ ký lên văn bản ̀ M.cs. Hiện ́ ̃ nay tấ t cả các hệ quản tri ̣ cơ sơ dƣ̃ liệu đề u đƣợ c trang bi ̣ các hàm băm để cho phép ̉ ngƣơi dùng tạo ra các giá tri ̣ băm của mật khẩ u ngƣơi dùng và lƣu lại các giá tri ̣ băm này.5: Cài đặt hệ chữ ký điện tử RSA. Nế u kế t quả đố i sánh là khơp ̉ ̉ ́ thì ngƣời dùng đó là hợp lệ . bản rõ đem mã hóa là xâu 64 bit 0. Bài tập 5. q = 41. q = 71.8: Cài đặt hàm băm SHA. e= 79. ̣ 119 . Bài tập 5. S) = (251. b) Hãy tính chữ ký cho thông điệp M = 100. Mọi thông tin trong ̉ ̀ ́ các giao dịch thƣơng mại điện tử đều cần đƣợc bảo vệ bằng các chữ ký . ̉ a) Hãy tìm khóa công khai KP. Hãy xác định chữ ký ̉ của hệ mã lên thông điệp M = 688. Sƣ dụng một trong các ngôn ngƣ̃ lập trình C. mật khẩ u của ngƣời dùng đƣợc sử dụng nhƣ khóa của hệ mã. 507) có là chữ ký lên văn bản M = 127 hay không. hàm băm.7: Cài đặt hàm băm MD5. b) Để ký lên bản rõ M = 102 ngƣời ta chọn k = 143. và khóa bí mật KS của hệ chữ ký trên. Bài tập 5. Vì thế có thể nói rằ ng đôi khi các hàm băm còn quan trọng hơn cả các hệ mã mật. C++. a = 191 là một phần tử nguyên thuỷ của ZP*. p = 67. Bài tâ ̣p 5. 3.4: Cho hệ chƣ̃ ký điện tƣ RSA có p = 47. α = 9. để ký lên văn bản M = 8. c) Kiểm tra xem cặp (K. Java hoặc C# để làm các bài tập sau: ̉ Bài tập 5.auckland.2: Cho hệ chƣ̃ ký điện tƣ RSA có p = 31. ngƣơi ta chọn k = 2. Gợi ý: Có thể sử dụng các thƣ viện số lớn nhƣ MIRACL hoặc các thƣ viện mã nguồ n mơ ̉ nhƣ Crypto++ (chi tiế t tại đia chỉ website : http://www. Bài tập Bài tập 5. ngƣợ c lại nế u không khơp có nghia là sai mật khẩ u . β = 62. ̀ ̀ Việc lƣu các giá tri ̣ băm đảm bảo chúng ta khôn g bi ̣ lộ mật khẩ u do mật khẩ u đƣợ c lƣu ơ ̉ dạng nguyên bản trên má y tính hoặc khi truyề n qua hệ thố ng mạng . khóa bí ̉ mật a = 4. a) Hãy tìm khóa công khai KP.nz/~pgut001/cryptlib). Bài tập 5. hay file cơ sơ dƣ̃ liệu của một hệ quản tri ̣ cơ sơ dƣ̃ liệu nào đó ). và khóa bí mật KS của hệ mã trên.6: Cài đặt hệ chữ ký điện tử El Gammal.3: Cho thuật toán chƣ̃ ký điện tƣ DSA có q = 11.com/). xml. Ngày nay với sự phát triển mạnh mẽ của thƣơng mại điện tử . hãy thực hiện ký đƣa ra chữ ký tƣơng ứng. Hệ điề u hành Unix sƣ dụng nguyên tắ c lƣu mật khẩ u nhƣ trên vơi hàm băm là hệ mã DES đƣợ c lặp lại 25 ̉ ́ lầ n.ac. trên các hệ thố ng mạng nên việc ƣng dụng của các hệ chữ ký điện ̀ ́ tƣ và đi kèm vơi đó là các hàm băm ngày càng trơ nên quan trọng . e = 271.1: Cho hệ chữ ký điện tử ElGamma có p = 1019.Chƣơng V: Chƣ̃ ký điê ̣n tƣ và hàm băm ̉ sánh với giá trị băm tƣơng ứng lƣu trong cơ sở dữ liệu (có thể ở dạng file text . Bài tập 5.cryptopp. x = 37. các giao dịch đều đƣợ c thƣ̣ c hiện tƣ xa.

còn trong trƣờng hợp thứ hai ta gọi là phân phối khoá. không phải bất cứ thông tin nào về các khoá công khai của một hệ mã. để bảo đảm cho các hoạt động thông tin đƣợc thật sự an toàn. Sơ đồ phân phối khoá Blom Giả sử ta có một mạng gồm có n ngƣời dùng và mỗi ngƣời dùng đó đều có nhu cầu trao đổi thông tin bí mật với mọi ngƣời trong mạng. ngƣời ta cũng muốn có những giao thức thực hiện việc trao đổi khoá giữa các đối tác thực sự có nhu cầu giao lƣu thông tin với nhau. kể cả trao đổi khoá công khai. cũng là nơi quản lý khoá. vì các khoá công khai có thể đƣợc truyền hay trao đổi cho nhau một cách công khai qua các kênh truyền tin công cộng. Do đó. của một thuật toán kiểm tra chữ ký. đối với các hệ mã hoá với khoá công khai không cần có những kênh bí mật nhƣ vậy. nhƣ vậy TA phải truyền bằng những kênh bí mật tất cả là n(n-1) lƣợt khoá đến tất cả n ngƣời dùng. thì về nguyên tắc. và đặc biệt đối với các hệ mã khoá đối xứng thì việc thực hiện đồi hỏi những kênh bí mật để chuyển khoá hoặc trao đổi khoá giữa các đối tác. Việc thoả thuận khoá nói chung không cần có sự tham gia của một TA nào và chỉ có thể xảy ra khi các hệ bảo mật mà ta sử dụng là hệ có khoá công khai. Việc trao đổi khoá giữa các chủ thể trong một cộng đồng nào đó có thể đƣợc thiết lập một cách tự do giữa bất cứ hai ngƣời nào khi có nhu cầu trao đổi thông tin. mặc dù là công khai nhƣng ngƣời ta cũng muốn là những ai cần biết thì mới nên biết mà thôi. Một cơ 2 quan uỷ thác TA quản lý chừng ấy khoá và phải chuyển cho mỗi ngƣời dùng (n-1) khoá chung với (n-1) ngƣời còn lại trong mạng. 2. trên thực tế. Ta cũng đã thấy rằng các hệ mật mã khoá công khai công khai có nhiều ƣu việt hơn các hệ mật mã đối xứng trong việc làm nền tảng cho các giải pháp an toàn thông tin. còn việc phân phối khoá thì có thể xảy ra đối với các trƣờng hợp sử dụng các hệ khoá đối xứng cũng nhƣ các hệ có khoá công khai. Ta sẽ bắt đầu vơi một vài hệ phân phối khoá nhƣ vậy. Giả sử sơ đồ mật mã đƣợc sử dụng là một sơ đồ mật mã khoá đối xứng (chẳng hạn nhƣ DES).Chƣơng VI: Quản lý khóa CHƢƠNG VI: QUẢN LÝ KHÓA 1. 120 .1. Toàn bộ mạng cần có n(n  1) khoá khác nhau cho chừng ấy cặp ngƣời dùng khác nhau trong mạng. mặc dù sử dụng các hệ có khoá công khai. ta đã làm quen với các phƣơng pháp lập mã và các bài toán quan trọng khác liên quan đến việc truyền tin bảo mật trên các mạng truyền tin công cộng nói chung. hoặc có thể đƣợc thiết lập một cách tƣơng đối lâu dài trong thời gian nào đó trong cả cộng đồng với sự điều phối của một cơ quan đƣợc uỷ thác TA. TA là nơi thực hiện việc phân phối. Việc trao đổi khoá trong trƣờng hợp thứ nhất ta gọi đơn giản là thoả thuận khoá. Một số hệ phân phối khoá 2. đã tồn tại rất lâu trƣớc khi có các hệ mật mã khoá công khai . của một giao thức xác nhận thông báo hay xác nhận danh tính … cũng phát công khai một cách tràn lan trên mạng công cộng. Việc phân phối khoá với vai trò quản trị khoá của một TA là một việc bình thƣờng. sau đó sẽ giới ́ thiệu một số hệ phân phối hoặc trao đổi khoá khi dùng các sơ đồ an toàn và bảo mật với khoá công khai. Tuy nhiên. Quản lý khoá trong các mạng truyền tin Trong các chƣơng trƣớc.

y)  a  b( x  y)  cxy mod p  Với mỗi ngƣời dùng A. mà mỗi ngƣời A và B tính đƣợc bằng những thông tin mình đã có. c). c là ẩn số. Bất kỳ giá trị 121 . định thức đó khác 0. c  Z p và lập đa thức: f ( x. đƣợc thể hiện thành: a  b(rA  rB )  crA rB a  brC b  crC    aC  bC Nếu xem a. b. TA phân phối cho mọi ngƣời dùng một phần bí mật của khoá. ta có định thức các hệ số ở vế phải là: 1 rA  rB 1 rC 0 1 rA rB 0  (rC  rA )(rC  rB ). b. rB ). trong đó aA  a  brA mod p . rC Theo giả thiết chọn các số r. theo sơ đồ phân phối này. Ta chứng minh rằng với những gì mà C biết thì bất kỳ giá trị   Z p nào cũng có thể đƣợc chấp nhận là KA.B đó sẽ là: K A. bA) cho A. So với việc TA phải truyền bí mật n(n-1) lƣợt khoá trên thì với sơ đồ Blom.B. bA) mà thôi. TA chỉ phải truyền n lƣợt các cặp số (aA. Nhƣ vậy. TA chọn ba số ngẫu nhiên a. Số p và các số rA đƣợc công bố công khai. thì cái mà C biết nhiều lắm là hai số aC. bC do TA cấp cho.  Sau đó. B . Sau khi đã thực hiện xong các công việc chuẩn bị đó. và chọn cho mỗi ngƣời dùng A một số rA  Z p . Blom đề nghi ̣ một sơ đồ phân phố i khoá . trong trƣơng hợ p đơn giản nhấ t đƣợ c mô tả nhƣ sau: ̀  TA chọn một số nguyên tố p ≥ n. Thực vậy. B  g A (rB )  g B (rA )  f (rA . b. tức việc chấp nhận  là giá trị của KA. do đó hệ phƣơng trình luôn có nghiệm (a.B là hoàn toàn có thể. TA chuyển bí mật cặp số (aA. dù C có là ngƣời tham gia trong mạng đi nữa. A biết g A ( x)  aA  bA x . bA  b  crA mod p .Chƣơng VI: Quản lý khóa Năm 1985. kể cả chấp nhận   K A. hai ngƣời dùng bất kỳ phối hợp phần bí mật của riêng mình với phần công khai của ngƣời kia để cùng tạo nên khoá bí mật chung cho hai ngƣời. Sơ đồ này là an toàn theo nghĩa sau đây: bất kỳ một ngƣời thức ba C nào (kể cả C là một ngƣời tham gia trong mạng) có thể đƣợc phát hiện đƣợc khoá bí mật riêng của hai ngƣời A và B. rA )  a A  bA x mod p . Nhƣ vậy. Những gì mà C biết . TA tính g A ( x)  f ( x. bây giờ nếu hai ngƣời dùng A và B muốn tạo khoá chung để truyền tin bằng mật mã cho nhau thì khoá chung KA. mà sau đây ta gọi là sơ đồ Blom.

xác định một tem thời gian T và thời gian sống L (nhƣ thế có nghĩa là khoá phiên K có giá trị sử dụng trong khoảng thời gian từ T đến T+L). ID( B). c) từ đó tìm đƣợc KA. Sau đó. i 0 j 0 k k trong đó aij  Z p . 2. và gửi (m3. ID(B).B là số nào. vì cả C và D biết: a  brC b a  brD b  crC  crD     aC bC aD bD bốn phƣơng trình đó đủ để xác định (a. T . ID( A). y) nói trên bằng một đa thức đối xứng bậc 2k sau đây: f ( x. Việc cấp phát đó sẽ đƣợc thực hiện bằng một giao thức phân phối khoá nhƣ sau: 1) TA chọn ngẫu nhiên một khoá phiên K. B) liên minh với nhau để phát hiện KA. m2) đến m3  eK ( ID( A). Tuy nhiên.B của hai ngƣời dùng A và B là bí mật hoàn toàn đối với bất kỳ liên minh nào gồm k ngƣời ngoài A và B. L. Để thực hiện hệ này. b. Sau đó tính TA tính m1  eK A ( K . ID(A) và ID(A). T. Nếu thấy hai giá trị của ID(A) và của T trùng nhau thì B tính tiếp m 4 = eK(T + 1) và gửi m4 cho A. trong đó mọi khoá chung KA. m2  eK B ( K . Hệ phân phối khoá Kerberos Kerberos là tên của một hệ dịch vụ phân phối (hay cấp phát) khoá phiên (sesion key) cho từng phiên truyền tin bảo mật theo yêu cầu của ngƣời dùng trong một mạng truyền tin. j. 2) A.2. nếu có hai ngƣời tham gia C và D (khác A. T. điều đó đồng nghĩa với việc C không biết KA. y )   aij x i y j mod p. T ). Ta có thể mở rộng sơ đồ Blom nói trên để đƣợc một sơ đồ Blom tổng quát. j  k .Chƣơng VI: Quản lý khóa   Z p nào cũng có thể đƣợc C chấp nhận là KA. trƣớc hết cơ quan đƣợc uỷ thác (hay trung tâm điều phối) TA cần chia sẻ một khoá DES bí mật KA với mỗi thành viên A trong mạng.B. L). aij  a ji với mọi i.B thì lại rất dễ dàng. 3) A dùng hàm giải mã d K A cho m1 để thu đƣợc K. Hệ mật mã đƣợc sử dụng thƣờng là hệ có khoá đối xứng chẳng hạn nhƣ DES. ta chỉ cần thay đa thức f(x. m2) cho B. L) và gửi (m1. 4) B dùng các hàm giải mã d K B cho m2 và dK cho m3 để thu đƣợc K. 122 . Muốn vậy. nhƣng không còn là bí mật đối với mọi liên minh gồm k+1 ngƣời tham gia trong mạng. T.B. T .0  i. mỗi lần A có nhu cầu truyền tin bảo mật với một thành viên khác B thì yêu cầu TA cấp một khoá phiên cho cả A và B. L.

các thông tin đó là công khai. việc sử dụng nó cũng đòi hỏi tốn nhiều thời gian nên ngày nay cũng chỉ đƣợc dùng trong những trƣờng hợp hạn chế. Các số p và  đƣợc công bố công khai cho mọi ngƣời tham gia trong mạng. bA) với TA. tuy nhiên trong thực tế. sigTA(ID(A). dù khoá K vẫn là bí mật (chỉ A. bA. TA (cùng với A và B) đã thực hiện xong việc cấp phát một khoá phiên K cho hai ngƣời dùng A và B để truyền tin mật mã cho nhau. a K A. TA chỉ việc chọn một số nguyên tố lớn * p và một phần tử nguyên thuỷ  theo mod p sao cho bài toán tính loga trong Z p là rất khó. cả A và B còn biết đƣợc thời hạn có hiệu lực của khoá. Một thành viên bất kỳ A với danh tính ID(A) tuỳ ý chọn một số a A (0 ≤ aA ≤ p-2) và tính bA   aA mod p . Trong một hệ phân phối khoá Diffe-Hellman. TA có một sơ đồ chữ ký với thuật toán ký bí mật sigTA và thuật toán kiểm tra công khai verTA. Ngoài việc cấp phát khoá. Thêm nữa. Hoàn thành giao thức gồm 5 bƣớc nói trên. Tất cả các việc trao đổi các thông tin trong giao thức đó đều đƣợc thực hiện trên các kênh công cộng. B  bBB mod p   a AaB mod p. Khoá chung đó B cũng tạo ra đƣợc từ các thông tin công khai bA của A và số bí mật aB của mình: a K A. B  bBA mod p   aB a A mod p. Khi hai thành viên A và B trong mạng cần có một khoá bí mật chung để truyền tin bảo mật cho nhau thì A dùng thông tin công khai bB có trong C(B) kết hợp với số bí mật của mình là aA để tạo nên khoá.3. Ngoài ra. giao thức đó còn thực hiện đƣợc việc xác nhận khoá: B và A đều tin chắc đƣợc rằng đối tác của mình đã thực sự có khoá K do kết quả của việc thực hiện các phép thử ở bƣớc 4 và 5. các ký hiệu ID(A) và ID(B) là chỉ danh tính của A và của B. 123 . Trong giao thức nói trên. TA cấp cho A chứng chỉ: C(A) = (ID(A). Các chứng chỉ của các thành viên trong mạng có thể đƣợc lƣu giữ trong một cơ sở dữ liệu công khai hoặc uỷ thác cho TA lƣu giữ và cung cấp công khai cho các thành viên mỗi khi cần đến. A giữ bí mật aA và đăng ký các thông tin (ID(A). Phân phối khoá bí mật theo giao thức Kerberos có độ tin cậy cao. Hệ phân phối khóa Diffe-Hellman Hệ phân phối khoá Diffe-Hellman không đòi hỏi TA phải biết và chuyển bất kỳ thông tin mật nào về khoá của các ngƣời tham gia trong mạng để họ thiết lập đƣợc khoá chung bí mật cho việc truyền tin với nhau.Chƣơng VI: Quản lý khóa 5) A dùng hàm giải mã dK cho m4 và thử xem kết quả thu đƣợc có đúng là T+1 hay không. bA)). 2. B và TA là đƣợc biết mà thôi).

Bây giờ ta sẽ chứng minh điều này. 3) a a K A. Giả sử ta có thuật toán A giải bài toán Diffie-Hellman.B. Ta sẽ dùng A để phá mã ElGammal nhƣ sau: Cho mật mã (y1. Giao thức trao đổi khoá Diffie-Hellman có các tính chất sau:  Giao thức là an toàn đối với việc tấn công thụ động. Chúng ta biết rằng bài toán “biết bA và bB tìm KA. y2). y2) với y1   k mod p . nghĩa là một ngƣời thứ ba dù biết bA và bB sẽ khó mà biết đƣợc KA. Trƣớc tiên. B)   ka   k mod p . ta thu đƣợc bản rõ x từ  k và y2 nhƣ sau: x  y 2 ( k ) 1 mod p.1. Một nhóm bất kỳ ngƣời sử dụng có thể thoả thuận cùng dùng chung một số nguyên tố lớn p và một phần tử nguyên thuỷ  theo mod p. Phép mật mã ElGammal với khoá K = ( p. y 2  x k mod p. Cơ sơ lý thuyế t đảm b ảo cho sự an toàn của các phƣơng pháp trao đổi khóa dựa ̉ trên hệ phân phố i khóa Diffie -Hellman là bài toán Logarithm rơi rạc . trong đó    a mod p cho ta từ một bản rõ x và một số ngẫu nhiên k  Z p 1 lập đƣợc mật mã eK(x.B” chính là bài toán Diffie-Hellman.Chƣơng VI: Quản lý khóa Để bảo đảm đƣợc các thông tin về bB và bA là chính xác. tính bB   aB mod p A và B cùng tính đƣợc khoá chung: A chọn ngẫu nhiên số aA (0 ≤ aA ≤ p-2) bí mật. B  bBA mod p  bAB mod p (  aA aB mod p). Sau đó. 3. k) = (y1. ta đƣợc A( y1 . tính bA   aA mod p và gửi bA và gửi bB cho A.  .  ). Giao thức trao đổi khoá Diffie-Hellman Hệ phân phối khoá Diffie-Hellman nói trong mục trƣớc có thể dễ dàng biến đổi thành một giao thức trao đổi (hay thoả thuận) khoá trực tiếp giữa các ngƣời sử dụng mà không cần có sự can thiệp của một TA làm nhiêm vụ điều hành hoặc phân phối khoá. dung A cho y1   k mod p và    a mod p. Và phép giải mã đƣợc cho bởi y1   k mod p . 2) Tƣơng tự. bài toán này tƣơng đƣơng với bài toán phá mã ElGammal. có thể tham khảo ̀ thêm trong phầ n 3.3 chƣơng IV để biế t thêm. A và B có thể dùng thuật toán verTA để kiểm tra chữ ký xác nhận của TA trong các chứng chỉ C(B) và C(A) tƣơng ứng. a. 124 . hai ngƣời bất kỳ trong nhóm A và B mỗi khi muốn truyền tin bảo mật cho nhau có thể cùng thực hiện giao thức sau đây để trao đổi khoá: 1) cho B . B chọn ngẫu nhiên số aB (0 ≤ aB ≤ p-2) bí mật. Trao đổi khoá và thoả thuận khoá 3.

1) 1  (1. verA.  . Chứng chỉ mà TA cấp cho mỗi ngƣời A sẽ là: C(A) = (ID(A). bA . TA cũng có một sơ đồ chữ ký của mình. tính bA   aA mod p và gửi bA cho B. y1 = bB. ta đƣợc a B( p. sự can thiệp của TA là rất yếu. tính bB   aB mod p tính tiếp a K  bAB mod p. gồm một thuật toán ký sigTA và một thuật toán kiểm thử công khai verTA. Rõ ràng trong chứng chỉ đó TA không xác nhận bất kỳ điều gì liên quan đến việc tạo khoá của A cả. tức B( p. Nghĩa là một ngƣời thứ ba C có thể đánh tráo các thông tin trao đổi giữa A và B. Giao thức trao đổi khoá Diffie-Hellman có chứng chỉ xác nhận Mỗi ngƣời dùng A có một danh tính ID(A) và một sơ đồ chữ ký với thuật toán ký sigA và thuật toán kiểm thử verA. và gửi (C(A). Nhƣ vậy. C thay  aA mà A định gửi cho B bởi  a' A và thay  aB mà B định gửi cho A bởi  a'B . y1 . y B  sig B (bB . còn bản thân các thông tin về khoá (cả bí mật lẫn công khai) thì do các ngƣời dùng trao đổi trực tiếp với nhau. bA ). Trong hệ phân phối khoá DiffieHellman. y 2 )  x  y 2 ( y1a ) 1 mod p. verA)).(bBA ) 1 ) 1   aA aB mod p.  Giao thức là không an toàn đối với việc tấn công chủ động bằng cách đánh tráo giữa đƣờng. bB.  . ta đƣợc giao thức sau đây: 3. Còn bản thân các thông tin liên quan đến việc tạo khoá mật mã thì các ngƣời dùng sẽ trao đổi trực tiếp với nhau. sigTA(ID(A). A a 'B a Một cách khắc phục kiểu tấn công này là làm sao để A và B có kiểm thử để xác nhận tính đúng đắn của các khoá công khai bA và bB. Áp dụng B cho   bA . Tuy nhiên.Chƣơng VI: Quản lý khóa Ngƣợc lại. Việc trao đổi khoá giữa hai ngƣời dùng A và B đƣợc thực hiện theo giao thức sau đây: 1) 2) A chọn ngẫu nhiên số aA (0 ≤ aA ≤ p-2). y2 =1. B chọn ngẫu nhiên số aB (0 ≤ aB ≤ p-2). Với cách khắc phục có vai trò hết sức hạn chế đó của TA. mà chỉ là xác nhận một thông tin ít quan hệ khác nhƣ thuật toán kiểm thử chữ ký của ngƣời dùng. Ngƣời ta đƣa vào giao thức trao đổi khoá Diffie-Hellman thêm vai trò điều phối của một TA để đƣợc một hệ phân phối khoá Diffie-Hellman nhƣ một cách khắc phục nhƣợc điểm này. không liên quan gì đến khoá.  . A đã lập một khoá chung với C mà vẫn tƣởng là với B. Chẳng hạn. đồng thời B cũng lập một khoá chung  a' A aB với C mà vẫn tƣởng là với A. chẳng hạn nhƣ xác nhận thuật toán kiểm thử chữ ký của ngƣời dùng. giả sử có một thuật toán khác là B dùng để phá mã ElGammal. 125 .2. sau khi thực hiện giao thức trao đổi khoá. nếu chƣa thoả mãn với vai trò hạn chế đó của TA thì có thể cho TA một vai trò xác nhận yếu hơn. TA cũng có một vai trò xác nhận. bB . yB) cho A. tức giải đƣợc bài toán Diffie-Hellman. nhƣng không phải xác nhận bất kỳ thông tin nào liên quan đến việc tạo khoá mật mã của ngƣời dùng (dù là khoá bí mật hay khoá công khai). C có thể giả mã mọi thông báo mà A tƣởng nhầm là mình gửi đến B cũng nhƣ mọi thông báo mà B tƣởng nhầm là mình gửi đến A. thực ra TA chỉ làm mỗi việc là cấp chứng chỉ xác nhận khoá công khai cho từng ngƣời dùng chứ không đòi hỏi biết thêm bất cứ một bí mật nào của ngƣời dùng.

 r ' A A C(B). và gửi (C(A). Takashima và Imai đề nghị một cải tiến để chỉ dùng một giao thức gồm hai lần chuyển tin (một từ A đến B và một từ B đến A) để thoả thuận khoá nhƣ sau: Ta giả sử rằng trƣớc khi thực hiện giao thức. Do việc dùng các thuật toán kiểm thử nên A biết chắc giá trị bB là của B và B biết chắc giá trị bA của A. Giao thức trao đổi khoá phiên MTI gồm ba bƣớc (trong đó có hai lần chuyển tin) nhƣ sau: 1) cho B. Giao thức trao đổi khoá Matsumoto-Takashima-Imai Giao thức trình bày trong mục trên dùng ba lần chuyển tin qua lại để thiết lập một khoá chung. dùng verTA để kiểm thử C(B). sigTA(ID(A). yA) cho B. với giá trị bB thu đƣợc từ C(B) A chọn ngẫu nhiên số rA (0 ≤ rA ≤ p-2).  r 'B C C(B). sB) a r B tính K  s AB . khoá phiên (sesion key) sẽ đƣợc tạo ra cho từng phiên theo giao thức. sau đó tính yA = sigA(bA. Giao thức này cũng có khả năng giữ bí mật khoá K nhƣ đối với giao thức DiffieHellman trƣớc sự tấn công thụ động.bBB mod p. 3. sB nên vẫn có nguy cơ của sự tấn công tích cực bằng việc đánh tráo giữa đƣờng bởi một ngƣời C nào đó theo kiểu sau đây: C(A). đáng lẽ B gửi đến A giá trị (C(B). bA.  rA C(A). bB) và gửi (C(A). tính s A   rA mod p. Các tác giả Nhật Matsumoto. tính s B   rB mod p. Trong giao thức này. Tuy nhiên. vì không có chứng chỉ đối với các giá tri sA.bBA mod p. sA) và gửi đến B giá trị (C(A).  rB B Lẽ ra A gửi đến B cặp (C(A). sA) thì C đánh tráo bằng cách (C(A). 2) cho A. và gửi (C(B). và thuật toán kiểm thử chữ ký verTA là công khai. mà với mỗi phiên truyền tin bảo mật. Và ngƣợc lại. bA)). các bA không trực tiếp tạo nên các khoá mật mã cho truyền tin. TA đã ký cấp chứng chỉ cho mỗi ngƣời dùng A theo cách trong giao thức trao đổi DH: C(A) = (ID(A). 3) a r A tính K  s BA . với giá trị bB thu đƣợc từ C(A). dùng verB để kiểm thử yB. 4) B dùng verA để kiểm thử yA và dùng verTA để kiểm thử C(A). sA) B chọn ngẫu nhiên số rB (0 ≤ rB ≤ p-2). Hai cách tính đó cho cùng một giá trị K   rAaB  rB aA mod p. s‟A) với s' A   r ' A mod p .3. và cả A và B đều có đƣợc khoá chung K. Nếu tất cả các bƣớc đó đƣợc thực hiện và các phép kiểm thử đều cho kết quả đúng đắn thì giao thức đƣợc kết thúc. sB) 126 .Chƣơng VI: Quản lý khóa 3) a A tính K  bB A mod p. loại trừ khả năng một ngƣời C nào khác đánh tráo các giá trị đó giữa đƣờng.

3. chọn ngẫu nhiên một số a A  G . giữ bí mật aA và tính bA   aA mod n . Trong giao thức này. 3) a r e A tính khoá K  s BA ( p B  ID(V )) A mod n. chứ không thể đánh cắp thông tin đƣợc. tính s B   rB mod n và gửi cho B các giá trị (ID(B).  (n) ) = 1. sB). A chọn ngẫu nhiên rA  G . Giả sử n là tích của hai số nguyên tố lớn p và q. Giả sử  là một phần tử cấp 2p1q1 của Z n . s‟B) với s' B   r 'B mod p . TA thử lại điều kiện bA   aA mod n .4. Giao thức Girault trao đổi khoá giữa hai ngƣời dùng A và B đƣợc thực hiện bởi các bƣớc sau đây: 1) pA. Cấp cao nhất của một phần tử trong Z n là bội chung bé nhất của p-1 và q-1. trong đó p1 và q1 cũng là các số nguyên tố.Chƣơng VI: Quản lý khóa thì C đánh trao bằng cách nhận (C(B). và giữ bí mật d  e 1 mod  (n). ở đây C chỉ có thể phá rối. Mỗi ngƣời dùng A có một danh tính ID(A). Khi đó A tính đƣợc khoá: K1   rAaB r 'B aA mod p. sB) và gửi đến A giá trị (C(B). TA chọn số mũ công khai e với UCLN(e. 127 . bA cho TA. Hai giá trị K1 và K2 này khác nhau nên không giúp A và B truyền tin đƣợc cho nhau. Giao thức Girault trao đổi khoá không chứng chỉ Giao thức Girault đƣợc đề xuất năm 1991. tính s A   rA mod n và gửi cho B các giá trị (ID(A). q. tức p * là bằng 2p1q1. a e B tính khoá K  s AB ( p A  ID( A)) rB mod n. sA). rồi cấp cho A một khoá công khai tự chứng thực pA = (bA-ID(A))d mod n. ngƣời sử dụng A không cần dùng chứng chỉ C(A) mà thay bằng một khoá công khai tự chứng thực đƣợc cấp trƣớc bởi một TA. và B tính đƣợc khoá: K 2   r ' A aB rB aA mod p. Nhóm tuần hoàn sinh bởi  đƣợc ký hiệu là G. Nhóm nhân Z n đẳng cấu với tích * * Z * xZ q . * q = 2q1+1. B chọn ngẫu nhiên rB  G . Các số n và  là công khai. Phƣơng pháp này sử dụng kết hợp các đặc tính của bài toán RSA và logarit rời rạc. n = p*q. 2) pB. nhƣng C không có khả năng tính đƣợc giá trị nào trong hai giá trị đó (vì không biết a A và aB) nên khác với giao thức Diffie-Hellman. rồi gửi aA. p và q có dạng p = 2p 1+1. Trong khoá công khai pA không có thông tin về aA nhƣng TA cần biết aA để thử điều kiện bA   aA mod n . Chỉ TA biết p. bài toán tính logarit rời rạc theo cơ số  trong G đƣợc giả thiết là rất khó.

4. ̉ b) Nế u khóa công khai của A là YA = 9 thì khóa bí mật của A là bao nhiêu? 128 . ́ a) Nế u khóa bí mật của A là XA = 5 thì khóa công khai của A là gì? b) Nế u khóa bí mật của B là XB = 12 thì khóa công khai của B là gì? c) Cho biế t khóa bí mật dùng để truyề n tin? Bài tập 6. b‟C) cho TA. ta dễ thấy rằng một ngƣời thứ ba C khó mà tạo ra các thông tin giả mạo để gửi đến A hoặc B. p' A . . C có thể giải mã mọi thông báo mà B gửi cho A. Bây giờ giả sử A và B thực hiện giao thức trao đổi khoá và C xen vào ở giữa. pA. ́ Diffie-Hellman để truyề n tin cho a) Hãy chứng minh rằng α = 2 đúng là phầ n tƣ nguyên thủy của Z*11.2: A và B sƣ dụng kỹ thuật phân phố i khóa ̉ nhau vơi p = 11 và phần tử nguyên thủy α = 2.ID(A) – ID(C) và đƣa (ID(C). Vì thế. pB. Việc TA biết aA và thử điều kiện bA   aA mod n trƣớc khi cấp pA cho A là để loại trừ khả năng đánh tráo nhƣ vậy của một kẻ tấn công C.  r ' A mod n) . còn A tính đƣợc khoá K   rAaB rB aA mod n. (ID)A. Do đó. nhƣng do C đánh tráo nên B sẽ nhận đƣợc ( ID( A).  rB B B và C có cùng một khoá khác với khoá của A nhƣng B vẫn nghĩ rằng mình có chung khoá với A.1: Giả sử A và B sử dụng kỹ thuật phân phối khóa Diffie -Hellman để truyề n tin cho nhau vơi số nguyên tố đƣợ c chọn là p = 71 và phần tử nguyên thủy α = 7. Vì b‟C – ID(C) = b‟A – ID(A) nên thực tế C đã đƣợc cấp: p‟C = p‟A = (b‟A – ID(A))d mod n.Chƣơng VI: Quản lý khóa Cả hai giá trị đó của K đều bằng nhau và bằng K   rAaB rB aA mod n. p A . Còn lại vấn đề: tại sao TA cần biết aA và thử điều kiện bA   aA mod n trƣớc khi cấp pA cho A! Ta giả sử rằng TA không biết aA và cấp pA = (bA-ID(A))d mod n cho A . pB. tức đánh cắp thông tin từ B đến A.  rA (ID)A. rồi tính b‟C = b‟A .  rB C (ID)B. TA sẽ cấp cho C một “khoá công khai tự chứng thực”: p‟C = (b‟C – ID(C))d mod n.  rA mod n) . và thử xem có thể xảy ra chuyện gì? Một ngƣời thứ ba C có thể chọn một giá trị a‟A và tính b' A   a 'A mod n . nếu tấn công bằng cách đánh tráo giữa đƣờng thì có thể phá rối để ngăn cản A và B tạo lập khoá chung nhƣng không thể đánh cắp thông tin trao đổi giữa A và B. A gửi cho B ( ID( A). p'A. Nhƣ vậy.  r ' A A (ID)B. Bằng các lập luận tƣơng tự nhƣ ở mục trƣớc. B và C tính đƣợc cùng một khoá: a e K '   r ' A aB rB a 'A mod n  s B' A ( p B  ID( B)) r ' A mod n.Bài tập Bài tập 6.

Chƣơng VI: Quản lý khóa c) Giả sử B có khóa công khai là Y giƣ̃a A và B. hãy tìm khóa bí mật dùng để truyền tin B 129 . = 3.

tất cả các tình huống biến đổi đều phải đƣợc đƣa ra. tất cả các bƣớc phải đƣợc viết tƣờng minh. Và cuối cùng một giao thức phải đƣợc thiết kế nhằm đạt đƣợc tới một kết quả nào đó. 130 .Chƣơng VII: Giao thƣc mâ ̣t mã ́ CHƢƠNG VII: GIAO THƢC MẬT MÃ ́ 1. Vì vậy cần tính đến mọi tình huống. mọi khả năng có thể của giao thức. Điểm khác biệt đặc trƣng ở đây là bây giờ ngƣời làm việc với nhau thông qua các máy tính mà không cần thấy mặt nhau nữa. Các thành phần tham gia có thể là bạn bè tin tƣởng lẫn nhau. Một giao thức mật mã có liên quan đến các thuật toán của mật mã nhƣng thông thƣờng mục đích của nó đi xa hơn là tính bảo mật thuần tuý. Hơn nữa máy tính không phải là ngƣời. Giao thức mật mã là một giao thức có vận dụng các kiến thức của lý thuyết mật mã để đạt đƣợc các mục tiêu về mặt an toàn và bảo mật cho hệ thống. việc đƣa các nghi thức thủ tục làm ăn bình thƣờng của ngƣời ta thực hiện qua mạng cũng là không bao xa.  Các bên phải đồng ý tuyệt đối tuân thủ các bƣớc. Giao thức Định nghĩa: Một giao thức (protocol) chỉ đơn giản là một chuỗi các bước thực hiện trong đó có ít nhất 2 bên tham dự. Mục đích của các giao thức Ngày nay. Nhƣ vậy cần phải thiết kế những thủ tục làm việc tƣơng ứng cho máy tính để có thể thay thế cho các thủ tục trong đời thƣờng. Các bên có thể tham dự vào việc chia sẻ các phần của một bí mật đƣợc dùng để chiết xuất ra một thông tin nào đó. được thiết kế để thực hiện một nhiệm vụ nào đó. không bên nào có thể thu đƣợc nhiều hơn. có thể cùng kết hợp phát ra một chuỗi số ngẫu nhiên. có đầu có cuối. Một giao thức có những đặc tính nhƣ sau:  Các bên tham gia phải hiểu cách thức và các bƣớc thực hiện một giao thức khi tham gia thực hiện.  Giao thức phải đầy đủ. “Có ít nhất hai bên tham gia” nghĩa là có thể có nhiều ngƣời cùng tham gia thực hiện chuỗi bƣớc này. có thể chứng minh danh tính của mình cho bên kia hay đồng thời ký vào một văn bản hợp đồng. bƣớc trƣớc phải đƣợc kết thúc trƣớc khi thực hiện bƣớc sau. nó không thể dễ dàng thích nghi với thay đổi nhƣ chúng ta đây. Toàn bộ vấn đề của lý thuyết mật mã ở đây là làm sao dò ra và chống lại các khả năng nghe trộm hay lừa dối. biết đƣợc nhiều hơn những gì mà thiết kế ban đầu giả định. không có chỗ nào gây nên khả năng hiểu nhầm. nhƣng cũng có thể là những kẻ địch của nhau. với sự phát triển vũ bão của hệ thống máy tính toàn cầu đi đến từng hộ gia đình. Nguyên tắc để thiết kế giao thức: phải làm sao để không ai. do đó nếu một ngƣời thực hiện một chuỗi các bƣớc thì không thể gọi là một giao thức đƣợc.  Giao thức phải rõ ràng.[2] Định nghĩa này đơn giản nhƣng chặt chẽ: “một chuỗi các bƣớc” nghĩa là một dãy các bƣớc có thứ tự. 2.

.. Dù hầu hết là nhƣ thế nhƣng chỉ cần một thiểu số những ngƣời không trung thực cũng đủ ngây ra thiệt hại nếu chúng ta không có các biện pháp đảm bảo.. Thật là ngây thơ nếu tin rằng mọi ngƣời làm việc trên mạng máy tính đều trung thực. 3. Bob bên thứ hai trong các giao thức. Walter Peggy ngƣời chứng minh (prover). cho điện thoại hay cho một lò vi sóng thông minh . từ đó mà cải tiến. chính vì thế nên việc xây dựng những giao thức trên máy tính là không còn đơn giản nhƣ các thủ tục đời thƣờng mà nó thay thế. Dave bên tham gia thứ tƣ trong các giao thức.. Với phƣơng pháp hình thức hoá.Chƣơng VII: Giao thƣc mâ ̣t mã ́ Rất nhiều các thủ tục làm ăn hàng ngày của chúng ta đƣợc tin tƣởng dựa trên sự có mặt cùng nhau của các bên đối tác. Carol bên tham gia thứ ba trong các giao thức. dù là cho máy tính. ngƣời thẩm tra (verifier). Và cũng thật là cả tin nếu cho rằng các nhà quản trị mạng. một Trent trọng tài (trusted arbitrator). Peggy cần phải chứng minh với Victor về một quyền sở hữu nào đó chẳng hạn nhƣ danh tính của anh ta khai là đúng Victor hay anh ta đúng là kẻ có thẩm quyền để đƣợc truy nhập vào một nơi quan trọng . Hơn nữa giao thức máy tính là một hình thức trừu tƣợng hoá và không quan tâm đến việc cài đặt cụ thể. hay thậm chí ngay cả các nhà thiết kế ra các mạng này là trung thực đến cùng. kiểm tra khả năng của nó có vững hay không trƣớc mọi kiểu xâm phạm của các kẻ không trung thực. Bạn cứ tự hỏi xem ngƣời ta có thể trao một chồng tiền mặt cho một ngƣời lạ để nhờ mua hàng có đƣợc không? Hay thử hỏi xem bạn có dám gửi thƣ cho chính phủ với phiếu bầu của bạn mà không có các thủ tục đảm bảo về việc giấu tên. ngƣời canh gác (warden). có thể đứng canh gác Alice và Bob trong số giao thức . Vì thế một khi chúng đã có thể khẳng định đƣợc độ tin cậy của giao thức ta có thể áp dụng nó ở bất cứ đâu. Eve Mallory kẻ nghe trộm (eavesdropper). chúng ta có thể thử thiết kế các giao thức rồi tìm hiểu. các bài toán đời sống hàng ngày. Bằng cách đó mà ngƣời ta đã xây dựng các giao thức cho các máy tính giải quyết đƣợc các nhiệm vụ. phát triển lên để chống lại các kiểu tấn công đó. Một giao thức là giống nhau dù nó đƣợc cài đặt trên bất cứ hệ điều hành nào. Các bên tham gia vào giao thức (the players in protocol) Để có thể tiếp cận thống nhất với tất cả các giao thức thì một điều cần thiết là có một qui định thống nhất cách gọi tên tất cả các bên tham gia và dính líu có thể có trong giao thức: [6] Alice bên thứ nhất trong các giao thức. 131 . kẻ tấn công chủ động có nhiều quyền lực trên mạng và rất nguy hiểm (malicious active attacker).

Chƣơng VII: Giao thƣc mâ ̣t mã ́ 4. Ví dụ 1: Alice muốn bán một chiếc xe cho một ngƣời lạ là Bob. Trent sẽ giao hàng cho Bob. anh ta làm phần việc của mình trong cả hai trƣờng hợp có thể xảy ra đúng nhƣ giao thức qui định. Nhƣ vậy trọng tài có thể đứng ra để giúp hoàn thành các giao thức giữa những bên tham gia không tin tƣởng lẫn nhau. Bob muốn trả bằng séc. cô ta chỉ muốn đƣợc chuyển séc trƣớc khi giao xe cho Bob và đấy chính là mâu thuẩn bế tắc vì Bob cũng chẳng tin gì Alice nên anh ta sẽ không đƣa séc trƣớc khi nhận đƣợc chiếc xe. Nếu tờ séc không hợp lệ thì Alice sẽ báo cho Trent biết với bằng chứng cụ thể và Trent sẽ giao trả lại hàng cho cô ta. Cách giải quyết sẽ thông qua Trent (ngƣời mà cả Bob và Alice đều tin tƣởng) và một giao thức sẽ diễn ra nhƣ sau để đảm bảo tính trung thực:    Alice chuyển vật cần bán cho Trent Bob đƣa tờ séc cho Alice. tuy nhiên Alice lại không có cách nào để biết đƣợc séc đó có giá trị thật sự hay không.  Bob tin tƣởng Trent sẽ giữ hàng trong thời gian séc đƣợc chuyển và sẽ giao nó cho anh ta một khi đƣợc chuyển xong.1. đồng thời tin tƣởng anh ta sẽ hoàn thành trách nhiệm của mình trong giao thức. Alice chuyển séc vào tài khoản của cô ta ở ngân hàng.  Trent không quan tâm đến việc tờ séc có giá trị thật sự và có chuyển đƣợc hay không.  Đợi một khoảng thời gian nhất định đến khi séc đã chuyển xong.  Các bên tham gia có quyền lợi trong giao thức đều tin tƣởng vào trọng tài rằng bất kỳ cái gì mà anh ta nói và làm đều là đúng và chính xác. Các dạng giao thức 4. Bob sử dụng một cái séc có chứng nhận của nhà băng để mua bán với Alice:  Bob viết một séc và chuyển cho nhà băng. Giao thức có trọng tài Ngƣời trọng tài là ngƣời thoả mãn các điều kiện sau:  Không có quyền lợi riêng trong giao thức và không thiên vị cho một bên nào. đơn giản vì anh ta sẽ đƣợc trả tiền công trong cả hai trƣờng hợp. Trong giao thức này:  Alice tin tƣởng rằng Trent sẽ không trao hàng cho Bob trừ khi séc đƣợc chuyển xong và sẽ chuyển lại hàng cho cô ta nếu séc không có giá trị.  Sau khi cầm một số tiền từ tài khoản của Bob bằng giá trị của tờ séc. Do vậy. nhà băng ký chứng nhận lên séc và chuyển trả lại cho Bob. 132 . Ví dụ 2: Nhà băng cũng có thể đứng ra làm trọng tài cho ALice và Bob.

mà sử dụng ngƣời phân xử (adjudicator). nếu có tranh cãi thì mới cần ngƣời phân xử (không có tranh cãi thì thôi). điều đó có nghĩa ở đó sẽ trở nên một điểm thắt nút cổ chai (bottleneck). 133 . rõ ràng là không phải không đáng kể. Tƣ tƣởng này đƣợc đem áp dụng vào thế giới máy tính. Giao thức có ngƣời phân xử Để yên tâm giao dịch.  Bởi vì tất cả mọi ngƣời trên mạng đều tin trọng tài. Luôn luôn có những khoảng trễ vốn gắn liền với bất kỳ một giao thức có trọng  Trọng tài phải tham gia vào mọi giao dịch trên mạng.   tài nào. Alice và Bob cần mời một trọng tài có uy tín cao. Tuy nhiên nếu hai bên tham gia giao thức đã nghi ngờ nhau thì việc cùng đặt lòng tin vào một bên thứ ba nào đó nằm đâu đó khuất diện trên mạng máy tính cũng trở nên có thể đáng ngờ. tuy nhiên ở đây sẽ nảy sinh vấn đề về việc phải trả số tiền xứng đáng cho ngƣời này. Anh ta không tham gia trực tiếp vào giao dịch nhƣ trọng tài nhƣng sẽ đứng ra để xác định xem là giao dịch có đƣợc tiến hành đúng không và xác định bên sai bên đúng nếu nhƣ có tranh cãi.Chƣơng VII: Giao thƣc mâ ̣t mã ́  băng. Cũng giống nhƣ trọng tài. thực hiện bất kỳ khi nào muốn tiến hành giao dịch.  Alice chuyển séc vào nhà băng. tuy nhiên ở đây xuất hiện một số vấn đề nhất định đối với hệ thống máy tính:  Có thể dễ dàng tìm thấy và đặt lòng tin vào một bên thứ ba trung gian (trọng tài) nếu ta biết và có thể nhìn tận mặt họ.Nhƣng điểm khác biệt giữa trọng tài và ngƣời phân xử là ngƣời phân xử không phải luôn luôn cần thiết.2. bao hàm ý nghĩa ngƣời này không cần phải có mặt khi Alice và Bob tiến hành giao dịch mà chỉ đƣợc mời đến khi Alice và Bob yêu cầu giải quyết tranh cãi. Mạng máy tính phải tốn thêm chi phí để quản lý và bảo trì máy tính trọng tài. 4. ngƣời phân xử phải không có quyền lợi liên can đến giao dịch của Alice và Bob. và đƣợc cả hai ngƣời này tin tƣởng. dễ gây ra ở đây một điểm nhạy cảm chịu áp lực tấn công tập trung từ các kẻ rình rập để phá hệ thống. dễ tắc trên mạng một khi giao thức đã đƣợc triễn khai cho một ứng dung rộng rãi. Tăng cƣờng số trọng tài có thể giúp tránh bế tắc này nhƣng lại làm tăng thêm chi phí để quản lý bảo trì những máy tính có trọng tài đó. tin rằng nhà băng cầm giữ số tiền của Bob cho cô ta mà không sử dụng nó vào đầu tƣ ở bất cứ đâu. Alice giao xe cho Bob cùng lúc Bob đƣa Alice tờ séc có chứng nhận của nhà Giao thức này thực hiện đƣợc bởi vì Alice tin tƣởng vào chứng nhận của nhà băng.  Hai là một arbitrated giao thức chỉ đƣợc sử dụng khi Alice và Bob cãi nhau và muốn có ngƣời phân xử. Vì thế trong trƣờng hợp này ta không dùng khái niệm ngƣời trọng tài (arbitrated) với nghĩa là ngƣời phải trực tiếp tham gia vào giao thức. Vì vậy ngƣời ta đã nảy sinh ý nghĩ chia giao thức có trọng tài tham dự (arbitrated protocol) thành hai phân giao thức (subprotocol) ở hai cấp dƣới:  Một là một giao thức không cần đến trọng tài.

Quan toà xem xét các chứng cớ và phán quyết. 4. Nếu có bên nào cố ý sai luật thì tiến trình sẽ cho phép phía bên kia phát hiện ra ngay và giao thức dừng lại ngay lập tức. Ý tƣởng dùng ngƣời phân xử này có thể đem vào áp dụng trên máy tính.ngƣời mà sẽ chỉ đƣợc biết đến hợp đồng này khi nào một trong hai ngƣời Alice hay Bob lôi ngƣời kia ra toà. giao thức ngƣời phân xử sẽ phát hiện đƣợc lừa dối nếu xảy ra. tức là phân tích các dạng tấn công có thể. Điều mong muốn cho tất cả các giao thức đều nên chế tạo nhƣ thế. Các tấn công của kẻ phá hoại nhằm phá hoại tính an ninh của hệ thống cũng nhƣ xâm phạm tính bí mật riêng tƣ của thông tin. Khác với công chứng viên. Giao thức dùng cho ký kết hợp đồng này có thể đƣợc hình thức hoá nhƣ sau: Ví dụ: Tại mọi thời điểm:    Alice và Bob thoả thuận các điều khoản trong hợp đồng. 5. chúng ta chỉ xem xét khả năng thứ hai. Các dạng tấn công có thể phân thành hai loại chính nhƣ sau: 134 . chúng ta hãy gác lại khả năng thứ nhất . Trong phần này. làm lùi bƣớc những kẻ có ý định lừa đảo. nhƣng đáng tiếc là không phải lúc nào cũng có giao thức loại này cho mọi tình huống. Nghĩa là giao thức loại này đƣợc chế ra sao cho không thể có các kẽ hở cho tranh cãi nảy sinh. không cần đến trọng tài hay một thẩm phán để phân xử khi tranh cãi. các thuật toán mật mã đƣợc vận dụng. Loại giao thức này tự ̉ bản thân nó có thể đảm bảo đƣợc tính công bằng.giả sử rằng các kỹ thuật và thuật toán mật mã đều là an toàn. có thể hƣớng vào một trong các yếu tố sau: các xử lý kỹ thuật. cài đặt trong các bƣớc cụ thể của giao thức. Trong những giao thức thế này nếu có một bên tham gia mà không trung thực thì dữ liệu lƣu đƣợc từ giao thức sẽ cho phép ngƣời phân xử sau này phát hiện đƣợc ai là ngƣời đã lừa dối. một thẩm phán . Bob trình bày các chứng cớ của anh ta. Bob ký hợp đồng.3. thực tế này khi đƣợc phổ biến rộng rãi sẽ có tác dụng ngăn chặn. Alice ký hợp đồng. bên dƣới cái vỏ “ngoại giao” đó là các kỹ thuật. Giao thức tƣ̣ phân xƣ ̉ Giao thức tƣ̣ phân xƣ là loại tốt nhất trong số các giao thức. trong đó kẻ thù lợi dụng các kẻ hở logic để kiếm lợi hay phá hoại. Nhƣ vậy thay vì ngăn chặn trƣớc sự lừa đảo. các thuật toán mật mã hay là chính bản thân giao thức.Chƣơng VII: Giao thƣc mâ ̣t mã ́ Các thẩm phán là những ngƣời phân xử chuyên nghiệp. Các dạng tấn công đối với giao thức Nếu nhƣ giao thức đƣợc coi nhƣ một nghi thức giao tiếp để các bên làm việc với nhau thì đối với cryptography giao thức. Khi có tranh cãi cần giải quyết:     Alice và Bob đến gặp quan toà nhờ phân xử. Alice đƣa ra chứng cớ của cô ta.

giải mã thì mới dùng đƣợc (cipher only attack). do đó kẻ địch cần phải biết cách phân tích. thậm chí ngay chính là ngƣời quản trị mạng. Trong khi đó. Mặc dù hình thức tấn công này không mạnh nhƣng rất khó phát hiện vì kẻ địch không gây động. ngắt ngang các kênh thông tin hay sửa chửa vào các kho thông tin trên mạng. Hơn nữa phải nhớ rằng kẻ địch không phải chỉ có thể là những kẻ xa lạ bên ngoài mà nó có thể là một cá nhân hợp pháp trong hệ thống. Nó có thể đóng giả với một cái tên khác can thiệp vào giao thức bằng những thông báo kiểu mới. Mục đích của nó là cố gắng quan sát và thu lƣợm thông tin. thay thế thông báo thật bằng thông báo giả. gây ảnh hƣởng phức tạp đến giao thức. Các khả năng khác nhau này là phụ thuộc vào tổ chức mạng và vai trò của kẻ địch trên mạng. tuy nhiên đôi khi ngƣời ta cũng có các biện pháp để các bên hợp pháp có thể dò ra đƣợc sự lừa đảo đang diễn ra. Loại kẻ địch này đƣợc là kẻ lừa đảo (cheater). 135 . Kẻ lừa đảo thuộc loại thụ động thì có thể làm đúng theo giao thức nhƣng lại cố tình thu nhặt thêm thông tin từ các bên đối tác hơn là đƣợc phép theo qui định. đặc biệt là trong các giao thức mà các bên khác nhau không nhất thiết phải tin nhau. Ngoài ra còn có thể có nhiều cá nhân liên kết với nhau thành một nhóm kẻ địch. nhƣng ngoài ra nó có thể gây ra các phá hoại khác nhƣ phá hoại đƣờng truyền truy nhập vào những hệ thống thông tin mà chỉ dành cho những ngƣời có đủ thẩm quyền. xoá bỏ những thông báo đang phát trên đƣờng truyền. Kẻ tấn công trong tấn công thụ động (Eve) chỉ cố gắng thu lƣợm thông tin từ các bên tham gia giao thức. Kẻ lừa đảo chủ động thì phá vỡ giao thức trong một cố gắng lừa dối. Rất khó để giữ an toàn cho một giao thức nếu nhƣ phần lớn các bên tham gia đều là những kẻ lừa đảo chủ động. Tuy nhiên thông tin nghe trộm đƣợc chỉ ở dạng mã hoá.  Với dạng tấn công chủ động (active attack): kẻ địch là một thế lực trong mạng. Một điều cũng có thể xảy ra là Mallory lại chính là đối tác trong giao thức.Chƣơng VII: Giao thƣc mâ ̣t mã ́  Với dạng tấn công thụ động: kẻ địch chỉ đứng ngoài nghe trộm chứ không can thiệp hay ảnh hƣởng gì đến giao thức. làm tăng lên sự nguy hiểm cho giao thức. Tất nhiên các giao thức cũng cần phải đƣợc bảo vệ để chống lại những kẻ lừa đảo loại thụ động. thông qua thu nhập các thông báo truyền tin giữa các bên để phân tích giải mã. Anh ta có thể có hành động lừa dối hoặc là không chịu tuân theo giao thức. Kẻ tấn công có thể có mục đích đơn thuần là tóm đƣợc tin mà nó quan tâm. Kẻ địch trong tấn công chủ động thật sự rất nguy hiểm. nắm nhiều khả năng và phƣơng tiện để có thể chủ động tấn công can thiệp. kẻ tấn công chủ động (Mallory) có thể gây ra các tác hại rất phức tạp đa dạng.

com/rsalabs/changelenges/factoring/rsa155.ncl. 2003. “Hand book of Applied Cryptography”.(DSS)http://www. 1996. 6.http://www.mindspring. http://www. http://www.pdf 136 .uk/old/modules/200001/csc331/notes/ [13] “Cryptography and Computer Security”. van Oorchot. Academic Press Inc.cacr. CRC Press. 1996. [8] FIPS 186 . CRC Press. “Applied Cryptography. [11] RSA library. “Modern CryptographyProtect Your Data with Fast Block Ciphers”. “New Directions in Cryptography”. [15] “Data security and cryptography”. “Communication theory of secret systems” (tạp chí khoa học). http://www.adfa. November 1976. IT-22. Boris Izotov.rhul.edu/koc/ece575 [16] “OPT8 Advanced Cryptography”. “Theory of code”.edu. CRC Press.au/teaching/studinfo/csc/lectures/ [14] http://www.gov/fipspubs/fip186. http://www. “Classical cryptography course”. Martin E.securitydynamics. [7] Gil Held.ac.rsa. No.htm [9] Jean Berstel.islab. [3] Randy Nichols (LANAKI). 1998.Stinson. 1995.ac. 1985. Dominique. Alex Moldovyan and Nik Moldovyan. Hellman.cs. and Source Code in C (cloth)”.forturecity. [2] Whitfield Diffie. 1949. “Cryptography: theory and practice”.cs. A-LIST Publishing . Vol. Shannon.fpt. 1995. IEEE transactions on information theory. Second Edition: Protocols. Algorthms.Menezes.oregonestate.math. http://www.Tài liệu tham khảo TÀI LIỆU THAM KHẢO [1] Nik Goots.html.uwaterloo.com/course/LANAKI.Vanstone. [10] C.uk/msc/teaching/opt8/macs.ca/hac [5] Douglas R. and S. P.nist.com/~pate/stinson/ [6] Bruce Schneier. www.isg. “Learn Encryption Techniques with BASIC and C++”.org/PKI [12] “System and Network Security”. http://www.html [4] A. MIST Press.itl.

Một trong các yếu điểm chính của hệ Knapsack là việc lưu khóa cần bộ nhớ lớn. các hàm băm dựa vào các phép tính số học. 2. Câu 2 : Cho khó a K =   và tin gốc là „July‟ xác định trên trường Z  3 7 Tìm tin mã theo giải thuật Hill – cipher. Câu 3: Các mệnh đề sau đúng hay sai. Một trong các yếu điểm của các hệ mã mật khóa công khai là chậm. Giải thích rõ các chức năng và các bước thực hiện.Đề thi tham khảo Đề 1: Câu 1 : Cho hệ mã Hill có M = 2 và ma trận khóa A =   hãy thực hiện  3 7 mã hóa với xâu S = “HARD”. 6. 6. Để sử dụng cơ chế bảng tra mã điện tử (EBC) khi cài đặt không cần có một gía trị khởi tạo IV. Đề 2: 12 5 Câu 1 : Vẽ lược đồ chế độ sử dụng mã khối móc xích CBC . So với tấn công chủ động tấn công thụ động nguy hiểm hơn. Giao thức 3 bước Shamir hỗ trợ khả năng xác thực hóa nguồn gốc thông điệp. Mô tả thuâ ̣t toán sinh và giải mã. Knapsack đươ ̣c go ̣i là các hê ̣ mã mâ ̣t khóa công khai vì khóa của chúng đều được công khai hóa. 5. 137 . 2. 5. Trong hệ mã ElGamma luôn xuất hiện hiện tượng lộ bản rõ. Mô tả thuâ ̣t toán sinh và giải mã. Để tăng tính bảo mật cho DES có thể mã hóa nhiều lần với các khóa khác nhau. 11 8  26. 3. Chuẩn mã hóa dữ liệu (DES) không còn an toàn nên không còn được dùng trong thực tế. ElGamma. Câu 2 : Vẽ mô hình quản lý khóa dựa vào hệ mã khóa công khai. 4. Giao thức 3 bước Shamir là giao thức trao đổi thông tin không cần trao đổi khóa. Các hệ mã mâ ̣t RSA . Đề 3: Câu 1 : Vẽ lược đồ chế độ sử dụng mã khối phản hồi CFB . giải thích? 1. các hàm băm đặc biệt và các hàm băm dựa vào các hệ mã khóa công khai. giải thích? 1. 3. Tất cả có 4 loại hàm băm: các hàm băm dựa vào các hệ mã khối (chẳng hạn như DES). Câu 3: Các mệnh đề sau đúng hay sai. Cơ chế mã móc xích an toàn hơn cơ chế bảng tra mã điện tử 4.

q = 23. Câu 3: Các mệnh đề sau đúng hay sai. 5. Cơ chế mã móc xích an toàn hơn cơ chế bảng tra mã điện tử. Tìm tin gốc theo giải thuâ ̣t RSA. Giao thức 3 bước Shamir là giao thức trao đổi thông tin không cần trao đổi khóa. Các hệ mã mật SKC và PKC đều cho phép sử dụng trong mô hình chữ ký điện tử. 128). 5. Tìm tin mã (bản mã) theo giải thuâ ̣t Knapsack. Đề 4: Câu 1 : Vẽ lược đồ giải t huâ ̣t sinh mã DES và giải thich các công thức đươ ̣c ́ dùng. gửi chữ ký và kiểm tra chữ ký. và tin gốc (bản rõ) là 10. 4. 6. giải thích? 1. Các hệ chữ ký điện tử hoạt động theo 3 bước: sinh chữ ký. giải thích? 1. 2. 8. w = 29. 16. Tìm tin mã theo giải thuật Knapsack. Câu 2 : Cho p = 13. 6. Một trong các yếu điểm chính của hệ Knapsack là việc lưu khóa cần bộ nhớ lớn. Các hệ mã mật khóa công khai thường được gọi là PKC trong đó PKC có nghĩa là Private Key Cryptography. 64. 128). Giao thức 3 bước Shamir là giao thức trao đổi thông tin không cần trao đổi khóa. 3. 138 . khi đó giá trị hàm Ơ le của N: (N) = 800. Điều kiện để giao thức 3 bước Shamir hoạt động là: EZ2-1(EZ1(EZ2 ( X ))) = EZ2 (X). Cho N = 2000. 8. 64. 2. Từ luật Kierchoff suy ra muốn tăng độ an toàn của một hệ mã mật cần sử dụng thuật toán mã hóa càng phức tạp càng tốt. 3. 4. m = 301. So với kiểu tấn công thụ động kiểu tấn công chủ động khó phát hiện hơn và nguy hiểm hơn.Đề thi tham khảo Câu 2 : Cho véc tơ siêu tăng A = (1. Câu 2 : Cho véc tơ siêu tăng a = (1. 32. e = 173. 32. 2. 2. 4. Trong chế độ mã móc xích thông điệp được chia thành n khối. và tin mã là 122. và tin gốc là 16. 4. nếu như khối thứ i bị lỗi trước khi đem mã hóa thì sẽ làm ảnh hưởng tới các khối mã hóa sau đó. m = 300. u = 31. Đề 5: Câu 1 : Vẽ lược đồ sinh khóa từ khóa chính của DES và giải thích các công thức đươ ̣c dùng. Câu 3: Các mệnh đề sau đúng hay sai. 16.

Đề thi tham khảo Câu 3: Các mệnh đề sau đúng hay sai. Cơ chế CBC là cơ chế sử dụng mã khối đơn giản nhất và dễ dùng nhất. 2. Khóa mã hóa của chuẩn mã hóa dữ liệu có độ dài bằng 56 bit. Trong cơ chế ECB nếu một khối nào đó bị hỏng trước khi đưa vào mã hóa sẽ làm ảnh hưởng tới tất cả các khối mã hóa đứng trước nó. 139 . 6. Cơ chế mã móc xích an toàn hơn cơ chế bảng tra mã điện tử.. Các chế độ sử dụng mã khối đều sử dụng các đơn vị khối dữ liệu 64 bit. 3. Trong hệ mã ElGamma luôn xuất hiện hiện tượng lộ bản rõ. giải thích? 1. 4. 5.

You're Reading a Free Preview

Tải về
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->