Внедрение и реализация принципа двухфакторной аутентификации (2FA).
Внедрение и реализация принципа двухфакторной аутентификации (2FA).

😀 То, что мы часто называем аутентификацией, предназначено для подтверждения личности пользователя и является необходимым средством для выполнения важных операций, таких как вход на сайт, снятие наличных в банке и т. д.

Использование паролей — наиболее распространенный метод аутентификации в жизни, но пароли — это отдельные факторы, они небезопасны и могут легко быть раскрыты и выданы за другое лицо. Сегодня мы узнаем о более безопасном методе аутентификации – двухфакторной аутентификации.

Концепция двухфакторной аутентификации

Двухфакторная аутентификация (сокращенно 2FA). Чтобы понять, что такое 2FA, нам сначала нужно знать, что такое двухфакторная аутентификация.

Факторы здесь относятся к доказательствам, подтверждающим личность человека, которые обычно можно разделить на три типа доказательств.

  • Секретная информация: некоторая информация, которую знает только пользователь и никто другой, например пароль.
  • Личные вещи: личные вещи пользователя, такие как удостоверение личности и ключи.
  • Физиологические характеристики: генетические характеристики пользователя, такие как отпечатки пальцев, внешний вид, радужная оболочка глаз и т. д.

Чем больше факторов используется при аутентификации, тем лучше можно доказать личность человека и тем надежнее будет эта личность.

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

Двухфакторная аутентификация

Распространенная двухфакторная комбинация — пароль + какой-нибудь личный предмет, например USB-Shield для онлайн-банкинга. Пользователи должны подключить U-Shield и ввести свой пароль для входа в онлайн-банкинг (U-Shield практически больше не используется, а настоящий U-Shield показан на рисунке ниже).

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

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

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

Введение в ТОТП

TOTP Полное название — «Одноразовый пароль на основе времени» (Одноразовый пароль на основе времени) One-time Пароль). Это международно признанное и надежное решение, вписанное в международные стандарты. RFC6238

Этапы расчета TOTP:

  1. Пользователь включает Двухфакторную систему в настройках безопасности. аутентификация, сервер генерирует ключ, который может быть в виде QR-кода (основное содержимое QR-кода и есть этот ключ).
  2. Пользователю необходимо записать этот ключ, например, отсканировать QR-код через программу TOTP (или использовать другие методы), и сохранить сотовый ключ для пользователя. телефонсередина. В настоящее время сервер и пользователь сотовый Этот ключ сохраняется в телефоне, и последующая проверка осуществляется на основании этого ключа.
  3. Динамический Проверочный, необходимый для ввода TOTP при входе пользователя в систему. код,В это времясотовый Программный генератор TOTP в телефоне будет использовать этот ключ и текущую метку времени для генерации хеша, который обычно действителен в течение 30 секунд. В течение этого периода действия пользователи могут использовать этот хэш. Проверочный код и отправьте его на сервер.
  4. сервер Подтвердить этот хэш код, на этот раз ключ и текущая временная метка будут использоваться для генерации хеша. Проверочный код и с хэшами, предоставленными пользователем. код для сравнения. Сертификация может быть пройдена только в том случае, если они совпадают.

TOTP-алгоритм

Благодаря этапам расчета TOTP мы знаем, что хэш-код проверки действителен только в течение 30 секунд, так как же мобильный телефон может быть согласован с сервером?

Мы можем представить, что пока мобильный телефон и сервер совместно поддерживают счетчик времени, то при одном и том же отсчете времени полученные хеш-коды проверки будут согласованными.

Так как же поддерживать одинаковый счетчик времени на мобильном телефоне и на сервере? Затем посмотрите вниз

Язык кода:javascript
копировать
TC = floor((unixtime(now) − unixtime(T0)) / TS)

В этой формуле TC представляет собой счетчик времени.,unixtime(now)актуален Unix Временная метка (считается с 1 января 1970 г.),unixtime(T0)Это временная метка согласованной начальной точки времени.,Значение по умолчанию:0,Это 1 января 1970 года. ТС — продолжительность периода действия хеша, значение по умолчанию — 30 секунд.

Язык кода:javascript
копировать
TC = floor(unixtime(now) / 30)

Следовательно, пока время сервера и мобильного телефона синхронизировано, в течение этих 30 секунд значение TC будет одинаковым, и хэш-код проверки будет таким же.

Рассчитать хэш-код проверки

Язык кода:javascript
копировать
TOTP = HASH(SecretKey, TC)
  • HASHЭто согласованная хэш-функция,По умолчанию используется SHA-1.

TOTP-классификация

TOTP имеет аппаратные и программные генераторы, но оба используют описанный выше алгоритм. Фактический аппаратный генератор TOTP показан ниже.

Генераторы программного обеспечения TOTP, представленные в настоящее время на рынке, включают Google Authenticator, Microsoft Authenticator, Tofu Authenticator и т. д. Интерфейс показан ниже.

📎 Справочная статья

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose