Здравствуйте, Andrew,
Вы писали к Dmitry Sklyarov от Fri, 14 Aug 2009 09:41:44 +0000 (UTC):
[...]
AAM> в формуле). пару лет назад мы с Сергеем Леонтьевым на эту тему
AAM> общались вроде даже здесь. изменения связаны с тем, что "где набрать
AAM> стока ключей". а любая (ну почти любая) модификация ключа на циклах
AAM> ничего не даст, так как мы знаем процедуру хэширования, получения
AAM> ключа и проч. бай дефинишен знаем
AAM> ...
DS>> В случае же многократного хеширования - если хеш хороший
DS>> (необратимый),
AAM> криптографически стойкий
Э-э, батеньки, этого недостаточно.
Вспоминая известную проблему PKCS#12 (точнее PKCS#5).
Есть ещё одна проблема, или дополнительные требования на хэш функции, обычно
не предъявляемые к ним.
Ясное дело, практически любая известная нам хэш функция H(x) является
сжимающим преобразованием (сюръективным). А всяческие методы анализа,
например, тривиальный "парадокс дней рождений", зависят от мощности области
значений. Соответственно, H^n(x) является значительно менее стойкой
хэш-функцией, чем H(x), что и ограничивает величину n.
Использование PRF(p,x) в качестве H(x) слегка улучшает ситуацию, т.к.
позволяет уменьшить n в два раза при той же вычислительной сложности
(возможно, для совсем уж несчастных хэш функций, он даже сможет заметно
снизить скорость сходимости к неизбежному циклу и/или увеличить его длину).
Как мне кажется (с потолка), для ГОСТ Р 34.11-94, n должно быть ограничено
2^14-2^18, т.е. на моём настольном компьютере можно будет обеспечить
скорость подбора около 100 паролей в секунду, при максимальном оптимизме.
В общем, на мой взгляд, для PKCS#12 и прочих методов получения ключа по
паролю надо разрабатывать сильно другие хэш функции, например, с
использованием эллиптических кривых, типа H(x) = VKO(UKM, x, P). Что бы,
хотя бы создать видимость защиты и/или аутентификации пользователя. Или,
наконец, констатировать смерть паролей.
--
Успехов, Сергей Леонтьев. E-mail: ***@sai.msu.ru <http://www.cryptopro.ru>