[Documents] [txt | pdf] [Tracker] [WG] [Email] [Trứng chí] Các phiên bản: 00 RFC 2104 Mạng Nhóm công tác H. Krawczyk Internet Draft M. Bellare R. Canetti Hết hạn tháng chín năm 1996 March, 1996 HMAC-MD5: có khóa-MD5 cho Message Authentication
Tình trạng của Memo này Phân phối bản ghi nhớ này là không giới hạn. Tài liệu này là một Internet-Dự thảo. Internet nháp đang làm việc văn bản của Internet Engineering Task Force (IETF), khu vực của nó, và các nhóm công tác của mình. Lưu ý rằng các nhóm khác cũng có thể phân phối các tài liệu làm việc như Internet nháp. Drafts Internet đang dự thảo các văn bản có giá trị tối đa là sáu tháng, và có thể được cập nhật, thay thế, hoặc lỗi thời bởi các tài liệu khác bất cứ lúc nào. Nó không phải là thích hợp để sử dụng Internet nháp như tài liệu tham khảo, hoặc trích dẫn họ khác hơn là một `` dự thảo làm việc '' hay `` việc trong tiến trình. '' Để tìm hiểu tình trạng hiện tại của bất kỳ Internet Draft, xin vui lòng kiểm tra ` `1id-abstracts.txt '' danh sách của cửa chứa trong internet-thảo bóng Thư mục trên: ftp.is.co.za (châu Phi) nic.nordu.net (Châu Âu) ds.internic.net (Bờ Đông Hoa Kỳ) ftp.isi .edu (US West Coast) munnari.oz.au (Pacific Rim) Tóm tắt tài liệu này mô tả một cơ chế có khóa-MD5 (gọi là HMAC-MD5) cho sử dụng như là một mã xác thực thông điệp (hoặc, giá trị kiểm tra tính toàn vẹn). Nó là chủ yếu dành để xác minh tính toàn vẹn của thông tin truyền trên mạng mở (ví dụ, Internet) giữa các bên có chung một khóa bí mật chung. Cơ chế đề xuất kết hợp (key-less) hàm băm MD5 [RFC-1321] với một chia sẻ khóa bí mật. Các mô tả của HMAC-MD5 trong tài liệu này là độc lập với việc sử dụng nó trong bất kỳ giao thức cụ thể. Một tương tự cơ chế có thể được sử dụng kết hợp với băm lặp khác chức năng, ví dụ như, SHA. Krawczyk, Bellare & Canetti Hết hạn tháng 9 năm 1996 [Trang i] INTERNET-DỰ THẢO HMAC-MD5 Tháng Ba 1996 1. Giới thiệu Rivest giới thiệu MD5 [RFC-1321] như một hàm băm mật mã. Ban đầu nó được thiết kế và dự định như là một vụ va chạm, chịu chức năng theo yêu cầu cho các băm của thông tin trước khi áp dụng một chức năng chữ ký (ví dụ, RSA). Tuy nhiên, do phải thực hiện tương đối tốt của mình trong việc thực hiện các phần mềm và tính sẵn có miễn phí của nó cùng một chức năng đã được điều chỉnh để cung cấp các chức năng khác nhau hơn so với cái mà MD5 đã được ban đầu được thiết kế. Đặc biệt, MD5 (cũng như mật mã khác hàm băm) đã được đề xuất để cung cấp xác thực thông điệp bằng cách kết hợp nó với một khóa bí mật (xem [Tsu]). Chỉ gần đây một phân tích chặt chẽ của an ninh của các khóa chế độ MD5 đã được bắt đầu [ BCK1, BCK2, KR, PV1, PV2]. Đặc biệt, Bellare, Canetti, và Krawczyk [BCK2] mô tả một khóa-băm cơ chế gọi là HMAC mà chúng tôi áp dụng ở đây để sử dụng với MD5. (Một cơ chế tương tự có thể được sử dụng kết hợp với các chức năng băm lặp, ví dụ như, SHA [SHA] .) Các mô tả về biến đổi này trong tài liệu này là độc lập với việc sử dụng nó trong bất kỳ giao thức cụ thể. Nó được thiết kế để phục vụ như một cơ chế chung cho nhiều giao thức (đặc biệt là, các giao thức IETF) có yêu cầu xác minh tính toàn vẹn dựa trên một khóa bí mật được chia sẻ (ví dụ, IP Authentication Header [RFC-1826]). Các cơ chế đề xuất sau cùng nguyên tắc đó hướng dẫn một số các đề xuất-MD5 được khóa trước đó, đó là: * nó được dựa trên MD5 * không thay đổi mã MD5 cần * có sự xuống cấp của MD5 tốc độ * yêu cầu quan trọng đơn giản * replaceability của MD5 bởi hàm băm mật mã khác Tuy nhiên, nó cải thiện về các đề xuất trước đó liên quan đến an ninh của nó phân tích. Hiện tại là việc xây dựng đầu tiên (và duy nhất chúng tôi nhận thức được) có thể được hoàn toàn được phân tích dựa trên tương đối yếu giả định trên hàm băm (MD5). Nó chỉ đòi hỏi MD5 để được va chạm kháng trong một cảm giác yếu, và chức năng nén của nó là không thể đoán trước một cách yếu ớt. Những yêu cầu này yếu hơn so với những người khác cần thiết cho việc phổ biến các ứng dụng của MD5, ví dụ như hàm băm cho chữ ký kỹ thuật số và là "randomizers" (cho thế hệ giả ngẫu nhiên, nguồn gốc chính, vv). Đặc biệt , chúng tôi chỉ yêu cầu va chạm rất khó để tìm thấy khi các "vector ban đầu" của các chức năng là ngẫu nhiên và bí mật, và đầu ra của hàm nén là không thể đoán trước khi áp dụng cho chuỗi một phần không rõ. Các kết quả phân tích sẽ trở lại này xây dựng đặc biệt được cung cấp trong [BCK2]. Lưu ý: Các cơ chế trình bày tiếp theo khác với một trình bày trong dự thảo-Krawczyk-keyed-md5-txt.01 trong cách đệm được xác định (xem phần 2). Krawczyk, Bellare & Canetti Hết hạn tháng 9 năm 1996 [Trang 1] INTERNET-DỰ THẢO HMAC-MD5 tháng 3 năm 1996 2. Tính toán Định nghĩa và tham khảo thực hiện MD5 xuất hiện trong [RFC-1321]. Hãy để 'text' biểu thị các dữ liệu mà HMAC-MD5 là được áp dụng và K là chìa khóa bí mật xác thực thông điệp được chia sẻ bởi các bên. Chìa khóa K có thể được của bất kỳ chiều dài lên đến độ dài khối của hàm băm, cụ thể là, 64 byte cho MD5 (tuy nhiên, 16 byte là ngắn nhất cho các phím - xem phần 3). Các ứng dụng sử dụng dài hơn 64 byte phím đầu tiên sẽ băm phím sử dụng MD5 và sau đó sử dụng các chuỗi 16 byte kết quả như là chìa khóa thực tế để HMAC-MD5. Chúng tôi xác định hai cố định và dây khác nhau ipad và opad như sau (các 'i' và 'o' là trí nhớ cho các bên trong và bên ngoài): ipad = byte 0x36 lặp đi lặp lại 64 lần opad = byte 0x5C lặp đi lặp lại 64 lần. Để tính toán HMAC-MD5 trên các dữ liệu 'text', chúng tôi thực hiện MD5 (K XOR opad, MD5 (K XOR ipad, văn bản)) Cụ thể , (1) nối thêm số không vào cuối của K để tạo ra một chuỗi 64 byte (ví dụ, nếu K là độ dài 16 byte nó sẽ được nối với 48 byte 0x00) (2) XOR (bitwise độc quyền-OR) các byte 64 chuỗi tính ở bước (1) với ipad (3) nối thêm các luồng dữ liệu 'text' vào chuỗi 64 byte kết quả từ bước (2) (4) áp dụng MD5 cho các dòng được tạo ra ở bước (3) (5) XOR (bitwise độc quyền-OR) chuỗi 64 byte tính toán trong bước (1) với opad (6) nối thêm các kết quả MD5 từ bước (4) với chuỗi 64 byte kết quả từ bước (5) (7) áp dụng MD5 cho các dòng được tạo ra trong bước (6) và đầu ra kết quả Đối với mục đích minh họa, mẫu mã được cung cấp như một phụ lục. 3. Phím Chìa khóa cho HMAC-MD5 có thể được của bất kỳ chiều dài (phím dài hơn 64 byte đầu tiên được sử dụng băm MD5). Tuy nhiên, ít hơn 16 byte được mạnh mẽ khuyến khích vì nó sẽ làm giảm cường độ bảo mật của các chức năng. Phím dài hơn 16 byte được chấp nhận nhưng chiều dài tăng thêm này sẽ không làm tăng đáng kể sức mạnh chức năng. (Một khóa còn có thể được khuyến khích nếu tính ngẫu nhiên của các phím được xem là yếu kém.) Lưu ý: khi sử dụng hàm băm mật mã khác chiều dài của khóa nên được lựa chọn ít nhất là chiều dài của đầu ra băm (ví dụ, 160 bit trong trường hợp của SHA). Krawczyk, Bellare & Canetti Hết hạn tháng 9 năm 1996 [Trang 2] INTERNET-DỰ THẢO HMAC-MD5 Tháng ba 1996 phím cần phải được lựa chọn một cách ngẫu nhiên, hoặc bằng cách sử dụng một mã hóa mạnh phát điện giả ngẫu nhiên hạt giống với một hạt giống ngẫu nhiên. Chúng tôi đề nghị rằng chìa khóa được thay đổi định kỳ và thường xuyên càng tốt. (Tấn công hiện tại không chỉ ra một đề nghị cụ thể tần số thay đổi quan trọng như các cuộc tấn công được thực tế không khả thi. Tuy nhiên, định kỳ khát chính là một thực hành bảo mật cơ bản giúp chống lại những điểm yếu tiềm năng của các chức năng và các phím, và hạn chế những thiệt hại của một khoá tiếp xúc. ) 4. Lưu ý thực hiện thực hiện của HMAC-MD5 đòi hỏi việc thực hiện các MD5 (xem [RFC-1321]) và tính toán được mô tả trong phần 2. Chú ý rằng tính toán này không đòi hỏi bất kỳ sự thay đổi trong định nghĩa hoặc mã MD5. Tuy nhiên, nếu muốn, một hiệu suất cải tiến có thể đạt được bởi một ứng đơn giản của MD5 mã như trình bày tiếp theo. (Chọn hoặc không thực hiện HMAC-MD5 trong cách này là một quyết định của địa phương thực hiện và không có hiệu lực trên liên khả năng hoạt động.) Ý tưởng là các kết quả trung gian của MD5 trên khối 64-byte (K XOR ipad) và (K XOR opad) có thể được precomputed chỉ một lần tại thời điểm phát sinh của khóa K, hoặc trước khi sử dụng đầu tiên của nó. Những kết quả trung gian (gọi là "hoàn cảnh", và được lưu trữ theo cấu trúc MD5 của MD5_CTX [RFC-1321]) sau đó được sử dụng để khởi tạo MD5 hoạt mỗi khi một thông báo cần phải được chứng thực. (Điều này liên quan đến việc thiết lập biến MD5_CTX để các giá trị được lưu trữ và áp dụng MD5Update vào dữ liệu.) Phương pháp này giúp tiết kiệm, cho mỗi tin nhắn xác thực, các ứng dụng của hàm nén của MD5 (MD5Update) trên hai khối 64-byte; một khoản tiết kiệm mà có thể là đáng kể khi thực hiện chứng suối ngắn của dữ liệu. Chúng tôi nhấn mạnh rằng các ngữ cảnh được lưu trữ cần phải được điều trị và bảo vệ giống như là chìa khóa bí mật. 5. An ninh An ninh của cơ chế xác thực thông điệp trình bày ở đây phụ thuộc vào tính chất mật mã MD5: các kháng để phát hiện va chạm (giới hạn trong trường hợp giá trị ban đầu là bí mật và ngẫu nhiên, và nơi mà các đầu ra của chức năng này là không rõ ràng có sẵn cho những kẻ tấn công ), và xác thực thông điệp tài sản của hàm nén MD5 khi áp dụng cho đơn khối (các khối là một phần không biết đến một kẻ tấn công là họ chứa kết quả của Quốc Tế
đang được dịch, vui lòng đợi..
