AlphaBay SecOps
Trang chủ › Mã Hóa Dữ Liệu

Hàm băm Cryptographic Hash Functions: Vai trò trong xác thực dữ liệu

Ban biên tập AlphaBay SecOps · · Cập nhật
Hàm băm Cryptographic Hash Functions: Vai trò trong xác thực dữ liệu

Hàm băm mật mã (cryptographic hash function) biến một dữ liệu bất kỳ, dù là một ký tự hay một tệp nhiều gigabyte, thành một chuỗi có độ dài cố định gọi là giá trị băm. Chỉ cần dữ liệu thay đổi một bit, giá trị băm thay đổi hoàn toàn, và không thể suy ngược từ giá trị băm ra dữ liệu gốc. Nhờ những tính chất này, hàm băm là nền tảng của việc xác thực dữ liệu: kiểm tra tệp tải về, lưu mật khẩu, chữ ký số, chứng chỉ website và cả blockchain. Bài viết giải thích các tính chất cốt lõi, các thuật toán đang dùng và cách hàm băm xuất hiện trong đời sống số hằng ngày.

Hàm băm khác mã hóa ở điểm nào

Mã hóa là quá trình hai chiều: có khóa thì giải mã được. Hàm băm là một chiều: không có "khóa" nào để lấy lại dữ liệu gốc. Mục đích của hàm băm không phải giữ bí mật mà là tạo "dấu vân tay" đại diện cho dữ liệu, để kiểm tra dữ liệu có còn nguyên vẹn và có đúng là dữ liệu mong đợi hay không.

Ba tính chất bảo mật cốt lõi

Kháng tiền ảnh (preimage resistance)

Cho một giá trị băm, không thể tìm được dữ liệu nào cho ra giá trị đó trong thời gian khả thi. Tính chất này giúp việc lưu giá trị băm thay vì dữ liệu gốc trở nên có ý nghĩa.

Kháng tiền ảnh thứ hai (second preimage resistance)

Cho một dữ liệu cụ thể, không thể tìm dữ liệu khác có cùng giá trị băm. Nếu thiếu tính chất này, kẻ tấn công có thể thay một tệp hợp lệ bằng tệp độc hại có cùng dấu vân tay.

Kháng va chạm (collision resistance)

Không thể tìm được bất kỳ hai dữ liệu khác nhau nào có cùng giá trị băm. Đây là tính chất mạnh nhất và cũng là tính chất đầu tiên bị phá vỡ khi một thuật toán già đi.

Ngoài ra còn có hiệu ứng tuyết lở: thay đổi nhỏ ở đầu vào làm khoảng một nửa số bit đầu ra thay đổi, khiến không thể đoán mối liên hệ giữa các đầu vào gần giống nhau.

Các thuật toán băm phổ biến

Thuật toánĐộ dài đầu raTình trạngGhi chú
MD5128 bitĐã bị phá kháng va chạmKhông dùng cho mục đích bảo mật
SHA-1160 bitĐã có va chạm thực tếĐã bị loại khỏi chứng chỉ web và chữ ký
SHA-256, SHA-512 (họ SHA-2)256, 512 bitAn toànĐược dùng rộng rãi nhất hiện nay
SHA-3224 đến 512 bitAn toànThiết kế khác hẳn SHA-2, làm phương án dự phòng
BLAKE2, BLAKE3Tùy chọnAn toànRất nhanh, dùng trong nhiều phần mềm hiện đại

Lý do MD5 và SHA-1 bị loại bỏ, cùng rủi ro khi còn dùng chúng, được phân tích kỹ trong bài rủi ro của thuật toán lỗi thời MD5 và SHA-1.

Hàm băm trong xác thực dữ liệu hằng ngày

Kiểm tra tệp tải về

Nhiều trang phát hành phần mềm công bố giá trị SHA-256 bên cạnh tệp. Sau khi tải, bạn tính giá trị băm trên máy và so sánh. Trên Windows dùng certutil -hashfile tenfile SHA256 hoặc lệnh PowerShell Get-FileHash; trên macOS và Linux dùng shasum -a 256 hoặc sha256sum. Lưu ý: nếu kẻ tấn công kiểm soát trang web, họ có thể sửa cả tệp lẫn giá trị băm. Vì vậy giá trị băm nên đi kèm chữ ký số.

Chữ ký số

Khi ký một tài liệu, phần mềm không ký trực tiếp toàn bộ dữ liệu mà ký giá trị băm của nó bằng khóa riêng. Người nhận băm lại tài liệu và dùng khóa công khai để kiểm tra chữ ký. Bạn có thể thực hành với GPG theo bài bảo vệ tài liệu bằng GPG/PGP.

Chứng chỉ website và TLS

Chứng chỉ SSL/TLS được tổ chức cấp chứng chỉ ký, dựa trên giá trị băm của nội dung chứng chỉ. Trong phiên TLS, hàm băm còn dùng để tạo mã xác thực thông điệp, đảm bảo dữ liệu không bị sửa trên đường truyền.

HMAC: băm có khóa

HMAC kết hợp hàm băm với một khóa bí mật, cho phép bên nhận xác minh vừa tính toàn vẹn vừa nguồn gốc thông điệp. API của ngân hàng, cổng thanh toán và webhook thường dùng HMAC để ký yêu cầu.

Hệ thống quản lý phiên bản và blockchain

Git định danh mỗi lần commit bằng giá trị băm, nên mọi thay đổi trong lịch sử đều bị phát hiện. Blockchain liên kết các khối bằng giá trị băm của khối trước, tạo chuỗi khó sửa đổi.

Lưu mật khẩu: trường hợp đặc biệt

Hệ thống đúng chuẩn không lưu mật khẩu mà lưu giá trị băm. Tuy nhiên, các hàm băm nhanh như SHA-256 không phù hợp cho mật khẩu, vì kẻ tấn công có card đồ họa mạnh có thể thử hàng tỷ mật khẩu mỗi giây. Thay vào đó, cần dùng hàm băm mật khẩu chuyên dụng:

  • Argon2id: được khuyến nghị cho hệ thống mới, tốn cả bộ nhớ lẫn thời gian tính toán.
  • scrypt, bcrypt: vẫn được chấp nhận rộng rãi.
  • PBKDF2: dùng khi cần tuân thủ một số tiêu chuẩn, với số vòng lặp đủ lớn.

Mỗi mật khẩu cần một chuỗi ngẫu nhiên riêng gọi là salt, để hai người cùng mật khẩu có giá trị băm khác nhau và bảng tra cứu tính sẵn trở nên vô dụng. Khi đọc tin về cơ sở dữ liệu mật khẩu bị lộ, mức độ nguy hiểm phụ thuộc lớn vào việc dịch vụ đã băm mật khẩu theo cách nào.

Những hiểu lầm cần tránh

  • "Băm là mã hóa": không. Nếu cần lấy lại dữ liệu, bạn cần mã hóa.
  • "Băm giúp ẩn danh dữ liệu": băm số điện thoại hay email không đủ ẩn danh, vì tập giá trị có thể có khá nhỏ và dễ thử hết.
  • "Thuật toán nào cũng được": chọn sai thuật toán, như dùng MD5 cho chữ ký hoặc SHA-256 thuần cho mật khẩu, tạo ra lỗ hổng nghiêm trọng.

Hàm băm là công cụ âm thầm nhưng có mặt ở hầu hết mọi cơ chế bảo mật. Hiểu đúng tính chất của nó giúp bạn kiểm tra tệp đúng cách, chọn thuật toán đúng chỗ và đánh giá chính xác mức độ nghiêm trọng của các sự cố bảo mật.

Câu hỏi thường gặp

Hai tệp khác nhau có thể có cùng giá trị băm không?

Về lý thuyết có, vì số đầu vào vô hạn còn số giá trị băm hữu hạn. Với thuật toán an toàn như SHA-256, việc tìm ra hai tệp như vậy là không khả thi trong thực tế.

SHA-256 có bị máy tính lượng tử phá không?

Máy tính lượng tử theo lý thuyết làm giảm độ an toàn của hàm băm trước tấn công tìm tiền ảnh, nhưng SHA-256 và SHA-512 vẫn được xem là đủ mạnh. Mối đe dọa lớn hơn của lượng tử nằm ở mật mã khóa công khai.

Tại sao giá trị băm luôn có cùng độ dài?

Đó là thiết kế của hàm băm: dữ liệu được xử lý theo từng khối và nén lại thành trạng thái có kích thước cố định, giúp so sánh và lưu trữ thuận tiện bất kể kích thước đầu vào.

Có nên tự viết hàm băm riêng không?

Không. Thiết kế hàm băm an toàn đòi hỏi nhiều năm phân tích của cộng đồng mật mã. Hãy dùng thuật toán chuẩn qua thư viện mật mã uy tín.

Bài liên quan