ตัวสร้าง TOTP
ทุกครั้งที่ Google Authenticator หรือ Authy แสดงรหัส 6 หลักที่เปลี่ยนทุก 30 วินาที นั่นคือ TOTP: ค่า HMAC ที่คำนวณจากคีย์ลับที่ใช้ร่วมกันกับเวลา Unix ปัจจุบัน ตามมาตรฐาน RFC 6238 เครื่องมือนี้คำนวณรหัสชุดเดียวกันได้จากคีย์ลับ Base32 ใดก็ได้ จึงเหมาะสำหรับดีบักการเชื่อมต่อการยืนยันตัวตนสองขั้นตอน (2FA) ใหม่ หาสาเหตุที่บริการปฏิเสธรหัสของคุณ หรือสังเกตพฤติกรรมของอัลกอริทึมเมื่อเปลี่ยนพารามิเตอร์ โปรดใช้กับคีย์ลับสำหรับทดสอบเท่านั้น: รหัสถูกคำนวณบนเซิร์ฟเวอร์ของเรา ดังนั้นคีย์ลับจริงที่ปกป้องบัญชีของคุณควรอยู่ในแอปยืนยันตัวตน ไม่ใช่ในหน้าเว็บใดทั้งสิ้น
ตัวสร้าง TOTP นี้ทำงานอย่างไร
-
1
วางคีย์ลับ Base32
ตัวอักษร A-Z และตัวเลข 2-7 ซึ่งเป็นรูปแบบที่ใช้ในคิวอาร์โค้ด otpauth:// เว้นวรรคและตัวพิมพ์เล็กใช้ได้ ส่วนอักขระอื่นจะถูกแจ้งว่าเป็น Base32 ที่ไม่ถูกต้อง
-
2
เลือกอัลกอริทึมแฮช
บริการเกือบทั้งหมดใช้ SHA-1 เปลี่ยนไปใช้ SHA-256 หรือ SHA-512 เฉพาะเมื่อบริการนั้นกำหนดไว้อย่างชัดเจน
-
3
ตั้งจำนวนหลักและช่วงเวลา
เลือก 6, 7 หรือ 8 หลัก และหน้าต่างเวลา 30 หรือ 60 วินาที ค่ามาตรฐานคือ 6 หลักทุก 30 วินาที
-
4
อ่านรหัสปัจจุบัน
รหัสจะรีเฟรชทุกวินาที และตัวนับถอยหลังบอกว่าหน้าต่างเวลาปัจจุบันเหลืออีกกี่วินาที
-
5
เทียบ URI แบบ otpauth
เครื่องมือแสดง URI แบบ otpauth:// ของพารามิเตอร์ที่คุณตั้งไว้ เพื่อให้เทียบกับข้อมูลที่คิวอาร์โค้ดตั้งค่าของบริการเข้ารหัสไว้ได้
อธิบายอัลกอริทึมแบบง่าย
TOTP คือ HOTP (รหัสผ่านแบบใช้ครั้งเดียวที่อิงกับ HMAC ตาม RFC 4226) โดยเปลี่ยนตัวนับเป็นเวลา Unix ปัจจุบันหารด้วยขั้นเวลา (ปกติ 30 วินาที):
counter = floor(unix_time / 30)
hash = HMAC-SHA1(secret, counter_as_8_byte_big_endian)
offset = last byte of hash AND 0x0F
truncated = 4 bytes from offset, with the top bit zeroed
code = truncated mod 10^digits
อุปกรณ์ของคุณกับเซิร์ฟเวอร์คำนวณสมการเดียวกันด้วยคีย์ลับเดียวกันและนาฬิกาเดียวกัน จึงได้รหัสตรงกันโดยไม่ต้องส่งรหัสไปที่ไหนเลย รหัส 6 หลักก็คือ HMAC ที่ถูกตัดทอนแล้วนำมา mod 10^6 เท่านั้นเอง ไม่มีเวทมนตร์ มีแค่การแฮช
พารามิเตอร์ที่พบบ่อย
| บริการ | อัลกอริทึม | จำนวนหลัก | ช่วงเวลา |
|---|---|---|---|
| เว็บไซต์และแอปส่วนใหญ่ | SHA-1 | 6 | 30 วินาที |
| GitHub | SHA-1 | 6 | 30 วินาที |
| Cloudflare | SHA-1 | 6 | 30 วินาที |
| บัญชี Microsoft | SHA-1 | 6 | 30 วินาที |
| ธนาคารบางแห่งและ VPN องค์กร | SHA-256 หรือ SHA-512 | 8 | 60 วินาที |
ถ้าบริการปฏิเสธรหัสของคุณ ให้ตรวจจำนวนหลักและช่วงเวลาก่อน แล้วค่อยตรวจอัลกอริทึม และอย่าลืมว่าแอปยืนยันตัวตนบางตัวจะเพิกเฉยพารามิเตอร์ที่ไม่ใช่ค่าเริ่มต้นแบบเงียบ ๆ (ในอดีต Google Authenticator ปฏิบัติกับทุกอย่างเป็น SHA-1, 6 หลัก, 30 วินาที) ดังนั้นให้ทดสอบกับแอปตัวเดียวกับที่ผู้ใช้ของคุณจะใช้จริงเสมอ
เก็บคีย์ลับให้ปลอดภัย
- อย่าส่งคีย์ลับ 2FA ทางอีเมลหรือข้อความเด็ดขาด ทันทีที่มันอยู่ในกล่องจดหมาย มันจะคงอยู่ในบันทึกและข้อมูลสำรองของผู้ให้บริการไปตลอด
- ลงทะเบียนด้วยการสแกนคิวอาร์โค้ด คิวอาร์โค้ดเข้ารหัส URI แบบ
otpauth://totp/...ที่รวมคีย์ลับ อัลกอริทึม จำนวนหลัก และช่วงเวลาไว้ในชุดเดียวอย่างชัดเจน - สำรองข้อมูลตั้งแต่ตอนลงทะเบียน เก็บรหัสกู้คืนหรือคีย์ลับไว้ในโปรแกรมจัดการรหัสผ่าน เพราะถ้าโทรศัพท์หายโดยไม่มีข้อมูลเหล่านี้ คุณจะเข้าบัญชีไม่ได้
- หนึ่งบริการต่อหนึ่งคีย์ลับ ทุกบริการออกคีย์ลับของตัวเองตอนตั้งค่า ถ้าคีย์ใดรั่วไหล ให้ลงทะเบียน 2FA ใหม่ที่บริการนั้นเพื่อให้คีย์เก่าใช้ไม่ได้อีก
ความคลาดเคลื่อนของเวลา
TOTP ทำงานได้ก็ต่อเมื่อนาฬิกาทั้งสองฝั่งตรงกัน หน้านี้คำนวณรหัสด้วยนาฬิกาของเซิร์ฟเวอร์ ดังนั้นถ้ารหัสที่นี่ไม่ตรงกับแอปยืนยันตัวตนในโทรศัพท์ สิ่งแรกที่ควรสงสัยคือนาฬิกาของอุปกรณ์ ระบบตรวจสอบส่วนใหญ่ยอมรับความคลาดเคลื่อนหนึ่งหน้าต่างเวลาในแต่ละทิศทาง (30 ถึง 60 วินาที) ถ้าเกินกว่านั้น ให้ซิงก์นาฬิกาอุปกรณ์ผ่าน NTP ก่อนจะโทษคีย์ลับ
ใช้คีย์ลับทดสอบที่นี่เท่านั้น
เครื่องมือนี้คำนวณรหัสบนเซิร์ฟเวอร์ของเรา: คีย์ลับที่คุณพิมพ์จะถูกส่งผ่าน HTTPS ทุกครั้งที่อัปเดต และยังปรากฏใน URL ของหน้าเมื่อคุณย้ายไปมาระหว่างขั้นตอนของเครื่องมือ ซึ่งเหมาะสำหรับการพัฒนา การสาธิต และการดีบักด้วยคีย์ลับแบบใช้แล้วทิ้ง แต่ไม่ใช่ที่สำหรับคีย์ลับจริงที่ปกป้องอีเมลหรือบัญชีธนาคารของคุณ คีย์เหล่านั้นควรอยู่ในแอปยืนยันตัวตนบนโทรศัพท์เท่านั้น ถ้าคุณเผลอวางคีย์ลับจริงไว้นอกแอปยืนยันตัวตนไปแล้ว ให้ลงทะเบียน 2FA ใหม่ที่บริการนั้นเพื่อเปลี่ยนคีย์
คำถามที่พบบ่อย
ให้มองหน้านี้เป็นเครื่องมือสำหรับนักพัฒนาและการทดสอบ ไม่ใช่ตู้เซฟ รหัสถูกคำนวณฝั่งเซิร์ฟเวอร์ คีย์ลับจึงเดินทางไปยังเซิร์ฟเวอร์ของเราผ่าน HTTPS และอาจปรากฏใน URL ของหน้าระหว่างขั้นตอน ใช้คีย์ลับสำหรับสาธิตหรือพัฒนาได้อย่างอิสระ แต่อย่าวางคีย์ลับจริงของบัญชีที่คุณให้ความสำคัญเด็ดขาด ถ้าวางไปแล้ว ให้ลงทะเบียน 2FA ใหม่ที่บริการนั้นเพื่อเปลี่ยนคีย์
ตรวจพารามิเตอร์ก่อน: อัลกอริทึม จำนวนหลัก และช่วงเวลาต้องตรงกับที่บริการออกให้ทุกประการ จากนั้นตรวจนาฬิกา: หน้านี้ใช้นาฬิกาของเซิร์ฟเวอร์ ความคลาดเคลื่อนจึงมักชี้ไปที่อุปกรณ์อีกฝั่ง สุดท้าย อย่าลืมว่าแอปบางตัวเพิกเฉยพารามิเตอร์ที่ไม่ใช่ค่าเริ่มต้น ตัวอย่างคลาสสิกคือ Google Authenticator
Base32 เท่านั้น: ตัวอักษร A ถึง Z และตัวเลข 2 ถึง 7 พร้อมเครื่องหมาย = เติมท้ายได้ตามต้องการ เว้นวรรคจะถูกตัดออกและตัวพิมพ์เล็กจะถูกแปลงให้อัตโนมัติ คีย์ลับแบบฐานสิบหกหรือไบต์ดิบต้องแปลงเป็น Base32 ก่อน ไม่เช่นนั้นเครื่องมือจะแจ้งว่าคีย์ลับ Base32 ไม่ถูกต้อง
คุณจะเข้าใช้ 2FA ของบัญชีนั้นไม่ได้ ให้ใช้ขั้นตอนกู้คืนของบริการ (รหัสกู้คืน การยืนยันตัวตน หรือ SMS สำรอง) และตอนตั้งค่าให้เก็บรหัสกู้คืนหรือคิวอาร์โค้ดเริ่มต้นไว้ในที่ปลอดภัยเสมอ
ได้ สร้างคีย์ลับแบบสุ่มฝั่งเซิร์ฟเวอร์ อย่างน้อย 128 บิต (RFC 4226 แนะนำ 160 บิต) แสดงเป็นคิวอาร์โค้ดเพียงครั้งเดียว แล้วตรวจสอบรหัสที่ผู้ใช้ส่งมาด้วยการคำนวณ HMAC แบบเดียวกัน โดยทั่วไปยอมรับความคลาดเคลื่อนหนึ่งหน้าต่างเวลาในแต่ละทิศทาง มีไลบรารีที่เสถียรสำหรับทุกเทคโนโลยี: pyotp (Python), otplib (JavaScript), rotp (Ruby)
เครื่องมือที่เกี่ยวข้อง
ตัวสร้าง HMAC
สร้างลายเซ็น HMAC (SHA-256, SHA-384, SHA-512, SHA-1 และ MD5) จากข้อความและกุญแจลับ เพื่อใช้ในการยืนยันตัวตนผ่าน API และ Webhook
ตัวสร้าง JWT
สร้าง JWT ที่มีการลงนาม โดยกำหนดหัวข้อ (header) แบบกำหนดเอง สิทธิ์ของพารามิเตอร์ในเนื้อหา (payload claims) การลงนามด้วย HMAC หรือ RSA รวมถึงกำหนดระยะเวลาหมดอายุและกลุ่มผู้ใช้งานที่อนุญาต เพื่อใช้ในการทดสอบ
ตัวเข้ารหัสไฟล์ Base64
เข้ารหัสไฟล์ใดก็ได้ (PDF, ZIP, รูปภาพ, ไฟล์ปฏิบัติการ) เป็นข้อความ Base64 เพื่อฝังใน JSON, อีเมล, YAML หรือ data URI ทำงานในเครื่องของคุณ ไม่มีการอัปโหลด
ตัวสร้างแฮช (Hash Generator)
สร้างค่าแฮช MD5, SHA-1, SHA-256, SHA-384, SHA-512 และ CRC32 จากข้อความ พร้อมค่าไดเจสต์พร้อมคัดลอกสำหรับเช็คซัมและการเปรียบเทียบ
เครื่องสร้างค่าแฮช MD5
คำนวณค่า checksum แบบ MD5 ของข้อความและไฟล์เพื่อยืนยันความสมบูรณ์ โดยผลลัพธ์จะตรงกับที่ได้จากฟังก์ชัน md5sum และ openssl dgst -md5
เครื่องแปลง Gwei เป็น Ether
แปลงจำนวนในหน่วย Gwei เป็น Ether (ETH) ด้วยทศนิยมสูงสุด 18 ตำแหน่ง มีประโยชน์สำหรับการประมาณค่าธรรมเนียม Gas และการอ่านข้อมูลธุรกรรม
เครื่องมือนี้มีให้บริการในภาษาอื่น
- Generador TOTP [ES]
- Generator TOTP [PL]
- TOTPジェネレーター [JA]
- Gerador TOTP [PT]
- TOTP-generator [SV]
- Bộ tạo TOTP [VI]
- مولد TOTP [AR]
- Générateur TOTP [FR]
- TOTP-Generator [DE]
- Generator TOTP [ID]
- TOTP 생성기 [KO]
- TOTP-generator [NL]
- TOTP Üretici [TR]
- TOTP 生成器 [ZH]
- TOTP Generator [EN]
- Generatore TOTP [IT]
- Генератор TOTP [RU]