Открыть сервис

SMS-код

SMS-код — это одноразовый пароль, отправляемый пользователю в виде текстового сообщения (SMS) на мобильный телефон, используемый для подтверждения личности или авторизации действий в цифровых сервисах. Относится к методам двухфакторной аутентификации (2FA) и одноразовых паролей (OTP, One-Time Password). Представляет собой комбинацию цифр, букв или символов, генерируемую сервером и действующую в течение короткого промежутка времени (обычно от 30 секунд до 15 минут). Основная функция — обеспечение дополнительного уровня безопасности при входе в учётные записи, проведении финансовых операций, смене критических настроек или подтверждении регистрации.

История

Идея использования одноразовых паролей для аутентификации возникла в 1980-х годах. Первые реализации (например, S/KEY) основывались на хеш-цепочках и не требовали мобильной связи. С массовым распространением мобильных телефонов в конце 1990-х — начале 2000-х годов операторы сотовой связи начали предоставлять услуги отправки коротких сообщений (SMS). Это позволило сервисам отправлять коды напрямую на устройства пользователей без необходимости установки дополнительного программного обеспечения.

Внедрение SMS-кодов в качестве фактора аутентификации началось с банковского сектора. В середине 2000-х годов крупные банки (например, Сбербанк в России) стали использовать SMS-сообщения для подтверждения переводов и операций в интернет-банкинге. Это было связано с ростом числа фишинговых атак и краж паролей, когда одного логина и пароля стало недостаточно для защиты аккаунтов.

К началу 2010-х годов SMS-коды стали стандартом де-факто для двухфакторной аутентификации в социальных сетях, почтовых сервисах и платформах электронной коммерции. Google, Facebook (организация признана экстремистской и запрещена в РФ), ВКонтакте и другие крупные сервисы внедрили эту функцию. Однако уже к середине 2010-х годов стали очевидны недостатки метода, что привело к разработке альтернатив: аутентификаторов (Google Authenticator, Authy), аппаратных ключей (YubiKey) и push-уведомлений.

Принцип работы

Процесс аутентификации с использованием SMS-кода включает несколько этапов:

  1. Запрос аутентификации. Пользователь вводит логин и пароль на сайте или в приложении. Сервер проверяет корректность этих данных.
  2. Генерация кода. После успешной проверки пароля сервер генерирует одноразовый код. Обычно это 6-значное число, но могут использоваться комбинации из 4–8 цифр или буквенно-цифровых символов. Код привязывается к конкретной сессии пользователя и имеет ограниченный срок действия.
  3. Отправка SMS. Сервер передаёт код на SMS-шлюз (агрегатор), который отправляет сообщение на номер мобильного телефона, привязанный к учётной записи пользователя. Сообщение содержит код и, как правило, название сервиса и предупреждение о неразглашении кода.
  4. Ввод кода. Пользователь получает SMS на свой телефон и вводит полученный код в соответствующее поле на сайте или в приложении.
  5. Верификация. Сервер сравнивает введённый код с тем, который был сгенерирован для данной сессии. Если код совпадает и не истёк, аутентификация считается успешной, и пользователь получает доступ к сервису.

Технические детали

  • Генерация кода. Код может генерироваться на основе времени (TOTP, Time-based One-Time Password) или счётчика (HOTP, HMAC-based One-Time Password). В случае SMS-кода сервер обычно использует TOTP с привязкой к времени, но точный алгоритм зависит от реализации сервиса.
  • Срок действия. Обычно составляет от 30 секунд до 15 минут. По истечении срока код становится недействительным, и пользователь должен запросить новый.
  • Ограничения на отправку. Для предотвращения спама и атак перебором сервисы устанавливают лимиты на количество запросов кода с одного аккаунта или IP-адреса в единицу времени (например, не более 3 запросов в минуту).
  • Шифрование. SMS-сообщения передаются по сетям сотовой связи, которые используют шифрование (например, A5/1, A5/3), но это шифрование не является сквозным. Сообщение может быть перехвачено на уровне оператора связи или при компрометации SMS-центра.

Преимущества

  • Простота использования. Не требует установки дополнительного программного обеспечения. Достаточно иметь мобильный телефон с SIM-картой.
  • Широкая доступность. Мобильная связь и SMS доступны практически повсеместно, включая регионы с ограниченным доступом к интернету.
  • Низкий порог входа. Пользователи привыкли к SMS и не нуждаются в обучении.
  • Независимость от интернета. Для получения кода не требуется подключение к интернету, что важно при слабом сигнале Wi-Fi или мобильного интернета.

Недостатки и критика

Уязвимость к перехвату

SMS-сообщения не являются защищённым каналом связи. Основные угрозы:

  • Перехват через SS7 (Signaling System No. 7). Протокол SS7, используемый для маршрутизации SMS в сетях сотовой связи, имеет уязвимости. Злоумышленник может перенаправить SMS на свой номер, получив доступ к коду. Атаки через SS7 известны с 2014 года и активно использовались для кражи средств со счетов.
  • SIM-свопинг (SIM-swap). Атака, при которой злоумышленник убеждает оператора связи перевыпустить SIM-карту на своё имя. После этого все SMS, включая коды, приходят на устройство злоумышленника.
  • Вредоносное ПО. Трояны на мобильных устройствах могут перехватывать SMS-сообщения и пересылать их злоумышленникам. Это особенно актуально для устройств на Android без обновлений безопасности.

Социальная инженерия

Злоумышленники часто используют методы социальной инженерии, чтобы вынудить пользователя сообщить код. Например, звонок от имени службы поддержки банка с просьбой назвать код для «отмены подозрительной операции». Пользователи, не знакомые с принципами безопасности, могут передать код.

Зависимость от оператора связи

  • Задержки доставки. В сетях с высокой нагрузкой или при технических проблемах SMS может приходить с задержкой, превышающей срок действия кода.
  • Роуминг. При нахождении в роуминге доставка SMS может быть затруднена или стоить дополнительных денег.
  • Блокировка спама. Некоторые операторы могут блокировать SMS от неизвестных отправителей или содержащие определённые ключевые слова, что может помешать доставке кода.

Ограничения для пользователей

  • Потеря телефона. Если телефон утерян или украден, пользователь теряет доступ к аккаунтам, защищённым SMS-кодами. Восстановление доступа часто требует длительных процедур.
  • Смена номера. При смене номера телефона необходимо обновить его во всех сервисах, иначе восстановление доступа становится невозможным.
  • Стоимость. В некоторых странах или тарифах отправка SMS может тарифицироваться, хотя обычно сервисы оплачивают отправку кодов.

Критика со стороны экспертов

Эксперты по информационной безопасности (например, Национальный институт стандартов и технологий США, NIST) в 2016 году рекомендовали отказаться от использования SMS в качестве второго фактора аутентификации из-за уязвимости к перехвату. NIST в своём документе SP 800-63-3 отнёс SMS к «нерекомендуемым» методам (out-of-band verifiers). Однако на практике SMS-коды продолжают широко использоваться из-за низкой стоимости и простоты внедрения.

Альтернативы

В ответ на недостатки SMS-кодов были разработаны более безопасные методы двухфакторной аутентификации:

  • Аутентификационные приложения (TOTP). Генерируют коды на устройстве пользователя без передачи по сети. Примеры: Google Authenticator, Microsoft Authenticator, Яндекс.Ключ.
  • Push-уведомления. Сервис отправляет запрос на подтверждение в мобильное приложение. Пользователь нажимает «Подтвердить» в приложении. Более безопасны, так как не требуют ввода кода.
  • Аппаратные ключи (FIDO2/WebAuthn). Физические устройства (YubiKey, Google Titan), которые подключаются к компьютеру или телефону. Считаются наиболее безопасным методом.
  • Биометрия. Отпечаток пальца, Face ID или сканер радужной оболочки глаза. Используется как второй фактор в некоторых сервисах.

Применение в России

В России SMS-коды активно используются банками (Сбербанк, ВТБ, Т-Банк, Альфа-Банк), государственными порталами (Госуслуги, ФНС, ПФР) и крупными интернет-сервисами (Яндекс, Mail.ru, ВКонтакте). Сбербанк, например, использует SMS-коды для подтверждения переводов, оплаты покупок в интернете и входа в Сбербанк Онлайн. Госуслуги используют SMS-коды как один из способов входа (наряду с электронной подписью и биометрией).

В 2020-х годах в России наблюдается тенденция к переходу на более безопасные методы. Банки внедряют push-уведомления в своих мобильных приложениях, а Госуслуги предлагают использование биометрии. Однако SMS-коды остаются основным методом для пользователей, не установивших мобильное приложение банка или не прошедших регистрацию биометрии.

Законодательство РФ (Федеральный закон № 161-ФЗ «О национальной платежной системе») требует использования усиленной аутентификации для онлайн-оплат. SMS-коды соответствуют этому требованию, что способствует их сохранению в банковской сфере.

Будущее SMS-кодов

Несмотря на критику, SMS-коды не исчезнут полностью в ближайшее время. Они остаются важным резервным методом аутентификации для пользователей, у которых нет возможности использовать приложения или аппаратные ключи. Однако их роль постепенно снижается в пользу более безопасных альтернатив. В долгосрочной перспективе ожидается переход на стандарты FIDO2 и WebAuthn, которые не требуют передачи одноразовых кодов по незащищённым каналам.

Источники

  • Национальный институт стандартов и технологий США (NIST). Digital Identity Guidelines: Authentication and Lifecycle Management (SP 800-63-3). 2016.
  • Федеральный закон «О национальной платежной системе» от 27.06.2011 № 161-ФЗ (ред. от 01.05.2024).
  • Материалы Центрального банка Российской Федерации по вопросам информационной безопасности и аутентификации в банковской сфере.
  • Отчёты Positive Technologies об угрозах SS7 и SIM-свопингу (2018–2023).
  • Документация по протоколам TOTP (RFC 6238) и HOTP (RFC 4226).
  • Статьи на Habr и других профильных ресурсах по теме двухфакторной аутентификации.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →