Google Authenticator
Тип | автентифікатор |
---|---|
Розробник | |
Ліцензія | пропрієтарна ліцензія[d] |
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] BlackBerry, iOS[5], J2ME.
Постачальник послуг генерує 80-бітний секретний ключ для кожного користувача (хоча RFC 4226 §4 вимагає мінімум 128 біт і рекомендує 160 біт).[6] Це забезпечується як 16, 26, 32 значний код в кодуванні Base32 або за допомогою QR-коду. Клієнт створює HMAC-SHA1 використовуючи цей секретний ключ. Повідомлення HMAC може бути:
- числовим з 30 секундним періодом (TOTP)
- лічильником, який збільшується з кожним новим кодом (HOTP).
Потім частина HMAC витягується і перетворюється в 6-значний код.
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
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
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.