Re: чем плоха "подпись" с помощью хэш-функции?
Fri, 22 Jun 2007 10:49:58 +0400, Ed <spied@yandex.ru>:
> схема:
> отправитель - небезопасный канал (интернет) - получатель
>
> я контролирую и отправителя и получателя.
>
> данные несекретные, шифровать их особого смысла нет. но получатель
> должен убедиться, что данные отправил действительно отправитель.
> чем плохо поступить так - заранее сгенерировать ключ (просто
> последовательность байт), далее приписываем этот ключ к сообщению и
> генерируем для пары сообщение+ключ хэш (тот же sha1). передаем сообщение
> + хэш - зная ключ мы легко можем проверить подлинность сообщения.
Как я понимаю, у Вас есть надёжный способ передать секретный ключ
получателю и обеспечить его секретность.
В этом случае вообще можно наладить полностью секретный
канал между отправителем и получателем средствами симметричного
шифрования, и считать всё, полученное по этому каналу, «надёжным».
Необходимость в "подписях" в этом случае отпадает.
Как и в Вашем предложении, использовать такую систему для подтверждения
авторства ("цифровой подписи") -- невозможно, так как ключ подписи
известен как минимум двум сторонам, и подписывать могут обе.
Отвечу на вопрос, почему плохо поступить так, как предлагаете Вы:
1) функции цифровой подписи такая система не выполняет, см. выше;
2) созданный Вами лично алгоритм защиты не пройдёт должного анализа и
не будет открыто обсуждаться; уязвимости и особенности широко
использованных алгоритмов широко обсуждаются и обычно известны;
практика применения «самодельных» криптосистем показывает их
ненадёжность; опять же, особенности работу разных хэш-функций, могут
сильно влиять на результат.
3) «самодельные» реализации даже известных и проверенных алгоритмов
более подвержены ошибкам и уязвимостям, так как никто не будет
проверять, насколько правильно и осмотрительно вы реализовали алгоритм.
4) зачем изобретать велосипед? выберите любую уже проверенную систему
цифровой подписи, широко используемую библиотеку с её реализацией и
пользуйтесь на здоровье.
Reply to: