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 [EMAIL PROTECTED]
> with a subject of "unsubscribe". Trouble? Contact 
> [EMAIL PROTECTED]
> 


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Ответить