Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Mã xác thực Tin nhắn (MAC) hoạt động như thế nào?

Mã xác thực tin nhắn (Message Authentication Code - MAC) là một khối vài byte có thể được dùng để xác thực một tin nhắn. Người nhận có thể kiểm tra khối này và chắc chắn rằng tin nhắn không bị thay đổi bởi bên thứ ba.

Một họ các hàm mật mã học được tham số hóa bởi khóa đối xứng. Mỗi hàm có thể hoạt động trên dữ liệu đầu vào (được gọi là "tin nhắn") độ dài thay đổi để tạo giá trị đầu ra độ dài xác định. Giá trị đầu ra được gọi là MAC của tin nhắn đầu vào.

Một thuật toán MAC được chấp nhận mong đợi thỏa mãn thuộc tính sau (cho mỗi cấp độ bảo mật được cung cấp): Nó nên là không thể tính toán được để quyết định MAC của một tin nhắn mà không có kiến thức về khóa, ngay cả khi đã thấy kết quả của việc sử dụng khóa đó để tính MAC của các tin nhắn khác. Thuật toán MAC có thể được dùng để cung cấp xác thực nguồn dữ liệu và bảo vệ toàn vẹn dữ liệu.

Một MAC là nguyên ngữ mật mã học và định nghĩa của nó bao gồm ba thuật toán được gọi là tạo khóa (key-generation), gắn thẻ (tagging), và xác minh (verification).

Thuật toán tạo khóa (key-generation) tạo khóa của một số 'chất lượng' (độ dài) được xác định bởi đầu vào của nó, tham số bảo mật.

Thuật toán gắn thẻ (tagging) có hai đầu vào như khóa và một tin nhắn, và một đầu ra là một thẻ (tag).

Thuật toán xác minh (verification) có ba đầu vào như khóa, một tin nhắn, và một thẻ. Nó đầu ra một bit xác định tính hợp lệ của thẻ cho tin nhắn cho trước, và khóa.

Một MAC là nguyên ngữ đối xứng, do đó hai bên muốn trao đổi tin nhắn sử dụng cùng (đối xứng) khóa. Chữ ký số là nguyên ngữ bất đối xứng và hai bên có khóa khác nhau (nhưng liên quan về mặt toán học).

Điều này dịch thành một câu chuyện đơn giản: bất kỳ ai có thể kiểm tra MAC cũng có thể tính toán nó bằng cùng khóa bí mật.

Theo thuật ngữ khác, chỉ thực thể sở hữu khóa ký riêng tư có thể tạo chữ ký, trong khi bất kỳ ai có thể xác minh các chữ ký này bằng khóa xác minh công khai. Mặc dù có vẻ chữ ký số là nguyên ngữ linh hoạt hơn, tính toán của chúng chậm hơn nhiều so với tính toán MAC, do đó MAC vẫn được dùng bất cứ khi nào có thể.

MAC đóng vai trò thiết yếu trong truyền thông dữ liệu. Tin nhắn được chia sẻ qua kênh không an toàn cần được xác thực để tránh tấn công bao gồm làm giả tin nhắn bởi kẻ xâm nhập có thể can thiệp vào kênh. Nó cung cấp xác thực tin nhắn, giả sử người truyền và người nhận chia sẻ khóa bí mật, MAC có thể được dùng.

Trong hệ thống MAC, người truyền tạo một thẻ là hàm của tin nhắn và khóa bí mật, và gắn nó vào tin nhắn trước khi gửi qua kênh.