A Google Hitelesítő az SMS alternatívája a kétlépcsős azonosításhoz, telepítve egy alkalmazást az Android rendszerre, ahova a kódokat elküldik.

Működik minden kapcsolat nélkül; még repülő üzemmódban is működik. Ezt nem értem. Hogyan lehetséges, hogy kapcsolat nélkül működik? Hogyan szinkronizálja a mobiltelefon és a szerver, hogy megtudja, melyik kód érvényes abban a pillanatban?

Megjegyzések

  • A kódok nincsenek " elküldve ". Magonként és számlálón keresztül készülnek. .

Válasz

A Google Hitelesítő támogatja mind a HOTP és TOTP algoritmusok egyszeri jelszavak előállításához.

A HOTP használatával a kiszolgáló és az ügyfél titkos értéket és egy számláló, amelyek mindkét oldalon egymástól függetlenül kiszámítják az egyszeri jelszót. Amikor jelszót generálnak és használnak, a számláló mindkét oldalon növekszik, így a szerver és az ügyfél szinkronban maradhat.

TOTP lényegében ugyanazt az algoritmust használja, mint a HOTP, egy fő különbséggel. A TOTP-ben használt számlálót az aktuális idő váltja fel. Az erver mindaddig szinkronban marad, amíg a rendszeridő változatlan marad. Ez a hálózati idő protokoll használatával érhető el.

A titkos kulcs (valamint a számláló a HOTP esetén) hogy a szerverrel és az ügyféllel egy bizonyos időpontban kommunikálni kell. A Google Authenticator esetében ez QRCode kódolású URI formájában történik. További információ: KeyUriFormat .

Megjegyzések

  • HOTP, honnan tudja a Google Authenticator, hogy " használtam a " jelszót a szerverrel való szinkronizálás nélkül? A Google Authenticator az, hogy továbbra is különböző gombokat villog, és bármelyiket használhatom, anélkül, hogy visszajelzést adnék a mobilomra.
  • @MarioAwad Erre a válasz megtalálható a HOTP RFC 7.4 szakaszában. . ietf.org/rfc/rfc4226.txt
  • köszönöm a jól definiált választ és a követést. Gyors összefoglalás a 7.4 szakaszból: A számláló időnként újraszinkronizálása és a számláló előretekintő ablaka az, ami a dolgokat azonnali szinkronizálás nélkül működtetheti.
  • Amint a @TerryChia rámutatott, a titkos kulcs a QR-kódban található. Legyen tisztában a QRCode / Information érzékenységével. Írtam egy blogbejegyzést egy ideje ezelőtt netknights.it/en/the-problem-with-the-google-authenticator

Válasz

Működik:

A Hitelesítő végrehajtja az időalapú egyszeri jelszó (TOTP) algoritmust. A következő összetevőket tartalmazza:

• Megosztott titok (bájtsorozat)

• Az aktuális időből levezetett bemenet

• Aláíró függvény

Megosztott titok: A megosztott titok az, amit meg kell szereznie a fiók telefonon történő beállításához . Vagy fényképet készít a QR-kódról a telefonjával, vagy manuálisan beírhatja a titkot.

Bevitel (aktuális idő): Az a beviteli időérték, amelyet egyszerűen a telefonjáról szerez be, a titok megszerzése után nincs szükség további együttműködésre a szerverrel. Fontos azonban, hogy a telefon ideje pontos legyen, mint a szerver lényegében megismétli, mi történik a telefonján, a szerver által ismert aktuális idő felhasználásával.

Aláírási funkció: A használt aláíró függvény a HMAC-SHA1. A HMAC a Hash alapú üzenet hitelesítési kódot jelenti, és ez egy olyan algoritmus, amely egy biztonságos egyirányú hash függvényt (ebben az esetben SHA1) használ az érték aláírásához. A HMAC használata lehetővé teszi számunkra a hitelesség ellenőrzését – csak a titkot ismerő emberek generálhatnak ugyanazt a kimenetet ugyanarra a bemenetre (az aktuális időre).

OTP algoritmus :

Álkód:

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 

írja ide a kép leírását

Hivatkozás: https://garbagecollected.org/2014/09/14/how-google-authenticator-works/

Ezt a github projektet is ellenőrizze a GO megvalósításához: https://github.com/robbiev/two-factor-auth/blob/master/main.go

Megjegyzések

  • Nem ' nem támogatja-e a google hitelesítő a HOTP-t is?

Válasz

Ez egy magon az idő alapján fog működni, így hasonló ahhoz, ahogyan a Az RSA kulcstartók működnek. azaz nem is igényelnek semmilyen kapcsolatot.

Éppen körülnéztem, és erre itt válaszolok: https://stackoverflow.com/questions/8340495/how-rsa-tokens-works

Válasz

Ha egy strace s a sshd démon, láthatja, hogy a szerver hogyan tud “tudni” a titkos kulcsról, amikor elolvassa a felhasználók konfigurációs fájlját: már tudja; beolvasta QR-n keresztül, vagy beírta. nem a szerverre küldve, de nem ' nem magyarázza el, hogyan működik (amit az OP kért)

  • Nem ' t önmagában, de megoldja a kapcsolat hiányát.
  • Vélemény, hozzászólás?

    Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük