Защита 2FA в криптокошельке: почему одного SMS-кода мало
Типичная настройка выглядит обманчиво просто: пароль, SMS-код, зелёный замок в приложении — и человек считает, что аккаунт закрыт.
Демид Красильников, Обозреватель и гид по криптограмотности·Обновлено: 07 ноября 2026 г.·9 мин

Именно на этом участке новички чаще всего оставляют самую удобную для атакующего схему входа.
По оценке NIST, передача кода через телефонную сеть для аутентификации относится к ограниченным методам. SMS-сообщение может быть перехвачено, номер телефона — перенесён на другую SIM-карту, а код — выманен на поддельном сайте. При этом двухфакторная аутентификация биржевого аккаунта никак не защищает seed-фразу некастодиального кошелька. Смешение этих двух задач создаёт иллюзию безопасности.
Я всегда начинаю с простого разделения: что именно хранится, где лежат закрывающие ключи и какой именно вход мы защищаем. Только после этого можно выбирать между SMS, приложением-аутентификатором и FIDO/WebAuthn.
Сначала определите, какой у вас криптокошелек
Под словом «кошелёк» скрываются принципиально разные конструкции.
1. Кастодиальный кошелек или биржа. Ключи от активов хранит сервис. Пользователь управляет аккаунтом, а безопасность средств зависит от инфраструктуры площадки и действий её сотрудников. Bitcoin.org прямо предупреждает: при хранении ключей у третьей стороны пользователь зависит от её безопасности и добросовестности. Сервис могут взломать, закрыть или ограничить доступ к средствам.
2. Некастодиальный кошелёк. Закрывающие ключи остаются у пользователя. Чаще всего их хранит аппаратное устройство, а seed-фраза служит резервной копией для восстановления. Здесь вход в приложение и владение ключами — разные слои защиты.
3. Аккаунт интерфейса кошелька. Например, веб-панель или облачное приложение может иметь собственную двухфакторную аутентификацию. Она защищает синхронизацию, настройки и доступ к интерфейсу, но не заменяет безопасное хранение закрывающих ключей.
Бытовая механика здесь полезнее рекламных метафор: при выборе мешочков для хранения трав решает не цвет ткани, а маркировка, защита от влаги и возможность перепроверить содержимое. У цифрового кошелька вопрос тот же: красивая надпись «кошелёк» ничего не говорит о владельце ключа и о том, где проходит вход.
Двухфакторная аутентификация защищает вход в аккаунт. Ключи кошелька она защищает лишь настолько, насколько их надёжно хранит сам сервис.
Почему SMS перестаёт быть достаточной защитой
Телефонный код проходит по цепочке, участники которой не подчиняются криптопроекту: оператор связи, сеть передачи сообщений, устройство с SIM-картой и интерфейс, куда код вводится. У каждого звена есть своя уязвимость.
В редакции 4 NIST SP 800-63B использование телефонной сети общего пользования, включая SMS и голосовые вызовы, для передачи кода вне основного канала отнесено к ограниченным методам аутентификации. Среди причин ограничения NIST называет перенос номера на устройство злоумышленника, уязвимости SS7 и переадресацию сообщений.
Основные сценарии выглядят так:
- Перехват кода. В руководстве CISA от 18 декабря 2024 года отмечено, что SMS-коды не зашифрованы и могут быть перехвачены при доступе злоумышленника к сети оператора.
- SIM-swap. Злоумышленник переносит номер на контролируемую SIM-карту и перехватывает входной код. Двухфакторная аутентификация превращается в дополнительную кнопку на пути к аккаунту.
- Фишинг. Человеку показывают поддельную страницу биржи или сервиса. Введённый код злоумышленник пересылает настоящему сайту в режиме реального времени.
- Подмена номера телефона. Восстановление доступа, смена устройства и проверка личности часто привязаны именно к номеру, хотя сам номер давно не является надежным доказательством личности.
По NIST, ручной ввод кода сам по себе не привязывает аутентификацию к конкретной сессии. Поэтому одноразовые коды и SMS-коды не считаются устойчивыми к фишингу. Проблема заключается в самой механике: если обманутый пользователь вводит код на поддельном сайте, протокол способен обработать этот ввод как обычную успешную аутентификацию.
Отсюда важная оговорка: SMS-код всё ещё даёт некоторую защиту. Говорить, что он бесполезен, неверно. Его слабость состоит в более низкой устойчивости по сравнению с аппаратными ключами и passkeys.
CISA также рекомендует установить для аккаунта мобильного оператора PIN или пароль. Такой код может требоваться для входа в личный кабинет или переноса номера. Для пользователя криптобиржи это простая мера, которая закрывает один из маршрутов к SMS-аутентификации.
При этом паниковать по поводу каждого нового сообщения о SIM-swap смысла нет. Надёжной статистики именно по криптовалютным аккаунтам нет. Мы знаем механизм атаки и способ снизить риск, но не располагаем данными, которые оправдывали бы запугивание.
SMS, приложение-аутентификатор или FIDO: сравнение без магии
Универсального рейтинга нет. Сначала смотрите на то, какие методы предлагает конкретный сервис, затем выстраиваете защиту от самого опасного сценария.
| Метод | Как подтверждается вход | Главная уязвимость | Практический вердикт |
|---|---|---|---|
| SMS-код | Через номер телефона и оператора связи | Перехват, SIM-swap, фишинг | Использовать как запасной вариант, если нет более сильного метода |
| Приложение-аутентификатор, TOTP | Код генерируется на устройстве по общему секрету | Фишинг, доступ к устройству, утечка секрета | Защита лучше SMS, но устойчивость к фишингу не обеспечивает |
| FIDO/WebAuthn | Аппаратный ключ или passkey подтверждает вызов сервиса | Потеря устройства, взлом конечного устройства, слабый процесс восстановления | Предпочтительный вариант для аккаунта, где метод поддерживается |
Google Authenticator и похожие приложения обычно используют протокол TOTP: приложение хранит секрет и рассчитывает временный код. Преимущество перед SMS очевидно — код не проходит через сеть оператора. Но CISA предупреждает, что коды из приложения-аутентификатора тоже можно выманить фишингом.
Фишинг здесь выглядит наглядно. Мошенник создаёт почти точную копию страницы входа, запрашивает у человека код из приложения и отправляет его настоящему сервису. Пользователю может даже требоваться ввести код в приложении, что на фоне просьбы «подтвердите вход» выглядит естественно.
FIDO/WebAuthn работает с иным принципом. Специальный ключ или passkey подтверждает криптографический вызов, связанный с конкретным сайтом или приложением. Поддельная страница не получает валидный ответ для настоящего домена. Именно поэтому CISA называет FIDO-аутентификацию устойчивой к фишингу.
Набор доступных способов зависит от сервиса. Для примера, в справке Coinbase перечислены SMS, приложение-аутентификатор и аппаратный ключ безопасности YubiKey. Это показывает, что повысить уровень защиты часто можно без смены площадки.
Надёжность второго фактора определяется тем, сможет ли злоумышленник использовать его в поддельном сеансе. В этом смысле FIDO/WebAuthn стоит выше TOTP и SMS.
Мой порядок настройки 2FA криптокошелька
Настройку я строю от аккаунта к аккаунту. Сначала закрываю вход, затем резервные маршруты, потом вывод средств и только после этого перехожу к хранению ключей.
1. Проведите инвентаризацию входов
Выпишите все связанные с криптоаккаунтами элементы:
- адрес электронной почты;
- основной пароль;
- номер телефона;
- приложение-аутентификатор;
- резервные коды;
- активные сессии на компьютерах и телефонах;
- администраторские или торговые разрешения, если сервис их разделяет.
Это базовая работа. Пока неизвестно, откуда восстанавливается доступ, нельзя нормально оценить защиту основного входа. Особое внимание заслуживает почта: если через неё можно сбросить пароль и отключить второй фактор, её нужно защищать так же серьёзно, как саму биржу.
2. Включите самый сильный доступный второй фактор
Если сервис поддерживает FIDO/WebAuthn, начните с аппаратного ключа или passkey. Один физический ключ удобно потерять или сломать, поэтому стоит предусмотреть отдельный аварийный экземпляр.
Если FIDO недоступен, используйте приложение-аутентификатор с TOTP. Google Authenticator подходит как знакомый пример такого решения, но именно протокол определяет устойчивость метода, а не название программы.
SMS имеет смысл оставить только тогда, когда сервис не предлагает альтернативу или требует его для восстановления. В таком случае риск следует понимать: компрометация номера может открыть путь к аккаунту.
3. Обработайте резервные коды и секрет приложения
Коды восстановления нужно хранить так, чтобы они пережили потерю телефона, но не попали в обычную облачную фотографию. Подойдёт зашифрованный менеджер паролей или отдельный бумажный комплект в безопасном месте.
QR-код при настройке TOTP содержит общий секрет, с помощью которого приложение генерирует коды. Снимок этого QR-кода способен заменить саму резервную копию. Поэтому не пересылайте его в мессенджеры и не оставляйте в общей папке с фотографиями.
Seed-фраза кошелька никогда не является резервным кодом 2FA. Если сайт или сотрудник просит ввести её для «проверки», «синхронизации» или «восстановления», нужно закрыть страницу и сменить пароль.
4. Защитите номер телефона
Установите PIN или пароль в аккаунте мобильного оператора. Там, где оператор предлагает блокировку переноса номера или изменения SIM-карты, включите её.
При смене телефона,SIM-карты или оператора я перепроверяю три вещи:
1. восстановление аккаунта биржи;
2. подтверждение смены устройства;
3. возможность отключить второй фактор.
Номер телефона должен быть резервным каналом, а не центральным узлом всей безопасности.
5. Настройте контроль вывода
Двухфакторная аутентификация подтверждает вход, но существуют отдельные настройки, отвечающие за судьбу средств после входа. Там, где сервис это поддерживает, полезно включить:
- белый список адресов для вывода;
- уведомления о смене адресов и выводе;
- отдельный код или пароль для вывода;
- задержку или дополнительное подтверждение крупных операций;
- блокировку неизвестных устройств и сессий.
Белый список адресов ограничивает ущерб, если атакующий уже получил доступ к аккаунту. Уведомления помогают заметить вывод, когда деньги ещё не ушли. Эти меры дополняют 2FA и выполняют другую задачу.
6. Проверьте восстановление доступа
После настройки откройте список активных сессий и завершите те, которые вы не узнаёте. Затем убедитесь, что понимаете последовательность восстановления: с какого устройства открывается второй фактор, где хранятся резервные коды и каким адресом подтверждается смена номера.
Не стоит проверять схему, закрыв единственный доступный способ входа. Сначала создайте запасной маршрут, потом тестируйте основной. Заблокированный аккаунт с недоступными ключами восстановления превращает хорошую защиту в дорогостоящий простой.
Если seed-фраза остаётся у вас
У некастодиального кошелька нет обычной связки «логин, пароль, код из сообщения». Здесь главный вопрос звучит иначе: кто контролирует закрывающий ключ?
Аппаратный кошелёк хранит ключ внутри устройства и подписывает транзакцию без передачи самого ключа на компьютер. В таком сценарии 2FA может защищать аккаунт производителя, облачную синхронизацию или веб-интерфейс, но не privате ключи.
Работа с таким кошельком требует нескольких жёстких правил:
- Seed-фразу записывают на физическом носителе и хранят отдельно от устройства. Фото в облаке, копия в почте и сообщение в чат создают несколько новых точек отказа.
- Seed-фраза не вводится на сайтах. Легитимный интерфейс не просит её для «проверки кошелька».
- Перед подтверждением транзакции параметры проверяются на экране самого аппаратного устройства. Заражённый компьютер может подсовывать изменённый адрес получателя или сумму.
- Прошивка и программное обеспечение скачиваются с официального источника. Обновление с неизвестного сайта способно превратить защищённое устройство в точку входа.
- Резервная копия seed-фразы хранится в месте, недоступном для бытовых случайностей и других пользователей.
Для кастодиального сервиса ситуация другая. Там 2FA полезна: она защищает аккаунт от перехвата пароля. Однако взлом или внутренняя ошибка самого сервиса находится за пределами возможностей вашего второго фактора. Ключи хранятся на его стороне, и зелёный замок в приложении не меняет архитектуру доверия.
Именно поэтому для долгосрочных активов я использую аппаратное хранение, а на бирже оставляю только операционную ликвидность. Это элемент риск-менеджмента: ограниченная сумма ограничивает возможный ущерб.
Мой рабочий контур безопасности
Когда речь касается денег, я предпочитаю скучные повторяемые процедуры:
1. У каждого криптосервиса стоит уникальный пароль, хранящийся в менеджере паролей.
2. Основной второй фактор — FIDO/WebAuthn; при отсутствии поддержки — TOTP.
3. SMS остаётся резервным каналом, а телефонный номер защищён PIN-кодом оператора.
4. Резервные коды лежат отдельно от устройства с основным доступом.
5. Адреса вывода ограничены белым списком, а уведомления включены.
6. Активные сессии регулярно просматриваются.
7. Смена телефона, номера или почты автоматически запускает проверку процедуры восстановления.
8. Крупные долгосрочные активы выводятся из горячей среды в аппаратный кошелёк.
Никакой протокол не отменяет личную ответственность. Он лишь сокращает число ошибок, которые может допустить человек, уставший, торопящийся или испуганный.
Главный порядок выглядит так: сначала определите, где лежат ключи; затем выберите второй фактор по устойчивости к фишингу; после этого ограничьте вывод и настройте восстановление. Только тогда 2FA действительно становится частью защиты. SMS способен закрыть один из входов, но рассчитывать на него как на единственный замок криптокошелька опасно.