Что такое криптографическая хеш-функция?
Криптографическая хеш-функция - это алгоритм, который можно запускать с такими данными, как отдельные лица. файл или пароль для получения значения, называемого контрольной суммой.
Основное использование криптографической хеш-функции - проверка подлинности фрагмента данных. Два файла можно считать идентичными, только если контрольные суммы, сгенерированные из каждого файла с использованием одной и той же криптографической хеш-функции, идентичны.
Некоторые часто используемые криптографические хеш-функции включают: MD5 а также SHA-1, хотя существуют и многие другие.
Криптографические хеш-функции часто называют «хеш-функциями», но это технически неправильно. Хэш-функция - это общий термин, который охватывает криптографические хеш-функции наряду с другими видами алгоритмов, такими как циклическая проверка избыточности.
Криптографические хеш-функции: пример использования
Скажем, вы загрузили последняя версия браузера Firefox. По какой-то причине вам нужно было загрузить его с сайта, отличного от сайта Mozilla. Поскольку он не размещается на сайте, которому вы научились доверять, вы хотели бы убедиться, что только что загруженный установочный файл точно такой же, как и тот, который предлагает Mozilla.
Используя калькулятор контрольной суммы, вы вычисляете контрольную сумму, используя определенную криптографическую хеш-функцию, такую как SHA-2, а затем сравниваете ее с той, которая опубликована на сайте Mozilla. Если они равны, вы можете быть разумно уверены, что загружаемая вами загрузка - это та, которую Mozilla вам предназначала.

Можно ли поменять местами криптографические хеш-функции?
Криптографические хеш-функции предназначены для предотвращения возможности обращения создаваемых ими контрольных сумм обратно к исходным текстам. Однако, несмотря на то, что их практически невозможно отменить, они не гарантируют 100-процентную защиту данных.
Хакеры могут использовать радужную таблицу, чтобы вычислить простой текст контрольной суммы. Радужные таблицы - это словари, в которых перечислены тысячи, миллионы или даже миллиарды контрольных сумм вместе с соответствующими значениями в виде обычного текста.
Хотя это технически не отменяет алгоритм криптографического хеширования, это вполне возможно, учитывая, что это так просто сделать. На самом деле, поскольку ни одна радужная таблица не может перечислить все возможные контрольные суммы, они обычно полезны только для простых фраз, таких как слабые пароли.
Вот упрощенная версия радужной таблицы, чтобы показать, как можно работать при использовании криптографической хеш-функции SHA-1:
Пример радужной таблицы | |
---|---|
Простой текст | Контрольная сумма SHA-1 |
12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
пароль1 | e38ad214943daad1d64c102faec29de4afe9da3d |
я люблю свою собаку | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
Jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
Даллас1984 | c1ebe6d80f4c7c087ad29d2c0dc3e059fc919da2 |
Хакер должен знать, какой алгоритм криптографического хеширования использовался для генерации контрольных сумм для определения значений.
Для дополнительной защиты некоторые веб-сайты, которые хранят пароли пользователей выполнять дополнительные функции в алгоритме криптографического хеширования после создания значения, но до его сохранения. Этот процесс создает новое значение, которое понимает только веб-сервер и которое не соответствует исходной контрольной сумме.
Например, после ввода пароля и генерации контрольной суммы ее можно разделить на несколько частей. и переставляется до того, как он будет сохранен в базе данных паролей, или некоторые символы могут быть заменены на другие. При попытке аутентификации в следующий раз, когда пользователь войдет в систему, веб-сервер меняет это значение на противоположное. дополнительная функция, и исходная контрольная сумма генерируется снова, чтобы проверить, что пароль пользователя является действительным.
Выполнение этих шагов ограничивает полезность взлома, когда все контрольные суммы украдены. Идея состоит в том, чтобы выполнить функцию, которая неизвестна, поэтому, если хакер знает алгоритм криптографического хеширования, но не знает пользовательского алгоритма, то знание контрольных сумм пароля бесполезно.
Пароли и криптографические хеш-функции
База данных сохраняет пароли пользователей аналогично радужной таблице. Когда ваш пароль введен, контрольная сумма создается и сравнивается с записанным с вашим именем пользователя. Затем вам будет предоставлен доступ, если они идентичны.
Учитывая, что криптографическая хеш-функция производит необратимую контрольную сумму, безопасно ли для вас сделать свой пароль таким же простым, как 12345, вместо того 12@34$5, просто потому, что сами контрольные суммы не могут быть поняты? Нет, и вот почему.
Эти два пароля невозможно расшифровать, просто взглянув на контрольные суммы:
MD5 для 12345:827ccb0eea8a706c4c34a16891f84e7b
MD5 для 12 @ 34 $ 5:a4d3cc004f487b18b2ccd4853053818b
На первый взгляд может показаться, что использовать любой из этих паролей - нормально. Это верно, если злоумышленник попытался выяснить ваш пароль, угадав контрольную сумму MD5, чего никто не делает, но неверно, если выполняется грубая сила или атака по словарю, что является распространенной тактикой.
Атака методом грубой силы происходит, когда при угадывании пароля предпринимается несколько случайных ударов. В этом случае было бы легко угадать 12345, но довольно сложно случайным образом вычислить другой. Атака по словарю аналогична тем, что злоумышленник может попробовать каждое слово, число или фразу из списка общих (и не очень распространенных) паролей, и 12345 - один из самых распространенных паролей.
Несмотря на то, что криптографические хеш-функции производят контрольные суммы, которые сложно или невозможно угадать, вам все равно следует использовать сложный пароль для всех ваших учетных записей онлайн и локальных пользователей.
Дополнительная информация о криптографических хэш-функциях
Может показаться, что криптографические хеш-функции связаны с шифрованием, но они работают по-разному.
Шифрование - это двусторонний процесс, при котором что-то зашифровывается, чтобы стать нечитаемым, а затем расшифровывается позже, чтобы снова использовать его в обычном режиме. Ты можешь зашифровать файлы, которые вы сохранили так что любой, кто обращается к ним, не может их использовать, или вы можете использовать шифрование передачи файлов для шифрования файлов, перемещающихся по сети, например загружаемых или загружаемых в Интернете.
Криптографические хеш-функции работают по-другому, поскольку контрольные суммы не должны быть отменены с помощью специального пароля для удаления хеширования. Единственная цель криптографических хеш-функций - это сравнение двух частей данных, например, при загрузке файлов, хранении паролей и извлечении данных из базы данных.
Криптографическая хеш-функция может выдавать одинаковую контрольную сумму для разных фрагментов данных. Когда это происходит, это называется коллизией, что является огромной проблемой, учитывая, что вся суть криптографической хеш-функции заключается в создании уникальных контрольных сумм для каждого ввода данных.
Коллизии могут возникать из-за того, что каждая криптографическая хеш-функция производит значение фиксированной длины независимо от входных данных. Например, криптографическая хеш-функция MD5 генерирует 827ccb0eea8a706c4c34a16891f84e7b, 1f633b2909b9c1addf32302c7a497983 и e10adc3949ba59abbe56e057f20f883e для трех совершенно разных блоки данных.
Первая контрольная сумма от 12345. Второй был создан из более чем 700 букв и цифр, а третий - из 123456. Все три входа имеют разную длину, но результат всегда составляет всего 32 символа, так как Контрольная сумма MD5 использовался.
Нет ограничений на количество контрольных сумм, которые могут быть созданы, потому что каждое крошечное изменение во входных данных должно давать совершенно другую контрольную сумму. Поскольку существует ограничение на количество контрольных сумм, которые может произвести одна криптографическая хеш-функция, всегда есть вероятность столкновения.
Вот почему были созданы другие криптографические хеш-функции. В то время как MD5 генерирует 32-символьное значение, SHA-1 генерирует 40 символов, а SHA-2 (512) генерирует 128. Чем больше количество символов в контрольной сумме, тем меньше вероятность возникновения коллизии.