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.