MAC (Message Authentication Code) là phương pháp bảo vệ chống sửa đổi bất hợp pháp nội dung bản tin. MAC được thực hiện bằng các hàm băm một chiều kết hợp với khĩa bí mật.
Hình 4.12: Xác thực tính tồn vẹn dựa trên mã xác thực bản tin MAC
Lý do xây dựng mã xác thực bản tin MAC là vì bản thânh MD khơng cung cấp bất kỳ bảo vệ nào chống lại việc thay đổi bất hợp pháp nội dung của bản tin. Khi một người nào đĩ thay đổi nội dung của bản tin trên đường truyền dẫn thì anh ta cũng cĩ thể tính lại giá trị hash MD5 hay SHA dựa trên nội dung bản tin đã thay đổi đĩ. Như
vậy, tại phía thu, giá trị hash của bản tin nhận được vẫn hồn tồn hợp lệ.
Để giải quyết vấn đề này, phải sử dụng một khĩa bí mật trong quá trình tính vân tay của bản tin thì mới đảm bảo chống lại những thay đổi bất hợp pháp. Phía thu (nơi cĩ khĩa bí mật) tạo ra một giản lược thơng điệp hợp lên (valid MD), gọi là mã xác thực bản tin MAC. Phía thu sử dụng khĩa bí mật để xác định tính hợp lệ của bản tin bằng cách tính lại giá trị MAC và so sánh với giá trị MAC mà phía phát truyền đi. Đến
đây, vấn đề là xây dựng các hàm băm một chiều sử dụng khĩa dựa trên các hàm băm
đã trình bày ở trên.
Phía phát Phía thu
1 0 1 0 1 1 1 0 0 1 0 1 0 0 1 1 0 1 1 1 0 1 0 0 0 1 0 1 0 1 Keyed Hash Funtion MAC Key 1 0 1 0 1 1 1 0 0 1 0 1 0 0 1 1 0 1 1 1 0 1 0 0 0 1 0 1 0 1 Keyed Hash Funtion MAC Key MAC Kênh truyền So sánh
RFC 2104 đưa ra một phương án để xây dựng các hàm băm cĩ sử dụng khĩa trên cơ sở các hàm băm như MD5, SHA.
Hình 4.13: Quá trình tạo mã xác thực bản tin MAC
Phía trước bản tin cần xác thực, thêm vào 512 bit khĩa bên trong (inner key). Khĩa này được hình thành bằng cách thêm các bit đêm (padding) vào khĩa bí mật cho
đủ 512 bit, sau đĩ XOR khối này với các giá trị 0x36. Để đảm bảo tính an tồn cao nhất thì độ dài của khĩa bí mật phải lớn hơn hoặc bằng độ dài của giá trị hash (128 bit
đối với MD5 và 160 bit đối với SHA).
Bản tin bây giờ được đưa tới hàm băm. Vì giá trị hash của khối dữ liệu trước luơn đĩng vai trị là vectơ khởi tạo cho khối sau, nên hàm băm thực hiện trên khối inner key sẽ tạo ra một vectơ khởi tạo để thực hiện hash cho bản tin gốc ban đầu, giá trị của vectơ khởi tạo này chỉ phụ thộc vào khĩa bí mật mà thơi. Như vây, khi khĩa bí mật giữ nguyên thì tất cả các bản tin đều cĩ thểđược ký sử dụng cùng một vectơ khởi tạo bí mật.
Tương tự đối với khĩa ngồi (outer key). Khĩa ngồi được hình thành bằng cách XOR khĩa bí mật (đã chèn các bit đệm) với các giá trị 0x5C. Khi đĩ, hàm băm thực hiện trên khối outer key sẽ tạo ra một vectơ khởi tạo để thực hiện hash cho chính giá trị hash tính ở vịng thứ nhất.
Thơng thường giá trị MAC cuối cùng được tạo ra bằng cách cắt ngán giá trị
hash thu được bởi MD5 (128 bit) và SHA (160 bit) xuống cịn 96 bit. Mặc dù việc cắt ngắn này làm giảm đáng kể số các tổ hợp cần thửđối với một tấn cơng kiểu brute fore,
512 bit 0x36…0x36
Key Pad
0x5C…0x5C
Inner Key Document
Hàm băm MD5/SHA
Outer Key Hash
Hàm băm MD5/SHA
Hash MAC XOR
nhưng nĩ cĩ tác dụng che dấu trạng thái bên trong của thuật tốn băm và sẽ khĩ khăn hơn rất nhiều cho kẻ tấn cơng để cĩ thểđi từ đầu ra của vịng băm thứ hai tới kết quả
trung gian của vịng băm thứ nhất.
Phưong pháp xác thực tính tồn vẹn sử dụng MAC cĩ ưu điểm là thực hiện nhanh và hiệu quả, vì việc tạo MAC dựa trên các hàm băm tương đối đơn giản, do đĩ thường được sử dụng để xác thực các cụm dữ liệu ở tốc độ cao. Nhược điểm là phía thu phải biết được khĩa bí mật thì mới xác định được tính tồn vẹn của bản tin, dẫn
đến vấn đề phân phối khĩa một cách an tồn.