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Ẽ.x
PHẦN MỞ ĐẦU.1
1. MỞ ĐẦU . 1
2. TÌNH HÌNH NGHIÊN CỨU. 2
3. LÝ DO CHỌN ĐỀ TÀI. 7
4. MỤC TIÊU NGHIÊN CỨU. 8
5. ĐỐI TƯỢNG, PHẠM VI NGHIÊN CỨU . 9
6. PHƯƠNG PHÁP NGHIÊN CỨU . 9
7. Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN CỦA ĐỀ TÀI. 9
CHƯƠNG 1. TỔNG QUAN VỀ MẬT MÃ VÀ HÀM BĂM.10
1.1. GIỚI THIỆU . 10
1.2. PHƯƠNG PHÁP XÂY DỰNG CÁC HỆ MẬT CƠ BẢN. 10
1.2.1. Phương pháp xây dựng các hệ mật khóa bí mật.10
1.2.2. Phương pháp xây dựng các hệ mật khóa công khai .24
1.3. HÀM BĂM . 31
1.3.1. Mô tả hàm băm.31
1.3.2. Các hàm băm có khóa .33
1.3.3. Các hàm băm không có khóa .34
1.3.4. Một số phương pháp toàn vẹn dữ liệu và xác thực thông báo .36
1.4. CẤP SỐ NHÂN CYCLIC. 38
202 trang |
Chia sẻ: honganh20 | Ngày: 15/03/2022 | Lượt xem: 424 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Luận án Nghiên cứu xây dựng một lớp hàm băm mở rộng mới và khả năng ứng dụng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
, )H id MD MD 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à:
71
128
( ) 1
1
1
( , ) 64,12
128
H tb H i
i
d d MD MD
(2.27)
Bảng 2.10 là kết quả tính toán phân bố của hàm băm khi thay đổi khóa khởi tạo
K, 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ẻ [32]. Bản tin đầu vào
gồm 10 khối 128 bit được tạo ngẫu nhiên.
Chú ý, chiều dài của khóa tạo từ CGP là 53 bit, do đó khi mô tả khóa bằng ký
tự hexa thì có thể cần đến 14 ký tự nhưng thực tế chỉ có 13 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à:
21aK x x
Tương tự cách tính khóa như trên ta có khóa đầu tiên 1K là:
1(hex)K 123456789ABCD.0 với 1( ( ) 25)W K
Các khóa iK khác khóa đầu tiên 1K 2 bit trong một số hexa. Vị trí các bit “1”
trong các khóa iK tương ứng là số mũ của x trong đa thức sinh tạo khóa. Ví dụ:
1(hex) hex bin(12...D. ) (1000.0100....1011. )K 0 0
5 48 50 51
1 1 ...K x x x x
K1(BIN) = 1000.0100.1100.0010.1010.0110.1110.0001.1001.0101.1101.0011.1011.0
Các khóa iK khác khóa đầu tiên 1K 2 bit trong một số hexa. Vị trí các bit “1”
trong các khóa iK tương ứng là số mũ của x trong đa thức sinh tạo khóa.
Ví dụ:
1(hex) hex binK (12...D. ) (1000.0100....1011. )0 0
5 48 50 51
1 1 ...K x x x x
1 2 3 4 5 6 7 8 9 A B C D Bít 53
72
Bảng 2.10. Khoảng cách Hamming dH(MD1, MDi) giữa các cặp giá trị băm
khi thay đổi khóa
TT Khóa Giá trị băm
0 123456789ABCD.0 FFC215A088719270AFE7D1535C98BF4E 0
1 023456789ABCD.1 A0A9F69E88EF6FE00D19FE1E04CFC2B1 76
2 323456789ABCD.1 9D9CA7FA00A2AD5961554019984527C6 61
3 523456789ABCD.1 903879DD547A57CD115BF0A5A4E3217A 78
4 923456789ABCD.1 658B4B7B81B0A41CDB3A97ECBAE24949 70
5 133456789ABCD.1 72ACDC838C13030E1B7AE1EB8CAF9AE6 58
6 103456789ABCD.1 8CDC97B7EA3E03E6AF9BB9144BA1914F 65
7 163456789ABCD.1 A0975CBB501473AE143B2B5B68C42744 65
8 1A3456789ABCD.1 A6D9CE85D043C7D329BA8BE0B55699E9 66
9 122456789ABCD.1 E4727086AF7B2E34DB3F2A0AE17158BF 68
10 121456789ABCD.1 F16949BB8650EF12A2131F6B893CFCCD 60
11 127456789ABCD.1 DEDD2F574B94A8A8B9CA02D33ECE662A 63
12 12B456789ABCD.1 CCEA1145FE3F9AFDBBBEFBE04C28A299 54
13 123556789ABCD.1 563B5678E476AD4E01D5E12FD342E604 67
14 123656789ABCD.1 797E775AADEA08BB5CCAC60207540C28 69
15 123056789ABCD.1 CFC2568BA4A3E54F1FE80C5CBFC452A1 67
16 123C56789ABCD.1 BBD9F700F3BEF31408F40042E445DC3A 62
17 123446789ABCD.1 C9FE79619790ED396EAD78BE6FB6DBE7 65
18 123476789ABCD.1 84AB66A5F1138336074C3CF93A4454B2 69
19 123416789ABCD.1 C472234312843C1599E6C35A0868D589 61
20 1234D6789ABCD.1 B3DE39087C5D5AEDAFADF1F73A216754 51
21 123457789ABCD.1 46DA05181A755CDFB779C733FB59C9CD 55
22 123454789ABCD.1 9DAE3221FD706F19089932969E99884E 59
23 123452789ABCD.1 4DE9888DF46405447442A1482FCE6D7A 66
24 12345E789ABCD.1 FAFDE0BBCA1B02062E0C41EA51EAA4CA 59
iK iMD 1( , )H id MD MD
73
25 123456689ABCD.1 5647C707690A665C8116D164156436EF 63
26 123456589ABCD.1 DB844A2E5087617FAD802DE7B725F43B 72
27 123456389ABCD.1 99D83BC5E452CF8C220F3820F57056FE 67
28 123456F89ABCD.1 02691B4BAF2C19D4C2BE0A13118FA8D7 69
29 123456799ABCD.1 94C0AE07C7FD69D0A29A3712DD1E46D9 66
30 1234567A9ABCD.1 C5931124D96A37042A1747C7B2C38C07 57
31 1234567C9ABCD.1 B1230E29431CE4E5AB1FAF3156463412 65
32 123456709ABCD.1 66294D4112E28815F28A8961C090F57A 59
33 123456788ABCD.1 0A26094962B080258C1109D8BD45AEB2 67
34 12345678BABCD.1 1687BB788377B56AF3C3140EA7B8583C 62
35 12345678DABCD.1 AA620AADE21389501DB22F4281F0D87A 60
36 123456781ABCD.1 C2ED02CC3FEF80EACB2D9DDD0E9FF6A9 64
37 123456789BBCD.1 88B925269AD39CA9B8AC3D1625A1C381 66
38 1234567898BCD.1 CABC30D0FEACB816F470754EACB77855 69
39 123456789EBCD.1 E3CBAEE9C7BA6683BB6F6F46A107494D 69
40 1234567892BCD.1 C23FFF533ABD9CAF11CE8BD3B7DE4A46 71
41 123456789AACD.1 49225C04B405E2C2BED98B6F8F8BDCFE 59
42 123456789A9CD.1 7B0E7D93EC5D639AAAF2AC7C73139D8F 59
43 123456789AFCD.1 3F15D9AE032B43BF01218A1B79296C65 65
44 123456789A3CD.1 44B6283EEDACE7A3D39153A18700E9A8 75
45 123456789ABDD.1 66390EDB9633D9DD84EABE37DA6D3F80 67
46 123456789ABED.1 B76FEF9E0599154730853DFEB268F128 72
47 123456789AB8D.1 2E20F17397ECD59C88DC48F4EBA669EC 73
48 123456789AB4D.1 E736E98379F0DF6113E44E6151DA5426 59
49 123456789ABCC.1 2B5BC05B31AAD3467EAC83A06C820722 67
50 123456789ABCF.1 03F5B238816A4C288E6A8D7617902635 62
51 123456789ABC9.1 31C16ED3723753980EDF50036D49EBFD 59
52 123456789ABC5.1 3241034DEE9B6DF8A646133F3EB58FC1 62
74
Khoảng cách Hamming trung bình:
52
( ) 0
1
1
( , ) 64,40
52
H tb H i
i
d d MD MD
(2.28)
Nhận xét: Như vậy bằng việc sử dụng cấu trúc nhóm nhân và cấp số nhân cyclic
trên vành đa thức để tạo khóa cho mật mã khối, ta có thể xây dựng một hàm băm
MDC-2 với khối mật mã dựa trên cơ sở mạng hoán vị Feistel với một số ưu điểm sau:
- Hàm băm có độ khuếch tán rất tốt, thể hiện ở các khoảng cách Hamming đã
tính được theo các biểu thức (2.27) và (2.28).
- Số lượng khóa tìm được rất nhiều ( 522 1kN ) theo công thức tính toán [4]
đáp ứng yêu cầu thực tế (vì khóa có độ dài 53 bít).
- Việc tính toán khá đơn giản, các khóa được tạo từ các cấp số nhân cyclic và
có thể thực hiện được dễ dàng khi thiết kế và xây dựng mạch phần cứng (do ở đây,
việc mã hóa có thể được thực hiện được chỉ với thuật toán nhân và bình phương đa
thức).
2.5. KẾT LUẬN CHƯƠNG II
Trong chương này nghiên cứu sinh đề xuất một số hệ mật và hàm băm mới.
Với hàm băm xây dựng dựa trên hệ mật theo sơ đồ Lai-Massey thì độ khuếch tán của
hàm băm tạo ra đạt khoảng trên dưới 32 bít (Khi độ dài mã băm được tạo ra là 64 bít).
Với hệ mật lai ghép để xây dựng hàm băm 64 bít, trong đó hàm mã hóa sử
dụng phép mã hóa của hệ mật Pohlig-Hellman và sơ đồ mã hóa theo mạng Feistel cân
bằng thì độ khuếch tán đạt được cũng xấp xỉ 32 bít.
Và cuối cùng là hàm băm dạng MDC-2 (128 bít) được xây dựng với khối mật
mã dựa trên cấp số nhân cyclic và lưu đồ thuật toán Feistel có sửa đổi với một số ưu
điểm: Số khóa nhiều; mạch điện phần cứng đơn giản, đễ dàng tính toán và thiết kế;
hàm băm cũng có độ khuếch tán rất tốt, thể hiện ở các khoảng cách Hamming đã tính
được xấp xỉ 64 bít (tức là cũng khoảng một nửa chiều dài mã băm).
75
Các kết quả nghiên cứu này được trình bày ở các bài báo và bài hội thảo số
[2], [3], [5] trong Danh mục các công trình công bố của tác giả.
Với các kết quả bước đầu này, nghiên cứu sinh tiếp tục đề xuất xây dựng các
hàm băm mở rộng mới ở chương sau.
76
CHƯƠNG 3. XÂY DỰNG MỘT LỚP CÁC HÀM BĂM
MỞ RỘNG MỚI
3.1. GIỚI THIỆU
Ở chương II, NCS đã xây dựng các hệ mật và hàm băm mới có độ dài nhỏ (64
bít đến 128 bít), các kết quả này nhằm mục đích khảo sát các thuật toán và lưu đồ
trước khi xây dựng các hàm băm có độ dài lớn hơn.
Kết quả mô phỏng ở chương II đều cho thấy các hàm băm mới này đều có được
các đặc tính ưu việt: Độ khuếch tán tốt, số lượng khóa tạo ra nhiều, mạch điện phần
cứng đơn giản dễ thiết kế và xây dựng, ...
Trên cơ sở việc khảo sát đó, trong chương III này, nghiên cứu sinh đề xuất xây
dựng một số hàm băm mở rộng mới:
- Xây dựng hàm băm mở rộng mới MDC-3 với độ dài mã băm tạo ra là 384 bít
(Dựa trên hệ mật mã khối với 128 bít vào và 128 bít ra. Sơ đồ hàm băm gồm 3 nhánh,
mỗi nhánh có một hàm mã hóa, dữ liệu đầu vào và đầu ra ở mỗi nhánh đều có độ dài
là 128 bít).
- Xây dựng hàm băm mở rộng mới dạng MDC-4 (Không giống như hàm băm
kép MDC-4 thông thường chỉ là cách lặp lại 2 lần của hàm băm MDC-2 và chỉ có độ
dài mã băm 128 bít). Ở đây hàm băm MDC-4 được xây dựng với sơ đồ gồm 4 nhánh,
mỗi nhánh 128 bít, mã băm cuối cùng được tạo ra là cách kết hợp móc xích của các
nửa mã băm ở các nhánh theo từng đôi một để tạo ra sự phụ thuộc lẫn nhau. Hàm
băm mở rộng này có độ dài 512 bít, lớn hơn rất nhiều so với các hàm băm kép truyền
thống trước đây (thường chỉ có độ dài 128 bít).
- Xây dựng hàm băm mở rộng mới MDC 512 bít: Với mục đích nghiên cứu và
phát triển các hàm băm, ở đây nghiên cứu sinh đề xuất thêm một sơ đồ hàm băm mở
rộng thực hiện theo sơ đồ Miyaguchi - Preneel [4]. Sơ đồ mã hóa thực hiện theo mạng
77
Feistel bốn nhánh không cân bằng, hàm mã hóa và các khóa con của các vòng mã hóa
dựa trên các cấp số nhân cyclic của vành đa thức chẵn
2
[ ]/ 1nx x với
62 64.n
Các hàm băm này sử dụng các lưu đồ mã hóa khác nhau (Feistel; Lai-Massey;
Lai-Massey và Feistel kết hợp). Mục đích chỉ khảo sát tính khuếch tán của hàm băm
(sử dụng lưu đồ nào cũng được).
3.2. XÂY DỰNG HÀM BĂM MỞ RỘNG MỚI MDC-3
Từ hàm băm dạng MDC-2 ở chương II, ở đây, nghiên cứu sinh đề xuất một
phương pháp xây dựng hàm băm mới có độ dài đầu ra là 384 bit dựa trên các cấp số
nhân cyclic của vành đa thức, sơ đồ như ở hình 3.1.
Hình 3.1. Sơ đồ hàm băm MDC-3 đề xuất
xi
g E
H1i-1
H1i
A B
A D
Out 1
g E
H2i
A B
A D
Out 2
g E
H3i
A B
A D
Out 3
H2i-1 H3i-1
Hi
78
Hình 3.2. Sơ đồ khối mật mã E
Dữ liệu bản rõ (128 bít)
Dữ liệu mã hóa (128 bít)
L0(64) R0(64)
L1(64) R1(64)
K1
f
L16(64) R16(64)
L15(64) R15(64)
f
IP
IP-1
Hoán vị
ban đầu
Hoán vị
đảo
K16
79
Bảng 3.1. Bảng hoán vị ban đầu (IP)
122 114 106 98 90 82 74 66 58 50 42 34 26 18 10 2
124 116 108 100 92 84 76 68 60 52 44 36 28 20 12 4
126 118 110 102 94 86 78 70 62 54 46 38 30 22 14 6
128 120 112 104 96 88 80 72 64 56 48 40 32 24 16 8
121 113 105 97 89 81 73 65 57 49 41 33 25 17 9 1
123 115 107 99 91 83 75 67 59 51 43 35 27 19 11 3
125 117 109 101 93 85 77 69 61 53 45 37 29 21 13 5
127 119 111 103 95 87 79 71 63 55 47 39 31 23 15 7
Khối E sẽ mã hóa cho chuỗi bit có độ dài 128. Trong sơ đồ hình 3.2 các hoán vị
IP và hoán vị đảo 1IP được xây dựng và phát triển từ các bảng IP và
1IP của hệ
mật DES, cho trong bảng 3.1 và bảng 3.2.
Khối mật mã E trong sơ đồ này được xây dựng theo dạng mô hình mạng hoán
vị thay thế Feistel với một số thay đổi như trong hình 3.2.
Tương tự như hàm băm MDC-2 ở chương II, hàm mã hóa f được xây dựng trên
cơ sở hệ mật sử dụng các CGP trên vành đa thức 2[ ]/ 1
nx x với
6 642n
Trong sơ đồ ở hình 3.1, các khối bít đầu ra ở mỗi nhánh (128 bít) được tách ra
hai nửa (mỗi nửa 64 bít để) ghép móc xích với nhau với mong muốn đầu ra sẽ thay
đổi một nửa chiều dài mã băm. Kết quả cụ thể sẽ được khảo sát bằng việc mô phỏng
dưới đây.
Các khóa Ki là các phần tử trong một cấp số nhân xây dựng trên vành đa thức
có hai lớp kề cyclic và được chọn như sau [7]:
61
0 mod 1;( 1...16)
i
i aK K K x i (3.1)
80
Bảng 3.2. Bảng hoán vị đảo (IP-1)
80 16 96 32 112 48 128 64
79 15 95 31 111 47 127 63
78 14 94 30 110 46 126 62
77 13 93 29 109 45 125 61
76 12 92 28 108 44 124 60
75 11 91 27 107 43 123 59
74 10 90 26 106 42 122 58
73 9 89 25 105 41 121 57
72 8 88 24 104 40 120 56
71 7 87 23 103 39 119 55
70 6 86 22 102 38 118 54
69 5 85 21 101 37 117 53
68 4 84 20 100 36 116 52
67 3 83 19 99 35 115 51
66 2 82 18 98 34 114 50
65 1 81 17 97 33 113 49
với Ka là một đa thức có trọng số lẻ tùy ý sao cho: deg 61aK ; 0K là một phần
tử nguyên thủy của nhóm nhân cyclic có cấp bằng 602 1 và cũng là một đa thức có
trọng số lẻ [23].
Giả sử ta chọn khóa 30 1K x x
Phần tử đầu là 21aK x x .
Phần tử đầu của cấp số nhân và cũng là khóa đầu tiên tính được như sau:
4 5
1 0 1 (045)aK K K x x (3.2)
(Ghi chú: (045) là dạng biểu diễn số mũ của đa thức).
Sơ đồ khối bộ mã hóa f với khóa
1
K
như hình 3.3.
81
Hình 3.3. Sơ đồ khối mã hóa f với khóa 4 5
1 1K x x
Một khâu mã hóa được thực hiện theo quy tắc:
1
1 1( , )
i i i
i i i i
L R K
R L f R K
(3.3)
Khối g trong sơ đồ hình 3.1 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ã E trong sơ đồ sử dụng các khóa có độ dài
61 bit. Trong 61 bit khóa ở bước thứ i do khối g tạo ra thì 60 bit đầu tiên sẽ được trích
chọn từ 128 bit của 1iH 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 1iH (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 8 giá trị băm khi thay đổi duy nhất
một bit dữ liệu bản tin rõ so với bản tin ban đầu [31], để thuận tiện cho việc quan sát
ở đây chúng ta chỉ thay đổi 1 bit trong khối bản tin đầu tiên (Cụ thể là thay đổi lần
lượt 8 bit đầu tiên).
Mỗi bản tin bao gồm 10 khối bản tin, mỗi khối có độ dài 384 bit. Các hàm
băm sử dụng cùng một bộ khóa IVK khởi tạo như sau:
Chọn phần tử sinh của khóa khởi tạo cho các hàm băm là đa thức sau:
19 27 45 541iK x x x x (3.4)
Vào
Ra
(63) (4) (3) (2) (1) (0) ...................
64 bít
64 bít
(5)
82
Phần tử đầu là: 21aK x x
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à:
18 19 20 27
1
28 29 45 46
47 54 55 56
aiIVK K K K x x x x
x x x x
x x x x
(3.5)
Bản tin rõ đầu tiên được xây dựng như sau:
Khối bản tin đầu tiên gồm 96 ký tự dạng hexa (tương ứng 384 bit vì mỗi ký
gồm 4 bit) được chọn là:
M0=0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789
ABCDEF0123456789ABCDEF0123456789ABCDEF
Các khối bản tin tiếp theo (từ 2 đến 10) được tạo một cách ngẫu nhiên [31].
Bảng 3.3. Khoảng cách Hamming dH(MD0, MDi) khi các bản tin dữ liệu
khác bản tin ban đầu 1 bit
TT Bản rõ iM Giá trị băm iMD 0( , )iHd MD MD
0
0123456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
7ECE10DB17D1D602020BAEDDCB5F7156
AEB620E7E2D66FE846E64F5CBBA1164D
402B9B64C1924FC6EC3D581FA0A02CAB
0
1
1123456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
6A015AA71AC4DBD8E89319958FF7F5C8
EF1D2479AF24B358F77B1B9E699770DD
9D5AE5F266254C5A8B5721488554C9EC
190
2
2123456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
6513440305C13EDCEDFF906359467E3B
2091676950CA2A41F89FD5CCB73A5C04
77F4C239EEAB4524A72BF7E98E01C36C
202
3
4123456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
60137994C8749F533EB118F636E84E5E
BC640D132F52B5AB759D9FBC92E21259
57B9726AA009A95EF4AD4E9B7BAE71E1
186
83
4
8123456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
08B805C4A9CE3FAAFDBBA60FC0246050
163785DF6194774F2C710EE2D5AFF64E
04CAE51DA40A6AE0298AF00C90791304
186
5
0023456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
C2252DDE50F4B32D71987C4D34A0FCDC
96744860A259007A8F986276BA2A4501
C015A2663C3F09C462681ED18C3380B2
186
6
0323456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
090C76EBE74B45FCC82C9A28246DF6DA
E81DF39FCA9F21C0282035B158E605C1
C5301F9EE97D5EE004FA4C975FC28073
192
7
0523456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
1D506129653F7F851886702343CA6BAF
3966DB41633D3F7B3E8C7A06BF5864F0
C9285E90DEA037739E0E0A2E6E1D579F
202
8
0923456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
0123456789ABCDEF0123456789ABCDEF
FA583602F0CDF37B6E52D04FF5EDA698
653B5A4485F55AC2A5141887F64F7363
E7839362E8DD08B4E83A43A33B1CD90E
200
(Ghi chú: Trong bảng 3.3 và bảng 3.4, các ký tự hexa được in đậm chứa các bit
thay đổi).
Tiến hành thay đổi lần lượt từng bit từ bit 1 đến bit 384 của khối bản tin đầu
tiên 0M , tính khoảng cách Hamming 0( , )iHd MD MD 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:
384
0( ) 1
192,26
1
( , )
384
iHH tb i
d d MD MD
Ta thấy khoảng cách Hamming trung bình đạt xấp xỉ một nửa (192 bit) độ
dài hàm băm.
Bảng 3.4 là kết quả tính toán phân bố của 8 giá trị băm khi thay đổi khóa khởi
tạo
1
K , 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 384 bit (MD0 đến MD9) được tạo ngẫu nhiên [31].
84
Để cho tiện minh họa ta chọn phần tử đầu của cấp số nhân tạo khóa là:
Ka = 1
Phần tử sinh tạo khoá cũng là khoá đầu tiên 1K là:
1( )
123456789ABCDEF.1
hex
K
Ta có trọng số của khóa 1K : 1W( ) 33K đảm bảo là một số lẻ.
Ghi chú:
- Do chiều dài của khóa là 61 bit, nên khi mô tả khóa bằng 16 ký tự hexa thì
thực tế chỉ có 15 ký tự đầu là dạng hexa, còn ký tự cuối cùng chỉ gồm 1 bit nên nó
nhận giá trị “1” hoặc “0”.
- Vị trí các bit “1” trong các khóa
1
K tương ứng là số mũ của x trong đa thức sinh
tạo khóa:
1 (123... .1) (1000.0100.....1111.1)hex binK F
5 56 57 58 601 ...x x x x x
Tiến hành thay đổi lần lượt từng bit từ bit 1 đến bit 60 của khóa 1K , bit 61 của
khóa dùng để kiểm tra chẵn lẻ, sau đó 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 như sau:
60
0( ) 1
193,43
1
( , )
60
iHH tb i
d d MD MD
Bảng 3.4. Khoảng cách Hamming dH(MD0, MDi) của 8 mã băm
với mã băm ban đầu khi các khóa khác khóa 1K 2 bit.
TT Khóa Ki Giá trị băm MDi 0( , )H id MD MD
0 123456789ABCDEF1
102DFDDAF8977EBA12BC607A6486DEEAE7E6630BC8D8CD7A
9EC9EDFE90898CECE6B2ECB21D6A0B3CABE2D3E4BC639289
0
1 023456789ABCDEF0
20CAB1621589205B111C4B02F210C81AADEF4D74C8301A78
815E2CF878ABA440C92F4EDBFF6CD12FDF1EF332740F2783
176
2 323456789ABCDEF0
A2395333805933D04DEBC207E276A3E136AA351A76A1ED48
1669420D2BE16AD929CB59121A3FEF3126D41238C34AA888
194
3 523456789ABCDEF0 6DBF778AD492EDBC21B9DE2B77D9DA8C6EAF90FC7960B177 184
85
D572A93A8BE4EAAD438EE1C9502D7694489F0F88EEE23AA5
4 923456789ABCDEF0
BE4625E74277F79725E64CE043C29D768A76EA2E15339D75
5991CE630671427D1D26903590F45B67A4D6AEA18C94AA0E
194
5 133456789ABCDEF0
ED0567AD1F80DAC26CDBBBA8D8319DF611602A2F3527BD29
CB94CC8897EEE4B205ECD5B8AD57A2F3739DCBF1859167E7
212
6 103456789ABCDEF0
79EBDE78580DA8D2AF3043136B5519C19618C40FA383AF10
54AE3364958586354C06AC251C79578DCD2BD029B4632AEC
176
7 163456789ABCDEF0
4EB307D302DFBC7192BE0C1F9E27B2CA3A7B881C52420A67
9F46423A66BFEF9ECAA0AFC79967BB118064E05971AE6822
192
8 1A3456789ABCDEF0
CD8ED0204F01D809D5B9FE8D9D2B77F30D44E57715A1272D
23D9B48E75C402A9D0F07ABE5D7C9424DE92A764A2FB9A2F
291
Bảng 3.5 là liệt kê trọng số (chiều dài) của các khóa trong các bước băm, thực
hiện với 3 lần thay đổi khóa đầu tiên. Chú ý, do bản tin có 10 khối nên sẽ có 10 khóa
tương ứng với 10 bước băm, tuy nhiên khóa đầu tiên đã được chọn trước. Từ bảng
3.5 ta thấy tất cả các khóa ở các bước băm đều có trọng số lẻ, đảm bảo điều kiện để
tạo khóa.
Bảng 3.5. Trọng số của các khóa tại các bước băm
Khóa khởi đầu Ki 123456789ABCDEF1 023456789ABCDEF0 323456789ABCDEF0
TT
Trọng số của
khóa tại các
bước băm
Khối
mã hóa
1
( H )
Khối
mã hóa
2
( H )
Khối
mã hóa
3
( H )
Khối
mã hóa
1
( H )
Khối
mã hóa
2
( H )
Khối
mã hóa
3
( H )
Khối
mã hóa
1
( H )
Khối
mã hóa
2
( H )
Khối
mã hóa
3
( H )
1 1( )W K 31 31 31 29 29 29 29 29 29
2 2( )W K 29 25 31 31 35 31 25 33 33
3 3( )W K 35 35 31 33 35 29 37 29 31
4 4( )W K 27 29 23 31 29 29 29 33 29
5 5( )W K 25 27 27 31 29 31 33 27 27
86
6 6( )W K 31 29 29 31 31 25 33 29 35
7 7( )W K 27 29 25 29 31 33 31 27 37
8 8( )W K 33 37 31 29 33 37 35 35 31
9 9( )W K 27 33 31 25 27 29 29 31 23
10 10( )W K 29 31 29 27 29 27 29 37 31
Như vậy với mục đích tăng độ dài mã băm nhằm hạn chế phép tấn công ngày
sinh nhật, NCS đã đưa ra được một lược đồ hàm băm mới (MDC-3) với độ dài mã
băm 384 bit. Hàm mật mã sử dụng trong lược đồ xây dựng theo các cấp số nhân cyclic
trên vành đa thức, với các ưu điểm như: Số lượng khóa tạo được rất nhiều (được tính
toán theo [4]), mạch điện phần cứng đơn giản (vì chỉ gồm các thanh ghi dịch và bộ
cộng module 2). Các kết quả mô phỏng đánh giá hàm băm đề xuất cho thấy độ khuếch
tán rất tốt, đạt xấp xỉ một nửa chiều dài mã băm khi ta thay đổi dữ liệu vào hoặc thay
đổi khóa (khoảng cách mã Hamming trung bình đạt xấp xỉ 192 bít). Tuy nhiên, để có
đánh giá toàn diện hơn cần có thêm các nghiên cứu khác như khả năng xung đột
3.3. HÀM BĂM DỰA TRÊN HỆ MẬT MÃ KHỐI KẾT HỢP SƠ ĐỒ LAI-MASSEY
VỚI FEISTEL
Các hàm băm phổ biển hiện nay đều là các hàm băm thuộc họ MD như HAVAL,
MD4, MD5, PANAMA, RIPEMD, SHA, VEST, [35, 37, 51] Trong đó nổi bật là
MD5 và SHA-1, hai hàm băm này có số vòng mã hóa khá nhiều (64 vòng đối với
MD5 và 80 vòng đối với SHA-1), các hàm mật mã thường trải qua nhiều khâu, do đó
phải có yêu cầu nhất định về tài nguyên phần cứng cũng như tốc độ xử lý.
Với mục đích xây dựng một hệ mật đơn giản nhưng vẫn đảm bảo một số yêu
cầu như: độ khuếch tán tốt, dễ dàng mã hóa và giải mã [15, 16, 25], nghiên cứu sinh
đề xuất một hệ mật mã khối kết hợp sơ đồ Lai - Massey với sơ đồ Feistel, và sau đó
sử dụng hệ mật này vào xây dựng hàm băm.
87
3.3.1. Hệ mật mã khối kết hợp sơ đồ LAI-MASSEY và FEISTEL
Như ta đã biết sơ đồ mã hóa Feistel cân bằng có ưu điểm: (1) Quá trình mã hóa
và giải mã sử dụng chung một sơ đồ, chỉ khác nhau ở thứ tự khóa con, điều này sẽ
tiết kiệm được tài nguyên khi thực hiện thuật toán trên phần cứng, (2) hàm mã hóa f
có thể chọn với độ khó bất kỳ, vì không phải tìm hàm nghịch đảo. Tuy nhiên nó lại
có nhược điểm: vì mỗi vòng mã chỉ thực hiện biến đổi một nửa khối dữ liệu, nên cần
số vòng mã hóa lớn để đảm bảo độ khuếch tán của hệ mật, điều này làm giảm đáng
kể tốc độ mã hóa. Ngoài ra các hệ mật xây dựng trên cơ sở mạng Feistel tồn tại lớp
khóa tương đương, nên làm không gian khóa giảm đi một nửa.
Trong khi đó với sơ đồ Lai-Massey, mỗi vòng mã hóa được thực hiện trên cả
hai nửa dữ liệu làm tốc độ khuếch tán nhanh, và cũng không phải tính hàm ngược của
hàm mã hóa f.
Trên cơ sở các ưu điểm của cả hai sơ đồ này, nghiên cứu sinh đề xuất một hệ
mật xây dựng theo sơ đồ kết hợp, trong đó mười sáu vòng mã hóa được đan xen luân
phiên giữa sơ đồ Lai-Massey và sơ đồ Feistel như hình 3.4.
Các vòng mã hóa lẻ được thực hiện theo sơ đồ Lai-Massey và có thuật toán như
sau [31]:
1 1 1
1 1 1
)
)
( ,
( ,
i ii i i
i ii i i
L L f L R k
R R f L R k
(3.6)
Và các vòng mã hóa chẵn thực hiện theo sơ đồ Feistel với thuật toán như sau
[31]:
1
1 1( , )
i i
i ii i
L R
R L f R k
(3.7)
88
Hình 3.4. Sơ đồ mã hóa của hệ mật
Các hàm mã hóa f trong sơ đồ sử dụng các CGP trên vành đa thức 2[ ]/ 1
nx x
với 2sn đây là vành đặc biệt không được xem xét đến trong lý thuyết mã sửa sai
[8], tuy nhiên ta có thể áp dụng các vành đa thức này trong mật mã, với hệ mật đề
xuất chọn 62 64n và như thế f sẽ hoạt động với các khối 64 bit và là các CGP có
dạng sau:
89
( ). ; 0,63iA a x x i (3.8)
thực chất đây là một lớp biến đổi đặc biệt được đặc trưng bởi ma trận luân hoàn
như sau [8]:
0
0 1 63
1
63 0 62
63
1 2 0 64 64
( ).
( ).
A ; (2)
( ).
i
a x x a a a
a a aa x x
a GF
a a aa x x
(3.9)
Ở đây, các hàng của ma trận A tương ứng với một đa thức. Các phần tử
i
a trong
một hàng của A là các hệ số của ix trong đa thức tương ứng. Ví dụ ở hàng 1 của A
là đa thức 0 7 35 60( ). 1a x x x x x x thì các hệ số
i
a trong hàng này sẽ là: 1ia với
0,1,7,35,60i và 0ia với các i còn lại, tương tự như thế với tất cả các hàng của A.
Nếu ta chọn a(x) thuộc nhóm nhân G và có trọng số lẻ thì ma trận A sẽ tồn tại
ma trận nghịch đảo 1A [7, 8]. Nếu sử dụng ma trận A để mã hóa thì ta hoàn toàn có
thể giải mã được bằng ma trận nghịch đảo 1A và ma trận nghịch đảo này được xác
định như sau:
1 1n A A (3.10)
Điều này là do A có cấp n tức là: n A I hay 1n AA I , với I là ma trận đơn
vị.
Sơ đồ mạch mã hóa với CGP có số hạng đầu là đa thức
7 35 60( ) 1a x x x x x và công bội x như trong hình 3.5.
Các khóa con ki trong sơ đồ hình 3.4 cũng được tạo từ các CGP nhưng trên các
vành đa thức có hai lớp kề cyclic [23]. Thực chất các khóa ki này đóng vai trò là các
đa thức đầu ( )a x của các ma trận mã hóa A, do đó các khóa ki phải có trọng số lẻ [8].
Các vành đa thức có hai lớp kề cyclic được phân tích duy nhất thành tích của
hai đa thức bất khả quy như sau [29]:
1
0
1 (1 )
n
n i
i
x x x
(3.11)
90
Sở dĩ chọn cách tạo khóa trên vành đa thức có hai lớp kề cyclic là vì các đa thức
trên vành đa thức này có cấp cực đại được xác định là [29]: 1max ( ) 2 1
Các file đính kèm theo tài liệu này:
- luan_an_nghien_cuu_xay_dung_mot_lop_ham_bam_mo_rong_moi_va_k.pdf