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
Trang 1TRƯỜ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
Trang 2Tì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
Trang 3Tì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
Chu Thị Thanh Xuân
Trang 4Tì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
Trang 5Tì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
Trang 6Tì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
MD2 Message Digest 2
MD4 Message Digest 4
MD5 Message Digest 5
RSA Rivest Shamir Adleman
SHA Secure Hash Algorithm
VPU Visual Processing Unit
Trang 7Tì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ụ
Trang 8Tì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
Trang 9Tì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
Trang 10Tì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
Trang 11Tì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ừ http://vi.wikipedia.org)
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
Trang 12Tì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
Trang 13Tì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
Trang 14Tì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
Trang 15Tì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ó
Trang 16Tì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
Trang 17Tì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
Trang 18Tì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à
HX (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) HY cho file Y Như vậy nếu HX = HY 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
Trang 19Tì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ì HB ≠ HA và Nam sẽ phát hiện Tuy nhiên, Đông cũng có thể sửa luôn giá trị băm HA 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 HA 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 HA cho thông điệp M thì sẽ mã hóa HA 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 HA của Bắc Vì Đông không có KRA nên không thể sửa được HA Ngoài ra, vì Bắc là người duy nhất có KRA, nên chỉ có Bắc mới có thể
Trang 20Tì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
Trang 21Tì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
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
Trang 22Tì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
Trang 23Tì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
Trang 24Tì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 232
Hình 2.6: Một thao tác MD5
Trang 25Tì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
Trang 26Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5
Việc độn được tiến hành như sau : Một bit đơn “1” được chèn vào sau bản tin, sau đó các bit “0” được chèn vào tiếp sao cho chiều dài tính theo bit của bản tin đã được độn là đồng dư với 448 theo modulo 512 Nói chung, có ít nhất là một bit và nhiều nhất là 512 bit sẽ được chèn vào phía sau
Một số 64 bit biểu diễn cho m (chiều dài của bản tin ban đầu) được chèn sau cùng Thậm chí nếu m > 264, thì chỉ 64 bit thấp của m được sử dụng Các bit này (64 bit) được xem như là 2 từ 32-bit và được chèn theo thứ tự thấp của từ trước như theo quy ước ở trên
Như vậy bản tin sau khi độn các bit và m, có chiều dài là bội của 512 bit Hay, bản tin này cũng có chiều dài là bội của 16 word (32-bit) Đặt M[0,1 N-1] là các từ của bản tin kết quả, ở đây N là bội của 16
Hình 2.7: Thêm các bít vào bản tin ban đầu
Bước 3 Khởi tạo bộ đệm MD
Có một bộ đệm gồm 4 word (A, B, C, D) được dùng để tính toán bản tin tóm lược Ở đây mỗi từ A, B, C, D là một thanh ghi 32-bit Các thanh ghi này được khởi tạo với các giá trị Hexa với các byte thấp viết trước, như sau :
word A: 01 23 45 67
word B: 89 ab cd ef
word C: fe dc ba 98
word D: 76 54 32 10
Bước 4 Xử lý bản tin theo từng khối 16-word
Trước tiên ta định nghĩa các hàm sau, đều nhận đầu vào là 3 từ 32-bit và sinh ra một từ 32-bit
F(X,Y,Z) = XY v not(X) Z
Trang 27Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5
G(X,Y,Z) = XZ v Y not(Z)
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X v not(Z))
Ở bước này cần thêm một mảng bảng T có 64 phần tử được xây dựng từ hàm sine Giả sử T[i] biểu thị phần tử thứ i của bảng, công thức cho T là như sau
T[i] = int (232 * abs(sin(i)) ( 1 <=i<=64)
(int : hàm lấy phần nguyên, abs là hàm lấy giá trị tuyệt đối)
Giá trị của T[i] thể hiện trong phụ lục 1
Sau khi có các hàm và bảng T, thực hiện tính toán như sau :
[ABCD 0 7 1] [DABC 1 12 2] [CDAB 2 17 3] [BCDA 3 22 4]
[ABCD 4 7 5] [DABC 5 12 6] [CDAB 6 17 7] [BCDA 7 22 8]
Trang 28Tìm hiểu và phân tích đánh giá độ an toàn của thuật toán MD5
[ABCD 8 7 9] [DABC 9 12 10] [CDAB 10 17 11] [BCDA 11 22 12] [ABCD 12 7 13] [DABC 13 12 14] [CDAB 14 17 15] [BCDA 15 22 16] Nhận xét vòng 1: Vòng 1 dùng hàm F, với giá trị t từ 1 16 và k từ 0 15
Vòng 4
Ký hiệu [abcd k s t] là phép toán
a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s) */
Thực hiện 16 phép toán
[ABCD 0 6 49] [DABC 7 10 50] [CDAB 14 15 51] [BCDA 5 21 52] [ABCD 12 6 53] [DABC 3 10 54] [CDAB 10 15 55] [BCDA 1 21 56]