Пропрієтарна (минулі версії випускалися під Apache License 2.0)
Authenticator представляє 6- або 8-значний одноразовий цифровий пароль, який користувач повинен надати на додаток до імені користувача та пароля, щоб увійти в служби Google або інших сервісів. Authenticator також може генерувати коди для сторонніх додатків, такі як менеджери паролів або послуг хостингу файлів. Попередні версії програми були доступні з відкритим вихідним кодом на GitHub. але останні випуски є приватною власністю Google. [3]
Як правило, користувачі повинні спочатку встановити додаток на свій мобільний пристрій. Для того, щоб увійти на сайт або скористатися послугами сервісу, потрібно ввести ім'я користувача і пароль, запустити додаток Authenticator і ввести в спеціальне поле згенерований одноразовий пароль.
Для цього сайт надає загальний секретний ключ користувача, який повинен бути збережений в додаток Google Authenticator. Цей секретний ключ буде використовуватися для всіх майбутніх входів на сайт.
З двоетапної аутентифікації просте знання логіна / пароля не є достатнім для злому облікового запису. Зловмисник також повинен знати секретний ключ або мати фізичний доступ до пристрою з Google Authenticator. Альтернативним шляхом є MITM атака: якщо комп'ютер користувача заражений трояном. то ім'я користувача, пароль і одноразовий код можуть бути перехоплені, щоб потім ініціювати свій власний сеанс входу на сайті або відстежувати і змінювати інформацію між користувачем і сайтом.
Google Authenticator надано на Android. [4] BlackBerry. і iOS [5]. Також є кілька сторонніх реалізацій:
- Windows Phone 7.5 / 8 / 8.1 / 10: Microsoft Authenticator [6] Virtual TokenFactor [7]
- Windows Mobile: Google Authenticator for Windows Mobile [8]
- Java CLI: Authenticator.jar [9]
- Java GUI: JAuth [10] FXAuth [11]
- J2ME: gauthj2me [12] lwuitgauthj2me [13] Mobile-OTP (Chinese only) [14] totp-me [15]
- Palm OS: gauthj2me [16]
- Python: onetimepass [17]
- PHP: GoogleAuthenticator.php [18]
- Ruby: rotp, [19] twofu [20]
- Rails: active_model_otp [21] (third party implementation)
- webOS: GAuth [22]
- Windows: gauth4win [23] MOS Authenticator [24] WinAuth [25]
- .NET: TwoStepsAuthenticator [26]
- HTML5: html5-google-authenticator [27]
- MeeGo / Harmattan (Nokia N9): GAuth [28]
- Sailfish OS: SGAuth, [29] SailOTP [30]
- Apache: Google Authenticator Apache Module [31]
- PAM: Google Pluggable Authentication Module [32] oauth-pam [33]
- Backend: LinOTP (Management Backend implemented in python)
- Chrome / Chrome OS: Authenticator [34]
- iOS: OTP Auth [35]
Постачальник послуг генерує 80-бітний секретний ключ для кожного користувача (хоча RFC 4226 §4 вимагає мінімум 128 біт і рекомендує 160 біт). [36] Це забезпечується як 16, 26, 32 значний код в кодуванні Base32 або за допомогою QR коду. Клієнт створює HMAC -SHA1 використовуючи цей секретний ключ. Повідомлення HMAC може бути:
- числовим з 30 секундним періодом (TOTP)
- лічильником, який збільшується з кожним новим кодом (HOTP).
Потім частина HMAC витягується і перетворюється в 6 значний код.