😀 То, что мы часто называем аутентификацией, предназначено для подтверждения личности пользователя и является необходимым средством для выполнения важных операций, таких как вход на сайт, снятие наличных в банке и т. д.
Использование паролей — наиболее распространенный метод аутентификации в жизни, но пароли — это отдельные факторы, они небезопасны и могут легко быть раскрыты и выданы за другое лицо. Сегодня мы узнаем о более безопасном методе аутентификации – двухфакторной аутентификации.
Двухфакторная аутентификация (сокращенно 2FA). Чтобы понять, что такое 2FA, нам сначала нужно знать, что такое двухфакторная аутентификация.
Факторы здесь относятся к доказательствам, подтверждающим личность человека, которые обычно можно разделить на три типа доказательств.
Чем больше факторов используется при аутентификации, тем лучше можно доказать личность человека и тем надежнее будет эта личность.
Возвращаясь к тому, что мы сегодня называем «двухфакторной аутентификацией», мы можем ясно понять ее значение: для аутентификации требуются доказательства от двух факторов одновременно. Например: банковские карты — это самая распространенная в жизни двухфакторная аутентификация. Пользователи должны предоставить свою банковскую карту и пароль для снятия наличных в банкомате.
Распространенная двухфакторная комбинация — пароль + какой-нибудь личный предмет, например USB-Shield для онлайн-банкинга. Пользователи должны подключить U-Shield и ввести свой пароль для входа в онлайн-банкинг (U-Shield практически больше не используется, а настоящий U-Shield показан на рисунке ниже).
Однако пользователи не могут постоянно носить с собой U-образный щиток, и лучшей заменой являются мобильные телефоны. Пароль + мобильный телефон становится лучшим решением для двухфакторной аутентификации. На многих веб-сайтах также есть такие требования. При входе в учетную запись после входа пользователя в систему с использованием учетной записи и пароля им все равно необходимо предоставить код подтверждения, отправленный по SMS, чтобы доказать, что пользователь действительно владеет мобильным телефоном.
Однако текстовые сообщения небезопасны. Сообщения можно легко перехватить или подделать с помощью поддельных базовых станций, а SIM-карты также можно заменить. Раньше можно было переоформить номер мобильного телефона с помощью удостоверения личности. Преступники сначала подделали удостоверение личности, затем запросили новый номер мобильного телефона главы семьи, получили на мобильный телефон код подтверждения и перевели деньги. посредством аутентификации с помощью проверочного кода.
Поэтому двухфакторная аутентификация с использованием СМС в качестве дополнительного фактора весьма ненадежна, о чем мы и поговорим сегодня. TOTP。
TOTP Полное название — «Одноразовый пароль на основе времени» (Одноразовый пароль на основе времени) One-time Пароль). Это международно признанное и надежное решение, вписанное в международные стандарты. RFC6238。
Этапы расчета TOTP:
Благодаря этапам расчета TOTP мы знаем, что хэш-код проверки действителен только в течение 30 секунд, так как же мобильный телефон может быть согласован с сервером?
Мы можем представить, что пока мобильный телефон и сервер совместно поддерживают счетчик времени, то при одном и том же отсчете времени полученные хеш-коды проверки будут согласованными.
Так как же поддерживать одинаковый счетчик времени на мобильном телефоне и на сервере? Затем посмотрите вниз
TC = floor((unixtime(now) − unixtime(T0)) / TS)
В этой формуле TC представляет собой счетчик времени.,unixtime(now)
актуален Unix Временная метка (считается с 1 января 1970 г.),unixtime(T0)
Это временная метка согласованной начальной точки времени.,Значение по умолчанию:0
,Это 1 января 1970 года. ТС — продолжительность периода действия хеша, значение по умолчанию — 30 секунд.
TC = floor(unixtime(now) / 30)
Следовательно, пока время сервера и мобильного телефона синхронизировано, в течение этих 30 секунд значение TC будет одинаковым, и хэш-код проверки будет таким же.
Рассчитать хэш-код проверки
TOTP = HASH(SecretKey, TC)
HASH
Это согласованная хэш-функция,По умолчанию используется SHA-1.TOTP имеет аппаратные и программные генераторы, но оба используют описанный выше алгоритм. Фактический аппаратный генератор TOTP показан ниже.
Генераторы программного обеспечения TOTP, представленные в настоящее время на рынке, включают Google Authenticator, Microsoft Authenticator, Tofu Authenticator и т. д. Интерфейс показан ниже.