Как создать контакты с одним паролем (он же Google 2-Factor-Auth) - PullRequest
1 голос
/ 13 июня 2011

возможно, некоторые из вас знают, что Googles 2-Factor-Authentication; Сначала Google генерирует постоянный пароль (например, «abcd»). Если вы авторизуетесь, вас попросят ввести пин-код, приложение может сгенерировать его или вы можете использовать один из 10 предустановленных контактов. Интересно то, что вам не нужно использовать один пин, приложение генерирует случайный случай без использования доступа к сети.

Как это сделать? Я знаю, как сделать это с одним конкретным контактом, но как вы могли бы использовать несколько «случайных» контактов?

Спасибо, Marc

Ответы [ 2 ]

2 голосов
/ 14 июня 2011

Это возможно благодаря таким системам, как HOTP (OTP на основе хеша). RFC объясняет, как это работает подробно, но вкратце:

  1. Сервер генерирует случайный секретный ключ и передает его генератору OTP.
  2. Обасервер и генератор OTP инициализируют счетчик равным 0.
  3. Когда пользователь запрашивает новый ключ у генератора OTP, он увеличивает счетчик, вычисляет его HMAC , используя общий ключ, икодирует часть хэша указанным способом, что приводит к числовому коду.
  4. Когда сервер получает код OTP, он выполняет те же вычисления, принимая его, если он совпадает.Если это не так, он пытается снова с несколькими другими (более крупными) идентификаторами счетчика, если пользователь пропустил один или несколько идентификаторов.

Предварительно сгенерированные списки OTP просто создаются, как описано выше, передвремя.

0 голосов
/ 13 июня 2011

Я считаю, что Google делает это путем вычисления нескольких выводов, которые, по его мнению, вы могли бы использовать, и готов принять любой из них, который соответствует.

Это важная функция юзабилити, потому что это означает, что если кто-то не сможет войти в систему один раз, используя 2-фактор, он может попытаться войти в другой раз и все еще будет в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...