Sự hiểu biết của tôi về thông báo thông báo là mã băm được mã hóa của một số dữ liệu được gửi cùng với dữ liệu được mã hóa để bạn có thể xác minh rằng dữ liệu chưa bị giả mạo. Sự khác nhau giữa mã xác thực thông điệp này và MAC (hash) (HMAC) là gì?Sự khác nhau giữa Message Digest, Mã xác thực thư và HMAC là gì?
48
A
Trả lời
78
- Thuật toán thông báo tiêu hóa nhận một đầu vào đơn - một thông báo - và tạo "thông báo" (còn gọi là băm) cho phép bạn xác minh tính toàn vẹn của thông báo: Mọi thay đổi đối với thông báo sẽ (lý tưởng) dẫn đến một băm khác được tạo ra. Kẻ tấn công có thể thay thế tin nhắn và thông báo là hoàn toàn có khả năng thay thế tin nhắn và tiêu hóa bằng một cặp hợp lệ mới.
- Thuật toán MAC có hai đầu vào - một thông báo và khóa bí mật - và tạo MAC cho phép bạn xác minh tính toàn vẹn và tính xác thực của tin nhắn: Mọi thay đổi đối với tin nhắn hoặc khóa bí mật sẽ (lý tưởng) dẫn đến một MAC khác nhau được tạo ra. Không ai không có quyền truy cập vào bí mật sẽ có thể tạo ra một phép tính MAC xác minh; nói cách khác một MAC có thể được sử dụng để kiểm tra xem MAC có được tạo bởi một bên có quyền truy cập vào khóa bí mật hay không.
- Thuật toán HMAC đơn giản là một loại thuật toán MAC cụ thể sử dụng thuật toán băm bên trong (thay vì, ví dụ, một thuật toán mã hóa) để tạo MAC.
14
- A Message Digest chỉ đơn giản là băm của thư. Đó là đầu ra của hàm băm mật mã được áp dụng cho dữ liệu đầu vào, được gọi là thông báo .
- A Mã xác thực thư (MAC) là một phần thông tin chứng minh tính toàn vẹn của thư và không thể bị giả mạo dễ dàng.
- A HMAC là loại MAC cụ thể được xác định bởi RFC 2104.
Wikipedia cũng có bài viết tốt bao gồm tất cả các điều khoản: xem Message Digest, Message Authentication Code, và HMAC.
+1
Đối với MAC, tính toàn vẹn và tính xác thực đều có thể được chứng minh vì bên gửi và bên nhận có chung khóa bí mật. – Nate
Các vấn đề liên quan
- 1. sự khác nhau giữa plugin và thư viện là gì?
- 2. Sự khác biệt giữa các Loại Message XMPP khác nhau?
- 3. Sự khác nhau giữa -rpath và -L là gì?
- 4. Sự khác nhau giữa PECL và PEAR là gì?
- 5. Sự khác nhau giữa init() và window.init() là gì?
- 6. Sự khác nhau giữa `ImmutableSortedSet` và fsharp` Set` là gì?
- 7. Sự khác nhau giữa "nonce" và "GUID" là gì?
- 8. Sự khác nhau giữa LinFu.DynamicProxy và Castle.DynamicProxy là gì?
- 9. Sự khác nhau giữa xác thực LDAP và Active Directory là gì?
- 10. Sự khác nhau giữa ImageMagick và GraphicsMagick là gì?
- 11. Sự khác nhau giữa hai mã javascript là gì?
- 12. Sự khác nhau giữa navigationController.navigationBarHidden và navigationController.navigationBar.hidden là gì?
- 13. Sự khác nhau giữa LinkedBlockingQueue và ConcurrentLinkedQueue là gì?
- 14. Sự khác nhau giữa hai mẫu mã này là gì?
- 15. Sự khác nhau giữa _LARGEFILE_SOURCE và _FILE_OFFSET_BITS = 64 là gì?
- 16. Sự khác nhau giữa FontMetrics.stringWidth() và FontMetrics.getStringBounds() là gì?
- 17. Sự khác nhau giữa IPV6_ADD_MEMBERSHIP và IPV6_JOIN_GROUP là gì?
- 18. Sự khác nhau giữa HTTP_CLIENT_IP và HTTP_X_FORWARDED_FOR là gì?
- 19. Sự khác nhau giữa pInvoke và COM Interop là gì?
- 20. Sự khác nhau giữa GDI và GDI + là gì?
- 21. Sự khác nhau giữa GEM_HOME và GEM_PATH là gì?
- 22. Sự khác nhau giữa XHTML và HTML là gì?
- 23. Sự khác nhau giữa app.doScript và $ .evalFile là gì?
- 24. Sự khác nhau giữa java.lang.Math và java.lang.StrictMath là gì?
- 25. Sự khác nhau giữa Href và Url.Content là gì?
- 26. Sự khác nhau giữa fancyLocalization và preferredLanguage là gì?
- 27. Sự khác nhau giữa RSpec và Cucumber là gì?
- 28. Sự khác nhau giữa GenericServlet, HttpServlet và Servlet là gì?
- 29. Sự khác nhau giữa: trước và :: trước là gì?
- 30. Sự khác nhau giữa IDbSet.Add và DbEntityEntry.State = EntityState.Added là gì?
@Rook Rất cũ nhận xét ở đây, nhưng CMAC chỉ là một hình thức cụ thể của MAC. Tất nhiên không có gì chống lại việc sử dụng AES-CMAC. –
@owlstead Quyền của bạn, tôi đã nhầm lẫn vì một số thư viện gọi nó là một chế độ. – rook
"MAC có thể được sử dụng để kiểm tra xem MAC đã được tạo ..." Không phải là "... để kiểm tra xem _message_ đã được tạo ..." chưa? – leonbloy