Hàm băm
(Hash function) là gì?
Trong khoa học
máy tính và mật mã học, Hàm băm (Hash function) là một thuật toán toán học
giúp biến đổi một khối dữ liệu đầu vào có kích thước bất kỳ thành một chuỗi ký
tự có độ dài cố định.
Hãy tưởng tượng
hàm băm giống như một "máy xay" dữ liệu: dù bạn bỏ vào một từ đơn lẻ,
một cuốn sách hay một bộ phim, đầu ra luôn là một chuỗi mã duy nhất với độ dài
không đổi.
1. Các đặc
điểm cốt lõi của hàm băm
Để được coi
là một hàm băm an toàn (đặc biệt trong pháp lý và bảo mật), nó phải hội đủ các
tính chất sau:
- Tính xác định (Deterministic): Với cùng một đầu vào, hàm băm
phải luôn cho ra cùng một kết quả đầu ra duy nhất, bất kể bạn thực hiện
bao nhiêu lần.
- Hiệu ứng thác đổ (Avalanche
Effect): Chỉ cần
thay đổi một chi tiết cực nhỏ ở đầu vào (ví dụ: đổi một chữ cái viết thường
thành viết hoa), mã băm đầu ra sẽ thay đổi hoàn toàn.
- Tính một chiều (One-way
function): Bạn
có thể dễ dàng tạo ra mã băm từ dữ liệu gốc, nhưng về mặt lý thuyết, gần
như không thể "dịch ngược" mã băm để tìm lại dữ liệu ban đầu.
- Kháng va chạm (Collision
resistance): Rất
khó để tìm thấy hai đầu vào khác nhau mà lại cho ra cùng một mã băm.
2. Các
thuật toán phổ biến
Hiện nay, có
nhiều loại hàm băm được sử dụng tùy theo mục đích:
|
Thuật
toán
|
Đặc điểm
|
Trạng
thái hiện tại
|
|
MD5
|
Tạo ra chuỗi
128-bit. Xử lý rất nhanh.
|
Hiện đã bị
coi là không an toàn cho bảo mật vì dễ xảy ra "va chạm".
|
|
SHA-1
|
Tạo ra chuỗi
160-bit.
|
Đã lỗi thời,
không còn được khuyến nghị cho các giao dịch quan trọng.
|
|
SHA-256
|
Thuộc họ
SHA-2, tạo ra chuỗi 256-bit.
|
Rất an
toàn, được sử dụng
rộng rãi trong chứng thực dữ liệu và tiền điện tử (Bitcoin).
|
|
SHA-3
|
Thế hệ mới
nhất với cấu trúc hoàn toàn khác.
|
Độ bảo mật
cực cao.
|
3. Ứng dụng
thực tiễn
Trong
lĩnh vực Pháp lý & Giám định kỹ thuật hình sự
- Như đã đề cập
ở phần trước, hàm băm đóng vai trò là "niêm phong số". Khi thu
giữ chứng cứ điện tử (như ổ cứng hay tệp tin), điều tra viên sẽ chạy hàm băm để
lấy "dấu vân tay" của dữ liệu đó. Tại tòa, nếu mã băm trùng khớp với
lúc thu giữ, chứng cứ đó được xác nhận là nguyên vẹn.
Trong Bảo
mật mật khẩu
- Các hệ thống
hiện đại không lưu mật khẩu của bạn dưới dạng chữ rõ (plaintext). Họ lưu mã
băm của mật khẩu đó. Khi bạn đăng nhập, hệ thống băm mật khẩu bạn vừa nhập
và so sánh với mã băm đã lưu. Điều này bảo vệ bạn ngay cả khi dữ liệu hệ thống
bị rò rỉ.
Trong Kiểm
tra tính toàn vẹn dữ liệu
- Khi bạn tải
một phần mềm lớn từ internet, nhà cung cấp thường đưa kèm một mã SHA-256. Sau
khi tải xong, bạn có thể tự băm tệp đó để kiểm tra xem dữ liệu có bị lỗi hoặc bị
chèn mã độc trong quá trình truyền tải hay không.
Ví dụ
minh họa (SHA-256)
- Đầu vào: Xin chào
- Đầu vào: xin chào (chỉ đổi chữ X thành
x)
- Mã băm: 704c...a21e (Khác biệt hoàn
toàn)
Không có nhận xét nào:
Đăng nhận xét