Tải bản đầy đủ (.pdf) (65 trang)

Nghiên cứu độ an toàn của hàm băm MD5

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.46 MB, 65 trang )


Số hóa bởi Trung tâm Học liệu












NGUYỄN HỮU HỒNG





NGHIÊN CỨU
ĐỘ AN TỒN CỦA HÀM BĂM MD5






LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH













Thái Ngun - 2013
ĐẠI HỌC THÁI NGUN
TRƢỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN VÀ TRUYỀN THƠNG

Số hóa bởi Trung tâm Học liệu




Số hóa bởi Trung tâm Học liệu



Số hóa bởi Trung tâm Học liệu



ĐẠI HỌC THÁI NGUN
TRƢỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN VÀ TRUYỀN THƠNG








NGUYỄN HỮU HỒNG





NGHIÊN CỨU
ĐỘ AN TỒN CỦA HÀM BĂM MD5
Chun

ngành:
Khoa học máy tính

Mã số: 60 48
01



LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH



NGƢỜI HƢỚNG DẪN KHOA HỌC
TS. Hồ Văn Canh







Thái Ngun - 2013
i

Số hóa bởi Trung tâm Học liệu

MỤC LỤC

MỞ ĐẦU 1
CHƢƠNG 1 LÝ THUYẾT VỀ HÀM BĂM 2
1.1. Định nghĩa hàm băm 2
1.2. Các tính chất của hàm băm 3
1.3. Xung đột băm 3
1.4. Ứng dụng 4
1.5. Một số hàm băm phổ biến 4
1.5.1. Hàm băm MD4 6
1.5.2. Hàm băm SHA-1 6
1.5.3. Hàm băm SHA-256 8
1.5.4. Hàm băm SHA-384, SHA-512 10
CHƢƠNG 2 HÀM BĂM MD5 15
2.1. Giới thiệu 15
2.2. Khái niệm 15
2.3. Ứng dụng 16
2.4. Thuật giải 16
2.5. Sự khác nhau MD4 và MD5 24

CHƢƠNG 3 ĐÁNH GIÁ ĐỘ AN TỒN MD5 DỰA TRÊN THỬ NGHIỆM
TẤN CƠNG 25
3.1. Tấn cơng hàm băm 25
3.2. Các phƣơng pháp tấn cơng hàm băm phổ biến 25
3.2.1. Tấn cơng dựa trên lý thuyết ngày sinh 25
3.2.2. Tấn cơng mở rộng chiều dài trên MD5 (Length-Extension Attack)27
3.2.3. Tấn cơng thuật tốn 29
3.2.4. Tấn cơng theo ngun lý vét cạn 36
ii

Số hóa bởi Trung tâm Học liệu

3.3. Đánh giá độ an tồn MD5 dựa trên việ
GPU 36
3.3.1. Những ƣu điểm của GPU so với CPU 37
3.3.2. Sử dụ 5 39
3.3.3. Kết luận về độ an tồn MD5 48
KẾT LUẬN 52
TÀI LIỆU THAM KHẢO 53

iii

Số hóa bởi Trung tâm Học liệu

LỜI CẢM ƠN

Đầu tiên, tơi xin gửi lời cảm ơn chân thành và sắc nhất tới Tiến sỹ Hồ
Văn Canh, thầy đã tận tình chỉ bảo và giúp đỡ tơi trong suốt q trình làm
luận văn. Bên cạnh những kiến thức tơi còn học hỏi đƣợc ở thầy tinh thần làm
việc khoa học và nghiêm túc.

Tơi xin chân thành cám ơn tới Khoa CNTT Trƣờng Đại học Cơng nghệ
thơng tin và Truyền thơng, các thầy cơ đã giúp đỡ và tận tình truyền đạt các
kiến thức cho tơi trong suốt q trình học tập và nghiên cứu. Tơi xin cảm ơn
ban chủ nhiệm khoa và các cán bộ đã tạo điều kiện tốt nhất cho chúng tơi
trong q trình học tập và hồn thành luận văn của mình.
Tơi xin bày tỏ lòng biết ơn tới gia đình, bạn bè, đồng nghiệp và những
ngƣời thân đã động viên khích lệ tinh thần và giúp đỡ tơi hồn thành luận văn này.










iv

Số hóa bởi Trung tâm Học liệu

LỜI CAM ĐOAN

Tơi xin cam đoan, tồn bộ nội dung liên quan tới đề tài đƣợc trình bày
trong luận văn là bản thân tơi tự tìm hiểu và nghiên cứu, dƣới sự hƣớng dẫn
của Thầy giáo TS. Hồ Văn Canh.
Các tài liệu, số liệu tham khảo đƣợc trích dẫn đầy đủ nguồn gốc. Tơi
xin chịu trách nhiệm trƣớc pháp luật lời cam đoan của mình.

Học viên thực hiện



Nguyễn Hữu Hồng











v

Số hóa bởi Trung tâm Học liệu

THUẬT NGỮ VIẾT TẮT

Số thứ tự
Thuật Ngữ
Tên Đầy Đủ
1
MAC
Message Authentication Code
2
HMAC
Keyed-Hash Message Authentication Code
3

opad
Outer pad
4
ipad
Inner pad
5
SHA
Secure Hash Algorithm
6
MD
Merkle-Damgård
7
TLS
Transport Layer Security
8
CA
Certification Authority
9
IPSec
Internet Protocol Security
10
GPU
Graphic Proccessing Unit
11
SM
Streaming Multiprocessor






vi

Số hóa bởi Trung tâm Học liệu

Ý NGHĨA CÁC KÝ HIỆU

Số thứ tự
Ký hiệu
Ý nghĩa
1

Phép tốn XOR
2
<<<
Phép dịch bít vòng
3
||
Phép ghép chuỗi
4

Phép OR
5

Phép AND
6

Phép phủ định
7
+

Phép cộng module 2
32

8
ROTR
n
(x)
Dịch xoay vòng x sang bên phải n bít
9
SHR
n
(x)
Dịch bít của số x sang bên phải n bít










vii

Số hóa bởi Trung tâm Học liệu

DANH MỤC HÌNH VẼ

Hình 1.2. Cấu trúc lặp của hàm băm MD 5

Hình 2.1. Thuật tốn mơ tả MD5/SHA-1 19
Hình 3.1. Cấu trúc lặp Merkle-Damgård (sao chép từ Wikipedia) 28
Hình 3. 2. Tấn cơng mở rộng chiều dài 28
Hình 3. 3. Biểu đồ so sánh sự phát triển của GPU và CPU 38
Hình 3.4. So sánh số nhân của GPU và CPU 38
Hình 3.5. Mơ tả chiến lược kiểm tra mật khẩu song song 40
Hình 3. 6. Chia mật khẩu vào các nhóm 41
Hình 3.7. Tạo giá trị băm cho mật khẩu 49
Hình 3.8. Add giá trị băm của mật khẩu vào phần mềm 50
Hình 3.9. Q trình tạo và kiểm tra mật khẩu 50
Hình 3.10. Tìm kiếm mật khẩu thành cơng 51









viii

Số hóa bởi Trung tâm Học liệu

DANH MỤC BẢNG BIỂU
Bảng 1. 1.Bảng so sánh các loại hàm băm 13
Bảng 3.1. Kiểu tấn cơng các hàm băm 27
Bảng 3. 2. Modify multiple message 35
Bảng 3.16. So sánh tốc độ của Tạo và Kiểm tra các khóa trên CPU / GPU . 47
Bảng 3.17. Thời gian cho Phục hồi mật khẩu trên GPU 47

1

Số hóa bởi Trung tâm Học liệu

MỞ ĐẦU
Ngày nay, các giao dịch thƣơng mại qua mạng internet trở nên rất phổ
biến và do đó cần phải có biện pháp để đảm bảo an tồn cho các giao dịch
này. Một trong các biện pháp đó là việc sử dụng hàm băm (hash function)
trong cơng tác bảo an. Hàm băm khơng những đảm bảo đƣợc sự tồn vẹn của
các giao dịch mà còn có thể đảm bảo sự bí mật về dữ liệu của các bên giao
dịch[1][2]. Ngƣời ta đã khẳng định rằng: “sự ra đời của các hệ mật mã khóa
cơng khai cùng với các hàm băm là một cuộc cách mạng của kỹ thuật mật mã
và đƣợc coi nhƣ một phƣơng thức mật mã khơng dùng khóa”[2]. Hàm băm
cũng đóng vai trò hết sức quan trọng trong việc ứng dụng chứng chỉ số mà cụ
thể nhất là trong chữ kí số. Ngồi ra, hàm băm còn là một cơng cụ hữu hiệu
để bảo vệ các passwords ngƣời dùng và bảo vệ dữ liệu có hiệu quả trong các
cơ sở dữ liệu phân tán. Hiện nay, hàm băm đƣợc sử dụng nhiều ở Việt Nam
cũng nhƣ trên thế giới là MD5 và họ SHA. Do tầm quan trọng của hàm băm
mà hiện nay đã có nhiều cơng trình nghiên cứu về hàm băm và mức độ an
tồn của chúng[3][4][5][6].
Vậy, một câu hỏi đƣợc đặt ra hiện nay là: Mức độ an tồn của các hàm
băm đến đâu trong thực tế khi mà cơng nghệ tính tốn ngày càng phát triển
mạnh mẽ nhƣ hiện nay? Trong Luận v
thơng điệp MD5[14][16][17].





2


Số hóa bởi Trung tâm Học liệu

Chƣơng 1
LÝ THUYẾT VỀ HÀM BĂM

1.1. Định nghĩa hàm băm
Hàm băm H nhận đầu vào là chuỗi dữ liệu M có chiều dài bất kỳ và tạo
ra chuỗi đầu ra (hay còn gọi là "hash value") có chiều dài cố định theo cơng
thức sau.
h = H (M).
Ví dụ minh họa về hàm băm.

Hình 1.1. Minh họa về hàm băm
- h đƣợc gọi là giá trị đầu ra của hàm băm, có chiều dài cố định (h còn
gọi là message digest hoặc hash value).
- M là bức thơng điệp có chiều dài bất kỳ hữu hạn (chiều dài của M
khơng vƣợt q
64
2
bít, nếu chiều dài của M vƣợt q
64
2
bít thì chỉ có
64
2

bít đầu đƣợc sử lý, còn tất cả các bít đƣợc bỏ qua trong q trình tính tốn của
hàm băm).
3


Số hóa bởi Trung tâm Học liệu

- Hàm băm đƣợc sử dụng trong việc mã hóa password, chữ ký số, giao
dịch điện tử, kiểm tra sự tồn vẹn của một file, v.v. Hàm băm đƣợc sử dụng
phổ biến nhất là hàm băm một chiều (one-way) MD5 và SHA-*[9][12]
1.2. Các tính chất của hàm băm
Tính chất 1: Hàm băm H là khơng va chạm yếu.
Hàm băm H phải có phi xung đột yếu (weak-collision) cao, điều đó có
nghĩa là cho trƣớc M ta khó có thể tìm đƣợc bức thơng điệp M’ M sao cho
H(M) = H(M’) .
Tính chất 2: Hàm băm H là khơng va chạm mạnh.
Hàm băm H có tính phi đụng độ cao (strong collision), điều đó có nghĩa
là ta khó có thể tìm đƣợc cặp thơng điệp (M, M’) M’ M sao cho
H(M)=H(M’).
Tính chất 3: Hàm băm H là hàm một chiều.
Hàm băm H có tính một chiều (one-way) có nghĩa là cho trƣớc M việc
tính H(M) đƣợc thực hiện nhanh chóng nhƣng nếu cho trƣớc giá trị H(M) thì
sẽ khó có thể tìm đƣợc giá trị M[9].
1.3. Xung đột băm
Có nghĩa là hai thơng điệp khác nhau khi băm thì chúng tạo ra cùng giá
trị băm. Gọi M, M’ là hai thơng điệp sao cho M M’, H là hàm băm, xung đột
băm xảy ra khi H(M)=H(M’).
Về mặt lý thuyết thì hồn tồn ta có thể tìm đƣợc hai thơng điệp khác
nhau mà chúng cho ra cùng một giá trị băm, nhƣng thực tế việc này làm rất
khó khăn, và ngay cả khi chúng ta tạo đƣợc hai thơng điệp với nội dung khác
nhau nhƣng chúng cùng tạo ra giá trị băm, nhƣng nội dung đó khơng có ý
nghĩa với con ngƣời có nghĩa là nếu cho trƣớc một thơng điệp ta hồn tồn có
thể tìm đƣợc thơng điệp thứ hai khác tạo ra cùng giá trị băm nhƣng chúng ta
4


Số hóa bởi Trung tâm Học liệu

khó có thể điều khiển đƣợc nội dung thơng điệp này sao cho nó có ý nghĩa với
con ngƣời, do vậy có thể kết luận các hàm băm hiện tại vẫn đủ an tồn[9].
1.4. Ứng dụng
Hàm băm đƣợc sử dụng rộng rãi trong thế giới phần mềm để đảm bảo
rằng tập tin tải về khơng bị hỏng. Ngƣời sử dụng có thể so sánh giữa thơng số
kiểm tra phần mềm bằng Hàm băm đƣợc cơng bố với thơng số kiểm tra phần
mềm tải về bằng Hàm băm. Hệ điều hành Unix sử dụng MD5 để kiểm tra các
gói mà nó phân phối, trong khi hệ điều hành Windows sử dụng phần mềm của
hãng thứ ba.
Hàm băm cũng đƣợc dùng để mã hóa mật khẩu. Mục đích của việc mã
hóa này là biến đổi một chuổi mật khẩu thành một đoạn mã khác, sao cho từ
đoạn mã đó khó có thể lần trở lại mật khẩu. Có nghĩa là việc giải mã là khơng
thể hoặc phải mất một khỗng thời gian vơ tận (đủ để làm nản lòng các
hacker).
Tạo mã chứng thực thơng điệp ứng dụng trong chứng chỉ số, sự ra đời
của các hệ mật mã khóa cơng khai cùng với các hàm băm là một cuộc cách
mạng của kỹ thuật mật mã. Chính vì vậy nhiều ngƣời nói rằng hàm băm là
một phƣơng thức mật mã khơng dùng khóa.
Một ứng dụng quan trọng khơng thể thiếu đối với hàm băm là ứng dụng
trong chữ ký số[2][12][13].
1.5. Một số hàm băm phổ biến
Các hàm băm chúng ta xem xét dƣới đây có hai thành phần chính.
Thành phần đầu tiên là hàm nén nhận đầu vào là một chuỗi có chiểu dài bất kì
và giá trị chaining variable (giá trị khởi tạo) và cho đầu ra là chuỗi có chiều
dài cố định.
Thành phần thứ 2 là hàm chuẩn chuỗi đầu vào, hàm này có nhiệm vụ biến
chuỗi đầu vào có chiều dài bất kì thành chuỗi các bít, mà chuỗi này là có

5

Số hóa bởi Trung tâm Học liệu

chiều dài là bội số của các khối message block(có chiều dài là 512 hoặc 1024
bit). Ở thời điểm bắt đầu các “chaining variable” có giá trị khởi tạo (giá trị
khởi tạo này là tùy thuộc vào hàm băm), và giá trị cuối cùng của các chaining
variable chính là giá trị của hàm băm [1][2][4][5].
Thuật tốn chung cho các hàm băm này nhƣ sau.

Thuật tốn trên hàm băm C đƣợc lặp nhiều lần, đầu vào của lần lặp sau
là khối block message có chiều dài là 512 hoặc 1024 bít (chiều dài các block
message là 512 hay 1024 bít là tùy thuộc vào thuật tốn) và giá trị của
chainging variable của vòng trƣớc, ta có thể mơ hình nhƣ sau:
Hình 1.1. Cấu trúc lặp của hàm băm MD
6

Số hóa bởi Trung tâm Học liệu

1.5.1. Hàm băm MD4
MD4 (Message-Digest thuật tốn 4) là một thuật tốn (thứ tƣ trong loạt
a) đƣợc thiết kế bởi Giáo sƣ Ronald Rivest của MIT vào năm 1990. Nó thực
hiện một hàm băm mật mã để sử dụng trong kiểm tra tính tồn vẹn thơng
điệp. Chiều dài của giá trị băm là 128 bit.
Thuật tốn MD4 nhận dữ liệu đầu vào là một chuỗi bit x có chiều dài b
>= 0 tùy ý và sinh ra mã băm của x có chiều dài cố định 128 bit. Trƣớc tiên
chuỗi bit x đƣợc định dạng lại bằng cách thêm r > 0 bit phụ thuộc vào x sao
cho chiều dài của chuỗi bit mới là b’ = b + r là bội số của 512.
Sau đó chia chuỗi bit mới này thành m khối, mỗi khối có độ dài đúng bằng
512 bit. Mỗi khối bit này lại chia thành 16 từ, mỗi từ có 32 bit.

Thuật tốn MD4 tuần tự xử lý dãy m khối trong m lƣợt tính tốn. Dữ
liệu đầu vào tại lƣợt tính tốn thứ k (1 <= k <= m) là khối thứ k trong dãy và
mã băm nhận đƣợc sau (k-1) lƣợt tính tốn trƣớc đó ( mã băm đầu vào ứng
với k = 1 đã đƣợc khởi tạo từ trƣớc )
Tại lƣợt tính tốn thứ k này, khối dữ liệu đầu vào 512 bit liên tiếp đi qua 3
vòng tính tốn, trong mỗi vòng gồm có 16 bƣớc, mỗi bƣớc thực hiện tính
tốn với dữ liệu là một từ trong dãy và các kết quả nhận đƣợc sau bƣớc
trƣớc. Kết quả sau khi qua 3 vòng tính tốn trên sẽ đƣợc kết hợp với mã băm
trƣớc đó để sinh ra mã băm mới (cho lƣợt tính tốn thứ k). Sau khi đã xử lý
hết m khối, mã băm nhận đƣợc sau cùng là kết quả ta cần tìm [9].
1.5.2. Hàm băm SHA-1
Thuật tốn cho hàm băm này nhận đầu vào là bức thơng điệp có chiều
dài hữu hạn bất kỳ cho đầu ra là chuỗi có chiều dài cố định, hàm băm SHA-1
có chiều dài đầu ra là 160 bit.
- Việc đệm đƣợc thực hiện tƣơng tự việc đệm trong thuật tốn cho hàm
băm MD5.
7

Số hóa bởi Trung tâm Học liệu

- Chia bức thơng điệp thành các khối 512 bit.
- Thực hiện việc khởi tạo cho các biến chaining variable nhƣ sau:
H
)0(
0
=0x67452301
H
)0(
1
=0xefcdab89

H
)0(
2
=0x98badcfe
H
)0(
3
=0x10325476
H
)0(
4
=0xc3d2e1f0.
- Thực hiện sử lý các khối.
Xây dựng hàm biến đổi khối đầu vào theo cơng thức sau.

- Khởi tạo các biến làm việc nhƣ sau ở vòng thứ i-1.
a=H
)1(
0
i

b=H
)1(
1
i

c=H
)1(
2
i


d=H
)1(
3
i

e=H
)1(
4
i

- Thực hiện việc biến đổi nhƣ sau.
For (t=0; t<=79; t++)
{
T =
5
ROLT
(a) +
t
f
(b, c, d) + e + K
t
+W
t

e=d
d=c
c=
30
ROLT

(b)
b=a
8

Số hóa bởi Trung tâm Học liệu

a=T
}
- Tính tốn chuỗi đầu ra nhƣ sau.
H
)(
0
i
= a + H
)1(
0
i

H
)(
1
i
= b + H
)1(
1
i

H
)(
2

i
= c + H
)1(
2
i

H
)(
3
i
= d + H
)1(
3
i

H
)(
4
i
= e + H
)1(
4
i

1.5.3. Hàm băm SHA-256
Thuật tốn này nhận chiều vào là bức thơng điệp có chiều dài bất kì
hữu hạn cho đầu ra là chuỗi có chiều dài cố định là 256 bít.
- Việc đệm đƣợc thực hiện tƣơng tự việc đệm trong thuật tốn cho hàm
băm MD5.
- Chia bức thơng điệp thành các khối 512 bit.

- Thực hiện việc khởi tạo cho các biến chaining variable nhƣ sau:
H
)0(
0
=0x6a09e667
H
)0(
1
=0xbb67ae85
H
)0(
2
=0x3c6ef372
H
)0(
3
=0xa54ff53a
H
)0(
4
=0x510e527f.
H
)0(
5
=0x9b05688c
H
)0(
6
=0x1f83d9ab
H

)0(
7
=0x5be0cd19
Thực hiện sử lý các khối.
- Xây dựng hàm biến đổi khối đầu vào theo cơng thức sau
9

Số hóa bởi Trung tâm Học liệu


- Khởi tạo các biến làm việc nhƣ sau .
a=H
)1(
0
i

b=H
)1(
1
i

c=H
)1(
2
i

d=H
)1(
3
i


e=H
)1(
4
i

f=H
)1(
5
i

g=H
)1(
6
i

h=H
)1(
7
i

- Thực hiện việc biến đổi nhƣ sau
For (i=0; i<=63; i++)
{
T
1
= h+
}256{
1
)(e

+ Ch (e, f, g) +K
}256{
t
+W
t

T
2
=
}256{
0
)(a
+Maj (a, b, c)
h = g
g = f
f = e
e=d + T
1

d = c
c = b
b = a
a= T
1
+ T
2

10

Số hóa bởi Trung tâm Học liệu


}
- Tính tốn kết quả cuối cùng nhƣ sau.
H
)(
0
i
= a + H
)1(
0
i

H
)(
1
i
= b + H
)1(
1
i

H
)(
2
i
= c + H
)1(
2
i


H
)(
3
i
= d + H
)1(
3
i

H
)(
4
i
= e + H
)1(
4
i

H
)(
5
i
= f + H
)1(
5
i

H
)(
6

i
= g + H
)1(
6
i

H
)(
7
i
= e + H
)1(
7
i

Trong đó:
Ch(x, y, z) = (x ^ y) (⌐x z)
Maj(x, y, z) = x ^ y) (y ^ z) (z ^ x).
}256{
0
)(x
= ROTR
2
(x) ROTR
13
(x) ROTR
22
(x)
}256{
1

)(x
= ROTR
6
(x) ROTR
11
(x) ROTR
25
(x)
}256{
0
= ROTR
7
(x) ROTR
18
(x) SHR
3
(x)
}256{
1
= ROTR
17
(x) ROTR
19
(x) SHR
10
(x)
1.5.4. Hàm băm SHA-384, SHA-512
Các thuật tốn này nhận đầu vào là bức thơng điệp có chiều dài bất kỳ
hữu hạn cho đầu ra (message digest) là chuỗi có chiều dài cố định (SHA-384,
SHA-512 là 1024 bit).

- Việc đệm đƣợc thực hiện tƣơng tự việc đệm trong thuật tốn cho hàm
băm MD5.
- Chia bức thơng điệp thành các khối 1024 bit.
11

Số hóa bởi Trung tâm Học liệu

- Thực hiện việc khởi tạo cho các biến chaining variable nhƣ sau:
Với hàm băm SHA-384 các giá trị chaining variable đƣợc khởi tạo nhƣ
sau:
H
)0(
0
=0xcbbb9d5dc1059ed8
H
)0(
1
=0x629a292a367cd507
H
)0(
2
=0x9159015a3070dd17
H
)0(
3
=0x152fecd8f70e5939
H
)0(
4
=0x67332667ffc00b31

H
)0(
5
=0x8eb44a8768581511
H
)0(
6
=0xdb0c2e0d64f98fa7
H
)0(
7
=0x47b5481dbefa4fa4
Với hàm băm SHA-512 các giá trị chaining variable đƣợc khởi tạo nhƣ sau:
H
)0(
0
=0x6a09e667f3bcc908
H
)0(
1
=0xbb67ae8584caa73b
H
)0(
2
=0x3c6ef372fe94f82b
H
)0(
3
=0xa54ff53a5f1d36f1
H

)0(
4
=0x510e527fade682d1
H
)0(
5
=0x9b05688c2b3e6c1f
H
)0(
6
=0x1f83d9abfb41bd6b
H
)0(
7
=0x5be0cd19137e2179.
- Thực hiện tiền sử lý các khối theo cơng thức sau:

12

Số hóa bởi Trung tâm Học liệu


- Khởi tạo các biến làm việc nhƣ sau.
a = H
)1(
0
i

b = H
)1(

1
i

c = H
)1(
2
i

d = H
)1(
3
i

e = H
)1(
4
i

f = H
)1(
5
i

g = H
)1(
6
i

h = H
)1(

7
i

For (i=0; i<=79; i++)
{
T
1
= h+
}512{
1
)(e
+ Ch (e, f, g) +K
}512{
t
+W
t

T
2
=
}512{
0
)(a
+Maj (a, b, c)
h = g
g = f
f = e
e=d + T
1


d = c
c = b
b = a
a= T
1
+ T
2

}
13

Số hóa bởi Trung tâm Học liệu

Tính tốn kết quả cuối cùng nhƣ sau.
H
)(
0
i
= a + H
)1(
0
i

H
)(
1
i
= b + H
)1(
1

i

H
)(
2
i
= c + H
)1(
2
i

H
)(
3
i
= d + H
)1(
3
i

H
)(
4
i
= e + H
)1(
4
i

H

)(
5
i
= f + H
)1(
5
i

H
)(
6
i
= g + H
)1(
6
i

H
)(
7
i
= e + H
)1(
7
i

Trong đó
Ch(x, y, z) = (x ^ y) (⌐x z)
Maj(x, y, z) = (x ^ y) (y ^ z) (z ^ x).
}512{

0
)(x
= ROTR
28
(x) ROTR
34
(x) ROTR
39
(x)
}512{
1
)(x
= ROTR
14
(x) ROTR
18
(x) ROTR
41
(x)
}512{
0
= ROTR
1
(x) ROTR
8
(x) SHR
7
(x)
}512{
1

= ROTR
19
(x) ROTR
61
(x) SHR
6
(x)
Tổng kết về các hàm băm trên [6]
Tên hàm
băm
Chiều dài khối
dữ liệu
Độ dài
từ
Chiều dài đầu
ra
Số
vòng
Năm cơng
bố
MD4
512
32
128
64
1990
SHA-1
512
32
160

80
1995
SHA-384
1024
64
384
80
2002
SHA-512
1024
64
512
80
2002
Bảng 1. 1.Bảng so sánh các loại hàm băm
14

Số hóa bởi Trung tâm Học liệu

1
Nội dung chƣơng 1 tập trung vào cơ sở lý thuyết của hàm băm, các
định nghĩa, tính chất, điều kiện xảy ra đụng độ và ứng dụng của hàm băm
trong thực tế.
Giới thiệu, khảo sát một số hàm băm đƣợc sử dụng nhiều trong thực tế
hiện nay nhƣ SHA-1, SHA-384, SHA-512 và đƣa ra sự so sánh.









×