
Google Authenticator – programowytokenuwierzytelniania dwuskładnikowego, stworzony przezGoogle. Aplikacja generuje sześć cyfr, które należy podać podczas logowania razem z loginem i hasłem do usług Google.
Można stworzyć również listę „papierowych” haseł jednorazowych (tym razem jest to kilka zestawów ośmiocyfrowych), które można użyć awaryjnie w przypadku braku dostępu do telefonu (aplikacji). Hasła te należy zapisać lub wydrukować i przechowywać w bezpiecznym, ale dostępnym miejscu, np. portfelu. W każdej chwili listę tych haseł można odwołać i wygenerować nowy zestaw.
Google Authenticator można wykorzystać do logowania do systemu w połączeniu z modułem PAM iOpenSSH.
Google stworzyło wersje dlaiOS[1],BlackBerry,Android[2] i modułPAM[3]. Istnieją implementacje stworzone przez inne osoby na następujące platformy:
Serwer tworzy 80-bitowy tajny klucz dla każdego użytkownika w postaci ciągu 16 znakówBase32 oraz jakoKod QR. Klient tworzy skrótHMAC-SHA1 używając do tego celu tajnego klucza oraz wiadomości, która jest liczbą 30-sekundowych okresów, które upłynęły odczasu uniksowego. CzęśćHMAC jest wyodrębniana i konwertowana na sześciocyfrowy kod.
functionGoogleAuthenticatorCode(string secret) key := base32decode(secret) message := current Unix time ÷ 30 hash :=HMAC-SHA1(key, message) offset := last nybble of hash truncatedHash := hash[offset..offset+3]//4 bajty zaczynające się od ofsetu Set the first bit of truncatedHash to zero//usuń najbardziej znaczący bit code := truncatedHashmod 1000000pad code with 0 until length of code is 6return code
Google Authenticator używa algorytmu dlahaseł jednorazowych bazujących na czasie zgodnie z RFC 6238.