- ша1(вар1 + ша1(вар2))
- sha1(var1 + var2)
Ни один из них не является очень безопасным. Не изобретайте велосипед. Для этого был разработан HMAC; в частности, предпринимаются шаги (заполнение и т. д.), чтобы избежать проблем с определенными недостатками в определенных алгоритмах хеширования, которые плохо взаимодействуют с вышеупомянутыми «простыми» реализациями.
Кроме того, двойное хеширование бесполезно для повышения безопасности. Подумайте: в лучшем случае вы сопоставите одно случайное значение с другим случайным значением. Однако в случае коллизии два результирующих значения из второго хэша равны, вы потеряли безопасность из-за коллизии. То есть вы никогда не сможете избавиться от коллизии таким образом, но вы можете ее получить.
Тем не менее, существующие атаки на прообразы могут не работать против двойного хеширования... но! Они еще могут работать. Я не могу сказать, что, и если вы спрашиваете об этом здесь, вы, вероятно, тоже. Конечно, атаки на столкновение, которые на сегодняшний день представляют собой единственное практическое применение MD5, не защищены от двойного хеширования.
Лучше всего придерживаться проверенных алгоритмов, которые выдержали десятилетия анализа, потому что с помощью криптографии слишком легко сделать что-то, что выглядит безопасным, но на самом деле таковым не является.
person
bdonlan
schedule
04.08.2009