Thử nghiệm scrypt
Tính scrypt với N, r, p, salt và độ dài khóa tùy chỉnh, xem lượng bộ nhớ cần dùng và nhận hex thô hoặc chuỗi $scrypt$. Đã kiểm chứng với vector RFC 7914.
Bộ nhớ cần: 128 × N × r = 128 MiB
scrypt (RFC 7914) là thuật toán tốn bộ nhớ (memory-hard). Mức tối thiểu của OWASP: N=2^17, r=8, p=1 (128 MiB). Được tính bằng hash-wasm trong trình duyệt; giá trị N lớn cần nhiều bộ nhớ.
Xác minh mật khẩu với chuỗi hash
Chạy hoàn toàn trong trình duyệt. Dữ liệu của bạn không bao giờ bị tải lên.
Thử nghiệm scrypt là gì?
Chạy hàm dẫn xuất khóa tốn bộ nhớ scrypt (RFC 7914) với tham số chi phí và salt của riêng bạn. Công cụ cho biết thiết lập cần bao nhiêu bộ nhớ, khóa dẫn xuất thô và chuỗi $scrypt$ đã mã hóa để bạn xác minh sau này.
Cách sử dụng Thử nghiệm scrypt
- Nhập Mật khẩu.
- Chọn Chi phí CPU/bộ nhớ (N) là lũy thừa của hai, Kích thước khối (r), Mức song song (p) và Độ dài khóa (byte).
- Nhập Salt và kiểu mã hóa của nó, hoặc để trống để dùng salt ngẫu nhiên.
- Nhấn Băm và sao chép kết quả; xác minh nó ở khung bên dưới.
Ví dụ
Mật khẩu password, salt NaCl, N=1024, r=8, p=16, 64 byte
fdbabe1c9d3472007856e7190d01e9fe7c6ad7cbc8237830e77376634b3731622eaf30d92e22a3886ff109279d9830dac727afb94a83ee6d8360cbdfa2cc0640
RFC 7914 mục 12, test vector số 2.
Khi nào nên dùng Thử nghiệm scrypt
Dùng để tinh chỉnh tham số scrypt, kiểm tra vector RFC 7914 hoặc gỡ lỗi hash từ crypto.scrypt của Node.js, hashlib.scrypt của Python hay passlib. Giá trị N lớn cần hàng trăm MiB và có thể thất bại trên thiết bị di động.
Thử nghiệm scrypt hoạt động như thế nào
scrypt chạy PBKDF2-HMAC-SHA-256 một lần để mở rộng đầu vào, sau đó hàm ROMix lấp đầy 128 × N × r byte bộ nhớ bằng các đầu ra BlockMix dựa trên Salsa20/8 và đọc lại chúng theo thứ tự phụ thuộc dữ liệu, p lần, trước bước PBKDF2 cuối cùng. Dạng mã hóa là $scrypt$ln=<log2 N>,r=<r>,p=<p>$<salt>$<hash> bằng Base64. Việc tính toán dùng hash-wasm (WebAssembly).
Các Trường Hợp Sử Dụng Phổ Biến
- Chọn N sao cho thời gian băm khoảng 100 ms
- Tái tạo test vector RFC 7914
- Gỡ lỗi hash tạo bằng crypto.scrypt của Node
- Minh họa chi phí bộ nhớ tăng theo N và r như thế nào
Câu Hỏi Thường Gặp
OWASP khuyến nghị tham số nào?
Tối thiểu N=2^17, r=8, p=1, dùng 128 MiB, hoặc các phương án đánh đổi như N=2^16, r=8, p=2.
scrypt dùng bao nhiêu bộ nhớ?
128 × N × r byte, hiển thị bên dưới các tham số. N=2^17 và r=8 cần 128 MiB.
scrypt có tốt hơn bcrypt không?
Nó tốn bộ nhớ, khiến tấn công bằng GPU và ASIC đắt đỏ hơn. Argon2id là lựa chọn hàng đầu hiện nay, scrypt là lựa chọn thứ hai tốt.