OTP S / KEY - Как генерируются семена, являются ли они случайными каждый раз? - PullRequest
2 голосов
/ 18 февраля 2010

Я смотрю на разработку системы аутентификации по одноразовому паролю (j2me для телефона, php для серверной части)

Я пытаюсь разобраться в этом процессе, вот что я понимаю

  1. пользователь> вводит случайный секрет (S) в хэш n раз
  2. пользователь> отправляет S ^ n на сервер
  3. сервер> сохраняет n и S ^ n
  4. пользователь> генерирует (S ^ n) -1 и отправляет на сервер
  5. server> принимает пользовательский ввод и применяет функцию хеширования еще 1 раз и проверяет ее по ранее сохраненному хешу

Теперь из чтения RFC2289 (S / Key). Существует начальное число, которое выдается клиенту и соединяется с секретом пользователя, когда они вводят уникальный идентификатор (на шаге 4). это хранится.

1 Ответ

1 голос
/ 15 декабря 2011

Начальное число согласовывается сервером и клиентом во время инициализации последовательности паролей . Поэтому это делается только один раз, прежде чем OTP используются для аутентификации. Семя должно быть случайным, но клиент должен иметь возможность выбрать его. Другими словами, сервер может предложить случайное начальное число, но у клиента должна быть возможность создать собственное (случайное) начальное число. Затем семя должно храниться на сервере. Сервер фактически не использует его во время аутентификации. Он хранит его только для того, чтобы он мог представить его пользователю во время аутентификации вместе с порядковым номером. И семя, и порядковый номер не являются секретными .

...