Google Authenticator er et alternativ til SMS for 2Step-verifisering, og installerer en app på Android der kodene sendes.

Det fungerer uten tilkobling; det fungerer til og med i flymodus. Dette får jeg ikke. Hvordan er det mulig at det fungerer uten tilkobling? Hvordan synkroniserer mobiltelefonen og serveren for å vite hvilken kode som er gyldig akkurat nå?

Kommentarer

  • Kodene sendes ikke " ". De lages via en frø og teller .

Svar

Google Authenticator støtter både HOTP og TOTP -algoritmer for å generere engangspassord.

Med HOTP deler server og klient en hemmelig verdi og en teller, som brukes til å beregne et engangspassord uavhengig av begge sider. Når et passord genereres og brukes, økes telleren på begge sider, slik at serveren og klienten kan forbli synkronisert.

TOTP bruker i hovedsak den samme algoritmen som HOTP med en stor forskjell. Telleren som brukes i TOTP erstattes av gjeldende tid. Klienten og s erver forblir synkronisert så lenge systemtidene er de samme. Dette kan gjøres ved å bruke Network Time protocol .

Den hemmelige nøkkelen (så vel som telleren i tilfelle HOTP) har å bli kommunisert til både serveren og klienten på et tidspunkt. Når det gjelder Google Authenticator, gjøres dette i form av en QRCode-kodet URI. Se: KeyUriFormat for mer informasjon.

Kommentarer

  • I tilfelle HOTP, hvordan vet Google Authenticator at jeg har " brukt " passordet uten å synkronisere med serveren? Hva Google Authenticator gjør er at den fortsetter å blinke forskjellige taster, og jeg kan bare bruke hvilken som helst dem uten å gi tilbakemelding til mobilen min.
  • @MarioAwad Svaret på det finnes på HOTP RFC, avsnitt 7.4 . ietf.org/rfc/rfc4226.txt
  • Takk for det veldefinerte svaret og oppfølgingen. Rask oppsummering av avsnitt 7.4: Resynkronisering av telleren innimellom og et blikk fremover for telleren er det som får ting til å fungere uten å kreve øyeblikkelig synkronisering.
  • Som @TerryChia påpekte, den hemmelige nøkkelen er i QR-koden. Vær oppmerksom på følsomheten til QRCode / Informasjon. Jeg skrev et blogginnlegg for en stund siden netknights.it/en/the-problem-with-the-google-authenticator

Svar

Arbeider:

Authenticator implementerer TOTP-algoritmen (Time-Based One-Time Password (TOTP)). Den har følgende ingredienser:

• En delt hemmelighet (en sekvens av byte)

• En inngang avledet fra gjeldende tid

• En signeringsfunksjon

Delt hemmelighet: Den delte hemmeligheten er det du trenger for å få tak i for å konfigurere kontoen på telefonen . Enten tar du et bilde av en QR-kode ved hjelp av telefonen, eller så kan du legge inn hemmeligheten manuelt.

Inngang (nåværende tid): Inngangstidsverdien du bare får fra telefonen din, det kreves ikke videre interaksjon med serveren når du har fått hemmeligheten. Det er imidlertid viktig at telefonens tid er nøyaktig siden serveren vil i hovedsak gjenta hva som skjer på telefonen din ved hjelp av gjeldende tid som serveren kjenner til.

Signeringsfunksjon: Signeringsfunksjonen som brukes er HMAC-SHA1. HMAC står for Hash-basert meldingsautentiseringskode, og det er en algoritme som bruker en sikker enveis hash-funksjon (SHA1 i dette tilfellet) for å signere en verdi. Ved å bruke en HMAC kan vi verifisere ektheten – bare personer som vet hemmeligheten kan generere den samme utgangen for den samme inngangen (nåværende tid).

OTP-algoritme :

Pseudokode:

original_secret = xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx secret = BASE32_DECODE(TO_UPPERCASE(REMOVE_SPACES(original_secret))) input = CURRENT_UNIX_TIME() / 30 // sets a constant value for 30 seconds hmac = SHA1(secret + SHA1(secret + input)) //apply hashing offset = hmac[len(hmac)-1] & 0x0F //Last nibble four_bytes = hmac[offset : offset+4] //takes a subset of 4 bytes from 20 bytes large_integer = INT(four_bytes) //Covert four bytes to integer small_integer = large_integer % 1,000,00 //gives 6 digit code 

skriv inn bildebeskrivelse her

Referanse: https://garbagecollected.org/2014/09/14/how-google-authenticator-works/

Sjekk også dette github-prosjektet for GO-implementering: https://github.com/robbiev/two-factor-auth/blob/master/main.go

Kommentarer

  • Støtter ikke ' t google authenticator også støtter HOTP?

Svar

Det vil fungere på et frø basert på tid så det ligner på måten RSA nøkkelbrikker fungerer. dvs. de trenger heller ikke tilkobling.

Jeg har bare sett meg rundt og dette blir besvart her: https://stackoverflow.com/questions/8340495/how-rsa-tokens-works

Svar

Hvis en strace er sshd demon, man kan se hvordan serveren «vet» om den hemmelige nøkkelen, da den leser brukerens konfigurasjonsfil:

#strace -f -v -e open /usr/sbin/sshd -p 2222 -dddd -f /etc/ssh/sshd_config 2>&1 | grep -i goog > > [pid 2105] open("/home/myuser/.google_authenticator", O_RDONLY) = 4 > > [pid 2105] open("/home/myuser/.google_authenticator~", > > O_WRONLY|O_CREAT|O_EXCL|O_TRUNC|O_NOFOLLOW, 0400debug3: > > mm_sshpam_respond: pam_respond returned 1 [preauth] 

Mobiltelefonen vet det allerede; du skannet det via QR eller skrev det inn.

Kommentarer

  • Dette er et godt eksempel på hvordan du kan demonstrere at tokens er blir ikke sendt til serveren, men forklarer ikke ' hvordan det fungerer (Hvilket er det OP spurte)
  • Det ' t per se, men det adresserer mangelen på tilkobling.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *