Chủ đề 5: Chủ đề 5: Hàm băm mật mã Hàm băm mật mã Hash & MAC Hash & MAC
Nội dung Nội dung
ĐĐịịnhnh nghnghĩĩaa hhààmm bămbăm mmậậtt mãmã CCấấuu trtrúúcc ccủủaa hhààmm bămbăm mmậậtt mãmã CCáácc ttíínhnh chchấấtt ccủủaa hhààmm bămbăm mmậậtt mãmã PhânPhân loloạạii hhààmm bămbăm mmậậtt mãmã MMộộtt ssốố kikiếếnn trtrúúcc hhààmm bămbăm phphổổ bibiếếnn
HHààmm bămbăm MD5MD5 CCáácc hhààmm bămbăm SHASHA HMAC MAC MAC vvàà HMAC
Định nghĩa Định nghĩa
(message thông điđiệệpp rrúútt ggọọnn (message (hash value), đđạạii didiệệnn chocho
nay: 1990 đđếếnn nay:
chuyểểnn đđổổii mmộộtt HHààmm bămbăm mmậậtt mãmã llàà hhààmm totoáánn hhọọcc chuy thông điđiệệpp ccóó đđộộ ddààii bbấấtt kkỳỳ ththàànhnh mmộộtt dãydãy bit bit ccóó đđộộ thông ddààii ccốố đđịịnhnh ( ( tutuỳỳ thuthuộộcc vvààoo thuthuậậtt totoáánn bămbăm)) DãyDãy bit bit nnààyy đưđượợcc ggọọii llàà thông digest) hay gigiáá trtrịị bămbăm (hash value), digest) hay thông điđiệệpp ban ban đđầầuu thông HHààmm bămbăm llàà nnềềnn ttảảngng chocho nhinhiềềuu ứứngng ddụụngng mãmã hhóóaa, , chchữữ kýký điđiệệnn ttửử.. CCáácc thuthuậậtt totoáánn phphổổ bibiếếnn ttừừ ththậậpp niênniên 1990 MD5 MD5 vvàà SHASHA--11
Cấu trúc của hàm băm Cấu trúc của hàm băm
thông điđiệệpp MM ccóó đđộộ ddààii bbấấtt kkỳỳ. . TTùùyy
sung mmộộtt ssốố thông điđiệệpp ccóó đđộộ thông điđiệệpp nnààyy đđểể nhnhậậnn đưđượợcc thông
thông điđiệệpp ththàànhnh ttừừngng khkhốốii ccóó kkííchch thưthướớcc
Cho Cho trưtrướớcc mmộộtt thông theotheo thuthuậậtt totoáánn đưđượợcc ssửử ddụụngng, , ccóó ththểể bbổổ sung bit bit vvààoo thông ddààii llàà bbộộii ssốố ccủủaa mmộộtt hhằằngng ssốố chocho trưtrướớcc.. ChiaChia nhnhỏỏ thông bbằằngng nhaunhau: : MM11, M, M22, , ……MMss GGọọii HH llàà trtrạạngng ththááii ccóó kkííchch thưthướớcc nn bit, bit, ff llàà ““hhààmm nnéénn”” ththựựcc hihiệệnn thaothao ttáácc trtrộộnn khkhốốii ddữữ liliệệuu vvớớii trtrạạngng ththááii hihiệệnn hhàànhnh
vector khkhởởii ttạạoo nnààoo đđóó
i = 1,2,3, ……, s, s KhKhởởii ggáánn HH00 bbằằngng mmộộtt vector HHi i = f (H= f (Hii--11, M, Mii)) vvớớii i = 1,2,3,
thông điđiệệpp rrúútt ggọọnn ccủủaa M M ban ban đđầầuu HHss chchíínhnh llàà thông
Ý tưởng chính của hàm băm mật mã Ý tưởng chính của hàm băm mật mã
tin (lossy thông tin ( compression lossy compression
(Collision): HH((xx)=)=HH((xx’’) ) vvớớii xx≠≠xx’’
xx11
Thông điđiệệpp Thông
xx22
xx33
yy11 Thông điđiệệpp Thông rrúútt ggọọnn
yy22
ChuChuỗỗii bit bit ccóó đđộộ ddààii bbấấtt kkỳỳ!!
ChuChuỗỗii bit bit ccóó đđộộ ddààii ccốố đđịịnhnh
H H llàà hhààmm nnéénn mmấấtt thông function) function) HiHiệệnn tưtượợngng đđụụngng đđộộ (Collision): nhiên”” KKếếtt ququảả ccủủaa viviệệcc bămbăm ““nhnhììnn ccóó vvẻẻ ngngẫẫuu nhiên
Hàm băm mật mã H Hàm băm mật mã H
HH ccóó ththểể áápp ddụụngng trêntrên ddữữ liliệệuu ccóó kkííchch thưthướớcc bbấấtt kkỳỳ KKếếtt ququảả ccủủaa HH llàà mmộộtt chuchuỗỗii nn--bit (bit (nn ccốố đđịịnhnh)) DDễễ ddààngng ttíínhnh gigiáá trtrịị HH((xx) ) vvớớii xx bbấấtt kkỳỳ HH llàà hhààmm mmộộtt chichiềềuu HH an an totoàànn đđốốii vvớớii hihiệệnn tưtượợngng ““đđụụngng đđộộ””
Tính toàn vẹn và tính bí mật Tính toàn vẹn và tính bí mật
công không không ththểể (Integrity): ngưngườờii ttấấnn công
thông điđiệệpp dung thông
không gigiúúpp
thông tintin
công ccóó ththểể ssửửaa đđổổii nnộộii dung dung thông
không ccầầnn bibiếếtt nnộộii dung thông điđiệệpp dung ththậậtt ssựự
thông điđiệệpp
TTíínhnh totoàànn vvẹẹnn (Integrity): can thithiệệpp đđểể ssửửaa nnộộii dung can MãMã hhóóaa chchỉỉ nhnhằằmm đđảảmm bbảảoo ttíínhnh bbíí mmậậtt, , không đđảảmm bbảảoo ttíínhnh totoàànn vvẹẹnn thông (cid:206)(cid:206) NgưNgườờii ttấấnn công đãđã đưđượợcc mãmã hhóóaa mmàà không ccủủaa thông VVíí ddụụ: :
không ccầầnn bibiếếtt nnộộii dung
Trong đđấấuu gigiáá trtrựựcc tuytuyếếnn, , ccóó ththểể thaythay đđổổii gigiáá đđặặtt Trong dung ththậậtt ssựự ccủủaa ccủủaa đđốốii ththủủ mmàà không gigiáá đđặặtt
Tính “một chiều” Tính “một chiều”
phương phpháápp ttấấnn công
công chocho phphéépp tương ứứngng vvớớii mmộộtt gigiáá trtrịị bămbăm chocho
công nhnhằằmm ttạạoo rara mmộộtt thông
không còncòn an an totoàànn nnữữaa.. thông điđiệệpp khkháácc vvớớii nhưng ccóó ccùùngng gigiáá trtrịị bămbăm ggọọii llàà
công ““titiềềnn ảảnhnh ththứứ haihai”” ((““second pre image second pre--image
HHààmm bămbăm đưđượợcc xemxem llàà hhààmm mmộộtt chichiềềuu khikhi chocho trưtrướớcc thông điđiệệpp ban ban đđầầuu, , gigiáá trtrịị bămbăm, , không không ththểể ttááii ttạạoo llạạii thông image””)) hay hay còncòn ggọọii llàà ““titiềềnn ảảnhnh”” ((““prepre--image NNếếuu ttììmm rara đưđượợcc mmộộtt phương xxáácc đđịịnhnh ““titiềềnn ảảnhnh”” tương trưtrướớcc ththìì thuthuậậtt totoáánn bămbăm ssẽẽ không CCááchch ttấấnn công thông điđiệệpp ban ban đđầầuu nhưng thông ttấấnn công attack””)) attack
Tính “một chiều” Tính “một chiều”
nhiên yy∈∈{0,1} {0,1}nn, , rrấấtt khkhóó
HHààmm HH rrấấtt khkhóó bbịị bibiếếnn đđổổii ngưngượợcc Cho Cho trưtrướớcc chuchuỗỗii bit bit ngngẫẫuu nhiên ttììmm rara đưđượợcc chuchuỗỗii bit bit x x saosao chocho HH((xx)=)=yy
VVíí ddụụ::
force: VVớớii mmỗỗii gigiáá trtrịị xx, , kikiểểmm tratra HH((xx)=)=yy
trong mmộộtt nămnăm
GiGiảả ssửử phphầầnn ccứứngng chocho phphéépp ththựựcc hihiệệnn 223434 phphéépp ththửử trong trong mmộộtt giâygiây CCóó ththểể ththựựcc hihiệệnn 225959 phphéépp ththửử trong CCầầnn 22101101 (~ 10 trtrịị ngngẫẫuu nhiên
(~ 103030) ) nămnăm đđểể bibiếếnn đđổổii ngưngượợcc SHASHA--1 1 vvớớii gigiáá nhiên yy chocho trưtrướớcc
BruteBrute--force: SHASHA--1 1 chocho kkếếtt ququảả llàà chuchuỗỗii ggồồmm 160160--bitbit
Tính an toàn đối với hiện tượng đụng độ Tính an toàn đối với hiện tượng đụng độ
phphéépp ththửử ngngẫẫuu nhiên
RRấấtt khkhóó ccóó ththểể ttììmm đưđượợcc xx, , xx’’ saosao chocho HH((xx)=)=HH((xx’’)) trong NN Trong mmộộtt ttậậpp hhợợpp mmàà ccáácc phphầầnn ttửử mangmang mmộộtt trong Trong gigiáá trtrịị chocho trưtrướớcc vvớớii xxáácc susuấấtt bbằằngng nhaunhau, , chchúúngng tata ccầầnn nhiên đđểể ttììmm rara mmộộtt ccặặpp ccóó khokhoảảngng N ccùùngng gigiáá trtrịị
Tính chất của hàm băm Tính chất của hàm băm
công ““titiềềnn ảảnhnh””
An An totoàànn đđốốii vvớớii ttấấnn công resistance Preimage resistance Preimage chocho trưtrướớcc yy, , rrấấtt khkhóó ttììmm đưđượợcc gigiáá trtrịị x x saosao chocho HH((xx)=)=yy
An An totoàànn đđốốii vvớớii hihiệệnn tưtượợngng đđụụngng đđộộ: :
rrấấtt khkhóó ttììmm đưđượợcc haihai gigiáá trtrịị phânphân bibiệệtt xx vvàà xx’’ saosao chocho HH((xx’’)=)=HH((xx) )
công ““titiềềnn ảảnhnh ththứứ 22””
An An totoàànn đđốốii vvớớii ttấấnn công resistance preimage resistance
22ndnd preimage chocho trưtrướớcc xx vvàà yy==HH((xx), ), rrấấtt khkhóó ttììmm đưđượợcc gigiáá trtrịị xx’’≠≠xx saosao chocho HH((xx’’)=)=HH((xx))
Phân loại hàm băm mật mã Phân loại hàm băm mật mã
Cryptographic Cryptographic Cryptographic Hash Functions Hash Functions Hash Functions
Không Không Không ssửử ddụụngng sử dụng khkhóóaa khóa
Message Message Message Authentication Codes Authentication Codes Authentication Codes (MAC) (MAC) (MAC)
Manipulation Manipulation Manipulation Detection Codes Detection Codes Detection Codes (MDC) (MDC) (MDC)
SSửử ddụụngng Sử dụng khkhóóaa khóa
Collision Resistant Collision Resistant Collision Resistant Hash Functions Hash Functions Hash Functions (CRHF) (CRHF) (CRHF)
OneOne--Way Way One-Way Hash Functions Hash Functions Hash Functions (OWHF) (OWHF) (OWHF)
Cấu trúc Merkle-Damgård Cấu trúc Merkle-Damgård
KhKhốốii Khối 11 1
KhKhốốii Khối 22 2
KhKhốốii Khối nn n
Length Length Length padding padding padding
HashHash
IVIV
ff
ff
ff
Finali-- ff Finali sation sation
Ralph MerkleMerkle, , Ivan Ivan DamgDamgåårdrd
TTáácc gigiảả: : Ralph HHầầuu hhếếtt ccáácc hhààmm bămbăm đđềềuu ssửử ddụụngng ccấấuu trtrúúcc nnààyy VVíí ddụụ: SHA 1, MD5 : SHA--1, MD5
MD5MD5
MD4 (Message Digest 4) đưđượợcc GiGiááoo sưsư
phiên bbảảnn ccảảii titiếếnn MD5 MD5 ccủủaa thuthuậậtt totoáánn
HHààmm bămbăm MD4 (Message Digest 4) 1990. Rivest đđềề nghnghịị vvààoo nămnăm 1990. Rivest VVààoo nămnăm sausau, , phiên nnààyy rara đđờờii. .
MD5MD5
KhKhởởii ggáánn ccáácc bibiếếnn::
h0 := 0x67452301 h0 := 0x67452301 h1 := 0xEFCDAB89 h1 := 0xEFCDAB89 h2 := 0x98BADCFE h2 := 0x98BADCFE h3 := 0x10325476 h3 := 0x10325476
MD5MD5
HHệệ ssốố quay quay trtrááii RR[[ii]c]củủaa mmỗỗii chuchu kkỳỳ::
[ 0..15] := { RR[ 0..15] := { 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,
7, 12, 17, 22, 7, 12, 17, 22} 7, 12, 17, 22, 7, 12, 17, 22}
[16..31] := { RR[16..31] := { 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,
5, 9, 14, 20, 5, 9, 14, 20} 5, 9, 14, 20, 5, 9, 14, 20}
[32..47] := { RR[32..47] := { 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,
4, 11, 16, 23, 4, 11, 16, 23} 4, 11, 16, 23, 4, 11, 16, 23}
[48..63] := { RR[48..63] := { 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21,
6, 10, 15, 21, 6, 10, 15, 21} 6, 10, 15, 21, 6, 10, 15, 21}
HHằằngng ssốố K[K[ii]] forfor ii fromfrom 0 0 toto 63 63
KK[[ii] := ] := floor(abs(sin( floor(abs(sin(ii + 1)) 32)) + 1)) ×× (2 (2 powpow 32))
MD5MD5
TiTiềềnn xxửử lýlý::
thông điđiệệpp bit 1 vvààoo cucuốốii thông
k bit 0 saosao chocho đđộộ ddààii thông thông điđiệệpp nhnhậậnn
64 bit bibiểểuu didiễễnn đđộộ ddààii ddààii ccủủaa thông thông điđiệệpp
ThêmThêm bit 1 ThêmThêm vvààoo k bit 0 448 (mod 512) đưđượợcc đđồồngng dưdư 448 (mod 512) ThêmThêm 64 bit ggốốcc ((gigiáá trtrịị lưulưu ddạạngng little endian) little--endian)
111 0…000……00
MMM
mmm
mm bitbit
k bit k bit
64 bit 64 bit
1 bit1 bit
BBộộii ssốố ccủủaa 512512
MD5MD5
thông điđiệệpp ((đãđã padding) 512 bit padding) ththàànhnh ccáácc khkhốốii 512 bit
ChiaChia thông VVớớii mmỗỗii khkhốốii 512512--bit:bit:
endian) w[0..15] 16 word (32 bit, little--endian) w[0..15]
ChiaChia ththàànhnh 16 word (32 bit, little A= h0, B= h1, C= h2, D= h3 A= h0, B= h1, C= h2, D= h3 64 64 chuchu kkỳỳ xxửử lýlý h0+=A, h1+=B, h2+=C, h3+=D h0+=A, h1+=B, h2+=C, h3+=D
:= h0 | h1 | h2 | h3 KKếếtt ququảả:= h0 | h1 | h2 | h3
Chu kỳ xử lý trong MD5 Chu kỳ xử lý trong MD5
quay trtrááii nn
modulo 23232. .
4 word (32 A, B, C, D llàà 4 word (32 A, B, C, D bit) bit) ccủủaa trtrạạngng ththááii FF llàà hhààmm phi phi tuytuyếếnn ((thaythay đđổổii ttùùyy theotheo chuchu kkỳỳ) ) <<< n llàà phphéépp quay <<< n vvịị trtríí ⊞⊞ phphéépp ccộộngng modulo 2 KKtt llàà hhằằngng ssốố
Chu kỳ xử lý trong MD5 Chu kỳ xử lý trong MD5
] + w[w[gg]) ])
0 to 63 forfor ii fromfrom 0 to 63 ] (B, C, D) f f = = FF[[ii] (B, C, D) gg = = G[G[ii] (] (ii) ) temp = D temp = D D = CD = C C = BC = B B = ((A + ff + + KK[[ii] + B = ((A + ]) + B <<<<<< R[R[ii]) + B
A = temp A = temp
Chu kỳ xử lý trong MD5 Chu kỳ xử lý trong MD5
:= (D ∧∧ B) B) ∨∨ ((((¬¬ D) D) ∧∧ C) C) := (5××ii + 1) + 1) modmod 16 16
:= B ⊕⊕ C C ⊕⊕ D D := (3××ii + 5) + 5) modmod 16 16
(B ∨∨ ((¬¬ D)) D))
0 0 ≤≤ ii ≤≤ 1515 ff := (B := (B ∧∧ C) C) ∨∨ ((((¬¬ B) B) ∧∧ D) D) := ii gg := 16 16 ≤≤ ii ≤≤ 31 31 ff := (D gg := (5 32 32 ≤≤ ii ≤≤ 47 47 ff := B gg := (3 48 48 ≤≤ ii ≤≤ 63 63 ff := C gg := (7
:= C ⊕⊕ (B := (7××ii) ) modmod 16 16
SHA1 SHA1
Secure Hash Standard (SHS hay SHA1) Phương phpháápp Secure Hash Standard (SHS hay SHA1) Phương công bbốố trêntrên Federal Federal do NIST vvàà NSA NSA xâyxây ddựựngng đưđượợcc công do NIST 1992 vvàà sausau đđóó Register vvààoo ngngààyy 31 31 ththáángng 1 1 nămnăm 1992 Register chchíínhnh ththứứcc trtrởở ththàànhnh phương phương phpháápp chuchuẩẩnn ttừừ ngngààyy 13 13 1993. ththáángng 5 5 nămnăm 1993. Thông điđiệệpp đưđượợcc xxửử lýlý theotheo ttừừngng khkhốốii 512512--bitbit Thông Thông điđiệệpp rrúútt ggọọnn đđộộ ddààii 160160--bitbit Thông
SHA1 SHA1
KhKhởởii ggáánn ccáácc bibiếếnn::
h0 := 0x67452301 h0 := 0x67452301 h1 := 0xEFCDAB89 h1 := 0xEFCDAB89 h2 := 0x98BADCFE h2 := 0x98BADCFE h3 := 0x10325476 h3 := 0x10325476 h4 := 0xC3D2E1F0 h4 := 0xC3D2E1F0
SHA1 SHA1
TiTiềềnn xxửử lýlý::
thông điđiệệpp bit 1 vvààoo cucuốốii thông
thông điđiệệpp nhnhậậnn
64 bit bibiểểuu didiễễnn đđộộ ddààii ddààii ccủủaa thông thông điđiệệpp
ThêmThêm bit 1 k bit 0 saosao chocho đđộộ ddààii thông ThêmThêm vvààoo k bit 0 du 448 (mod 512) đưđượợcc đđồồngng du 448 (mod 512) ThêmThêm 64 bit endian) ggốốcc ((gigiáá trtrịị lưulưu ddạạngng bigbig--endian)
111 0…000……00
MMM
mmm
mm bitbit
k bit k bit
64 bit 64 bit
1 bit1 bit
BBộộii ssốố ccủủaa 512512
SHA1 SHA1
thông điđiệệpp ((đãđã padding) 512 bit padding) ththàànhnh ccáácc khkhốốii 512 bit
ChiaChia thông VVớớii mmỗỗii khkhốốii 512512--bit:bit:
16 word (32 bit, big--endian) w[0..15] endian) w[0..15] 80 word (32 bit) 16 word (32 bit) ththàànhnh 80 word (32 bit)
16]) <<<<<< 1 1 ]=(w[i--3]3]⊕⊕ w[iw[i--8] 8] ⊕⊕ w[iw[i--14] 14] ⊕⊕ w[iw[i--16])
ChiaChia ththàànhnh 16 word (32 bit, big MMởở rrộộngng 16 word (32 bit) w[iw[i]=(w[i i < 80 vvớớii 16 16 ≤≤ i < 80 A= h0, B= h1, C= h2, D= h3, E= h4 A= h0, B= h1, C= h2, D= h3, E= h4 80 80 chuchu kkỳỳ xxửử lýlý h0+=A, h1+=B, h2+=C, h3+=D, h4+=E h0+=A, h1+=B, h2+=C, h3+=D, h4+=E
:= h0 | h1 | h2 | h3 | h4 KKếếtt ququảả:= h0 | h1 | h2 | h3 | h4
Chu kỳ xử lý trong SHA1 Chu kỳ xử lý trong SHA1
quay trtrááii
modulo 23232. .
tt llàà ssốố ththứứ ttựự ccủủaa chuchu kkỳỳ 5 word A, B, C, D, E llàà 5 word A, B, C, D, E (32 bit) ccủủaa trtrạạngng ththááii (32 bit) FF llàà hhààmm phi phi tuytuyếếnn ((thaythay đđổổii ttùùyy theotheo chuchu kkỳỳ) ) <<< n llàà phphéépp quay <<< n nn vvịị trtríí ⊞⊞ phphéépp ccộộngng modulo 2 KKtt llàà hhằằngng ssốố
Chu kỳ xử lý trong SHA1 Chu kỳ xử lý trong SHA1
5) + ff + E + E
0 to 79 forfor ii fromfrom 0 to 79 ] (B, C, D) f f = = FF[[tt] (B, C, D) temp = (A <<<<<< 5) + temp = (A + + KKtt + + w[w[ii] ]
<<< 30 30
E = DE = D D = CD = C C = B <<< C = B B = AB = A A = temp A = temp
Chu kỳ xử lý trong SHA1 Chu kỳ xử lý trong SHA1
19 19
, ,
= =
ZYXtF[ ]( ZYXtF , ,
) )
[ ](
39 39 59 59 79 79
t ≤≤ t ≤≤ t ≤≤ t ≤≤ t ≤≤ t ≤≤ t ≤≤ t ≤≤
) ( ) ( ) ( ) ) ( ) ( ( YX X Z , 0 ∧ ∧¬∨ YX X Z , 0 ∧ ∧¬∨ ⎧ ⎧ ⎪ ⎪ YX Z , 20 ⊕⊕ 20 Z , YX ⊕⊕ ⎪ ⎪ ⎨ ⎨ ) ( ) ( ) ( ( ( ( ) ) ) YX ZX ZY 40 , ∧ ∨ ∧ ∨ ∧ YX ZX ZY 40 , ∧ ∧ ∨ ∧ ∨ ⎪ ⎪ ⎪ ⎪ YX Z , 60 ⊕⊕ YX Z , 60 ⊕⊕ ⎩ ⎩
19 19
= =
Kt Kt
0, 0, 20, 20, 40, 40, 60, 60,
39 39 59 59 79 79
t ≤≤ t ≤≤ t ≤≤ t ≤≤ t ≤≤ t ≤≤ t ≤≤ t ≤≤
⎧ 0x5a827999 ⎧ 0x5a827999 ⎪ ⎪ 0x6ed9eba1 0x6ed9eba1 ⎪ ⎪ ⎨ ⎨ 0x8f1bbcdc 0x8f1bbcdc ⎪ ⎪ ⎪ ⎪ 0xca62c1d6 0xca62c1d6 ⎩ ⎩
Chu kỳ xử lý trong SHA1 Chu kỳ xử lý trong SHA1
, ,
= =
ZYXtF[ ]( ZYXtF , ,
) )
[ ](
19 19 39 39 59 59 79 79
t ≤≤ t ≤≤ t ≤≤ t ≤≤ t ≤≤ t ≤≤ t ≤≤ t ≤≤
CôngCông ththứứcc ccủủaa hhààmm F[tF[t] ] ccóó ththểể đưđượợcc viviếếtt llạạii nhưnhư sausau:: ( ( Y Y ( ( Z Z ( ( Z Z ( ( Z Z
) ( ) ( ) ) Z X Z , 0 ⊕∧⊕ 0 Z X Z , ⊕∧⊕ ⎧ ⎧ ⎪ ⎪ ) ) ( ) ( ( ( ) ) ) YX YX , 20 ∧ ∨ ∧ ∨ 20 YX YX , ∨ ∧ ∧ ∨ ⎪ ⎪ ⎨ ⎨ ) ) ( ) ( ( ( ) ) ) YX YX 40 , ∧ ∨ ⊕∧ YX YX 40 , ∧ ∨ ⊕∧ ⎪ ⎪ ) ) ( ) ( ( ( ) ) ) ⎪ ⎪ YX YX 60 , ∧ + ⊕∧ YX YX 60 , ∧ + ⊕∧ ⎩ ⎩
Nhóm hàm băm SHA Nhóm hàm băm SHA
011010011101
2002
2002
SHASHA--256256
SHASHA--384384
2002
2004
1994
SHASHA--224224
SHASHA--11
SHASHA--512512
Secure Hash Standard
Các thuật toán SHA Các thuật toán SHA
ThaoThao ttáácc ĐĐụụngng
KhKhốốii (bit) (bit)
Word Word (bit) (bit)
đđộộ
ThuThuậậtt totoáánn KKếếtt ququảả (bit) (bit)
TrTrạạngng ththááii (bit) (bit)
# # chuchu kkỳỳ
Thông Thông điđiệệpp ttốốii đađa (bit) (bit) 226464
160160
160160
512512
−− 11
3232
8080
CCóó
SHASHA--00
+,+,and,or and,or,, xor,rotl xor,rotl
−− 11
3232
8080
SHASHA--11
160160
160160
512512
226464
and,or,, +,+,and,or xor,rotl xor,rotl
226363 thao thao ttáácc
−− 11
3232
6464
ChưaChưa
256256
512512
226464
SHASHA-- 256/224 256/224
256/ 256/ 224224
+,and, +,and, or,xor, , or,xor shr,rotr shr,rotr
−− 11
6464
8080
ChưaChưa
512512
1024 1024
22128128
SHASHA-- 512/384 512/384
512/ 512/ 384384
+,and, +,and, or,xor,, or,xor shr,rotr shr,rotr
Sử dụng SHA Sử dụng SHA
Suite B Suite B
thông thưthườờngng 2010 SauSau 2010
Secret Secret
Top Secret Top Secret
√√ √√
√√
LoLoạạii ƯD ƯD ThuThuậậtt totoáánn SHASHA--11 SHASHA--224224 SHASHA--256256 SHASHA--384384 SHASHA--512512
SSửử ddụụngng thông ĐĐếếnn 2010 2010 √√ √√ √√ √√ √√
√√ √√ √√ √√
Nguồn: NIST Cryptographic Standards Status Report April 4, 2006 Bill Burr Manager, Security Technology Group NIST william.burr@nist.gov
Message authentication code (MAC) Message authentication code (MAC)
MMụụcc đđííchch: : xxáácc đđịịnhnh ngunguồồnn ggốốcc ccủủaa thông thông tintin
MAC và chữ ký điện tử MAC và chữ ký điện tử
chung PhPháátt sinhsinh MAC MAC vvàà kikiểểmm tratra MAC MAC ssửử ddụụngng chung khkhóóaa bbíí mmậậtt (secret key) (secret key) NgưNgườờii ggửửii vvàà ngưngườờii nhnhậậnn phphảảii ththỏỏaa thuthuậậnn trưtrướớcc khkhóóaa bbíí mmậậtt ((gigiốốngng mãmã hhóóaa đđốốii xxứứngng)) (non-- Không hhỗỗ trtrợợ viviệệcc chchốốngng ttừừ chchốốii trtrááchch nhinhiệệmm (non Không repudiation) repudiation)

