it-swarm-vi.com

Sự khác biệt giữa MAC và băm

Sự khác biệt giữa hai thuật toán là gì?
[.___.] Một điểm khác biệt mà tôi biết, đó là MAC bị khóa và hàm băm thì không.

32
user1157

Để đơn giản hóa: thông thường MAC là giá trị Hash được mã hóa bằng khóa bí mật. Ví dụ, kẻ tấn công có thể giả mạo tin nhắn và tính toán một hàm băm mới, nhưng anh ta không thể làm như vậy nếu hệ thống yêu cầu băm được mã hóa bằng một khóa bí mật.

7
Aleksandr Reznik

A hàm băm mật mã là hàm băm xác định hoàn toàn công khai, mọi người đều có thể tính toán trên các đầu vào tùy ý. Nó nhận đầu vào là một chuỗi các bit (bất kỳ chuỗi bit nào; một số hàm băm được giới hạn chính thức cho các đầu vào của, giả sử, ít hơn 264 các bit, còn gọi là "2 triệu terabyte") và xuất các giá trị trong một không gian khá nhỏ, thường là một chuỗi các bit có kích thước cố định (ví dụ: luôn luôn là 160 bit với hàm băm tiêu chuẩn SHA-1 ). Các hàm băm mật mã tốt tôn trọng một số điều kiện, chính thức, chúng trộn lẫn dữ liệu đầu vào kỹ lưỡng đến mức chúng ta không thể tìm ra nó sau đó.

A mã xác thực tin nhắn là thuật toán lấy đầu vào là tin nhắn và khóa bí mật và tạo ra đầu ra có kích thước cố định có thể được xác minh sau để phù hợp với thông điệp; việc xác minh cũng yêu cầu khóa bí mật tương tự. Trái ngược với các hàm băm nơi mọi thứ được biết đến và những kẻ tấn công đang chiến đấu chống lại toán học, MAC có ý nghĩa trong các mô hình nơi có các thực thể có kiến ​​thức về một bí mật. Những gì chúng ta mong đợi từ một MAC tốt là không thể tha thứ: không thể tính toán một thông điệp cặp + giá trị MAC xác minh thành công với một khóa đã cho [~ # ~] k [~ # ~] mà không có biết [~ # ~] k [~ # ~] chính xác và toàn bộ.

Do đó, các hàm băm và MAC là loại thuật toán riêng biệt với các thuộc tính riêng biệt và được sử dụng trong các tình huống thực sự khác biệt.

Một số thuật toán MAC (nhưng chắc chắn không phải tất cả trong số chúng) có thể được coi là "hàm băm có khóa" nhưng đây là chế độ xem hạn chế. HMAC là một cấu trúc MAC nổi tiếng, bản thân nó xây dựng trên hàm băm cơ bản một cách thông minh. Thật vậy, các thuộc tính và mô hình bảo mật cho các hàm băm và MAC đủ khác biệt với nhau khi tát một hàm băm và một khóa với nhau không nhất thiết mang lại một MAC an toàn, ngay cả khi hàm băm is an toàn (xem tấn công mở rộng chiều dài minh họa điểm đó).

Ở một mức độ nào đó, chúng ta có thể nói rằng thuật toán MAC có thể hoạt động an toàn mà không cần IV phải thể hiện một số thuộc tính giống như hàm băm (đó là lý do tôi thích HMAC: không có IV, sẽ khó hơn nhiều khi thực hiện sai khi triển khai nó). Tuy nhiên, Devil nằm trong chi tiết.

34
Thomas Pornin

Họ là hai nguyên thủy hoàn toàn khác nhau. Một MAC được sử dụng để xác thực tin nhắn và là một nguyên thủy có khóa đối xứng. Hàm băm có thể được sử dụng cho nhiều mục đích và không có đầu vào khóa đặc biệt. MAC là từ viết tắt của "mã xác thực tin nhắn".

Đừng nhầm lẫn bởi thực tế là một số thuật toán MAC (ví dụ: SHA1-HMAC) hoạt động bằng cách sử dụng hàm băm làm chương trình con. Chúng là những con thú rất khác nhau.

  • Một số ví dụ về thuật toán MAC: CMAC, SHA1-HMAC, MD5-HMAC, UMAC, Poly1305-AES.
  • Một số ví dụ về các hàm băm mật mã: SHA256, SHA1, MD5.
13
D.W.

Tìm thấy điều này để trả lời điểm từ một diễn đàn khác.

Các loại nguyên thủy mã hóa này có thể được phân biệt bằng các mục tiêu bảo mật mà chúng thực hiện (trong giao thức đơn giản là "nối thêm tin nhắn"):

Tính toàn vẹn: Người nhận có thể tự tin rằng tin nhắn không bị vô tình sửa đổi không?

Xác thực: Người nhận có thể tự tin rằng tin nhắn bắt nguồn từ người gửi không?

Không thoái thác: Nếu người nhận chuyển tin nhắn và bằng chứng cho bên thứ ba, bên thứ ba có thể tin tưởng rằng tin nhắn có nguồn gốc từ người gửi không? (Xin lưu ý rằng tôi đang nói về việc không thoái thác theo nghĩa mật mã, không phải theo nghĩa pháp lý.) Cũng quan trọng là câu hỏi này:

Khóa: Người nguyên thủy có yêu cầu khóa bí mật chung hoặc khóa riêng tư không? Tôi nghĩ rằng câu trả lời ngắn được giải thích tốt nhất với một bảng:

Cryptographic primitive | Hash |    MAC    | Digital
Security Goal           |      |           | signature
------------------------+------+-----------+-------------
Integrity               |  Yes |    Yes    |   Yes
Authentication          |  No  |    Yes    |   Yes
Non-repudiation         |  No  |    No     |   Yes
------------------------+------+-----------+-------------
Kind of keys            | none | symmetric | asymmetric
                        |      |    keys   |    keys

Xin nhớ rằng xác thực mà không tin tưởng vào các khóa được sử dụng là vô ích. Đối với chữ ký điện tử, người nhận phải tự tin rằng khóa xác minh thực sự thuộc về người gửi. Đối với MAC, người nhận phải tự tin rằng khóa đối xứng được chia sẻ chỉ được chia sẻ với người gửi.

Bấm vào đây để biết thêm

2
kayle