Улучшаем свою безопасность
Улучшаем свою безопасность

Мы на Хабре часто обсуждаем сложные архитектуры безопасности, Zero Trust и криптографию на эллиптических кривых, но игнорируем «базу», которой пользуемся каждый день. В свете постоянных утечек баз операторов и навязывания экосистемных мессенджеров, пора честно признать: SMS и пуши — это тупиковая ветвь эволюции аутентификации.

Сегодня разберем, почему «смска от банка» — это иллюзия защиты, и как правильно приготовить TOTP, чтобы вас действительно не взломали (и при этом не страдать).

Введение: иллюзия безопасности

Вы когда-нибудь задумывались, что ваша двухфакторная аутентификация (2FA) - это не всегда «щит», а иногда просто «калитка на веревочке»?

Многие живут в заблуждении, что SMS-код - это надежно. Банки и сервисы приучили нас к этому. Но реальность 2025 года такова: SMS - это архаизм, который держится на инерции.

Давайте разберемся, как TOTP (Time-based One-Time Password) делает вашу жизнь безопаснее, почему это не просто «еще одно приложение», и почему вам стоит отказаться от SMS-кодов прямо сейчас.

Почему SMS-коды - это дыра в защите

Начнем с фактов. SMS никогда не разрабатывались как защищенный канал связи.

  1. Протокол SS7: Уязвимости в сигнальных сетях позволяют перехватывать SMS, даже не имея доступа к вашему телефону.

  2. SIM-swapping: Социальная инженерия или сговор с сотрудником салона связи позволяют злоумышленнику перевыпустить вашу SIM-карту. Вы теряете связь по своему номеру, а хакер получает ваши коды для входа в банк или госуслуги.

  3. Зависимость от оператора: Если вы в роуминге, в самолете, в подвале или ваш оператор решил «прилечь» - вы отрезаны от своих аккаунтов.

  4. Отсутствие шифрования: SMS летит в открытом виде и сохраняется на серверах операторов (привет, СОРМ и утечки).

Экосистемные мессенджеры

Еще хуже - попытка заменить SMS на проприетарные мессенджеры. Назовем условный мессенджер «Такс» (все совпадения с реальными мессенджерами случайны).

Вам говорят: «Установи "Такс", туда будут приходить коды».

В чем проблема?

Для получения 6 цифр вас заставляют ставить комбайн весом >100 МБ, который:

  • Требует номер телефона и регистрацию.

  • Пылесосит ваши контакты и метаданные.

  • Знает ваш IP и геолокацию.

  • Не работает без интернета.

Это как купить умную колонку, подключить её к Wi-Fi, зарегистрировать паспортные данные только для того, чтобы раз в полгода спросить у неё: «Который час?».

TOTP: Магия математики и времени

TOTP (Time-based One-Time Password) - это стандарт (RFC 6238), который работает совершенно иначе.

Аналогия с квартирой:

  • Пароль - это обычный ключ от двери.

  • TOTP - это второй замок, код от которого меняется каждые 30 секунд. Этот код генерируется внутри вашей квартиры и у вас на специальном брелоке. Даже если вор украл ключ, он упрется во второй замок.

Как это работает под капотом (для тех, кто любит технику):
Никакой магии, только HMAC-SHA1.

  1. Shared Secret (Секрет): При настройке сервер и ваш телефон обмениваются секретным ключом (обычно через QR-код).

  2. Time (Время): Текущее время Unix time делится на интервал (обычно 30 секунд).

  3. Hashing: Секрет + Интервал времени хешируются.

  4. Truncate: Из полученного хеша берется часть битов и преобразуется в понятные нам 6 цифр.

Главная фишка: Сервер и телефон делают вычисления независимо друг от друга. Им не нужно общаться. Им нужно только знать Секрет и Точное время.

Топ-3 киллер-фичи TOTP

  1. Работа в оффлайне Приложению-аутентификатору не нужен интернет. Вообще. Вы можете быть в бункере, в самолете или в глухом лесу — код сгенерируется, потому что алгоритм уже внутри вашего телефона.

  2. Приватность Правильное TOTP-приложение (например, Aegis) ничего никуда не отправляет. Оно не знает ваш номер, не знает ваш IP. Оно просто молотилка чисел.

  3. Защита от перехвата "по пути от сервиса" Так как код не передается по сети (как SMS), его нельзя перехватить через уязвимости сотовой связи.

Когда TOTP может подвести? (И как это лечить)

У TOTP есть одна ахиллесова пята — рассинхронизация времени.
Поскольку алгоритм завязан на текущем времени, часы на сервере и на вашем телефоне должны совпадать.

  • Симптом: Вы вводите правильный код, а сервис говорит «Неверно».

  • Лечение: В настройках приложения-аутентификатора есть кнопка «Синхронизация времени» (Time correction). Либо просто поставьте в настройках телефона «Время сети». Серверы обычно допускают погрешность ±30 секунд.

Security Warning: Самый важный нюанс

Если злоумышленник украдет ваш Secret Key (тот самый, что зашифрован в QR-коде при настройке), ваша защита рухнет.

Как это происходит?

  1. Фишинг: Поддельный сайт просит вас «перенастроить 2FA» и показывает свой QR-код. Вы сканируете — хакер получает точную копию вашего генератора.

  2. Скриншоты: Вы сделали скриншот QR-кода «на память», и он улетел в облако. Облако взломали — ключи утекли.

Железное правило: Никогда не храните QR-коды в галерее. Если подозреваете утечку — сбросьте 2FA в настройках сервиса. Старый секрет превратится в тыкву.

Практика: На что переходить в 2025 году?

Забудьте про SMS. Вот ваш джентльменский набор.

Уровень «Бог» (Рекомендую): Aegis Authenticator (Android)

  • Open Source (FOSS).

  • Шифрованные бэкапы (если потеряете телефон, восстановите коды из файла).

  • Никакой телеметрии.

  • Возможность запаролить вход в приложение.

Уровень «Стандарт»: Google Authenticator

  • Просто, стоит у всех.

  • Минус: Недавно ввели облачную синхронизацию. Если взломают Google-аккаунт, утекут и коды. Совет: Используйте без синхронизации или с осторожностью.

Уров��нь «Экосистема»: Встроенные средства iOS / Android

  • В iOS (Настройки -> Пароли) уже встроен отличный генератор кодов. Не нужно ставить лишний софт.

  • В банковских приложениях (Тинькофф, Сбер и др.) часто есть встроенный генератор TOTP.

Как внедрить (за 5 минут)

  1. Установите Aegis или используйте менеджер паролей.

  2. Зайдите в Госуслуги, Почту, VK, GitHub.

  3. Ищите: Безопасность -> Двухфакторная аутентификация -> Приложение для генерации кодов(TOTP)

  4. Отсканируйте QR.

  5. ВАЖНО: Сохраните резервные коды восстановления (backup codes), которые выдаст сайт. Запишите их на бумагу или в надежный менеджер паролей (KeePassXC). Если потеряете телефон, это единственный способ войти.

Заключение

SMS-коды — это защита уровня «дешевая проволока». Вроде есть, но перекусывается кусачками за секунду. Мессенджеры для кодов — это попытка забивать гвозди микроскопом, продавая при этом ваши данные.

TOTP — это простой, надежный «нож», который делает ровно одну вещь, но делает её идеально. Переход занимает 5 минут, а уровень вашей безопасности существенно повышается.

Но TOTP не идеал, потому что:

  • TOTP не защищает от фишинга. Его можно украсть «в моменте» через прокси‑фишинг (ввёл код на поддельном сайте → злоумышленник тут же использовал на настоящем). Это ключевое ограничение TOTP как класса. Чек-лист от фишинга:

    • входить по ссылкам из закладок/менеджера паролей;

    • проверять домен;

  • Уже есть массовая альтернатива сильнее TOTPWebAuthn/FIDO2/passkeys, которые как раз проектировались быть phishing‑resistant (при нормальной реализации). Это сейчас “мейнстрим” (браузеры/ОС/большие сервисы).

P.S. А каким аутентификатором пользуетесь вы? Перешли на Open Source решения вроде Aegis/Raivo или доверяете гигантам Google/Microsoft? Или вы пользуетесь еще более надежными аппаратными ключами. Делитесь опытом миграции в комментариях.

P.P.S. ВАЖНО-ВАЖНО Вынесено из комментариев: Из советов родственникам - не забудьте эту строчку из 32 знаков(секрет) записать разборчиво буква в букву в тетрадочку и на хранение - потеряете, все, доступа не будет. А по возможности куаркод распечатайте на принтере. Будете потом бегать по МФЦ доступ восстанавливать, если код потеряете, или смартфон сломается.