Подтвердить что ты не робот

Как создаются криптографические хэш-функции?

После чтения о том, почему односторонние хеш-функции являются односторонними, я хотел бы знать, как создать хеш-функцию. Да, я знаю, что это плохая идея не использовать проверенную и проверенную хеш-функцию, но мне все равно хотелось бы знать, что имеет значение в дизайне и как выглядит процесс проектирования.

Я знаком с шифрами сети Файстель, но они обязательно обратимы, что ужасно для криптографического хэша. Существует ли какая-то конструкция, которая хорошо используется в криптографическом хешировании? Что-то, что делает его односторонним?

4b9b3361

Ответ 1

В настоящее время существует NIST hash function, цель которого - найти замену для более старых функций SHA-1 и SHA-2.
Вы можете получить документы для всех присутствующих там алгоритмов (см. здесь для заявок в 2 раунде). Существует множество различных хеш-функций, а также их сильные стороны и проблемы.

Ответ 2

"Односторонняя" хэш-функция не так просто вычислить. Показано, что хеш-функции имеют хорошее качество, вынося контроль над криптографическим сообществом в течение длительного периода времени. Вы можете взглянуть на некоторые опубликованные атаки на существующие хэш-функции и попытаться создать хеш-функцию, которая специально избегает их, но даже тогда она может оказаться слабой для новой атаки.

Для очень хорошей отправной точки, хотя я бы рекомендовал прочитать на конкурсе NIST (см. ответ tanascius).

Ответ 3

Прежде всего, вы должны прочитать глава 9 "Справочника" . Полное название этой книги - "Руководство по прикладной криптографии".

Далее я рекомендую вам взглянуть на анализ существующих хеш-функций. Например, Skein является одним из сильнейших конкурентов SHA-3. Skien публикация содержит много документации о том, как она построена, и доказано для обеспечения безопасности.

Ответ 4

Вы должны начать с книгой Брюса Шнайера Это всеобъемлющий вводный учебник по разработке критографических алгоритмов всех видов

Ответ 6

Функция хеширования и другие криптографические функции создаются с использованием очень сильных математических понятий. Большинство из них построены таким образом, что он не обязательно не может их перевернуть/расшифровать, но в зависимости от производительности современных компьютеров это невозможно. Вот почему ранее сертифицированный алгоритм DES и MD5 теперь устарел. При этом я предлагаю вам сначала прочитать математические концепции, связанные с криптографическими хеш-функциями. Какие? Я оставил бы это для того, кто более осведомлен, чем я:)

Ответ 7

Шифр ​​может быть преобразован в хеш-функцию, просто отбрасывая часть результата. Хотя это не самый быстрый способ создания хеш-функции, и он, безусловно, не будет работать в тех случаях, когда может потребоваться биективная хеш-функция (например, функция, которая будет принимать 128 бит ввода и выдаст 128 бит вывода, например что каждое возможное значение вывода будет происходить для некоторого ввода), он должен работать адекватно для многих целей.

Единственный тип биективной односторонней функции, которую я смог сформулировать сам, будет (пример приведен для 128- > 128):

  • Сопоставьте ввод всех нулей на вывод всех нулей.
  • Для любого другого ввода загрузите регистр сдвига с линейной обратной связью со всеми 1, интерпретируйте ввод как 128-битный счетчик сдвига и запустите сдвиг для этого большого количества отсчетов (обратите внимание, что это не требует выполнения фактически 2 ^ 128 шагов!).

Реверсирование одностороннего хэша потребует решения задачи дискретного журнала. Для большого количества бит это действительно тяжелая проблема, но, к сожалению, я считаю, что существуют подходы к ее решению с n = 128. Я подозреваю, что использую цифровую базу, большую, чем 2, и использование фундаментальной операции, отличной от xor, может улучшить силу подхода, но я не знаю, как анализировать такие настройки, чтобы функция была биективной.