TOTP-generator

Resultat

Varje gång Google Authenticator eller Authy visar en sexsiffrig kod som byts var 30:e sekund är det TOTP: en HMAC av en delad hemlighet och den aktuella Unix-tiden, standardiserad i RFC 6238. Den här generatorn räknar fram samma koder från valfri Base32-hemlighet, vilket är praktiskt när du felsöker en ny integration av tvåfaktorsautentisering (2FA), tar reda på varför en tjänst avvisar dina koder eller vill se hur algoritmen reagerar på olika parametrar. Använd den med testhemligheter: koden beräknas på vår server, så de riktiga hemligheter som skyddar dina konton hör hemma i en autentiseringsapp, inte på en webbsida.

Så fungerar den här TOTP-generatorn

  1. 1

    Klistra in en Base32-hemlighet

    Bokstäverna A-Z och siffrorna 2-7, formatet som otpauth://-QR-koder använder. Mellanslag och gemener går bra; allt annat rapporteras som ogiltig Base32.

  2. 2

    Välj hash-algoritm

    SHA-1 används av nästan alla tjänster; byt till SHA-256 eller SHA-512 bara när tjänsten uttryckligen kräver det.

  3. 3

    Ställ in siffror och period

    Välj 6, 7 eller 8 siffror och ett fönster på 30 eller 60 sekunder. Standardkombinationen är 6 siffror var 30:e sekund.

  4. 4

    Läs av den aktuella koden

    Koden uppdateras varje sekund och nedräkningen visar hur många sekunder det aktuella fönstret har kvar.

  5. 5

    Jämför otpauth-URI:n

    Verktyget visar otpauth://-URI:n för dina parametrar, så att du kan stämma av den mot vad en tjänsts konfigurations-QR kodar.

Algoritmen på vanlig svenska

TOTP är HOTP (HMAC-baserat engångslösenord, RFC 4226) där räknaren ersatts av den aktuella Unix-tiden delad med tidssteget (oftast 30 sekunder):

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

Din enhet och servern gör samma matematik på samma hemlighet och samma klocka, så de landar på samma kod utan att koden någonsin skickas någonstans. En 6-siffrig kod är helt enkelt den trunkerade HMAC:en modulo 10^6. Ingen magi, bara hashning.

Vanliga parametrar

Tjänst Algoritm Siffror Period
De flesta webbplatser och appar SHA-1 6 30 s
GitHub SHA-1 6 30 s
Cloudflare SHA-1 6 30 s
Microsoft-konton SHA-1 6 30 s
Vissa banker och företags-VPN SHA-256 eller SHA-512 8 60 s

Om en tjänst avvisar dina koder, kontrollera först antalet siffror och perioden, därefter algoritmen. Tänk också på att vissa autentiseringsappar tyst ignorerar parametrar som inte är standard (Google Authenticator behandlade historiskt allt som SHA-1, 6 siffror, 30 sekunder), så testa alltid med exakt den app dina användare kommer att använda.

Förvara hemligheter säkert

  • Mejla eller meddela aldrig en 2FA-hemlighet. Så fort den ligger i en inkorg finns den kvar i leverantörens loggar och säkerhetskopior på obestämd tid.
  • Registrera genom att skanna QR-koden. QR-koden innehåller en otpauth://totp/...-URI som samlar hemlighet, algoritm, siffror och period i ett entydigt paket.
  • Säkerhetskopiera vid registreringen. Spara återställningskoderna, eller själva hemligheten, i en lösenordshanterare; utan dem blir du utelåst om telefonen försvinner.
  • En hemlighet per tjänst. Varje tjänst utfärdar sin egen hemlighet vid konfigurationen; läcker någon, registrera om 2FA där så att den gamla slutar fungera.

Tidsdrift

TOTP fungerar bara så länge båda klockorna stämmer överens. Den här sidan beräknar koderna med serverns klocka, så om koden här skiljer sig från din autentiseringsapp är enhetens klocka den första misstänkta. De flesta validerare accepterar ett fönsters avvikelse åt varje håll (30 till 60 sekunder); bortom det, synka enhetens klocka via NTP innan du skyller på hemligheten.

Använd testhemligheter här

Det här verktyget beräknar koden på vår server: hemligheten du skriver in skickas över HTTPS vid varje uppdatering och syns dessutom i sidans URL om du går mellan verktygets steg. Det är helt okej för utveckling, demonstrationer och felsökning med engångshemligheter. Det är däremot fel plats för den riktiga hemlighet som skyddar din e-post eller ditt bankkonto; den hör hemma i en dedikerad autentiseringsapp i telefonen. Har du redan klistrat in en riktig hemlighet utanför din autentiseringsapp, registrera om 2FA hos den tjänsten så att hemligheten byts ut.

Vanliga frågor

Betrakta sidan som ett utvecklar- och testverktyg, inte som ett kassaskåp. Koden beräknas på serversidan, så hemligheten färdas till vår server över HTTPS och kan synas i sidans URL mellan stegen. Använd demo- och utvecklingshemligheter fritt; klistra aldrig in den riktiga hemligheten för ett konto du bryr dig om. Har du redan gjort det, registrera om 2FA hos tjänsten för att byta ut hemligheten.

Kontrollera parametrarna först: algoritm, antal siffror och period måste exakt motsvara vad tjänsten utfärdade. Kontrollera sedan klockorna: den här sidan använder serverns klocka, så en avvikelse pekar oftast på den andra enheten. Kom till sist ihåg att vissa appar ignorerar parametrar utanför standarden, med Google Authenticator som klassiskt exempel.

Endast Base32: bokstäverna A till Z och siffrorna 2 till 7, med valfri =-utfyllnad. Mellanslag tas bort och gemener omvandlas automatiskt. Hemligheter i hex eller råa byte måste först konverteras till Base32, annars rapporterar verktyget en ogiltig Base32-hemlighet.

Då är du utelåst från det kontots 2FA. Använd tjänstens återställningsflöde (återställningskoder, identitetsverifiering, SMS som reserv). Spara alltid återställningskoderna eller den ursprungliga QR-koden på ett säkert ställe vid konfigurationen.

Ja. Generera en slumpmässig hemlighet på serversidan, minst 128 bitar (RFC 4226 rekommenderar 160), visa den en enda gång som QR-kod och validera inskickade koder genom att beräkna samma HMAC, vanligen med ett fönsters tolerans åt varje håll. Mogna bibliotek finns för varje stack: pyotp (Python), otplib (JavaScript), rotp (Ruby).

Relaterade verktyg

Verktyget finns på andra språk