Учебник
Что такое 2FA? И как на самом деле работают эти 30-секундные коды?
Полное и понятное руководство: что такое двухфакторная аутентификация, какая криптография стоит за шестизначными TOTP-кодами, какой фактор включать на каждом аккаунте и как никогда не потерять доступ.
Почему одних паролей недостаточно
Каждому входу нужен пароль, а у паролей три структурные проблемы: их используют повторно, их подбирают атаками credential stuffing по утёкшим базам данных и их выуживают фишинговыми ловушками. Двухфакторная аутентификация (2FA) принимает простую истину — самое слабое звено это человек — и добавляет вторую, независимую вещь, которой у злоумышленника тоже быть не должно. С 2FA один украденный пароль уже не открывает ваш аккаунт.
Большинство крупных сервисов уже предлагают 2FA или требуют её: GitHub применяет её с 2023 года, криптобиржи (Binance, Coinbase, Kraken) напоминают о ней при каждом падении рынка, а Microsoft, Google и Apple встроили её в безопасность аккаунтов как опцию по умолчанию.
Три фактора
Факторы аутентификации делятся на три категории:
- То, что вы знаете — пароли, PIN-коды. Дёшево внедрить, легко выудить.
- То, чем вы владеете — аутентификатор, генерирующий коды, физический ключ безопасности или passkey, телефон, принимающий SMS. Именно здесь живёт 2FA.
- То, что вы есть — отпечатки пальцев, распознавание лица. Удобно, но регистрируется скорее на самом устройстве, чем служит основным фактором удалённого доступа.
По-настоящему двухфакторная проверка сочетает приёмы из двух разных категорий. Пароль плюс графический ключ разблокировки телефона — это не 2FA; пароль плюс обновляющийся код аутентификатора — да.
Как работает TOTP: пошагово
- Регистрация. Когда вы включаете функцию в сервисе, он генерирует случайный секрет и передаёт его вам ровно один раз — в виде QR-кода или ключа настройки Base32. С точки зрения безопасности весь риск сосредоточен именно в этот момент; поэтому раскрывать ключ стоит только там, где вы действительно уверены.
- Время идёт. Текущее время делится на 30-секундные «шаги»:
step = floor(unixTime / 30). Тридцать секунд ничем не примечательны: RFC 6238 позволяет сервису принимать 15, 30 или 60 секунд. - HMAC. Ваш аутентификатор вычисляет хеш HMAC (SHA-1 в большинстве сервисов, иногда SHA-256/512) от значения шага, используя секрет как ключ. HMAC — односторонняя конструкция: увидев результат, вы не узнаете о секрете ничего.
- Извлечение цифр. Из результата HMAC выбираются четыре байта по последнему полубайту, старший бит отбрасывается, и результат по модулю 10n становится вашим кодом — обычно
n= 6, иногда 7 или 8. - Окно проверки. Сервер пересчитывает то же значение для текущего и предыдущего шага (чтобы допускать небольшие расхождения часов). Если доказательство совпало, вход принимается.
Всё это выполняется за микросекунды, полностью на устройстве. Поэтому клиентский инструмент вроде 2FA COUNTER может выполнить всю работу локально — загрузите страницу, отключите интернет, и коды продолжат появляться каждые 30 секунд, и так всегда.
Секрет и QR-код
Строка Base32 — не просто промежуточный формат: это «сырые» байты секрета, закодированные удобным для клавиатур алфавитом (A–Z плюс 2–7, без 0 и 1, которые легко спутать, — безопасно на любой раскладке). Когда платформа предлагает ссылку «не удаётся отсканировать?», появляющаяся строка содержит ровно тот же приватный материал, что и QR-код. Хранить можно любую из двух форм; смысл у них идентичный:
otpauth://totp/GitHub:you%40example.com?secret=JBSWY3DPEHPK3PXP&issuer=GitHub
otpauth://totp/Binance:me?secret=JBSWY3DPEHPK3PXP&digits=6&period=30&algorithm=SHA1
otpauth://hotp/Steam:sda?secret=...&counter=5 ← вариант со счётчиком (HOTP)Современный генератор учитывает каждый параметр: количество цифр, период, алгоритм хеширования и счётчик HOTP — ведь сервис, требующий SHA-256, точно так же отклонит код со стандартным SHA-1. Голая строка Base32 интерпретируется как 6 цифр, 30 с и SHA-1 — именно это использует подавляющее большинство сервисов.
TOTP против SMS против физических ключей
- SMS-коды передаются по телефонной сети. Атаки с подменой SIM-карты позволяют злоумышленнику украсть ваш номер и получать все ваши коды. SMS исключён из средств аутентификации в стандартах США (NIST SP 800-63B).
- TOTP ничего не передаёт — код вычисляется локально и истекает через 30 секунд. Бесплатно, построено на стандартах и совместимо повсюду. Слабое звено: может быть выужено в пределах своего окна действия.
- Физические ключи и passkey (WebAuthn/FIDO2) криптографически привязаны к точному домену, поэтому поддельные страницы, копирующие оригинал, автоматически терпят неудачу. Самый сильный вариант; поддержка меньше, плюс цена ключа.
Практическая лестница: SMS — только когда нет другого выхода, TOTP — вариант по умолчанию, физические ключи или passkey — для самых важных аккаунтов.
Подробнее о некоторых из ваших лучших вариантов: TOTP против passkey — какой фактор куда подходит, как атаки с подменой SIM-карты побеждают SMS и что облачная синхронизация приложений делает с вашими секретными ключами.
Чего 2FA не решает
Двухэтапная проверка решает проблему кражи паролей. Она не останавливает кражу сессионных cookie (вредоносное ПО, уже запущенное на вашем компьютере), браузерные расширения с избыточными разрешениями, почтовый ящик восстановления, контроль над которым вы потеряли, или социальную инженерию, когда злоумышленник давит на вас, чтобы вы назвали свежий код в его 30-секундном окне. Держите браузеры обновлёнными, безжалостно удаляйте лишние расширения и относитесь к любой настойчивой просьбе назвать код как к красному флагу, которым она и является.
Как никогда не терять доступ
- Сохраняйте резервные коды. Каждый сервис при включении 2FA выдаёт набор одноразовых кодов восстановления. Распечатайте их или сохраните в зашифрованном виде и офлайн.
- Храните секрет, а не только инструмент. Строка Base32, записанная в хранилище вашего менеджера паролей, позволяет заново генерировать коды любым аутентификатором — мобильным приложением или браузерным генератором — на том устройстве, которое окажется под рукой.
- Подключите два устройства, а не одно. Один ключ может без риска жить сразу на двух доверенных устройствах. TOTP детерминирован: тот же секрет — те же коды.
- Следите за своими часами. Если коды регулярно не срабатывают, сначала поправьте синхронизацию времени на устройстве — это самая частая причина ошибок «неверный код», и ни один инструмент не может её обойти.
Частые вопросы
Что такое 2FA?
2FA (двухфакторная аутентификация) — это подтверждение личности двумя разными типами доказательств: то, что вы знаете (пароль), плюс то, чем вы владеете (код, меняющийся каждые 30 секунд, физический ключ безопасности или ваш телефон). Один пароль может утечь или быть подобран; второй фактор делает украденный пароль бесполезным, если он не подкреплён чем-то большим.
Почему 2FA так важна?
Потому что пароли проваливаются всегда одинаково. Миллиарды реальных паролей уже опубликованы после утечек, и злоумышленники без устали подставляют их снова и снова, чтобы входить в чужие аккаунты (credential stuffing) круглые сутки. По данным Microsoft, 2FA блокирует более 99,9 % автоматических атак с захватом аккаунтов — она защищает вашу почту, банк, соцсети, игры и криптовалюту ровно от тех угроз, которые действительно происходят.
Для чего нужна 2FA?
Она защищает любой вход, который стоит украсть: почту и облачные аккаунты (Google, Microsoft, Apple), банк и финансы, криптобиржи (Binance, Coinbase, Kraken), платформы для разработчиков (GitHub, AWS), игры (Steam, Discord, Twitch) и соцсети (X, Instagram). Компании используют её для VPN, почты и консолей администрирования. Там, где сервис предлагает опцию «приложение-аутентификатор», и находится правильный инструмент 2FA.
Как работает 2FA?
После пароля сервис запрашивает второе доказательство. При самом распространённом методе (TOTP) ваш аутентификатор вычисляет новый 6-значный код из общего секретного ключа плюс текущего времени (стандарт RFC 6238), а сервер выполняет точно такой же расчёт и сравнивает результаты. Код обновляется каждые 30 секунд и не может быть использован повторно, поэтому злоумышленник, владеющий только вашим паролем, войти не сможет.
Как генерируется TOTP-код?
Сайт выдаёт вам секретный ключ (обычно в виде QR-кода или строки Base32). Ваш аутентификатор вычисляет HMAC (с SHA-1, SHA-256 или SHA-512) от текущего 30-секундного окна времени, используя этот ключ, и извлекает из результата 6 цифр. Сайт выполняет точно такой же расчёт и сравнивает. Сеть не нужна, потому что обе стороны уже владеют общим секретом.
Как получить 2FA?
Она включается в настройках того аккаунта, который вы хотите защитить: откройте настройки, перейдите в раздел «Безопасность» или «Вход и безопасность» и найдите пункт «Двухфакторная аутентификация» или «Двухэтапная проверка». Выберите вариант с приложением-аутентификатором, отсканируйте QR-код (или покажите ключ настройки) и введите код, который покажет ваш аутентификатор, для подтверждения. Наше пошаговое руководство объясняет, как получить код без телефона: /ru/how-to-get-2fa-code/.
Как включить 2FA?
Четыре шага: 1) Откройте настройки аккаунта или безопасности сервиса и выберите «Двухфакторная аутентификация». 2) Выберите «Использовать приложение-аутентификатор» (по возможности избегайте SMS). 3) Отсканируйте QR-код своим аутентификатором — или нажмите «не удаётся отсканировать?» и сохраните ключ настройки. 4) Введите живой код для завершения и скачайте или распечатайте предложенные резервные коды. Мы публикуем руководства по настройке для Google, GitHub, Discord, Binance и других сервисов в /guides/.
Насколько надёжна 2FA?
Это полностью зависит от того, какой второй фактор вы используете. SMS-коды — самые слабые: при подмене SIM-карты злоумышленник крадёт ваш номер и получает коды сам. TOTP-коды аутентификатора — те, что обновляются каждые 30 секунд, — вычислительно надёжны: офлайн-злоумышленник не сможет их вычислить, и каждый код истекает за секунды. Физические ключи безопасности и passkey — самый сильный вариант: они устойчивы к фишингу и криптографически привязаны к настоящему домену.
Безопасна ли 2FA на 100%?
Ни одна мера безопасности не защищает на 100%, и честные руководства по 2FA признают это. 2FA побеждает украденные пароли, но сам код всё же может попасть к фишерам, если вы введёте действующий код на поддельном сайте в пределах его 30-секундного окна; вредоносное ПО, уже присутствующее на вашем устройстве, может украсть сессии; а если ваш второй фактор — SMS, подмена SIM-карты — реальная угроза. Тем не менее включённая 2FA делает вас несравнимо менее уязвимым, чем аккаунт, защищённый только паролем.
Является ли 2FA обязательной?
По закону — нет, но всё больше сервисов вводят её принудительно: GitHub требует её от разработчиков с 2023 года, многие банки и криптобиржи включают её в обязательном порядке, а работодатели часто требуют её для рабочих доступов. В остальных случаях она необязательна, но крайне рекомендуется. На практике относитесь к ней как к обязательной на самых ценных аккаунтах: сначала почта, потому что тот, кто контролирует ваш почтовый ящик, может восстановить доступ ко всему остальному.
Почему теперь все используют 2FA?
Потому что эпоха «просто пароля» рухнула. Масштабные утечки обнародовали миллиарды учётных данных, атаки credential stuffing автоматизировались и подешевели, а платформам теперь приходится расплачиваться за захваченные аккаунты. Подключились и регуляторы: NIST исключил SMS как способ аутентификации из своих стандартов США, а европейские нормы PSD2 требуют усиленной аутентификации клиента. Когда несколько гигантов сделали 2FA нормой, все остальные сервисы подтянулись.
В чём разница между TOTP, HOTP и OTP?
OTP — это просто «одноразовый пароль». TOTP (OTP на основе времени, RFC 6238) вычисляет код из текущего времени, поэтому он меняется каждые 30 секунд. HOTP (RFC 4226) основан на счётчике: каждый код используется один раз, а счётчик увеличивается. Практически все сервисы с «приложением-аутентификатором» — Google, Microsoft, Discord, GitHub — используют TOTP.
Почему TOTP лучше SMS?
SMS-коды передаются по телефонной сети, где атака с подменой SIM-карты может их перехватить или украсть, — да и доставка SMS в принципе может просто не сработать. TOTP-коды вычисляются на вашем устройстве, никогда не передаются по сети и истекают за секунды. Органы безопасности, такие как NIST, исключили SMS из средств аутентификации.
Может ли фишинговый сайт украсть TOTP-коды?
Да — если вы введёте свежесгенерированный код на поддельной странице, пока он действует (30 секунд), злоумышленник получит рабочий вход. Именно поэтому устойчивые к фишингу факторы (физические ключи безопасности и passkey, которые криптографически привязаны к настоящему домену) — самый сильный вариант там, где они доступны. TOTP превосходит SMS и пароли, но не физические ключи.
Где лучше хранить мой секретный ключ 2FA?
В зашифрованном хранилище менеджера паролей — как главную копию. Так вы сможете заново генерировать коды на любом доверенном устройстве — даже в браузере с помощью инструмента вроде 2facounter.com — если телефон окажется недоступен. Сохраните также резервные или коды восстановления, которые каждый сервис выдаёт при включении 2FA: это ваше настоящее спасательное средство.