Я пересматриваю курс по компьютерной безопасности и застрял на одном из прошлых вопросов. Вот:
Алиса ( ) хочет отправить короткое сообщение M Бобу ( B ), используя общий секрет S a b, чтобы подтвердить, что сообщение пришло от нее. Она предлагает отправить одно сообщение из двух частей: A → B : где h - хеш-функция и ∥ обозначает конкатенацию.
- Тщательно объясните, что делает Боб, чтобы проверить, что сообщение пришло от Алисы, и почему (кроме свойств ) он может в это поверить.
- Предположим, что не удовлетворяет одностороннему свойству и возможно генерировать предварительные изображения. Объясните, что может сделать злоумышленник и как.
- Если генерация предварительных изображений занимает сравнительно много времени, предложите простую контрмеру для улучшения протокола без изменения .
Я думаю, что знаю первый. Бобу нужно взять хеш полученного сообщения вместе со своим общим ключом и сравнить этот хеш с хешем, полученным от Алисы, если они совпадают, это должно доказать, что Алиса отправила его.
Я не уверен насчет вторых двух вопросов. Во втором случае ответ будет таким: злоумышленник может просто получить исходное сообщение с помощью хэша? Я не уверен, как это будет сделано, хотя.
Ответы:
По второму вопросу: если легко создать предварительные изображения , злоумышленник может узнать секретный ключ из тем самым нарушив схему. (Обратите внимание, что это может быть не тривиально. Процесс инвертирования может вывести , что , но это не полезно для противника. Кроме того, если злоумышленник попытается снова инвертировать , он может получить то же самое изображение.)h Sab h(M∥Sab)
M1,S1 h(M∥Sab)=h(M1∥S1) h
Третий вопрос: теперь мы предполагаем, что инвертирование занимает много времени, поэтому давайте усложним жизнь противника, потребовав от него инвертировать его много раз, чтобы нарушить схему. Например, используйте хэш раз . Существуют и другие решения.h k h(h(h(....h(M∥Sab)..))
источник