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

Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán 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.45 MB, 57 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ




CHU THỊ THANH XUÂN






TÌM HIỂU VÀ PHÂN TÍCH ĐÁNH GIÁ
ĐỘ AN TOÀN CỦA THUẬT TOÁN MD5








LUẬN VĂN THẠC SĨ HỆ THỐNG THÔNG TIN






Hà Nội – 2014


2


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ



CHU THỊ THANH XUÂN





TÌM HIỂU VÀ PHÂN TÍCH ĐÁNH GIÁ
ĐỘ AN TOÀN CỦA THUẬT TOÁN MD5


Ngành: Công nghệ Thông tin
Chuyên ngành: Hệ thống thông tin
Mã số: 60480104




LUẬN VĂN THẠC SĨ HỆ THỐNG THÔNG TIN



NGƢỜI HƢỚNG DẪN KHOA HỌC: TS. NGUYỄN NGỌC CƢƠNG


Hà Nội – 2014

3


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5


LỜI CAM ĐOAN
Tôi xin cam đoan kết quả đạt được trong luận văn là sản phẩm của riêng cá
nhân tôi, không sao chép lại của người khác. Trong toàn bộ nội dung của luận
văn, những điều đã trình bày là của cá nhân tôi hoặc là được tôi tổng hợp từ
nhiều nguồn tài liệu. Tất cả các nguồn tài liệu tham khảo có xuất xứ rõ ràng và
được trích dẫn hợp pháp.
Tôi xin chịu toàn bộ trách nhiệm và chịu mọi hình thức kỷ luật theo quy định
cho lời cam đoan của tôi.

Hà Nội, tháng 7 năm 2014
Học viên



Chu Thị Thanh Xuân



4



Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

MỤC LỤC
LỜI CAM ĐOAN 3
MỤC LỤC 4
DANH MỤC CÁC KÝ HIỆU VÀ TỪ VIẾT TẮT 6
DANH MỤC CÁC BẢNG 7
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ 8
MỞ ĐẦU 9
Chương 1: LÝ THUYẾT VỀ HÀM BĂM 11
1.1 Tổng quan về hàm băm 11
1.1.1. Định nghĩa hàm băm 11
1.1.2. Đặc tính của hàm băm 11
1.1.3. Tính chất của hàm băm: 12
1.2. Một số hàm băm phổ biến 13
1.2.1 Hàm băm MD4 14
1.2.2. Hàm băm MD5 15
1.2.3. Hàm băm chuẩn SHA 15
1.3 Ứng dụng của hàm băm 16
1.3.1 Bảo vệ mật khẩu 16
1.3.2 Đấu giá trực tuyến 17
1.3.3 Download file 18
1.3.4 Hàm băm và chữ ký số 18
Chương 2: HÀM BĂM MD5 21
2.1 Giới thiệu MD5 21
5



Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

2.2 Ứng dụng của hàm băm MD5 21
2.2.1 Bảo vệ mật khẩu. 21
2.2.2 Kiểm tra tính toàn vẹn của tập tin. 22
2.3 Thuật toán MD5 23
Chương 3: ĐỘ AN TOÀN CỦA THUẬT TOÁN MD5 30
3.1 Tính an toàn của hàm băm MD5 đối với hiện tượng đụng độ 30
3.2 Tính an toàn của hàm băm MD5 đối với tính một chiều. 32
3.3 Tính an toàn của hàm băm MD5 đối với ứng dụng bảo vệ mật khẩu. 33
3.3.1 Kỹ thuật tấn công từ điển ( Dictionary Attack) 35
3.3.2 Kỹ thuật tấn công bảng cầu vồng ( Rainbow Table Attack) 36
3.3.3. Kỹ thuật tấn công brute force (Brute force attack) 37
Chương 4: THỬ NGHIỆM VÀ ĐÁNH GIÁ 40
4.1 Xây dựng cơ sở dữ liệu: 40
4.2 Bảng kết quả 40
KẾT LUẬN 44
TÀI LIỆU THAM KHẢO 45
PHỤ LỤC 47
6


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

DANH MỤC CÁC KÝ HIỆU VÀ TỪ VIẾT TẮT

CPU
Central Processing Unit
CUDA
Compute Unified Device Architecture

GPGPU
General Purpose computing
GPU
Graphic Proccessing Unit
MD
Message Digest
MD2
Message Digest 2
MD4
Message Digest 4
MD5
Message Digest 5
RSA
Rivest Shamir Adleman
SHA
Secure Hash Algorithm
VPU
Visual Processing Unit

7


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

DANH MỤC CÁC BẢNG

Bảng 3.1 : Minh họa tốc độ kiểm tra khóa MD5 trên CPU và các GPU
Bảng 3.2 : Minh hoạ hiệu năng thực hiện công việc giải mã MD5 trên CPU và
GPU
Bảng 4.1 Khả năng khôi phục mật khẩu trên một số công cụ


8


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ

Hình 1.1 Minh họa về hàm băm
Hình 1.2 Cấu trúc lặp của hàm băm MD
Hình 1.3 Cơ chế hoạt động của lưu trữ mật khẩu dùng hàm băm
Hình 1.4 Đấu giá trực tuyến dùng hàm băm
Hình 1.5 Gửi thông điệp sử dụng hàm hash
Hình 1.6 Hàm Hash hỗ trợ chữ ký số
Hình 2.1 Lưu trữ mật khẩu bằng hàm băm MD5
Hình 2.2 Thêm salt vào mật khẩu trước khi băm MD5
Hình 2.3 Mã MD5 được gửi kèm với file download bản Ghost Windows XP
Hình 2.4 Sử dụng phần mềm MD5 Check để kiểm tra tính toàn vẹn của tập tin
Hình 2.5 Hoạt động hàm MD5
Hình 2.6 Một thao tác MD5
Hình 2.7 Thêm các bít vào bản tin ban đầu
Hình 3.1 Ví dụ xung đột hàm băm MD5
Hình 3.2 Tấn công từ điển trên trang md5decrypter.co.uk
Hình 3.3 Phương thức hoạt động của bảng cầu vồng

9


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5


MỞ ĐẦU

Trong mật mã học MD5 (Message-Digest algorithm 5) là một hàm băm
mật mã được sử dụng phổ biến với giá trị băm (Hash) dài 128 bit. Là một chuẩn
Internet (RFC 1321) MD5 đã được dùng trong nhiều ứng dụng bảo mật và cũng
được dùng phổ biến để kiểm tra tính toàn vẹn của tập tin. Trong ứng dụng
truyền dữ liệu, máy chủ tập tin thường cung cấp một checksum MD5 được tính
toán trước cho tập tin, để người dùng có thể so sánh với checksum của tập tin đã
tải về. Trong ứng dụng chữ ký số, MD5 sẽ băm thông điệp dài thành văn bản đại
diện và việc ký sẽ được thực hiện trên văn bản đại diện trước khi được truyền đi.
Trong ứng dụng mật khẩu, chương trình sẽ băm từng mật khẩu sang không gian
mã MD5 và so sánh mã này với mã MD5 cần được giải mã.
MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm
băm trước đó là MD4 (vì MD4 đã được chứng minh là không an toàn). Từ năm
1996 người ta đã phát hiện ra một lỗ hổng trong MD5 và các chuyên gia mã hóa
bắt đầu đề nghị sử dụng giải thuật khác như SHA-1, đến năm 2005 nhiều lỗ
hổng hơn được khám phá khiến cho việc sử dụng giải thuật này cho mục đích
bảo mật đang bị đặt nghi vấn.
Trên thực tế trong các ứng dụng bảo vệ mật khẩu giải thuật MD5 vẫn
được sử dụng rộng rãi. Có nhiều phương pháp và kỹ thuật tấn công mật khẩu
được công bố nhưng mức độ thành công của các phương pháp này phụ thuộc lớn
vào tài nguyên của máy tính và cách đặt mật khẩu. Do vậy để có một đánh giá
cụ thể về độ an toàn của thuật toán MD5 trong các ứng dụng của nó, đặc biệt là
ứng dụng lưu trữ mật khẩu, tác giả đã lựa chọn đề tài: “Tìm hiểu và phân tích
đánh giá độ an toàn của thuật toán MD5”.
Với mục tiêu đánh giá độ an toàn của thông tin khi sử dụng thuật toán
băm MD5 trong các ứng dụng của nó, tác giả đã sử dụng phương pháp khảo sát
các kỹ thuật tấn công MD5 hiện nay và đi sâu vào đánh giá mức độ thành công
dò tìm mật khẩu trong các kỹ thuật tấn công từ điển, tấn công brute force và tấn
10



Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

công sử dụng công nghệ GPU trên hệ thống máy tính hiện tại và các công cụ hỗ
trợ. Tác giả tiến hành khảo sát trên 100 hash MD5 được thu thập từ cơ sở dữ liệu
của các website bị lỗi và được mã hóa từ các mật khẩu do tác giả giả thiết dựa
trên thói quen sử dụng mật khẩu của người dùng.
Cấu trúc của luận văn gồm:
Chương 1: Giới thiệu về lý thuyết hàm băm mật mã, những tính chất của hàm
băm và ứng dụng của nó. Trong chương này cũng giới thiệu tổng quan về một số
hàm băm phổ biến.
Chương 2: Tìm hiểu hàm băm MD5, giải thuật MD5, chương trình cài đặt MD5
và ứng dụng chính của hàm băm MD5.
Chương 3: Độ an toàn của hàm băm MD5. Tìm hiểu về tính an toàn của hàm
băm MD5 đối với hiện tượng đụng độ. Đi sâu khảo sát một số kỹ thuật tấn công
hàm băm trong ứng dụng bảo vệ mật khẩu.
Chương 4: Thử nghiệm và đánh giá trên 100 hash mật khẩu được băm bằng
thuật toán MD5.
Tác giả xin chân thành cảm ơn sự hướng dẫn và chỉ bảo tận tình của thầy
Nguyễn Ngọc Cương – Trưởng khoa Toán Tin, Học viện An ninh nhân dân,
cảm ơn các thầy cô giáo trong khoa Hệ Thống Thông Tin trường Đại học Công
nghệ - Đại học Quốc Gia Hà Nội đã tạo điều kiện giúp tác giả hoàn thành luận
văn này. Cảm ơn gia đình, bạn bè cùng những người thân luôn bên cạnh tác giả
giúp tác giả vượt qua những khó khăn trong cuộc sống.
Trong quá trình thực hiện bản luận văn không tránh khỏi sai sót. Tác giả rất
mong nhận được sự nhận xét, đánh giá cũng như tạo điều kiện giúp đỡ của thầy
cô và các đồng nghiệp.
Hà Nội, tháng 7 năm 2014
Học viên

Chu Thị Thanh Xuân


11


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

Chƣơng 1: LÝ THUYẾT VỀ HÀM BĂM
1.1 Tổng quan về hàm băm
1.1.1. Định nghĩa hàm băm
Hàm băm (tiếng Anh: hash function) là giải thuật nhằm sinh ra các giá
trị băm tương ứng với mỗi khối dữ liệu (có thể là một chuỗi kí tự, một đối
tượng trong lập trình hướng đối tượng, v.v ). Giá trị băm đóng vai gần như
một khóa để phân biệt các khối dữ liệu, tuy nhiên, người ta chấp hiện tƣợng
trùng khóa hay còn gọi là đụng độ và cố gắng cải thiện giải thuật để giảm thiểu
sự đụng độ đó. 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 (nhờ việc so sánh các giá
trị băm nhanh hơn việc so sánh những khối dữ liệu có kích thước lớn)
Giá trị của hàm băm là duy nhất, và không thể suy ngược lại được nội
dung thông điệp từ giá trị băm này.
Ví dụ minh họa về hàm băm (trích từ )



Hình 1.1 Minh họa về hàm băm

1.1.2. Đặc tính của hàm băm
Hàm băm h là hàm băm một chiều (one-way hash) với các đặc tính sau:
 Với thông điệp đầu vào x thu được bản băm z = h(x) là duy nhất.

12


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

 Nếu dữ liệu trong thông điệp x thay đổi hay bị xóa để thành thông điệp x‟
thì h(x‟)

h(x). Cho dù chỉ là một sự thay đổi nhỏ hay chỉ là xóa đi 1 bit dữ liệu
của thông điệp thì giá trị băm cũng vẫn thay đổi. Điều này có nghĩa là: hai thông
điệp hoàn toàn khác nhau thì giá trị hàm băm cũng khác nhau.
 Nội dung của thông điệp gốc không thể bị suy ra từ giá trị hàm băm.
Nghĩa là: với thông điệp x thì dễ dàng tính được z = h(x), nhưng lại không thể
(thực chất là khó) suy ngược lại được x nếu chỉ biết giá trị hàm băm h(x).
1.1.3. Tính chất của hàm băm:
Việc đưa hàm băm h vào dùng trong sơ đồ chữ ký số không làm giảm sự
an toàn của sơ đồ chữ ký số vì nó là bản tóm lược thông báo – bản đại diện cho
thông điệp – được ký chứ không phải là thông điệp gốc. Điều cần thiết đối với
hàm băm h là cần thỏa mãn một số tính chất sau để tránh bị giả mạo:
Tính chất 1: Hàm băm h là không va chạm yếu
Hàm băm h là không va chạm yếu nếu khi cho trước một bức điện x,
không thể tiến hành về mặt tính toán để tìm ra một bức điện x’

x mà h(x’) =
h(x).
Tính chất 2: Hàm băm h là không va chạm mạnh:
Xét một kiểu tấn công như sau: Đầu tiên, tên giả mạo tìm ra được hai
bức thông điệp x‟ và x (x‟

x) mà có h(x‟) = h(x) (ta coi bức thông điệp x là hợp

lệ, còn x‟ là giả mạo). Tiếp theo, hắn đưa cho ông A và thuyết phục ông này kí
vào bản tóm lược h(x) để nhận được y. Khi đó (x‟, y) là bức điện giả mạo nhưng
hợp lệ.
Để tránh kiểu tấn công này, hàm h phải thỏa mãn tính không va chạm
mạnh: Hàm băm h là không va chạm mạnh nếu không có khả năng tính toán để
tìm ra hai bức thông điệp x và x’

mà x

x’ và h(x) = h(x’).
Tính chất 3: Hàm băm h là hàm một chiều:
Xét một kiểu tấn công như sau: Việc giả mạo các chữ ký trên bản tóm
lược z thường xảy ta với các sơ đồ chữ ký số. Giả sử tên giả mạo tính chữ ký
trên bản tóm lược z, sau đó hắn tìm một bản thông điệp x‟ được tính ngược từ
bản đại diện z, z = h(x‟). Tên trộm thay thế bản thông điệp x hợp lệ bằng bản
thông điệp x‟ giả mạo, nhưng lại có z = h(x‟). Và hắn ký số trên bản đại diện
13


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

cho x‟ bằng đúng chữ ký hợp lệ. Nếu làm được như vậy thì (x‟, y) là bức điện
giả mạo nhưng hợp lệ.
Để tránh được kiểu tấn công này, h cần thỏa mãn tính chất một chiều:
Hàm băm h là một chiều nếu khi cho trước một bản tóm lược thông báo z thì
không thể thực hiện về mặt tính toán để tìm ra thông điệp ban đầu x sao cho h(x)
= z .
1.2. 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ứ hai 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ó 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 bít). Ở
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.
Thuật toán chung cho các hàm băm này như sau:

Given: compression function C:{0,1}
n
x {0,1}
m
 {0,1}
n
;
n – bit constant IV.
Input: message M
1. Break M into m – bit block M
1
,…, M
k
, padding if necessary;
2. Let M
k+1
be encoding of |M|;
3. Let h
0
= IV;
4. For i = 1 to k +1 let h

i
= C (h
i-1
, M
i
);
5. Output h
k+1
.
Thuật toá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 bit (chiều dài các block message là
512 hay 1024 bit là tùy thuộc vào thuật toán) và giá trị của chaining variable của
vòng trước, ta có mô hình như sau:
14


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5




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

1.2.1 Hàm băm MD4
MD4 (Message-Digest 4) được thiết kế bởi giáo sư Ronald Rivest của đại
học 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 toàn vẹn của thông điệp. Chiều dài của giá trị băm là 128bit.
Thuật toá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 toán MD4 tuần tự xử lý dãy m khối trong m lượt tính toán. Dữ liệu
đầu vào tại lượt tính toá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 toá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 toá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 toán, trong mỗi vòng gồm có 16 bước, mỗi bước
thực hiện tính toá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 toá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 toá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.
15


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

1.2.2. Hàm băm MD5
MD5 được phát minh bởi Ron Rivest, người cũng đã tham gia xây dựng
RSA. MD5, viết tắt từ chữ „Message Digest 5‟ được phát triển lên từ MD4 và
trước đó là MD2, do MD2 và MD4 không còn được xem là an toàn. Kích thước
giá trị băm của MD5 là 128 bít, mà chúng ta coi như là an toàn (theo nghĩa
không tìm được 2 thông điệp có cùng giá trị băm).
Tuy nhiên vào năm 2004 và 2005, một phương pháp tấn công MD5 đã
được tìm thấy và một số thông điệp có cùng giá trị băm MD5 được chỉ ra (vi
phạm tính chống va chạm mạnh). Tuy vậy ngày nay MD5 vẫn còn được sử dụng
phổ biến. Hàm băm MD5 sẽ được giới thiệu chi tiết trong chương 2.
1.2.3. Hàm băm chuẩn SHA
Chuẩn hàm băm SHA phức tạp và chậm hơn dòng MD. SHA được thiết
kế để chạy trên máy kiến trúc endian lớn hơn là trên máy endian nhỏ. SHA tạo

ra bản tóm lược thông điệp có kích thước 160 bit, sử dụng 5 thanh ghi 32 bit.
Năm thuật giải SHA là SHA-1 (trả lại kết quả dài 160 bit), SHA-224 (trả
lại kết quả dài 224 bit), SHA-256 (trả lại kết quả dài 256 bit), SHA-384 (trả lại
kết quả dài 384 bit), và SHA-512 (trả lại kết quả dài 512 bit).
Thuật giải SHA là thuật giải băm mật được phát triển bởi cục an ninh
quốc gia Mĩ (National Security Agency hay NSA) và được xuất bản thành chuẩn
của chính phủ Mĩ bởi viện công nghệ và chuẩn quốc gia Mĩ (National Institute
of Standards and Technology hay NIST). Bốn thuật giải sau thường được gọi
chung là SHA-2.
SHA-1 được sử dụng rộng rãi trong nhiều ứng dụng và giao thức an ninh
khác nhau, bao gồm TLS và SSL, PGP,SSH, S/MIME, và IPSec.
Hiện nay, SHA-1 không còn được coi là an toàn bởi đầu năm 2005, ba
nhà mật mã học người Trung Quốc đã phát triển thành công một thuật giải dùng
để tìm được hai đoạn dữ liệu nhất định có cùng kết quả băm tạo ra bởi SHA-1.
Tuy vậy SHA vẫn được sử dụng phổ biến, đặc biệt là SHA-2, chưa có
phát minh nào tìm ra tính không an toàn của nó.
16


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

1.3 Ứng dụng của hàm băm
1.3.1 Bảo vệ mật khẩu
Hầu hết các ứng dụng phần mềm ngày nay, dù trên máy đơn hay trên web
đều có chứng thực người sử dụng. Nghĩa là để sử dụng ứng dụng, người sử dụng
phải qua một cơ chế chứng thực tên người dùng và mật khẩu, và từ đó được
cung cấp các quyền sử dụng phần mềm khác nhau. Do đó vấn đề bảo mật mật
khẩu là vấn đề quan trọng đối với mọi phần mềm. Mật khẩu người sử dụng
thường gồm các chữ cái thường và hoa, cộng thêm các chữ số. Giả sử mật khẩu
được lưu trữ dưới dạng thường, không mã hóa, tại một nơi nào đó trên máy tính

cá nhân hay máy chủ, trong một file dữ liệu hay trong hệ quản trị cơ sở dữ liệu.
Như vậy sẽ xuất hiện một nguy cơ là có một người khác, hoặc là người quản
trị administrator, hoặc là hacker, có thể mở được file dữ liệu hoặc cơ sở dữ liệu
và xem trộm được mật khẩu. Như vậy mật khẩu không thể được giữ bí mật tuyệt
đối. Một phương pháp để bảo vệ mật khẩu là dùng mã hóa, chương trình phần
mềm sẽ dùng một khóa bí mật để mã hóa mật khẩu trước khi lưu mật khẩu
xuống file hay cơ sở dữ liệu. Do đó tránh được vấn đề xem trộm mật khẩu. Tuy
nhiên phương pháp này có yếu điểm là lại phải lo bảo vệ khóa bí mật này. Nếu
khóa bí mật bị lộ thì việc mã hóa không còn ý nghĩa. Phương pháp bảo vệ mật
khẩu hiệu quả nhất là dùng một hàm băm (MD5, SHA). Khi người sử dụng đăng
ký mật khẩu, giá trị băm của mật khẩu được tính bằng một hàm băm nào đó. Giá
trị băm được lưu trữ vào file hay cơ sở dữ liệu. Vì hàm băm là hàm một chiều,
nên dù biết được giá trị băm và loại hàm băm, hacker cũng không thể suy ra
được mật khẩu. Khi người sử dụng đăng nhập, mật khẩu đăng nhập được tính
giá trị băm và so sánh với giá trị băm đang được lưu trữ. Do tính chống va chạm
mạnh, chỉ có một mật khẩu duy nhất có giá trị băm tương ứng, nên không ai
khác ngoài người sử dụng có mật khẩu đó mới có thể đăng nhập ứng dụng.







17


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5












Hình 1.3. Cơ chế hoạt động của lưu trữ mật khẩu dùng hàm băm

1.3.2 Đấu giá trực tuyến
Phương pháp lưu trữ mật khẩu bằng giá trị Hash cũng được áp dụng
tương tự cho việc đấu giá trực tuyến bằng hình thức đấu giá bí mật. Giả sử Bắc,
Nam và Đông cùng tham gia đấu giá, họ sẽ cung cấp mức giá của mình cho
trọng tài. Các mức giá này được giữ bí mật cho đến khi cả ba đều nộp xong. Nếu
ai là người đưa ra mức giá cao nhất thì thắng thầu. Điểm quan trọng của phương
pháp đấu giá này là giá của Bắc, Nam, và Đông phải được giữ bí mật trước khi
công bố. Giả sử mức giá của Bắc là 100, mức giá của Nam là 110, nếu Đông
thông đồng với trọng tài và biết được giá của Bắc và Nam, Đông có thể đưa ra
mức giá 111 và thắng thầu.Có thể tránh những hình thức lừa đảo như vậy bằng
cách sử dụng hàm băm. Từ mức giá bỏ thầu, Bắc và Nam sẽ tính các giá trị băm
tương ứng và chỉ cung cấp cho trọng tài các giá trị băm này. Vì hàm băm là một
chiều, nếu trọng tài và Đông bắt tay nhau thì cũng không thể biết được giá của
Bắc và Nam là bao nhiêu. Đến khi công bố, Bắc, Nam và Đông sẽ đưa ra mức
giá của mình. Trọng tài sẽ tính các giá trị băm tương ứng và so sánh với các giá
trị băm đã nộp để bảo đảm rằng mức giá mà Bắc, Nam và Đông là đúng với ý
định ban đầu của họ. Vì tính chống trùng của hàm băm nên Bắc, Nam và Đông
không thể thay đổi giá so với ý định ban đầu.


18


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5



Hình 1.4 Đấu giá trực tuyến dùng hàm băm

1.3.3 Download file
Khi chúng ta download file từ mạng internet, nếu chất lượng mạng không
tốt thì có thể xảy ra lỗi trong quá trình download làm cho file tại máy client khác
với file trên server. Hàm băm có thể giúp chúng ta phát hiện ra những trường
hợp bị lỗi như vậy. Gọi file cần download trên server là X, và giá trị hash theo
MD5 (hoặc SHA) của file X mà server đã tính sẵn và cung cấp trên trang web là
H
X
(có thể xem bằng mắt). Gọi Y là file mà người sử dụng download được tại
máy. Người sử dụng sẽ tính giá trị MD5 ( hoặc SHA) H
Y
cho file Y. Như vậy
nếu H
X
= H
Y
thì theo tính chống va chạm của hàm hash, file Y hoàn toàn giống
file X và quá trình download không xảy ra lỗi.
1.3.4 Hàm băm và chữ ký số
Trong phần này tác giả tìm hiểu cách thức ứng dụng hàm băm vào vấn đề
chứng thực mà ta gọi là chữ ký số. Việc sử dụng khóa bí mật chung cho người

gửi và người nhận trong mã chứng thực thông điệp MAC sẽ gặp phải vấn đề
tính không từ chối tương tự như mã hóa đối xứng. Dùng hàm băm và mã hóa
khóa công khai khắc phục được vấn đề này. Trước tiên xét một mô hình đơn
giản được thể hiện ở hình 1.5

19


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5


Hình 1.5 Gửi thông điệp sử dụng hàm hash

Trong mô hình hình 1.5 Bắc tính giá trị băm của thông điệp cần gửi và gửi kèm
cho Nam. Nam tính lại giá trị băm của thông điệp nhận được và so sánh với giá
trị băm của Bắc. Tương tự như vấn đề download file, nếu Đông sửa thông điệp
M thì H
B
≠ H
A
và Nam sẽ phát hiện. Tuy nhiên, Đông cũng có thể sửa luôn giá
trị băm H
A
do Bắc gửi và Nam không thể phát hiện. Để tránh vấn đề này cần sử
dụng mã hóa khóa công khai để chứng thực H
A
theo mô hình được thể hiện ở
hình 1.6:

Hình 1.6 Hàm Hash hỗ trợ chữ ký số

Trong mô hình này, Bắc sau khi tính giá trị hash H
A
cho thông điệp M thì sẽ mã
hóa H
A
bằng khóa riêng của Bắc để tạo thành chữ ký số DS. Bắc gửi kèm DS
theo M cho Nam. Nam dùng khóa công khai của Bắc để kiểm tra chữ ký số DS
và có được giá trị hash H
A
của Bắc. Vì Đông không có K
RA
nên không thể sửa
được H
A
. Ngoài ra, vì Bắc là người duy nhất có K
RA
, nên chỉ có Bắc mới có thể
20


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

tạo DS từ M. Do đó Bắc không thể từ chối là đã gửi bản tin. Chữ ký số chỉ cần
mã hóa giá trị hash mà không cần mã hóa toàn bộ thông điệp M. Vì phương
pháp mã hóa khóa công khai tốn kém thời gian nên nếu M là một thông điệp dài,
thì việc không mã hóa M giúp tiết kiệm được nhiều thời gian.
21


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5


Chƣơng 2: HÀM BĂM MD5
2.1 Giới thiệu MD5
MD5 (Message – Digest algorithm 5) là một hàm băm để mã hoá với giá
trị băm là 128 bit. Từng được xem là chuẩn trên Internet, MD5 đã được sử dụng
rộng rãi trong các chương trình an ninh mạng, và cũng thường được dùng để
kiểm tra tính nguyên vẹn của tập tin.
MD5 là phiên bản cải tiến của hàm băm MD4 do giáo sư Rivest đề nghị
vào năm 1991. Cùng với phương pháp SHA, đây là phương pháp có ưu điểm tốc
độ xử lý rất nhanh nên thích hợp áp dụng trong thực tế đối với các thông điệp
dài.
Thuât toán MD5 chuyển đổi một văn bản text lớn tùy ý thành một chuỗi
32 ký tự hexa (128 bit) với một số tính năng bổ sung:
1) Đối với một chuỗi ký tự cụ thể (văn bản) mã MD5 được xác định là duy
nhất
2) Những thay đổi nhỏ trong chuỗi ký tự dẫn đến một thay đổi đáng kể của
chuỗi mã MD5
3) Rất khó để tìm ra chuỗi ký tự khác có cùng MD5 với chuỗi ký tự ban đầu.
2.2 Ứng dụng của hàm băm MD5
Các tính chất của MD5 dẫn đến lĩnh vực ứng dụng thực tế của MD5
2.2.1 Bảo vệ mật khẩu.
Hàm MD5 sẽ biến đổi chuỗi mật khẩu ban đầu thành một đoạn mã khác
(gọi là mã MD5) và lưu mã MD5 vào trong cơ sở dữ liệu. Do vậy nó đảm bảo
tính an toàn của mật khẩu, ngay cả người quản trị cũng không thể biết được.
Hình 2.1 biểu diến quá trình lưu trữ mật khẩu sử dụng hàm băm MD5. Ban đầu
người dùng đăng ký tài khoản bằng một tên user và một mật khẩu, mật khẩu này
sẽ được băm thành mã MD5 và lưu cùng với tên user trong cơ sở dữ liệu. Khi
người dùng đăng nhập vào website này thì mật khẩu sẽ được băm thành mã
MD5, sau đó nó so sánh đoạn mã MD5 này với mã MD5 được lưu trong cơ sở
dữ liệu, nếu trùng nhau thì đăng nhập thành công, ngược lại nhập mật khẩu sai.




22


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5



Hình 2.1: Lưu trữ mật khẩu bằng hàm băm MD5
Trong thực tế việc mã hóa MD5 một lần những mật khẩu đơn giản dễ bị
tấn công bởi phương pháp tấn công từ điển và tấn công brute force nên các
website hiện nay thường sử dụng mã MD5 nhiều lần hoặc thêm muối (salt) vào
mật khẩu trước khi mã hóa chúng.






Hình 2.2 Thêm salt vào mật khẩu trước khi băm MD5

2.2.2 Kiểm tra tính toàn vẹn của tập tin.
Trong quá trình truyền tập tin, nhất là những tập tin có dung lượng lớn
khó tránh khỏi bị lỗi trên đường truyền. Do đó để kiểm tra xem tập tin tải về có
còn nguyên vẹn hay không thì máy chủ tập tin sẽ băm tập tin bằng hàm băm
MD5 và cung cấp mã MD5 này kèm theo tập tin. Người sử dụng sau khi
download tập tin sẽ sử dụng phần mềm kiểm tra gọi là checksum MD5 để xem
tập tin tải về có mã MD5 trùng với mã MD5 của nhà cung cấp hay không. Nếu

trùng thì tập tin tải về đảm bảo tính nguyên vẹn trên đường truyền.
23


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

Ví dụ về sử dụng MD5 trong kiểm tra tính toàn vẹn của tập tin:










Hình 2.3 Mã MD5 được gửi kèm với file download bản Ghost Windows XP
















Hình 2.4 Sử dụng phần mềm MD5 Check để kiểm tra tính toàn vẹn của tập tin


2.3 Thuật toán MD5
 INPUT: Thông điệp (văn bản) có độ dài tùy ý.
 OUTPUT : Bản băm, đại diện cho thông điệp gốc, độ dài cố định 128 bit.
Mẩu tin đầu vào được chia thành từng đoạn 512 bit; mẩu tin sau đó được độn
sao cho chiều dài của nó chia chẵn cho 512. Công việc độn vào như sau: đầu
tiên một bit đơn 1 được gắn vào cuối mẩu tin. Tiếp theo là một dãy các số 0 sao
cho chiều dài của mẩu tin lên tới 64 bit ít hơn so với bội số của 512. Những bit
còn lại được lấp đầy bằng một số nguyên 64-bit đại diện cho chiều dài của mẩu
tin gốc.
24


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5


Hình 2.5 Hoạt động hàm MD5
Giải thuật MD5 chính hoạt động trên trạng thái 128-bit, được chia thành 4 từ
32-bit, với ký hiệu A, B, C và D. Chúng được khởi tạo với những hằng số cố
định. Giải thuật chính sau đó sẽ xử lý các khối tin 512-bit, mỗi khối xác định
một trạng thái. Quá trình xử lý khối tin bao gồm bốn giai đoạn giống nhau, gọi
là vòng; mỗi vòng gồm có 16 tác vụ giống nhau dựa trên: hàm phi tuyến F, cộng
mô đun, và dịch trái.
Hình 2.6 mô tả một tác vụ trong một vòng; một hàm F được dùng trong mỗi
vòng. M

i
chỉ ra một khối tin nhập vào 32-bit, và K
i
chỉ một hằng số 32-bit, khác
nhau cho mỗi tác vụ.
s
chỉ sự xoay bit về bên trái s đơn vị; s thay dổi tùy theo
từng tác vụ. là phép cộng thêm với modulo 2
32
.









Hình 2.6: Một thao tác MD5
25


Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5

Giải thuật MD5 được thiết kế đạt tốc độ nhanh nhất ở trên các máy tính 32 bit.
Thêm nữa, giải thuật MD5 không đòi hỏi các bảng thay thế lớn, và mã nguồn
của giải thuật khá gọn. Sau đây là mô tả chi tiết về giải thuật mã hóa MD5
Một số quy ƣớc
Một từ (word) là tương đương với 32-bit, và một byte tương được 8-bit.

Một chuỗi các bit có thể được hiểu theo nghĩa như là một chuỗi các byte, và mỗi
nhóm 8 bit được xem như một byte với bit MSB (bit cao) được viết trước.
Một chuỗi các byte được hiểu như là một chuỗi các từ (word) 32 bit.
Trong đó, mỗi nhóm 4 byte này được xem là một từ (word) với byte thấp được
viết trước.
Dấu “+” biểu thị phép cộng các word.
X<<<s : biểu thị giá trị 32 bit thu được từ phép dịch bit quay vòng sang
trái s bit từ X.
Not(X) : phép bù từng bit của X
X v Y : phép OR từng bit X và Y
X xor Y : phép XOR từng bit X và Y
XY : phép AND từng bit X và Y
Mô tả giải thuật MD5
Giả sử chúng ta có một bản tin đầu vào độ dài b và muốn tìm một tóm
lược của nó. Ở đây b là một số nguyên không âm bất kỳ; b có thể là 0, b không
cần là bội của 8, và có thể lớn tùy ý. Hình dung rằng các bit của bản tin được
viết như sau :
m_0 m_1 m_{b-1}
Để tính toán tóm lược của bản tin m , giải thuật thực hiện theo 4 bước
Bƣớc 1: Thêm các bit vào bản tin.
Bản tin đầu vào B được độn thêm các bits sao cho chiều dài của nó đồng
dư với 448 theo modulo 512. Có nghĩa là, bản tin được mở rộng sao cho chỉ cần
thêm 64 bit nữa sẽ là bội của 512. Việc độn luôn được thực hiện, bất kể chiều
dài của bản tin đầu vào đã đồng dư với 448 theo modulo 512.

×