ĐẠI HỌC CÔNG NGHỆ
ĐẠI HỌC QUỐC GIA HÀ NỘI
BÁO CÁO MÔN HỌC
MẬT MÃ VÀ AN TOÀN THÔNG TIN
Giảng viên: PGS.TS. Trịnh Nhật Tiến
Học viên: Phan Thị Thơm
HÀ NỘI – 2013
Hàm băm MD4 Page 1
Mục Lục
Hàm băm MD4 Page 2
I. Giới thiệu về hàm băm
1. Giới thiệu
Hàm băm (Hash function) là một hàm toán học chuyển đổi một thông điệp đầu vào có
độ dài bất kỳ thành một dãy bit có độ dài cố định (tuỳ thuộc vào thuật toán băm). Dãy bit
này được gọi là thông điệp rút gọn (message digest) hay giá trị băm (hash value), đại diện
cho thông điệp ban đầu.
Hàm băm (hash function) là hàm một chiều mà nếu đưa một lượng dữ liệu bất kì qua
hàm này sẽ cho ra một chuỗi có độ dài cố định ở đầu ra.
2. Tính chất cơ bản của hàm băm
• Tính một chiều: không thể suy ra dữ liệu ban đầu từ kết quả, điều này tương tự
như việc bạn không thể chỉ dựa vào một dấu vân tay lạ mà suy ra ai là chủ của
nó được.
Hàm băm MD4 Page 3
• Tính duy nhất: xác suất để có một vụ va chạm (hash collision), tức là hai
thông điệp khác nhau có cùng một kết quả hash là cực kỳ nhỏ.
3. Ứng dụng của hàm băm
• Xác thực mật khẩu
Mật khẩu thường không được lưu dưới dạng văn bản rõ (clear text), mà ở dạng
tóm tắt. Để xác thực một người dùng, mật khẩu do người đó nhập vào được băm ra bằng
hàm Hash và so sánh với kết quả băm được lưu trữ.
.
Mở rộng bản tin: Thêm các bít vào bản tin để bản tin có chiều dài là bội của 512.
Quá trình thêm diễn ra như sau. Thêm bít 1 vào cuối bản tin, sau đó thêm vào một số bít 0
để nhận bản tin có chiều dài là đồng dư với 448 modulo 512, và cuối cùng thêm vào 64
bít, 64bít này biểu diễn chiều dài của bản tin ban đầu. Bản tin được thêm vào bao gồm
các khối M
1
, M
2
, … , M
n
, chiều dài mỗi khối là 32 bít.
Đầu ra: 128 bít là liên kết của 4 từ 32 bít:A|B|C|D.
Hàm băm MD4 chủ yếu thực hiện nhờ các phép toán logic và một phép cộng theo
modulo 2
32
nên thuật toán chạy rất nhanh, thích ứng với việc sử lý bản tin có độ lớn. Tuy
nhiên thuật toán MD4 tồn tại một số hạn chế. Cụ thể là có thể tìm thấy va chạm nếu sử
dụng 2 vòng. Vì điểm yếu này mà MD5 ra đời thay thế cho MD4.
2. Nội dung thuật toán
“Thông điệp đệm” (Messege Padding) là xâu bit có độ dài chia hết cho 512.
“Thông điệp đệm” được lưu trong mảng M = M[0] M[1] … M[N-1]. Trong đó M[i]
là xâu bit có độ dài 32 bit, gọi là word.
N ≡ 0 mod 16. (32 bit x 16 đoạn = 512 bit).
M được xây dựng từ Bản tin gốc a bằng thuật toán:
1/. d = 447 – ( |a| mod 512) ≥ 0. (d = 512 nếu 447< |a| mod 512).
2/. Kí hiệu l là biểu diễn nhị phân của |a| mod 2
64
, tl: | l | = 64.
3/. M = a || 1 || 0
4
+ 2
3
= (11000 )
2
= (
so59
00 00
11000 )
2
=> Độ dài của l là |l| = |
so59
00 00
11000| = 59 + 5 = 64.
M = a || 1 || 0
d
|| l
=> M = 01000001 01000010 01000011 || 1 ||
so423
00 00
||
so59
00 00
11000
M = M[0] M[1] … M[N-1], N
≡
7.0
Môi trường phát
triển
https://netbeans.org/c
ommunity/releases/
2. Tiến hành thực thi và kết quả
• Chương trình được xây dựng gồm các file sau:
Md4.java: File chương trình chính bao gồm thuật toán MD4
HamBamDongMD4AboutBox.java : File giao diện About của chương trình
HamBamDongMD4App.java và HamBamDongMD4View.java: File giao diện
chính của chương trình
• Giao diên chương trình như sau:
Hàm băm MD4 Page 9
Hàm băm MD4 Page 10