Hãy bắt đầu với các chức năng Hash, mà là một chức năng mà phải mất một đầu vào kích thước tùy ý và ánh xạ tới một đầu ra kích thước cố định. Kết quả của chức năng này luôn luôn là như nhau cho một đầu vào cho trước. Bạn có thể nghĩ về nó như một "bản tóm tắt" hay "nhận dạng" của một số đầu vào.
Trong bối cảnh của mật mã, chúng ta thường đề cập đến các hàm băm mật mã, mà chủ yếu cũng đảm bảo rằng với khả năng áp đảo, bất kỳ hai đầu vào khác nhau sẽ dẫn đến khác nhau kết quả đầu ra. Nói cách khác, sự va chạm là rất khó xảy ra. Khi nó quay ra, điều này là khá hữu ích cho việc mã hóa và hàm băm được sử dụng hầu như ở khắp mọi nơi trong việc xây dựng cấu trúc mã hóa.
Một trong những nơi nó được sử dụng trong xây dựng HMAC, đó là một thực hiện một mã xác thực thông điệp (MAC). Không phải là an toàn hơn, như HMAC chỉ đơn giản là một (rất phổ biến) cách để xây dựng một MAC.
MAC / HMACs được sử dụng để cho phép sự toàn vẹn và xác thực của thông điệp. Nếu hai bên chia sẻ một khóa bí mật dùng để thông tin liên lạc, sau đó mỗi bên có thể sử dụng MAC để tạo ra một thẻ của tin nhắn, và gửi cả tin nhắn và thẻ cho người nhận. Rồi sau này có thể sử dụng phương thức tương tự để đảm bảo rằng thẻ được tạo ra từ đó thông điệp cụ thể bằng cách sử dụng cùng một khóa bí mật - người đầu tiên đảm bảo tính toàn vẹn, trong khi đảm bảo tính xác thực thứ hai.
đang được dịch, vui lòng đợi..
