Google Authenticator

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
Google Authenticator
Тип автентифікаторd
Розробник Google
Ліцензія пропрієтарна ліцензія[d][1]

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

Автентифікатор представляє 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]