Google Authenticator on vaihtoehto tekstiviestille 2-vaiheiselle vahvistukselle ja asentaa sovelluksen Androidiin, johon koodit lähetetään.

Se toimii ilman liitettävyyttä; se toimii jopa lentokonetilassa. Tätä en saa. Kuinka on mahdollista, että se toimii ilman yhteyttä? Kuinka matkapuhelin ja palvelin synkronoituvat tietääkseen mikä koodi on voimassa juuri sillä hetkellä?

Kommentit

  • Koodeja ei lähetetä " ". Ne tehdään siemenen ja laskurin kautta .

vastaus

Google Authenticator tukee sekä HOTP ja TOTP algoritmit kertaluonteisten salasanojen luomiseen.

HOTP: n avulla palvelimella ja asiakkaalla on salainen arvo ja laskuri, jota käytetään kertakäyttösalasanan laskemiseen itsenäisesti molemmilta puolilta. Aina kun salasana luodaan ja sitä käytetään, laskuria lisätään molemmin puolin, jolloin palvelin ja asiakas voivat pysyä synkronoituna.

TOTP käyttää olennaisesti samaa algoritmia kuin HOTP yhdellä suurella erolla. TOTP: ssä käytetty laskuri korvataan nykyisellä kellonaikalla. erver pysyy synkronoituna niin kauan kuin järjestelmän ajat pysyvät ennallaan. Tämä voidaan tehdä käyttämällä verkon aikaprotokollaa .

Salainen avain (samoin kuin laskuri HOTP: n tapauksessa) on kommunikoida sekä palvelimelle että asiakkaalle jossain vaiheessa. Google Authenticatorin tapauksessa tämä tehdään QRCode-koodatun URI: n muodossa. Katso lisätietoja: KeyUriFormat .

Kommentit

  • Jos kyseessä on HOTP, mistä Google Authenticator tietää, että olen " käyttänyt salasanaa " ilman synkronointia palvelimen kanssa? Google Authenticator tekee siitä, että se vilkkuu edelleen eri näppäimillä ja voin vain käyttää mitä tahansa niistä antamatta palautetta matkapuhelimelleni.
  • @MarioAwad Vastaus tähän löytyy HOTP RFC: n osasta 7.4. . ietf.org/rfc/rfc4226.txt
  • Kiitos hyvin määritetystä vastauksesta ja seurannasta. Nopea yhteenveto osasta 7.4: Laskurin uudelleensynkronointi silloin tällöin ja laskurin ennakoiva ikkuna on se, mikä saa asiat toimimaan ilman välitöntä synkronointia.
  • Kuten @TerryChia huomautti, salainen avain on QR-koodissa. Ole tietoinen QRCode / Information-herkkyydestä. Kirjoitin blogikirjoituksen jonkin aikaa sitten netknights.it/en/the-problem-with-the-google-authenticator

vastaus

Työskentely:

Authenticator ottaa käyttöön TOTP (Time-Based One-Time Password) -algoritmin. Siinä on seuraavat ainesosat:

• Jaettu salaisuus (tavusarja)

• Nykyisestä ajasta johdettu syöte

• Allekirjoitusfunktio

Jaettu salaisuus: Jaettu salaisuus on se, mitä sinun on hankittava tilin määrittämiseksi puhelimessa . Joko otat valokuvan QR-koodista puhelimellasi tai voit kirjoittaa salaisuuden manuaalisesti.

Syöttö (nykyinen aika): Syöttöaika-arvo, jonka saat yksinkertaisesti puhelimestasi, enempää vuorovaikutusta palvelimen kanssa ei tarvita, kun olet saanut salaisuuden. On kuitenkin tärkeää, että puhelimesi aika on tarkka palvelimena toistaa olennaisesti puhelimellasi tapahtuvan ajan palvelimen tunteman ajan mukaan.

Allekirjoitusfunktio: Käytetty allekirjoitustoiminto on HMAC-SHA1. HMAC tarkoittaa Hash-pohjaista viestien todennuskoodia, ja se on algoritmi, joka käyttää turvallista yksisuuntaista tiivistefunktiota (tässä tapauksessa SHA1) arvon allekirjoittamiseen. HMAC: n avulla voimme tarkistaa aitouden – vain salaisuuden tietävät henkilöt voivat luoda saman tuloksen samalle tulolle (nykyinen aika).

OTP-algoritmi :

Pseudokoodi:

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 

kirjoita kuvan kuvaus tähän

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

Tarkista myös tämä github-projekti GO-toteutusta varten: https://github.com/robbiev/two-factor-auth/blob/master/main.go

kommentit

  • Eikö ' tue Google-todenninta myös HOTP: ta?

vastaus

Se ”toimii siemenessä ajan perusteella, joten se on samanlainen kuin RSA-avaimenperät toimivat. ts. ne eivät myöskään vaadi mitään liitettävyyttä.

Olen juuri katsonut ympärilleni ja tähän vastataan täällä: https://stackoverflow.com/questions/8340495/how-rsa-tokens-works

Vastaa

Jos joku strace s sshd daemon, voidaan nähdä, kuinka palvelin ”tietää” salaisesta avaimesta, kun se lukee käyttäjien asetustiedoston:

#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] 

Matkapuhelin skannaa sen jo; skannasit sen QR-koodilla tai kirjoitit sen sisään.

Kommentit

  • Tämä on hyvä esimerkki siitä, kuinka osoittaa, että tunnukset ovat ei lähetetä palvelimelle, mutta ' ei todellakaan selitä miten se toimii (mitä OP kysyi)
  • Se ei ' t sinänsä, mutta se korjaa yhteyden puutteen.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *