Криптография: проверка подписанных временных меток

Я пишу одноранговый сетевой протокол, основанный на доверии пары секретный / открытый ключ. Для проверки и дедупликации сообщений, отправленных хостом, я использую проверку по метке времени. Хост не доверяет сообщению другого хоста, если подписанная метка времени имеет дельту (к текущему) больше 30 секунд или около того.

Я только что столкнулся с интересной проблемой, что мой тестовый сервер и мой второй клиент не синхронизированы примерно на 40 секунд (исправлено обновлением ntp).

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

1 ответ

Решение

Хост не доверяет сообщению другого хоста, если подписанная метка времени имеет дельту (к текущему) больше 30 секунд или около того.

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

Основанный на счетчике обычно легче и не делает DoS сам по себе.


Мне было интересно, какова будет приемлемая разница во времени...

Microsoft Active Directory использует 5 минут.


если есть лучший способ предотвратить повторные атаки

Счетчик основан на вызове / ответе.


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

Возможно, вы могли бы использовать пару {time, nonce}. Если одноразовый номер не был ранее записан, то действуйте в сообщении, если оно находится в пределах времени. Затем удерживайте сообщение (с {time,nonce}) для окна (5 минут?).

Если вы снова столкнетесь с тем же самым одноразовым номером, не действуйте по нему. Если вы столкнулись с невидимым одноразовым номером, но с разницей во времени, то не действуйте. Очистите ваш список одноразовых сообщений по случаю (каждые 5 минут?).


Я пишу одноранговой сети на основе протокола...

Если вы посмотрите вокруг, то вы, вероятно, найдете протокол в научной литературе.

Другие вопросы по тегам