Ответ 1
Это очень мало связано с хеш-функциями. Криптографическая хэш-функция может быть частью реализации, но она не требуется.
На самом деле, он генерирует цифры по временному интервалу, если я нажимаю кнопку для ее генерации цифр, он генерирует цифры и примерно через 25 секунд, я нажимаю ее снова, цифры меняются не тогда, когда я нажимаю это снова сразу после того, как я просто нажал.
Вот ваш намек. Это временный псевдослучайный или криптографический алгоритм. Основываясь на времени, есть код. Ключ и сервер знают код для каждого окна. Это общий секрет - ключ не подключается к удаленному серверу. Вместо этого он знает все, что нужно, чтобы знать, какой токен дать вам в зависимости от времени. Возможно, сервер разрешит один или два последних секретных ключа, чтобы предотвратить ситуацию, когда вы вводите ключ, который только что истек, пока передача была в пути.
(Хотя мой недавний опыт использования многофакторной аутентификации Amazon Web Service определенно привел к ошибкам входа в систему в течение 5 секунд после отображения кода для меня. Другими словами, некоторые вендеры очень строгие с их временными окнами. Как всегда, это компромисс между безопасностью и удобством использования.)
Сокращения CodesInChaos упоминаются Одноразовый пароль (TOTP), основанный на времени и Одноразовый пароль HMAC (HOTP), два алгоритма, обычно используемые в двухфакторной аутентификации.
В Википедии есть что сказать о RSA SecurID, определенном бренде two-factor-authentication. (Я выбрал эту статью, потому что у нее есть разумное физическое описание, статьи более высокого уровня сосредоточены на теоретических по физической реализации.)
Механизм аутентификации RSA SecurID состоит из "токена" - либо аппаратного обеспечения (например, USB-ключа), либо программного обеспечения (мягкого токена) - который назначается пользователю компьютера и который генерирует код аутентификации с фиксированными интервалами (обычно 60 секунд), используя встроенные часы и карту factory -кодированный случайный ключ (известный как "семя" ). Семя различается для каждого токена и загружается на соответствующий RSA SecurID-сервер (RSA Authentication Manager, ранее ACE/Server) по мере покупки токенов.
В статье также подтверждается, что вам нужно хранить секретность токена, или кто-то другой может выдавать себя за ваши логины, зная, что коды так же легко, как и вы.
Оборудование для токенов предназначено для защиты от несанкционированного доступа для предотвращения обратной инженерии. Когда на рынке появились программные реализации того же алгоритма ( "токены программного обеспечения" ), общественный код был разработан сообществом безопасности, позволяющим пользователю эмулировать RSA SecurID в программном обеспечении, но только если у них есть доступ к текущему коду RSA SecurID, и исходный 64-разрядный начальный файл RSA SecurID, представленный на сервере.
Однако, поскольку проверяющий сервер должен предузнать токены, секреты с двумя факторами также уязвимы для атак на источник. SecurID стал жертвой широкомасштабной кражи, нацеленной на собственные серверы, и в конечном итоге привел к вторичным вторжениям на серверы своих клиентов.
Наконец, на веб-сайте security.stackexchange имеется более подробная информация по многофакторному тегу, а также на этом сайте в разделе two-factor-authentication.