เครื่องมือนี้ทำอะไร
แอปยืนยันตัวตนสองขั้นตอนอย่าง Google Authenticator, Microsoft Authenticator และ 1Password แสดงรหัสหกหลักที่เปลี่ยนทุก 30 วินาที แต่ละรหัสคือรหัสผ่านใช้ครั้งเดียวที่คำนวณจาก secret ที่ใช้ร่วมกัน TOTP (RFC 6238) ใช้เวลา ส่วน HOTP (RFC 4226) ใช้ตัวนับ เครื่องมือนี้คำนวณรหัสแบบเดียวกันจาก secret เพื่อให้คุณทดสอบการตั้งค่า 2FA ดีบักการทำงานฝั่งเซิร์ฟเวอร์ หรือตรวจดูว่ารหัสควรเป็นอะไร
ผลลัพธ์แสดงรหัสปัจจุบันพร้อมนับถอยหลังแบบเรียลไทม์ รวมถึงรหัสก่อนหน้าและรหัสถัดไป ซึ่งเซิร์ฟเวอร์มักยอมรับเพื่อรองรับนาฬิกาที่คลาดเคลื่อนเล็กน้อย
วิธีใช้
- วาง secret แบบ Base32 (ตัวอักษร A–Z และตัวเลข 2–7 ช่องว่างและตัวพิมพ์ใหญ่เล็กไม่มีผล) หรือวาง URI
otpauth://ทั้งหมดจากคิวอาร์โค้ด กด ตัวอย่าง เพื่อลองใช้ - เลือก TOTP หรือ HOTP แล้วตั้งอัลกอริทึม จำนวนหลัก และช่วงเวลาให้ตรงกับบัญชี การตั้งค่าใน URI otpauth จะมีความสำคัญกว่า
- สำหรับ HOTP ให้ใส่ตัวนับ แล้วใช้ ตัวนับ +1 เพื่อดูรหัสทีละตัว
- คัดลอกรหัสปัจจุบัน ตัวนับถอยหลังบอกว่ารหัสยังใช้ได้อีกนานเท่าไร
ตัวอย่าง
secret สาธิต JBSWY3DPEHPK3PXP คือรูปแบบ Base32 ของไบต์ “Hello!” ตามด้วย 0xDEADBEEF URI ด้านล่างซึ่งเป็นข้อมูลที่เข้ารหัสอยู่ในคิวอาร์โค้ด อธิบายบัญชีที่ใช้ secret นี้กับการตั้งค่าเริ่มต้น:
otpauth://totp/Example:alice@example.com?secret=JBSWY3DPEHPK3PXP&issuer=Example&algorithm=SHA1&digits=6&period=30
ที่เวลา Unix 1700000000 secret นี้ให้รหัส 324 550 และช่วงเวลาปัจจุบันเหลืออีก 10 วินาที
วิธีคำนวณรหัส
secret ถูกถอดรหัสจาก Base32 เป็นไบต์ สำหรับ TOTP ตัวนับคือเวลา Unix เป็นวินาทีหารด้วยช่วงเวลาแล้วปัดลง ตัวนับถูกเขียนเป็น 8 ไบต์และลงลายมือชื่อด้วย HMAC โดยใช้ secret การตัดแบบไดนามิกเลือก 4 ไบต์จากผล HMAC ตามครึ่งไบต์สุดท้าย แล้วลดตัวเลขให้เหลือจำนวนหลักที่ต้องการโดยคงเลขศูนย์นำหน้าไว้
คำถามที่พบบ่อย
› ทำไมรหัสที่ได้ไม่ตรงกับรหัสในแอปยืนยันตัวตน?
รหัส TOTP ขึ้นอยู่กับนาฬิกา จึงควรตรวจสอบก่อนว่าเวลาของอุปกรณ์ตั้งค่าอัตโนมัติ จากนั้นตรวจสอบว่าอัลกอริทึม จำนวนหลัก และช่วงเวลาตรงกับบัญชี บริการส่วนใหญ่ใช้ SHA-1, 6 หลัก และ 30 วินาที และแอปยืนยันตัวตนจะไม่สนใจการตั้งค่าอื่นเว้นแต่คิวอาร์โค้ดระบุไว้
› TOTP กับ HOTP ต่างกันอย่างไร?
TOTP (RFC 6238) ใช้เวลาปัจจุบันหารด้วยช่วงเวลาเป็นตัวนับ รหัสจึงเปลี่ยนทุก 30 วินาที ส่วน HOTP (RFC 4226) ใช้ตัวนับที่เพิ่มขึ้นหนึ่งทุกครั้งที่ใช้รหัส ทั้งสองแบบนำ secret และตัวนับเข้า HMAC แล้วเก็บตัวเลข 6 ถึง 8 หลักสุดท้าย
› secret ของฉันถูกบันทึกหรือส่งไปที่ใดหรือไม่?
ไม่ รหัสคำนวณในเบราว์เซอร์ของคุณด้วย Web Crypto API secret จะไม่ถูกบันทึก ไม่ถูกเขียนลงแถบที่อยู่ และไม่อยู่ในลิงก์แชร์ ลิงก์ที่แชร์จะมีเพียงการตั้งค่า อย่างไรก็ตาม secret ของ 2FA ให้สิทธิ์เต็มต่อปัจจัยที่สอง จึงควรวางเฉพาะ secret ของคุณเอง
› ใช้เครื่องมือนี้ตอนเพิ่มการยืนยันตัวตนสองขั้นตอนในแอปของฉันได้ไหม?
ได้ กด สุ่ม secret เพื่อสร้าง secret แบบ Base32 ขนาด 160 บิต ใส่ไว้ใน URI otpauth:// หรือคิวอาร์โค้ดให้ผู้ใช้ แล้วเปรียบเทียบรหัสที่เซิร์ฟเวอร์สร้างกับรหัสที่แสดงที่นี่ โดยทั่วไปเซิร์ฟเวอร์จะยอมรับรหัสก่อนหน้าและรหัสถัดไปด้วยเพื่อรองรับนาฬิกาที่คลาดเคลื่อน