Google Authenticator

Google Authenticator
Логотип программы Google Authenticator
Скриншот программы Google Authenticator
Тип аутентификатор[вд]
Разработчик Google LLC
Операционные системы Android, iOS, BlackBerry OS
Дата выпуска 20 сентября 2010[1]
Аппаратная платформа мобильная
Лицензия Проприетарная (прошлые версии выпускались под Apache License 2.0)
Логотип Викисклада Медиафайлы на Викискладе

Google Authenticator — приложение для двухэтапной аутентификации с помощью Time-based One-time Password Algorithm (TOTP) и HMAC-based One-time Password Algorithm (HOTP) от Google LLC. Сервис реализует алгоритмы, указанные в RFC 6238 и RFC 4226[2].

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 от:

  • количества 30-секундных интервалов с начала «эры UNIX» для варианта TOTP
  • счётчика, который увеличивается с каждым новым кодом для варианта HOTP.

Затем часть HMAC извлекается и преобразуется в 6-значный код.

Псевдокод для Time-based OTP

  function GoogleAuthenticatorCode(string secret) // based on RFC 4226
      key := base32decode(secret) // key: array of uint8
      message := htobe64(current Unix time / 30) // message: uint64, make it big-endian
      hash := HMAC-SHA1(key, message) // hash: array of uint8
      offset := last nibble of hash // offset := hash[hash.size() - 1] & 0x0F
      truncatedHash := (hash[offset] << 24) | (hash[offset+1] << 16) // truncatedHash: uint32 big-endian
                     | (hash[offset+2] << 8) | hash[offset+3]
      truncatedHash = truncatedHash & 0x7FFFFFFF // reset MSB
      code := truncatedHash mod 1000000
      pad code with 0 until length of code is 6
      return code // code: string

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

  function GoogleAuthenticatorCode(string secret)
      key := base32decode(secret)
      message := counter encoded on 8 bytes
      hash := HMAC-SHA1(key, message)
      offset := last nibble of hash
      truncatedHash := hash[offset..offset+3]  //4 bytes starting at the offset
      Set the first bit of truncatedHash to zero  //remove the most significant bit
      code := truncatedHash mod 1000000
      pad code with 0 until length of code is 6
      return code

Перенос аккаунтов

Пользователи могут выбрать, какие учетные записи экспортировать, а затем, после проверки с помощью ввода ПИН-кода устройства или биометрической аутентификации, отобразить QR-код, с помощью которого данные могут быть импортированы в приложение Authenticator на другом телефоне[37].

См. также

Примечания

  1. Google Is Making Your Account Vastly More Secure With Two-Step Authentication - TechCrunch. TechCrunch (20 сентября 2010). Дата обращения: 12 марта 2016. Архивировано 12 марта 2016 года.
  2. GitHub - google/google-authenticator: Open source version of Google Authenticator (except the Android app) (англ.). GitHub. Google. — «These implementations support the HMAC-Based One-time Password (HOTP) algorithm specified in RFC 4226 and the Time-based One-time Password (TOTP) algorithm specified in RFC 6238.» Дата обращения: 27 июля 2016. Архивировано 26 января 2021 года.
  3. Willis, Nathan (22 January 2014)."FreeOTP multi-factor authentication Архивная копия от 31 октября 2020 на Wayback Machine". LWN.net. Retrieved 10 August 2015.
  4. https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2 Архивная копия от 2 февраля 2021 на Wayback Machine A
  5. Google Authenticator. App Store. Дата обращения: 27 июля 2016. Архивировано 22 декабря 2015 года.
  6. Authenticator (4 апреля 2013). Дата обращения: 27 июля 2016. Архивировано 17 октября 2019 года.
  7. Virtual TokenFactor (недоступная ссылка — история) (26 февраля 2012). Дата обращения: 27 июля 2016.
  8. [APP]Google Authenticator for Windows Mobile. XDA Developers. Дата обращения: 27 июля 2016. Архивировано 19 апреля 2019 года.
  9. http://blog dot jamesdotcuff dot net. Дата обращения: 27 июля 2016. Архивировано из оригинала 1 августа 2014 года.
  10. mclamp/JAuth. GitHub. Дата обращения: 27 июля 2016. Архивировано 4 августа 2015 года.
  11. kamenitxan/FXAuth. GitHub. Дата обращения: 27 июля 2016. Архивировано 5 сентября 2020 года.
  12. gauthj2me - Google Authentification in Java Mobile, j2me - Google Project Hosting. Дата обращения: 27 июля 2016. Архивировано 6 января 2016 года.
  13. lwuitgauthj2me - Google Authenticator for J2ME phones - Google Project Hosting. Дата обращения: 27 июля 2016. Архивировано 16 марта 2016 года.
  14. chunlinyao / mobile-otp — Bitbucket. Дата обращения: 27 июля 2016. Архивировано из оригинала 15 октября 2017 года.
  15. totp-me - TOTP for Java ME - Google authenticator. Дата обращения: 27 июля 2016. Архивировано 5 января 2018 года.
  16. gauth.prc - gauthj2me - Google Authenticator for Palm OS (converted from java) - Google Authentification in Java Mobile, j2me - Google Project Hosting. Дата обращения: 27 июля 2016. Архивировано 6 января 2016 года.
  17. tadeck/onetimepass. GitHub. Дата обращения: 27 июля 2016. Архивировано 27 октября 2020 года.
  18. chregu/GoogleAuthenticator.php. GitHub. Дата обращения: 27 июля 2016. Архивировано 29 сентября 2020 года.
  19. rotp - RubyGems.org - your community gem host. Дата обращения: 27 июля 2016. Архивировано 11 июля 2019 года.
  20. ukazap/twofu. GitHub. Дата обращения: 27 июля 2016. Архивировано 12 сентября 2020 года.
  21. heapsource/active_model_otp. GitHub. Дата обращения: 27 июля 2016. Архивировано 5 декабря 2020 года.
  22. GAuth. Дата обращения: 27 июля 2016. Архивировано 20 октября 2020 года.
  23. gauth4win - Google Authenticator for windows - Google Project Hosting. Дата обращения: 27 июля 2016. Архивировано 11 января 2016 года.
  24. MOS Authenticator Home. Дата обращения: 27 июля 2016. Архивировано 17 февраля 2020 года.
  25. winauth - Windows Authenticator for Battle.net / World of Warcraft / Guild Wars 2 / Glyph / WildStar / Google / Bitcoin - Google Project Hosting. Дата обращения: 27 июля 2016. Архивировано 17 мая 2015 года.
  26. glacasa/TwoStepsAuthenticator. GitHub. Дата обращения: 27 июля 2016. Архивировано 5 декабря 2020 года.
  27. gbraad/html5-google-authenticator. GitHub. Дата обращения: 27 июля 2016. Архивировано 5 июля 2014 года.
  28. Techtransit. Nokia Store: Download GAuth and many other games, wallpaper, ringtones and mobile apps on your Nokia phone. Дата обращения: 27 июля 2016. Архивировано из оригинала 12 июля 2014 года.
  29. SGAuth. Дата обращения: 27 июля 2016. Архивировано 11 июля 2019 года.
  30. SailOTP. Дата обращения: 27 июля 2016. Архивировано 10 января 2021 года.
  31. google-authenticator-apache-module - Apache Module for Two-Factor Authentication via Google Authenticator - Google Project Hosting. Дата обращения: 27 июля 2016. Архивировано 19 ноября 2015 года.
  32. google-authenticator - Two-step verification - Google Project Hosting. Дата обращения: 27 июля 2016. Архивировано 10 февраля 2015 года.
  33. oauth-pam - PAM for use with OAuth Websites - Google Project Hosting. Дата обращения: 27 июля 2016. Архивировано 8 августа 2016 года.
  34. Authenticator. Дата обращения: 27 июля 2016. Архивировано 17 октября 2019 года.
  35. OTP Auth. App Store. Дата обращения: 27 июля 2016. Архивировано 12 апреля 2019 года.
  36. RFC 4226 — HOTP: An HMAC-Based One-Time Password Algorithm. Дата обращения: 17 января 2018. Архивировано 6 апреля 2019 года.
  37. Jason Cipriani. Transfer Your Google Authenticator Accounts Every Time You Switch Phones. CNET (31 декабря 2022). Дата обращения: 5 августа 2025.

Ссылки

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.