HOTP

HOTP (รหัสผ่านแบบใช้ครั้งเดียวอ้างอิง HMAC, RFC 4226) คือพี่น้องอ้างอิงตัวนับของ TOTP ขณะที่ TOTP ดำเนินตามนาฬิกา HOTP จะดำเนินตามตัวนับร่วมที่ทั้ง token และ server เพิ่มขึ้นทุกครั้งที่ใช้มา HOTP คือโหมดมาตรฐานสำหรับ YubiKey OATH, hardware token รุ่นเก่า และบางขั้นตอนของธนาคารที่ server ไม่สามารถพึ่งการซิงค์นาฬิกาได้

เอกสารข้อกำหนด: RFC 4226, HOTP: An HMAC-Based One-Time Password Algorithm (2005).
URI scheme: Google Authenticator Key URI Format, scheme otpauth:// ที่ทุกแอปยืนยันตัวตนยอมรับ
ข้อกำหนดที่เกี่ยวข้อง: TOTP (RFC 6238), ตัวแปรอ้างอิงเวลาที่สร้างบน HOTP

ภาพรวม

QR ลงทะเบียน HOTP คือ URL ใน scheme otpauth:// ที่มี hotp เป็นประเภท บรรจุ shared HMAC secret พร้อมค่า ตัวนับ ที่ทั้งสองฝ่ายต้องซิงค์ รูปแบบ:

otpauth://hotp/LABEL?secret=SECRET&issuer=ISSUER&counter=N&digits=N&algorithm=ALG

HOTP vs TOTP, ควรใช้อะไร

คุณสมบัติHOTP (RFC 4226)TOTP (RFC 6238)
ดำเนินตามตัวนับ (การใช้งานที่สำเร็จแต่ละครั้ง)นาฬิกา (ทุก 30 วินาที)
ต้องการการซิงค์นาฬิกาไม่ใช่ ภายใน ~30 วินาที
ซิงค์ใหม่เมื่อเบี่ยงเบนServer ยอมรับค่าตัวนับ N ค่าถัดไปServer ยอมรับ ±1 หน้าต่าง
การใช้งานทั่วไปYubiKey, hardware token รุ่นเก่า, ธนาคารออฟไลน์2FA ผู้บริโภคทุกประเภท, Google, Microsoft, 1Password, Authy
การใช้ตัวนับซ้ำหายนะ, เปิดเผย secret เมื่อเวลาผ่านไปไม่เกี่ยวข้อง
ช่องโหว่หาก secret รั่วรหัสอนาคตทั้งหมดทำนายได้รหัสอดีตและอนาคตทั้งหมดทำนายได้

Test vector มาตรฐาน

RFC 4226 ภาคผนวก D ให้ค่า HOTP อ้างอิงสำหรับ secret 12345678901234567890 (20 ไบต์, Base32 GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ) พร้อมเอาต์พุต 6 หลัก:

ตัวนับHOTP (6 หลัก)
0755224
1287082
2359152
3969429
4338314
5254676
6287922
7162583
8399871
9520489

Payload QR ขั้นต่ำสำหรับการลงทะเบียนที่ตัวนับ 0:

otpauth://hotp/Example:test?secret=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ&issuer=Example&counter=0

ตัวตรวจสอบ secret Base32 สด

ตัวตรวจสอบเดียวกับหน้า TOTP, secret ของ HOTP ใช้ตัวอักษร Base32 เดียวกัน (RFC 4648 §6: A-Z, 2-7) ทำงานในเบราว์เซอร์ ไม่ต้องไปที่ server

ใส่ secret เพื่อตรวจสอบ

จุดที่มักพลาด

ความเข้ากันได้ของแอปยืนยันตัวตน

แอป / tokenHOTPSHA256/5128 หลักหมายเหตุ
YubiKey Authenticator (iOS/Android/desktop)ใช่ใช่ใช่HOTP คือโหมดมาตรฐาน YubiKey OATH รองรับ RFC 4226 ครบถ้วน
Google Authenticatorใช่ไม่สนใจ (SHA1 เท่านั้น)ไม่สนใจ (6 เท่านั้น)มาตรฐาน de facto ปลอดภัยสำหรับ HOTP แต่เฉพาะ 6 หลัก SHA1
1Passwordใช่ใช่ใช่รองรับ RFC ครบถ้วน ตัวนับถูกเก็บและส่งออกพร้อมกับ entry
Bitwardenใช่ใช่ใช่รองรับ RFC ครบถ้วน
Microsoft Authenticatorใช่ใช่ใช่รองรับ RFC ครบถ้วน
Authyไม่, , ตัดออก HOTP ในเวอร์ชันล่าสุด เฉพาะ TOTP
Duo Mobileไม่, , ใช้ push flow ของตัวเอง เฉพาะ TOTP fallback
OATH hardware tokens (Feitian, Token2 ฯลฯ)ใช่แตกต่างกันแตกต่างกันตลาด hardware HOTP มาตรฐาน เสมอ 6 หลัก SHA1 เว้นแต่ datasheet จะระบุไว้

ดูเพิ่มเติม

ตรวจสอบอ้างอิงข้อกำหนด 2026-04-19. RFC 4226 (2005), Google Key URI Format.