Чувствительный ко времени хэш проверки сообщения - получение свободного значения времени - PullRequest
0 голосов
/ 08 апреля 2009

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

Чтобы отправить сообщение, пользователь вводит свой пароль, который хэшируется вместе с сообщением. Полученный хеш отправляется с сообщением на сервер для проверки. Сервер выполняет тот же хэш и сравнивает его значение с предоставленным.

verificationKey = Hash(message + password);

Это прекрасно работает для проверки сообщения против пользователя, но мне нужно предотвратить повторную отправку злоумышленником. Злоумышленник может просто снова передать ту же информацию, и она будет принята.

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

verificationKey = Hash(message + password + time);

Очевидно, что если значение времени является конкретным, любое несоответствие между клиентом и сервером вызовет проблемы. Даже если значение времени округлено до ближайшего целого часа, будет момент времени (x: 30), где значения могут отличаться из-за времени, затраченного на передачу сообщения.

Может ли кто-нибудь дать какие-либо предложения о том, как бы я получал ценность свободного времени, подобную этой?

Ответы [ 2 ]

2 голосов
/ 08 апреля 2009

Просто округлите отметку времени до нескольких секунд - возможно, до 2, 5 или 10. Сервер должен попытаться выполнить проверку дважды - один раз с текущей и один раз с последней отметкой времени.

1 голос
/ 08 апреля 2009

Один из подходов состоит в том, чтобы хэшировать со временем, а затем также добавить время (после его запутывания). Когда вы получите сообщение, удалите время, расшифруйте его, а затем проведите сравнение TimeSpan с временем сервера. Если оно достаточно близко, вы можете расшифровать все сообщение.

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