Nhận thực bằng bản tin nhận thực là một phương pháp đảm bảo toàn vẹn số liệu và nhận thực nguồn gốc số liệu. Một sơ đồ phổ biến của phương pháp này là sử dụng mã nhận thực bản tin (MAC: Message Authentication Code) được mô tả hình 1.3
Hình 1.6. Phương pháp nhận thực sử dụng khóa MAC
Trên hình 1.6. giải thuật MAC sử dụng khóa bí mật chia sẻ (giữa A và B) là đầu vào để tạo ra một mã nhận thực bản tin (MAC). MAC được gắn vào bản tin gốc, sau đó được phát đến nơi nhận. Phía thu sử dụng cùng gải thuật MAC tương tự như phía phát để tính toán MAC dựa trên bản tin gốc thu được. Nếu bản tin gốc bị thay đổi trong quá trình truyền dẫn (không còn toàn vẹn), thì MAC được tạo ra tại phía thu khác với MAC thu được từ phía phát và điều này cho thấy rằng số liệu gốc đã không còn nguyên vẹn nữa.
Một phương pháp phổ biến nhất để tạo ra MAC là sử dụng MD5 như đã xét ở trên. MD5 nhận bản tin đầu vào với độ dài bất kỳ và tạo ra đầu ra 128 bit MD. Phía phát sẽ gửi bản tin gốc cùng vớiMD đến phía thu, phía thu tính
MD từ bản tin gốc nhận được và so sánh nó với MD thu để nhận định bản tin còn toàn vẹn hay không.
Giải thuật SHA-1 cũng có thể được sử dụng để tính toán MD giống như MD5, tuy nhiên trong trường hợp này MD chỉ có 120 bit.
Bằng cách sử dụng hàm làm rối được gọi là hàm Hash một máy tính có thể nhận thực một người sử dụng mã không cần lưu giữ mật khẩu trong văn bản thô. Sau khi tạo ra một tài khoản (account), người sử dụng gõ mật khẩu, máy tính sử dụng hàm Hash một chiều với đầu vào là mật khẩu để tạo ra giái trị bị làm rối (gọi là giá trị Hash) và lưu giữ giá trị này. Lần sau khi người sử dụng đăng nhập máy tính, máy tính sẽ sử dụng hàm Hash với đầu vào là mật khẩu mà người sử dụng gõ vào để tính ra giá trị Hash và so sánh giá trị này với giá trị được lưu. Nếu kết quả giống nhau, thì người sử dụng được nhận thực. Do mật khẩu không bị lưu cùng với văn bản thô trong máy tính, nên nó không bị lộ.
Cả MD5 và SHA-1 đều là các hàm Hash không khóa. Nghĩa là không có khóa bí mật giữa các bên tham gia thông tin. Các giải thuật này không sử dụng khóa bí mật làm đầu vào hàm Hash. Giải thuật HMAC (Hash Message Authentication Code: mã nhận thực bản tin làm rối) sử dụng các hàm Hash kết hợp với một khóa chia sẻ bí mật để nhận thực bản tin. Các mục đích chính của HMAC như sau:
•Sử dụng các hàm Hash hiện có mà không cần thay đổi chúng. Chẳng
hạn có thể sử dụng các chương trình phầm mềm của các hàm Hash đang được sử dụng rộng rãi và miễn phí.
•Duy trì hoạt động nguyên gốc của hàm Hash mà không làm giảm đáng
kể chất lượng.
•Sử dụng và xử lý khóa một cách đơn giản.
•Đã phân tích kỹ sức mạnh mật mã của cơ chế nhận thực dựa trên hàm
•Dễ dáng thay thế hàm Hash đang sử dụng bằng hàm Hash nhanh hơn hoặc an ninh hơn khi cần.