Google authenticator

Пропрієтарна (минулі версії випускалися під 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 значний код.

Псевдокод для One Time Password OTP

Псевдокод для Event / Counter OTP

Схожі статті