Các ứng dụng điển hình của hàm băm mật mã là: xác thực, đảm bảo tính toàn vẹn dữ liệu, tạo chữ ký số, .... Nghiên cứu xây dựng tạo ra các hàm băm nâng cao mới và cung cấp thông tin chi t
Trang 1KHOA VIỄN THÔNG I
Trang 22
LỜI CẢM ƠN
Em là Thạch Thọ Quỳnh, em xin thay mặt nhóm 13 gửi lời cảm ơn sâu sắc đến Học viện Công nghệ Bưu chính Viễn thông đã đưa bộ môn “An ninh mạng Viễn Thông” vào trong chương trình giảng dạy của khoa, em cảm thấy bộ môn rất hữu ích đối với bản thân mình nói riêng và sinh viên Học viện nói chung, sau khi học xong môn này em thấy mình nhận được nhiều kiến thức về an ninh mạng và giúp ích em trong quá trình học tập
và làm việc Đặc biệt em xin chân thành cảm ơn đến TS Hoàng Trọng Minh – giảng viên bộ môn “An ninh mạng Viễn Thông” đã truyền đạt những kiến thức quý báu cho chúng em trong suốt thời gian học tập kì vừa qua Mặc dù đã rất cố gắng nhưng hiểu biết và kỹ năng về môn học này của chúng em còn nhiều hạn chế Do đó bài tiểu luận của nhóm em khó tránh khỏi những thiếu sót, những chỗ chưa chính xác, rất mong được thầy xem xét và góp ý giúp em để bài tiểu luận này được hoàn thiện hơn
Em xin chân thành cảm ơn!
Trang 3
3
Thông tin truyền qua mạng ngày càng bị ảnh hưởng bởi các tác động, các thám
tử có mặt ở khắp mọi nơi, luôn đề phòng để đánh cắp hoặc cố tình làm thay đổi thông tin Để bảo vệ tin nhắn, cần phải bảo vệ tốt hơn tính bảo mật và tính toàn vẹn của dữ liệu tin nhắn Ngoài lượng thông tin này, nó cũng phải xác thực Và cùng với sự phát triển của các kỹ thuật mật mã, hàm băm cũng ra đời Hàm băm tạo ra mã băm được sử dụng cho nhiều mục đích Các ứng dụng điển hình của hàm băm mật mã là: xác thực, đảm bảo tính toàn vẹn dữ liệu, tạo chữ ký số, Nghiên cứu xây dựng tạo ra các hàm băm nâng cao mới và cung cấp thông tin chi tiết về khả năng ứng dụng giúp tăng tính bảo mật và tính xác thực cũng như tính toàn vẹn và bảo mật của dữ liệu đảm bảo thông tin
Với sự phát triển ngày càng nhanh chóng của Internet và các ứng dụng giao dịch điện tử trên mạng, nhu cầu bảo vệ thông tin trong các hệ thống và ứng dụng điện
tử ngày càng được quan tâm và có ý nghĩa hết sức quan trọng Về cơ bản, băm là quá trình chuyển đổi dữ liệu đầu vào có độ dài bất kỳ thành chuỗi đầu ra đặc trưng có độ dài
cố định Quá trình băm được thực hiện bằng cách sử dụng một hàm băm Hash là bất kỳ chức năng nào có thể được sử dụng để ánh xạ dữ liệu có kích thước bất kỳ thành các giá trị có kích thước cố định Các giá trị được trả về bởi một hàm băm được gọi là thông điệp băm, giá trị băm, mã băm hoặc hash Nhóm em đã chọn đề tài “Tìm hiểu về Hàm Băm” với nội dung của bài tiểu luận được chia làm 5 chương, với cấu trúc từng chương như sau:
Chương 1: Giới thiệu về hàm băm
Chương 2: Thuật toán băm
Chương 3: Ứng dụng của hàm băm
Chương 4: Các yêu cầu và độ an toàn của hàm băm
Chương 5: Kết luận chung
Trang 44
MỤC LỤC
LỜI CẢM ƠN 2
LỜI MỞ ĐẦU 3
MỤC LỤC 4
BẢNG PHÂN CÔNG CÔNG VIỆC CỦA NHÓM 6
DANH MỤC KÝ HIỆU, THUẬT NGỮ VIẾT TẮT 7
DANH MỤC HÌNH VẼ 8
DANH MỤC BẢNG BIỂU 8
CHƯƠNG 1: GIỚI THIỆU VỀ HÀM BĂM 9
1.1 Khái niệm về hàm băm (hash function) 9
1.2 Đặc tính của hàm băm 9
1.3 Các hàm băm mật mã học 10
1.4 Tính chất của hàm băm 11
CHƯƠNG 2: THUẬT TOÁN 12
2.1 Hàm băm dòng MD5 12
2.1.1 Giới thiệu về hàm băm MD5 12
2.1.2 Thuật toán MD5 12
2.2 Hàm băm an toàn SHA-1 15
2.2.1 Giới thiệu về hàm băm SHA-1 15
2.2.2 Thuật toán SHA-1 15
2.3 So sánh MD5 và SHA-1 18
CHƯƠNG 3: ỨNG DỤNG CỦA HÀM BĂM 19
3.1 Định danh tệp hoặc dữ liệu 19
3.2 Bảo vệ tính toàn vẹn của thông điệp hoặc tệp tin được gửi qua mạng 19
3.3 Xác thực mật khẩu 19
3.4 Xác thực thông điệp 20
3.5 Hashing trong blockchain 21
3.6 Tạo chữ ký điện tử 22
3.7 Chống giả mạo 23
CHƯƠNG 4: CÁC YÊU CẦU VÀ ĐỘ AN TOÀN CỦA HÀM BĂM 24
4.1 Các yêu cầu bảo mật cho hàm băm bảo mật 24
4.1.1 Các tấn công đoán thử đúng sai 25
Trang 55
4.1.3 Tấn công vào chống xung đột 26
4.2 Độ an toàn của hàm băm 26
4.2.1 Độ an toàn của hàm băm SHA 26
4.2.2 Độ an toàn của hàm băm MD5 26
V KẾT LUẬN CHUNG 27
DANH MỤC TÀI LIỆU THAM KHẢO 28
Trang 66
BẢNG PHÂN CÔNG CÔNG VIỆC CỦA NHÓM
Họ và tên Mã sinh viên Nội dung thực hiện
bài báo cáo
Nội dung phân chia công việc
Chương 1: Tìm hiểu
về hàm băm Chương 2: Thuật toán băm
Chương 1: Tìm hiểu
về hàm băm Chương 3: Ứng dụng của hàm băm
Chương 5: Kết luận chung
* Chỉnh sửa, tổng hợp, sắp xếp và hoàn thiện bản word
* Viết lời mở đầu, đặt vấn đề, lập các danh mục bảng biểu, hình
vẽ, mục lục,…
* Tổng hợp các tài liệu tham khảo
* Phân chia nội dung cho các thành viên trong nhóm
Chương 1: Tìm hiểu
về hàm băm Chương 4: Các yêu cầu và độ an toàn của hàm băm
Trang 77
DANH MỤC KÝ HIỆU, THUẬT NGỮ VIẾT TẮT
Từ viết tắt Thuật ngữ tiếng anh Thuật ngữ tiếng việt
NIST National Institute of Standards and
Technology
Viện Tiêu chuẩn và Công nghệ Quốc gia Mỹ
Trang 88
DANH MỤC HÌNH VẼ
Hình 1.1……….… 9
Hình 2.1: Qúa trình trong một vòng……… 15
Hình 2.2: Phương thức mã hóa SHA-1……….…….18
Hình 3.1: Password Hash Salting……… 20
Hình 3.2: Nguyên lý hoạt động của Blockchain……… …… 21
DANH MỤC BẢNG BIỂU Bảng 1.1: Các hàm băm mật mã học……… 10
Bảng 2.1 Các giá trị trong bảng T có 64 phần tử……… … 14
Bảng 4.1: Các yêu cầu hàm băm bảo mật……… … 25
Trang 99
CHƯƠNG 1: GIỚI THIỆU VỀ HÀM BĂM
1.1 Khái niệm về hàm băm (hash function)
Hàm băm (Hash function) là một hàm toán học có thể 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 (theo 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),
nó đại diện cho thông điệp gốc
Hàm băm là hàm một chiều và giá trị băm là duy nhất, rất khó để suy ra nội dung
gốc hoặc độ dài ban đầu của tài liệu gốc
Hình 1.1:
1.2 Đặc tính của hàm băm
- Hàm băm h là hàm một chiều (one-way hash) với các đặc tính sau:
1) Với thông điệp đầu vào x thu được bản băm z = h(x) là duy nhất
2) Nếu dữ liệu trong thông điệp x thay đổi để thành thông điệp x’ thì h(x’) h(x) Hai
thông điệp hoàn toàn khác nhau thì giá trị hàm băm cũng khác nhau
3) Nội dung của thông điệp gốc khó thể bị suy ra từ giá trị hàm băm Với thông điệp
x thì dễ dàng tính được z = h(x), nhưng ngược lại thì khó thể suy ngược lại được x nếu
chỉ biết giá trị hàm băm h
Trang 10Kích thước khối
Độ dài Kích
thước word
Xung đột
Trang 1111
1.4 Tính chất của hàm băm
Tính chất 1 – hàm băm h là hàm một chiều: hàm băm h được gọi là hàm 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ó thể tính toán để tìm ra thông điệp ban đầu x sao cho h(x) = z
Tính chất 2 - Hàm băm h không va chạm yếu: hàm băm h được gọi là không
va chạm yếu, nếu cho trước bức thông điệp x, khó thể tính toán để tìm ra bức thông điệp x’ x mà h(x’) = h(x)
Tính chất 3 – Hàm băm h không va chạm mạnh: hàm băm h được gọi là không
va chạm mạnh nếu khó thể tính toán để tìm ra hai bức thông điệp khác nhau x và x’ mà
có h(x) = h(x’)
Trang 1212
CHƯƠNG 2: THUẬT TOÁN
2.1 Hàm băm dòng MD5
2.1.1 Giới thiệu về hàm băm MD5
MD5 (viết tắt của thuật toán Message-Digest 5, Thuật toán thông báo số 5) là một hàm băm được sử dụng để mã hóa với giá trị băm là 128 bit Nó từng được coi là một tiêu chuẩn trên Internet MD5 đã được sử dụng rộng rãi trong các chương trình bảo mật mạng và cũng thường được sử dụng để kiểm tra tính toàn vẹn của tệp
Năm 1991, Giáo sư Ronald L Rivest đã phát triển MD5 MD5 không nhanh bằng thuật toán MD4, nhưng dữ liệu trả về an toàn hơn MD4 Nó được sử dụng trong nhiều ứng dụng bảo mật và để xác minh xem tệp có bị thay đổi hay không, bên cạnh đó còn kiểm tra tính toàn vẹn của tệp dữ liệu, MD5 có hai ứng dụng quan trọng:
- MD5 phần mềm được sử dụng rộng rãi trên thế giới để đảm bảo rằng các tập tin tải về không bị hỏng Người dùng có thể so sánh các thông số kiểm tra phần mềm thông qua MD5 Unix sử dụng MD5 để kiểm tra các gói mà nó phân phối, trong khi Windows
sử dụng phần mềm của hãng thứ ba
- Người dùng cũng sử dụng MD5 để mã hóa mật khẩu Mục đích của mã hóa này là chuyển đổi một chuỗi mật khẩu thành một mã khác để mật khẩu không thể được truy tìm lại
2.1.2 Thuật toán MD5
Đầu vào: thông điệp với độ dài bất kỳ
Output: giá trị băm (message digest) 128 bits
Giải thuật gồm 5 bước thao tác trên khối 512 bits
Bước 1: Điền dữ liệu
Thêm các bits sao cho dữ liệu có độ dài l ≡ 448 mod 512 hay
Trang 13Nhóm 13 – Hàm Băm 13
Độ dài của khối dữ liệu ban đầu được biểu thị dưới dạng nhị phân 64 bit và được thêm vào cuối chuỗi nhị phân được tạo ở bước 1
Nếu độ dài của khối dữ liệu ban đầu lớn hơn 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
Kết quả của hai bước đầu tiên 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 như sau
- 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= 512)
Bước 3: Khởi tạo bộ đệm MD (MD buffer)
Để lưu trữ các giá trị băm kết quả và trung gian dùng một bộ đệm 128-bit Nó đượ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 thuật toán là một hàm nén bao 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 lý khác nhau, bao gồm F,
G, H và I
Trang 14 Kết quả của 4 vòng được cộng (theo modulo 232với đầu vào CVq để tạo CVq +1
T[1] = d76aa478 T[17] = f61e2562 T[33] = fffa3942 T[49] = f4292244 T[2] = e8c7b756 T[18] = c040b340 T[34] = 8771f681 T[50] = 432aff97 T[3] = 242070db T[19] = 265e5a51 T[35] = 6d9d6122 T[51] = ab9423a7 T[4] = c1bdceee T[20] = e9b6c7aa T[36] = fde5380c T[52] = fc93a039 T[5] = f57c0faf T[21] = d62f105d T[37] = a4beea44 T[53] = 655b59c3 T[6] = 4787c62a T[22] = 2441453 T[38] = 4bdecfa9 T[54] = 8f0ccc92 T[7] = a8304613 T[23] = d8a1e681 T[39] = f6bb4b60 T[55] = ffeff47d T[8] = fd469501 T[24] = e7d3fbc8 T[40] = bebfbc70 T[56] = 85845dd1 T[9] = 698098d8 T[25] = 21e1cde6 T[41] = 289b7ec6 T[57] = 6fa87e4f T[10] = 8b44f7af T[26] = c33707d6 T[42] = eaa127fa T[58] = fe2ce6e0 T[11] = ffff5bb1 T[27] = f4d50d87 T[43] = d4ef3085 T[59] = a3014314 T[12] = 895cd7be T[28] = 455a14ed T[44] = 4881d05 T[60] = 4e0811a1 T[13] = 6b901122 T[29] = a9e3e905 T[45] = d9d4d039 T[61] = f7537e82 T[14] = fd987193 T[30] = fcefa3f8 T[46] = e6db99e5 T[62] = bd3af235 T[15] = a679438e T[31] = 676f02d9 T[47] = 1fa27cf8 T[63] = 2ad7d2bb T[16] = 49b40821 T[32] = 8d2a4c8a T[48] = c4ac5665 T[64] = eb86d391
Bảng 2.1 Các giá trị trong bảng T có 64 phần tử
Bước 5: Xuất kết quả
Sau khi xử lý tất cả các khối L 512-bit, đầu ra của xử lý thứ L là giá trị băm 128-
bit
Trang 15Nhóm 13 – Hàm Băm 15
Hình 2.1 Qúa trình trong một vòng
2.2 Hàm băm an toàn SHA-1
2.2.1 Giới thiệu về hàm băm SHA-1
- Năm 1990 Ron Rivest đã phát triển hàm băm MD4 Sau đó, ông đã cải tiến và tạo ra một hàm băm khác, MD5 Năm 1993, Cơ quan An ninh Quốc gia Hoa Kỳ / Cơ quan An ninh Trung ương (NSA) đã công bố hàm băm rất giống với MD5 là SHA Năm 1995, sau khi khắc phục các sự cố kỹ thuật, NSA đã thay đổi SHA thành một hàm băm mật mã khác gọi là SHA-1
- SHA-1 là thuật toán cũng dựa trên thuật toán MD4 Thuật toán SHA-1 tạo ra chuỗi mã băm có chiều dài 160 bit cố định từ chuỗi bit dữ liệu đầu vào x có chiều dài tùy ý
2.2.2 Thuật toán SHA-1
Đầu vào: Thông điệp với độ dài tối đa 264 bits
Đầu ra: Giá trị băm (message digest) có độ dài 160 bits
Thuật toán: 5 bước được thao tác trên các khối 512 bit
Bước 1: Nhồi thêm dữ liệu
Thông điệp được thêm các bits sao cho độ dài l 448 mod 512 hay
l = n * 512 + 448 (n,l nguyên)
Luôn luôn được nhồi thêm dữ liệu vào thông điệp
Số bits nhồi thêm nằm trong khoảng 1 đến 512
Trang 16Nhóm 13 – Hàm Băm 16
Phần dữ liệu nhồi thêm gồm một bit 1 và theo sau là các bít 0
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
Độ dài được biểu diễn dưới dạng nhị phân 64-bit không dấu
Kế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 = 512)
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ết quả 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) như sau:
Bước 4: Các khối dữ liệu 512-bit được xử lý
Trọng tâm của giải thuật bao gồm 4 vòng lặp thực hiện 80 bước
4 vòng lặp có cấu trúc như nhau và khác nhau ở các hàm logic f1, f2, f3, f4
Mỗi vòng có đầu vào gồm một bộ đệm 160-bit ABCDE và khối 512-bit hiện thời
Mỗi bước sẽ dùng một hằng số
Kt (0 t 79)
Kt = 5A 8 2 7 9 9 9 ( 0 t 1 9 )
Kt = 6ED9EBA1 (20 t 39)
Trang 17Nhóm 13 – Hàm Băm 17
Kt = CA62C1D6 (60 t 79)
Đầu ra của 4 vòng (bước 80) sẽ cộng với đầu ra của bước CVq để cho ra CVq+1
Bước 5: Xuất kết quả
Kết quả của khối thứ L là bảng băm 160-bit
Giải thuật được tóm tắt như sau:
L = số khối 512-bit của thông điệp
SUM32 = phép cộng modulo 232 trên từng từ (32 bits) của đầu vào
MD = giá trị băm
Giải thuật thực hiện tất cả 80 bước, mỗi bước được mô tả như sau:
Trang 18Nhóm 13 – Hàm Băm 18
Hình 2.2: Phương thức mã hóa SHA-1
2.3 So sánh MD5 và SHA-1
- Khả năng chống lại tấn công brute-force:
Cần 2128 thao tác với MD5 và 2160 với SHA-1 để tạo được ra thông điệp có giá trị băm cho trước
Sẽ cần 264 thao tác với MD5 và 280 với SHA-1 để tìm ra 2 thông điệp có cùng giá trị băm
Cả 2 đều có cấu trúc tốt để chống lại thám mã
- Tốc độ:
SHA-1 và MD5 đều 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
MD5 có tốc độ thực hiện nhanh hơn SHA-1 do nó thực hiện ít hơn 16 bước
- Tính đơn giản: SHA-1 và MD5 đều được mô tả đơn giản và dễ dàng cài đặt trên cả phần cứng và phần mềm
Trang 19Nhóm 13 – Hàm Băm 19
3.1 Định danh tệp hoặc dữ liệu
Hashing cũng có thể được sử dụng như một phương tiện để xác định tập tin một cách đáng tin cậy Một số hệ thống quản lý mã nguồn, như Monotone, Mercurial hay Git, sử dụng giá trị SHA1sum của nội dung cây thư mục, thông tin thư mục gốc, tệp v.v
3.2 Bảo vệ tính toàn vẹn của thông điệp hoặc tệp tin được gửi qua mạng
Hàm băm mật mã có tính chất là một hàm một chiều Từ khối dữ liệu hoặc giá trị đầu vào chỉ có 1 giá trị băm duy nhất có thể được lấy ra Đối với tính chất của hàm 1 chiều như chúng ta đã biết Có nghĩa là, ngay cả việc ghi lại hàm băm của nó cũng không thể suy ra giá trị, hàm băm ban đầu của thông điệp
Ví dụ, để xác định xem một tệp hoặc tin nhắn đã thay đổi hay chưa, bạn có thể
so sánh các tính chất của thông điệp báo trước và sau khi nó được đăng (hoặc bất kỳ sự kiện nào khác) Thông báo tóm tắt cũng có thể được sử dụng như một phương tiện nhận dạng tệp đáng tin cậy
Các hàm băm thường được sử dụng trong bảng băm để giảm nỗ lực tính toán cần thiết để tìm một khối dữ liệu trong tập hợp Giá trị băm hoạt động gần giống như một chìa khóa để phân biệt giữa các khối dữ liệu
3.3 Xác thực mật khẩu
Xác minh mật khẩu thường dựa trên các hàm băm mật mã Mật khẩu người dùng, khi được cung cấp rõ ràng, có thể tạo ra lỗ hỏng bảo mật nghiêm trọng nếu tệp mật khẩu
bị xâm phạm Đối với cơ chế này, chúng ta thường chỉ lưu giá trị băm của mỗi mật khẩu
Để xác thực người dùng, mật khẩu do người dùng nhập sẽ được băm và so sánh với giá trị băm được lưu trữ tương ứng Mật khẩu ban đầu không thể được tính toán lại từ giá trị băm được lưu trữ trong cơ sở dữ liệu