Hash/Mật mã

Argon2 Hash + Verify

Băm mật khẩu bằng Argon2 (người chiến thắng Password Hashing Competition, RFC 9106) — các biến thể d/i/id, với xác minh so với mã băm đã có.


                    

Argon2 is the Password Hashing Competition winner and the algorithm recommended in RFC 9106 for hashing passwords. Unlike bcrypt, it deliberately demands a lot of memory, not just CPU time, which makes attacks on specialized hardware (GPUs, ASICs) much harder.

How to use it

Common uses

Things to keep in mind

The memory parameter is Argon2's main defense: the more memory hashing requires, the more expensive it is for an attacker to parallelize an attack on a GPU with limited fast memory per chip.

Argon2id is recommended for most cases: Argon2i resists side-channel attacks better, Argon2d resists GPU attacks better, and id combines both approaches.

Bài viết về công cụ này: Argon2: vì sao thuật toán này giành chiến thắng cuộc thi băm mật khẩu

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

Vì sao Argon2 được khuyến nghị hơn các hàm băm cũ như MD5 hay SHA-256 cho mật khẩu?

Argon2 được thiết kế cố ý chậm và tốn nhiều bộ nhớ, khiến việc brute-force và bẻ khóa bằng GPU/ASIC đắt đỏ hơn nhiều — khác với các hàm băm đa dụng nhanh như MD5 hay SHA-256, vốn không phù hợp để lưu mật khẩu.

Các tham số bộ nhớ, số lần lặp và độ song song kiểm soát điều gì?

Chi phí bộ nhớ quy định mỗi lần thử băm cần bao nhiêu RAM, số lần lặp kiểm soát số vòng chạy, và độ song song quy định số luồng — tăng bất kỳ tham số nào cũng làm tăng chi phí bẻ khóa nhưng khiến việc băm chậm hơn.

Tôi nên dùng biến thể Argon2 nào — d, i, hay id?

Argon2id là lựa chọn mặc định được khuyến nghị để băm mật khẩu, vì nó kết hợp khả năng chống tấn công kênh bên của Argon2i với khả năng chống bẻ khóa bằng GPU của Argon2d.

Argon2 trở thành tiêu chuẩn từ đâu?

Argon2 đã chiến thắng Password Hashing Competition năm 2015 — một cuộc thi mở dành cho các nhà mật mã học, nhằm tìm ra thuật toán tốt nhất để băm mật khẩu. Từ đó OWASP khuyến nghị nó là lựa chọn ưu tiên hơn bcrypt.

Tham số song song hóa chỉ giúp tăng tốc băm thôi sao?

Không, chính tham số đó cũng tăng tốc quá trình dò tìm cho kẻ tấn công sở hữu phần cứng nhiều lõi, vì vậy mức độ song song hóa nên được chọn phù hợp với số lõi thực tế của máy chủ, chứ không nên tăng lên mà không cần thiết.

Bài viết: Hash/Mật mã

Hash Generator: MD5, SHA-1 và SHA-256 khác nhau ở điểm nào

Vì sao MD5 vẫn được dùng để kiểm tra tính toàn vẹn của tệp, nhưng không dùng cho mật khẩu.

Checksum Verifier: cách kiểm tra một tệp có bị hỏng hay không

Vì sao checksum trùng khớp xác nhận tính toàn vẹn của một tệp, nhưng không xác nhận ai đã tạo ra nó.

HMAC: hash có khóa khác gì so với hash thông thường

Vì sao SHA-256 thông thường không bảo vệ khỏi việc giả mạo tin nhắn, nhưng HMAC thì có.

Bcrypt: vì sao mật khẩu được băm chậm chứ không nhanh

Vì sao SHA-256 nhanh là lựa chọn tồi cho mật khẩu, còn bcrypt chậm mới là lựa chọn đúng.

UUID: cách tạo ra định danh gần như không bao giờ trùng lặp

Vì sao UUID v4 có thể được tạo độc lập trên hàng triệu máy mà không có nguy cơ trùng lặp.

Trình tạo mật khẩu: điều gì thực sự làm cho mật khẩu mạnh

Vì sao mật khẩu dài gồm các từ trong từ điển mạnh hơn mật khẩu ngắn có ký hiệu và số.

AES: mã hóa đối xứng hoạt động như thế nào

Vì sao cùng một khóa vừa mã hóa vừa giải mã dữ liệu trong AES, và điều này khác gì với mã hóa bất đối xứng.

Scrypt: vì sao thuật toán cần nhiều bộ nhớ đến vậy

Vì sao scrypt cố ý đòi hỏi nhiều bộ nhớ để gây khó khăn cho việc dò trên thiết bị ASIC.

TOTP: mã dùng một lần trong ứng dụng xác thực hoạt động như thế nào

Vì sao mã trong Google Authenticator hoạt động không cần internet và chỉ đồng bộ với máy chủ qua thời gian.

PBKDF2: tiêu chuẩn kéo giãn khóa lâu đời nhất

Vì sao số lần lặp khuyến nghị của PBKDF2 tăng lên mỗi năm.

X.509: bên trong một chứng chỉ SSL có gì

Trình duyệt kiểm tra chính xác điều gì trong chứng chỉ của một trang web trước khi hiển thị ổ khóa xanh.

PGP: mã hóa bằng khóa công khai và khóa riêng hoạt động như thế nào

Vì sao có thể chia sẻ tự do khóa công khai PGP, nhưng không bao giờ chia sẻ khóa riêng.