Hash/Mật mã

Scrypt Hash + Verify

Băm mật khẩu bằng scrypt (RFC 7914, KDF tốn nhiều bộ nhớ) với xác minh so với mã băm đã có.


                    

Scrypt (RFC 7914) was one of the first memory-hard password-hashing algorithms: it deliberately requires a lot of RAM, not just CPU time, to make parallel brute-forcing on GPUs and ASICs harder.

How to use it

Common uses

Things to keep in mind

The N parameter (memory cost) increases both required memory and compute time exponentially — tune it to your server's actual capacity.

Scrypt has been superseded by Argon2 (the official Password Hashing Competition winner) as the recommended choice for new systems, though scrypt itself still isn't considered unsafe.

Bài viết về công cụ này: Scrypt: vì sao thuật toán cần nhiều bộ nhớ đến vậy

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

scrypt khác bcrypt hay PBKDF2 như thế nào?

Scrypt được thiết kế cố ý tốn bộ nhớ lẫn tốn CPU, khiến việc bẻ khóa bằng GPU hay phần cứng ASIC tùy chỉnh đắt đỏ hơn nhiều so với bcrypt hay PBKDF2, vốn chủ yếu chống lại brute-force dựa trên CPU.

Các tham số N, r và p kiểm soát điều gì?

N quy định chi phí CPU/bộ nhớ (phải là lũy thừa của hai), r quy định kích thước khối ảnh hưởng đến mức dùng bộ nhớ mỗi thao tác, và p quy định mức song song — tăng bất kỳ tham số nào cũng làm tăng chi phí tài nguyên cho cả sử dụng hợp pháp lẫn tấn công.

scrypt có còn là lựa chọn tốt so với Argon2 không?

Scrypt vẫn vững chắc và đã được kiểm chứng qua thời gian, nhưng Argon2 (người chiến thắng Password Hashing Competition) thường được khuyến nghị cho hệ thống mới vì cho phép kiểm soát chi tiết hơn về bộ nhớ và khả năng chống tấn công kênh bên.

Scrypt thực sự tiêu tốn bao nhiêu bộ nhớ?

Xấp xỉ 128 × N × r byte cho một lần tính toán. Với các tham số điển hình (N=16384, r=8), con số này vào khoảng 16 megabyte cho mỗi hash — không đáng kể đối với một lần đăng nhập, nhưng đáng kể khi có hàng nghìn lượt xác thực đồng thời trên máy chủ.

Scrypt còn được ứng dụng ở đâu ngoài việc băm mật khẩu?

Scrypt được biết đến như thuật toán proof-of-work trong một số loại tiền mã hóa (ví dụ Litecoin) — nó được chọn chính vì khả năng chống lại việc đào bằng thiết bị ASIC chuyên dụng, đặc trưng của Bitcoin với SHA-256.

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.

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

Argon2 phòng thủ trước các cuộc tấn công bằng GPU tốt hơn các thuật toán băm mật khẩu cũ như thế nào.

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.