แฮช/การเข้ารหัส

Scrypt Hash + Verify

แฮชรหัสผ่านด้วย scrypt (RFC 7914, memory-hard KDF) พร้อมตรวจสอบกับแฮชที่มีอยู่


                    

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.

บทความเกี่ยวกับเครื่องมือนี้: Scrypt: เหตุใดอัลกอริทึมนี้จึงต้องการหน่วยความจำมากขนาดนั้น

คำถามที่พบบ่อย

scrypt ต่างจาก bcrypt หรือ PBKDF2 อย่างไร?

Scrypt ถูกออกแบบให้ต้องใช้หน่วยความจำมากและใช้ CPU หนักโดยตั้งใจ ทำให้เจาะด้วย GPU หรือฮาร์ดแวร์ ASIC เฉพาะทางมีต้นทุนสูงกว่า bcrypt หรือ PBKDF2 มาก ซึ่งต้านทานได้หลัก ๆ แค่บรูทฟอร์สที่ใช้ CPU

พารามิเตอร์ N, r และ p ควบคุมอะไร?

N กำหนดต้นทุน CPU/หน่วยความจำ (ต้องเป็นเลขยกกำลังสอง) r กำหนดขนาดบล็อกที่ส่งผลต่อการใช้หน่วยความจำต่อการทำงาน และ p กำหนดความขนาน การเพิ่มค่าใดค่าหนึ่งจะเพิ่มต้นทุนทรัพยากรทั้งสำหรับการใช้งานที่ถูกต้องและการโจมตี

scrypt ยังเป็นตัวเลือกที่ดีเมื่อเทียบกับ Argon2 หรือไม่?

Scrypt ยังคงมั่นคงและผ่านการพิสูจน์มาแล้ว แต่ระบบใหม่มักแนะนำ Argon2 (ผู้ชนะ Password Hashing Competition) เพราะให้การควบคุมหน่วยความจำและความทนทานต่อ side-channel ที่ละเอียดกว่า

scrypt ใช้หน่วยความจำจริงเท่าใด?

ประมาณ 128 × N × r ไบต์ต่อการคำนวณหนึ่งครั้ง ที่พารามิเตอร์ทั่วไป (N=16384, r=8) จะอยู่ที่ประมาณ 16 เมกะไบต์ต่อแฮชหนึ่งครั้ง — ไม่มากสำหรับการล็อกอินครั้งเดียว แต่มีนัยสำคัญเมื่อมีการยืนยันตัวตนพร้อมกันหลายพันครั้งบนเซิร์ฟเวอร์

scrypt ถูกนำไปใช้ที่ไหนอีกนอกจากการแฮชรหัสผ่าน?

scrypt เป็นที่รู้จักในฐานะอัลกอริทึม proof-of-work ในคริปโทเคอร์เรนซีบางชนิด (เช่น Litecoin) — ถูกเลือกใช้เพราะทนทานต่อการขุดด้วยอุปกรณ์ ASIC เฉพาะทาง ซึ่งเป็นลักษณะเด่นของบิตคอยน์ที่ใช้ SHA-256

บทความ: แฮช/การเข้ารหัส

Hash Generator: MD5, SHA-1 และ SHA-256 ต่างกันอย่างไร

เหตุใด MD5 จึงยังใช้ตรวจสอบความถูกต้องของไฟล์ แต่ไม่ใช้กับรหัสผ่าน

Checksum Verifier: วิธีตรวจสอบว่าไฟล์ไม่เสียหาย

เหตุใด checksum ที่ตรงกันจึงยืนยันความถูกต้องของไฟล์ แต่ไม่ยืนยันว่าใครเป็นผู้สร้าง

HMAC: แฮชที่มีคีย์ต่างจากแฮชธรรมดาอย่างไร

เหตุใด SHA-256 ธรรมดาจึงไม่ป้องกันการปลอมแปลงข้อความ แต่ HMAC ป้องกันได้

Bcrypt: เหตุใดรหัสผ่านจึงถูกแฮชอย่างช้า ๆ ไม่ใช่เร็ว

เหตุใด SHA-256 ที่เร็วจึงเป็นตัวเลือกที่แย่สำหรับรหัสผ่าน และ bcrypt ที่ช้าจึงเป็นตัวเลือกที่ถูกต้อง

UUID: ตัวระบุที่แทบไม่เคยซ้ำกันถูกสร้างขึ้นอย่างไร

เหตุใด UUID v4 จึงสามารถสร้างแยกกันได้บนเครื่องนับล้านเครื่องโดยไม่มีความเสี่ยงชนกัน

Password Generator: อะไรที่ทำให้รหัสผ่านแข็งแกร่งจริง ๆ

เหตุใดรหัสผ่านยาวที่ประกอบจากคำในพจนานุกรมจึงแข็งแกร่งกว่ารหัสผ่านสั้นที่มีสัญลักษณ์และตัวเลข

AES: การเข้ารหัสแบบสมมาตรทำงานอย่างไร

เหตุใดคีย์เดียวกันจึงเข้ารหัสและถอดรหัสข้อมูลใน AES และสิ่งนี้ต่างจากการเข้ารหัสแบบอสมมาตรอย่างไร

Argon2: เหตุใดอัลกอริทึมนี้จึงชนะการแข่งขันแฮชรหัสผ่าน

Argon2 ป้องกันการโจมตีด้วย GPU ได้ดีกว่าอัลกอริทึมแฮชรหัสผ่านรุ่นเก่าอย่างไร

TOTP: รหัสใช้ครั้งเดียวในแอปยืนยันตัวตนทำงานอย่างไร

เหตุใดรหัสใน Google Authenticator จึงทำงานได้โดยไม่มีอินเทอร์เน็ตและซิงค์กับเซิร์ฟเวอร์ผ่านเวลาเท่านั้น

PBKDF2: มาตรฐานการยืดคีย์ที่เก่าแก่ที่สุด

เหตุใดจำนวนรอบการวนซ้ำที่แนะนำสำหรับ PBKDF2 จึงเพิ่มขึ้นทุกปี

X.509: ภายในใบรับรอง SSL มีอะไรบ้าง

เบราว์เซอร์ตรวจสอบอะไรในใบรับรองของเว็บไซต์ก่อนแสดงกุญแจสีเขียว

PGP: การเข้ารหัสด้วยกุญแจสาธารณะและกุญแจส่วนตัวทำงานอย่างไร

เหตุใดจึงสามารถแชร์กุญแจสาธารณะ PGP ได้อย่างอิสระ แต่ห้ามแชร์กุญแจส่วนตัวเด็ดขาด