Zakaj veljavna enkratna koda pri prijavi v VPN vseeno spodleti
Zavrnjena koda je običajno težava z vrstnim redom pozivov, registracijo ali časom, ne napačna koda. Preverite te točke po vrsti, preden karkoli znova registrirate.
Odprete odjemalca VPN, vpišete geslo in šest števk iz overitelja se vrne kot neveljavnih — dvakrat, nato tretjič. Na računu se od včeraj ni nič spremenilo, zato je prvi impulz izbrisati vnos v overitelju in ga znova skenirati — običajno napačno popravilo. Enkratna koda ni drugo geslo: prehod mora zanjo zaprositi v določenem koraku, iz določenega registriranega vnosa, znotraj določenega okna, in večina zavrnitev se zgodi, preden se števke primerjajo. Ugotovite, v katerem koraku ste, preden se dotaknete registracije.
Vrstni red pozivov pove, v katerem toku ste
Tri oblike pokrivajo skoraj vsako prijavo v VPN s kodo. V dvostopenjski obliki odjemalec pošlje geslo, strežnik izda izziv in odjemalec znova vpraša. V združeni obliki prehod želi geslo in kodo v eni pošiljki — včasih združeni, včasih za ločilom, ki ga dokumentira le operater. V obliki brskalnika odjemalec sploh nima polja: koda gre na spletno stran, ali pa jo nadomesti potrditev s potiskom, in namizni odjemalec čaka na rezultat.
Napačna oblika je videti kot slaba koda. Prilepite svežo kodo v polje, namenjeno samo geslu, in strežnik jo bo prebral kot del gesla. Na strani odjemalca OpenVPN 2.4 in novejši naredijo razliko vidno: strežnik, ki odgovarja AUTH_FAILED,CRV1:, pričakuje odgovor na izziv, zato profil potrebuje static-challenge ali datoteko z geslom v obliki SCRV1:. Starejši profil samo z auth-user-pass potrdi geslo in se nato ustavi, kar je v dnevniku videti kot napaka OTP, čeprav ni bila poslana nobena koda.
WireGuard velja omeniti kot izjemo: overja pare ključev, ne ljudi, zato ni polja za kodo. Če ponudnik takšno oglašuje, jo sprejme nekaj zunaj tunela.
Kaj strežnik naredi s šestimi števkami
Časovne kode sledijo RFC 6238, ki ovije starejšo zgradbo s števcem iz RFC 4226: HMAC nad gibajočim dejavnikom, privzeto skrajšan na šest števk. Pri TOTP je gibajoči dejavnik trenutni čas Unix, deljen s korakom, 30 sekund, razen če ga operater ni spremenil. Preverjevalec nikoli ne primerja vaših števk s shranjeno vrednostjo; preračuna pričakovano kodo iz skupnega semena in običajno sprejme tudi sosednje korake, zato se počasen pot tja in nazaj ne konča s spodletelo prijavo.
Dve posledici ostaneta spregledani. Časovni pas telefona ni pomemben, ker seme nikoli ne vidi lokalne ure — pomembno je le odstopanje od pravega UTC, in naprava, ki hiti dve minuti, spodleti pri vsaki kodi, medtem ko prikazuje čisto odštevanje. In koda je po zasnovi enkratna: preverjevalec si zapomni zadnjo vrednost števca, ki jo je sprejel za to seme, zato se iste števke, poslane znova, zavrnejo tudi v istem oknu. Odjemalec, ki po poteku poskusi znova, lahko pokuri pravkar poslano kodo.
Žetoni s števcem premaknejo števec ob vsakem pritisku, zato se iztaknejo iz sinhronizacije, potem ko so bile kode ustvarjene, a nikoli poslane; običajno popravilo je okno za ponovno sinhronizacijo, ki sprejme nekaj vrednosti naprej. Če je operater registriral HOTP, vaša aplikacija pa prikazuje TOTP, je vsaka vrednost napačna tako, da je videti kot težava z uro. URI za zagotavljanje za kodo QR navaja vrsto, števke, obdobje in zgoščeno vrednost.
Spodletitve, ki so videti kot napačna koda
Najpogostejši krivec je registriran vnos. Aplikacije za overjanje označujejo vnose po izdajatelju in računu, zato lahko kdor ima dve identiteti na istem VPN, dobi dva vnosa, katerih oznaki se razlikujeta v enem znaku. Koda velja za seme, ki jo je ustvarilo, in za nič drugega. Primerjajte oznako na telefonu z uporabniškim imenom, ki ga strežnik zabeleži, ne s tistim, kar se spomnite, da ste vpisali.
Drugo je neustrezna množica parametrov. Seme, registrirano z osmimi števkami, obdobjem 60 sekund ali SHA-256, daje kode, ki jih preverjevalec, ki pričakuje šest števk, 30 sekund in SHA-1, zavrne, pri odjemalcu pa tega ni mogoče ločiti od napačne kode. Pojavi se po migracijah, ko je bil vnos znova dodan s fotografije kode QR ali ko je bil zapis žetona znova zgrajen s privzetimi vrednostmi.
Tretje ni o kodi. Prehodi običajno vrnejo eno splošno napako overjanja za napačno geslo, poteklo kodo in onemogočen račun, namerno, da nihče ne more ugotoviti, kateri dejavnik je spodletel. Berite dnevnik prehoda ali RADIUS namesto obvestila odjemalca: izziv, ki ni bil nikoli izdan, zavrnitev dostopa brez atributa OTP in zavrnitev po pravilniku so na zaslonu videti enako in vodijo v različne naslednje korake.
Kratko zaporedje, ki to zoži
Začnite z najcenejšim preverjanjem in se ustavite pri prvem koraku, ki ne drži.
- Počakajte na svežo kodo, pošljite jo enkrat in zapišite, ali se izziv pojavi pred ali po sprejetju gesla.
- Ujemite oznako v overitelju z uporabniškim imenom, ki ga strežnik shrani.
- Potrdite, da profil sploh lahko odgovori na izziv, kot v primeru
CRV1zgoraj. - Primerjajte uro naprave z znanim virom časa; odstopanje za več kot nekaj deset sekund samo pokvari TOTP.
- Vprašajte operaterja, ali je žeton TOTP ali HOTP, in katere števke, obdobje ter zgoščena vrednost so bile registrirane.
Dve pravili preprečujeta, da bi se to poslabšalo. Ne poskušajte znova velikokrat: veliko prehodov šteje spodletitve na račun in ga bodisi zaklene bodisi začne odlašati odgovore, zato val spremeni majhno napačno nastavitev v zahtevek za podporo. In žetona ne registrirajte znova kot diagnostiko, ker to razveljavi staro seme; če je bila resnična napaka izziv, ki ga odjemalec ni nikoli poslal, imate zdaj dve spremembi za razlago namesto ene.
Držite seme in obnovitvene kode zunaj kroga
Šest števk in skrivnost za njimi niso zamenljivi. Koda QR za zagotavljanje ali seme Base32 ustvari vsako prihodnjo kodo računa, zato spada v isto kategorijo kot geslo: ne na posnetek zaslona, ne v komentar zahtevka, ne v klepet z nekom, ki se je prvi oglasil pri vas. Obnovitvene kode so ločen mehanizem — enkratne, pogosto povsem preskočijo poziv za kodo, in če eno porabite za preizkus računa, odstranite rezervno pot, ki jo boste morda potrebovali pozneje.
Koda tudi ne naredi prijavne strani vredne zaupanja: zahteva za OTP na podobni domeni pobere veljavno kodo in jo v oknu znova predvaja, potrdilo pa je še vedno tisto, kar vam pove, kam pišete.
Če se zaporedje ustavi pri profilu, ki ne more odgovoriti na izziv, popravite profil in znova preizkusite z eno svežo kodo. Če se ustavi pri neustreznih registracijskih parametrih, prosite operaterja, naj prebere zapis žetona, preden kdo karkoli skenira. Če se ustavi pri zaklepu, počakajte, da mine, namesto da bi zamenjali odjemalce — ovira je stanje računa, ne aplikacija.