KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO BÀI TẬP MÔN AN TOÀN MẠNG MÁY TÍNH ĐỀ TÀI TÌM HIỂU ỨNG DỤNG CỦA HÀM BĂM VÀ XÂY DỰNG DEMO MỤC LỤC Chương 1 TỔNG QUAN VỀ HÀM BĂM 1 1 Định nghĩa hàm băm 1 1 2 Tính chất cơ.
Trang 1KHOA CÔNG NGHỆ - THÔNG TIN
BÁO CÁO BÀI TẬP MÔN
AN TOÀN MẠNG MÁY TÍNH
ĐỀ TÀITÌM HIỂU ỨNG DỤNG CỦA HÀM BĂM VÀ XÂY DỰNG
DEMO
MỤC LỤ
Trang 2Chương 1 TỔNG QUAN VỀ HÀM BĂM
1.1 Định nghĩa hàm băm 1
1.2 Tính chất cơ bản của hàm băm 1
1.3 Vai trò hàm băm trong mật mã hiện đại 2
1.4 Phân loại hàm băm 3
1.5 Một số giải thuật Băm thông dụng 5
1.5.1 Thuật toán MD5 (Message-Digest algorithm 5) 5
1.5.2 Thuật toán hàm băm SHA-1 9
1.5.3 So sánh 2 phương thức mã hóa MD5 và SHA1 11
Chương 2 ỨNG DỤNG CỦA HÀM BĂM 2.1 Xác thực mật khẩu 13
2.2 Xác thực thông điệp (Message authentication - Thông điệp tóm tắt -message digests) 13
2.3 Bảo vệ tính toàn vẹn của tập tin, thông điệp được gửi qua mạng 13
2.3.1 Tạo chữ ký điện tử (Digital signatures) 14
Chương 3 XÂY DỰNG DEMO 3.1 Mã hóa dữ liệu 15
3.2 Tạo chữ ký số 17
TÀI LIỆU THAM KHẢO 21
Trang 3DAH MỤC TỪ VIẾT TẮT
Trang 4Chương 1 TỔNG QUAN VỀ HÀM BĂM 1.1 Định nghĩa hàm băm
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àothuậ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 [9]
Hàm băm (hash function) là hàm một chiều mà nếu đưa một lượng dữ liệubất kì qua hàm này sẽ cho ra một chuỗi có độ dài cố định ở đầu ra
Hình 1.1 Ví dụ mô tả hàm băm.
1.2 Tính chất cơ bản của hàm băm
Tính đụng độ: Theo nguyên lý Diricle: Nếu có (n+1) con thỏ được bỏ vào
n cái chuồng thì phải tồn tại ít nhất một cái chuồng mà trong đó có ít nhất là hai con thỏ ở chung Rõ ràng với không gian giá trị băm nhỏ hơn rất nhiều so với không gian tin về mặt kích thước thì chắc chắn sẽ tồn tại đụng độ, nghĩa là có hai tin x # x’ mà giá trị băm của chúng là giống nhau, tức h(x) = h(x’)
Sau đây chúng ta sẽ xét các dạng tấn công có thể có, từ đó rút ra các tính chất của hàm băm:
- Tính chất 1: Hàm băm 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)
Ví dụ: Người A gửi cho B (x, y) với y = SigA(h(x)) Nhưng trên đường truyền, tin bị lấy trộm Tên trộm, bằng cách nào đó tìm được một bản thông điệp
Trang 5x’ có h(x’) = h(x) mà x’ ^ x Sau đó, tên trộm đưa x’ thay thế x rồi truyền tiếp cho người B Người B nhận được và vẫn xác thực được thông tin đúng đắn.
Để tránh tấn công trên, hàm băm phải không va chạm yếu
để 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
1.3 Vai trò hàm băm trong mật mã hiện đại
Vai trò cơ bản của các hàm băm mật mã là một giá trị băm coi như ảnh đại diện thu gọn, đôi khi gọi là một dấu vết (imprint), vân tay số (digital
fingerprint), hoặc tóm lược thông báo (message digest) của một xâu đầu vào, và
có thể được dùng như là một định danh duy nhất với xâu đó
Các hàm băm thường được dùng cho toàn vẹn dữ liệu kết hợp với các lược đồ chữ kí số
Một lớp các hàm băm riêng được gọi là mã xác thực thông báo (MAC) cho phép xác thực thông báo bằng các kĩ thuật mã đối xứng
Các hàm băm lấy một thông báo đầu vào và tạo một đầu ra được xem nhưlà:
- Mã băm (hash code)
- Kết quả băm (hash result)
- Hoặc giá trị băm (hash value) [9]
Trang 61.4 Phân loại hàm băm
Hình 1.2 Phân loại hàm băm.
Trang 7Kích thước khối
Độ dài
Kích thước world
Xung đột
khả năng lớn
Trang 81.5 Một số giải thuật Băm thông dụng
1.5.1 Thuật toán MD5 (Message-Digest algorithm 5)
1.5.1.1 Giới thiệu giải thuật MD5
MD5 là một hàm băm mật mã học được sử dụng phổ biến với giá trị Hashdà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 Một bảng băm MD5 thường được diễn tả bằng một số hệ thập lục phân
32 ký tự
MD5 được thiết kế bởi Ronald Rivest vào năm 1991 để thay thế cho hàm băm trước đó, MD4 Vào năm 1996, người ta phát hiện ra một lỗ hổng trong MD5; trong khi vẫn chưa biết nó có phải là lỗi nghiêm trọng hay không, những chuyên gia mã hóa bắt đầu đề nghị sử dụng những giải thuật khác, như SHA-1 (khi đó cũng bị xem là không an toàn) Trong năm 2004, nhiều lỗ hổng hơn bị 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
1.5.1.2 Nguyên lý thuật toán MD5 [5]
- Bước 1: Nhồi dữ liệu
Nhồi thêm các bits sao cho dữ liệu có độ dài l ≡ 448 mod 512 hay l = n *
512 + 448 (n, l nguyên)
Luôn thực hiện nhồi dữ liệu ngay cả khi dữ liệu ban đầu có độ dài mong muốn Ví dụ, dữ liệu có độ dài 448 được nhồi thêm 512 bits để được độ dài 960 bits
Số lượng bit nhồi thêm nằm trong khoảng 1 đến 512
Các bit được nhồi gồm 1 bit “1” và các bit 0 theo sau
Hình 1.3 Nhồi dữ liệu.
- Bước 2: Thêm vào độ dài
Độ dài của khối dữ liệu ban đầu được biểu diễn dưới dạng nhị phân 64-bit
và được thêm vào cuối chuỗi nhị phân kết quả của bước 1
Nếu độ dài của khối dữ liệu ban đầu > 264, chỉ 64 bits thấp được sử dụng,nghĩa là giá trị được thêm vào bằng K mod 264
Trang 9Kết quả có được từ 2 bước đầu là một khối dữ liệu có độ dài là bội số của
512 Khối dữ liệu được biểu diễn:
Bằng một dãy L khối 512-bit Y0, Y1,…, YL-1
Bằng một dãy N từ (word) 32-bit M0, M1, MN-1 Vậy N = L x 16 (32 x 16)
Hình 1.4 Thêm vào độ dài.
- Bước 3: Khởi tạo bộ đệm MD (MD buffer)
Một bộ đệm 128-bit được dùng lưu trữ các giá trị băm trung gian và kết quả Bộ đệm được biểu diễn bằng 4 thanh ghi 32-bit với các giá trị khởi tạo ở dạng little-endian (byte có trọng số nhỏ nhất trong từ nằm ở địa chỉ thấp nhất) như sau:
- Bước 4: Xử lý các khối dữ liệu 512-bit
Trọng tâm của giải thuật là hàm nén (compression function) gồm 4
“vòng” xử lý Các vòng này có cấu trúc giống nhau nhưng sử dụng các hàm luận
Trang 10Mảng 64 phần tử được tính theo công thức T[i] = 232 × abs(sin(i)), I được tính theo radian.
Kết quả của 4 vòng được cộng (theo modul 232 với đầu vào CVq để tạo
CVq+1
Hình 1.5 Xử lý các khối dữ liệu 512-bit.
Trang 11Bảng 3.2 Các giá trị T.
- Bước 5: Xuất kết quả
Sau khi xử lý hết L khối 512-bit, đầu ra của lần xử lý thứ L là giá trị băm
128 bits Giải thuật MD5 được tóm tắt như sau:
+ CV0 = IV
+ CVq+1 = SUM32[CVq,RFI(Yq,RFH(Yq,RFG(Yq,RFF(Yq,CVq))))]
+ MD = CVL - 1
Với các tham số:
+ IV bộ đệm gồm 4 thanh ghi ABCD
+ Yq khối dữ liệu thứ q gồm 512 bits
+ L số khối 512-bit sau khi nhồi dữ liệu
+ CVq đầu ra của khối thứ q sau khi áp dụng hàm nén
+ RFx hàm luận lý sử dụng trong các “vòng” (F,G,H,I)
+ MD message digest - giá trị băm
+ SUM32 cộng modul 232
Trang 121.5.2 Thuật toán hàm băm SHA-1
1.5.2.1 Giới thiệu hàm băm SHA-1 [1]
Năm 1990, Ron Rivest đã sáng tạo ra hàm băm MD4 Sau đó năm 1992, ông cải tiến MD4 và phát triển một hàm băm khác MD5 Năm 1993, Cơ quan
An ninh Quốc gia Hoa Kỳ/Cục An ninh Trung ương (NSA) đã công bố,một hàmbăm rất giống với MD5 được gọi là SHA Vào năm 1995, sau việc khắc phục những lỗ hổng kỹ thuật, NSA đã thay đổi SHA trở thành một hàm băm mật mã khác gọi là SHA-1
SHA-1 (Sercue Hash Algorithm) là thuật toán cũng được xây dựng trên thuật toán MD4, đang được sử dụng rộng rãi Thuật toán SHA-1 tạo ra chuỗi mãbăm có chiều dài cố định 160 bit từ chuỗi bit dữ liệu đầu vào x có chiều dài tùy ý
1.5.2.2 Thuật toán SHA-1
Input thông điệp với độ dài tối đa 264 bits
Output thông điệp rút gọn (message digest) có độ dài 160 bits
Giải thuật gồm 5 bước trên khối 512 bits:
- Bước 1 Nhồi dữ liệu:
Thông điệp được nhồi thêm các bit sao cho độ dài L mod 512 luôn đồng dư là448
Thông điệp luôn luôn được nhồi thêm các bit
Số bit nhồi thêm phải nằm trong khoảng 1-512
Phần thêm vào cuối dữ liệu gồm 1 bit 1 và theo sau là các bit 0
- Bước 2 Thêm độ dài:
Độ dài khối dữ liệu ban đầu sẽ được biểu diễn dưới dạng nhị phân 64 bit
và được thêm cuối chuỗi nhị phân mà ta thu được ở bước 1
Độ dài được biểu diễn dưới dạng nhị phân 64 bit không dấu
Kết quả thu được từ 2 bước là một khối dữ liệu có độ dài là bội số của
512 (Với cứ 512 bit là một khối dữ liệu)
- Bước 3 Khởi tạo bộ đệm MD (MD buffer):
Một bộ đệm 160 bit được dùng để lưu trữ các giá trị băm trung gian và kếtquả Bộ đệm được biểu diễn bằng 5 thanh ghi 32-bit với các giá trị khởi tạo ở dạng big-endian (byte có trọng số lớn nhất trong từ nằm ở địa chỉ thấp nhất) và
có hai bộ đệm Năm thanh ghi của bộ đệm đầu tiên được đánh đặt tên là A, B,C,D,E và tương tự cho bộ đệm thứ hai là H0, H1, H2, H3, H4 Có giá trị như sau(Theo dạng Hex):
H =67452301
Trang 13H3= 98BADCFE
H4= 10325476
H5= C3D2E1F0
- Bước 4 Xử lý các khối dữ liệu 512 bit:
+ Trọng tâm của giải thuật bao gồm bốn vòng lặp thực hiện tất cả 80 bước
+ Bốn vòng lặp có cấu trúc như nhau, chỉ khác nhau ở hàm logic Ft
Trang 14Đầu ra của 4 vòng (bước 80) được cộng với giá trị của bộ đệm để tạo ra một chuỗi kết quả dài 160 bit.
- Bước 5 Xuất kết quả:
Sau khi thao tác trên toàn bộ N khối dữ liệu (blocks) Kết quả của khối thứ N là chuỗi băm 160 bit
có thể tạo ra chữ ký giả để vét sạch tài khoản ngân hàng của người sử dụng không may
MD5 và SHA1 đều cộng thêm các bit “giả” để tạo thành những khối chia hết cho 512 bit, nhưng SHA1 sử dụng cùng một hàm phi tuyến f cho cả bốn
- Trong hàm phi tuyến thứ 2 của MD5 có sự cải tiến so với MD4, SHA thì
sử dụng lại hàm phi tuyến của MD4, tức (X and Y) or (X and Z) or (Y and Z)
- Trong MD5 với mỗi bước được cộng kết quả của bước trước đó Sự
Trang 15MD5), điều này làm cho phương pháp tấn công của Boer-Bosselaers đối với SHA bị thất bại (Den Boer và Bosselaers là hai người đã phá thành công 2 vòng cuối trong MD4)
Input: MD5 là chuỗi có độ dài bất kì còn SHA1 là chuỗi có độ dài tối đa
264 bits
- Hao tốn tài nguyên
- Tốc độ
- Cả hai dựa trên phép toán 32 bit, thực hiện tốt trên các kiến trúc 32 bit
- SHA1 thực hiện nhiều hơn 16 bước và thao tác trên thanh ghi 160 bit nên tốt độ thực hiện chậm hơn
- Độ an toàn (khả năng chống tấn công)
- Để tạo ra thông điệp có giá trị băm cho trước, cần 2128 thao tác với MD5
và 2160 với SHA1
- Để tìm 2 thông điệp có cùng giá trị băm, cần 264 thao tác với MD5 và 280
với SHA1 [10]
Trang 16Chương 2 ỨNG DỤNG CỦA HÀM BĂM
2.1 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ữ
2.2 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 [9]
2.3 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 [9]
Trang 172.4 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ình 2.6 Quy trình tạo chữ ký điện tử có kết hợp hàm băm.
Chứng thực:
Chứng thực chữ ký điện tử.
Nếu kết quả băm giống nhau, thông điệp được xác thực vì nếu bất kỳ bit nào của M hay SIG bị thay đổi, kết quả băm sẽ khác
Trang 18Chương 3 XÂY DỰNG DEMO
Sử dụng chương trình Demo minh họa các hàm và thuật toán dùng trong chữ ký điện tử
3.1 Mã hóa dữ liệu
Bước 1: Nhấn vào nút “Mã hóa MD5 và SHA1”
Bước 2: Tại form “Mã hóa MD5 và SHA1” nhập vào chuỗi muốn mã hóa
Trang 19Bước 3: Chọn kiểu mã hóa và số lần mã hóa.
Bước 4: Bấm vào nút “encrypt” để thực hiện mã hóa
Trang 203.2 Tạo chữ ký số
Người gửi:
- Tạo khóa bí mật, khóa công khai, gửi khóa công khai cho người nhậnBước 1: Nhấn vào button “Chữ ký số”
Bước 2: Nhập vào cặp số p, q với p, q là hai số nguyên tố trong đó p > q
Bước 3: Bấm vào nút tạo khóa Chương trình xử lý tạo ra các số D, N, E, cặp (D, N) là khóa bí mật mã hóa thông điệp Cặp (N, E) là khóa công khai để giải mã
Trang 21Bước 4: Gửi khóa công khai cho người nhận thông điệp trước.
- Băm thông điệp
Nhập thông điệp vào ô textbox Nhấn nút “Hash” để tiến hành băm thông điệp (ở đây nhóm chọn hàm băm MD5 để băm thông điệp) Thông điệp sẽ đượcbăm thành thông điệp rút gọn
Tạo chữ ký với khóa bí mật
Trang 22Tạo chữ ký số bằng cách mã hóa thông điệp bằng khóa bí mật vừa tạo Gửi thông điệp và chữ ký số cho người nhận, nhấn vào nút tạo chữ ký số, thông điệp sau khi băm sẽ được mã hóa bằng khóa bí mật vừa tạo.
Người nhận: Sau khi nhận được thông điệp và chữ ký số người nhận tiến hành xác thực chữ ký số
Bước 1: Băm thông điệp vừa được nhận từ người gửi
Bước 2: Giải mã chữ ký số bằng khóa công khai
- Nhập chữ ký số nhận được vào ô textbox
- Nhập cặp khóa công khai vào hai ô tương ứng với số E, số N (khóa côngkhai được người gửi tạo ra và gửi cho người nhận trước lúc nhận thông điệp)
Trang 23- Nhấn vào nút “Giải Mã” Chữ ký số sẽ được giải mã thành thông điệp rút gọn.
Bước 3: Xác thực thông điệp bằng cách so sánh thông điệp sau khi băm với chữ ký số sau khi giải mã
- Nhấn vào nút xác thực để thực hiện so sánh chuỗi thông điệp sau khi băm với chuỗi chữ ký số sau khi giải mã
- Nếu thông điệp được truyền đi chính xác hai thông điệp sẽ giống nhau, ngược lại, kết thúc chương trình
Trang 24TÀI LIỆU THAM KHẢO
Tiếng Việt
[1] Mạnh Thiên Lý 2006 Đồ án xây dựng phần mềm ứng dụng chữ ký
điện tử.
[2] Nguyễn Ngọc Hoá, Phạm Tâm Long 2008 Mô hình xác thực hộ
chiếu điện tử, Khoa CNTT, ĐHCN-ĐHQGHN, Hội thảo Quốc gia lần thứ XI.
[3] GS.TS Phan Đình Diệu 2009 Lý thuyết mật mã và an toàn thông
tin, Nhà xuất bản Đại học Quốc gia Hà Nội.
[4] ThS Trương Hoài Phan 2010 Giới thiệu mã hóa dữ liệu SHA1, MD5
và đề mô ứng dụng
[5] ThS Trương Hoài Phan.2010 Tìm hiểu về hàm băm.
[6] Nguyễn Xuân Dũng 2011 Bảo mật thông tin và mô hình ứng dụng [7].TS Nguyễn Hoài Anh 2011 Thương mại điện tử.
[8] ĐH Ngoại Thương 2012 Giáo trình thương mại điện tử.
[9] TS Nguyễn Khanh Văn 2012 Giáo trình an toàn và bảo mật thông tin
[10] Nguyễn Hải Nhật Khóa luận tốt nghiệp 2014 Tìm hiểu về chữ ký điện tử và ứng dụng
Tiếng Anh
[11] Ningh Draft 2006 Machine Readable Travel Documents
[12] NIST - U.S, National Institute of Standards and Technology, Trang 50-51, 68-73
[13] Xiaoyun Wang, Dengguo Feng, Xuejja Lai, Hongbo Yu.2006 Conllisions for Hash Functions MD4, MD5, HAVAL - 128 and RIPEMD
Trang web
[14] http://vi.wikipedia.org/wiki/chữ_ký_số
[15] http://vi.wikipedia.org/wiki/Hàm_băm
[16] http://www.3c.com.vn/Story/vn/hotrokhachhang/thuongmaidientu/