Re: чем плоха "подпись" с помощью хэш-функции?
On 2007.06.22 at 10:49:58 +0400, Ed wrote:
>
> я контролирую и отправителя и получателя.
>
> данные несекретные, шифровать их особого смысла нет. но получатель
> должен убедиться, что данные отправил действительно отправитель.
>
> чем плохо поступить так - заранее сгенерировать ключ (просто
> последовательность байт), далее приписываем этот ключ к сообщению и
> генерируем для пары сообщение+ключ хэш (тот же sha1). передаем сообщение
> + хэш - зная ключ мы легко можем проверить подлинность сообщения.
Это частный случай MAC - message authentication code.
Реально используемые MAC-и практически всегда базируются именно на
хэшах. Называется HMAC. Рекомендую ознакомиться с описанием алгоритма
HMAC, там сделано чуточку похитрее, чем просто дописывание ключа к
сообщению. И в rfc2104 слегка объясняется почему делается именно так.
Причем HMAC настолько распространен, что многие разработчики
криптографического софта вообще не в курсе, что бывают MAC-алгоритмы,
базирующиеся не на хэш-функции, например ГОСТ 28147-89 в режиме
имитовставки.
> из минусов пока вижу только необходимость безопасно доставить ключ на
> обе стороны - но в данном случае это проблемы не представляет.
Это во многих случаях проблем не представляет.
Например, в протоколе TLS(SSL) где каждая запись защищается MAC-ом
всё равно вырабатывается общий секрет для шифрования. Поэтому ничто не
мешает нагенерить секрета побольше, и использовать его часть для MAC.
Еще MAC-ом очень часто защищаются шифрованные сообщения.
Потому что нужен какой-то способ убедиться в корректности расшифрования.
Соответственно, считаем MAC на симметричном ключе шифрования и
дописываем к сообщению. Если при расшифрвании использован правильный
ключ, MAC посчитанный на нем после расшифрования совпадет.
> а с точки зрения криптостойкости - хуже этот вариант обычной подписи
Тем что секрет знают двое. Поэтому не обладает свойством неотрекаемости.
Т.е. получатель сообщения не может предъявить третьему лицу (судье) это
сообщение и утверждать, что подписал его именно отправитель. Ведь у него
самого была полная возможность это сообщение сгенерировать.
> (afaik формируем хэш и шифруем его)?
Это - не совсем верно. Шифруют хэш только в алгоритме RSA.
В алгоритмах на базе схемы Эль-Гамаля (DSA, ECDSA, ГОСТ Р 34.10)
происходит не (обратимое) шифрование. Там делается необратимое
преобразование исходного сообщения (т.е. хэша), да ешё и с подмешиванием
случайного числа. Просто существует такая последовательность
арифметических операций, которая позволяет убедиться что данный хэш
соответствует данной подписи. А вот имея только подпись и открытый ключ,
узнать хэш исходного сообщения нельзя.
>
> --
> To UNSUBSCRIBE, email to debian-russian-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact
> listmaster@lists.debian.org
>
Reply to: