SỰ AN TOÀN CỦA HMAC:

Một phần của tài liệu Đồ án Bảo Mật Thông Tin (Trang 26 - 31)

Tính an toàn của bất cứ hàm MAC đều dựa trên hàm băm thêm vào, phụ thuộc vào sức mạnh mã hóa của hàm băm cơ sở. the appeal của HMAC là người thiết kế cần chứng minh được mối quan hệ chính xác giữa sức mạnh của hàm băm thêm vào và sức manh của HMAC.

Tính an toàn của một hàm MAC nhìn chung được diễn đạt dựa vào khả năng giả mạo thành công với thời gian sử dụng của người giả mạo và số lượng cặp thông điệp-MAC được tạo ra với cùng một khóa. Về bản chất, nó được chứng minh trong

[BELL96a] rằng với mức độ sự nổ lực cho trước ( về thời gian, các cặp thông điệp- MAC) trong thông điệp được tạo rabởi người dùng chính đáng và cả người tấn công, thì khả năng có thể tấn công thành công tương đương với một trong hai cách tấn công vào hàm băm sau:

1. Người tấn công có khả năng tính toán được một kết quả của hàm nén ngay cả với một giá trị đầu vào IV không bết, hoặc ngẫu nhiên hoặc bí mật.

2. Người tấn công tìm đươc những sự đụng độ trong hàm băm ngay cả khi không giá trị đầu vào là bí mật và ngẫu nhiên.

Trong lần tấn công đầu, chúng ta có thể xem hàm nén tương đương với hàm băm được sử dụng cho thông điệp một khối đơn n bit. Trong lần tấn công này, giá trị đầu vào của hàm băm được thế bằng một giá trị n bit ngẫu nhiên và bí mật. Một lần tấn công vào hàm băm này yêu cầu tấn công Brute-force vào khóa ( which is a level of effort on the order of 2n) hoặc tấn công Birthday, được giới thiệu ở phần tấn công thứ hai.

Trong lần tấn công thứ hai, kẻ tấn công cần tìm hai thông điệp M và M’ có cùng H(M)=H(M’). Được gọi là tấn công Birthday được trình bày trong chương 11. Chúng ta đã biết độ phức tạp của nó là 2n/2 cho giá trị băm chiều dài n (requires a level of effort of 2n/2for a hash length of n). Vì vậy, độ an toàn của MD5 bị nghi ngờ, bởi vì độ phức tạp 264 có thể giải mã với công nghệ ngày nay. Điều này có nghĩa rằng một hàm băm 128 bit như MD5 không phù hợp với HMAC?. Câu trả lời là phù hợp, vì luận cứ sau. Để tấn công MD5, người tấn công có thể chọn một bộ thông điệp bất kì và cố gắng tìm ra sự đụng độ. Bởi vì khi biết thuật toán băm và giá trị đầu vào thì người tấn công có thể sinh ra mã băm cho mỗi thông điệp mà người tấn công tạo ra. Tuy nhiên khi tấn công HMAC, người tấn công không thể tạo ra cặp thông điệp/mã off line vì không biết khóa K. Vì vậy, người tấn công phải quan sát một dãy thông điệp được sinh ra bởi HMAC sử dụng cùng một khóa và thực hiện việc tấn công trên thông điệp đã biết. Với một mã băm 128 bit, điều này cần phải quan sát 264 khối ( 272

bit ) được sinh ra với cùng một khóa. Với một đường truyền 1Gbps, một người cần phải quan sát một luồng thông điệp liên tục với cùng một khóa trong khoảng 150.000 năm để thành công. Vì vậy, có thể sử dụng MD5 thay cho SHA-1 như là hàm băm được dùng cho HMAC.

12.4. CMAC

Thuật toán xác định dữ liệu được định nghĩa trong FIPS PUB 113, cũng được biết như CBC-MAC ( Cipher block chaining message authentication code), được mô tả trong chương 11. Mã hóa dựa trên MAC này đã từng được phát triển rộng rãi trong chính phủ và công nghiệp. [BELL00] đã chứng tỏ rằng MAC này thì an toàn trên một bộ những tiêu chuẩn có lí, với những hạn chế sau. Chỉ những thông điệp có chiều dài cố định mn bit mới được xử lí, trong đó n là kích thước khối mã hóa và m là một số nguyên dương cố định. Lấy một ví dụ đơn giản, chú ý rằng CBC MAC của một thông điệp một khối X, ta nói rằng T=MAC(K,X), kẻ tấn công ngay lập tức biết được CBC MAC cho thông điệp hai khối X||(X XOR T) bởi vì lại là T lần nữa. Black and Rogaway [BLAC00] đã chỉ ra rằng có thể khắc phục được nhược điểm này bằng cách sử dụng 3 khóa: một khóa với chiều dài k được sử dụng tại mỗi bước của khối mã hóa và hai khóa chiều dài n, trong đó k là chiều dài khoá và n là chiều dài khối mã hóa. Cấu trúc được đề nghị này được cải tiến bởi Iwata và Kurosawa nên hai khóa n bit có thể được lấy từ khóa mã hóa, hơn là việc đang được cung cấp rời nhau [IWAT03]. Sự cải tiến này được tiếp tục phát triển bởi NIST cipher-based message authentication code (CMAC) mode of operation, sử dụng với AES và bộ ba DES. Nó là phần lý thuyết trong xuất bản NIST 800-38B.

Đầu tiên hãy xem xét sự hoạt động của CMAC khi thông điệp là một bội số nguyên n của khối mã hóa b bit. Với AES b là 128 bit và triple DES b là 64. Thông điệp được chia thành n khối M1, M2,….,Mn. Thuất toán sử dụng một khóa mã hóa K bit và một khóa n bit cố định K1. Với AES, chiều dài khóa K có thể 128, 192, 256 bit. Triple DES khóa là 112, hoặc 168 bit. CMAC được tính như sau:

Trong đó:

T: mã xác nhận thông điệp. Tlen: chiều dài bit của T.

Nếu thông điệp không phải là một bội số nguyên của khối mã hóa thì khối mã hóa cuối cùng sẽ được thêm vào bên phải ( bit trọng số nhỏ nhất) 1 và các số 0 sao cho chiều dài khối cũng bằng b. CMAC hoạt động như với thông điệp là bội số nguyên của b, nhưng khóa K1 được thay bằng khóa K2. Khóa K1 và K2 được tính như sau:

12.5. RECOMMANDED READING AND WEBSITES:

[GILB03] xem xét sự an toàn của SHA-256 đến SHA-512. Tổng quát về HMAC thì có thể được tìm thấy trong [BELL96a] và [BELL96b].

Một phần của tài liệu Đồ án Bảo Mật Thông Tin (Trang 26 - 31)

Tải bản đầy đủ (DOCX)

(32 trang)
w