Tải bản đầy đủ (.docx) (10 trang)

Tiểu luận MẬT MÃ VÀ AN TOÀN THÔNG TIN Hàm băm MD4

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 (233.94 KB, 10 trang )

ĐẠ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ữ.


• Xác thực thông điệp (Message authentication – Thông điệp tóm tắt
-message digests)
Giá trị đầu vào(tin nhắn, dữ liệu ) bị thay đổi tương ứng giá trị băm cũng bị thay
đổi. Do vậy nếu 1 kẻ tấn công phá hoại, chỉnh sửa dữ liệu thì server có thể biết ngay lập
tức.
• Bảo vệ tính toàn vẹn của tập tin, thông điệp được gửi qua mạng
Hàm băm mật mã có tính chất là hàm 1 chiều. Từ khối dữ liệu hay giá trị đầu vào
chỉ có thể đưa ra 1 giá trị băm duy nhất. Như chúng ta đã biết đối với tính chất của hàm 1
chiều. Một người nào đó dù bắt được giá trị băm họ cũng không thể suy ngược lại giá trị,
đoạn tin nhắn băm khởi điểm.
Ví dụ: việc xác định xem một file hay một thông điệp có bị sửa đổi hay không có
thể thực hiện bằng cách so sánh tóm tắt được tính trước và sau khi gửi (hoặc một sự kiện
bất kỳ nào đó). Còn có thể dùng tóm tắt thông điệp làm một phương tiện đáng tin cậy cho
việc nhận dạng file.
Hàm băm thường được dùng trong bảng băm nhằm giảm chi phí tính toán khi tìm
một khối dữ liệu trong một tập hợp. Giá trị băm đóng vai trò gần như một khóa để phân
biệt các khối dữ liệu.
• Tạo chữ ký điện tử (Digital signatures)
Chữ ký số có được bằng cách đem mã hoá bản tóm tắt của thông điệp bằng khoá
bí mật của người ký.
Hàm băm MD4 Page 4
• Chứng thực bằng chữ ký số
Nếu kết quả băm giống nhau, Thông điệp được xác thực. Đây là một ứng dụng cực
kỳ quan trọng của hàm Hash, đặc biệt là trong thương mại điện tử.
Hàm băm MD4 Page 5
II. Hàm băm MD4
1. Giới thiệu
Hàm hash MD4 được Rivest đề xuất năm 1990. Hàm băm MD4 được mô tả như sau:
Đầu vào: Bản tin M có chiều dài nhỏ hơn 2
64

.
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

d
|| l, d là số bit 0 ghép thêm vào M cho đủ độ dài 512.
Hàm băm MD4 Page 6
* Độ dài của xâu a || 1 || 0
d
là |a| + 1 + d = 448 mod 512.
* Độ dài của “Thông điệp đệm” M là
(|a| + 1 + d) +| l | = 448 mod 512 + 64 = 512 mod 512.
Chú ý: Vì M = a || 1 || 0
d
|| l nên d = |M| - ( |a| + 1 + | l | ) =
d = 512 - ( |a| + 1 + 64 ) = 512 - (|a| +65) = 447 – ( |a| mod 512).
Ví dụ: Xâu đầu vào là a = “ABC”, xây dựng M như sau:
a: = “ABC” = "01000001 01000010 01000011".
(Chú ý theo bảng mã: ‘A’ =65, ‘B’ =66, ‘C’ =67= 2
6
+ 2
1
+ 2
0
).
* Độ dài tính theo bit của xâu a: |a| = 24 bit
=> d = 447 – (|a| mod 512) = 447 – 24 = 423.
|a| + 1 + d = 24 + 1 + 423 = 448 mod 512.
* Biểu diễn nhị phân của độ dài xâu a là l:
l = |a| mod 2
64
= 24 mod 2
64
= 24 = 2

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


0 mod 16, mỗi đoạn M[i] là word 32 bit.
Hàm băm MD4 Page 7
M[0] = 01000001 01000010 01000011 10000000
M[1] = M[2] = … = M[13] = M[14] =
 
so32
00 00
M[15] = 00000000 00000000 00000000 00011000
Trong việc xây dựng M, ta gắn số 1 đơn lẻ vào sau a, sau đó thêm tiếp các số 0
vào đủ để độ dài của M đồng dư với 448 modulo 512. Cuối cùng nối thêm 64 bit (chính
là |l|) chứa biểu diễn nhị phân về độ dài ban đầu của a (được rút gọn theo modulo 2
64
nếu
cần).
Xâu M có độ dài chia hết cho 512, vì thế khi chặt M thành các word 32 bit, số
word nhận được là N, sẽ chia hết cho 16.
Mục đích việc tạo ra “thông điệp đệm” M là để các hàm băm xử lý trên từng
khối (block) 512 bit (16 word) cùng một lúc.
Hàm băm MD4 Page 8
III. Chương trình hàm băm MD4
1. Môi trường và công cụ làm thử nghiệm
Bảng 3.1. Cấu hình hệ thống thử nghiệm
Thành phần Chỉ số
CPU 2.2 GHz Core Duo Intel
RAM 4GB
OS Windows7
Bộ nhớ ngoài 500GB
Bảng 3.2. Các phần mềm sử dụng
STT Tên phần mềm Tác giả Chức năng Nguồn
1 NetBeans IDE

7.0
Môi trường phát
triển
/>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

×