Ch¬ng tr×nh KC-01:
Nghiªn cøu khoa häc
ph¸t triÓn c«ng nghÖ th«ng tin
vµ truyÒn th«ng
§Ò tµi KC-01-01:
Nghiªn cøu mét sè vÊn ®Ò b¶o mËt vµ
an toµn th«ng tin cho c¸c m¹ng dïng
giao thøc liªn m¹ng m¸y tÝnh IP
Phô lôc: Mét sè nghiªn cøu vÒ hµm b¨m vµ
giao thøc mËt m·
Hµ NéI-2004
Môc lôc
Trang
Nghiªn cøu vÒ th¸m m· MD4, TrÇn Hång Th¸i 1
Va ch¹m vi sai cña SHA-0, Florent Chaboud vµ Antoiene Joux, Crypto’98 31
Ph©n tÝch SHA-1 trong chÕ ®é m· ho¸, Helena Handchuh, Lars R. Knudsen
vµ Matthew J. Robshaw, CT-RSA 2001
48
C¸c hµm b¨m dùa trªn m· khèi: ph¬ng ph¸p thiÕt kÕ, Bart Preneel, RenÐ
Govaerts, Joã Vandewalle, CRYPTO’93
64
Nguyªn t¾c thiÕt kÕ cho hµm b¨m, Ivan Bjerre Damgard, Eurocrypt’91 75
Hµm b¨m nhanh an toµn dùa trªn m· söa sai, Lars Knudsen vµ Bart
Preneel, Crypto’97
87
§é mËt cña hµm b¨m lÆp dùa trªn m· khèi, Walter Hohl, Xuejia Lai,
Thomas Meier, Christian Waldvogel, Crypto 93
102
Ph©n phèi vµ tho¶ thuËn kho¸, NguyÔn Quèc Toµn 115
X¸c thùc vµ trao ®æi kho¸ cã x¸c thùc, Whitfield Diffie, Paul C. Van
Oorschot vµ Michael J. Wierner, Design, Codes and Cryptography, 192
123
CËp nhËt th«ng tin vÒ hµm b¨m SHA-1 145
N
NG
GH
HI
IÊ
ÊN
N
C
C
U
U
V
V
T
TH
HÁ
ÁM
M
M
MÃ
Ã
M
MD
D4
4
Trn Hng Thái
I
I.
.
M
MÔ
Ô
T
T
T
TH
HU
U
T
T
T
TO
OÁ
ÁN
N
M
MD
D4
4
Thut toán MD4 ly mt đầu vào là mt message có độ dài bt kđầu ra là mt
“tóm lược thông báo” (message digest), còn được gi là “fingerprint”. Nó được
thiết kế khá gn và nhanh trên máy 32-bit.
1. Mô t thut toán
Gi s chúng ta có mt message vi độ dài là b-bit là đầu vào và chúng ta mun
tìm tóm lược thông báo (message digest) ca nó. đây b là mt s nguyên dương
bt k, có th bng 0, hoc ln bt k.
đây chúng ta s dng các thut ng sau: ‘word’ là biến 32 bit, byte là 8 bit. Quá
trình tính tóm lược thông báo này được thc hin qua 5 bước sau:
Bước 1: Thêm vào các bit đệm (Padding bits)
Thông đip được m rng bng vic thêm các “bit đệm” sao cho độ dài (theo bit)
ca nó đồng dư vi 448 (modulo 512). Vic này s đảm bo khi thêm 64 bit (độ
dài - được trình bày sau) na, thì độ dài thông đip là bi ca 512.
Vic đệm được thc hin như sau: mt bit ‘1’ được ni vi thông đip và sau đó là
các bit ‘0’ cho đến khi độ dài thông đip đồng dư vi 448.
Bước 2: Thêm độ dài thông đip (Length)
Độ dài thông đip trước khi m rng b được biu din bi mt s 64 bit (gm 2
word) s được thêm vào thông đip sau bước 1 (theo th t word thp trước). Lúc
này độ dài thông đip là bi ca 512 bit (16 word 32 bit). Ký hiu message kết qu
là M[0 … N-1], N là bi ca 512.
Bước 3: Khi to b đệm MD
Bn biến A, B, C, D (là các thanh ghi 32 bit) được dùng để tính “message digest”.
Chúng được khi to bng các giá tr sau dng Hexa, theo th t các byte thp
trước:
word A: 01 23 45 67
word B: 89 ab cd ef
word C: fe dc ba 98
word D: 76 54 32 10
Bước 4: X lý thông đip (message) theo tng khi 16-words
1
Trước tiên ta định nghĩa 3 hàm, mi hàm ly 3 word (32 bit) làm đầu vào và đưa
ra mt t 32 bit:
F(X,Y,Z) = XY v not(X)Z
G(X,Y,Z) = XY v XZ v YZ
H(X,Y,Z) = X xor Y xor Z
Trong đó: XY là phép ‘and’ bit ca X và Y, not(X) là phép ly bù bit ca X, X xor
Y là phép cng modulo 2 theo bit ca X và Y, X v Y là phép toán OR (hoc) bit
ca X và Y.
Thông đip được x lý theo tng khi 16 word như sau:
for i = 0 to N/16-1 do
/* Copy block i into X. */
for j = 0 to 15 do
set X[j] to M[i*16 +j]
end
/* Save A as AA, B as BB, C as CC, D as DD */
AA = A;
BB = B;
CC = C;
DD = D;
/* Round 1 */
/* Ký hiu [abcd k s] là phép toán sau:
a = (a + F(b,c,d) + X[k]) <<< s
Thc hin 16 ln như sau. */
[ABCD 0 3]; [DABC 1 7]; [CDAB 2 11]; [BCDA 3 19];
[ABCD 4 3]; [DABC 5 7]; [CDAB 6 11]; [BCDA 7 19];
[ABCD 8 3]; [DABC 9 7]; [CDAB 10 11]; [BCDA 11 19];
[ABCD 12 3]; [DABC 13 7]; [CDAB 14 11]; [BCDA 15 19];
/* Round 2 */
/* Ký hiu [abcd k s] là phép toán sau:
a = (a + G(b,c,d) + X[k] + 5A82799) <<< s */
[ABCD 0 3]; [DABC 4 5]; [CDAB 8 9]; [BCDA 12 13];
[ABCD 1 3]; [DABC 5 5]; [CDAB 9 9]; [BCDA 13 13];
[ABCD 2 3]; [DABC 6 5]; [CDAB 10 9]; [BCDA 14 13];
[ABCD 3 3]; [DABC 7 5]; [CDAB 11 9]; [BCDA 15 13];
/* Round 3 */
/* Ký hiu [abcd k s] là phép toán sau:
a = (a + H(b,c,d) + X[k] + 6ed9eba1) <<< s */
[ABCD 0 3]; [DABC 8 9]; [CDAB 4 11]; [BCDA 12 13];
[ABCD 2 3]; [DABC 10 9]; [CDAB 6 11]; [BCDA 14 13];
[ABCD 1 3]; [DABC 9 9]; [CDAB 5 11]; [BCDA 13 13];
[ABCD 3 3]; [DABC 11 9]; [CDAB 7 11]; [BCDA 15 13];
2
A = A + AA;
B = B + BB;
C = C + CC;
D = D + DD;
end; /* of loop on i */
Bước 5: Kết qu đầu ra (output)
Bn tóm lược thông đip (message digest) là ni dung các thanh ghi A, B, C, D
theo th t t byte thp ca A đến byte cao ca D.
2. Mã ngun ca MD4
Chúng tôi đã download mã ngun ca thut toán mã hoá MD4 trên Internet.
Chương trình khá nh gn, gm 3 file là global.h, md4.h (2 file header khai báo
các PROTOTYPE, hng) và md4c.c - mã ngun ca MD4. Chúng tôi đã đọc hiu
mã ngun ca MD4 và th nghim nh như sau: thc hin băm mt xâu có độ dài
nh hơn 448 bit 1000000 ln trên máy Dell 350MHz. Thi gian tính toán này là
I
II
I.
.
T
TH
HU
U
T
T
T
TO
OÁ
ÁN
N
T
TH
HÁ
ÁM
M
M
MD
D4
4
Tác gi ca thut toán thám MD4 là Hans Dobbertin vi bài “Cryptanalysis of
MD4” - năm 1997. Thut toán MD4 được Rivest đề ngh năm 1990 và 2 năm sau
là RIPEMD được thiết kế mnh hơn MD4. Năm 1995, tác gi đã tìm ra mt tn
công chng li 2 vòng ca RIPEMD. Phương pháp này được b sung và có th s
dng cho tn công đủ 3 vòng ca MD4.
Theo tác gi thì thut toán này có th tìm ra “va chm” (collision) cho MD4 ch
trong mt vài giây trên mt máy PC. Đặc bit tác gi đã đưa ra mt ví d rt c th
có tính thc hành và thuyết phc cao bng vic tìm ra va chm ca thông đip có ý
nghĩa. Kết qu chính ca bài báo này là khng định “MD4 là không phi hàm hash
không va chm”.
Thut toán này là kiu tn công tìm collision: tc là biết giá tr khi đầu IVo, tìm
các thông đip X và X’ sao cho hash(IVo, X) = hash(IVo, X’).
1. Tóm tt thut toán do Dobbertin trình bày.
1.1 Ký hiu và qui ước s dng cho thut toán
Tt c các biến và hng s được s dng đều là các s 32 bit. Các s hng được
biu din theo modulo 232. Các ký hiu ^, v, ¬ ln lượt là các phép toán
AND, OR, XOR và ly phn bù theo bit. Vi mt t W - 32 bit, W<<32 ký hiu ca
phép dch vòng trái W đi s v trí (vi 0 s 32). Và -W<<s viết tt cho -(W<<s).
Ký hiu X=(Xi), i<16 là toàn b 16 words (512 bits) và được thiết lp
như sau:
16
~~ )( <
=ii
XX
3