Salt là gì?

Noun Security

Trong mật mã học (cryptography), salt là dữ liệu ngẫu nhiên được sử dụng làm đầu vào bổ sung cho hàm một chiều (one-way function) để băm (hash) dữ liệu, mật khẩu hoặc passphrase. Salt được sử dụng để bảo vệ mật khẩu trong quá trình lưu trữ. Trong lịch sử, chỉ có một hàm băm mật mã (cryptographic hash function) của mật khẩu được lưu trữ trên hệ thống, nhưng theo thời gian, các biện pháp bảo vệ bổ sung đã được phát triển để bảo vệ chống lại các mật khẩu trùng lặp hoặc phổ biến có thể nhận dạng được (vì các hàm băm của chúng giống hệt nhau). Salt là một trong những biện pháp bảo vệ như vậy.

Một salt mới được tạo ngẫu nhiên cho mỗi mật khẩu. Thông thường, salt và mật khẩu (hoặc phiên bản của nó sau khi key stretching) được nối (concatenate) và cấp (fed) cho một hàm băm mật mã và giá trị băm đầu ra (nhưng không phải là mật khẩu ban đầu) được lưu trữ với salt trong cơ sở dữ liệu (database). Việc băm cho phép tráng nguy cơ nguy cơ bị lộ mật khẩu bản rõ (plaintext password) nếu dữ liệu xác thực bị xâm phạm (compromise). Lưu ý rằng do đó, các salt không cần được mã hóa (encrypt) hoặc lưu trữ riêng biệt với chính mật khẩu đã băm, bởi vì ngay cả khi kẻ tấn công có quyền truy cập vào cơ sở dữ liệu với các giá trị băm và các salt.

Salt bảo vệ chống lại các cuộc tấn công sử dụng các bảng được tính toán trước (ví dụ: rainbow table), vì chúng có thể làm cho kích thước của bảng cần thiết cho một cuộc tấn công thành công là lớn. Vì các muối khác nhau, chúng cũng bảo vệ các mật khẩu thường được sử dụng hoặc được sử dụng lại, vì các giá trị băm có salt khác nhau được tạo cho các trường hợp khác nhau của cùng một mật khẩu.

Learning English Everyday