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)