Хеш (Hash) — что это такое, для чего нужно?

Хеш (Hash) — функция криптографического типа, благодаря которой данные произвольного размера приводятся в фиксированный размер в битовом массиве. Результат, который добывают в результате применения математического алгоритма, называют суммой, а вводные данные — сообщением. Правильная функция Hash выполняется при следующих условиях: детерминированность, быстрое вычисление для любого сообщения, отсутствие двух разных сообщений с одинаковым значением хеша.

Основные свойства

Благодаря криптографической Hash функции достигается высокий уровень безопасности по всем известным типам криптоаналитических атак. Теоретический уровень безопасности подтверждается следующими свойствами:

  • Устойчивость к нахождению прообраза;
  • Коллизия;
  • Устойчивость к нахождению второго прообраза.

Коллизия происходит в том случае, когда разные исходные данные дают результат одинакового хеша. Устойчивость обеспечивается до того момента, когда будет выявлена пара сообщений с одинаковым выходом. Такую уязвимость системы полностью исключить невозможно, так как число входов бесконечно, но для выходов — конечно. Поэтому Hash функция будет устойчивой, если для получения пары сообщений с одинаковым выходом возможно только после сверхсложных вычислений, для которых потребуется несколько миллионов лет.

Pre-image resistance определяет устойчивость сопротивления прообразу. Алгоритм считается безопасным, если вероятность нахождения сообщений, сгенерированным заданным хешем, крайне мала. Такое свойства имеет большое значение с точки зрения защиты данных, так как именно посредством Hash сообщений доказывается подлинность. При этом отсутствует необходимость раскрытия информации.

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

Простыми словами, высокие показатели по всем параметрам — залог того, злоумышленники не смогут заменить или скорректировать входные данные без изменения хеша.

Применение Hash

Основное назначение функций Hash предполагает следующие возможности:

  • анализ целостности файлов/сообщений;
  • проверка паролей;
  • создание цифровых подписей.

Все это поддерживает должный уровень безопасности и позволяет сохранять анонимность участникам криптосообщества.