Ví dụ: Nếu bạn gửi một tệp và bạn muốn biết liệu nó đã được gửi đến một người dùng dự định mà không có bất kỳ thay đổi nào hay chưa, thì có một số cách để kiểm tra, như liên hệ với người
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA VIỄN THÔNG I
Trang 2LỜI NÓI ĐẦU
Bảo mật an ninh mạng hiện nay là một vấn đề quan trọng và được đặt lên hàng đầu với bất kỳ tổ chức, doanh nghiệp nào có sử dụng hệ thống mạng dù lớn hay nhỏ Hiện nay, luôn có các hacker luôn tìm cách xâm nhập và tấn công vào các hệ thống mạng để thu thập các thông tin nội bộ, bí mật của các tổ chức doanh nghiệp và các người dùng cá nhân nhằm trục lợi hay có các ý định xấu với thông tin đoạt được Do đó, các nhà quản trị mạng phải luôn cố gắng bảo vệ hệ thống của mình tốt nhất có thể và hoàn thiện, nâng cấp hệ thống để khắc phục được các vấn đề bảo mật cũng như các phương thức tấn công ngày một tinh vi hơn của các hacker
Kỹ thuật Password Hashing (Băm mật khẩu) hiện nay đang là một kỹ thuật tốt để
sử dụng trong việc bảo vệ mật khẩu của người dùng hệ thống trước các cuộc tấn công Tuy nhiên chỉ sử dụng mỗi Password Hashing thôi là chưa đủ để bảo vệ do đó các hệ thống sẽ sử dụng thêm Salt hoặc thậm chí là cả Pepper Trong bài tiểu luận này sẽ làm rõ các khái niệm trên và thực hiện xây dựng một ứng dụng xác thực người dùng và bảo vệ mật khẩu người dùng sử dụng thuật toán Bcrypt
Bố cục của bài tiểu luận gồm 3 chương:
Chương 1: Tổng quan về hàm băm
Chương 2: Password Hashing và Bcrypt
Chương 3: Ứng dụng xác thực người dùng sử dụng Bcrypt
Bằng sự cố gắng và nỗ lực nhóm em đã hoàn thành xong bài tiểu luận của nhóm
Do có sự hạn chế về mặt thời gian và mức độ hiểu biết của bản thân nên không thể tránh khỏi những thiếu sót trong quá trình nghiên cứu Vì thế, nhóm em rất mong nhận được những lời góp ý và sự chỉ bảo thêm của các thầy cô và các bạn để em có thêm những kiến thức phục vụ cho học tập cũng như công việc sau này
Trang 3MỤC LỤC
LỜI NÓI ĐẦU i
MỤC LỤC iii
BẢNG PHÂN CÔNG CÔNG VIỆC iiii
DANH MỤC HÌNH VẼ iv
DANH MỤC BẢNG BIỂU iv
CHƯƠNG I: TỔNG QUAN VỀ HÀM BĂM 1
1.1 Khái niệm hàm băm 1
1.1.1 Tính năng của hàm băm 2
1.1.2 Tính chất cơ bản của hàm băm 2
1.2 Cơ chế hoạt động của hàm băm 3
1.3 Một số hàm băm phổ biến 5
1.4 Ứng dụng của hàm băm 6
1.5 Yêu cầu về độ an toàn của hàm băm 8
1.6.Kết luận chương 11
CHƯƠNG 2: PASSWORD HASHING VÀ THUẬT TOÁN BCRYPT 12
2.1 Các phương thức lưu trữ mật khẩu 12
2.2 So sánh Hashing và Encryption 13
2.3 Khái niệm Password Hashing, Salt và Pepper 15
2.4 Các phương thức tấn công đối với hàm băm 18
2.5 Giới thiệu về Bcrypt 19
2.6 Kết luận chương 20
CHƯƠNG 3: ỨNG DỤNG XÁC THỰC NGƯỜI DÙNG SỬ DỤNG BCRYPT 21
3.1 Các thành phần của ứng dụng 21
3.2 Các bước ứng dụng sử dụng Bcrypt để Hash Password dùng Salt 21
3.3 Các bước ứng dụng xác thực người dùng 22
3.4 Kết quả 23
3.5 Kết luận chương 24
KẾT LUẬN 25
TÀI LIỆU THAM KHẢO 26
Trang 4BẢNG PHÂN CÔNG CÔNG VIỆC
Nội dung tìm hiểu Nội dung triển khai Thành viên thực
hiện
Chương 1: Tổng quan
về hàm băm
- Khái niệm về hàm băm
- Đặc điểm của hàm băm
- Cơ chế hoạt động của hàm băm
- Các ứng dụng của hàm băm
- Các yêu cầu về hàm băm
- So sánh hàm băm với mã hoá
- Giới thiệu về thuật toán Bcrypt
- Các ví dụ của Bcrypt trong các ngôn ngữ lập trình khác nhau
Chương 3: Ứng dụng
xác thực người dùng sử
dụng Bcrypt
- Xây dựng một ứng dụng sử dụng thuật toán Bcrypt để xác thực người dùng
- Các thành phần của ứng dụng
- Các bước ứng dụng sử dụng để xác thực người dùng
- Các bước ứng dụng sử dụng Bcrypt để Password Hashing và sử dụng Salt
Trang 5DANH MỤC HÌNH VẼ
Hình 1.1: Hàm băm 2
Hình 1.2: Cơ chế hoạt động của hàm băm 4
Hình 1.3: Dữ liệu qua các khối của hàm băm 4
Hình 1.4: Ví dụ về sử dụng hàm băm trong nhận thực bản tin 8
Hình 2.1: Minh họa quá trình mã hoá 14
Hình 2.2: Minh hoạ quá trình băm 14
Hình 2.3: Ví dụ về Salt 17
Hình 2.4: Ví dụ về Pepper 17
Hình 2.5: Ví dụ về tấn công từ điển 19
Hình 2.6: Ví dụ về tấn công Brute Force 19
Hình 3.1: Sử dụng hàm genSaltSync 21
Hình 3.2: Sử dụng thư viện issacjs 22
Hình 3.3: Sử dụng hàm hashSync 22
Hình 3.4: Xác thực người sử dụng 23
Hình 3.5: Màn hình đăng ký, đăng ký thành công cùng mật khẩu đã mã hóa 23
Hình 3.6: Màn hình đăng nhập và các kết quả trả về 24
DANH MỤC BẢNG BIỂU
Bảng 1.1:Các yêu cầu đối với hàm băm bảo mật 10Bảng 2.1:Lưu trữ mật khẩu dạng văn bản thô 12
Bảng 2.2:Lưu trữ mật khẩu dạng mã hoá 13
Bảng 2.3:Lưu trữ mật khẩu dạng hàm băm 13
Bảng 2.4:So sánh Hashing và Encryption 15
Trang 6CHƯƠNG I: TỔNG QUAN VỀ HÀM BĂM
Hiện nay, dữ liệu là một trong những phần có giá trị nhất Nó đã trở thành một trong những yếu tố cần thiết trong một số lĩnh vực như hành chính công, nghiên cứu khoa học và nền kinh tế kỹ thuật số ngày càng phát triển Hơn nữa, đó là một trong những yếu tố phụ thuộc vào các công nghệ đầy hứa hẹn như Machine Learing và BigData Do đó, nhu cầu ngày càng tăng về dữ liệu đã kéo theo sự quan tâm trở lại đối với các kỹ thuật và quy trình ẩn danh Và một trong những cách tiếp cận được
sử dụng là Hashing, được sử dụng để cung cấp khả năng bảo vệ bổ sung bất cứ khi nào dữ liệu cá nhân được xử lý
Hashing là một trong những thuật toán tính toán một giá trị chuỗi từ một tệp
có kích thước cố định Về cơ bản, nó chứa các khối dữ liệu được chuyển đổi thành một khóa hoặc giá trị có độ dài cố định ngắn từ chuỗi ban đầu Thông thường, một bản tóm tắt thông tin hoặc dữ liệu trong tệp đã gửi đó
Hơn nữa, đây là một trong những cách thuận tiện và an toàn khi xác định hoặc
so sánh cơ sở dữ liệu và tệp Đó là quá trình biến đổi tập dữ liệu thành một chuỗi ký
tự có độ dài cố định mà không cần xem xét đến kích thước của dữ liệu đầu vào Và đầu ra nhận được được gọi là giá trị băm, thông báo, mã hoặc đơn giản là băm
Ngoài ra, thuật ngữ “băm” được sử dụng để mô tả cả hàm băm cũng như giá trị băm Nói một cách khác, nó chủ yếu được sử dụng để xác nhận tính nguyên gốc của tin nhắn đã gửi Ví dụ: Nếu bạn gửi một tệp và bạn muốn biết liệu nó đã được gửi đến một người dùng dự định mà không có bất kỳ thay đổi nào hay chưa, thì có một
số cách để kiểm tra, như liên hệ với người nhận địa chỉ hoặc xác minh tệp và một trong các cách tiếp cận cũng là thuật toán hàm băm này
1.1 Khái niệm hàm băm
Hàm băm là một hàm toán học điển hình được sử dụng để ánh xạ dữ liệu có kích thước khác nhau thành các giá trị có kích thước cố định Đó là một hàm toán học được sử dụng để chuyển đổi giá trị đầu vào thành giá trị số định dạng nén được gọi là giá trị băm hoặc đơn giản là băm
Trang 7Hiệu quả hoạt động:
- Nói chung đối với bất kỳ hàm băm nào h với đầu vào x, tính toán h (x) là một phép toán nhanh
- Các hàm băm được tính toán nhanh hơn nhiều so với mã hóa đối xứng
1.1.2 Tính chất cơ bản của hàm băm
Kháng tiền ảnh:
- Thuộc tính này có nghĩa là rất khó tính toán để đảo ngược một hàm băm
- Nói cách khác, nếu một hàm băm h tạo ra giá trị băm z, thì sẽ là một quá trình
Trang 8khó khăn để tìm bất kỳ giá trị đầu vào x nào có giá trị băm thành z
- Thuộc tính này bảo vệ chống lại kẻ tấn công chỉ có giá trị băm và đang cố gắng tìm đầu vào
- Thuộc tính này của hàm băm bảo vệ chống lại kẻ tấn công có giá trị đầu vào
và giá trị băm của nó và muốn thay thế giá trị khác làm giá trị hợp pháp thay cho giá trị đầu vào ban đầu
Kháng xung đột:
- Thuộc tính này có nghĩa là khó có thể tìm thấy hai đầu vào khác nhau có độ dài bất kỳ dẫn đến cùng một hàm băm Thuộc tính này còn được gọi là hàm băm không va chạm
- Nói cách khác, đối với một hàm băm h, rất khó để tìm thấy bất kỳ hai đầu vào khác nhau x và y sao cho h (x) = h (y)
- Vì hàm băm là hàm nén với độ dài băm cố định, không thể để hàm băm không
có xung đột Tính chất không va chạm này chỉ xác nhận rằng những va chạm này sẽ khó tìm thấy
- Thuộc tính này khiến kẻ tấn công rất khó tìm thấy hai giá trị đầu vào có cùng một hàm băm
- Ngoài ra, nếu một hàm băm có khả năng chống va chạm thì nó có khả năng chống trước hình ảnh thứ hai
1.2 Cơ chế hoạt động của hàm băm
Hash là trung tâm của thuật toán băm Để nhận được giá trị băm của một độ dài được xác định trước, trước tiên cần phải chia dữ liệu đầu vào thành các khối có kích
Trang 9thước cố định, bởi vì một hàm băm lấy dữ liệu có độ dài cố định Ngoài ra, các khối này được gọi là khối dữ liệu
Hình 1.2: Cơ chế hoạt động của hàm băm
Kích thước của các khối dữ liệu này khác nhau tùy thuộc vào thuật toán.Mặc dù vậy, đối với một số thuật toán, nó giống nhau Ví dụ: thông điệp 1024-bit được chia thành hai khối khác nhau có độ dài 512-bit trong khi chạy hàm băm hai lần Mặt khác, nếu thông báo có độ dài chính xác 512-bit, thì hàm băm sẽ chỉ chạy một lần
Tuy nhiên, không có gì đảm bảo rằng thông báo sẽ là bội số của 512 bit Trong một số trường hợp, một kỹ thuật có tên là Padding được sử dụng, trong đó toàn bộ thông điệp được chia đều trong một khối dữ liệu có kích thước cố định Ví dụ dưới đây cho thấy cách các khối dữ liệu được xử lý
Hình 1.3: Dữ liệu qua các khối của hàm băm
Như trong hình 1.3 trên, mỗi khối được xử lý riêng biệt Và, đầu ra của khối dữ liệu đầu tiên được gửi giống như một đầu vào cùng với khối dữ liệu thứ hai Do đó, đầu
ra của khối dữ liệu thứ ba được gửi cùng với khối dữ liệu thứ ba, v.v Cuối cùng, đến
Trang 10với đầu ra cuối cùng, là các giá trị kết hợp của tất cả các khối dữ liệu Vì vậy, ngay cả một sự thay đổi một bit ở giữa thông báo cũng sẽ thay đổi toàn bộ giá trị băm - được gọi
là hiệu ứng tuyết lở
1.3 Một số hàm băm phổ biến
Có nhiều loại thuật toán băm khác nhau như RipeMD, Tiger, xxhash và hơn thế nữa, nhưng loại băm phổ biến nhất được sử dụng để kiểm tra tính toàn vẹn của tệp là MD5, RSA, SHA-2 và CRC32
vân tay 128 bit MD5 thường được sử dụng như một tổng kiểm tra để xác minh tính toàn vẹn của dữ liệu Tuy nhiên, do tuổi đời của nó, MD5 cũng được biết là có nhiều lỗ hổng xung đột băm, nhưng nó vẫn là một trong những thuật toán được sử dụng rộng rãi nhất trên thế giới
hàm băm mật mã SHA-2 bao gồm những thay đổi đáng kể so với người tiền nhiệm của
nó, SHA-1 Họ SHA-2 bao gồm sáu hàm băm với các thông báo (giá trị băm) là 224,
256, 384 hoặc 512 bit: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA -512/256
được sử dụng để phát hiện các thay đổi ngẫu nhiên đối với dữ liệu Mã hóa cùng một chuỗi dữ liệu bằng cách sử dụng CRC32 sẽ luôn dẫn đến cùng một đầu ra băm, do đó CRC32 đôi khi được sử dụng như một thuật toán băm để kiểm tra tính toàn vẹn của
RSA - Được đặt theo tên các nhà thiết kế của nó (Rivest-Shamir-Adleman), RSA
là một hệ thống mật mã có nguồn gốc từ cuối thế kỷ XX RSA sử dụng một phương pháp phân phối đơn giản: Người A sử dụng khóa công khai của Người B để mã hóa một tin nhắn và Người B sử dụng khóa riêng tư, vẫn là bí mật đối với người dùng, để khám phá ý nghĩa của nó Không có tiền điện tử đang hoạt động nào sử dụng khuôn khổ RSA
Ngoài ra, ta có thể liệt kê một số hàm băm khác như:
Trang 11SHA-1 - Được sử dụng phổ biến, được sử dụng để an toàn, nhưng không còn khả
năng chống va chạm
RipeMD160 - được sử dụng trong OpenPGP và một số chứng chỉ X.509
SHA-3 - Chưa được chỉ định, nhưng có thể sẽ trở nên phổ biến sau đó Chờ thông
số kỹ thuật Sẽ là một họ các chức năng
MD4, RIPEMD160 - Chưa thấy chúng cho các tệp băm, nhưng chúng vẫn tồn
tại trong một số ngữ cảnh khác MD4 bị hỏng, một số thành viên cũ của gia đình RIPEMD bị hỏng, nhưng RIPEMD160 vẫn an toàn Nơi duy nhất tôi thấy xoáy nước là KDF của TrueCrypt
TTH / TigerTreeHash - Được sử dụng trong một số bối cảnh chia sẻ tệp, vẫn an
toàn nhưng biên độ bảo mật ngày càng giảm
ED2K - Được sử dụng trong một số ngữ cảnh chia sẻ tệp, dựa trên MD4, khả
Xác thực bản tin
Xác thực bản tin là một cơ chế hay dịch vụ được dùng để xác minh tính toàn vẹn của bản tin Điều này nghĩa là đảm bảo nội dung bản tin nhận được chính xác như bản tin gửi đi (không có bất kỳ sự sửa đổi, chèn, xoá nội dung, phát lại) Trong nhiều trường hợp thì cơ chế xác thực còn yêu cầu việc xác thực người gửi Hàm băm được sử dụng trong cơ chế xác thực bản tin để cung cấp một giá trị băm, thường được gọi là bản tin rút gọn
Trang 12Bản chất của việc áp dụng hàm băm trong cơ chế xác thực như sau: Người gửi tính toán một giá trị băm từ các bít trong bản tin và truyền đi đồng thời bản tin và giá trị băm đó Người nhận cũng thực hiện việc tính giá trị băm tương tự từ các bít trong bản tin nhận được và so sánh với giá trị băm được gửi kèm Nếu như các giá trị băm được
so sánh không trùng với nhau thì có nghĩa là bản tin nhận được (hoặc các giá trị băm)
đã bị thay đổi Các hàm băm phải được truyền đi một cách an toàn Điều này nghĩa là ngay cả khi bản tin bị sửa đổi hoặc thay thế thì kẻ xấu không thể thay đổi được giá trị băm để đánh lừa người nhận Hình 1.4 minh hoạ các cách áp dụng hàm băm trong việc xác thực bản tin
i) Mã băm được nối vào bản tin, sau đó được mã hoá bởi mã hoá đối xứng Vì chỉ có A và B biết khoá bí mật nên bản tin được đảm bảo truyền từ A và không bị sửa đổi Do cả mã băm và bản tin đều được mã hoá nên tính bảo mật cũng được cung cấp trong trường hợp này
ii) Chỉ có các mã băm được mã hoá bằng mã hoá đối xứng Điều này giúp giảm gánh nặng xử lý cho các ứng dụng không yêu cầu bảo mật
iii) Giả sử bên gửi và nhận chia sẻ một giá trị bí mật S Giá trị này được nối vào bản tin M và được sử dụng để tính toán giá trị băm Sau đó, giá trị băm này được cộng với bản tin và truyền đi Tại đầu nhận, B cũng có khả năng tính toán giá trị băm vì nó cũng biết S Vì chỉ có A và B biết S, nên kẻ xấu không thể sửa đổi hoặc làm giả bản tin Trong phương pháp này, tính bảo mật không được cung cấp
iv) Phương pháp này khác phương pháp (c) ở việc tính bảo mật được thêm vào
để mã hoá toàn bộ bản tin và mã băm trước khi truyền đi
Khi tính bảo mật không cần thiết thì phương pháp (b) ưu việt hơn hai phương pháp (a) và (d) trong việc phải tính toán ít hơn Thậm chí việc tránh mã hoá như trong phương pháp (c) ngày càng nhận được nhiều sự quan tâm hơn bởi một vài nguyên do sau:
- Mã hoá bằng phần mềm tương đối chậm Nên dù lượng dữ liệu cần mã hoá trong mỗi bản tin là nhỏ nhưng mỗi hệ thống đều chứa rất nhiều bản tin cần trao đổi
- Chi phí cho việc mã hoá bằng phần cứng là không nhỏ Mặc dù, những chip giá
rẻ có khả năng chạy thuật toán DES nhưng đối với một hệ thống có rất nhiều nút mạng thì chi phí cũng tăng lên đáng kể
Trang 13Hình 1.4: Ví dụ về sử dụng hàm băm trong nhận thực bản tin
- Mã hoá bằng phần cứng phù hợp hơn trong việc mã hoá dữ liệu lớn Đối với các dữ liệu nhỏ thì phần lớn thời gian bị chiếm bởi các thủ tục khởi tạo và gọi hàm
- Các thuật toán mã hoá thường bị giới hạn bởi các bằng sáng chế Do đó, cần thêm một khoản chi phí để nhận được sự cho phép sử dụng các thuật toán đó
Xác thực bản tin sử dụng mã xác thực bản tin (MAC), hay được biết đến như hàm băm có khoá, thường được sử dụng phổ biến hơn Thông thường, MACs được sử dụng bởi hai bên cùng chia sẻ khoá bí mật để xác định thông tin trao đổi giữa chúng Hàm MAC sử dụng đầu vào là một khoá bí mật và bản tin để tạo ra một mã băm được gọi là MAC Giả sử, một kẻ tấn công muốn sửa đổi bản tin, hắn không thể thay đổi được giá trị MAC nếu không có khoá bí mật Chú ý rằng, bên nhận (xác thực) phải biết bên nhận bởi vì không có ai khác biết được khoá bí mật
Chú ý rằng, MAC là hàm kết hợp của kết quả băm và mã hoá (hình 4.3b) E(K, H(M)) là hàm của bản tin có độ dài bất kỳ và khoá bí mật K, nó tạo ra đầu ra có độ dài
cố định Trong thực tế, các thuật toán MAC thường hiệu quả hơn các thuật toán mã hoá
1.5 Yêu cầu về độ an toàn quả hàm băm
Trang 14Để hiểu rõ yêu cầu và an toàn của hàm băm, ta cần định nghĩa hai điều kiện Đối với giá trị băm h = H(x), x được gọi là nghịch ảnh của h Nghĩa là x là một khối
dữ liệu có hàm băm là h sử dụng hàm H Vì hàm H là phép ánh xạ từ nhiều phần tử thành một, nên với một giá trị h cho trước, có thể tạo ra nhiều nghịch ảnh Một xung đột xảy ra nếu x ≠ y và H(x) = H(y) Do chúng ta sử dụng các hàm băm để đảm bảo tính toàn vẹn của dữ liệu nên các xung đột là điều không mong muốn
Chúng ta sẽ phân tích xem có bao nhiêu nghịch ảnh có thể được tạo ra với một giá trị băm cho trước như là một phép đo số xung đột có thể xảy ra với một giá trị băm cho trước Giả sử rằng, độ dài của giá trị băm là n bit và hàm H có các bản tin đầu vào hay các khối dữ liệu có độ dài b bit (b > n) Khi đó, tổng số bản tin có thể là 2b và tổng số các giá trị băm là 2n Trung bình, mỗi giá trị băm tương ứng với 2b – n nghịch ảnh Trên thực tế, nếu H phân bố đều các giá trị băm thì mỗi giá trị băm sẽ có xấp xỉ 2b – n nghịch ảnh Nếu bây giờ, chúng ta xét đầu vào có độ dài bất kỳ, không phải chỉ là một độ dài cố định như trước thì số nghịch ảnh tạo ra từ mỗi giá trị băm là một giá trị lớn bất kỳ Tuy nhiên, rủi ro an ninh trong việc sử dụng hàm băm không nghiêm trọng như vốn dĩ theo phân tích này Để hiểu hơn về vấn đề bảo mật của hàm băm mã hóa, chúng ta cần định nghĩa chính xác các yêu cầu về bảo mật của chúng
1.5.1 Các yêu cầu bảo mật cho các hàm băm bảo mật
Bảng 1.1 liệt kê các yêu cầu được chấp nhận chung cho một hàm băm mã hóa
Ba yêu cầu đầu tiên được áp dụng cho các ứng dụng thực tế của hàm băm Yêu cầu thứ tư, chống nghịch ảnh, là một đặc tính một chiều, nghĩa là: một mã băm có thể dễ dàng tạo ra bởi một bản tin cho trước nhưng hầu như không có khả năng tái tạo lại bản tin thông qua một mã băm cho trước Đặc tính này vô cùng quan trọng nếu các
kỹ thuật xác thực sử dụng các giá trị bí mật Giá trị bí mật không được gửi đi nhưng nếu hàm băm không phải là hàm một chiều thì kẻ tấn công có thể dễ dàng phát hiện
ra được giá trị bí mật Nếu kẻ tấn công có thể quan sát hoặc chặn một đường truyền,
kẻ tấn công có thể thu được bản tin M và mã băm h = H(S || M) Sau đó, kẻ tấn công
có thể triển khai ngược hàm băm để lấy được S||M = H-1(MDM) Do bây giờ, kẻ tấn công có cả M và SAB||M, nên có thể dễ dàng tìm ra được SAB
Trang 15Bảng 1.1: Các yêu cầu đối với hàm băm bảo mật
Đặc tính thứ năm, chống nghịch ảnh bậc 2, đảm bảo việc không thể tìm được một bản tin thay thế với giá trị băm của bản tin cho trước điều này ngăn chặn sự giả mạo khi mã băm mã hóa được sử dụng Nếu đặc tính này không thỏa mãn, kẻ tấn công có khả năng thực hiện các hành động sau đây: Đầu tiên, quan sát hoặc chặn một bản tin cùng với mã băm mã hóa của nó; tiếp theo, tạo một mã băm không mã hóa từ bản tin; cuối cùng, tạo ra bản tin thay thế với mã băm tương tự
Hàm băm thỏa mãn năm đặc tính đầu tiên được xem như hàm băm yếu Nếu đặc tính thứ sáu, chống xung đột, thỏa mãn thì hàm băm đó được gọi là hàm băm mạnh Một hàm băm mạnh có khả năng chống lại tấn công trong dó một bên tạo ra bản tin cho một bên khác ký
1.5.2 Các tấn công đoán thử đúng sai
Đối với các thuật toán mã hoá, có hai loại tấn công nhằm vào hàm băm là: Tấn công đoán thử đúng sai và giải mã Tấn công đoán thử đúng sai không phụ thuộc vào một thuật toán cụ thể mà chỉ phụ thuộc vào độ dài bit Trong trường hợp của hàm băm, tấn công đoán thử đúng sai chỉ phụ thuộc vào độ dài của giá trị băm Ngược lại, giải mã là tấn công dựa trên các điểm yếu trong một thuật toán mã hóa cụ thể nào đó