43
Chủ đề 9: Hàm băm mật mã Hash & MAC ThS. Trần Minh Triết ThS. Trần Minh Triết

Chủ đề 9: Hàm băm mật mã Hash & MAC

  • Upload
    zoltan

  • View
    80

  • Download
    4

Embed Size (px)

DESCRIPTION

Chủ đề 9: Hàm băm mật mã Hash & MAC. ThS. Trần Minh Triết. Nội dung. Mở đầu Các tính chất của hàm băm mật mã Phân loại hàm băm mật mã Một số kiến trúc hàm băm phổ biến Hàm băm MD5 Các hàm băm SHA MAC và HMAC. Mở đầu. Tính toàn vẹn và tính bí mật. - PowerPoint PPT Presentation

Citation preview

Page 1: Chủ đề 9: Hàm băm mật mã Hash & MAC

Chủ đề 9:

Hàm băm mật mãHash & MAC

Chủ đề 9:

Hàm băm mật mãHash & MAC

ThS. Trần Minh TriếtThS. Trần Minh Triết

Page 2: Chủ đề 9: Hàm băm mật mã Hash & MAC

Nội dungNội dung

Mở đầuMở đầu

Các tính chất của hàm băm mật mãCác tính chất của hàm băm mật mã

Phân loại hàm băm mật mãPhân loại hàm băm mật mã

Một số kiến trúc hàm băm phổ biếnMột số kiến trúc hàm băm phổ biến

Hàm băm MD5Hàm băm MD5

Các hàm băm SHACác hàm băm SHA

MAC và HMACMAC và HMAC

Page 3: Chủ đề 9: Hàm băm mật mã Hash & MAC

Mở đầuMở đầu

Page 4: Chủ đề 9: Hàm băm mật mã Hash & MAC

Tính toàn vẹn và tính bí mậtTính toàn vẹn và tính bí mật

Tính toàn vẹnTính toàn vẹn (Integrity): người tấn công không thể (Integrity): người tấn công không thể can thiệp để sửa nội dung thông điệpcan thiệp để sửa nội dung thông điệp

Mã hóaMã hóa chỉ nhằm đảm bảo tính bí mật, không giúp chỉ nhằm đảm bảo tính bí mật, không giúp đảm bảo tính toàn vẹn thông tinđảm bảo tính toàn vẹn thông tin

Người tấn công có thể sửa đổi nội dung thông điệp Người tấn công có thể sửa đổi nội dung thông điệp đã được mã hóa mà không cần biết nội dung thật sự đã được mã hóa mà không cần biết nội dung thật sự của thông điệpcủa thông điệp

Ví dụ: Ví dụ:

Trong đấu giá trực tuyến, có thể thay đổi giá đặt Trong đấu giá trực tuyến, có thể thay đổi giá đặt của đối thủ mà không cần biết nội dung thật sự của của đối thủ mà không cần biết nội dung thật sự của giá đặtgiá đặt

Page 5: Chủ đề 9: Hàm băm mật mã Hash & MAC

Ý 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ã

H là hàm nén mất thông tin (lossy compression H là hàm nén mất thông tin (lossy compression function)function)

Hiện tượng đụng độ (Collision): Hiện tượng đụng độ (Collision): HH((xx)=)=HH((xx’) với ’) với xxxx’’

Kết quả của việc băm “nhìn có vẻ ngẫu nhiên”Kết quả của việc băm “nhìn có vẻ ngẫu nhiên”

Thông điệpThông điệp

Thông điệpThông điệprút gọnrút gọn

xx11

xx22

xx33

yy11

yy22

Chuỗi bit có độ dài bất kỳ!Chuỗi bit có độ dài bất kỳ! Chuỗi bit có độ dài cố địnhChuỗi bit có độ dài cố định

Page 6: Chủ đề 9: Hàm băm mật mã Hash & MAC

Hàm băm mật mã HHàm băm mật mã H

HH có thể áp dụng trên dữ liệu có kích thước bất kỳ có thể áp dụng trên dữ liệu có kích thước bất kỳ

Kết quả của Kết quả của HH là một chuỗi là một chuỗi nn-bit (-bit (nn có định) có định)

Dễ dàng tính giá trị Dễ dàng tính giá trị HH((xx) với ) với xx bất kỳ bất kỳ

HH là hàm một chiều là hàm một chiều

HH an toàn đối với hiện tượng “đụng độ” an toàn đối với hiện tượng “đụng độ”

Page 7: Chủ đề 9: Hàm băm mật mã Hash & MAC

Tính “một chiều”Tính “một chiều”

Hàm Hàm HH rất khó bị biến đổi ngược rất khó bị biến đổi ngược

Cho trước chuỗi bit ngẫu nhiên Cho trước chuỗi bit ngẫu nhiên yy {0,1}∈{0,1}∈ nn, rất khó , rất khó tìm ra được chuỗi bit tìm ra được chuỗi bit x x sao cho sao cho HH((xx)=)=yy

Ví dụ:Ví dụ:

Brute-force: Với mỗi giá trị Brute-force: Với mỗi giá trị xx, kiểm tra , kiểm tra HH((xx)=)=yy

SHA-1 cho kết quả là chuỗi gồm 160-bitSHA-1 cho kết quả là chuỗi gồm 160-bitGiả sử phần cứng cho phép thực hiện 2Giả sử phần cứng cho phép thực hiện 23434 phép thử trong phép thử trong một giâymột giây

Có thể thực hiện 2Có thể thực hiện 25959 phép thử trong một năm phép thử trong một năm

Cần 2Cần 2101101 (~ 10 (~ 103030) năm để biến đổi ngược SHA-1 với giá ) năm để biến đổi ngược SHA-1 với giá trị ngẫu nhiên trị ngẫu nhiên yy cho trước cho trước

Page 8: Chủ đề 9: Hàm băm mật mã Hash & MAC

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 độ

Rất khó có thể tìm được Rất khó có thể tìm được xx, , xx’ sao cho ’ sao cho HH((xx)=)=HH((xx’)’)

Tìm kiếm đụng độ bằng Brute-force chỉ cần O(2Tìm kiếm đụng độ bằng Brute-force chỉ cần O(2n/2n/2), ), không phải O(2không phải O(2nn))

Birthday paradoxBirthday paradox

Cho t giá trị Cho t giá trị xxii và giá trị tương ứng và giá trị tương ứng yyii=h(=h(xxii))

Với mỗi cặp Với mỗi cặp xxii,,xxjj, xác suất đụng độ là 1/2, xác suất đụng độ là 1/2nn

Tổng số cặp Tổng số cặp CC22tt==tt((tt-1)/2 O(∼-1)/2 O(∼ tt22))

Nếu Nếu tt xấp xỉ 2 xấp xỉ 2n/2n/2, số lượng cặp xấp xỉ 2, số lượng cặp xấp xỉ 2nn

Với mỗi cặp, xác suất xảy ra đụng độ là 1/2Với mỗi cặp, xác suất xảy ra đụng độ là 1/2nn, do đó, , do đó, xác suất tìm được một cặp giá trị đụng độ rất gần 1xác suất tìm được một cặp giá trị đụng độ rất gần 1

Page 9: Chủ đề 9: Hàm băm mật mã Hash & MAC

Birthday ParadoxBirthday Paradox

Ví dụ: Ví dụ:

Gọi Gọi pp((nn) là xác suất tìm được 2 người có cùng ngày ) là xác suất tìm được 2 người có cùng ngày sinh trong nhóm sinh trong nhóm nn người người

Gọi là xác suất 2 người bất kỳ trong nhóm Gọi là xác suất 2 người bất kỳ trong nhóm nn người đều có ngày sinh khác nhau.người đều có ngày sinh khác nhau.

pp((nn) + = 1) + = 1

Với n Với n 365, ta có 365, ta có

)(np )(np

)(np )(np

)!365(365

!365

365

11...

365

21

365

111)(

n

nnp

n

)!365(365

!365

365

11...

365

21

365

111)(

n

nnp

n

Page 10: Chủ đề 9: Hàm băm mật mã Hash & MAC

Birthday ParadoxBirthday Paradox

pp((nn))

nn

Page 11: Chủ đề 9: Hàm băm mật mã Hash & MAC

An toàn với hiện tượng đụng độ “yếu”An toàn với hiện tượng đụng độ “yếu”

Weak Collision ResistanceWeak Collision Resistance

Cho dãy bit Cho dãy bit xx chọn trước ngẫu nhiên, rất khó tìm được chọn trước ngẫu nhiên, rất khó tìm được xx’sao cho ’sao cho HH((xx)=)=HH((xx’)’)

Người tấn công phải tìm được giá trị đụng độ với giá Người tấn công phải tìm được giá trị đụng độ với giá trị trị xx cụ thể cho trước. Điều này khó hơn việc tìm và cụ thể cho trước. Điều này khó hơn việc tìm và chỉ ra một cặp giá trị chỉ ra một cặp giá trị xx và và xx’ đụng độ với nhau.’ đụng độ với nhau.

Tấn công Brute-force: O(2Tấn công Brute-force: O(2nn))

Nhận xét: Nhận xét: An toàn với hiện tượng đụng độ “yếu” An toàn với hiện tượng đụng độ “yếu” không đảm bảo an toàn với hiện tượng đụng độkhông đảm bảo an toàn với hiện tượng đụng độ

Page 12: Chủ đề 9: Hàm băm mật mã Hash & MAC

Tính chất của hàm bămTính chất của hàm băm

An toàn đối với tấn công “tiền ảnh”An toàn đối với tấn công “tiền ảnh”

Preimage resistancePreimage resistance

cho trước cho trước yy, rất khó tìm được giá trị x sao cho , rất khó tìm được giá trị x sao cho HH((xx)=)=yy

An toàn đối với hiện tượng đụng độ: An toàn đối với hiện tượng đụng độ:

rất khó tìm được hai giá trị phân biệt rất khó tìm được hai giá trị phân biệt xx và và xx’ sao ’ sao cho cho HH((xx’)=’)=HH((xx) )

An toàn đối với tấn công “tiền ảnh thứ 2” An toàn đối với tấn công “tiền ảnh thứ 2”

22ndnd preimage resistance preimage resistance

cho trước cho trước xx và và yy==HH((xx), rất khó tìm được giá trị ), rất khó tìm được giá trị x’x’x sao cho x sao cho HH((xx’)=’)=HH((xx))

Page 13: Chủ đề 9: Hàm băm mật mã Hash & MAC

Phân loại hàm băm mật mãPhân loại hàm băm mật mã

Collision Resistant Collision Resistant Hash Functions Hash Functions

(CRHF)(CRHF)

Collision Resistant Collision Resistant Hash Functions Hash Functions

(CRHF)(CRHF)

One-Way One-Way Hash Functions Hash Functions

(OWHF)(OWHF)

One-Way One-Way Hash Functions Hash Functions

(OWHF)(OWHF)

Manipulation Manipulation Detection CodesDetection Codes

(MDC)(MDC)

Manipulation Manipulation Detection CodesDetection Codes

(MDC)(MDC)

Message Message Authentication CodesAuthentication Codes

(MAC) (MAC)

Message Message Authentication CodesAuthentication Codes

(MAC) (MAC)

CryptographicCryptographicHash FunctionsHash FunctionsCryptographicCryptographic

Hash FunctionsHash Functions

Sử Sử dụng dụng khóakhóa

Sử Sử dụng dụng khóakhóa

Không Không sử dụng sử dụng

khóakhóa

Không Không sử dụng sử dụng

khóakhóa

Page 14: Chủ đề 9: Hàm băm mật mã Hash & MAC

Cấu trúc Merkle-Damgård Cấu trúc Merkle-Damgård

Khối Khối 11

Khối Khối 11

ffff

LengthLengthpaddingpaddingLengthLengthpaddingpadding

ffff Finali-Finali-sationsation

Finali-Finali-sationsationIVIVIVIV HashHashHashHash

Khối Khối 22

Khối Khối 22

ffff

Khối Khối nn

Khối Khối nn

ffff

Tác giả: Ralph Merkle, Ivan Damgård Tác giả: Ralph Merkle, Ivan Damgård

Hầu hết các hàm băm đều sử dụng cấu trúc nàyHầu hết các hàm băm đều sử dụng cấu trúc này

Ví dụ: SHA-1, MD5Ví dụ: SHA-1, MD5

Page 15: Chủ đề 9: Hàm băm mật mã Hash & MAC

Kiến trúc Matyas-Meyer-OseasKiến trúc Matyas-Meyer-Oseas

EEEEgggg

HHi i – 1– 1

HHi i

mmiimmii

HHii = = EEg g ((H H ) ) ((mmii) ) mmiiii -1 -1

Kiến trúc “đối ngẫu” với Kiến trúc “đối ngẫu” với kiến trúc kiến trúc Davies-MayerDavies-Mayer

Ở khối đầu tiên, cần sử Ở khối đầu tiên, cần sử dụng giá trị khởi đầu dụng giá trị khởi đầu HH00

Nếu hàm Nếu hàm EE sử dụng sử dụng khóa và khối kích thước khóa và khối kích thước khác nhau, hàm khác nhau, hàm gg cần cần biến đổi biến đổi HHi i -1-1 thành khóa thành khóa phù hợp cho hàm phù hợp cho hàm EE

Page 16: Chủ đề 9: Hàm băm mật mã Hash & MAC

Kiến trúc Davies-MeyerKiến trúc Davies-Meyer

EEEE

HHi i – 1– 1

HHi i

mm iimm ii

HHii = = EE ((HHi i –1–1)) HHi i –1–1mmii

Kiến trúc “đối ngẫu” với Kiến trúc “đối ngẫu” với kiến trúc kiến trúc Matyas-Matyas-Meyer-OseasMeyer-Oseas

Ở khối đầu tiên, cần sử Ở khối đầu tiên, cần sử dụng giá trị khởi đầu dụng giá trị khởi đầu HH00

Nếu hàm Nếu hàm EE không an không an toàn thì có thể áp dụng toàn thì có thể áp dụng phương pháp fixed point phương pháp fixed point attack đế tấn công hàm attack đế tấn công hàm băm tương ứngbăm tương ứng

Page 17: Chủ đề 9: Hàm băm mật mã Hash & MAC

Kiến trúc Miyaguchi-PreneelKiến trúc Miyaguchi-Preneel

EEEEgggg

HHi i – 1– 1

HHi i

mmiimmii

HHii = = EEg g ((H H ) ) ((mmii))HHii-1-1mmiiii -1 -1

Mở rộng của kiến trúc Mở rộng của kiến trúc Matyas-Meyer-OseasMatyas-Meyer-Oseas

Ở khối đầu tiên, cần sử Ở khối đầu tiên, cần sử dụng giá trị khởi đầu dụng giá trị khởi đầu HH00

Nếu hàm Nếu hàm EE sử dụng sử dụng khóa và khối kích thước khóa và khối kích thước khác nhau, hàm khác nhau, hàm gg cần cần biến đổi biến đổi HHi i -1-1 thành khóa thành khóa phù hợp cho hàm phù hợp cho hàm EE

Page 18: Chủ đề 9: Hàm băm mật mã Hash & MAC

MD5MD5

Hàm băm MD4 (Message Digest 4) được Giáo sư Hàm băm MD4 (Message Digest 4) được Giáo sư Rivest đề nghị vào năm 1990. Rivest đề nghị vào năm 1990.

Vào năm sau, phiên bản cải tiến MD5 của thuật toán Vào năm sau, phiên bản cải tiến MD5 của thuật toán này ra đời. này ra đời.

trivialtrivial

Page 19: Chủ đề 9: Hàm băm mật mã Hash & MAC

MD5MD5

Khởi gán các biến:Khởi gán các biến: h0 := 0x67452301 h0 := 0x67452301 h1 := 0xEFCDAB89 h1 := 0xEFCDAB89 h2 := 0x98BADCFE h2 := 0x98BADCFE h3 := 0x10325476 h3 := 0x10325476

Page 20: Chủ đề 9: Hàm băm mật mã Hash & MAC

MD5MD5

Hệ số quay trái Hệ số quay trái RR[[ii]của mỗi chu kỳ:]của mỗi chu kỳ:

RR[ 0..15] := { [ 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}

RR[16..31] := {[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}

RR[32..47] := {[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}

RR[48..63] := {[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}

Page 21: Chủ đề 9: Hàm băm mật mã Hash & MAC

Hằng số K[Hằng số K[ii]]

forfor ii fromfrom 0 0 toto 63 63

KK[[ii] := floor(abs(sin(] := floor(abs(sin(ii + 1)) × (2 + 1)) × (2 powpow 32)) 32))

Page 22: Chủ đề 9: Hàm băm mật mã Hash & MAC

MD5MD5

Tiền xử lý:Tiền xử lý:

Thêm bit 1 vào cuối thông điệpThêm bit 1 vào cuối thông điệp

Thêm vào k bit 0 sao cho độ dài thông điệp nhận Thêm vào k bit 0 sao cho độ dài thông điệp nhận được đồng du 448 (mod 512)được đồng du 448 (mod 512)

Thêm 64 bit biểu diễn độ dài dài của thông điệp Thêm 64 bit biểu diễn độ dài dài của thông điệp gốc (giá trị lưu dạng little-endian)gốc (giá trị lưu dạng little-endian)

MMMM 1111 0…00…00…00…0

1 bit1 bit k bitk bitmm bit bit

mmmm

64 bit64 bit

Bội số của 512Bội số của 512

Page 23: Chủ đề 9: Hàm băm mật mã Hash & MAC

MD5MD5

Chia thông điệp (đã padding) thành các khối 512 bitChia thông điệp (đã padding) thành các khối 512 bit

Với mỗi khối 512-bit:Với mỗi khối 512-bit:

Chia thành 16 word (32 bit, little-endian) w[0..15]Chia thành 16 word (32 bit, little-endian) w[0..15]

A= h0, B= h1, C= h2, D= h3A= h0, B= h1, C= h2, D= h3

64 chu kỳ xử lý64 chu kỳ xử lý

h0+=A, h1+=B, h2+=C, h3+=Dh0+=A, h1+=B, h2+=C, h3+=D

Kết quả:= h0 | h1 | h2 | h3Kết quả:= h0 | h1 | h2 | h3

Page 24: Chủ đề 9: Hàm băm mật mã Hash & MAC

Chu kỳ xử lý trong MD5Chu kỳ xử lý trong MD5

A, B, C, D là 4 word (32 A, B, C, D là 4 word (32 bit) của trạng tháibit) của trạng thái

FF là hàm phi tuyến (thay là hàm phi tuyến (thay đổi tùy theo chu kỳ) đổi tùy theo chu kỳ)

<<< n<<< n là phép quay trái là phép quay trái nn vị trívị trí

⊞ ⊞ phép cphép cộngộng modulo 2 modulo 23232. .

KKtt là hằng số là hằng số

Page 25: Chủ đề 9: Hàm băm mật mã Hash & MAC

Chu kỳ xử lý trong MD5Chu kỳ xử lý trong MD5

forfor ii fromfrom 0 to 63 0 to 63

f f = = FF[[ii] (B, C, D) ] (B, C, D)

gg = G[ = G[ii] (] (ii) )

temp = Dtemp = D

D = CD = C

C = BC = B

B = ((A + B = ((A + ff + + KK[[ii] + w[] + w[gg]) ])

<<<<<< R[ R[ii]) + B ]) + B

A = temp A = temp

Page 26: Chủ đề 9: Hàm băm mật mã Hash & MAC

Chu kỳ xử lý trong MD5Chu kỳ xử lý trong MD5

0 ≤ 0 ≤ ii ≤ 15 ≤ 15

ff := (B := (B C) C) (( (( B) B) D) D)

gg := := ii

16 ≤ 16 ≤ ii ≤ 31 ≤ 31

ff := (D := (D B) B) (( (( D) D) C) C)

gg := (5× := (5×ii + 1) + 1) modmod 16 16

32 ≤ 32 ≤ ii ≤ 47 ≤ 47

ff := B := B C C D D

gg := (3× := (3×ii + 5) + 5) modmod 16 16

48 ≤ 48 ≤ ii ≤ 63 ≤ 63

ff := C := C (B (B ( ( D)) D))

gg := (7× := (7×ii) ) modmod 16 16

Page 27: Chủ đề 9: Hàm băm mật mã Hash & MAC

SHA1SHA1

Phương pháp Secure Hash Standard (SHS hay SHA1) Phương pháp Secure Hash Standard (SHS hay SHA1) do NIST và NSA xây dựng được công bố trên Federal do NIST và NSA xây dựng được công bố trên Federal Register vào ngày 31 tháng 1 năm 1992 và sau đó Register vào ngày 31 tháng 1 năm 1992 và sau đó chính thức trở thành phương pháp chuẩn từ ngày 13 chính thức trở thành phương pháp chuẩn từ ngày 13 tháng 5 năm 1993. tháng 5 năm 1993.

Thông điệp được xử lý theo từng khối 512-bitThông điệp được xử lý theo từng khối 512-bit

Thông điệp rút gọn độ dài 160-bitThông điệp rút gọn độ dài 160-bit

Page 28: Chủ đề 9: Hàm băm mật mã Hash & MAC

SHA1SHA1

Khởi gán các biến:Khởi gán các biến: h0 := 0x67452301 h0 := 0x67452301 h1 := 0xEFCDAB89 h1 := 0xEFCDAB89 h2 := 0x98BADCFE h2 := 0x98BADCFE h3 := 0x10325476 h3 := 0x10325476 h4 := 0xC3D2E1F0 h4 := 0xC3D2E1F0

Page 29: Chủ đề 9: Hàm băm mật mã Hash & MAC

SHA1SHA1

Tiền xử lý:Tiền xử lý:

Thêm bit 1 vào cuối thông điệpThêm bit 1 vào cuối thông điệp

Thêm vào k bit 0 sao cho độ dài thông điệp nhận Thêm vào k bit 0 sao cho độ dài thông điệp nhận được đồng du 448 (mod 512)được đồng du 448 (mod 512)

Thêm 64 bit biểu diễn độ dài dài của thông điệp Thêm 64 bit biểu diễn độ dài dài của thông điệp gốc (giá trị lưu dạng big-endian)gốc (giá trị lưu dạng big-endian)

MMMM 1111 0…00…00…00…0

1 bit1 bit k bitk bitmm bit bit

mmmm

64 bit64 bit

Bội số của 512Bội số của 512

Page 30: Chủ đề 9: Hàm băm mật mã Hash & MAC

SHA1SHA1

Chia thông điệp (đã padding) thành các khối 512 bitChia thông điệp (đã padding) thành các khối 512 bit

Với mỗi khối 512-bit:Với mỗi khối 512-bit:

Chia thành 16 word (32 bit, big-endian) w[0..15]Chia thành 16 word (32 bit, big-endian) w[0..15]

Mở rộng 16 word (32 bit) thành 80 word (32 bit)Mở rộng 16 word (32 bit) thành 80 word (32 bit)

w[i]=(w[i-3]w[i]=(w[i-3] w[i-8] w[i-8] w[i-14] w[i-14] w[i-16]) w[i-16]) <<<<<< 1 1 với 16 với 16 i < 80 i < 80

A= h0, B= h1, C= h2, D= h3, E= h4A= h0, B= h1, C= h2, D= h3, E= h4

80 chu kỳ xử lý80 chu kỳ xử lý

h0+=A, h1+=B, h2+=C, h3+=D, h4+=Eh0+=A, h1+=B, h2+=C, h3+=D, h4+=E

Kết quả:= h0 | h1 | h2 | h3 | h4Kết quả:= h0 | h1 | h2 | h3 | h4

Page 31: Chủ đề 9: Hàm băm mật mã Hash & MAC

Chu kỳ xử lý trong SHA1Chu kỳ xử lý trong SHA1

tt là số thứ tự của chu kỳ là số thứ tự của chu kỳ

A, B, C, D, E là 5 word A, B, C, D, E là 5 word (32 bit) của trạng thái(32 bit) của trạng thái

FF là hàm phi tuyến (thay là hàm phi tuyến (thay đổi tùy theo chu kỳ) đổi tùy theo chu kỳ)

<<< n<<< n là phép quay trái là phép quay trái nn vị trí vị trí

⊞ ⊞ phép cphép cộngộng modulo 2 modulo 23232. .

KKtt là hằng số là hằng số

Page 32: Chủ đề 9: Hàm băm mật mã Hash & MAC

Chu kỳ xử lý trong SHA1Chu kỳ xử lý trong SHA1

forfor ii fromfrom 0 to 79 0 to 79

f f = = FF[[tt] (B, C, D) ] (B, C, D)

temp = (A temp = (A <<<<<< 5) + 5) + ff + E + E

+ + KKtt + w[ + w[ii] ]

E = DE = D

D = CD = C

C = B C = B <<< <<< 30 30

B = AB = A

A = temp A = temp

Page 33: Chủ đề 9: Hàm băm mật mã Hash & MAC

Chu kỳ xử lý trong SHA1Chu kỳ xử lý trong SHA1

7960 ,

5940 ,

3920 ,

190 ,

,,

tZYX

tZYZXYX

tZYX

tZXYX

ZYXtF

7960 ,

5940 ,

3920 ,

190 ,

,,

tZYX

tZYZXYX

tZYX

tZXYX

ZYXtF

7960,

5940,

3920,

190,

t

t

t

t

K t

0xca62c1d6

0x8f1bbcdc

0x6ed9eba1

0x5a827999

7960,

5940,

3920,

190,

t

t

t

t

K t

0xca62c1d6

0x8f1bbcdc

0x6ed9eba1

0x5a827999

Page 34: Chủ đề 9: Hàm băm mật mã Hash & MAC

Chu kỳ xử lý trong SHA1Chu kỳ xử lý trong SHA1

Công thức của hàm F[t] có thể được viết lại như sau:Công thức của hàm F[t] có thể được viết lại như sau:

7960 ,

5940 ,

3920 ,

190 ,

,,

tYXZYX

tYXZYX

tYXZYX

tZYXZ

ZYXtF

7960 ,

5940 ,

3920 ,

190 ,

,,

tYXZYX

tYXZYX

tYXZYX

tZYXZ

ZYXtF

Page 35: Chủ đề 9: Hàm băm mật mã Hash & MAC

Nhóm hàm băm SHANhóm hàm băm SHA

011010011101

SHA-1SHA-1

SHA-384SHA-384SHA-256SHA-256

SHA-224SHA-224SHA-512SHA-512

Secure Hash Standard

1994 2004

20022002

2002

Page 36: Chủ đề 9: Hàm băm mật mã Hash & MAC

Các thuật toán SHACác thuật toán SHA

Thuật Thuật toántoán

Kết Kết quảquả(bit)(bit)

Trạng Trạng thái thái (bit)(bit)

Khối Khối (bit)(bit)

Thông Thông điệp điệp

tối đa tối đa (bit)(bit)

Word Word (bit)(bit)

# # chu chu kỳkỳ

Thao tácThao tác Đụng Đụng độđộ

SHA-0SHA-0 160160 160160 512512 226464 − 1 − 1 3232 8080 +,and,or,+,and,or,xor,rotlxor,rotl

CóCó

SHA-1SHA-1 160160 160160 512512 226464 − 1 − 1 3232 8080 +,and,or,+,and,or,xor,rotlxor,rotl

226363 thao thao táctác

SHA-SHA-256/224256/224

256/256/224224

256256 512512 226464 − 1 − 1 3232 6464 +,and,+,and,or,xor, or,xor, shr,rotrshr,rotr

ChưaChưa

SHA-SHA-512/384512/384

512/512/384384

512512 10241024 22128128 − 1 − 1 6464 8080 +,and,+,and,or,xor,or,xor,shr,rotrshr,rotr

ChưaChưa

Page 37: Chủ đề 9: Hàm băm mật mã Hash & MAC

Sử dụng SHASử dụng SHA

Loại ƯDLoại ƯD Sử dụng thông thườngSử dụng thông thường Suite BSuite B

Thuật toánThuật toán Đến 2010Đến 2010 Sau 2010Sau 2010 SecretSecret Top SecretTop Secret

SHA-1SHA-1

SHA-224SHA-224

SHA-256SHA-256

SHA-384SHA-384 SHA-512SHA-512

Nguồn: NIST Cryptographic Standards Status Report April 4, 2006

Bill BurrManager, Security Technology Group

[email protected]

Page 38: Chủ đề 9: Hàm băm mật mã Hash & MAC

Message authentication code (MAC)Message authentication code (MAC)

Mục đích: xác định nguồn gốc của thông tinMục đích: xác định nguồn gốc của thông tin

Page 39: Chủ đề 9: Hàm băm mật mã Hash & MAC

MAC và chữ ký điện tửMAC và chữ ký điện tử

Phát sinh MAC và kiểm tra MAC sử dụng chung khóa Phát sinh MAC và kiểm tra MAC sử dụng chung khóa bí mật (secret key)bí mật (secret key)

Người gửi và người nhận phải thỏa thuận trước khóa Người gửi và người nhận phải thỏa thuận trước khóa bí mật (giống mã hóa đối xứng)bí mật (giống mã hóa đối xứng)

Không hỗ trợ việc chống từ chối trách nhiệm (non-Không hỗ trợ việc chống từ chối trách nhiệm (non-repudiation)repudiation)

Page 40: Chủ đề 9: Hàm băm mật mã Hash & MAC

Message authentication code (MAC)Message authentication code (MAC)

MAC có thể được tạo ra từ hàm băm mật mã MAC có thể được tạo ra từ hàm băm mật mã (HMAC) hay từ giải thuật mã hóa theo khối (OMAC, (HMAC) hay từ giải thuật mã hóa theo khối (OMAC, CBC-MAC, PMAC)CBC-MAC, PMAC)

Page 41: Chủ đề 9: Hàm băm mật mã Hash & MAC

Keyed-hash message authentication code Keyed-hash message authentication code

Mihir Bellare, Ran Canetti, Hugo Krawczyk (1996 )Mihir Bellare, Ran Canetti, Hugo Krawczyk (1996 )

Page 42: Chủ đề 9: Hàm băm mật mã Hash & MAC

Keyed-hash message authentication codeKeyed-hash message authentication code

functionfunction hmac (key, message) hmac (key, message) opad = [0x5c * blocksize] opad = [0x5c * blocksize] ipad = [0x36 * blocksize] ipad = [0x36 * blocksize] ifif (length(key) > blocksize) (length(key) > blocksize) thenthen

key = hash(key)key = hash(key)end ifend if forfor i i fromfrom 0 0 toto length(key) length(key) stepstep 1 1

ipad[i] ^= key[i] ipad[i] ^= key[i] opad[i] ^= key[i] opad[i] ^= key[i]

end forend for returnreturn hash(opad || hash(ipad || message)) hash(opad || hash(ipad || message))

Page 43: Chủ đề 9: Hàm băm mật mã Hash & MAC

CBC-MACCBC-MAC

Cách tấn công?Cách tấn công?Tham khảo: CMACTham khảo: CMAC