Вопрос или проблема
При использовании MS Authenticator с учетной записью Microsoft пользователь вводит адрес электронной почты или имя пользователя. Затем пользователь нажимает одну из трех цифр в приложении MS Authenticator или вводит две цифры, которые отображаются, и авторизуется. Все отлично.
Мой вопрос: как это работает под капотом?
Я могу найти много информации о хешах, 2FA, приложениях-аутентификаторах TOTP. Но ничего о теории, стоящей за MS Authenticator. Есть ли у приложения закрытый ключ или что-то подобное, и оно только подписывает сертификат, если нажата правильная цифра? Или цифра на экране хешируется и с солью отправляется на сервер для аутентификации? Это две возможности, которые мне пришли в голову.
Если вы имеете в виду это: https://learn.microsoft.com/en-us/azure/active-directory/authentication/how-to-mfa-number-match
То, что вы видите, это просто обычный процесс TOTP. Приложение упрощает весь процесс до нажатия одной из трех кнопок или ввода двух цифр. Путем предоставления пользователю цифр для подтверждения сайт делает две полезные вещи:
- он облегчает задачу пользователя и сокращает ее
- вы получаете небольшую степень уверенности в том, что сайт, к которому вы обращаетесь, – это тот сайт, который знает ваш TOTP-секрет
Этот процесс помогает, хоть и в небольшой степени, гарантировать, что вы не стали жертвой атак MITM, обеспечивая ту же удобство Push-MFA, избегая атак “MFA усталости”.
Реализация довольно грубовата, но она помогает бороться с проблемами, с которыми недавно столкнулся MFA.
MS Authenticator предоставляет 2 режима аутентификации:
1. На основе уведомлений
Приложение, использующее MFA (например, MS Office 365), сначала запрашивает у пользователя пароль. Если пароль правильный, на следующем шаге приложение отправляет уведомление на смартфон, и пользователя просят подтвердить запрос на вход.
2. Совпадение цифр
Когда экземпляр MS Authenticator необходимо связать с какой-либо учетной записью, система аутентификации генерирует секретный инициализационный код. Пользователь вводит этот код в MS Authenticator с помощью клавиатуры или QR-кода. Когда нужна аутентификация, MS Authenticator берет инициализационный код и текущее время и генерирует случайное число, TOTP. Пользователь вводит это число в диалоговом окне подтверждения входа. Служба аутентификации генерирует TOTP, используя тот же инициализационный код. Если ввод пользователя соответствует этому TOTP, аутентификация успешна.
TOTP выглядит случайным. Но алгоритм детерминированный, он основан на SHA. Если использовать один и тот же инициализационный код на нескольких устройствах, все они сгенерируют один и тот же TOTP в одно и то же время.
Алгоритм разработан таким образом, что даже знание нескольких сгенерированных TOTP не позволяет восстановить инициализационный код и сгенерировать правильный TOTP.
Для TOTP не требуется связь с сервером. MS Authenticator рассчитывает счетчик на основе текущего времени. В течение 30-секундного интервала счетчик остается тем же. Таким образом, на самом деле счетчик используется для генерации TOTP. Время на сервере и на смартфоне должно быть близким друг к другу. Небольшие отклонения допустимы. Сервер рассчитывает счетчик для текущего момента времени и нескольких прошлых и будущих значений. Например, разница в 5 секунд приведет либо к тому же значению счетчика, либо к счетчику-1, либо к счетчику+1. Если отклонение находится в допустимом диапазоне, это будет принято.
Ответ или решение
Как работает функция "Сопоставление номеров" в Microsoft Authenticator
Microsoft Authenticator использует два основных режима аутентификации:
- Уведомления
- Сопоставление номеров
1. Уведомления
В этом режиме, когда пользователь вводит правильный пароль для доступа к службе (например, Office 365), система отправляет уведомление на смартфон пользователя. Пользователь должен подтвердить попытку входа, что обеспечивает дополнительный уровень безопасности.
2. Сопоставление номеров
Когда Microsoft Authenticator связывается с аккаунтом, аутентификационная система генерирует секретный инициализационный код, который пользователь вводит в приложение. Этот код может быть введен вручную или сканирован с помощью QR-кода. Когда возникает необходимость в аутентификации, Authenticator берет инициализационный код и текущее время, чтобы сгенерировать одноразовый пароль (TOTP – Time-based One-Time Password).
Генерация TOTP
Алгоритм TOTP основан на SHA и работает следующим образом:
- Authenticator генерирует TOTP на основе инициализационного кода и текущего времени. Пользователь вводит этот TOTP в диалоговом окне подтверждения входа.
- Сервер также использует тот же инициализационный код и текущее время для генерации TOTP. Если введенный пользователем код совпадает с TOTP, сгенерированным сервером, аутентификация считается успешной.
Безопасность TOTP
Одной из ключевых особенностей TOTP является то, что даже если злоумышленник получит доступ к нескольким сгенерированным TOTP, он не сможет восстановить инициализационный код. Это достигается благодаря тому, что алгоритм генерирует одноразовые пароли на основе текущего времени, и процесс является детерминированным.
Сервер и устройство пользователя должны быть синхронизированы по времени. Обычно допустимо небольшое отклонение, чтобы учесть возможные задержки связи или несоответствие времени. Сервер может высчитать TOTP не только для текущего времени, но и для нескольких предыдущих и будущих значений, чтобы обеспечить успешную аутентификацию даже в случае легкого расхождения времени (например, в пределах 30 секунд).
Особенности "Сопоставления номеров"
В отличие от простого ввода TOTP, функция "Сопоставление номеров" позволяет дополнительно подтвердить, что запрашивающий доступ сайт действительно знает секретный инициализационный код. Пользователь видит три случайных числа на экране и должен выбрать одно из них или ввести две цифры, обеспечивая дополнительный уровень уверенности в том, что он не стал жертвой атаки "человек посередине" (MITM).
Заключение
Таким образом, функция "Сопоставление номеров" в Microsoft Authenticator не только упрощает процесс аутентификации, но и улучшает защиту от новых угроз, таких как "усталость от MFA". Используя как TOTP, так и радужные номера, Microsoft достигает высокой степени безопасности и удобства.