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

HMAC trong An ninh Thông tin là gì?

HMAC là viết tắt của Keyed-Hashing for Message Authentication (Băm có khóa để xác thực tin nhắn). Đây là mã xác thực tin nhắn được thu được bằng cách chạy hàm băm mật mã học (như MD5, SHA1 và SHA256) trên thông tin (cần được xác thực) và một khóa bí mật chia sẻ. HMAC được định nghĩa trong RFC 2104.

HMACs tương tự như chữ ký số. Cả hai đều cung cấp tính toàn vẹn và xác thực. Cả hai đều cần khóa mật mã học và cả hai đều áp dụng hàm băm. Khác biệt chính là chữ ký số cần khóa bất đối xứng, trong khi HMACs cần khóa đối xứng (không có khóa công khai).

HMAC có thể được sử dụng cùng với một số hàm băm mật mã học lặp lại. MD5 và SHA-1 là ví dụ của hàm băm. HMAC cũng cần khóa riêng cho tính toán và xác minh giá trị xác thực tin nhắn.

Mã xác thực tin nhắn đã băm có thể đồng thời kiểm tra xác thực của tin nhắn và toàn vẹn dữ liệu liên quan đến nó. Kích thước khóa bí mật được sử dụng quyết định độ bền mật mã học của mã xác thực tin nhắn đã băm.

Mã xác thực tin nhắn đã băm có thể dựa trên các hàm băm mật mã học lặp lại bao gồm SHA-1 và MD-5 cùng với khóa bí mật. Mã xác thực tin nhắn đã băm cung cấp khóa công khai và khóa riêng cho cả máy chủ và máy khách. Mặc dù khóa công khai được biết, khóa riêng chỉ được biết bởi máy khách và máy chủ cụ thể.

Toàn bộ quy trình bắt đầu với máy khách tạo mã xác thực tin nhắn đã băm duy nhất dựa trên thông tin được yêu cầu và băm dữ liệu được yêu cầu cùng với khóa riêng.

Điều này được gửi như một phần của yêu cầu đến máy chủ, thứ sau đó so sánh hai mã xác thực tin nhắn đã băm, và nếu tìm thấy giống nhau, cho phép máy khách được tin cậy và yêu cầu được thực hiện. Quy trình hoàn chỉnh cũng được gọi là bắt tay bí mật (secret handshake).

Mục tiêu chính của HMAC như sau:

  • Sử dụng, không cần sửa đổi, các hàm băm có sẵn. Cụ thể, các hàm băm triển khai tốt trong phần mềm, và mã cho chúng có sẵn miễn phí và rộng rãi.
  • Duy trì hiệu suất gốc của hàm băm mà không bị suy giảm đáng kể.
  • Sử dụng và quản lý khóa theo cách đơn giản.
  • Có phân tích mật mã học được hiểu tốt về độ bền của cấu trúc xác thực dựa trên giả định hợp lý về hàm băm cơ bản.
  • Cho phép thay thế dễ dàng hàm băm cơ bản trong trường hợp tìm thấy hoặc cần hàm băm nhanh hơn hoặc an toàn hơn.
  • Mục tiêu chính của mã xác thực tin nhắn đã băm là nó ít bị ảnh hưởng bởi va chạm và được coi là brute force để có được khóa mật mã học bí mật.
  • Mã xác thực tin nhắn đã băm cung cấp cách thuận tiện để kiểm tra xem thông tin có bị can thiệp hay không và xác thực người dùng.