i
LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của tôi, các số liệu và
kết quả trình bày trong luận án là trung thực và chưa được công bố ở bất kỳ
công trình nào khác.
Tác giả
Hồ Quang Bửu
ii
LỜI CẢM ƠN
Luận án Tiến sĩ kỹ thuật này được thực hiện tại Học viện Công nghệ Bưu
chính Viễn thông. Tác giả xin tỏ lòng biết ơn đến thầy giáo GS.TSKH. Nguyễn
Xuân Quỳnh đã trực tiếp định hướng, tạo mọi điều kiện trong suốt quá trình
nghiên cứu. Tác giả cũng xin cảm ơn GS.TS. Nguyễn Bình đã trực tiếp hướng dẫn
học thuật hóa, kiểm tra những kết quả của các công trình nghiên cứu.
Tôi xin chân thành cảm ơn Lãnh đạo Học viện Công nghệ Bưu chính Viễn
thông đã tạo những điều kiện thuận lợi để hoàn thành và bảo vệ luận án trong thời
gian nghiên cứu của nghiên cứu sinh. Tôi xin cảm ơn khoa Quốc tế và Đào tạo sau
đại học, Sở Thông tin truyền thông tỉnh Quảng Nam (nơi tôi đang công tác), cũng
như các đồng nghiệp đã tạo điều kiện và giúp đỡ tôi hoàn thành được đề tài nghiên
cứu của mình.
Cuối cùng là sự biết ơn tới gia đình, bạn bè đã thông cảm, động viên giúp đỡ
cho tôi có đủ nghị lực để hoàn thành luận án.
Hà nội, tháng 12 năm 2013
iii
MỤC LỤC
LỜI CAM ĐOAN ...................................................................................................... i
LỜI CẢM ƠN .......................................................................................................... ii
MỤC LỤC ...............................................................................................................iii
DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT ............................................. vi
DANH MỤC CÁC BẢNG ....................................................................................viii
DANH MỤC CÁC HÌNH VẼ ................................................................................. ix
1. MỞ ĐẦU ....................................................................................................... 1
2. TÌNH HÌNH NGHIÊN CỨU ......................................................................... 1
3. LÝ DO CHỌN ĐỀ TÀI ................................................................................. 4
4. MỤC TIÊU NGHIÊN CỨU .......................................................................... 4
5. ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU .................................................... 5
6. PHƯƠNG PHÁP NGHIÊN CỨU ................................................................. 5
7. Ý NGHĨA KHOA HỌC VÀ THỰC TIÊN CỦA ĐỀ TÀI ............................ 5
PHẦN MỞ ĐẦU ...................................................................................................... 1
1.1. CÁC KHÁI NIỆM CƠ BẢN ......................................................................... 6
1.2. CÁC HỆ MẬT KHÓA BÍ MẬT .................................................................... 8
CHƯƠNG 1. TỔNG QUAN VỀ MẬT MÃ HỌC .................................................. 6
1.2.1. Sơ đồ khối chức năng hệ mật khóa bí mật .................................... 8
1.2.2. Các hệ mật thay thế ....................................................................... 8
1.2.3. Các hệ mật hoán vị (MHV) ......................................................... 11
1.2.4. Các hệ mật mã tích ...................................................................... 12
1.2.5. Các hệ mật mã dòng và việc tạo các dãy giả ngẫu nhiên ............ 15
1.2.6. Chuẩn mã dữ liệu DES ................................................................ 26
1.2.7. Ưu nhược điểm của mật mã khóa bí mật ..................................... 29
1.3. HỆ MẬT KHÓA CÔNG KHAI ................................................................... 30
iv
1.3.1. Sơ đồ chức năng .......................................................................... 30
1.4. CƠ BẢN VỀ HÀM BĂM ............................................................................ 33
1.3.2. Một số bài toán xây dựng hệ mật khóa công khai ....................... 31
1.4.1. Mở đầu ......................................................................................... 33
1.4.2. Các định nghĩa và tính chất cơ bản.............................................. 35
1.4.3. Một số phương pháp xây dựng hàm băm .................................... 37
1.4.4. Các loại tấn công hàm băm cơ bản .............................................. 41
1.5. TÍNH TOÀN VẸN CỦA DỮ LIỆU VÀ XÁC THỰC THÔNG BÁO........ 44
1.4.5. Độ an toàn mục tiêu ..................................................................... 43
1.5.1. Các phương pháp kiểm tra tính toàn vẹn dữ liệu ........................ 44
1.6. KẾT LUẬN CHƯƠNG 1............................................................................. 49
1.5.2. Chữ ký số ..................................................................................... 46
2.1. NHÓM NHÂN CYCLIC TRÊN VÀNH ĐA THỨC .................................. 50
CHƯƠNG 2. HỆ MẬT XÂY DỰNG TRÊN CÁC CẤP SỐ NHÂN CYCLIC .. 50
2.1.1. Định nghĩa nhóm nhân cyclic trên vành đa thức ......................... 50
2.2. CẤP SỐ NHÂN CYCLIC TRÊN VÀNH ĐA THỨC ................................. 54
2.1.2. Các loại nhóm nhân cyclic trên vành đa thức.............................. 52
2.2.1. Khái niệm về cấp số nhân cyclic trên vành đa thức .................... 54
2.3. XÂY DỰNG M-DÃY LỒNG GHÉP TRÊN VÀNH ĐA THỨC CÓ HAI
LỚP KỀ CYCLIC ....................................................................................... 61
2.2.2. Phân hoạch vành đa thức ............................................................. 55
2.3.1. Vành đa thức có hai lớp kề .......................................................... 61
2.3.2. M-dãy xây dựng trên vành đa thức .............................................. 63
2.3.3. Xây dựng M-dãy lồng ghép từ các cấp số nhân cyclic trên vành
đa thức có hai lớp kề ...................................................................................... 64
2.4. HỆ MẬT XÂY DỰNG TRÊN CÁC CẤP SỐ NHÂN CYCLIC ................ 71
v
2.4.1. Vấn đề mã hóa ............................................................................. 71
2.4.2. Xây dựng hệ mật dùng cấp số nhân cyclic .................................. 76
2.5. KẾT LUẬN CHƯƠNG 2 ............................................................... 82
CHƯƠNG 3. HÀM BĂM XÂY DỰNG TRÊN CẤP SỐ NHÂN CYCLIC ....... 83
3.1. CÁC HÀM BĂM HỌ MD4 ........................................................... 83
3.1.1. Cấu trúc........................................................................................ 83
3.1.2. Mở rộng thông báo ...................................................................... 87
3.2. XÂY DỰNG HÀM BĂM MỚI TRÊN CÁC CẤP SỐ NHÂN CYCLIC ... 94
3.1.3. Các bước mã hóa ......................................................................... 89
3.2.1. Sơ đồ khối mật mã trong hàm băm.............................................. 94
3.3. KẾT LUẬN CHƯƠNG 3........................................................................... 101
3.2.2. Các đánh giá kết quả mô phỏng hàm băm mới ......................... 100
KẾT LUẬN VÀ KIẾN NGHỊ .............................................................................. 102
DANH MỤC CÁC CÔNG TRÌNH CÓ LIÊN QUAN ĐẾN LUẬN ÁN ........... 104
TÀI LIỆU THAM KHẢO .................................................................................... 105
PHỤ LỤC A: THÔNG SỐ CỦA MỘT SỐ HÀM BĂM .................................... 109
PHỤ LỤC B: CÁC CHƯƠNG TRÌNH TÍNH TOÁN VÀ MÔ PHỎNG ........... 122
vi
DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT
Advanced Encryption Standard AES
American National Standards Institute
ANSI CAST
Carlisle Adams and Stafford Tavares Cipher Block Chaining CBC
Cipher Feedback Block CFB
CGP Cấp số nhân cyclic (Cyclic Geometic Progressions)
CMG
Nhóm nhân cyclic (Cyclic Multiplicate Group) Cyclic Redundancy Check CRC
Collision Resistant Function CRF
Collision Resistant Hash Function CRHF
Chu trình
Khoảng cách Hamming
deg
Bậc của đa thức (Degree) Data Encryption Algorithm DEA
DES Chuẩn mã dữ liệu (Data Encryption Standard)
Đa thức lũy đẳng
Electronic Codebook ECB
Trường (Field)
G Nhóm (Group)
GF(p) Trường đặc số
Hàm băm (Hash)
I
Ideal International Data Encryption Algorithm IDEA
Initial Value IV
Message Authentication Code MAC
Manipulation Detection Code MDC
Message Digest x
MD-x NESSIE New European Schemes for Signatures, Integrity and Encryption
vii
National Institute for Standards and Technology (US) NIST
Output Feedback OFB
ord
Cấp của đa thức (Order) One-Way Function OWF
One-Way Hash Function OWHF
R
Vành (Ring) Race Integrity Primitives Evaluation RIPE
Rivest Shamir Adleman RSA
Secure Hash Algorithm
SHA TDEA
Triple Data Encryption Algorithm Universal One-Way Hash Function
UOWHF VEST Very Efficient Substitution Transposition
Trọng số (Weight) Vành đa thức trên
viii
DANH MỤC CÁC BẢNG
Bảng 1. Một số hàm băm ......................................................................................... 3
Bảng 1.1. Trạng thái của các vector đầu ra M-dãy ................................................ 22 Bảng 1.2. Các đặc tính của dãy tuyến tính có chu kỳ 2m-1 .................................... 26 Bảng 1.3. Bảng IP và IP-1 ....................................................................................... 28 Bảng 1.4. Độ an toàn mục tiêu của hàm băm ......................................................... 43
Bảng 2.1. Số kiểu phân hoạch không suy biến M của một số vành ....................... 57
Bảng 2.2. Tổng số các kiểu phân hoạch của vành ........................... 58
Bảng 2.3. M-dãy xây dựng trên vành .................................................. 63 Bảng 2.4. Các tam thức cấp cực đại 4095 (32.5.7.13) trên vành x13 + 1 ................ 68 Bảng 2.5. Một số phần tử của M-dãy trên vành x13+1 ........................................... 69 Bảng 2.6. M-dãy với chiều dài 4095 theo phân hoạch cực đại .............................. 69
Bảng 2.7. Số lượng M-dãy lồng ghép với một vài giá trị n khác nhau .................. 70
Bảng 2.8. Bảng hoán vị ban đầu (IP) ..................................................................... 78 Bảng 2.9. Bảng hoán vị đảo (IP-1) .......................................................................... 78 Bảng 2.10. Khoảng cách Hamming dH(C1,Ci) giữa các cặp bản mã khi các bản rõ khác nhau 1 bit, dH(M1,Mi) = 1, với cùng một khóa K ................................... 80 Bảng 2.11. Khoảng cách Hamming dH(C1,Ci) giữa các cặp bản mã khi các khóa khác khóa K1 2 bit dH(K1, Ki)=2 với cùng một bản rõ M ............................... 81 Bảng 3.1. Thông số của các hàm băm họ MD4 ..................................................... 85
Bảng 3.2. Ký hiệu các thông số và các biến ........................................................... 86
Bảng 3.3. Khoảng cách Hamming dH(MD1, MDi) khi các khối dữ liệu khác khối ban đầu 1 bit ................................................................................................... 97
Bảng 3.4. Khoảng cách Hamming dH(MD1, MDi) giữa các cặp giá trị băm khi các khóa khác khóa K1 2 bit. ................................................................................. 99 Bảng 3.5. Tính khoảng cách Hamming trung bình khi thay đổi khóa K và thay đổi bản tin rõ. ...................................................................................................... 100
ix
DANH MỤC CÁC HÌNH VẼ
Hình 1.1. Sơ đồ khối chức năng hệ mật khóa bí mật ............................................... 8 Hình 1.2. M-dãy tạo từ thanh ghi dịch phản hồi tuyến tính LFSR ........................ 22 Hình 1.3. Mạch tạo M-dãy từ đa thức g(x) = 1+x+x4 ........................................... 23 Hình 1.4. Bộ tạo dãy Gold đối với g1(d) = d3 + d +1 và g2(d) = d3 + d2 +1............ 24 Hình 1.5. Sơ đồ mã hóa DES ................................................................................. 27 Hình 1.6. Mô tả hàm f trong DES .......................................................................... 28 Hình 1.7. Các bước tạo khóa cho các vòng mã hóa của DES ................................ 29 Hình 1.8. Sơ đồ khối chức năng hệ mật khóa công khai ........................................ 30 Hình 1.9. Phân loại hàm băm ................................................................................. 36 Hình 1.10. Các sơ đồ hàm băm đơn a) Matyas-Mayer–Oseas;
b) Davies-Mayer và c) Miyaguchi – Preneel ...................................... 37 Hình 1.11. Thuật toán MDC-2 ............................................................................... 39 Hình 1.12. Thuật toán MDC-4 ............................................................................... 40 Hình 1.13. Sơ đồ Miyaguchi – Preneel .................................................................. 41 Hình 1.14. Kiểm tra tính toàn vẹn bằng MAC ....................................................... 45 Hình 1.15. Kiểm tra tình toàn vẹn dùng MDC và thuật toán mã hóa .................... 45 Hình 1.16. Kiểm tra tính toàn vẹn dùng MDC và kênh an toàn ............................ 46 Hình 1.17. Quá trình tạo chữ ký số và kiểm tra chữ ký số ..................................... 47 Hình 1.18. Sơ đồ chữ ký số dùng RSA .................................................................. 47 Hình 1.19. Sơ đồ chữ ký số dùng RSA và có bảo mật thông báo .......................... 48 Hình 2.1. Mã hóa và giải mã xây dựng trên cấp số nhân cyclic ............................ 71 Hình 2.2. Sơ đồ thiết bị mã hoá .............................................................................. 75 Hình 2.3. Sơ đồ thiết bị giải mã ............................................................................. 75 Hình 2.4. Sơ đồ mạng thay thế Feistel ................................................................... 76 Hình 2.5. Sơ đồ mã hóa khối E .............................................................................. 77 ..................................... 79 Hình 2.6. Sơ đồ khối mã hóa , với khóa
Hình 3.1. Tương tác giữa mở rộng thông báo và các thao tác bước ...................... 83 Hình 3.2. Một bước mã hóa của MD5 ................................................................... 92 Hình 3.3. Sơ đồ thực hiện hàm băm ....................................................................... 95 Hình 3.4. Sơ đồ bộ mã hóa khóa E với khóa K1 .................................................... 95
1
PHẦN MỞ ĐẦU
1. MỞ ĐẦU
Trong sự phát triển của xã hội loài người, kể từ khi có sự trao đổi thông tin,
thì an toàn thông tin trở thành một nhu cầu gắn liền với nó. Từ thủa sơ khai, an
toàn thông tin được hiểu đơn giản là giữ bí mật và điều này được xem như một
nghệ thuật chứ không phải là một ngành khoa học. Với sự phát triển của khoa học
kỹ thuật và công nghệ, cùng với các nhu cầu đặc biệt có liên quan tới an toàn thông
tin, ngày nay cần có các yêu cầu kỹ thuật đặc biệt trong việc đảm bảo an toàn
thông tin, các kỹ thuật đó bao gồm: Kỹ thuật mật mã (Cryptography); kỹ thuật
ngụy trang (Steganography); kỹ thuật tạo bóng mờ (Watermarking – hay thủy
vân).
Hiện nay việc trao đổi thông tin thương mại trên Internet có nhiều nguy cơ
không an toàn do thông tin có thể bị lộ hay bị sửa đổi. Nói chung, để bảo vệ các
thông tin khỏi sự truy cập trái phép cần phải kiểm soát được những vấn đề như:
thông tin được tạo ra, lưu trữ và truy nhập như thế nào, ở đâu, bởi ai và vào thời
Để giải quyết các vấn đề trên, kỹ thuật mật mã hiện đại phải đảm bảo các dịch vụ
an toàn cơ bản: (1) bí mật (Confidential); (2) xác thực (Authentication); (3) đảm bảo tính
toàn vẹn (Integrity), và để thực hiện các nhiệm vụ này người ta sử dụng hàm băm mật mã
(Cryptographic Hash Function).
điểm nào.
2. TÌNH HÌNH NGHIÊN CỨU
Cho đến nay các nghiên cứu về hàm băm được chia thành hai loại: hàm băm
không khóa và hàm băm có khóa. Thông thường các hàm băm đều xây dựng dựa
trên mật mã khối với hai phương pháp chính là Mã phát hiện sửa đổi (MDC-
Manipullation Detection Code) và Mã xác thực thông báo (MAC-Message
Authentication Code).
2
Hiện nay trên thế giới có khá nhiều hệ mật mã khối khóa bí mật đã được
nghiên cứu sử dụng cho các lược đồ xây dựng hàm băm, điển hình là các hệ mật
sau: DES, IDEA, TDEA, AES, CAST,… Những nghiên cứu về các hệ mật này đã
xuất hiện trong rất nhiều công trình từ rất nhiều năm qua, tuy nhiên chúng đã được
tổng kết trong các công trình sau [19], [20], [25], [28], [31], [33]. Các sơ đồ mã
hóa thường sử dụng một số lưu đồ như: Feistel cân bằng (như trong DES), Feistel
Một hàm băm mật mã học là một hàm
phải có các tính chất sau [24], [25],
[26]:
Tính chất nén
Tính chất dễ tính toán.
Kháng tiền ảnh.
Kháng tiền ảnh thứ hai.
Kháng va chạm.
không cân bằng 4 nhánh, Lai-Massey, các mạng thay thế hoán vị…
Các lược đồ được sử dụng để xây dựng hàm băm phổ biến bao gồm [4], [15],
Matyas – Mayer – Oseas (M-M-O).
Davies – Mayer (D-M).
Miyaguchi – Preneel (M-P).
MDC-2
MDC-4
MAC…
[22], [29], [37]:
Cho đến nay đã có nhiều nghiên cứu về hàm băm trên thế giới, các nghiên cứu
tập trung xây dựng các hàm băm có độ bảo mật tốt và đặc biệt là khả năng kháng
va chạm, thông thường để có được các tính chất này người ta thường phát triển các
thuật toán mã hóa, các các phép toán trong hàm mã hóa và tăng chiều dài mã
băm… Một số hàm băm cho trong bảng 1 dưới đây.
Bảng 1: Một số hàm băm
3
TT Thuật toán Kích thước đầu ra (bit) Xung đột
1 HAVAL 256/224/192/160/128 Có
Khả năng lớn 2 MD2 128
3 MD4 128 Có
4 MD5 128 Có
5 PANAMA 256 Có lỗi
6 RIPEMD 128 Có
7 RIPEMD-128/256 128/256 Không
8 RIPEMD-160/256 160/256 Không
9 SHA-0 160 Không
10 SHA-1 160 Có lỗi
11 SHA-256/224 256/244 Không
12 SHA-512/384 512/384 Không
13 Tiger 192/160/128 192/160/128 Không
14 VEST-4/8 160/256 Không
15 VEST-16/32 320/256 Không
16 WHIRLPOOL 512 Không
SHA-1, MD5, và RIPEMD-160 nằm trong số các thuật toán băm được dùng
rộng rãi nhất của năm 2005. Tháng 8 năm 2004, các nhà nghiên cứu đã tìm được
các điểm yếu của một loạt hàm băm, trong đó có MD5, SHA-0 và RIPEMD.
Tháng 2 năm 2005, người ta ghi nhận một tấn công đối với SHA-1. Tháng 8 năm
2005 người ta lại ghi nhận một tấn công khác đối với SHA-1.
Các hàm băm SHA-1, MD5, RIPEMD đều thuộc họ MD4. Cấu trúc và thuật
toán mã hóa của họ MD4 khá phức tạp (được trình bày trong chương 3 của luận
án) và trải qua nhiều bước như: mở rộng thông báo đầu vào (theo kiểu hoán vị
4
vòng hoặc đệ quy), các bước mã hóa sử dụng các phép toán Boolean, phép cộng số
tự nhiên theo modulo, phép dịch và quay bit, tổ hợp mã băm đầu ra với vector khởi
tạo IV…[23], [24].
Ở Việt Nam việc nghiên cứu các hệ mật cũng đã rất phát triển từ nhiều năm
qua, tuy nhiên việc sử dụng các hệ mật này cho các lược đồ xây dựng hàm băm
còn khá mới mẻ. Cũng có một số công trình nghiên cứu về hệ mật [13], [14] và
xây dựng hạ tầng khóa công khai phục vụ thương mại điện tử [3].
3. LÝ DO CHỌN ĐỀ TÀI
Việc sử dụng cấu trúc nhóm nhân cyclic và cấp số nhân cyclic trên vành đa
thức trong việc tạo mã sửa sai trong thời gian qua ở Việt nam đã có các kết quả
đáng khích lệ [2,] [6], [7], [8], [9], [10], [11], [12], [13], [14], bởi một số lý do: cấu
trúc đại số chặt chẽ, số lượng cấp số nhân trên vành đa thức nhiều (thuận lợi cho
việc tạo khóa trong các hệ mật), mạch điện phần cứng thực hiện khá dễ dàng
(thuận lợi cho việc áp dùng vào thực tế).
Trên cơ sở đó phân tích các hàm băm hiện có tác giả thấy rằng, mặc dù các
hàm băm có tính chất tốt nhưng lại có nhược điểm là phức tạp dẫn tới yêu cầu về
tài nguyên tính toán và thời gian tính toán. Với các ưu điểm của cấu trúc của cấp
số nhân cyclic như đề cập ở trên tác giả nhận thấy việc sử dụng cấu trúc này vào
việc xây dựng các hệ mật và các hàm băm là hướng nghiên cứu mở, đây là một
vấn đề cần thiết trong quá trình phát triển lý thuyết mật mã nói chung và xây dựng
các hàm băm mới nói riêng ở Việt Nam.
4. MỤC TIÊU NGHIÊN CỨU
Khảo sát đánh giá hệ mật khối sử dụng cho lược đồ hàm băm.
Xây dựng hệ mật trên các cấp số nhân cyclic trên vành đa thức.
Xây dựng các hàm băm mới sử dụng hệ mật dựa trên các cấp số nhân cyclic
trên vành đa thức.
5
Viết các chương trình phần mềm mô phỏng, thử nghiệm và đánh giá kết quả
đã nghiên cứu.
5. ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU
Luận án thuộc phạm vi lý thuyết cơ sở, tập trung nghiên cứu các thuật toán
mật mã hóa và sử dụng chúng trong lược đồ xây dựng các hàm băm. Các thuật
toán mã hóa và sơ đồ tạo khóa trong các sơ đồ mã hóa được xây dựng trên cấu trúc
cấp số nhân cyclic, đây là một cấu trúc đại số chặt chẽ được xây dựng trên cơ sở là
nhóm nhân cyclic trên vành đa thức.
6. PHƯƠNG PHÁP NGHIÊN CỨU
Phương pháp nghiên cứu của đề tài là phân tích và tổng hợp dựa vào các
công cụ toán học, đặc biệt là đại số đa thức, lý thuyết thông tin và mật mã, lý
thuyết xác xuất... cùng với sự hỗ trợ tính toán của máy tính và các chương trình
phần mềm mô phỏng để thử nghiệm đánh giá.
7. Ý NGHĨA KHOA HỌC VÀ THỰC TIÊN CỦA ĐỀ TÀI
Những kết quả trong luận án này là một đóng góp nhỏ bé vào việc phát triển
lý thuyết mật mã nói chung và các hàm băm nói riêng. Các nghiên cứu trong luận
án đưa ra được một phương pháp xây dựng mật mã khối và một số hàm băm trên
cơ sở là các cấp số nhân cyclic của vành đa thức.
6
CHƯƠNG 1. TỔNG QUAN VỀ MẬT MÃ HỌC
1.1. CÁC KHÁI NIỆM CƠ BẢN
Mật mã học là một bộ phận của khoa học mật mã (Cryptology), được chia
thành 2 bộ phận chính [4]:
+ Mật mã học (Cryptography): chia thành 3 nội dung:
Mật mã khóa bí mật (Khóa đối xứng)
Mật mã khóa công khai (khóa bất đối xứng)
Hàm băm, xác thực và chữ ký số
+ Phân tích mật mã (Cryptonalys): Dành riêng cho các nhà nghiên cứu
chuyên sâu về mật mã, chuyên nghiên cứu tìm hiểu các phương pháp thám mã:
Phương pháp tấn công tổng lực (tìm khóa vét cạn)
Phương pháp thống kê
Phương pháp phân tích cấu trúc…
Trong lý thuyết mã mã hóa nguồn và mã sửa sai khâu mã hóa (coding) thường chỉ có đầu vào là bản tin và đầu ra là bản mã (và ngược lại với khâu giải mã (decoding)). Tuy nhiên với mật mã học thì hai khâu này có một sự khác biệt đó là đầu vào của mã hóa (giải mã) ngoài bản tin ra còn có thêm khóa (K).
* Mã hóa (Encryption): C M Encryption hay Ta có:
K
M C * Giải mã (Decryption) Decryption
Ta có:
K
Trong đó: M – bản rõ; C – bản mã; K – khóa
* Các phương pháp xử lý thông tin số trong các hệ thống mật mã bao gồm:
+ Mật mã khóa bí mật (khóa đối xứng):
7
Với hệ mật này, việc mã hóa và giải mã sử dụng chung một khóa, do đó hai
bên liên lạc phải thống nhất và bảo mật khóa trước khi truyền tin. Các thuật toán
mã hóa trong hệ mật khóa bí mật thường sử dụng các phương pháp sau:
Hoán vị. Thay thế. Xử lý bit (chủ yếu trong các ngôn ngữ lập trình). Phương pháp hỗn hợp (điển hình là chuẩn mã hóa dữ liệu – DES).
+ Mật mã khóa công khai (khóa không đối xứng):
Thông thường mỗi bên liên lạc tự tạo cho mình một cặp khóa Công khai và bí
mật, khóa công khai dùng để mã hóa bản tin và khóa này được công khai trên
mạng, còn khóa bí mật dùng để giải mã (chỉ có bên nhận tin lưu trữ). Các thuật
toán mã hóa công khai cho đến nay được xây dựng theo một trong năm bài toán
một chiều cơ bản đó là:
Bài toán logarit rời rạc Bài toán phân tích thừa số Bài toán xếp ba lô Bài toán mã sửa sai Bài toán trên đường cong elliptic
+ Mật mã khối:
Trong các hệ mật mã khối quá trình xử lý thông tin được thực hiện theo các
khối bit có độ dài xác định.
+ Mật mã dòng: Trong các hệ mật mã dòng quá trình xử lý thông tin thực
hiện trên từng bit.
+ Độ phức tạp tính toán:
- Độ phức tạp tính toán P (theo thời gian đa thức) các bài toán này là khả thi
và khá đơn giản.
- Độ phức tạp NP: NP là ký hiệu lớp các bài toán giải được bằng thuật toán không tất định (NonDeterminal) trong thời gian đa thức (Polynomial). Bài toán thuộc lớp NP thường khó giải và khá phức tạp.
8
1.2. CÁC HỆ MẬT KHÓA BÍ MẬT
1.2.1. Sơ đồ khối chức năng hệ mật khóa bí mật
Bản rõ M
Bản mã C
Bản mã C
Bản rõ M
Nguồn tin
Bộ mã hoá
Bộ giải mã
Nhận tin
Kênh mở (không an toàn)
(Alice)
(Bob)
(Oscar) Thám mã
Kênh an toàn
Nguồn khoá
K
Hình 1.1. Sơ đồ khối chức năng hệ mật khóa bí mật
Một hệ mật là một bộ gồm 5 tham số thoả mãn các điều kiện
sau [4]:
a) P là một tập hữu hạn các bản rõ có thể. b) C là một tập hữu hạn các bản mã có thể. c) K là một tập hữu hạn các khoá có thể (không gian khoá). d) Đối với mỗi có một quy tắc mã
và một quy tắc giải mã tương ứng
sao cho: với .
1.2.2. Các hệ mật thay thế
1.2.2.1. Các hệ mật thay thế đơn biểu
a) Mật mã dịch vòng (MDV)
Giả sử với , ta định nghĩa:
Mã hóa:
Giải mã:
9
Ví dụ 1.1:
Với văn bản tiếng Anh, hoặc 27, như vậy hoặc
Ký tự
A B C D
F G H
J K
L M
E
I
Mã tương ứng
0
1
2
3
6
7
9
10
11
12
4
5
8
Ký tự
N O
P Q R
T U V W X Y
Z
S
Mã tương ứng
13
14
15
16
17
18
19
20
21
22
23
24
25
Ta sử dụng MDV (với modulo 26) để mã hoá một văn bản tiếng Anh thông thường bằng cách thiết lập sự tương ứng giữa các ký tự và các thặng dư theo mod 26 như sau:
Nhận xét:
- Khi , hệ mật này thường được gọi là mã Caesar đã từng được Hoàng đế
Caesar sử dụng.
- MDV (theo mod 26) là không an toàn vì nó có thể bị thám theo phương pháp
tìm khoá vét cạn (thám mã có thể dễ dàng thử mọi khoá có thể cho tới khi
tìm được bản rõ có nghĩa). Trung bình có thể tìm được bản rõ đúng sau khi
thử khoảng quy tắc giải mã.
- Từ ví dụ trên ta thấy rằng, điều kiện cần để một hệ mật an toàn là phép tìm
khoá vét cạn phải không thể thực hiện được. Tuy nhiên, một không gian khoá
lớn vẫn chưa đủ để đảm bảm độ mật.
b. Mã thay thế (MTT).
Thay thế một ký tự bằng một ký tự khác trong bảng ký tự. Số khóa có thể có
là: , với các máy tính hiện nay thì chưa đủ an toàn.
Khi độ dài bản rõ đủ lớn, có thể sử dụng phương pháp thống kê để thám mã.
c) Hệ mật Affine
đây là một phương trình tuyến tính Mã hóa:
Giải mã:
Điều kiện tồn tại: để có thì
10
Nhận xét: Do khoảng trống xuất hiện nhiều trong văn bản, nên khi mã hóa
nên mã hóa cả khoảng trống để giảm số lần xuất hiện.
d) Mật mã cũi lợn
Sử dụng các hình tượng khác nhau không nằm trong bảng ký tự thay thế cho
các ký tự.
1.2.2.2. Các hệ mật trên là hệ mật thay thế đa biểu
Hệ mậtVigenère
Sử dụng phép tương ứng mô tả ở trên, ta có thể
gắn cho mỗi khoá một chuỗi ký tự có độ dài m, được gọi là từ khoá. Mật mã Vigenère sẽ mã hoá đồng thời m ký tự: mỗi phần tử của bản rõ tương đương với m ký tự.
Ví dụ 1.2:
Giả sử bản tin m = 6 và từ khoá là k = CIPHER. Từ khoá này tương ứng với
dãy số k = (2, 8, 15, 7, 4, 17). Giả sử bản rõ là:
meet me at sunset
Ta sẽ biến đổi các phần tử của bản rõ thành các thặng dư theo mod 26, viết
4
12
4
19
12
4
0
19
18
20
13
18
4
19 Bản rõ
8
2
15
7
4
17
2
8
15
7
4
17
2
8 Khoá
14
12
19
0
16
21
2
1
7
1
17
9
6
1 Bản mã
Như vậy, dãy ký tự tương ứng với xâu bản mã sẽ là:
chúng thành các nhóm 6 rồi cộng với từ khoá theo modulo 26 như sau:
OMTA QV CB HBRJGB
Ta có thể mô tả mật mã Vigenère như sau:
Cho m là một số nguyên dương cố định nào đó.
Ta định nghĩa
Với khoá , ta xác định:
và
trong đó tất cả các phép toán được thực hiện trong .
11
Chú ý: Để giải mã, ta có thể dùng cùng từ khoá nhưng thay cho cộng, ta trừ
nó theo modulo 26.
Ta thấy rằng, số các từ khoá có thể với độ dài m trong mật mã Vigenere là
. Bởi vậy, thậm chí với m khá nhỏ, phương pháp tìm kiến vét cạn cũng yêu cầu thời gian khá lớn. Ví dụ, với m = 6 thì không gian khoá cũng có kích thước lớn
hơn khoá.
1.2.3. Các hệ mật hoán vị (MHV)
Khác với MTT, ý tưởng của MHV là giữ các ký tự của bản rõ không thay đổi nhưng sẽ thay đổi vị trí của chúng bằng cách sắp xếp lại các ký tự này. Ở đây không có một phép toán đại số nào cần thực hiện khi mã hoá và giải mã.
* Hệ mật hoán vị độ dài K
Chia bản rõ thành khác khối độ dài và hoán vị các ký tự trong mỗi khối
Ví dụ 1.3:
Giả sử m = 6 và khoá là phép hoán vị sau:
1 2 3 4 5 6
3 5 1 6 4 2
Khi đó, phép hoán vị ngược sẽ là:
1 2 3 4 5 6
3 6 1 5 2 4
Giả sử ta có bản rõ: asecondclasscarriageonthetrain
Trước tiên, ta nhóm bản rõ thành các nhóm 6 ký tự:
Sau đó, mỗi nhóm 6 chữ cái lại được sắp xếp lại theo phép hoán vị , ta có:
Cuối cùng, ta có bản mã sau:
EOANCSLSDSACRICARAOTGHNERIENAT
12
Khi sử dụng phép hoán vị ngược trên dãy bản mã (sau khi đã nhóm lại
theo các nhóm 6 ký tự), ta sẽ nhận lại được bản rõ ban đầu.
Từ ví dụ trên, ta có thể định nghĩa MHV như sau:
Định nghĩa 1.1 [[4]: Cho m là một số nguyên dương xác định nào đó.
Cho và cho K là tất cả các hoán vị có thể có của .
và
Đối với một khoá (tức là một phép hoán vị nào đó), ta xác định:
trong đó là phép hoán vị ngược của
1.2.4. Các hệ mật mã tích
Một phát minh khác do Shannon đưa ra trong bài báo của mình năm 1949 là ý tưởng kết hợp các hệ mật bằng cách tạo tích của chúng. Ý tưởng này có tầm quan trọng to lớn trong việc thiết kế các hệ mật hiện nay.
Để đơn giản, trong phần này chỉ hạn chế xét các hệ mật trong đó C=P; các hệ và mật loại này được gọi là tự đồng cấu. Giả sử
là hai hệ mật tự đồng cấu có cùng các không gian bản mã
và rõ. Khi đó, tích của và (kí hiệu là ) được xác định là hệ mật sau:
(1.1)
Khoá của hệ mật tích có dạng trong đó và .
Các quy tắc mã và giải mã của hệ mật tích được xác định như sau: Với mỗi
, ta có một quy tắc mã xác định theo công thức:
(1.2)
và quy tắc giải mã:
(1.3)
Nghĩa là, trước tiên ta mã hoá x bằng rồi lại mã hóa bằng . Quá trình
giải mã tương tự nhưng thực hiện theo thứ tự ngược lại:
13
Ta biết rằng, các hệ mật đều có các phân bố xác suất ứng với các không gian khoá của chúng. Bởi vậy, cần phải xác định phân bố xác suất cho không gian khoá
của hệ mật tích. Hiển nhiên ta có thể viết:
(1.4)
Nói một cách khác, ta chọn có phân bố rồi chọn một cách độc lập
có phân bố .
Sau đây là một ví dụ đơn giản để minh hoạ khái niệm hệ mật tích
Giả sử ;
Với , ta xác định:
và
Cho M là một hệ mã nhân (với các khoá được chọn đồng xác suất) và S là chính là MDV (với các khoá chọn đồng xác suất). Khi đó dễ dàng thấy rằng hệ mã Affine (cùng với các khoá được chọn đồng xác suất). Tuy nhiên, việc chứng tỏ cũng là hệ mã Affine khó hơn một chút (cũng với các khóa đồng xác suất).
Ta sẽ chứng minh các khẳng định này. Một khoá dịch vòng là phần tử . Còn khoá trong hệ và quy tắc giải mã tương ứng là
mã nhân là phần từ sao cho . Quy tắc mã tương ứng là
. Bởi vậy, một khoá trong mã tích có dạng , trong
đó:
(1.5)
Đây chính là định nghĩa về khoá trong hệ mã Affine. Hơn nữa, xác suất của . Đó là tích của xác suất một khoá trong hệ mã Affine là:
tương ứng của các khoá a và k. Bởi vậy là hệ mã Affine.
14
Bây giờ ta sẽ xét . Một khoá này trong hệ mã này có dạng , trong
đó:
(1.6)
Như vậy, khoá của mã tích đồng nhất với khoá của hệ
mã Affine. Vấn đề còn lại là phải chứng tỏ rằng mỗi khoá của mã Affine xuất hiện khi và với cùng xác suất 1/312 như trong mã tích . Nhận thấy rằng
chỉ khi , (hãy nhớ lại rằng , bởi vậy a có phần tử nghịch
đảo). Nói cách khác, khoá của hệ mã Affine tương đương với khoá
của mã tích . Bởi vậy, ta có một song ánh giữa hai không gian
thực sự là mã
khoá. Vì mỗi khoá là đồng xác suất nên có thể thấy rằng Affine.
Ta chứng minh rằng
. Bởi vậy, hai hệ mật là giao hoán. Tuy nhiên, không phải mọi cặp hệ mật đều giao hoán; có thể tìm ta được các cặp phản ví dụ. Mặt khác ta thấy rằng phép tích luôn kết hợp:
Nếu lấy tích của một hệ mật tự đồng cấu với chính nó thì ta thu được hệ mật
(kí hiệu là ). Nếu lấy tích n lần thì hệ mật kết quả là . Ta gọi là hệ
mật lặp.
Một hệ mật S được gọi là luỹ đẳng nếu
. Có nhiều hệ mật đã nghiên cứu trong chương 1 là hê mật luỹ đẳng. Chẳng hạn các hệ MDV, MTT, Affine, Hill, Vigenère và hoán vị đều là luỹ đẳng. Hiển nhiên là nếu hệ mật S là luỹ đẳng
vì nó yêu cầu lượng khoá cực lớn mà không
thì không nên sử dụng hệ mật tích có độ bảo mật cao hơn.
Nếu một hệ mật không phải là luỹ đẳng thì có thể làm tăng độ mật bằng cách lặp nhiều lần. Ý tưởng này đã được dùng trong chuẩn mã dữ liệu (DES). Trong DES dùng 16 phép lặp, tất nhiên hệ mật ban đầu phải là hệ mật không luỹ đẳng. Một phương pháp có thể xây dựng các hệ mật không luỹ đẳng đơn giản là lấy tích của hai hệ mật đơn giản khác nhau.
Nhật xét:
Có thể dễ dàng chứng tỏ rằng, nếu cả hai hệ mật và là luỹ đẳng và giao
hoán thì và cũng là luỹ đẳng. Điều này rút ra từ các phép toán đại số sau:
15
(Chú ý: Dùng tính chất kết hợp trong chứng minh trên).
Bởi vậy, nếu cả và đều là luỹ đẳng và ta muốn là không luỹ
đẳng thì điều kiện cần là và không giao hoán.
Rất may mắn là nhiều hệ mật đơn giản thoả mãn điều kiện trên. Kỹ thuật thường được sử dụng trong thực tế là lấy tích các hệ mã kiểu thay thế và các hệ mã kiểu hoán vị.
1.2.5. Các hệ mật mã dòng và việc tạo các dãy giả ngẫu nhiên
1.2.5.1. Các hệ mã dòng
Trong các hệ mật nghiên cứu ở trên, các phần tử liên tiếp của bản rõ đều được
mã hoá bằng cùng một khoá k. Tức xâu bản mã y nhận được có dạng:
(1.7)
Các hệ mật thuộc dạng này thường được gọi là các mã khối. Một quan điểm sử dụng khác là mật mã dòng. Ý tưởng cơ bản ở đây là tạo ra một dòng khoá
và dùng nó để mã hoá một xâu bản rõ theo quy tắc:
Mã dòng hoạt động như sau. Giả sử là khoá, và là xâu bản
rõ. Hàm được dùng để tạo ( là phần tử thứ i của dòng khoá), trong đó là
một hàm của khoá k và là ký tự đầu tiên của bản rõ:
Phần tử của dòng khoá được dùng để mã tạo ra . Bởi vậy, để
mã hoá xâu bản rõ ta phải tính liên tiếp
Việc giải mã xâu bản mã có thể được thực hiện bằng cách tính liên
tiếp
Sau đây là định nghĩa dưới dạng toán học:
Định nghĩa 1.2 [4].
16
Mật mã dòng là một bộ thoả mãn các điều kiện sau:
1) P là một tập hữu hạn các bản rõ có thể. 2) C là tập hữu hạn các bản mã có thể. 3) K là tập hữu hạn các khoá có thể (không gian khoá) 4) L là tập hữu hạn các bộ chữ của dòng khoá. 5) là bộ tạo dòng khoá. Với
6) Với mỗi có một quy tắc mã và một quy tắc giải mã tương
ứng ; và là các hàm thoả mãn
với mọi bản rõ .
Ta có thể coi mã khối là một trường hợp đặc biệt của mã dòng, trong đó dùng
khoá không đổi: với mọi .
Mã dòng được gọi là đồng bộ nếu dòng khoá không phụ thuộc vào xâu bản rõ, tức là nếu dòng khoá được tạo ra chỉ là hàm của khoá k. Khi đó, ta coi k là một "mầm" để mở rộng thành dòng khoá
Một hệ mã dòng được gọi là tuần hoàn với chu kỳ d nếu với mọi số
nguyên với chu kỳ m. Trong trường hợp này, khoá là . Mã Vigenère với độ dài từ khoá m có thể coi là mã dòng tuần hoàn . Bản thân k sẽ tạo m
phần tử đầu tiên của dòng khoá: . Sau đó, dòng khoá sẽ tự lặp lại.
Nhận thấy rằng, trong mã dòng tương ứng với mật mã Vigenère, các hàm mã và giải mã được dùng giống như các hàm mã và giải mã được dùng trong MDV:
và
Các mã dòng thường được mô tả trong các bộ chữ nhị phân tức là . Trong trường hợp này, các phép toán mã và giải mã là phép cộng
theo modulo 2.
và
Nếu ta coi "0" biểu thị giá trị "sai" và "1" biểu thị giá trị "đúng" trong đại số Boolean thì phép cộng theo modulo 2 sẽ ứng với phép hoặc có loại trừ. Bởi vậy, phép mã (và giải mã) dễ dàng thực hiện bằng mạch cứng.
Ta xem xét một phương pháp tạo một dòng khoá (đồng bộ) khác. Giả sử bắt (cũng giống như trước đây), tuy nhiên bây và đầu với
giờ ta tạo dòng khoá theo một quan hệ đệ quy tuyến tính cấp m:
17
(1.8)
trong đó là các hằng số cho trước.
Nhận xét:
Phép đệ quy được nói là có bậc m vì mỗi số hạng phụ thuộc vào m số hạng là một hàm tuyến tính của đứng trước. Phép đệ quy này là tuyến tính bởi vì
các số hạng đứng trước. Chú ý ta có thể lấy mà không làm mất tính tổng
quát. Trong trường hợp ngược lại, phép đệ quy sẽ là có bậc .
Ở đây khoá k gồm 2m giá trị . Nếu thì
dòng khoá sẽ chứa toàn các số 0. Dĩ nhiên phải tránh điều này vì khi đó bản mã sẽ
đồng nhất với bản rõ. Tuy nhiên, nếu chọn thích hợp các hằng số thì một
vector khởi đầu bất kì khác sẽ tạo nên một dòng khoá có chu kỳ .
Việc mã hóa và giải mã hệ mật mã dòng mô tả như dưới đây.
+ Mã hóa:
+ Giải mã:
Để hệ thống an toàn, dãy bit khóa ngẫu nhiên phải dài hơn bản tin:
(Dẫy ngẫu nhiên có ).
Việc tạo dãy ngẫu nhiên tốn kém và việc lưu trữ không hiệu quả, do đó phải tạo dãy giả ngẫu nhiên (có tính tiền định và được xây dựng từ các bit mầm).
1.2.5.2. Một số phương pháp tạo M- dãy
a) M-dãy và các tính chất cơ bản:
18
Một dãy có chiều dài cực đại (MLS) là một kiểu dãy nhị phân giả ngẫu nhiên.
Chúng là các bit tuần tự được tạo ra bằng các thanh ghi dịch phản hồi tuyến tính
(LFSR) và do vậy chúng có chu kỳ và các chuỗi nhị phân tái tạo được nhờ tính dịch vòng (ví dụ với thanh ghi m ô nhớ có thể tạo được chuỗi có chiều dài 2m-1).
Một dãy có chiều dài cực đại còn được gọi là M-dãy.
Các M-dãy có thể được biểu diễn bằng các hệ số của các đa thức bất khả quy
của vành đa thức trên trường nhị phân. Các ứng dụng cơ bản của M-dãy bao gồm:
đo đáp ứng xung, tạo chuỗi giả ngẫu nhiên trong các hệ thống thông tin số dùng để
trải phổ trực tiếp và trải phổ nhảy tần…
Biểu diễn LFSR – dãy M bằng mô hình hệ thống LFSSM
LFSSM là tên viết tắt của Linear Finite State Sequencial Machine – máy
trình tự tuyến tính có trạng thái hữu hạn.
Trình tự vì sử dụng các ô nhớ theo trình tự.
Hữu hạn vì số trạng thái là hữu hạn.
Tuyến tính vì sử dụng các thuật toán tuyến tính XOR trên GF(2).
Một LFSSM được đặc trưng bởi tập hợp 5 phần tử {S, I, Y, M, }, trong đó:
S là trạng thái hiện tại, I là tập đầu vào, Y là tập đầu ra, M là hàm trạng thái kế tiếp
ánh xạ lên S và là hàm truyền đạt ánh xạ từ S lên Y.
(a) không gian trạng thái của , không gian đầu vào , không gian
đầu ra là các không gian vector trên trường hữu hạn .
(b) với vector trạng thái , vector vào , và vector ra tại thời điểm ,
trạng thái kế tiếp thì đầu ra có dạng sau:
(1.9)
Trong đó: A,B,C là các ma trận trên K, là các vector cột.
Hưởng ứng cưỡng bức: tín hiệu ra khi có tín hiệu vào
19
Hưởng ứng tự do: tín hiệu ra khi không có tín hiệu vào.
LFSR như hình dưới là lớp con của LFSSM, được mô tả như sau:
Trong đó: là trạng thái hiện tại của ô nhớ i, là trạng thái kế tiếp.
Tuy nhiên, vì kích thước (độ dài) của thanh ghi dịch trong thực tế rất lớn
(hàng chục hoặc hàng trăm) nên việc biểu diễn bằng ma trận rất cồng kềnh, người
ta hay sử dụng các công cụ trên trường hữu hạn (Galois field) như hàm vết, biến
đổi d.
Một số tính chất cơ bản của M-dãy [1]
i). Tính chất dịch: Dịch vòng trái hoặc phải của một M-dãy cũng là M-dãy.
ii). Tính chất hồi qui: Một M-dãy bất kỳ trong Sm đều thỏa mãn sự hồi qui:
(1.10)
Ngược lại, bất cứ nghiệm nào của phương trình hồi qui này cũng là M-dãy
trong tập Sm. Có m nghiệm độc lập tuyến tính của phương trình hồi qui này, do đó
có M-dãy độc lập tuyến tính trong Sm.
iii). Tính chất cửa sổ: Nếu trượt một cửa sổ có độ rộng m dọc theo M-dãy thì ta nhìn thấy đúng 1 lần mỗi bộ m nhị phân khác 0 trong 2m -1 bộ. trong
iv). Tính chất số lượng số ‘1’, số ‘0’: số 1 nhiều hơn số số 0 một đơn vị: Bất
20
kì M-dãy nào trong cũng chứa 2m-1 số 1 và 2m-1-1 số 0.
v). Tính chất cộng: Tổng của hai M-dãy trong (mod 2, từng số hạng
một) là M-dãy khác trong
vi). Tính chất dịch và cộng: Tổng của M-dãy và dịch vòng của chính nó
(mod 2, từng số hạng một) là M-dãy khác.
vii). Tính chất tự tương quan có dạng nhọn: Hàm tự tương quan tuần hoàn
chuẩn hóa của M-dãy được xác định bởi:
(1.11)
và bằng 1 khi i=0(modN) và bằng -1/N khi i ≠ 0(mod N).
viii). Tính chất hành trình: Hành trình là một dãy các số 1 liên tiếp hoặc các
số 0 liên tiếp. Trong M-dãy bất kì, một nửa các hành trình có độ dài 1, một phần tư
có độ dài 2, 1/8 có độ dài 3 v.v… đến khi nào các phân số này còn cho số nguyên
các hành trình. Cụ thể, có hành trình có độ dài m các số 1, hành trình có
độ dài m -1 các số 0. Đối với độ dài hành trình k, 0 < k < m -1, số các hành trình của số 0 bằng số hành trình của số 1 và bằng 2m-k-2.
ix). Tính chất pha đặc trưng: Có đúng một M-dãy trong tập Sm thỏa mãn
, i ∈ Ζ. M-dãy này được gọi là M-dãy đặc trưng, hoặc pha đặc trưng của
các M-dãy trong Sm.
x). Tính chất phép chia: Phép chia cho n > 0 của M-dãy (tức lấy mẫu c cứ
mỗi n bít mã) kí hiệu là c[n], có chu kì bằng N/gcd(N, n) nếu nó không phải là dãy
toàn 0. Đa thức sinh của nó g(d) có nghiệm là các lũy thừa bậc n của các nghiệm
của g(d).
b) Tạo M-dãy bằng đa thức nguyên thủy
* Đa thức nguyên thủy: Đa thức bất khả quy bậc được gọi là đa thức
nguyên thủy nếu nó là ước của với nhưng không là ước của
(với ) [4].
21
Ví dụ 1.4: Với ta có và:
Hai đa thức nguyên thủy
Với ta có:
Nguyên thủy Không nguyên thủy
(vì là ước của )
Bổ đề 1.1: Dãy giả ngẫu nhiên (M-dãy) được tạo từ phương trình đồng dư sau [4]:
Với: - đa thức nguyên thủy bậc .
- đa thức mầm, thỏa mãn: ; chọn ngẫu nhiên
ứng với bit.
Ví dụ 1.5:
M-dãy được tạo như sau:
Giả sử:
Trạng thái các vec tơ mã đầu ra của M-dãy cho trong bảng 1.1. Nếu ta lấy bất
kỳ cột nào ta cũng được một M-dãy.
Nhận xét:
+ Chu kỳ dãy:
+ Số con “1” trong dãy: ; Số con “0” trong dãy:
Và do đó:
22
Bảng 1.1. Trạng thái của các vector đầu ra M-dãy
M-dãy 0 1 1 1 0 0 0 1 1 0
2 0 0 1 1
3 1 1 0 1
4 1 0 1 0
5 0 1 0 1
6 1 1 1 0
7 0 1 1 1
8 1 1 1 1
9 1 0 1 1
10 1 0 0 1
11 12 13 1 0 0 0 0 1 0 0 0 0 1 0
14 0 0 0 1
15 1 1 0 0
Dạng tổng quát phần cứng như trong hình 1.2
Hình 1.2. M-dãy tạo từ thanh ghi dịch phản hồi tuyến tính LFSR
Hình 1.3 là mạch điện tạo M-dãy với đa thức nguyên thủy là:
23
Hình 1.3. Mạch tạo M-dãy từ đa thức g(x) = 1+x+x4
c) Một số M-dãy tuyến tính khác
+ Các dãy Gold
Để tạo dãy tuyến tính có khoảng tuyến tính và kích thước tập hợp lớn, thông
thường sử dụng giải pháp ghép tuyến tính các M-dãy. Trong một hệ thống truy
nhập ngẫu nhiên hoặc các hệ thống hỗn hợp, kích thước yêu cầu của tập hợp có thể
đến vài trăm. Tập hợp Gold chứa đựng một số lớn các dãy thoả mãn hai tính chất
ACF và CCF đến một mức độ chấp nhận được. Tập gồm N+2 các dãy Gold với độ dài N bằng 2m -1 có thể được xây dựng từ cặp ưa thích các M-dãy có chu kì N
giống nhau. Cặp M-dãy ưa thích, chẳng hạn x và y, có hàm tương quan chéo 3 trị:
θx, y (n) = -1; - t(m) ; t(m) - 2
Khi tính các trị tương quan chéo, đầu tiên các số 0 và 1 được biến đổi thành
các số +1 và -1. Tập các M-dãy bao gồm cặp ưa thích các dãy x và y , các tổng
mod 2 của x và các dịch vòng của y. Cụ thể, tập các dãy Gold là:
(1.12) SGold = {x, y, x y, xT-1y, xT-2 y,..., xT-(N-1) y}
Với Ty = (y1, y2, y3,... , yN -1, y0) là dịch vòng trái của y. Biên độ tương quan
cực đại đối với hai M-dãy bất kì trong cùng tập là bằng hằng số t(m). Người ta biết
rằng các cặp ưa thích của các M-dãy không tồn tại đối với m = 4, 8, 12, 16 và tiên
đoán rằng không tồn tại nghiệm đối với tất cả m = 0 (mod 4).
24
Hình 1.4. Bộ tạo dãy Gold đối với g1(d) = d3 + d +1 và g2(d) = d3 + d2 +1
Mỗi dãy trong tập Gold có thể được tạo nên bởi đa thức f(d) cho bởi:
(1.13)
Vì hai đa thức h(d) và h’(d) đều là nguyên tố, ta có:
(1.14)
Điều đó có nghĩa là Gold thoả mãn quan hệ hồi quy tuyến tính bậc 2m, hay
nói cách khác ELS của dãy Gold là 2m. Mặc dù giá trị này cao hơn giá trị ELS của
tập hợp liên thông, nó vẫn còn thấp hơn so với yêu cầu của các hệ thống cần bảo
mật. Dãy Gold tạo nên một tập hợp lớn có các tính chất tương quan ACF và CCF
tốt nhưng giá trị ELS thấp.
+ Các dãy Kasami
Lớp quan trọng khác các dãy nhị phân SSMA là các dãy Kasami. Giả sử m là số nguyên chẵn và x là M-dãy có chu kì N = 2m -1, được tạo từ đa thức nguyên
thủy h(d). Các dãy Kasami nhận được bằng cách chia dãy x và thực hiện phép cộng
mod 2 trên các dãy dịch vòng. Decimating dãy tức là lấy mẫu nó một cách tuần
hoàn. Để xây dựng các dãy Kasami đầu tiên ta nhận được dãy y = x[s(m)], s(m)=2m/2 +1. Dãy lấy mẫu y cũng là M-dãy tuần hoàn, nhưng với chu kì nhỏ hơn và bằng (2m -1) / s(m) = 2m/2 -1. Tập nhỏ các dãy Kasami được cho bởi:
25
(1.15)
Tổng số dãy trong tập là 2m/2. Hàm tương quan chéo đối với 2 dãy bấy kỳ
trong tập Skasami nhận các giá trị trong tập {-1, -s(m), s(m) - 2}.
Tập bé Kasami được thiết kế để cải thiện các tính chất liên quan của dãy
Gold và các dãy liên thông cực đại. Với M-dãy, khi thực hiện lấy mẫu với khoảng các lấy mẫu 2m/2+1, ta sẽ thu được một M-dãy có chu kỳ N=2m/2-1 và tạo nên bởi
đa thức nguyên thủy h’(d) có bậc m/2. Như vậy, mỗi thành viên của tập bé Kasami
có thể được tạo nên bởi đa thức f(d) =h(d+h’(d) bậc 3m/2.
Tập lớn Kasami: Được tổ hợp từ tập Gold với tập bé theo cách sau:
Cho m là một số chẵn và h(d) là một đa thức nguyên thủy sinh ra M-dãy {u}. Cho w = u[s(m)] là một M-dãy có chu kỳ 2m/2-1 tạo nên bởi đa thức nguyên
thủy h’(d) bậc m/2 và h”(d) là một đa thức bậc m sinh ra dãy u[t(m)].
Tập Kasami lớn, ký hiệu KL(n), được tạo bởi f(d) = h(d)h’(d)h”(d)
Người ta đã chứng minh được rằng các hàm tương quan cho dãy KL(n) lấy
giá trị trong tập:
max= t(m).
{-1, -t(m), t(m) -2, -S(m), S(m) -2} (1.16)
Do đó ta có: c
Tương tự như dãy Gold tập Kl(n) chứa 2m/2(2m+1) dãy khi m=2mod 4 và
2m/2(2m+1)-1 dãy khi m= 0mod 4.
max vẫn
Các tập Gold và các tập bé Kasami là những tập con của tập Kasami lớn.
Đồng thời trong khi kích thước của tập tăng lên đáng kể, giới hạn trên c
như của tập Gold. ELS của các phần tử trong tập là 5m/2, tức là bằng deg[f(d)].
Các dãy được đề cập trong Bảng 1.2 là những dãy nổi tiếng nhất được tạo
nên từ M-dãy. Đó là những dãy tuyến tính và chúng được tạo ra bằng thuật toán
cộng modulo 2, là thuật toán tuyến tính trong trường nhị phân GF(2). Các dãy này
có các đặc tính tương quan tốt, trong đó dãy bé Kasami là tốt nhất. Các dãy khác
như dãy Gold, dãy Kasami lớn đều có kích thước lớn. Tuy nhiên, giá trị ELS của
26
chúng thấp, khoảng cùng bậc với ELS của M-dãy trong khi các giá trị ACF và
CCF kém hơn M-dãy nhiều lần. Nguyên nhân chính dẫn tới ELS thấp rõ ràng là do
phương pháp tuyến tính để cấu tạo dãy.
Bảng 1.2. Các đặc tính của dãy tuyến tính có chu kỳ 2m-1
Họ m Kích cỡ Ruv.max
Gold Lẻ 2m +1 1+2(m+1) /2
Gold (good-like) 2(mod 4) 2m +1 1+2(m+2) /2
Kasami (small set) Chẵn 2m/2 1+2(m+2) /2
Kasami (large set) Chẵn 2m/2(2m+1) 1+2(m+2) /2
Bent 0(mod 4) 2m/2 1+2m/2`
1.2.6. Chuẩn mã dữ liệu DES
Mô tả đầy đủ của DES được nêu trong Công bố số 46 về các chuẩn xử lý thông tin Liên bang (Mỹ) vào 15.1.1977 [4], [25], [28], [31], [32]. DES mã hoá một xâu bit x của bản rõ độ dài 64 bằng một khoá 54 bit. Bản mã nhận được cũng là một xâu bit có độ dài 64. Trước hết ta mô tả ở mức cao về hệ thống.
Thuật toán tiến hành theo 3 giai đoạn:
1) Với bản rõ cho trước x, một xâu bit sẽ được xây dựng bằng cách hoán
vị các bit của x theo phép hoán vị cố định ban đầu IP. Ta viết:
, trong đó gồm 32 bit đầu và là 32 bit cuối.
2) Sau đó tính toán 16 lần lặp theo một hàm xác định. Ta sẽ tính ,
theo quy tắc sau:
trong đó kí hiệu phép cộng theo modulo 2. f là một hàm mà ta sẽ mô tả ở là các xâu bit độ dài 48 được tính như hàm của khoá k. (trên sau, còn
27
thực tế mỗi là một phép chọn hoán vị bit trong k). Các khóa con sẽ
tạo thành bảng khoá.
3) Áp dụng phép hoán vị ngược cho xâu bit , ta thu được bản mã
y, tức là .
Sơ đồ mã hóa DES được xây dựng trên lược đồ Feistel như trong hình 1.5.
Hình 1.5. Sơ đồ mã hóa DES
Có 64! cách chọn các bảng hoán vị, DES chọn các bảng hoán vị IP và hoán vị
đảo IP-1 như trong bảng 1.3.
28
Bảng 1.3. Bảng IP và IP-1
Các mô tả về hàm mã hóa f và khối tạo khóa con trong DES như mô tả
trong Hình 1.6 và Hình 1.7.
Hình 1.6. Mô tả hàm f trong DES
29
Hình 1.7. Các bước tạo khóa cho các vòng mã hóa của DES
1.2.7. Ưu nhược điểm của mật mã khóa bí mật
1.2.7.1. Ưu điểm:
Đơn giản (thời gian nhanh, yêu cầu phần cứng không phức tạp)
Hiệu quả: (Tỷ lệ mã bằng 1) dễ sử dụng cho các ứng dụng nhạy cảm với độ
trễ và các ứng dụng di động.
1.2.7.2. Nhược điểm:
Phải dùng kênh an toàn để truyền khóa (Khó thiết lập và chi phí tốn kém)
Việc tạo và giữ khóa bí mật phức tạp, khó làm việc trên mạng do phải tạo
khóa nhiều.
Các thuật toán là song ánh, vì vậy nếu biết M và K thì chắc chắn biết C. Thám mã có thể suy luận ra K, kết hợp với C tại kênh mở có thể suy ra M.
Khó xây dựng các dịch vụ an toàn khác như: đảm bảo tính toàn vẹn, xác
thực, chữ ký số…
Vì các nhược điểm này nên phải sử dụng cả các hệ mật khóa công khai.
30
1.3. HỆ MẬT KHÓA CÔNG KHAI
1.3.1. Sơ đồ chức năng
Đích Nguồn C C M M Mã hóa Kênh mở Giải mã
A B
Hình 1.8. Sơ đồ khối chức năng hệ mật khóa công khai
- Khóa công khai của B (Lấy trên kênh mở)
- Khóa bí mật của B
Phép mã hóa là ánh xạ 1:1:
Giải mã:
Ưu điểm của hệ mật khóa công khai:
+ Không sử dụng kênh an toàn (đây là nhược điểm của hệ mật khóa bí mật).
+ Dễ bảo vệ, lưu trữ và sinh khóa.
+ Dễ tạo các dịch vụ an toàn khác.
Ví dụ: Với n người dùng:
Số khóa cần tạo Số khóa cần lưu giữ bí mật
Hệ mật khóa bí mật
Hệ mật khóa công khai 1
Nhược điểm của hệ mật khóa công khai:
+ Phức tạp (với trường số lớn thì phần cứng phức tạp)
+ Hiệu quả không cao, do đó khó thực hiện các dịch vụ nhạy cảm đối với độ
trễ và dịch vụ di động.
31
1.3.2. Một số bài toán xây dựng hệ mật khóa công khai
Với yêu cầu với hệ mật khóa công khai: Dễ mã hóa, khó giải mã (Hàm một chiều), các hướng nghiên cứu từ năm 1976 cho đến nay đã tìm được 5 hàm một chiều, tương ứng với 5 bài toán [4].
1.3.2.1. Bài toán logarit rời rạc:
Bài toán này xây trên các hàm mũ của các phần tử trong trường hữu hạn với p là số nguyên tố lớn. Bài toán ngược là phép logarit nhưng trên trường hữu
hạn và đây là bài toán khó giải khi p lớn.
Các hệ mật liên quan bao gồm:
Thủ tục trao đổi và thỏa thuận khóa Diffie-Hellman
Hệ mật Omura – Massey
Hệ mật Elgamal…
1.3.2.2. Bài toán phân tích thừa số và hệ mật RSA
+ Định lý 1.1 (định lý cơ bản của số học) [4], [27], [30]:
Cho n là một số nguyên tố, tồn tại phân tích duy nhất:
(1.17)
Với: - số nguyên tố
- số nguyên dương
Nếu là tích của 2 số nguyên tố: ( -là 2 số nguyên tố lớn thỏa
mãn )
Đây là bài toán phân tích số nguyên tố lớn khó (tìm đơn giản khi biết ,
cho rất khó tìm được )
+ Hệ mật RSA (Rivest – Shamir – Adleman)
- Tạo khóa: Mỗi bên liên lạc (A,B) tạo cho mình một cặp khóa công khai –
bí mật theo các bước sau:
Bước 1: Chọn hai số nguyên tố lớn p và q có độ lớn tương đương. Bước 2: Tính
Bước 3: Chọn e ngẫu nhiên thỏa mãn:
Bước 4: Tính d với
Bước 5: + Khóa công khai: (n,e) + Khóa bí mật: d
32
trong đó: e là số mũ mã hóa; d là số mũ giải mã. Vai trò của e và d là như
nhau (2 số nghịch đảo), tức là nếu mã hóa dùng e thì giải mã dùng d và ngược lại.
- Mã hóa: B cần gửi bản tin m cho A.
Bước 1: B nhận khóa công khai của A: (n,e)
Bước 2: B tính
Bước 3: B gửi bản mã C cho A.
- Giải mã: A nhận C và giải mã ra m:
A tính
+ Nhận xét:
Thám mã phải thực hiện bài toán phân tích thừa số
thì mới tính được (nếu biết d muốn tìm e phải thỏa mãn điều
kiện: )
.
Hiệu quả truyền tin cao Hệ mật RSA được sử dụng rộng rãi hơn 30 năm qua.
1.3.2.3. Bài toán xếp ba lô
Bài toán xếp ba lô được xây dựng trên dãy siêu tăng, và hệ mật xây dựng trên
bài toán này là hệ mật Merkle – Hellman. Đây là một trong các hệ mật bị thám mã
nhanh nhất.
1.3.2.4. Bài toán mã sửa sai và hệ mật Mc. Eliece
Sử dụng mã sửa sai tuyến tính ; (với là số sai sửa
được). Ma trận sinh: và ma trận kiểm tra ; thỏa mãn: .
Một trong những lớp mã này là mã Goppa, chúng được dùng làm cơ sở cho
hệ mật Mc. Eliece.
1.3.2.5. Đường cong Elliptic và các hệ mật liên quan
Bài toán này được xây dựng trên các nhóm cộng của đường cong elliptic.
đường cong Elliptic trên trường số thực có dạng sau:
Trong đó: là các số thực.
33
+ Đường cong Elliptic trên trường hữu hạn (Dạng Weiestrass)
Với , nếu thì phải là thặng dư bậc hai.
Điều kiện: tồn tại
Các hệ mật liên quan:
Trao đổi khóa Diffie-Helfman trên đường cong Elliptic.
Hệ mật Omura – Massey trên đường cong Elliptic
Hệ mật Elgamal trên đường cong Elliptic.
1.4. CƠ BẢN VỀ HÀM BĂM
1.4.1. Mở đầu
Các hàm băm đóng vai trò cơ bản trong mật mã hiện đại. Hàm băm sẽ tạo ra
một đầu ra từ bản tin đầu vào. Đầu ra này được định nghĩa là mã băm (kết quả
băm, giá trị băm).
Nói một cách chính xác hơn, hàm băm h sẽ tạo ra ánh xạ các xâu bit có độ dài
hữu hạn tuỳ ý thành các xâu bit có độ dài n cố định.
Hàm băm h là một ánh xạ có độ dài n cố định và điều
này có nghĩa là không thể tránh khỏi các va chạm (tức là cùng một giá trị đầu ra có
thể có nhiều bộ giá trị vào khác nhau). Nếu hàm h là ngẫu nhiên theo nghĩa tất cả
các đầu ra là đồng xác suất thì có chừng các đầu vào ánh xạ tới mỗi đầu ra (t:
số bit đầu vào, n: số bit đầu ra, t > n) và 2 đầu vào được chọn ngẫu nhiên sẽ có
cùng đầu ra với xác suất (không phụ thuộc vào t).
Ý tưởng cơ bản của việc sử dụng các hàm băm trong mật mã là sử dụng
chúng như một ảnh biểu diễn rút gọn (đôi khi còn được gọi là vết, dấu tay số hay
tóm lược thông báo) của một xâu vào và có thể được dùng như thể nó chính là xâu
vào đó.
34
Các hàm băm được dùng cho các sơ đồ chữ ký số kết hợp với việc đảm bảo
tính toàn vẹn của dữ liệu, khi đó bản tin trước hết được băm và rồi giá trị băm
(được xem như đại diện cho bản tin) sẽ được ký thay cho vị trí bản tin gốc [4],
[34], [37].
Một lớp các hàm băm được gọi là các mã xác thực thông báo (MAC -
Message Authentication Codes) sẽ cho phép xác thực thông báo bằng kỹ thuật đối
xứng (mật mã cổ điển).
Các thuật toán MAC sử dụng 2 đầu vào (bao gồm bản tin và một khoá bí
mật) để tạo ra một đầu ra có kích cỡ cố định (n bit) với ý đồ đảm bảo rằng nếu
không biết khoá thì việc tạo ra cùng một đầu ra là không khả thi. MAC có thể được
dùng để đảm bảo tính toàn vẹn của dữ liệu, xác thực tính nguyên bản của số liệu
cũng như định danh trong sơ đồ mật mã cổ điển.
Một ứng dụng điển hình của hàm băm (không dùng khoá) để đảm bảo tính
toàn vẹn của dữ liệu có thể được mô tả như sau:
Giá trị băm tương ứng với một bản tin riêng x sẽ được tính ở thời điểm T1.
Tính toàn vẹn của giá trị băm này (chứ không phải là bản thân bản tin) sẽ được bảo
vệ theo một cách nào đó. ở thời điểm tiếp theo sau T2 phép kiểm tra sau sẽ được
tiến hành để xác định xem liệu thông báo có bị sửa đổi hay không, tức là xem liệu
bản tin có giống bản tin gốc hay không. Giá trị băm của sẽ được tính toán và
so sánh với giá trị băm đã được bảo vệ, nếu chúng bằng nhau thì bên thu sẽ chấp
nhận rằng và là như nhau và như vậy có nghĩa là bản tin đã không bị sửa đổi.
Như vậy vấn đề đảm bảo tính vẹn toàn của một bản tin lớn sẽ được gui về đảm bảo
cho một giá trị băm có kích cỡ cố định (và nhỏ).
Ứng dụng trên thường được gọi là mã phát hiện sự sửa đổi (MDC -
Manipulation Detection Codes).
35
1.4.2. Các định nghĩa và tính chất cơ bản
1.4.2.1. Định nghĩa Hàm băm
Định nghĩa 1.3 [4], [15], [23], 24], [26]:
Hàm băm là một hàm h có ít nhất hai tính chất sau: a)Tính chất nén: h sẽ ánh xạ một đầu vào x có độ dài bit hữu hạn tuỳ tới một
đầu ra có độ dài bit n hữu hạn.
b) Tính chất dễ dàng tính toán: Với h cho trước và một đầu vào x, có thể dễ
dàng tính được .
1.4.2.2. Một số tính chất của các hàm băm không có khoá.
Giả sử h là một hàm băm không có khoá, x và là các đầu vào, y và là các
đầu ra. Ngoài hai tính chất cơ bản trên ta còn có 3 tính chất sau [23], [24], [26]:
a) Tính kháng tiền ảnh:
Đối với mọi mã băm cho trước cần ít nhất khoảng thời gian để
có thể tìm được sao cho .
b) Kháng tiền ảnh thứ hai:
Với mọi thông điệp cho trước cần ít nhất một khoảng thời gian
để có thể tìm được thông điệp sao cho và
c) Tính kháng va chạm
Cần ít nhất một khoảng thời gian để có thể tìm được sao
cho mà .
1.4.2.3. Hàm băm một chiều (OWHF - oneway hash function).
Định nghĩa 1.4 [23], [24], [26]:
OWHF là một hàm băm (có hai tính chất cơ bản) có tính chất bổ sung là: - Kháng tiền ảnh - Kháng tiền ảnh thứ hai.
1.4.2.4. Hàm băm khó va chạm (CRHF: Collision resistant HF)
Định nghĩa 1.5 [23], [24], [26]:
CRHF là một hàm băm (có hai tính chất cơ bản) có tính chất bổ sung là: - Kháng tiền ảnh thứ hai - Kháng va chạm
36
Chú ý về các thuật ngữ
Kháng tiền ảnh Một chiều
Kháng tiền ảnh thứ hai Kháng va chạm yếu.
OWHF Hàm băm một chiều yếu.
CRHF Hàm băm một chiều mạnh.
1.4.2.5. Thuật toán mã xác thực thông báo (MAC).
Định nghĩa 1.6 [4]:
Thuật toán MAC là một họ các hàm (được tham số hoá bằng một khoá bí
mật k) có các tính chất sau:
(1) Dễ dàng tính toán: Với đã biết và giá trị k cho trước và một đầu
vào x, có thể được tính dễ dàng ( được gọi là giá trị MAC
hay MAC).
(2) Nén: ánh xạ một đầu vào x có độ dài bit hữu hạn tuỳ tới một đầu ra
có độ dài bit n cố định.
(3) Khó tính toán: Với các cặp giá trị không có khả năng tính
một cặp với (kể cả có khả năng với
một i nào đó).
Nếu tính chất (3) không thoả mãn thì thuật toán được coi là giả mạo MAC.
Hàm băm
Không có khoá
Có khoá
MDC
Các ứng dụng khác
Các ứng dụng khác
MAC
OWHF
CRHF
1.4.2.6. Phân loại các hàm băm mật mã và ứng dụng
Hình 1.9. Phân loại hàm băm
37
1.4.3. Một số phương pháp xây dựng hàm băm
1.4.3.1. Các hàm băm không có khoá
Định nghĩa 1.7 [4]:
Mật mã khối (n, r) là một mã khối xác định một hàm khả nghịch từ các bản
rõ n bit sang các bản mã n bit bằng cách sử dụng một khoá r bit. Nếu E là một
phép mã hoá như vậy thì ký hiệu cho phép mã hoá x bằng khoá k.
Định nghĩa 1.8 [4]:
Cho h là một hàm băm có lặp được xây dựng từ một mật mã khối với hàm
nén thực hiện s phép mã hoá khối để xử lý từng khối bản tin n bit. Khi đó tốc độ
của h là 1/s.
a) MDC độ dài đơn.
Ba sơ đồ hình 1.10 dưới đây có liên quan chặt chẽ với các hàm băm độ dài đơn, xây dựng trên các mật mã khối. Các sơ đồ này có sử dụng các thành phần được xác định trước như sau:
- Một mật mã khối n bit khởi sinh được tham số hoá bằng một khoá đối
xứng k.
- Một hàm g ánh xạ n bit vào thành khoá k sử dụng cho E (Nếu các khoá
cho E cũng có độ dài n thì g có thể là hàm đồng nhất)
- Một giá trị ban đầu cố định IV thích hợp để dùng với E.
xi Hi-1 xi
Hi-1 Hi-1 xi g g E E E
Hi Hi
b) c) Hi a)
Hình 1.10. Các sơ đồ hàm băm đơn a) Matyas-Mayer–Oseas; b) Davies-Mayer
và c) Miyaguchi – Preneel
38
* Thuật toán băm Matyas - Mayer - Oseas.
Vào: Xâu bit x
Ra: Mã băm n bit của x (1) Đầu vào x được phân chia thành các khối n bit và được độn nếu cần thiết
nhằm tạo khối cuối cùng hoàn chỉnh. Ta được t khối n bit: . Phải
xác định trước một giá trị ban đầu n bit (ký hiệu IV).
(2) Đầu ra là được xác định như sau:
* Thuật toán băm Davies - Mayer
Vào: Xâu bit x
Ra: Mã băm n bit của x (3) Đầu vào x được phân thành các khối k bit (k là kích thước khoá) và được
độn nếu cần thiết để tạo khối cuối cùng hoàn chỉnh. Biểu thị thông báo đã
độn thành t khối n bit: . Xác định trước một giá trị ban đầu n bit
(ký hiệu IV).
(4) Đầu ra là được xác định như sau:
* Thuật toán băm Miyaguchi - Preneel
Sơ đồ này tương tự như sơ đồ M-M-O ngoại trừ (đầu ra ở giai đoạn
trước) được cộng mod2 với tín hiệu ra ở giai đoạn hiện thời. Như vậy:
Nhận xét: Sơ đồ D_M có thể coi là sơ đồ đối ngẫu với sơ đồ M - M - O theo
nghĩa và đổi lẫn vai trò.
b) MDC độ dài kép: MDC -2 và MDC - 4.
MDC -2 và MDC - 4 là các mã phát hiện sự sửa đổi yêu cầu tương ứng là 2
và 4 phép toán mã hoá khối trên mỗi khối đầu vào hàm băm. Chúng sử dụng 2
hoặc 4 phép lặp của sơ đồ M - D - O để tạo ra hàm băm có dộ dài kép. Khi dùng
DES chúng sẽ tạo ra mã băm 128 bit. Tuy nhiên trong cấu trúc tổng quát có thể
39
dùng các hệ mật mã khối khác MDC-2 và MDC4 sử dụng các thành phần xác định
như sau:
- DES được dùng làm mật mã khối có đầu vào/ ra 64 bit và được tham số
hoá bằng khoá k 56 bit.
- Hai hàm g và ánh xạ các giá trị 64 bit U thành các khoá DES 56 bit như
sau:
Cho , xoá mọi bit thứ 8 và đặt các bit thứ 2 và thứ 3 về "10" đối
với g và "01" đối với .
Đồng thời điều này cũng phải đảm bảo rằng chúng không phải là các khoá DES yếu hoặc nửa yếu vì các khoá loại này có bit thứ hai bằng bit thứ ba. Đồng
thời điều này cũng đảm bảo yêu cầu bảo mật là .
Thuật toán MDC -2 có thể được mô tả theo sơ đồ hình 1.11:
Hình 1.11. Thuật toán MDC-2
* Thuật toán MDC - 2
Vào: Xâu bit có độ dài với .
Ra: Mã băm 128 bit của x (1) Phân x thành các khối 64 bit .
(2) Chọn các hằng số không bí mật IV và
từ một tập các giá trị khuyến nghị đã được mô tả trước. Tập ngầm định các giá trị cho trước này là (ở dạng HEXA)
40
(3) Ký hiệu là phép ghép và là các nửa 32 bit phải và trái của
Đầu ra được xác định như sau: (với )
Thuật toán MDC - 4 có thể được mô tả theo sơ đồ sau:
Hình 1.12. Thuật toán MDC-4
1.4.3.2. Các hàm băm có khoá (MAC)
Các hàm băm có khoá được sử dụng để xác thực thông báo và thường được
gọi là các thuật toán tạo mã xác thực thông báo (MAC).
MAC dựa trên các mật mã khối.
Thuật toán [4]
Vào: Dữ liệu x, mật mã khối E, khoá MAC bí mật k của E.
Ra: n bit MAC trên x (n là độ dài khối của E) (1) Độn và chia khối: Độn thêm các bit vào x nếu cần. Chia dữ liệu đã độn . thành từng khối n bit:
(2) Xử lý theo chế độ CBC.
Ký hiệu là phép mã hoá E với khoá k.
41
Tính khối như sau:
(3) Xử lý thêm để tăng sức mạnh của MAC
Dùng một khoá bí mật thứ hai . Tính
(4) Kết thúc: MAC là khối n bit Ht
Hình 1.13. Sơ đồ Miyaguchi – Preneel
1.4.4. Các loại tấn công hàm băm cơ bản
1.4.4.1. Tấn công vào độ dài MDC
Cho trước một thông báo cố định và mã băm có độ dài bit,
phương pháp vét cạn để tìm một xung đột với chọn ngẫu nhiên một chuỗi và
tính thử xem hay không. Giả sử mã băm là một biến ngẫu nhiên có
phân phối chuẩn thì xác suất để tìn được xung đột là .
1.4.4.2. Tấn công vào không gian khóa của MAC
Khóa bí mật của MAC có thể xác định bằng cách tìm trên toàn bộ không gian
khóa. Với một cặp đầu vào/ đầu ra (thông báo/ MAC) cho trước, ta có thể thử tất
cả các khóa có thể để tính MAC từ thông báo đã cho, và kiểm tra giá trị MAC có
trùng với đầu ra ban đầu. Khi đó sẽ xác định được khóa bó mật của MAC. Nếu
42
chiều dài khóa của MAC là bit thì khóa bí mật có thể tìm được với xác suất
.
1.4.4.3. Tấn công vào độ dài MAC
Với một hàm băm MAC bit, việc tìm được giá trị hàm băm MAC của một
thông báo cho trước hoặc tìm tiền ảnh có xác suất thành công là khoảng . Tuy
nhiên, các giá trị băm tìm thấy không thể kiểm chứng được nếu không biết trước
cặp đầu vào/ đầu ra (thông báo/mã băm), hoặc biết trước khóa bí mật của MAC.
Mục tiêu xây dựng các hàm băm MAC là không thể tìm được chính xác một cặp
(thông báo/mã băm) mới với xác suất thành công lơn hơn , nghĩa là lớn
hơn xác suất tìm được khóa bí mật và xác suất tìm mã băm MAC.
1.4.4.4. Tấn công bằng các kết quả tính toán được
Việc tính toán trước một số lượng các cặp đầu vào/ đầu ra của hàm băm sẽ
giúp nhanh chóng tìm được tiền ảnh cũng như tiền ảnh thứ hai của một mã băm. Ở
đây, ta đánh đổi chi phí tính toán và không gian lưu trữ để đạt mục tiêu trong thời
gian ngắn. Chẳng hạn với mã băm 64 bit, người ta sẽ chọn ngẫu nhiên thông
báo đầu vào và tính mã băm của chúng, sau đó lưu trữ kết quả thành các cặp đầu
vào/ đầu ra. Việc tốn thời gian và không gian để tính toán trước giúp tăng khả năng
tòm được một tiền ảnh của một mã băm đó từ lên . Tương tự, xác suất
để tìm một tiền ảnh thứ hai tăng lên lần nếu có cặp đầu vào/ đầu ra của hàm
OWHF đã được tính trước.
1.4.4.5. Tấn công đa mục tiêu
Để tấn công kháng tiền ảnh thứ hai của một hàm băm, người ta thường cố
định một mục tiêu (mã băm của tiền ảnh thứ hai) rồi tìm một tiền ảnh khác thỏa
mãn mục tiêu đó. Nhưng nếu có mục tiêu, ta chỉ cần tìm một tiền ảnh khác thỏa
mãn một trong các mục tiêu đó. Như vậy xác suất để tìm được tiền ảnh thứ hai
tăng lên lần so với phương pháp sử dụng một mục tiêu. Điều này có nghĩa là khi
sử dụng các hàm băm có khóa, việc sử dụng nhiều lần một khóa duy nhất sẽ giảm
43
độ an toàn của chính hàm băm. Nếu có thông báo kèm theo mã băm, khả năng
xuất hiện một xung đột của hàm băm tăng lên lần.
1.4.4.6. Tấn công bằng các thông báo dài
Giả sử là một hàm băm bit có hàm nén là và không áp dụng thuật toán
mở rộng thông báo. Đặt là một thông báo được chia thành khối thông báo
con. Khi đó, tiền ảnh thứ hai của có thể được tìm thấy trong khoảng thời
gian tương đương với việc thực hiện hàm nén và cần không gian lưu
trữ bit, với mọi trong khoảng
Như vậy, đối với các thông báo có chiều dài lớn, việc tìm tiền ảnh thứ hai
nhìn chung dễ dàng hơn tìm tiền ảnh của một mã băm (trường hợp xấu nhất là phải
thực hiện hàm nén đến lần). Với , chi phí tính toán sẽ thấp nhất nếu
chọn , khi đó ta sẽ phải thực hiện khoảng hàm nén để tìm một tiền
ảnh thứ hai.
1.4.5. Độ an toàn mục tiêu
Để đánh giá độ an toàn tính toán của các hàm băm, chúng ta cần xác định
mục tiêu của cả người thiết kế hàm băm lẫn người muốn tấn công hàm băm đó.
Bảng 1.4 cho biết độ an toàn mục tiêu của một số hàm băm thông dụng.
Bảng 1.4. Độ an toàn mục tiêu của hàm băm
Hàm băm
Mục tiêu thiết kế
Độ an toàn
Mục tiêu tấn công
OWHF
Kháng tiền ảnh
Tìm tiền ảnh
Kháng tiền ảnh thứ hai
Tìm tiền ảnh khác
CRHF
Kháng xung đột
Tìm xung đột
MAC
Không thể tìm khóa
Tìm khóa MAC
Kháng tính toán
Tìm cặp
khác
44
Trong thực tế, ta có thể xem việc thực hiện phép toán là giới hạn tính
toán của các hệ thống máy tính hiện tại, Do đó đối với hàm băm bit, ta đặt độ an
toàn mục tiêu thực tế dựa trên như sau:
Hàm băm một chiều có : Để hàm băm thỏa mãn kháng tiền ảnh
thứ nhất và thứ hai, cần nhiều nhất là phép toán.
Hàm băm kháng xung đột ( ). Dựa vào bảng 1.4, một xung đột
của hàm băm kháng xung đột chỉ có thể được tìm thấy trong khoảng
thời gian tương đương với việc thực hiện phép toán.
Hàm MAC ( ) và khóa bí mật có chiều dài 64 đến 80 bit. Với
thuật toán MAC tiêu biểu, tính kháng tiền ảnh và kháng tiền ảnh thứ
hai phụ thuộc trực tiếp vào khóa bí mật của hàm MAC, do đó độ an
toàn của MAC phụ thuộc vào chiều dài của khóa bí mật.
1.5. TÍNH TOÀN VẸN CỦA DỮ LIỆU VÀ XÁC THỰC THÔNG BÁO
Định nghĩa 1.9 [4]
Tính toàn vẹn của dữ liệu là tính chất đảm bảo dữ liệu không bị sửa đổi một cách bất hợp pháp kể từ khi dữ liệu được tạo ra, được phát hoặc được lưu giữ bởi một nguồn được xác định.
1.5.1. Các phương pháp kiểm tra tính toàn vẹn dữ liệu
Toàn vẹn dữ liệu chú trọng chủ yếu ở các khối dữ liệu nhị phân. Các thao tác cho khối dữ liệu không còn toàn vẹn nữa bao gồm: chèn thêm một số bit, xoát bớt một số bit, thay đổi trật tự một số bit, thay thế một số bit và tất cả các thao tác kết hợp khác.
Có ba phương pháp cung cấp tính toàn vẹn của dữ liệu bằng cách dùng các
hàm băm.
a) Chỉ dùng MAC
45
Hình 1.14. Kiểm tra tính toàn vẹn bằng MAC
b) Dùng MDC và mã hoá
Hình 1.15. Kiểm tra tình toàn vẹn dùng MDC và thuật toán mã hóa
c) Sử dụng MDC và kênh an toàn
46
Hình 1.16. Kiểm tra tính toàn vẹn dùng MDC và kênh an toàn
1.5.2. Chữ ký số
Định nghĩa 1.10 [4], [34]:
Xác thực tính nguyên bản của dữ liệu là một kiểu xác thực đảm bảo một bên liên lạc được chứng thực là nguồn thực sự tạo ra dữ liệu đó ở một thời điểm nào đó trong quá khứ.
Xác thực thông báo là một thuật ngữ được dùng tương đương với xác thực
nguyên gốc của dữ liệu.
Một dạng cụ thể của xác thực nguồn gốc dữ liệu được sử dụng khá phổ biển là chữ ký điện tử. Chữ ký điện tử hay chữ ký số (electronic signature, digital signature) là thông tin đi kèm theo dữ liệu nhằm mục đích xác định nguồn gốc của dữ liệu đó. Nguồn gốc dữ liệu ở đây chính là chủ của dữ liệu đó, và chữ ký số chính là khóa bí mật riêng mã chỉ người sở hữu dữ liệu mới có.
Chữ ký số cũng đảm bảo các chức năng như xác định được người chủ của một dữ liệu (xác thực chủ thể nội dung) và xác định dữ liệu có bị thay đổi không (xác thực nội dung). Trước khi gửi dữ liệu đến các bên, người chủ dữ liệu sẽ tiến hành ký vào dữ liệu đó. Quá trình ký bao gồm tính toán mã băm của dữ liệu và mã hóa giá trị băm bằng khóa bí mật của người ký. Khi cần kiểm tra, bên nhận tiến hành giải mã (với khóa công khai của bên gửi) để lấy lại mã băm và kiểm tra với mã băm tính toán độc lập từ văn bản nhận được. Nếu hai giá trị này khớp nhau thì bên nhận có thể tin rằng văn bản xuất phát từ người sở hữu khóa bí mật. Cả hai bên tham gia vào quá trình thông tin đều có thể tin tường là văn bản không bị sửa đổi trong khi truyền vì nếu văn bản bị thay đổi thì mã băm sẽ thay đổi và lập tức bị phát hiện.
47
Các bước tạo chữ ký và kiểm tra chữ ký được mô tả trên hình sau:
Hình 1.17. Quá trình tạo chữ ký số và kiểm tra chữ ký số
Ví dụ 1.6: Sơ đồ chữ ký số sử dụng RSA như hình 1.18.
Hình 1.18. Sơ đồ chữ ký số dùng RSA
48
Quá trình ký:
Băm thông báo M để có mã băm:
Mã hóa mã băm bằng hệ mật RSA với khóa bí mật của A (dA):
được chữ ký số của DSA.
và truyền đi. Ghép chữ ký số DSA với thông báo:
Quá trình kiểm tra:
Tách thông báo M và chữ ký số DSA.
Giải mã RSA chữ ký số bằng khóa công khai của A (eA) để thu được mã
băm của bên phát.
Tiến hành băm M để tạo mã băm độc lập: HMDC và so sánh với mã băm
bên phát.
Nhận xét: Sơ đồ này không bảo mật thông báo M.
Để bảo mật thông báo người ta sử dụng sơ đồ chữ ký số dạng như hình 1.19.
Hình 1.19. Sơ đồ chữ ký số dùng RSA và có bảo mật thông báo
49
1.6. KẾT LUẬN CHƯƠNG 1
Trong chương 1, luận văn tập trung tìm hiểu các vấn đề chung nhất về mật
mã khóa bí mật (hay còn gọi là mật mã cổ điển); mật mã khóa công khai (hay mật
mã hiện đại) và hàm băm, từ đó phân tích các ưu và nhược điểm của từng hệ mật.
Các nghiên cứu về cấu trúc nhóm nhân và cấp số nhân cyclic trên vành đa
thức cho các kết quả khá lý thú trong việc xây dựng các mã sửa sai và mật mã. Để
tăng chiều dài cho mật mã khối có thể sử dụng cấu trúc các cấp số nhân cyclic
trong các hàm mật mã, nội dung này sẽ được trình bày trong chương 2.
50
CHƯƠNG 2. HỆ MẬT XÂY DỰNG TRÊN
CÁC CẤP SỐ NHÂN CYCLIC
2.1. NHÓM NHÂN CYCLIC TRÊN VÀNH ĐA THỨC
2.1.1. Định nghĩa nhóm nhân cyclic trên vành đa thức
Định nghĩa 2.1 [6], [10]:
Nhóm nhân cyclic (CMG-Cyclic Multiplicate Group) trong vành đa thức là
tập hợp các phần tử đều bằng lũy thừa của một phần tử gọi là phần tử sinh. Trong
vành đa thức có nhiều nhóm nhân cyclic, số nhóm nhân bằng số các lũy đẳng có
thể có trong vành.
(2.1)
Trong đó:
là nhóm nhân cyclic
là phần tử sinh (đa thức sinh), .
. Cấp
là cấp của nhóm nhân, cũng chính là cấp của phần tử sinh của nhóm là tổng số các phần tử của nhóm.
Phần tử đơn vị của nhóm chính là một lũy đẳng có cấp bằng 1.
Định nghĩa 2.2 [6], [10]:
Trong vành đa thức , nếu tồn tại một đa thức mà bình phương
của nó lại bằng chính nó thì được gọi là đa thức lũy đẳng và ký hiệu là .
(2.2)
Các lũy đẳng được xác định trên cơ sở phân tích chu trình .
Trong mỗi vành đa thức đều tồn tại một lũy đẳng ,
lũy đẳng này được gọi là lũy đẳng “nuốt” (Swallowing Idempotent).
51
Trong một vành bất kỳ, với n lẻ luôn tồn tại một lớp kề chỉ chứa một lũy
đẳng “nuốt” .
* Tính chất của lũy đẳng “nuốt”
- Nếu đa thức và trọng số của (ký hiệu là )
là số lẻ thì .
- Nếu đa thức và là số chẵn thì .
* Các chu trình Cs
Các chu trình theo modulo n trên trường GF(2) được xác định như sau:
trong đó
Khi đó tập các số nguyên theo modulo n được phân hoạch thành các chu
trình. Ta có:
* Ý nghĩa của các chu trình:
Số các chu trình cho ta biết số các đa thức bất khả quy trong vành
Lực lượng của các chu trình cho ta biết bậc của đa thức bất khả quy tương
ứng trong phân tích của nhị thức .
Các số trong một chu trình cho biết số mũ tương ứng của đa thức lũy đẳng
Định lý 2.1: Cấp của một đa thức , (ký hiệu ), là số nguyên
dương m nhỏ nhất thỏa mãn [6], [7], [10]:
(2.3)
Trong đó là một lũy đẳng nào đó.
Như vậy sẽ tạo nên một nhóm cyclic cấp m của vành.
Định lý 2.2: Nếu là phần tử của nhóm nhân nào đó thì cấp cực đại của
được xác định như sau [6], [7], [8], [10]:
52
- Nếu n lẻ và ; trong đó là các đa thức bất khả quy.
Khi đó , với .
- Nếu n chẵn và .
Khi đó , với .
Bổ đề 2.1: Trong vành với ( nguyên dương), tập các đa
thức có trọng số lẻ sẽ tạo nên một nhóm nhân G các đa thức theo modulo
[7], [8], [9].
Bổ đề 2.2: Mọi phần tử trong nhóm nhân G có cấp là hoặc có cấp là ước
của [7], [8], [9] [11], [12].
Bổ đề 2.3: Số các thặng dư bậc hai trong nhóm nhân G của vành được xác
định như sau [7], [8], [9]:
(2.4)
* Các phần tử cấp n và các nhóm nhân cyclic cấp n.
Xét . . Ta có bổ đề sau:
Bổ đề 2.4: Đa thức là phần tử cấp n khi nó có chứa một số lẻ các đơn
thức có mũ lẻ có cấp n và một số chẵn các đơn thức có mũ chẵn có cấp là ước của n. Số các đa thức cấp n bằng [1].
Ví dụ 2.1: Với n = 8, có tất cả các phần tử cấp . Ta có thể sử dụng
các phần tử này để xây dựng các nhóm nhân cyclic cấp .
Có tất cả các nhóm nhân cyclic cấp và nhóm nhân I cũng thuộc vào
lớp các nhóm nhân này. Ta gọi I là nhóm nhân cyclic đơn vị.
2.1.2. Các loại nhóm nhân cyclic trên vành đa thức
2.1.2.1. Nhóm nhân cyclic đơn vị
Định nghĩa 2.3: Nhóm nhân cyclic đơn vị là một nhóm nhân bao gồm mọi đơn
thức có trong vành và nó có cấp là . Ký hiệu là [4], [6].
53
Hay nói cách khác nhóm nhân cyclic đơn vị là nhóm nhân cyclic có phần tử sinh
là x.
2.1.2.2. Nhóm nhân cyclic với phần tử sinh
Định nghĩa 2.4: Nhóm nhân cyclic với phần tử sinh là đa thức bao gồm các
phần tử là lũy thừa của phần tử sinh và có thể viết dưới dạng sau [6], [10]:
(2.5)
Trong đó: là cấp của .
2.1.2.3. Đa thức đối xứng và các nhóm nhân cyclic đối xứng
Định nghĩa 2.5: (Đa thức đối xứng) [6], [10]
Đa thức được gọi là đa thức đối xứng với đa thức nếu:
thì
Với: .
Bổ đề 2.5: Nếu là một phần tử cấp thì cấp của cũng bằng . Tức là,
nếu là một nhóm nhân cyclic cấp có phần tử sinh là thì cũng là nhóm
nhân cyclic cấp với phần tử sinh là [6], [10]. Khi đó ta có:
(2.7)
Như vậy, với mỗi phần tử của nhóm nhân cyclic ta có tương ứng một
phần tử của nhóm nhân cyclic . Từ nhóm nhân cyclic A ta dễ dàng thiết lập
được nhóm nhân cyclic . Hai nhóm nhân A và được gọi là hai nhóm nhân
cyclic đối xứng trong vành đa thức.
Từ việc khảo sát các nhóm nhân đối xứng trong vành đa thức ta thấy chỉ cần
khảo sát các nhóm nhân trong một nửa vành là ta có thể suy ra kết quả khảo sát
54
cho toàn bộ vành. Khi coi mỗi nhóm nhân là một mã tương ứng mà ta có thể xây
dựng được trên nó, ta sẽ khảo sát được các mã trên vành.
2.2. CẤP SỐ NHÂN CYCLIC TRÊN VÀNH ĐA THỨC
2.2.1. Khái niệm về cấp số nhân cyclic trên vành đa thức
Xét vành đa thức với n lẻ.
Định nghĩa 2.6:
Cấp số nhân cyclic (CGP - Cyclic Geometic Progressions) trên vành đa thức
là một tập hợp con có dạng sau [6], [10]:
(2.8)
Trong đó: m là số các số hạng của cấp số nhân.
là số hạng đầu của cấp số nhân.
là công bội.
Giá trị của m chính là cấp của nhóm nhân sinh với phần tử sinh và lũy
đẳng . Cấp lớn nhất của phần tử được xác định bởi định lý 2.2.
Trong trường hợp ta chọn số hạng đầu , công bội là thì
Là một cấp số nhân cyclic cấp m.
Như vậy, trong vành đa thức , nếu ta chọn số hạng đầu và hạt
nhân phân hoạch khác nhau thì ta sẽ tạo ra nhiều kiểu phân hoạch khác nhau
của vành, do đó ta có các cấp số nhân cyclic để xây dựng được các mã cyclic có
cấu trúc khác nhau.
* Các cấp số nhân cyclic cấp n
55
Nếu ta nhân các phần tử của một nhóm nhân cyclic cấp với một phần tử bất
kỳ trong nhóm nhóm nhân G của vành đa thức ta sẽ thu được một cấp số nhân có
công bội là phần tử sinh của nhóm nhân và có số hạng ban đầu là đa thức đem
nhân.
Bổ đề 2.6: Số các cấp số nhân cyclic cấp n xây dựng được trong G trên vành
( nguyên dương) được xác định như sau [7], [8], [9]:
Ví dụ 2.2:
n
Số cấp số nhân N
n
Số cấp số nhân N
(2.9)
2.2.2. Phân hoạch vành đa thức
Quá trình phân hoạch vành đa thức thực chất là quá trình phân chia các phần
tử trong vành đa thức thành các tập (hay các lớp kề) không trùng nhau. Các phần
tử sinh của nhóm nhân sinh được gọi là các hạt nhân của phân hoạch. Trong mỗi
phân hoạch vành đa thức, các lớp kề của nó là các cấp số nhân cyclic với cùng một
công bội.
2.2.2.1. Các bước phân hoạch vành đa thức
Để phân hoạch một vành đa thức ta thực hiện theo các bước sau đây [6], [7]:
Bước 1: + Chọn một phần tử sinh .
+ Xây dựng nhóm nhân cyclic: ,
trong đó: .
+ ;
Bước 2: + Chọn .
+ Xây dựng cấp số nhân cyclic:
+
56
Bước 3: Lặp lại bước 2 cho đến khi
Thông số là cấp của được xác định theo định lý 2.1. Giá trị chỉ có
thể bằng hoặc ước số của .
Do vành đa thức có cấu trúc đối xứng, một nửa vành gồm các phần tử có
trọng số lẻ, một nửa vành gồm các phần tử có trọng số chẵn. Vì vậy khi phân
hoạch ta chỉ cần tìm các phần tử có trọng số lẻ của vành rồi có thể dễ dàng suy ra
các phần tử chẵn.
Để xây dựng được tất cả các nhóm nhân của vành ta thực hiện các bước sau:
Xác định tất cả các đa thức lũy đẳng trong vành, trên cơ sở phân tích các
chu trình.
Chọn các đa thức lũy đẳng có trọng số lẻ để xây dựng các nhóm nhân
chứa chúng.
Xây dựng tất cả các nhóm nhân cyclic có thể có của vành. Tùy theo từng
lũy đẳng mà mỗi lũy đẳng có thể tham gia trong nhiều nhóm nhân.
Lấy đối xứng tất cả các nhóm nhân có chứa các phần tử có trọng số lẻ sẽ tạo được tất cả các nhóm nhân có chứa các phần tử có trọng số chẵn.
2.2.2.2. Phân hoạch vành đa thức suy biến và không suy biến
Có nhiều dạng phân hoạch vành đa thức khác nhau, song dạng phân hoạch
chung nhất là phân hoạch suy biến và phân hoạch không suy biến.
Định nghĩa 2.7:
Phân hoạch vành đa thức được gọi là không suy biến nếu phân hoạch bao
gồm tất cả các phần tử khác 0 trong vành đa thức. Ngược lại, phân hoạch là phân
hoạch suy biến [6].
Bổ đề 2.7: Trong một phân hoạch không suy biến tùy ý, số lớp kề trong phân
hoạch xác định theo biểu thức sau [6]:
(2.10)
* Điều kiện để phân hoạch không suy biến
57
Định lý 2.3: Điều kiện cần và đủ để phân hoạch vành không suy biến là nhóm
nhân sinh của phân hoạch có lũy đẳng bằng 1 [6].
Bổ đề 2.8: Số kiểu phân hoạch không suy biến khác nhau bằng số các bậc
khác nhau của các phần tử trong vành (trừ các phần tử lũy đẳng có bậc là 1), ký
hiệu là M [6].
Số kiểu phân hoạch không suy biến khác nhau chính là số ước khác nhau của
giá trị cấp lớn nhất của phần tử a(x) (max ord a(x)). Giá trị max ord a(x) .
Kết quả tính số kiểu phân hoạch không suy biến M của một số vành được
thống kê trong bảng 2.1.
Bảng 2.1. Số kiểu phân hoạch không suy biến M của một số vành
max ord Phân tích của max ord n M
5 15 3.5 3
7 7 7 1
9 63 3.3.7 5
11 1023 3.11.31 7
13 4095 3.3.5.7.13 16
15 15 3.5 3
Bổ đề 2.9: Số kiểu phân hoạch suy biến (ký hiệu là I) bằng số Ideal trong
vành đa thức [6].
Trong vành đa thức , số Ideal của vành được xây dựng tương
ứng với các đa thức sinh , mỗi Ideal tương ứng với bộ mã cyclic (theo quan
điểm xây dựng mã cyclic cổ điển).
Các đa thức sinh tương ứng với mỗi Ideal được lập từ tổ hợp các đa
thức bất khả quy trong phân tích của nhị thức xn + 1.
, với
58
, với | xn + 1,
Như vậy, số đa thức sinh g(x) (tương ứng là Ideal) có thể thiết lập được từ t đa
thức bất khả quy trong phân tích nhị thức xn + 1 được xác định: .
Bổ đề 2.10: Tổng số các kiểu phân hoạch có trong một vành đa thức (ký hiệu
là C) được xác định bởi biểu thức: [6].
Tổng số các kiểu phân hoạch C của một số vành khác nhau như
trong trong bảng 2.2.
Bảng 2.2. Tổng số các kiểu phân hoạch của vành
n
M
I
C = M.I
Số đa thức bất khả quy trong phân tích xn + 1
5 2 3 2 6
7 9 11 3 3 2 1 5 7 6 6 2 6 30 14
13 15 2 5 16 3 2 30 32 90
Như vậy, trong một vành đa thức , với mỗi giá trị n thì số kiểu
phân hoạch cũng khá nhiều, tạo ra khả năng lớn để chọn dạng mã cyclic có đặc
tính sửa sai tốt. Trong mỗi dạng mã đã xác định, ta tiến hành lựa chọn các mã sửa
sai tối ưu để sử dụng.
2.2.2.3. Các loại phân hoạch
a) Phân hoạch chuẩn
Phân hoạch chuẩn hay phân hoạch theo I – nhóm nhân cyclic đơn vị [6].
(2.11)
Hạt nhân của phân hoạch là , có cấp .
59
+ Các lớp kề có độ lớn bằng hoặc ước của .
Bổ đề 2.11: Trong phân hoạch chuẩn thì số lớp kề trong phân hoạch được xác
định theo biểu thức [6]:
(2.12)
+ Khi n là số nguyên tố thì có thể tính chính xác được số lớp kề.
Có một lớp kề chỉ chứa , số phần tử còn lại trong các lớp kề là
. Do đó số các lớp kề là: .
b) Phân hoạch cực đại
Định nghĩa 2.8:
Phân hoạch được gọi là cực đại nếu nhóm nhân cyclic sinh có phần tử sinh
với cấp lớn nhất, [6].
Bổ đề 2.12: Trong phân hoạch cực đại thì số lớp kề của phân hoạch được xác
định theo công thức sau [6]:
(2.13)
c) Phân hoạch cực tiểu
Định nghĩa 2.9: Phân hoạch là cực tiểu (hay phân hoạch tầm thường) là phân
hoạch có phần tử sinh của nhóm nhân cyclic là [6].
Bổ đề 2.13: Trong phân hoạch cực tiểu với phần tử của nhóm nhân ,
số lớp kề trong phân hoạch được xác định [6]:
(2.14)
Trong phân hoạch cực tiểu, mỗi lớp kề chỉ gồm 1 phần tử, do vậy số lớp kề
trong phân hoạch này đúng bằng số phần tử khác 0 có trong vành: 2n – 1 .
60
d) Phân hoạch vành thành các cấp số nhân có cùng trọng số
Trong trường hợp và thì cấp số nhân bao gồm
các đa thức có cùng trọng số. Vành đa thức được phân hoạch thành các cấp số
nhân với các phần tử trong mỗi cấp số nhân sẽ có cùng trọng số.
Dạng phân hoạch này chính là phân hoạch không suy biến và phân hoạch
theo nhóm nhân đơn vị.
e) Phân hoạch vành thành các phần tử có trọng số cùng tính chẵn lẻ.
Xét cấp số nhân cyclic có dạng sau [6]:
(2.15)
- Nếu lẻ.
+ Phần tử đầu tiên là đa thức có trọng số lẻ thì tất cả các phần tử của
cấp số nhân đều là đa thức có trọng số lẻ. Vì tích của các đa thức có
trọng số lẻ là một đa thức có trọng số lẻ.
+ Phần tử đầu tiên là đa thức có trọng số chẵn thì tất cả các phần tử
của cấp số nhân đều là đa thức có trọng số chẵn.
Vậy khi lẻ các lớp kề có các đa thức có trọng số chẵn hoặc lẻ.
- Nếu chẵn, với phần tử đầu tiên là đa thức bất kỳ thì tất cả các
phần tử của cấp số nhân đều là đa thức có trọng số chẵn phân hoạch suy biến.
Tóm lại, nếu công bội (hạt nhân phân hoạch) là một đa thức có trọng số
lẻ thì các phần tử của mỗi cấp số nhân trong phân hoạch sẽ cùng tính chẵn lẻ về
trọng số.
f) Phân hoạch vành đa thức thành các cấp số nhân theo modulo h(x).
Vành đa thức có thể được phân hoạch thành các cấp số nhân
theo modulo với [6], [7], [8].
Từ phân tích nhị thức
61
Trong đó, fi(x) là các đa thức bất khả quy.
Như vậy, . Tuỳ theo là tổ hợp của các fi(x) sao cho deg
giá trị mà có số đa thức bất khả quy khác nhau, nên sẽ có số khác nhau. Khi
đó, trên vành sẽ có nhiều phân hoạch ứng với các khác nhau.
Trong trường hợp này phân hoạch vành chỉ gồm 2k – 1 phần tử cho nên phân
hoạch sẽ suy biến và vành đa thức bị suy biến thành các vành nhỏ hơn.
2.3. XÂY DỰNG M-DÃY LỒNG GHÉP TRÊN VÀNH ĐA THỨC CÓ HAI LỚP
KỀ CYCLIC
2.3.1. Vành đa thức có hai lớp kề
Định nghĩa 2.10
Vành đa thức theo modulo được gọi là vành đa thức có hai lớp kề
thành tích của các đa thức bất khả quy trên trường
cyclic nếu phân tích của GF(2) có dạng sau [2]:
(2.16)
Trong đó và là các đa thức bất khả quy.
Bổ đề 2.14
Vành đa thức theo modulo là một vành đa thức có hai lớp kề cyclic nếu
n thoả mãn [2], [7], [8]:
n phải là một số nguyên tố;
phần tử thứ hai phải thoả điều kiện với mỗi ước nguyên
tố p của (n). (Trong đó (n) là hàm phi Euler)
Thuật toán xác định giá trị n [8], [9], [10], [11]
Vào: số nguyên tố n
Bước 1: tìm phân tích của (n-1);
xác định các ước nguyên tố pi của phân tích này.
62
thì n không thoả mãn.
Bước 2: với mỗi pi tính - Nếu tồn tại pi sao cho - n thoả mãn trong các trường hợp còn lại.
Ra: Giá trị n thoả mãn.
Theo thuật toán này ta xác định được một số giá trị n đảm bảo vành đa thức
theo mod xn+1 là một vành đa thức có hai lớp kề cyclic.
Dưới đây là một số giá trị n thỏa mãn.
269 293 317 347 349 373 379 389 419 421 443 461 467 491 509 523 541 547 557 563 587 613
619 653 659 661 677 701 709 757 773 787 797 821 827 829 853 859 877 883 907 941 947 1019
1061 1091 1109 1117 1123 1171 1187 1213 1229 1237 1259 1277 1283 1291 1301 1307 1373
1381 1427 1451 1453 1483 1493 1499 1523 1531 1549 1571 1619 1621 1637 1667 1669 1693
1733 1741 1747 1787 1861 1867 1877 1901 1907 1931 1949 1973 1979 1987 1997 2027 2029
2053 2069 2083 2099 2131 2141 2213 2221 2237 2243 2267 2269 2293 2309 2333 2339 2357
2371 2389 2437 2459 2467 2477 2531 2539 2549 2557 2579 2621 2659 2677 2683 2693 2699
2707 2741 2789 2797 2803 2819 2837 2843 2851 2861 2909 2939 2957 2963 3011 3019 3037
3067 3083 3187 3203 3253 3299 3307 3323 3347 3371 3413 3461 3467 3469 3491 3499 3517
3533 3539 3547 3557 3571 3581 3613 3637 3643 3659 3677 3691 3701 3709 3733 3779 3797
3803 3851 3853 3877 3907 3917 3923 3931 3947 3989 4003 4013 4019 4021 4091 4093 4099
4133 4139 4157 4219 4229 4243 4253 4259 4261 4283 4349 4357 4363 4373 4397 4451 4483
4493 4507 4517 4547 4603 4621 4637 4691 4723 4787 4789 4813 4877 4933 4957 4973 4987
5003 5011 5051 5059 5077 5099 5107 5147 5171 5179 5189 5227 5261 5309 5333 5387 5443
5477 5483 5501 5507 5557 5563 5573 5651 5659 5683 5693 5701 5717 5741 5749 5779 5813
5827 5843 5851 5869 5923 5939 5987 6011 6029 6053 6067 6101 6131 6173 6197 6203 6211
6229 6269 6277 6299 6317 6323 6373 6379 6389 6397 6469 6491 6547 6619 6637 6653 6659
6691 6701 6709 6733 6763 6779 6781 6803 6827 6829 6869 6883 6899 6907 6917 6947 6949
6971 7013 7019 7027 7043 7069 7109 7187 7211 7219 7229 7237 7243 7253 7283 7307 7331
7349 7411 7451 7459 7477 7499 7507 7517 7523 7541 7547 7549 7573 7589 7603 7621 7643
7669 7691 7717 7757 7789 7829 7853 7877 7883 7901 7907 7933 7949 8053 8069 8093 8117
8123 8147 8171 8179 8219 8221 8237 8243 8269 8291 8293 8363 8387 8429 8443 8467 8539
8563 8573 8597 8627 8669 8677 8693 8699 8731 8741 8747 8803 8819 8821 8837 8861 8867
8923 8933 8963 8971 9011 9029 9059 9173 9181 9203 9221 9227 9283 9293 9323 9341 9349
n = 3 5 11 13 19 29 37 53 59 61 67 83 101 107 131 139 149 163 173 179 181 197 211 227
9371 9397 9419 9421 9437 9467 9491 9533 9539 9547 9587 9613 9619 9629 9643 9661 9677
9733 9749 9803 9851 9859 9883 9901 9907 9923 9941 9949
63
2.3.2. M-dãy xây dựng trên vành đa thức
Xét vành đa thức với là số lẻ. Theo cách thông thường thì
các M-dãy có thể được tạo từ bất kỳ các thức nguyên thủy có bậc là theo
phương trình đồng dư sau:
(2.17)
Trong đó: - đa thức nguyên thủy;
- đa thức mầm;
Chu kỳ của M-dãy là: . Từ đây ta có thể xây dựng các M-dãy với
độ dài lớn như các dãy giả ngẫu nhiên được sử dụng rộng rãi trong các ứng dụng
của viễn thông.
Ví dụ 2.3:
Chọn ta có M-dãy xây dựng theo phương trình
đồng dư sau:
Các giá trị của M-dãy cho trong bảng 2.3.
Bảng 2.3. M-dãy xây dựng trên vành
M-Dãy
1
0 1 1000 0100
2 0010
3 0001
4 1100
5 0110
6 0011
64
7 1101
8 1010
9 0101
10 1110
11 0111
12 1111
13 1011
14 1001
15 1000
Ngoài ra, M-dãy còn được tạo từ phương trình đồng dư sau:
Trong đó: .
Số lượng các giá trị của là:
Với là hàm Phi-Euler.
Trong ví dụ trên ta có các giá trị của là:
2.3.3. Xây dựng M-dãy lồng ghép từ các cấp số nhân cyclic trên vành đa
thức có hai lớp kề
Bổ đề 2.15: M-dãy lồng ghép trên vành đa thức có hai lớp kề có thể được tạo
từ phương trình đồng dư sau:
(2.18)
Trong đó:
65
Số lượng các đa thức là:
Trọng số là một số chẵn.
Trọng số là một số lẻ với
Số lượng các đa thức tính như sau:
(2.19)
là đa thức mầm với .
Số lượng các M-dãy lồng ghép tính theo công thức:
(2.20)
Chứng minh:
Xét nhóm nhân A tạo bởi đa thức sinh :
Ta có: .
Nhóm nhân bao gồm tất cả các phần tử có trọng số chẵn trong vành đa
thức, trừ phần tử . Trong A, có đa thức có bậc bằng .
Xét nhóm nhân A lấy theo modulo , ta nhận thấy có đa thức có
trọng số lẻ và đa thức có trọng số chẵn. Do đó, có tất cả các đa thức với
bậc thỏa mãn điều kiện sau:
(2.21)
Rõ ràng đây là một M-dãy lồng ghép.
Ví dụ 2.3:
M-dãy lồng ghép trên , ta có , các đa thức này như sau:
Ta có 8 M-dãy lồng ghép xây dựng theo phương trình:
66
Giả sử: ;
67
Số lượng đa thức là , bao gồm các đa thức sau:
Các M-dãy xây dựng từ đa thức như sau:
68
Ví dụ 2.4:
Xây dựng M-dãy trên vành đa thức . Các phần tử trong vành
này có cấp cực đại là:
Vành đa thức này có chiều dài của các phân hoạch là bội số chung của tổ hợp
3, 5, 7,13.
Ta sẽ tạo ra M-dãy trên vành này có chu kỳ là 4095. Chọn
Công bội sẽ được chọn là các đa thức có bậc là 4095, chẳng hạn ta có
thể chọn các tam thức ở bảng sau để trở thành công bội trong phân hoạch tạo
M-dãy theo modulo .
Bảng 2.4. Các tam thức cấp cực đại 4095 (32.5.7.13) trên vành x13 + 1
Các tam thức cấp cực đại 4095 trên vành x13 + 1
(1101000000000) (1100010000000) (1100001000000) (1100000010000) (1100000001000) (1100000000010) (1010000000001) (1010000000100) (1010000001000) (1010001000000) (1010010000000) (1011000000000) (1001010000000) (1001000100000) (1001000001000) (1+x+x3) (1+x+x5) (1+x+x6) (1+x+x8) (1+x+x9) (1+x+x11) (1+x2+x12) (1+x2+x10) (1+x2+x9) (1+x2+x6) (1+x2+x5) (1+x2+x3) (1+x3+x5) (1+x3+x7) (1+x3+x9) (1001000000010) (1000100000001) (1000100000010) (1000100000100) (1000100100000) (1000101000000) (1000110000000) (1000011000000) (1000010000001) (1000001000100) (1000001001000) (1000000110000) (1000000101000) (1000000100010) (1000000100001) (1+x3+x11) (1+x4+x12) (1+x4+x11) (1+x4+x10) (1+x4+x7) (1+x4+x6) (1+x4+x5) (1+x5+x6) (1+x5+x12) (1+x6+x10) (1+x6+x9) (1+x7+x8) (1+x7+x9) (1+x7+x11) (1+x7+x12)
69
Ví dụ chọn
Tính cấp số nhân:
Sau khi chạy chương trình bằng MATLAB ta sẽ có cấp số nhân A, do chiều
dài tương đối lớn, ở đây chỉ minh họa một số phần tử trong A.
Bảng 2.5. Một số phần tử của M-dãy trên vành x13+1
TT Phần tử của cấp số nhân TT Phần tử của cấp số nhân
1 2 3 4 5 6 7 8 110100000000 101000100000 111001110100 011101111111 100000101111 000100111101 010110000100 100000001001 ... 128 .... 512 ... 1024 ... 4095 ..... 100000010001 ... 101001000000 .... 100010000010 100000000000
Kết thúc phân hoạch trên tương ứng với việc kết thúc chu kỳ của m-dãy, từ
đây ta sẽ tạo được dãy cực đại có các thuộc tính dịch, hồi quy, cửa sổ… được dùng
làm dãy dãy giả ngẫu nhiên PN.
Ta có thể lấy bất kỳ bit nào trong chuỗi 12 bit của cấp số nhân A làm m-dãy,
giả sử ta lấy bit cuối cùng làm M-dãy thì chuỗi 4095 bit như sau:
Bảng 2.6. M-dãy với chiều dài 4095 theo phân hoạch cực đại
Bit 1 đến 32 Bit 33 đến 64
...
Bit 513 đến 544
00011101110100101101100001010010 00011001110001001000110110110001 ............ 01110011010111010011010010101011 ............ 11110110001010100100110110010110 ............ 10111011011101011110110110000001 ............ 100101101110000100000111101011000
... Bit 1025 đến 1056 ... Bit 2049 đến 2080 ... Bit 4063 đến 4095
70
- Số lượng bit “1” của M-dãy tính được là: , với xác suất là:
- Số lượng bit “0” của M-dãy tính được là: , với xác suất là:
Có thể coi xác suất xuất hiện của bit “1” và bit “0” là như nhau và xấp xỉ 0,5.
Như vậy chúng ta đã tạo ra được một M-dãy tuyến tính bằng phương pháp
mới dựa trên phân hoạch vành đa thức có hai lớp kề cyclic theo modulo . Việc
thay đổi các công bội khác nhau sẽ cho ta các khả năng tạo M-dãy ở rộng,
điều này có thể được ứng dụng trong việc bảo mật… Chẳng hạn, số khả năng phân
hoạch M tạo m dãy tuyến tính trên vành đa thức theo modulo sẽ được
tính dựa trên các phần tử có cấp cực đại 4095 được chọn làm công bội , với
cách tính theo hàm Phi-Euler:
Số lượng các M-dãy lồng ghép của một số vành tính được như trong bảng 2.7
Bảng 2.7. Số lượng M-dãy lồng ghép với một vài giá trị n khác nhau
8 8 64 15 5
600 512 30.720 1.023 11
1.728 2.048 3.538.944 4.095 13
139.968 131.072 1,8346.1010 262.143 19
132.765.696 134.217.728 1,782.1016 268.435.455 29
71
Các M-dãy tạo theo phương pháp này có ưu điểm: (1) có phân bố gần giống
ngẫu nhiên, (2) dễ thực hiện, (3) độ dài lớn tùy ỳ. Trên cơ sở đó ta có thể sử dụng
các M-dãy này vào việc tạo khóa cho các hệ mật khóa bí mật nói chung.
2.4. HỆ MẬT XÂY DỰNG TRÊN CÁC CẤP SỐ NHÂN CYCLIC
Các mã khống chế sai thường được xây dựng trên các vành đa thức lẻ [5],
[18], [21], [35], [36]. Vành đa thức với là một trường hợp đặc
biệt không được xem xét tới khi xây dựng mã sửa sai. Tuy nhiên, với việc sử dụng
cấu trúc nhóm nhân và cấp số nhân cyclic trên các vành đa thức này ta có những
ứng dụng khá lý thú trong mật mã.
2.4.1. Vấn đề mã hóa
Mỗi cấp số nhân cyclic cấp n có thể coi là một phép biến đổi tuyến tính của
vector mã ban đầu (được coi là nhóm nhân cyclic đơn vị I) .
Gọi là phần tử sinh của một nhóm nhân cyclic cấp . Ta có bổ đề sau:
Bổ đề 2.16: Tổng các số hạng của một cấp số nhân cyclic cấp có công bội
và số hạng đầu được xác định theo biểu thức sau [4]:
(2.22)
Hiển nhiên là . Hệ mật xây dựng trên các cấp số nhân này có thể được
mô tả theo sơ đồ khối hình 2.1.
Hình 2.1. Mã hóa và giải mã xây dựng trên cấp số nhân cyclic
Mỗi phép biến đổi (mã hoá) A có thể được đặc trưng bởi một ma trận vuông
cấp n có dạng sau:
72
(2.23)
là một ma trận không suy biến nên luôn tồn tại thoả mãn:
Tập các phép biến đổi này là một tập kín đối với phép tính (nhân ma trận) và
tạo nên một nhóm nhân có phần tử đơn vị là phép biến đổi đồng nhất (ma trận đơn
vị I).
Nhóm nhân trong vành các ma trận vuông này là nhóm tuyến tính đầy đủ và
được ký hiệu là .
Thuật toán mã hoá khá đơn giản, chỉ dựa trên phép toán nhân và bình phương
một đa thức theo modulo ( có cấp ) với một đa thức
bất kỳ .
Vấn đề giải mã
Để giải mã ta phải tìm phép biến đổi ngược là ma trận nghịch đảo của ma
trận . Tuy nhiên ta có thể dễ dàng thực hiện giải mã dựa trên bổ đề sau:
Bổ đề 2.17: Ma trận có cấp (order) là n, hoặc là ước của n. Tức là ta luôn
có: [4].
Hay: (2.24)
Ở đây, là phần tử sinh của một nhóm nhân cyclic có cấp bằng hoặc
bằng ước của .
Ví dụ 2.5:
Xét chọn đa thức làm phần tử sinh, ta có:
73
Chú ý: Ở đây ta biểu diễn các đa thức qua các số mũ của các thành phần khác
Vào
Mã hoá
Ra
Vào
Ra
A
Giải mã (A2)2 =
I
I
A
A
không. Ví dụ: .
Các ma trân luân hoàn
Khi sử dụng cấp số nhân có công bội và có số hạng đầu là một đa thức
ta sẽ có một lớp các biến đổi đặc biệt, được đặc trưng bởi một loại ma
trận đặc biệt, được gọi là ma trận luân hoàn.
Định nghĩa 2.11: Ma trận vuông trên trường được gọi là ma trận
luân hoàn nếu nó có dạng sau [4]:
(2.25)
Bổ đề 2.18: Đại số các ma trận luân hoàn cấp trên trường đẳng cấu với
đối với phép ánh xạ các ma trận luân hoàn thành các đa thức đại số
dạng [4]:
(2.26)
Bổ đề 2.19: Tổng và tích của hai ma trận luân hoàn là một ma trận luân hoàn [4].
74
Ta có:
Trong đó:
Bổ đề 2.20: Ma trận luân hoàn là khả nghịch khi và chỉ khi đa thức là
nguyên tố cùng nhau với . Ma trận nghịch đảo B nếu tồn tại sẽ tương ứng
với đa thức thoả mãn điều kiện [4]:
(2.27)
Trong trường hợp vành và , ta luôn có:
Bổ đề 2.21: Tập các ma trận luân hoàn A ứng với sẽ tạo nên một
nhóm con nhân Abel trong nhóm nhân của vành các ma trận vuông. Trong nhóm này
tồn tại các nhóm con là các nhóm nhân cyclic có cấp bằng hoặc ước của [4].
Bổ đề 2.22: Cấp của ma trận luân hoàn A bằng cấp của đa thức tương
ứng của nó [4].
Khi thì ma trận luân hoàn A tương ứng là một ma trận tự
nghịch đảo.
Bổ đề 2.23: Số các ma trận luân hoàn dùng để lập mã bằng số các phần tử của
nhóm nhân trong vành đa thức [4].
Với trường hợp ma trận luân hoàn, thuật toán mã hoá chỉ là một phép cộng
với n bước dịch vòng.
Thuật toán giải mã bao gồm một phép tính nghịch đảo của một đa thức theo
modulo và n bước dịch vòng tương ứng của phần tử nghịch đảo này.
Ví dụ 2.6: Chọn
Vào
75
(7)
(6)
(5)
(4)
(3)
(2)
(1)
(0)
(10110101)
Ra
(00001000)
Hình 2.2. Sơ đồ thiết bị mã hoá
Vào
(7)’
(6)’
(5)’
(4)’
(3)’
(2)’
(1)’
(0)’
(00001000)
Ra
(10110101)
Hình 2.3. Sơ đồ thiết bị giải mã
X
=
= I
Đa thức nghịch đảo: . Ta có:
A.A-1 =
1 0 0 0 0 0 0
1 1 0 0 0 0 0
1 1 1 0 0 0 0
0 1 1 1 0 0 0
0 0 1 1 1 0 0
0 0 0 1 1 1 0
0 0 0 0 1 1 1
0 0 0 0 0 1 1
0 1 0 1 1 0 1
1 0 1 0 1 1 0
1 1 0 1 0 1 1
0 1 1 0 1 0 1
1 0 1 1 0 1 0
1 1 0 1 1 0 1
0 1 1 0 1 1 0
1 0 1 1 0 1 1
1 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 1 0 0
0 0 0 0 0 1 0
0 0 0 0 0 0 1
0 0 0 0 0 0 0
76
2.4.2. Xây dựng hệ mật dùng cấp số nhân cyclic
2.4.2.1. Mạng hoán vị - thay thế Feistel
Trong mật mã cổ điển, việc sử dụng riêng các phép hoán vị hoặc thay thế đều không đảm bảo độ mật cần thiết. Một phương án kết hợp do Shanon đề xướng nên
sử dụng các hệ mật mã tích bằng cách dùng các phép hoán vị và thay thế kết hợp
để tăng độ mật.
Một trong các phương án đó là sử dụng mạng hoán vị thay thế theo lược đồ
Feistel. Lược đồ Feistel được đề xuất vào đầu những năm 70 và đã được kiểm chứng
là một lược đồ tốt chống được các phân tích mật mã, lược đồ này đươc sử dụng
trong nhiều hệ mật mã khác nhau trong đó có chuẩn mã dữ liệu (DES) của Mỹ.
Hình 2.4. Sơ đồ mạng thay thế Feistel
77
2.4.2.2. Xây dựng hệ mật dùng cấp số nhân cyclic
Trong sơ đồ xây dựng hệ mật, sơ đồ Feistel được sử dụng làm nền cho hệ mật
dùng các cấp số nhân cyclic trên vành đa thức.
Sơ đồ này (hình 2.5) sẽ mã hóa cho chuỗi bit có độ dài 128, các hoán vị IP và hoán vị đảo IP-1 được tác giả xây dựng và phát triển từ các bảng IP của hệ mật
DES, cho trong bảng 2.8 và bảng 2.9.
Hình 2.5. Sơ đồ mã hóa khối E
78
Hàm được xây dựng trên cơ sở hệ mật sử dụng các cấp số nhân cyclic trên
vành đa thức có hai lớp kề. Các khóa là các phần tử trong một cấp số nhân
được chọn như sau:
với là một đa thức có trọng số lẻ tùy ý sao cho:
là một phần tử nguyên thủy của nhóm nhân cyclic có cấp bằng và
cũng là một đa thức có trọng số lẻ. Cần chú ý rằng với vành
là một vành có hai lớp kề cyclic.
Bảng 2.8. Bảng hoán vị ban đầu (IP)
Bảng 2.9. Bảng hoán vị đảo (IP-1)
79
Giả sử ta chọn khóa ,
Phần tử đầu Phần tử đầu của cấp số nhân và cũng là
khóa đầu tiên là: Sơ đồ khối bộ mã hóa với
64 bit
….
khóa như trong hình 2.6.
(63)
(62)
(5)
(4)
(3)
(2)
(1)
(0)
Dữ liệu vào
64 bit
Dữ liệu ra
Hình 2.6. Sơ đồ khối mã hóa , với khóa
Một khâu mã hóa được thực hiện theo quy tắc:
(2.28)
Trong sơ đồ mã hóa hình 2.5 tác giả có thay đổi so với sơ đồ Feistel, đó là
nửa trái ở bước thứ bằng nửa phải ở bước thứ cộng với khóa (chỉ cộng
61 bit đầu tiên với khóa). Sở dĩ phải làm như vậy để tránh trường hợp khi các bit
dữ liệu đầu vào toàn là bit “0” thì dữ liệu mã hóa đầu ra cũng sẽ toàn là bit “0”, vì
hàm f trong sơ đồ của chúng tôi thực hiện cộng các bit dữ liệu chứ không cộng với
các bit của khóa.
Bảng 2.10 là kết quả tính toán phân bố của bộ mã khi thay đổi 32 bản tin rõ
[2], mỗi bản tin chỉ khác 1 bit, với cùng một bộ khóa K. Với phần tử sinh của khóa
, phần tử đầu ; phần tử đầu của cấp số nhân
(khóa đầu tiên) là:
Bản tin rõ đầu tiên gồm 32 ký tự dạng hexa (tương ứng 128 bit) là:
M1 = 0123456789ABCDEF0123456789ABCDEF
80
Bảng 2.10. Khoảng cách Hamming dH(C1,Ci) giữa các cặp bản mã khi các bản rõ khác nhau 1 bit,
dH(M1,Mi) = 1, với cùng một khóa K
Bản rõ Bản mã
0123456789ABCDEF0123456789ABCDEF 2123456789ABCDEF0123456789ABCDEF 0023456789ABCDEF0123456789ABCDEF 0133456789ABCDEF0123456789ABCDEF 0122456789ABCDEF0123456789ABCDEF 0123656789ABCDEF0123456789ABCDEF 0123446789ABCDEF0123456789ABCDEF 0123457789ABCDEF0123456789ABCDEF 0123456389ABCDEF0123456789ABCDEF 01234567C9ABCDEF0123456789ABCDEF 012345678DABCDEF0123456789ABCDEF 0123456789BBCDEF0123456789ABCDEF 0123456789A9CDEF0123456789ABCDEF 0123456789ABEDEF0123456789ABCDEF 0123456789ABCCEF0123456789ABCDEF 0123456789ABCDFF0123456789ABCDEF 0123456789ABCDEB0123456789ABCDEF 0123456789ABCDEF4123456789ABCDEF 0123456789ABCDEF0523456789ABCDEF 0123456789ABCDEF0103456789ABCDEF 0123456789ABCDEF0121456789ABCDEF 0123456789ABCDEF0123556789ABCDEF 0123456789ABCDEF0123476789ABCDEF 0123456789ABCDEF0123452789ABCDEF 0123456789ABCDEF0123456F89ABCDEF 0123456789ABCDEF0123456799ABCDEF 0123456789ABCDEF0123456788ABCDEF 0123456789ABCDEF0123456789EBCDEF 0123456789ABCDEF0123456789AACDEF 0123456789ABCDEF0123456789AB8DEF 0123456789ABCDEF0123456789ABC5EF 0123456789ABCDEF0123456789ABCDFF 0123456789ABCDEF0123456789ABCDEE
E9D8211132A6A374BC286082EFA45DA8 3FEDC41619D4B600C059740D7A7D3DB6 BA63820AED3E453E46236D0BBCE621CB 64ED9A2B835B2A1A1887D0527791796F 318B9AB229793B92F6D26B8F66F71FD4 F15FF724D7A18806A95C1CF3FB2BC871 F60072AA91BD7CEC5A629A89E22D0EEA E029AC24899C12893546C42D5F74C59D ABA4425CDC28CF0BDEB34969C3907BE5 DCFCE627E6484BB24B0ED91051661ECA BA9A5D727F482D18C34AFBAB0488698E CF9528E0BF93184E0DD5E9EC4B0BED78 D78E46904ACBF02ACC9A47D3A8634AE9 EC3B44672A217541592F4BF0FAD021D9 AABAF5812D7EF0CF1F33BF1A09EEA7A3 C5EC075C3B572E410712D17F66CAF907 E2D5A84270DAC03952A60CFD8D3F7443 4668F1890782644268C688441882E43A 13D32C9861E4DF17F1C6EEEE90C6C681 F4C77D14D1C3D56C3BFE5567E88F2FBD 3829E4410CF0C4F5C44533DC9F167AF9 72F1CA3D0680EE7D4DA55539D515A021 BD09D0D46298F5133D500DD1B1D4EF8F 60B685BE82763B4198EF5656014C9B5F CE8966D625E75B2D212E8137A2DD9C62 96BABA38D98A9752F121910FDA1F6719 1EFE98838C64E01668B87F5ABC1FFEB3 5825A87F960913A4241D4445D970B340 2F2F07A8A0186137DEFCF09D37F7E60B D369DC985C020CC46CB055A628928946 B7A8933663E16463FDD0391FE945E8E5 07564D6E503D8A9F901C46CFE655D09D 0730E7E6141F31CA7E6B02567FBB85FB
0 63 66 66 66 63 66 66 66 66 66 66 63 63 66 66 66 66 66 63 63 66 63 66 63 66 66 66 66 66 63 66 66
(Chú ý: trong bảng 2.10, những ký tự hexa in đậm chứa bit thay đổi)
TT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
Khoảng cách Hamming trung bình giữa các bản mã là:
(2.29)
Bảng 2.11 là kết quả tính toán phân bố của bộ mã khi thay đổi khóa K, mỗi
khóa khác với khóa đầu tiên 2 bit, với cùng một bản rõ [2]:
M = 0123456789ABCDEF0123456789ABCDEF
81
Sở dĩ ta phải thay đổi 2 bit (tương ứng thay đổi 2 vị trí) là để đảm bảo đa thức
sinh của khóa có trọng số lẻ.
Chú ý, chiều dài của khóa là 61 bit, do đó khi mô tả khóa bằng 16 ký tự hexa
nhưng thực tế chỉ có 15 ký tự đầu là dạng hexa, còn ký tự cuối cùng chỉ có 1 bit
nên nó nhận giá trị “1” hoặc “0”.
Chọn phần tử đầu của cấp số nhân tạo khóa vẫn là Phần tử
sinh khóa đầu tiên có trọng số như sau:
Các khóa chỉ thay đổi 2 bit trong một số hexa của khóa đầu tiên .
Chú ý: vị trí các bit “1” trong các khóa tương ứng là số mũ của trong
đa thức sinh tạo khóa. Ví dụ 2.7:
Bảng 2.11. Khoảng cách Hamming dH(C1,Ci) giữa các cặp bản mã
khi các khóa khác khóa K1 2 bit dH(K1, Ki)=2 với cùng một bản rõ M
Bản mã Khóa
123456789ABCDEF1 223456789ABCDEF1 113456789ABCDEF1 125456789ABCDEF1 123756789ABCDEF1 123436789ABCDEF1 123455789ABCDEF1 123456189ABCDEF1 123456749ABCDEF1 123456780ABCDEF1 1234567896BCDEF1 123456789A7CDEF1 123456789ABADEF1 123456789ABC1EF1 123456789ABCD2F1 123456789ABCDEC1
0 66 70 68 70 62 74 56 58 70 60 70 58 70 60 62
33 33 33 33 35 33 33 31 33 31 33 33 33 31 31 31
B5733992DC61C07BD38B6196D2434300 61E6E5A5C93122EFB5D6D4A81DED9184 CCDE27DCCFF1C9853E4996E02A1619A9 ADDC3348559C4D7101D62EB489A5F66F DA18C6B04FFA4F97C0412EAB528B5C78 77F9E155A67092ABF8F7A5F66D0827EB C4014F02F5A63F6E8C2C98855D2A34EA 15629261C809D76B6CD525B168622F21 68E00F4AB5A9061FD7822787633024AC 176D974F14841A053D9B5B79E607A4AA 398840062A8D0BD055EB5B961AEB0691 93CFF32DD509BDE42409312E8818E3FF 56A632C099DF4A1AF8C9AD2A928845B1 2180C04805CF8DEAA539B3BF86BAD257 83390D707279E0F64EE8C762334DD474 AF304D735EDF45A4397E7CF3832B8346
TT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
(Chú ý: trong bảng 2.11, các ký tự hexa in đậm chứa các bit của khóa đã thay đổi,
trọng số các đa thức sinh tạo khóa luôn đảm bảo là lẻ)
82
Khoảng cách Hamming trung bình giữa các bản mã:
(2.30)
Qua các kết quả khảo sát khoảng cách Hamming ở trên ta thấy tính khuếch
tán của hệ thống là tốt, tương đương với hệ mật DES.
Phép giải mã được thực hiện theo chu trình ngược lại so với sơ đồ mã hóa,
các khóa phải được sử dụng theo thứ tự ngược lại. Tức là, nếu các khóa mã hóa
cho mỗi vòng là thì các khóa giải mã cho vòng tương ứng sẽ
là .
2.5. KẾT LUẬN CHƯƠNG 2
Nội dung chương này đề cập đến cấu trúc cấp số nhân của vành đa thức, xây
dựng được một hệ mật trên các cấp số nhân cyclic này. Cụ thể là hệ mật mới này
được xây dựng theo lược đồ Feistel có sửa đổi (sơ đồ mật mã khối có độ dài đầu ra
128 bit), hàm mật mã f và việc tạo khóa được xây dựng theo cấu trúc của cấp số
nhân cyclic trên vành đa thức chẵn.
Một số ưu điểm nổi bật của hệ mật này là (1) Mạch điện mã hóa và giải mã
cùng một cấu trúc và rất đơn giản chỉ gồm các thanh ghi dịch và bộ cộng modul 2,
tốc độ xử lý nhanh, (2) Dễ dàng mở rộng độ dài từ mã trên các vành đa thức
với , (3) Một số mô phỏng đánh giá cho thấy kết quả khuếch tán của hệ mật
khá tốt (tương đương DES) và đây là cơ sở để xây dựng các hàm băm mới, được
trình bày trong chương 3.
83
CHƯƠNG 3. HÀM BĂM XÂY DỰNG TRÊN
CẤP SỐ NHÂN CYCLIC
3.1. CÁC HÀM BĂM HỌ MD4
Sở dĩ phần này đề cập đến các hàm băm họ MD4 là vì đa số các hàm băm
đang sử dụng phổ biến như MD4, MD5, RIPEMD-{0, 128, 160, 256, 320}, SHA-
{0,1,224, 256, 384, 512} đều là các nhánh trong họ MD4 [23].
3.1.1. Cấu trúc
Các hàm băm họ MD4 đều dựa theo nguyên lý thiết kế của Merkle-
Damgºard. Chúng có nhiều điểm tương đồng trong các hàm nén. Sơ đồ cơ bản
được mô tả trong hình 3.1 [23].
Hình 3.1. Tương tác giữa mở rộng thông báo và các thao tác bước
Các hàm nén sử dụng một số các thanh ghi được khởi tạo cùng với IV. Các
thanh ghi sau đó được cập nhật trong các bước liên tiếp phụ thuộc vào thông báo.
Ngoài việc phụ thuộc vào thông báo, các bước đơn lẻ rất giống nhau, chỉ thay đổi
một vài thông số cụ thể.
84
Đầu ra cuối cùng của hàm nén được tính từ trạng thái cuối cùng của các
thanh ghi và IV (thông thường là cộng chúng với nhau). Việc tính ngược hàm nén
là không thể, điều này rất cần thiết để tránh phép tấn công kẻ đứng giữa.
3.1.1.1. Các thông số
Chi tiết về cấu trúc tổng quát của mỗi hàm được mô tả bớt một vài tham số
như trong bảng 3.1. Các thông số chính của tất cả các hàm băm đều dựa theo
nguyen lý MD: đầu ra hàm băm có độ dài n, đầu ra hàm nén có độ dài m và đầu
vào các khối thông báo có độ dài l.
Hầu hết các hàm của họ MD4 đều được tối ưu trong thiết kế phần mềm trên
các vi xử lý 32 bit, ví dụ chiều dài một từ là bít. Ngoại trừ SHA-384 và
SHA-512 có .
Các tham số khác được suy ra bao gồm: Số lượng các từ đầu vào của hàm
nén, ký hiệu là t, và được tính là . Tương tự, chiều dài đầu ra m của hàm
nén chính là chiều dài của giá trị chuỗi, trong các họ MD4 các hàm băm được dùng
khởi tạo các thanh ghi, số lượng r các thanh ghi tính được là: .
Thông số quan trọng tiếp theo là số bước s (còn gọi là các vòng). Đây được
xem là thông số bảo mật. Để tăng tính bảo mật của hàm băm thông thường tăng số
bước s, tuy nhiên khi đó hiệu quả sẽ giảm.
Các thông số cơ bản của một số hàm băm cụ thể được mô tả trong bảng 3.1.
Chú ý SHA-0 và RIPEMD-0 là các hàm băm nguyên thủy không có ký hiệu “-0”.
Sau này ký hiệu này được thêm vào để tránh nhầm lẫn. Ký hiệu “2x” trong bảng
liên quan đến việc các hàm sử dụng 2 tính toán song song độc lập. Ngoại trừ SHA-
224 và SHA-384 độ dài đầu ra m của hàm nén vào đầu ra n của hàm băm là giống
nhau, . Trong SHA-224 và SHA-384 ở bước cuối cùng cắt bỏ bit để giảm
giá trị băm thực tế.
85
3.1.1.2. Ký hiệu
Khối thông báo đầu vào được chia thành t khối nhỏ (các từ thông báo)
ký hiệu . Sau đó các từ thông báo này được mở rộng thành các giá
trị , trong đó các là các đầu vào ở bước thứ i. Giá trị trong các
thanh ghi ở các bước được ký hiệu là .
Bảng 3.1. Thông số của các hàm băm họ MD4
(Ký hiệu * là thiết kế ban đầu không có ký hiệu “-0” nó được thêm vào sau này để tránh nhầm lẫn)
Các ký hiệu và thông số được thống kê trong Bảng 3.2.
86
Bảng 3.2. Ký hiệu các thông số và các biến
số lượng các thanh ghi số lượng các bước (vòng) số lượng các từ thông báo đầu vào
l độ dài các khối thông báo đầu vào (theo bit) m độ dài đầu ra hàm nén (theo bit) n độ dài đầu ra hàm băm (theo bit) r s t w chiều dài một từ (theo bit)
hoán vị sử dụng ở bước thứ k.
phép toán logic ở bước thứ i.
hệ số sử dụng ở bước thứ i.
nội dung trong thanh ghi ở bước thứ i.
số bit dịch ở bước thứ i.
từ thông báo đầu vào ở bước i, phụ thuộc vào thông báo. từ thông báo
3.1.1.3. Phân loại họ MD4
Có hai điểm khác biệt chính để phân loại các hàm băm họ MD4 thành các
phân lớp sau:
Hàm mở rộng thông báo được thực hiện ở hoán vị trong các vòng hay
mở rộng đệ quy.
Số lượng xử lý tính toán song song.
Tùy thuộc vào hai đặc điểm này các hàm được phân loại thành các phân lớp sau:
+ Họ MD:
MD4 và MD5 thuộc phân lớp này là vì sử dụng hoán vị vòng và chỉ xử lý
tính toán theo một luồng.
+ Họ RIPEMD:
Họ RIPEMD bao gồm RIPEMD-{0;128; 160; 256; 320} và cả MD4 mở
rộng. Các hàm này sử dụng hoán vị vòng cho việc mở rộng thông báo nhưng xử lý
tính toán song song 2 luồng.
87
+ Họ SHA:
Họ SHA sử dụng hàm nén SHA-{0, 1, 224, 256, 384, 512} và xử lý tính toán
một luồng, nhưng việc nén thông báo được thực hiện theo hàm đệ quy.
Chú ý: (HAVAL). Có một hàm băm đáng quan tâm đó là HAVAL, nó gần
giống với thiết kế theo cấu trúc tổng quát. Nhưng có một sự khác biệt quan trọng là
việc sử dụng các hàm Boolean rất khác với các hàm đã đề cập, chúng ta không đề
cập HAVAL là một bộ phận của họ MD4.
Chi tiết thông số của các hàm băm được mô tả trong Phụ lục A.
3.1.2. Mở rộng thông báo
Mở rộng thông báo mô tả việc các giá trị (được xem là các đầu vào cho
các bước mã hóa) được tính toán từ khối thông báo đầu vào hiện tại . Do đó
khối thông báo đầu vào hiện tại được chia thành t từ và sau đó
tính ra s giá trị .
Trong họ MD4 có hai phương pháp để thực hiện việc này đó là: dùng hoán vị
vòng và các hàm đệ quy.
3.1.2.1. Hoán vị vòng
Kiểu mở rộng thông báo này được dùng trong MD4, MD5, tất cả các biến thể
của RIPEMD và HAVAL. Hoán vị vòng có nghĩa là các bước được nhóm lại với
nhau thành vòng bao gồm mỗi t bước (thông thường là 16). Sau đó, trong mỗi
vòng mỗi một từ thông báo được dùng làm đầu vào trong một bước.
Có thể mô tả một hoàn vị vòng cho mỗi vòng k như sau:
(3.1)
Hay nói cách khác: được dùng làm đàu vào ở bước này.
(3.2)
Mô tả mở rộng thông báo của MD4 như sau:
88
Thông thường phép hoán vị được lựa chọn theo cách các ít các mẫu càng tốt,
ví dụ không có 2 từ được đưa vào hai vòng liên tiếp. Điều này là để có tính
khuếch tán tốt. Ngoài ra rất nhiều nhà thiết kế đều muốn một “mở rộng” đơn giản
để lựa chọn các tham số. Ví dụ mở rộng thông báo của MD5 sử dụng công thức rất
đơn giản:
(3.3)
3.1.2.2. Mở rộng thông báo theo kiểu đệ quy
Khác với các phép hoán vị vòng, các hàm trong họ SHA sử dụng csc phpes
mở rộng thông báo đệ quy: sau khi chọn csc giá trị khởi tạo
Giá trị sau được tính đệ quy từ trước.
Kiểu mở rộng thông báo này có ưu điểm là tăng độ khuếch tán, vì tất cả các
đều phụ thuộc (gần như) vào . Do đó, nếu một trong các từ của thông báo bị
thay đổi, nhiều bước trong giai đoạn 2 của bước tính toán sẽ bị ảnh hưởng. Điều
này làm cho việc dự đoán tiến trình trong một bước khó khăn hơn.
Trong SHA-0, thuật toán đệ quy sử dụng như sau:
(3.4)
Tuy nhiên có một khiếm khuyết trong phép đệ quy này: bit thứ k của mỗi từ
chỉ bị ảnh hưởng bởi các bit thư k ở trước. Có nghĩa là phép mở rộng này có
độ khuếch tán thấp hơn mong đợi với cùng một cấu trúc. Bản SHA-1 sửa đổi sử
dụng phép mở rộng thông báo sau để có độ khuếch tán tốt hơn:
(3.5)
89
Trong các phiên bản SHA sau này NIST quyết định ghép thêm không những
các phép và quay bít, mà còn thêm phép dịch bit và cộng modulo trong khi mở
rộng thông báo. Do đó, hai hàm phụ:
được thêm vào để tăng độ khuếch tán giữa các bit hơn so với việc xoay một
bit của SHA-1. Ngoài ra việc sử dụng phép dịch bit (>>) trong các hàm này (thay
vì phép quay >>>) tránh việc quay đối xứng có thể gây ra các nhược điểm tiềm
tàng.
SHA-256 (và cả SHA-224, sử dụng SHA-256 nhưng loại bỏ 32 đầu ra) dùng
quy tắc mở rộng thông báo như sau:
(3.6)
Do việc sử dụng các phép tính modulo thay vì phép trước đây, phép mở
rộng thông báo này không còn là tuyến tính nữa.
3.1.3. Các bước mã hóa
Bước mã hóa là phần chính, có thể nói là trái tim của mỗi hàm nén. Chúng
phải được thực hiện dễ dàng, rất hiệu quả, tuy nhiên tại cùng thời điểm chúng phải
có độ khuếch tán tốt và khó phân tích.
Căn cứ vào hiệu quả có hai hướng trong bước mã hóa của họ MD4 đó là:
Chỉ một trong các thanh ghi (hoặc hai) bị thay đổi tại mỗi bước. Điều này rất quan trọng để đạt hiệu quả khi lập trình phần mềm, không thể tính các thanh ghi khác nhau theo cách song song.
Các bước mã hóa được xây dựng hiệu quả cao và các phép toán cơ bản
đơn giản.
Để đạt được hướng thứ 2, thì trong các bước đơn của quá trình nén của tất cả
các hàm băm họ MD4 đều dựa trên các phép toán sau:
Các phép toán Boolean
Phép cộng số tự nhiên modulo .
90
Dịch bít và quay.
Sở dĩ sử dụng các phép toán này là vì chúng có thể được thực hiện rất hiệu
quả trên cấu trúc máy tính hiện đại, ngoài ra việc trộn các hàm Boolean và phép
cộng được tin là có độ bảo mật cao.
3.1.3.1. Các phép toán Boolean
Một phần quan trọng trong bước mã hóa của họ MD4 đó là được cấu tạo từ
các hàm Boolean, áp dụng cho phép toán bit trên toàn bộ các từ thông báo. Nếu ta
tính trên các bit, ta áp dụng nó vào 3 từ có hàm Boolean
bằng quy tắc sau:
(3.7)
Cụ thể, các thuật toán bước của MD4 sử dụng các hàm Boolean sau đây:
Việc sử dụng các hàm này là vì chúng có các đặc tính quan trọng để có hiệu
ứng thác lũ tốt, có nghĩa một thay đổi nhỏ trong các thanh ghi sẽ gây ra sự thay đổi
lớn chỉ sau vài vòng.
Nếu các bit của x, y và z là độc lập thì các bit đầu ra sẽ độc lập, khi thay đổi 1
bit đầu vào sẽ làm thay đổi một nửa các khả năng có thể ở đầu ra.
3.1.3.2. Cấu trúc và ký hiệu
Quy ước ký hiệu: Theo cách mô tả thông thường các các hàm băm họ MD4
các thanh ghi được đánh ký hiệu là và các bước mã hóa được ký hiệu là:
Sau đó thuật toán được thiết lập theo kiểu “đầu tiên thực hiện ,
tiếp theo , tiếp theo …”. Điều này thuận lợi cho việc
thiết lập các thao tác với hiệu quả với các thanh ghi cố định.
91
Cấu trúc tổng quát: Cấu trúc tổng quát của họ MD4 rất đơn giản: thao tác chủ
yếu là phép cộng modulo. Các chuỗi cần công bao gồm giá trị của các thanh ghi,
giá trị từ thông báo , một vài hằng số và một giá trị tính được từ hàm
thực hiện trên 3 giá trị thanh ghi. Ngoài ra còn có thêm thao tác xoay bit.
Trong phần lớn các trường hợp giá trị và và hàm Boolean là độc lập
ở các bước hoặc các vòng. Một tính chất quan trọng trong các bước mã hóa đó là
chúng đều có tính song ánh, có nghĩa là bất kỳ hai trong số các giá trị
đều xác định giá trị thứ ba.
3.1.3.3. Các đặc điểm riêng
MD4. Thuật toán nén gồm 3 vòng mỗi vòng gồm 16 bước, tổng công có 48
bước. Các bước mã hóa nén trong MD4 được mô tả như sau:
Trong đó hàm Boolean và các hằng số trong các vòng là độc lập, còn
giá trị thay đổi sau mỗi bước nhưng theo quy luật sau:
MD5. Thiết kế của MD5 gần giống MD4. Nhưng các hàm ITE và XOR trong
MD4 được thay thế trong MD5 là ITEzxy và ONXxzy. Các bước mã hóa rất giống
MD4 nhưng có điểm khác là: sau bước xoay, có thêm một thanh ghi nữa:
(3.8)
Theo quan điểm mật mã học thì đây là điểm đáng quan tâm, nó làm tăng hiệu
ứng thác lũ. Một bước mã hóa của MD5 như Hình 3.2.
92
Hình 3.2. Một bước mã hóa của MD5
RIPEMD-128/ RIPEMD-160. Sự khác biệt quan trọng trong hàm nén của
RIPEMD là thông báo được xử lý song song hai luồng. Có nghĩa là ta có 2 tập 4
(trong RIPEMD-128) hoặc 5 (trong RIPEMD-160) các thanh ghi, chúng được khởi
tạo với cùng giá trị IV và được cập nhật trong cùng bước mã hóa, nhưng với các
hằng số khác nhau, số vòng xoay khác nhau và lịch trình thông báo khác nhau. Sau
khi xử lý xong các vòng mã hóa, kết quả cuối cùng ở hai luồng tính toán được kết
hợp với IV để cho ra mã băm đầu ra.
Các bước mã hóa của RIPE-128 giống với MD4 và RIPEMD-160, đều sử
dụng hàm sau đây:
(3.8)
RIPEMD-256/ RIPEMD-320. Các hàm mã hóa của hai hàm băm này gần
giống với RIPEMD-128 và RIPEMD-160. Chỉ có 2 điểm khác là: sự ảnh hưởng
giữa các luồng tính toán song song bị giới hạn sau mỗi vòng (mỗi lần tráo đổi 2
thanh ghi) và không kết hợp hai luồng ở vòng cuối nhằm mục đích tăng độ dài mã
băm lên 2 lần.
SHA-0/ SHA-1. Sự khác biệt lớn nhất giữa SHA-0 và SHA-1 so với MD- và
RIPEMD- là việc xoay bit được thực hiện chỉ trong một thanh ghi. Hàm là các
hàm ITE, MAJ và XOR, và có thêm một thanh ghi được cập nhật trong mỗi bước
quay, trong trường hợp này là 30 bit. Hàm mã hóa được mô tả như sau:
(3.9)
93
SHA-224/ SHA-256. Các hàm nén của hai hàm băm này giống hệt nhau,
ngoại trừ vector khởi tạo IV. Điều khác biệt duy nhất là khi tính một giá trị băm
cuối cùng thì SHA-224 chỉ lấy 224 bít tận cùng bên trái.
Điều này là để có sự đa dạng trong tiêu chuẩn về chiều dài của hàm băm, các
hàm băm thường là các khối trong các thủ tục bảo mật và chiều dài của mã băm sẽ
được quyết định bởi các thủ tục lận cận.
Hai hàm băm này hàm mã hóa có độ phức tạp tăng lên vì 2 cơ chế: sử dụng
nhiều thanh ghi hơn. Và sử dụng bước mã hóa phức tạp hơn.
Trong mỗi bước mã hóa không chỉ 1 thanh ghi mà 2 thanh ghi được cập nhật,
ta gọi là nội dung của thanh ghi được cập nhật ở bước thứ i.
Hai hàm phụ trong SHA-224/ SHA-256 được định nghĩa như sau:
Chúng làm tăng tính khuếch tán giữa các bit.
Bước mã hóa của SHA-224/ SHA-256 được mô tả như sau:
(3.10)
Trong đó là biến phụ được tính như sau:
(3.11)
Có điểm đáng chú ý là tất cả 64 bước của hàm nén đều dùng cùng hàm
Boolean và chỉ khác hằng số và khối thông báo .
Hai hàm băm này có độ phức tạp cao hơn, bước mã hóa tính toán chậm hơn
nhưng độ bảo mật tốt hơn.
SHA-384/ SHA-512. SHA-384 và SHA-512 tương tự như SHA-224 và SHA-
256: SHA-384 đơn thuần là phiên bản ngắn hơn SHA-512 và có IV khác. Như mô
tả ở trên hai hàm băm này sử dụng các từ 64 bit thay vì 32 bit, thuận lợi cho kiến
94
trúc máy tính 64 bit hiện đại. Bước mã hóa gần giống SHA-256 với một vài hằng
số được thay đổi để có độ dài từ lớn hơn (Xem phụ lục A).
3.2. XÂY DỰNG HÀM BĂM MỚI TRÊN CÁC CẤP SỐ NHÂN CYCLIC
Trên cơ sở đó phân tích các hàm băm ở trên ta nhận thấy rằng, mặc dù các
hàm băm có tính chất tốt nhưng lại có nhược điểm là phức tạp dẫn tới yêu cầu về
tài nguyên tính toán và thời gian tính toán. Độ phức tạp của các hàm băm thể hiện
ở chỗ thuật toán băm trải qua nhiều bước và nhiều vòng, ví dụ trong họ MD4 như
nói ở trên quá trình băm bao gồm: mở rộng thông báo (hoán vị vòng hoặc dùng
hàm đệ quy), trong các vòng mã hóa các hàm nén sử dụng các phép toán như:
Boolean, cộng số nguyên theo modulo, xoay bit, dịch bit… Mã băm đầu ra là tổ
hợp của kết quả sau 1 quá trình tính toán với giá trị khởi tạo IV ban đầu.
Việc sử dụng CGP trên vành đa thức để xây dựng hệ mật như trong chương 2
thể hiện một số ưu điểm: cấu trúc đại số chặt chẽ, số lượng CGP trên vành đa thức
nhiều (thuận lợi cho việc tạo khóa trong các hệ mật), mạch điện phần cứng thực
hiện khá dễ dàng (thuận lợi cho việc áp dùng vào thực tế), tốc độ tính toán nhanh.
Với những ưu điểm này trong phần này tác giả áp dụng hệ mật để xây dựng một
hàm băm đơn 128 bit, trong đó khối mã hóa thực hiện trên các CGP của vành đa
thức còn các khóa trong các vòng mã hóa được xây dựng từ các CGP của
vành đa thức có hai lớp kề cyclic.
3.2.1. Sơ đồ khối mật mã trong hàm băm
Trong phần này tác giả đưa ra một phương pháp xây dựng hàm băm 128 bit
dựa trên các cấp số nhân cyclic của vành đa thức, với nền tảng là sơ đồ hàm băm
Matyas–Mayer–Oseas như Hình 3.3, đầu ra có độ dài 128 bit. Khối mật mã
trong sơ đồ này được xây dựng theo mô hình mạng hoán vị thay thế Feistel (như
trong Hình 2.4).
95
Hình 3.3. Sơ đồ thực hiện hàm băm
Hàm được xây dựng trên cơ sở hệ mật sử dụng các cấp số nhân cyclic trên
vành đa thức có hai lớp kề (đã được mô tả trong mục 2.5.2). Các khóa là các
phần tử trong một cấp số nhân được chọn như sau [2], [11], [12]:
(3.12)
với là một đa thức có trọng số lẻ tùy ý sao cho: ; là một
phần tử nguyên thủy của nhóm nhân cyclic có cấp bằng và cũng là một đa
thức có trọng số lẻ [2], [8].
Giả sử ta chọn khóa:
Phần tử đầu là .
Phần tử đầu của cấp số nhân và cũng là khóa đầu tiên là:
. (Chú ý giá trị là dạng biểu diễn số
mũ của đa thức). Sơ đồ khối bộ mã hóa như trong Hình 3.4. với khóa
Hình 3.4. Sơ đồ bộ mã hóa khóa E với khóa K1
96
Sơ đồ khối mã hóa f với khóa
Một khâu mã hóa được thực hiện theo quy tắc:
(3.13)
Khối trong sơ đồ Hình 3.3 thực hiện việc trích chọn các khóa cho các vòng
tiếp theo của quá trình băm. Khối mật mã trong sơ đồ sử dụng các khóa có độ
dài 61 bit. Trong 61 bit khóa ở bước thứ do khối tạo ra thì 60 bit đầu tiên sẽ
được trích chọn từ 128 bit của còn bit thứ 61 là bit kiểm tra chẵn lẻ. Việc
trích chọn được lấy liên tục các bit cách nhau 2 vị trí trong (trong khoảng bit
1 đến bit 120). Dưới đây là một vài kết quả đánh giá của hàm băm xây dựng trên
các cấp số nhân cyclic.
Bảng 3.3 là kết quả tính toán phân bố của 32 hàm băm khi thay đổi duy nhất
một bit dữ liệu trong 32 khối bản tin rõ so với bản tin ban đầu, để thuận tiện cho
việc quan sát chúng tôi chỉ thay đổi 1 bit trong chuỗi bản tin đầu tiên của một khối.
Mỗi khối bản tin bao gồm 10 bản tin, mỗi bản tin có độ dài 128 bit. Các hàm
băm sử dụng cùng một bộ khóa khởi tạo:
Phần tử sinh của khóa khởi tạo là đa thức:
;
Phần tử đầu phần tử đầu của cấp số nhân (khóa đầu tiên), cũng
là khóa khởi tạo sẽ là:
Khối bản tin đầu tiên được xây dựng như sau: Bản tin đầu tiên gồm 32 ký tự
dạng hexa (tương ứng 128 bit) được chọn là:
M1=0123456789ABCDEF0123456789ABCDEF
Các bản tin tiếp theo (từ 2 đến 10) được tạo một cách ngẫu nhiên.
97
Bảng 3.3. Khoảng cách Hamming dH(MD1, MDi) khi các khối dữ liệu khác khối ban đầu 1 bit
Giá trị băm
Bản rõ
TT
1
0
2
56
3
62
4
68
5
62
6
64
7
60
8
68
9
64
10
58
11
64
12
60
13
78
14
64
15
64
16
72
17
68
18
70
19
68
20
66
21
68
22
68
0123456789ABCDEF 0123456789ABCDEF 2123456789ABCDEF 0123456789ABCDEF 0323456789ABCDEF 0123456789ABCDEF 0133456789ABCDEF 0123456789ABCDEF 012B456789ABCDEF 0123456789ABCDEF 0123056789ABCDEF 0123456789ABCDEF 0123476789ABCDEF 0123456789ABCDEF 0123457789ABCDEF 0123456789ABCDEF 0123456389ABCDEF 0123456789ABCDEF 0123456799ABCDEF 0123456789ABCDEF 012345678DABCDEF 0123456789ABCDEF 01234567898BCDEF 0123456789ABCDEF 0123456789AFCDEF 0123456789ABCDEF 0123456789AB8DEF 0123456789ABCDEF 0123456789ABC5EF 0123456789ABCDEF 0123456789ABCDFF 0123456789ABCDEF 0123456789ABCDEB 0123456789ABCDEF 0123456789ABCDEF 8123456789ABCDEF 0123456789ABCDEF 0323456789ABCDEF 0123456789ABCDEF 0133456789ABCDEF 0123456789ABCDEF 0121456789ABCDEF 0123456789ABCDEF 0123056789ABCDEF
4771249F4AB0E564 908F1456E0D3A239 7B13337D3B31DC7B 91287CE5FCDFD274 995F0EF13134BFAF D43A47B676DFA356 00EEA6CB284338F5 704DE9AFEC8A592C 0BC2CE7B57041014 0609BC377F579110 E1EDDCED0686C4F6 E1DACEE0AA906D52 09B62BF471BA9644 A9C64A47762FF6BD 0CA4992082D77070 73C61EA33CE5D66D 1E25F66DC86E2888 44CCBDC4367DA463 1AD3061B585D4602 FBEBA645F50D0203 E1589BF99823EF04 1210020DA32B4C50 1EE7BE47AC923862 90929EA7F6E837C1 BEB0D922F4ECAE48 CF098E0B9CCDF9CE AD5C0C8D0A61348B B96861BE92EEBB16 7906EF1395B4DE95 522E47E70DD5C738 FD4109489863FD3B 4E79C434BF8355DC C6DBEA49E116BEDC 1FF11DF8F7A44A3F BBE4AE6094334B90 49D253F55195427D BA79EFB1AF077CB5 1988B7580AEA44C1 22C2135FCD25DB6C BB0CE7ED5F43BEFE ADFA46A0CEC37C5A E0C53DAF31B45B8D A0A88D98F147A0D7 C4284C7EAF58BC1F
23
68
24
54
25
60
26
66
27
54
28
56
29
62
30
62
31
64
32
62
33
68
0123456789ABCDEF 0123416789ABCDEF 0123456789ABCDEF 0123457789ABCDEF 0123456789ABCDEF 0123456589ABCDEF 0123456789ABCDEF 0123456799ABCDEF 0123456789ABCDEF 012345678DABCDEF 0123456789ABCDEF 01234567892BCDEF 0123456789ABCDEF 0123456789AACDEF 0123456789ABCDEF 0123456789AB4DEF 0123456789ABCDEF 0123456789ABCCEF 0123456789ABCDEF 0123456789ABCDFF 0123456789ABCDEF 0123456789ABCDED
8DD5B3218D448641 313E52AD01747037 62F9919F4FF1A2AE 27C31BD6042FBB04 FF3D7A429626EF4E C61B8CF1325300F4 48CBABA51460CEF1 4ABFA6A62B4C006B A69350AB67BBCC6F 0053037523D9343F 36F0DCFCCF106D0F 76F938F7FBFBBE0C 4D16387FD0FA8E8A E12F2ED638A059FF 422DDC211E659AB0 C3D7A66C29F82331 8353E1BF4DB4264B 6D7007E1DFA73B51 7945A131C04B6182 ED6E54D50BE28723 5DA15DE212D18181 4813623B0E06F874
98
(Chú ý: Trong bảng 3.3 và bảng 3.4, các ký tự hexa in đậm chứa bit thay đổi).
Tiến hành thay đổi lần lượt từng bit từ bit 1 đến bit 128 của bản tin đầu
vào , tính khoảng cách Hamming của từng lần thay đổi, cuối
cùng tính được khoảng cách Hamming trung bình giữa các giá trị băm với giá trị
băm ban đầu là:
(3.14)
Bảng 3.4 là kết quả tính toán phân bố của bộ mã khi thay đổi khóa khởi tạo
, mỗi khóa khác với khóa đầu tiên 2 bit. Sở dĩ ta phải thay đổi 2 bit (tương ứng
thay đổi 2 vị trí) là để đảm bảo đa thức sinh của khóa có trọng số lẻ.
Bản tin đầu vào gồm 10 khối 128 bit được tạo ngẫu nhiên [20].
Chú ý, chiều dài của khóa là 61 bit, do đó khi mô tả khóa bằng 16 ký tự hexa
nhưng thực tế chỉ có 15 ký tự đầu là dạng hexa, còn ký tự cuối cùng chỉ có 1 bit
nên nó nhận giá trị “1” hoặc “0”.
Chọn phần tử đầu của cấp số nhân tạo khóa là:
99
Phần tử sinh khóa đầu tiên như sau:
( ).
Các khóa chỉ thay đổi 2 bit trong một số hexa của khóa đầu tiên .
Chú ý: vị trí các bit “1” trong các khóa tương ứng là số mũ của trong đa
thức sinh tạo khóa. Ví dụ:
Bảng 3.4. Khoảng cách Hamming dH(MD1, MDi) giữa các cặp giá trị băm khi các khóa khác khóa K1 2 bit.
Khóa Ki
TT
Giá trị băm MDi
1 123456789ABCDEF1 53C51349140008F9AA66F954C307AD44
0
2 B23456789ABCDEF1 537140BB7C26F26EDD57CFDDA9CE1B8F
64
3 173456789ABCDEF1 2BA0259D1F16C021F3A22319AF753ED0
60
4 126456789ABCDEF1 A9FD04E4E1BAC7C06119B3FBD8FFD12D
78
5 123E56789ABCDEF1 773979064BE2FC31F0BE347B1EB2D776
72
6 1234F6789ABCDEF1 CD24285FFA002E865E8AECFACEAB37A5
66
7 12345C789ABCDEF1 12F25C639775234298EFF42CB48F44A8
64
8 123456289ABCDEF1 764025970C5F0A26A623D1A24B6D1809
60
9 1234567D9ABCDEF1 530804E85FA92A29C9D3B064481D81F4
52
10 123456780ABCDEF1 36188474DCE9230F7BFE8799EC1221C4
68
11 123456789FBCDEF1 633497CBED502E08B33AB54809D2DBE2
58
12 123456789AECDEF1 6756EEEBC53E948FE408A13DFF72AA20
66
13 123456789AB6DEF1 8778B1FBDE80A5DA4BEF05156D968B48
58
14 123456789ABC7EF1 18DA5D34CA879807D99ECDBC169ED8AD
74
15 123456789ABCDBF1 F9787D06F99822CB41E264158FF93D0C
64
16 123456789ABCDEA1 27395F8741475A8AA3845BB4FB6D0D0E
58
Khoảng cách Hamming trung bình của các giá trị băm với giá trị băm ban đầu:
(3.15)
100
Để khảo sát thêm tính khuếch tán của hàm băm, ta thay đổi cả bản tin rõ và từ bit khóa như sau: Giữa nguyên bản tin và lần lượt thay đổi từng bit của khóa
1 đến bit 60, bit 61 dùng để kiểm tra chẵn lẻ. Sau đó tính khoảng cách Hamming trung bình giữa các giá trị băm với giá trị băm ban đầu theo công thức:
(3.16)
Thực hiện lặp lại với 10 bản tin được tạo ngẫu nhiên khác nhau ta có kết quả
như Bảng 3.5.
Bảng 3.5. Tính khoảng cách Hamming trung bình khi thay đổi khóa K và thay đổi bản tin rõ.
1 2 3 4 5 Bản tin thứ
63,27 63,67 64,23 64,67 64,50
6 7 8 9 10 Bản tin thứ
62,30 63,87 65,37 64,33 63,97
Khoảng cách Hamming trung bình tính được:
(3.17)
Qua các kết quả khảo sát khoảng cách Hamming ở trên ta thấy tính khuếch
tán của các hàm băm đề xuất là khá tốt.
Để tăng hiệu quả hàm băm ta có thể sử dụng các sơ đồ hàm băm kép với cách
xây dựng tương tự như đã trình bày ở trên.
3.2.2. Các đánh giá kết quả mô phỏng hàm băm mới
Theo kết quả mô phỏng đánh giá độ khuếch tán của hàm băm đề xuất,
khoảng cách Hamming của các mã băm đạt xấp xỉ một nửa độ dài mã băm, tức là
khi ta thay 1 bit trong bản tin đầu vào thì mã băm đầu ra sẽ thay đổi một nửa chiều
dài. Từ đây ta thấy độ khuếch tán là rất tốt.
Để có thêm kết luận về hàm băm đề xuất, phải thực hiện thêm các đánh khác
như: tính xung đột, tính bảo mật…
101
3.3. KẾT LUẬN CHƯƠNG 3
Nội dung chương này đề cập đến các hàm băm hộ MD4, đây là họ có nhiều
hàm băm đang được sử dụng rộng rãi. Phần tiếp theo là đề xuất xây dựng một hàm
băm mới 128 bit, với mục đích tăng độ dài hàm băm hạn chế phép tấn công ngày
sinh nhật; các mô phỏng đánh giá độ khuếch tán của hàm băm mới đề xuất này cho
thấy kết quả rất khả quan.
102
KẾT LUẬN VÀ KIẾN NGHỊ
Các kết quả nghiên cứu chính của luận án bao gồm các nội dung sau đây:
Đề xuất phương pháp xây dựng hệ mật trên các cấp số nhân cyclic của vành đa
thức. Hệ mật mới này được xây dựng theo lược đồ Feistel có sửa đổi với sơ đồ
mật mã khối có độ dài đầu ra 128 bit. Ưu điểm nổi bật của hệ mật này là (1)
Mạch điện mã hóa và giải mã cùng một cấu trúc và rất đơn giản chỉ gồm các
thanh ghi dịch và bộ cộng modul 2, tốc độ xử lý nhanh, (2) Phương pháp mã
hóa hàm được xây dựng trên cấu trúc của cấp số nhân cyclic trên vành đa
thức với , (Vành đa thức này là vành chẵn đặc biệt và
không được xem xét trong lý thuyết mã sửa sai), do đó dễ dàng mở rộng độ dài
từ, (3) Một số mô phỏng đánh giá cho thấy kết quả khuếch tán của hệ mật khá
tốt (tương đương DES).
Đề xuất phương pháp tạo khóa cho hệ mật từ các M-dãy theo các cấp số nhân
của vành đa thức có hai lớp kề cyclic, đây cũng là vành đặc biệt và ít được
dùng trong lý thuyết mã sửa sai. Các M-dãy xây dựng theo phương pháp này
có chu kỳ lớn và cũng đảm bảo tính chất giả ngẫu nhiên của dãy. Trong luận án
đã sử dụng các M-dãy trên vành vào việc tạo các khóa con bên trong hệ
mật, cụ thể là 16 khóa con cho 16 vòng mã hóa theo sơ đồ Feistel. Do số
lượng khóa tạo được rất nhiều ( khóa) nên mỗi lần mã hóa một khối
thông tin vào, có thể sử dụng các khóa khác, điều này sẽ tránh được vấn đề của
các mật mã khối là khi bản rõ đầu vào giống nhau và sử dụng cùng một khóa
thì bản mã đầu ra sẽ giống nhau. Ngoài ra các M-dãy đề xuất trong luận án
hoàn toàn có thể sử dụng mật mã dòng.
Xây dựng một hàm băm mới có độ dài 128 bit với khối mật mã được xây dựng
trên các cấp số nhân cyclic. Đây là cơ sở để xây dựng thêm các hàm băm mới
với một số ưu điểm: (1) phương pháp mã hóa đơn giản hơn, (2) có thể dễ dàng
mở rộng độ dài mã băm nhằm mục đích hạn chế phép tấn công ngày sinh nhật,
103
(3) hàm băm có độ khuếch tán (hay hỗn loạn) khá tốt (đây là một tính chất
quan trọng của hàm băm). Theo các kết quả mô phỏng đánh giá tính khuếch
tán của hệ mật mới và của các hàm băm đề xuất cho thấy tính khuếch tán khá
tốt. Với hệ mật thì độ khuếch tán tương đương DES, với hàm băm độ khuếch
tán đạt xấp xỉ một nửa độ dài mã băm.
Kiến nghị hướng phát triển
Phát triển thêm các hệ mật mã mới trên cơ sở hàm mã hóa xây dựng từ các cấp
số nhân cyclic và kết hợp thêm các khâu phi tuyến để tăng độ an toàn cho hệ
mật.
Trên cơ sở hàm băm đề xuất trong luận án, xây dựng thêm các hàm băm mới
có độ dài lớn hơn.
Tìm hiểu và thực hiện thêm các phương pháp đánh giá hàm băm đề xuất để
hoàn thiện nghiên cứu về hàm băm mới này.
Nghiên cứu, thiết kế và thử nghiệm mạch điện phần cứng cho hệ mật đề xuất.
104
DANH MỤC CÁC CÔNG TRÌNH CÓ LIÊN QUAN
ĐẾN LUẬN ÁN
[1]. Nguyễn Bình,Vương Đức Hạnh, Hồ Quang Bửu “Quasi–cyclic Codes over Polynomial Rings withTwo Cyclotomic Cosets”, Tạp chí Khoa học và Công nghệ, Viện Khoa học và Công nghệ Việt Nam, chuyên san các công trình về điện tử viễn thông và CNTT, tập 1, số 1 năm 2010 trang 77-81.
[2]. Hồ Quang Bửu, Trần Đức Sự, “Constructing Interleaved M-sequences over Polynomial Rings with Two Cyclotomic Cosets”, Tạp chí Khoa học và Công nghệ Quân sự, số 47, 02 -2012, trang 133-140.
[3]. Hồ Quang Bửu, Ngô Đức Thiện, Trần Đức Sự, “Xây dựng hệ mật trên các cấp số nhân cyclic của vành đa thức”, Tạp chí Khoa học và Công nghệ, Viện Khoa học và Công nghệ Việt Nam, Chuyên san các công trình nghiên cứu về Điện tử, Viễn thông và CNTT, Tập 50 số 2A, tháng 9-2012, ISSN 0866 708X.
[4]. Hồ Quang Bửu, Ngô Đức Thiện, Trần Đức Sự, “Xây dựng hàm băm trên các cấp số nhân cyclic”, Chuyên san các công trình nghiên cứu, phát triển và ứng dụng CNTT và Truyền thông, Kỳ 3 Tạp chí Thông tin, KHCN của bộ Thông tin và Truyền thông, Tập V-1 số 7 (27), tháng 5-2012, ISSN 1859-3526.
[5]. Nguyễn Toàn Thắng, Ngô Đức Thiện, Hồ Quang Bửu, “Xây dựng hàm băm mở rộng trên các cấp số nhân cyclic”, Hội thảo Điện tử - Truyền thông An toàn thông tin, ATC/REV, tháng 10- 2012, pp. 52 - 57.
[6]. Hồ Quang Bửu, đề tài khoa học cấp bộ TT&TT: “Nghiên cứu thực trạng và khả năng triển khai ứng dụng xác thực cổng thông tin điện tử”. Mã số: 125- 10-KHKT-RD, ban hành theo quyết định số: 234/QĐ-BTTTT ngày 10/2/2010.
105
TÀI LIỆU THAM KHẢO
Tiếng Việt
[1]. Bùi Lai An, (2012), “Về một cấu trúc tổng quát của mã PN phi tuyến đa
chiều đa cấp theo kiểu lồng ghép”, Luận án tiến sĩ kỹ thuật, 2012.
[2]. Đặng Hoài Bắc, (2010) “Các mã cyclic và cyclic cục bộ trên vành đa thức có
hai lớp kề cyclic”, Luận án TS kỹ thuật.
[3]. Nguyễn Bình (2004), "Nghiên cứu xây dựng hạ tầng khóa công khai phục vụ thư tín điện tử và thương mại điện tử”, Báo các kết quả nghiên cứu đề tài Bộ Bưu chính - Viễn thông, 6/2004.
[4]. Nguyễn Bình (2004), Giáo trình Mật mã học, Học viện Công nghệ Bưu
chính Viễn thông, Nxb Bưu điện, 2004.
[5]. Nguyễn Bình (2008), Giáo trình Lý thuyết thông tin, Học viện Công nghệ
Bưu chính Viễn thông, Nxb Bưu điện, 2008.
[6]. Lê Đình Thích (2002), Nghiên cứu các mã xyclic cục bộ trên vành đa thức,
Luận án Tiến sĩ kỹ thuật.
Tiếng Anh
[7]. Dang Hoai Bac, Nguyen Binh, Nguyen Xuan Quynh, Young Hoon Kim (2007), “Polynomial rings with two cyclotomic cosets and their applications in Communication”, MMU International Symposium on Information and Communications Technologies 2007, Malaysia, ISBN: 983-43160-0-3.
[8]. Dang Hoai Bac, Nguyen Binh, Nguyen Xuan Quynh (2007), “Decomposition in polynomial ring with with two cyclotomic cosets”, 36th AIC, November 18-23 2007, Manila.
[9]. Nguyen Binh, Dang Hoai Bac (2004), “Cyclic Codes over Extended Rings of
Polynomial Rings with Two Cyclotomic Cosets”, REV’04, Vietnam.
[10]. Nguyen Binh, Le Dinh Thich (2002), “The Oders of Polynomials and Algorithms for Defining Oder of Polynomial over Polynomial Ring”, VICA- 5, Hanoi, Vietnam.
106
[11]. Dang Hoai Bac, Nguyen Binh, Nguyen Xuan Quynh (2007), "Novel Algebraic Structure for Cyclic Codes", Applied Algebra, Algebraic Algorithms, and Error Correcting Codes –Conf., AAECC 17, LNCS 4851, pp 301-310, Springer-Verlag Berlin Heidelberg.
for Cryptography"
[12]. Dang Hoai Bac, Nguyen Binh, Nguyen Xuan Quynh (2007), "New Algebraic Structure Based on Cyclic Geometric Progressions over Polynomial Ring International Conference on IEEE, Applied Computational Intelligence and Security (CIS) CIS'07, December 15-19, 2007, Harbin, China.
[13]. Nguyen Binh (2002), “Crypto-System Based on Cyclic Geometric
Progressions over Polynomial Ring (Part I)”, REV’02, Vietnam.
[14]. Nguyen Binh (2002), “Circulant Crypto System over Polynomial Ring
(Part II)”, REV’02, Vietnam.
[15]. Bart PRENEEL (2003), “Analysis and Design of Cryptographic Hash
Functions”, Ph.D project, February 2003.
[16]. Bellovir S., Merritt M. (1992), “Encrypted Key Exchange”, Proc. IEEE
Symp. Security and Privacy IEEE Comp Soc Press 1992.
[17]. Denning D., Branstad D. (1996), “A Taxonomy of Key Escrow Ecryption
Systems”, Comm ACM, v39 n3, Mar 1996.
[18]. Hamming R. W. (1980), Coding and Information Theory, Englwood Cliffs,
N.J Prentice Hall.
[19]. Huth M. R. A. (2001), Secure Communication Systems, Cambridge
University Press, 2001.
[20]. Jean-Yves Chouinard (2002), ELG 5373 Secure Communications and Data Encryption, School of Information Technology and Engineering, University of Ottawa, April 2002.
[21]. John B. Anderson and Seshadri Mohan, (1991), Source and Channel Coding,
Kluwer Academic Publishers, Boston/Dordrecht/London.
[22]. Knudsen, L.; Preneel, B (2002), Construction of secure and fast hash functions using nonbinary error-correcting codes, IEEE Transactions on Information Theory, Volume 48, Issue 9, Sept. 2002 Page(s): 2524 - 2539
107
[23]. Magnus Daum (2005), “Cryptanalysis of Hash Functions of the MD4- Family”, Dissertation zur Erlangung des Grades eines Doktor der Naturwissenschaften der Ruhr-UniversitÄat Bochum am Fachbereich Mathematik vorgelegt von Magnus Daum unter der Betreuung von Prof. Dr. Hans Dobbertin Bochum, Mai 2005.
[24]. Markku-Juhani Olavi Saarinen (2009), “Cryptanalysis of Dedicated Crypto- graphic Hash Functions”, Thesis submitted to The University of London for the degree of Doctor of Philosophy. Department of Mathematics Royal Holloway, University of London, 2009.
[25]. Menezes A. J, Van Oorchot P. C. (1998), Handbook of Applied
Cryptography, CRC Press, (1998).
[26]. Michal Rjaˇ sko (2008), “Properties of Cryptographic Hash Functions”, Comenius University in Bratislava, Faculty of Mathematics, Physics and Informatics Department of Computer Science, Advisor: RNDr. Martin Stanek, PhD. Bratislava 2008.
[27]. Paul J. McCarthy (1996), Algebraic Extensions of Fields, Blaisdell
Publishing Company.
[28]. Pascal JUNOD (2004), “Statiscal Cryptanalysis of Block Ciphers”, Thèse No 3179 (2004), Présentée à La Faculté Informatique & Communications, Institud de Systèmes de Communications.
[29]. Preneel, B.; Govaerts, R.; Vandewalle, J., “Hash functions for information authentication”, CompEuro'92. Computer Systems and Software En- gineering', Proceedings. 4-8 May 1992 Page(s):475 – 480.
[30]. Rudolf Lidl, Harald Neiderreiter (1983), Finite Fields, Addision-Wesley
Publishing Company.
[31]. Schneier B. (1996), Applied Cryptography, John Wiley Press, 1996.
[32]. Stallings W. (2000), “Networks Security Essentials: Applications and
Standards”, Prentice Hall, (2000).
[33]. Stinson D. R. (1995), Cryptography: Theory and Practice, CRC Press, 1995.
[34]. Shamir A. (1985), “Identity-based cryptorytions and signature schemes, Advanced in Cryptology” - CRYPTO'84, LNCS196, Springer_Verlag, pp.47-53, 1985
108
[35]. Shannon C. E. (1948), A mathematical theory of communication, Bell Syst
Tech J.
[36]. Todd K. Moon (2005), Error Correction Coding, Wiley-Interscience, a John
Wiley & Sons, Inc., Publication.
Joint Conference of the
[37]. Message authentication with one-way hash functions, INFOCOM’92. Eleventh Annual IEEE Computer and Communications Societies. IEEE, 4-8 May 1992 Page(s): 2055 - 2059 vol.3.
109
PHỤ LỤC A:
THÔNG SỐ CỦA MỘT SỐ HÀM BĂM
Phụ lục này trình bày các thông số của các hàm nén sử dụng trong các hàm
băm họ MD4.
Với mỗi hàm, đầu tiên là các mô tả về các thông số, ví dụ độ dài mã băm đầu
ra , độ dài đầu ra hàm nén , số lượng các thanh ghi , số bước mã hóa , độ
dài của một từ , số lượng các từ thông báo được tách từ thông báo ban đầu có
chiều dài .
Khi mô tả mở rộng thông báo, có các phép hoán vị khác nhau nếu phép
mở rộng theo kiểu hoán vị vòng, còn nếu mở rộng theo kiểu đệ quy thì sử dụng .
Khi mô tả các bước mã hóa sử dụng các công thức cho bước mã hóa, ví dụ
tính từ cùng với các bảng các phần của các bước độc lập.
Một số hàm có thay đổi nhỏ trong các thanh ghi khác với tính toán theo công
thức đa cho, sử dụng ký hiệu để mô tả giá trị thực tế của thanh ghi sau
bước , và được gọi là trạng thái.
Trong trường hợp tính toán song song hai luồng, ký hiệu là cho luồng
bên trái và là cho luồng bên phải. Các giá trị khởi tạo ký hiệu là .
110
MD4
Các thông số:
Mở rộng thông báo:
Giá trị khởi tạo:
Bước mã hóa:
Trạng thái:
Đầu ra:
111
MD5
Các thông số:
Mở rộng thông báo:
Giá trị khởi tạo:
Bước mã hóa:
Trạng thái:
Đầu ra:
112
MD4 mở rộng
Các thông số:
Mở rộng thông báo:
Giá trị khởi tạo:
Bước mã hóa:
Trạng thái:
Đầu ra:
113
RIPEMD-0
Các thông số:
Mở rộng thông báo:
Giá trị khởi tạo:
Bước mã hóa:
Trạng thái:
Đầu ra:
114
RIPEMD-128
Các thông số:
Mở rộng thông báo:
Giá trị khởi tạo:
Bước mã hóa:
Trạng thái:
Đầu ra:
115
RIPEMD-160
Các thông số:
Mở rộng thông báo:
Giá trị khởi tạo:
Bước mã hóa:
Trạng thái:
Đầu ra:
116
RIPEMD-256 Giống RIPEMD-128
Các thông số:
Giá trị khởi tạo:
Bước mã hóa:
dung tương ứng). bằng bằng bằng (và , ,
Giống RIPE-128: Sau bước 15 (và các bước 31, 47, 63 tương ứng) thay nội bằng
Đầu ra:
RIPEMD-320 Giống RIPEMD-160
Các thông số:
Giá trị khởi tạo:
Bước mã hóa:
Giống RIPE-160: Sau bước 15 (và các bước 31, 47, 63, 79 tương ứng) thay bằng bằng bằng bằng bằng (và , , , nội dung
tương ứng).
Đầu ra:
117
SHA-0 và SHA-1
Các thông số:
Mở rộng thông báo:
Giá trị khởi tạo:
Bước mã hóa:
Trạng thái:
Đầu ra:
118
SHA-256
Các thông số:
Mở rộng thông báo:
Giá trị khởi tạo:
Bước mã hóa:
Trạng thái:
Đầu ra:
119
SHA-512
Các thông số:
Mở rộng thông báo:
Giá trị khởi tạo:
Bước mã hóa:
120
Trạng thái:
Đầu ra:
SHA-224
SHA-224 giống với SHA-256
Các thông số:
Giá trị khởi tạo:
Đầu ra:
Đầu ra hàm nén giống SHA-256, nhưng đầu ra hàm băm chỉ lấy 224 bit.
121
SHA-384
SHA-384 giống với SHA-512
Các thông số:
Giá trị khởi tạo:
Đầu ra:
122
PHỤ LỤC B:
CÁC CHƯƠNG TRÌNH TÍNH TOÁN VÀ MÔ PHỎNG
1. Hàm tính hoán vị IP và IP-1 128 bit
function A=IP128(ax,flag)
% Hoan vi va hoan vi nguoc 128 bit
%
% Cu phap: A = IP128(AX,FLAG)
% AX 128 bit thong tin vao
% A 128 bit thong tin ra
% FLAG = 1 --> Hoan vi thuan
% FLAG = -1 --> Hoan vi nguoc
IP= [[122:-8:2]
[124:-8:4]
[126:-8:6]
[128:-8:8]
[121:-8:1]
[123:-8:3]
[125:-8:5]
[127:-8:7]];
IPI = [[80:-1:65]
[16:-1:1]
[96:-1:81]
[32:-1:17]
[112:-1:97]
[48:-1:33]
[128:-1:113]
[64:-1:49]];
IP = reshape(IP',1,128);
IPI = reshape(IPI,1,128);
switch flag
case 1
for ii=1:128
A(ii)=ax(IP(ii));
end
case -1
for ii=1:128
A(ii)=ax(IPI(ii));
end
otherwise
A='Khong hop le';
return;
end
% ---------- end of file ----------
123
2. Hàm tính các phần tử của cấp số nhân cyclic trên vành có 2 lớp kề
function ketquabin = CGP2LK(ax,px,s,n);
% tim cap so nhan cho vanh co 2 lop ke Cyclic
% cu phap: KQBIN = CGP2LK(ax,px,s,n);
% ax la da thuc dau, dang BIN
% px la cong boi,dang BIN
% KQBIN --> ket qua dang BIN
% s --> so phan tu
% n --> vanh da thuc X^n + 1 (n la so nguyen to)
%--------------------------------
ax(length(ax)+1:n)=0;
px(length(px)+1:n)=0;
kq=nhandathuc(ax,px,n);
%--------------------------
for jj=2:s
tg=nhandathuc(kq(jj-1,:),px,n);
kq=[kq;tg];
end
ketquabin=kq;
% ---------- end of file ------------------------
124
+ Hàm nhân hai đa thức dạng nhị phân
function kq= nhandathuc(x,y,n);
% Cu phap KQ = NHANDATHUC(X,Y,n);
% X, Y la vec to nhi phan, la he so cua da thuc.
% KQ --> ket qua dang BINVEC
% n --> vanh da thuc: X^n + 1
dx=length(x);
dy=length(y);
if dx <= n
x((dx+1):n)=0;
else
disp('Do dai vuot qua n');
kq=[];
return;
end
if dy <= n
y((dy+1):n)=0;
else
disp('Do dai vuot qua n');
kq=[];
return;
end;
somu=0;
tg=[];
for jj=1:dx
if x(jj)==1
somu=somu+1;
tg(somu,:)=shift(y,jj-1);
end
end
stg=size(tg);
if stg(1)==1
kq=tg;
else
kq=sum(tg);
kq=mod(kq,2);
end
125
+ Hàm chuyển đổi đa thức dạng số mũ sang dạng nhị phân
function kq=pol2bin(ax);
% Chuyen tu so mu da thuc ax thanh dang vecto nhi phan
%
% Cu phap: KQ= POL2BIN(ax);
% AX: la da thuc dang POL,
% n: Vanh da thuc X^n+1;
% KQ la da thuc dang BINVEC
m=max(ax);
kq=zeros(1,m+1);
for jj=1:length(ax)
vt=ax(jj);
kq(vt+1)=1;
end
126
3. Hàm tính các phần tử của cấp số nhân cyclic trên vành
function ketquabin = CGPC(ax,px,n);
% Tim cap so nhan cho vanh chan dang: X^n+1 Voi n=2^k
% cu phap: KQBIN = CGPC(ax,px,n);
% ax la da thuc dau, dang BIN
% px la cong boi,dang BIN
% KQBIN --> ket qua dang BIN
%--------------------------------
ax(length(ax)+1:n)=0;
px(length(px)+1:n)=0;
kq=ax;
%--------------------------
for jj=2:n
tg=nhandathuc(kq(jj-1,:),px,n);
kq=[kq;tg];
end
ketquabin=kq;
% ---------- end of file ------------------------
% Xay dung he mat DES tren cac cap so nhan cyclic
% He mat xay dung cho chuoi 128 bit theo so do Feistel
% Phep hoan vi va hoan vi dao lay theo tieu chuan DES
% Khoa K la nhom nhan xay dung tren vanh X^61+1,
% voi phan tu sinh la kx
% Qua trinh ma hoa va giai ma trai qua 16 buoc theo tieu chuan DES
%---------- Chuan bi du lieu -------------------------
clear;
nmsg = 1; % So chuoi 128 bit thong tin can mo phong = so bo khoa
4. Chương trình mã hóa hệ mật đề xuất
msg=[];
for ii=0:15
tg=dec2binvec(ii,4);
msg=[msg;tg];
end
msg=[msg;msg];
msg=reshape(msg',1,128);
fprintf('Ban ro dau vao: M = %s\n',bin2hex(msg));
%----------- Tinh toan khoa K-----------------------------
nK = nmsg*16; % Tong so khoa
Ki=pol2bin( [0 10 30 40 50 ]); % Phan tu sinh cua khoa
Ka=pol2bin([0 1 3]);
K = cgp2lk(Ka,Ki,nK,61); % Tap cac khoa (CGP tren Vanh X^61+1)
%&&&&&&&&&&&&&&&&& Qua trinh ma hoa &&&&&&&&&&&&&&&&&&&&&&
for ii=1:nmsg
%------------- Hoan vi khoi dau------------------------
M0 = IP128(msg,1); % Hoan vi khoi dau
L(1,:) = M0(1:64); % Nua trai L0
R(1,:) = M0(65:128); % Nua phai R0.
Fk=[];
%------- 16 buoc mat ma --------------------------------
for jj = 1:16
L(jj+1,:)=R(jj,:);
ttk = 16*(ii-1); % Thu tu bo khoa dung cho moi vong
AK = cgpc(K(ttk+jj,:),[0 1],64); % Ma tran A cua khoa thu jj
AK=AK'; % Hoan vi ma tran A
F=R(jj,:)*AK; % Nua phai sau khi nhan voi khoa
R(jj+1,:) = mod(L(jj,:)+F,2); % Nua phai sau buoc jj
end
L16 = L(17,:); % Nua trai sau buoc 16
R16 = R(17,:); % Nua phai sau buoc 16
127
%------- Hoan vi dao ------------------------
C16 = [L16 R16];
C = IP128(C16,-1); % Du lieu ra
end
% &&&&&&&&&& End of file &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
128
5. Chương trình tính toán hàm băm đề xuất
function MD=bamcgp(x,Ka,Ki)
% Thuc hien ham bam theo so do Matyas-Meyer-Oseas
% Cu phap: MD = bamcgp(msg,Ka,Ki)
% MD: Dau ra ma bam 128 bit
% msg: Ban tin ro dau vao
% Ka: Phan tu dau cua cap so nhan tao khoa dau tien
% Ki: Phan tu sinh cua cap so nhan tao khoa dau tien
%------- Tao cac khoi n bit cua dau vao x-------------
msg=x;
sox = length(msg);
while mod(sox,128)~=0
msg=[msg 0]; % Chen them bit "0" cho du chieu dai 128 bit
sox=length(msg);
end
if sox == 128
flag=0;
msg(129:256)=zeros(1,128);
else
flag=1;
end
t=length(msg)/128;
msg=reshape(msg,128,t); % Chia thanh cac khoi 128 bit
msg=msg';
%------------ Tinh toan buoc dau tien -------------------
K = cgp2lk(Ka,Ki,16,61); % Tao tap khoa dau
M = IP128(msg(1,:),1); % Hoan vi khoi dau
L(1,:) = M(1:64); % Nua trai L0
R(1,:) = M(65:128); % Nua phai R0.
%------- 16 buoc mat ma khoi --------------------------------
for jj = 1:16
L(jj+1,:)=R(jj,:);
L(jj+1,1:61)=mod(L(jj+1,1:61)+K(jj,:),2); % Nhan nua phai voi Ki
AK = cgpc(K(jj,:),[0 1],64); % Ma tran A cua khoa thu jj
AK=AK'; % Hoan vi ma tran A
F=R(jj,:)*AK; % Nua phai sau khi nhan voi khoa
R(jj+1,:) = mod(L(jj,:)+F,2); % Nua phai sau buoc jj
end
L16 = L(17,:); % Nua trai sau buoc 16
R16 = R(17,:); % Nua phai sau buoc 16
E = IP128([L16 R16],-1); % Hoan vi dao - Du lieu bam sau buoc 1
%-------- tao khoa cho buoc tiep theo ----------------
Htg = xor(msg(1,:),E); % E + msg
Ktg=Htg(1:2:120); % Lay 60 bit
Wk=mod(sum(Ktg),2); % Kiem tra tinh chan le
if Wk==1
H(1,:)=[Ktg 0]; % trong so le --> bit 61 = 0
else
H(1,:)=[Ktg 1]; % trong so chan --> bit 61 = 1
end
% ------------------- Cac buoc tiep theo -------------------
for ii=1:t-1
K=cgp2lk(Ka,H(ii,:),16,61); % Tao khoa
M = IP128(msg(ii+1,:),1); % Hoan vi khoi dau
L(1,:) = M(1:64); % Nua trai L0
129
R(1,:) = M(65:128); % Nua phai R0.
%------- 16 buoc mat ma khoi --------------------------------
for jj = 1:16
L(jj+1,:)=R(jj,:);
L(jj+1,1:61)=mod(L(jj+1,1:61)+K(jj,:),2); % Nhan nua phai voi Ki
AK = cgpc(K(jj,:),[0 1],64); % Ma tran A cua khoa thu jj
AK=AK'; % Hoan vi ma tran A
F=R(jj,:)*AK; % Nua phai sau khi nhan voi khoa
R(jj+1,:) = mod(L(jj,:)+F,2); % Nua phai sau buoc jj
end
L16 = L(17,:); % Nua trai sau buoc 16
R16 = R(17,:); % Nua phai sau buoc 16
Ei = IP128([L16 R16],-1); % Hoan vi dao - Du lieu bam sau buoc ii
%-------- tao khoa cho buoc tiep theo ----------------
Htg = xor(msg(ii+1,:),Ei); % E + msg
Ktg=Htg(1:2:120); % Lay 60 bit
Wk=mod(sum(Ktg),2); % Kiem tra tinh chan le
if Wk==1
H(ii+1,:)=[Ktg 0]; % trong so le --> bit 61 = 0
else
H(ii+1,:)=[Ktg 1]; % trong so chan --> bit 61 = 1
end
end
% ------------------- Gia tri bam cuoi cung -------------------
switch flag
case 0
MD=E;
case 1
MD=Ei;
otherwise
MD='Khong xac dinh';
130
End
% ----------- end of file ----------------
131
%---------- Chuan bi du lieu -------------------------
clear;
nmsg = 10; % So chuoi 128 bit thong tin can tinh = so bo khoa
msg=[];
for ii=0:15
tg=dec2binvec(ii,4);
msg=[msg;tg];
end
msg=[msg;msg];
msg=msg';
msg(1,:)=reshape(msg,1,128); %msg1: 0123456789ABCDEF0123456789ABCDEF
for jj=2:10
msg(jj,:) = rand(1,128);
end;
%----------- Tinh toan khoa K-----------------------------
nK = nmsg*16; % Tong so khoa
Ki=pol2bin([ 0 1 3 7 9]); % Phan tu sinh cua khoa
Ka=pol2bin([0 1 2]); % Phan tu dau cua cap so nhan K
%--------- Ma hoa ban tin dau tien ---------------
E1=descgp(msg(1,:),Ka,Ki); % Ma ra khi chua thay bit du lieu
msc=msg; % du lieu vao ban dau
disp('Ket qua khi thay doi 1 bit du lieu');
disp(' Thu tu Ban ro Ban ma K/C Hamming');
msghex=bin2hex(msg(1,:));
Cihex=bin2hex(E1);
fprintf('%5d %45s %45s %15d\n',0,msghex,Cihex,0);
6. Chương trình tính toán độ khuếch tán của hàm băm đề xuất
sohm=0; % Tinh khoang cach Hamming
% thay doi 1 bit thong tin dau vao va tinh gia tri bam
for p=0:31
msg=msc;
vt=round(4*rand(1)); % Thay doi ngau nhien 1 bit cua 1 so HEX
if vt==0
vt=1;
end
posit=p*4+vt; %Vi tri bit thay doi
msg(1,posit)=xor(msg(1,posit),[1]);
%------------------------------------------
E=descgp(msg,Ka,Ki);
hm=sum(xor(E1,E)); % Tinh so bit sai khac, khoang cach Hamming
%********************** Hien thi ket qua ***************************
msghex=bin2hex(msg);
Cihex= bin2hex(E);
fprintf('%5d %45s %45s %15d\n',p+1,msghex,Cihex,hm);
sohm=sohm+hm;
end
fprintf('Khoang cach Hamming trung binh: %6.2f\n',sohm/32);
%--------------- End of file ---------------------------------------
132