Дополнительный (одноразовый) код может генерироваться специальным приложением-аутентификатором (типа Google Authenticator или Microsoft Authentificator), не требующим подключения к интернету. Приложение генерирует на основе первичного ключа (обычно в виде QR-кода) одноразовый код с ограниченным сроком действия (30–60 секунд). По истечении времени создается новый код. Если злоумышленнику и удастся перехватить один или даже несколько кодов, невозможно предугадать, какой код будет следующим.
Более универсальное и комфортное решение – разработка Authy (https://authy.com). Эта программа может не только генерировать одноразовые коды, но и умеет сохранять полученные сертификаты в облачном хранилище и позволяет копировать их на другие устройства (смартфоны, компьютеры, планшеты и даже «умные» часы). Если одно из устройств будет похищено, вы не потеряете контроль над аккаунтом. Аутентификация в приложении требует ввода ПИН-кода, а ключ, находящийся на скомпрометированном устройстве, можно отозвать[67].
К недостаткам приложений-аутентификаторов можно отнести риск того, что если злоумышленник получит доступ к первичному ключу или взломает сервер, то, зная алгоритмы вычислений, он сможет генерировать пароли самостоятельно. К тому же не всегда можно быть уверенным, что данные из такого приложения не передаются на удаленный сервер, если девайс заражен вредоносным граббером, копирующим изображение на экране (проблема решается запуском аутентификатора на устройстве без доступа к интернету). И, как и в случае с SMS-сообщениями, если для аутентификации и генерации кодов используется одно и то же устройство, защита перестает быть двухфакторной.
Кроме того, если приложение-аутентификатор недоступно, многие сервисы предлагают альтернативные варианты передачи одноразового кода: звонок автоинформатора, отправку кода с помощью SMS-сообщения или даже электронной почты. В таком случае преимущества приложения-аутентификатора теряют весь смысл. Если приложение не работает, а код отправляется в SMS-сообщении, то злоумышленник может получить доступ к телефону жертвы, к примеру, клонировав SIM-карту.
КЕЙС В 2018–2020 гг. в Казани были отмечены многочисленные случаи мошенничества: у абонентов оператора сотовой связи «Мегафон» было похищено свыше 200 000 рублей. Преступления совершались с использованием виртуальных дубликатов SIM-карт и поддельной базовой станции. Проблема заключается в уязвимостях системы безопасности оператора; кроме того, услуга «Мобильные платежи» подключается без согласия абонента[68],[69],[70].
Данный способ объединяет два предыдущих: вы не вводите одноразовый код, а подтверждаете вход с вашего мобильного устройства с установленным приложением службы, к которой вы получаете доступ. На устройстве хранится приватный ключ, который проверяется при каждом входе. Недостатки те же, что и у приложений-аутентификаторов.
Токены безопасности
Для достижения максимального уровня защиты вместо программных инструментов аутентификации применяются аппаратные – специальные магнитные карты или USB-токены (похожи на flash-накопители без возможности записи данных пользователем). В этом случае помимо пароля преступнику необходим физический доступ к токену. Внутри такого токена находится специальный процессор, генерирующий криптографические ключи. Аутентификация осуществляется автоматически при подключении токена к устройству. Существуют версии токенов как для компьютеров, так и для мобильных устройств, например YubiKey (https://thekernel.com/ru/compare-yubikeys/).
В качестве примера можно рассмотреть систему аутентификации SecurID американской компании RSA. При запросе доступа к системе (сайту или устройству) пользователь вводит свой логин и 4-цифровой ПИН-код (который он помнит), а также токен-код, генерируемый аппаратным устройством (или программным токеном-приложением) и меняющийся каждую минуту (отображается на экране устройства и содержит 6 цифр). Введенная информация в зашифрованном виде передается на сервер, где сравнивается с записями в базе данных всех пользователей. При всей кажущейся безопасности система тем не менее подвержена атакам типа MiTM (Man in the middle – «человек посередине»): злоумышленник может заблокировать для пользователя доступ и подключиться к серверу, пока не будет сгенерирован следующий токен-пароль.