HOTP
HOTP (HMAC-based One-Time Password, RFC 4226) er den tellerbaserte søskenen til TOTP. Der TOTP skrider frem på et ur, skrider HOTP frem på en delt teller som token og server øker med hver brukt kode.
URI scheme:Google Authenticator Key URI Format, the
otpauth:// scheme every authenticator agrees on. Sibling spec:TOTP (RFC 6238), time-based variant that builds on HOTP.
Hva det er
En HOTP-registrerings-QR er en URL i otpauth://-skjemaet med hotp som type. Den bærer den delte HMAC-hemmeligheten pluss en teller-verdi som begge sider må holde synkronisert. Format:
otpauth://hotp/LABEL?secret=SECRET&issuer=ISSUER&counter=N&digits=N&algorithm=ALG- LABEL,
Issuer:Account, URL-kodet. Eksempel:YubiKey:alice@example.com. - secret, den delte HMAC-nøkkelen, Base32-kodet (RFC 4648 §6: A-Z, 2-7).
- counter, startverdi for teller. Vanligvis
0, men kan gjenopptas fra en kjent verdi ved gjenregistrering av et token. - issuer, tjenestenavnet vist i autentiseringsappen.
- digits,
6(standard) eller8. RFC 4226 §5.3 spesifiserer 6; 8 er en vanlig utvidelse. - algorithm,
SHA1i praksis. RFC 4226 definerer kun SHA1; SHA256/512-varianter er RFC 6238-utvidelser.
HOTP vs TOTP, når brukes hvilken
| Egenskap | HOTP (RFC 4226) | TOTP (RFC 6238) |
|---|---|---|
| Skrider frem på | Teller (hver vellykket bruk) | Ur (hvert 30. s) |
| Krever ursynkronisering | Nei | Ja, innen ~30 s drift |
| Resync ved drift | Server godtar neste N tellerverdier | Server godtar ±1 vindu |
| Typisk utrulling | YubiKey, eldre hardware-tokens, frakoblet bankvirksomhet | All forbruker-2FA, Google, Microsoft, 1Password, Authy |
| Tellerjenbruk | Katastrofalt, lekker hemmelighet over tid | Ikke aktuelt |
| Sårbarhet ved hemmelighetslekk | Alle fremtidige koder forutsigelige | Alle tidligere + fremtidige koder forutsigelige |
Kanoniske testvektorer
RFC 4226 Vedlegg D gir referanse-HOTP-verdier for hemmeligheten 12345678901234567890 (20 byte, Base32 GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ) med 6-sifret utdata:
| Counter | HOTP (6-digit) |
|---|---|
0 | 755224 |
1 | 287082 |
2 | 359152 |
3 | 969429 |
4 | 338314 |
5 | 254676 |
6 | 287922 |
7 | 162583 |
8 | 399871 |
9 | 520489 |
Minimal QR-nyttelast for registrering ved teller 0:
otpauth://hotp/Example:test?secret=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ&issuer=Example&counter=0Live Base32 hemmelighetvalidator
Samme validator som TOTP-siden, HOTP-hemmeligheter bruker det identiske Base32-alfabetet (RFC 4648 §6: A-Z, 2-7). Kjører i nettleseren din, ingen serverrundtur.
Vanlige fallgruver
- Tellerdrift. Hvis brukeren trykker på tokenknappen, men serveren ikke registrerer koden, løper token-telleren foran server-telleren. Servere håndterer dette med et 'resync-vindu'.
- Tellerjenbruk er katastrofalt. Aksepter aldri den samme tellerverdien to ganger. RFC 4226 §7.3 pålegger serveren å avvise enhver kode på eller under den sist aksepterte telleren.
- Tellereksport under sikkerhetskopiering. Autentiseringsapper som eksporterer HOTP-oppføringer, eksporterer noen ganger hemmeligheten men ikke den gjeldende telleren. Import til en ny enhet starter telleren på nytt fra 0.
- Base32, ikke Base64. Samme regel som TOTP: hemmeligheter med
0,1,8,9, små bokstaver,+eller/er Base64 og vil avvises av enhver RFC-kompatibel autentisering. - Bare SHA1, i praksis. RFC 4226 definerer SHA1 som HMAC-funksjonen. SHA256/SHA512 er RFC 6238 TOTP-utvidelser; de fleste HOTP hardware-tokens implementerer dem ikke.
- Siffer-parameteren ignoreres ofte. Mange hardware-tokens er låst til 6 sifre og avkorter stille ved forespørsel om 8. Kontroller mot målhardvaren før QR-kort skrives ut.
- Bland ikke HOTP og TOTP i samme QR. URI-skjemaet bruker
TYPE(hotpvstotp)-segmentet til å bytte moduser. En enkelt hemmelighet kan drive begge, men begge flytene deler hemmeligheten.
Autentiseringskompatibilitet
| App / Token | HOTP | SHA256/512 | 8-sifret | Notater |
|---|---|---|---|---|
| YubiKey Authenticator (iOS/Android/desktop) | Yes | Yes | Yes | HOTP er den kanoniske YubiKey OATH-modusen. Full RFC 4226-støtte. |
| Google Authenticator | Yes | Ignorert (kun SHA1) | Ignorert (kun 6) | De facto-grunnlinje. Trygt for HOTP men bare med 6-sifret SHA1. |
| 1Password | Yes | Yes | Yes | Full RFC-støtte. Teller lagres og eksporteres med oppføringen. |
| Bitwarden | Yes | Yes | Yes | Full RFC-støtte. |
| Microsoft Authenticator | Yes | Yes | Yes | Full RFC-støtte. |
| Authy | No | , | , | Fjernt HOTP i nyere versjoner. Kun TOTP. |
| Duo Mobile | No | , | , | Bruker sin egen push-flyt; kun TOTP som reserve. |
| OATH hardware tokens (Feitian, Token2, etc.) | Yes | Varies | Varies | Kanonisk hardware-HOTP-marked; alltid 6-sifret SHA1 med mindre databladet sier noe annet. |
Se også
- /hotp-qr-code/, HOTP-generatoren med live teller + Base32-validering.
- /standards/totp/, den tidsbaserte søskenen (RFC 6238).
- /totp-2fa-qr-code/, TOTP-generatoren.
- /standards/, tilbake til standardindeksen.