Google Authenticator (укр. Ґуґл-автентифікатор) — додаток для двохетапної аутентифікації за допомогою Time-based One-time Password Algorithm (TOTP) і HMAC-based One-time Password Algorithm (HOTP) від Google. Сервіс реалізує алгоритми зазначені в RFC 6238 і RFC 4226.[2]

Google Authenticator
Тип автентифікаторd
Розробник Google
Ліцензія пропрієтарна ліцензія[d][1]

Автентифікатор представляє 6-ти або 8-мизначний одноразовий цифровий пароль, який користувач повинен надати в додаток до імені користувача і пароля, щоб увійти в Google або інших сервісів. Автентифікатор також може генерувати коди для сторонніх додатків, такі як менеджери паролів або послуг хостингу файлів. Попередні версії програми були доступні з відкритим вихідним кодом на GitHub, але останні випуски є приватною власністю Google.[3]

Приклад використання ред.

Як правило, користувачі повинні спочатку встановити програму на свій мобільний пристрій. Для того, щоб увійти на сайт або скористатися послугами сервісу, потрібно ввести ім'я користувача та пароль, запустити додаток Authenticator і ввести в спеціальне поле згенерований одноразовий пароль.

Для цього, сайт надає загальний секретний ключ користувачеві, який повинен бути збережений у додаток Google Authenticator. Цей таємний ключ буде використовуватися для всіх майбутніх входів на сайт.

З двох етапною аутентифікацією, просте знання логіна/пароля не є достатнім для злому облікового запису. Зловмисник також повинен знати секретний ключ або мати фізичний доступ до вашого пристрою з Google Authenticator. Альтернативним шляхом є MITM-атака: якщо комп'ютер заражений трояном, ім'я користувача, пароль і одноразовий код можуть бути перехоплені, щоб потім ініціювати свій власний сеанс входу на сайті або відслідковувати та змінювати інформацію між вами та сайтом.

Реалізації ред.

Google Authenticator реалізований для наступних операційних систем: Android,[4] BlackBerryiOS[5], J2ME.

Технічний опис ред.

Постачальник послуг генерує 80-бітний секретний ключ для кожного користувача (хоча RFC 4226 §4 вимагає мінімум 128 біт і рекомендує 160 біт).[6] Це забезпечується як 16, 26, 32 значний код в кодуванні Base32 або за допомогою QR-коду. Клієнт створює HMAC-SHA1 використовуючи цей секретний ключ. Повідомлення HMAC може бути:

  • числовим з 30 секундним періодом (TOTP)
  • лічильником, який збільшується з кожним новим кодом (HOTP).

Потім частина HMAC витягується і перетворюється в 6-значний код.

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

  function GoogleAuthenticatorCode(string secret)
      key := base32decode(secret)
      message := floor(current Unix time / 30)
      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

Псевдокод для 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

Примітки ред.

  1. https://gitlab.com/fdroid/fdroiddata/commit/978d5782d61c29a809f25a5fc0b67345c17b2827
  2. GitHub - google/google-authenticator: Open source version of Google Authenticator (except the Android app). GitHub (EN) . Google. Архів оригіналу за 26 січня 2021. Процитовано 24 серпня 2016. 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.
  3. Willis, Nathan (22 January 2014)."
  4. https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2 [Архівовано 2 лютого 2021 у Wayback Machine.] A
  5. Google Authenticator. App Store. Архів оригіналу за 22 грудня 2015. Процитовано 24 серпня 2016.
  6. https://tools.ietf.org/html/c#section-4[недоступне посилання з лютого 2019]