Криптографическая хеш-функция - это алгоритм, который может быть запущен на таких данных, как отдельный файл или пароль для создания значения, называемого контрольной суммой.
Основное использование криптографической хэш-функции заключается в проверке подлинности части данных. Можно предположить, что два файла идентичны, только если контрольные суммы, сгенерированные из каждого файла, используя одну и ту же криптографическую хэш-функцию, идентичны.
Некоторые широко используемые криптографические хэш-функции включают MD5 и SHA-1, хотя многие другие также существуют.
Криптографические хеш-функции часто называются «хэш-функциями», но это не является технически корректным. Хэш-функция - это общий термин, который включает криптографические хэш-функции наряду с другими типами алгоритмов, таких как циклические проверки избыточности.
Криптографические функции хеширования: пример использования
Скажем, вы загрузите последнюю версию браузера Firefox. По какой-то причине вам необходимо загрузить его с сайта, кроме Mozilla. Поскольку он не размещается на сайте, которому вы научились доверять, вы должны убедиться, что установочный файл, который вы только что загрузили, точно такой же, как тот, который предлагает Mozilla.
Используя калькулятор контрольной суммы, вы вычисляете контрольную сумму с использованием конкретной криптографической хэш-функции, такой как SHA-2, а затем сравниваете ее с той, что была опубликована на сайте Mozilla. Если они равны, вы можете быть уверены, что у вас есть тот, который у вас есть у Mozilla.
Могут ли криптографические хеш-функции перевернуться?
Криптографические хеш-функции предназначены для предотвращения возможности обратного преобразования контрольных сумм, которые они создают обратно в исходные тексты. Однако, несмотря на то, что их практически невозможно отменить, они не гарантируют на 100% защиту данных.
Хакеры могут использовать радужный стол, чтобы выяснить простой текст контрольной суммы.
Таблицы Rainbow - это словари, в которых перечислены тысячи, миллионы или даже миллиарды контрольных сумм вместе с их соответствующим значением обычного текста.
Хотя это не технически реверсирует криптографический алгоритм хэширования, это также может быть, учитывая, что это так просто сделать. В действительности, поскольку ни одна радужная таблица не может перечислить все возможные контрольные суммы, они обычно полезны только для простых фраз, таких как слабые пароли.
Вот упрощенная версия таблицы радуги, чтобы показать, как можно работать при использовании криптографической хэш-функции SHA-1:
| Простой текст | Контрольная сумма SHA-1 |
| 12345 | 8cb2237d0679ca88db6464eac60da96345513964 |
| password1 | e38ad214943daad1d64c102faec29de4afe9da3d |
| я люблю мою собаку | a25fb3505406c9ac761c8428692fbf5d5ddf1316 |
| Jenny400 | 7d5eb0173008fe55275d12e9629eef8bdb408c1f |
| dallas1984 | 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. Чем больше количество символов, которые имеет контрольная сумма, тем меньше вероятность столкновения.




