Криптографическая хэш-функция — это незаменимый инструмент в современном программировании. Она применяется практически везде, где нужно что-то зашифровать, скрыть, проверить, найти и др. Например, с помощью хэш-функции можно:
провести аутентификацию пользователей в приложении или веб-ресурсе;
проверить целостность передаваемой информации;
защитить информацию, зашифровав ее;
обнаружить попытки взлома;
и др.
На сегодня известно очень много алгоритмов хэширования, где в основе лежит какая-то хэш-функция. Сегодня мы простыми словами разберем, что такое хэш, хэширование и хэш-функция.
Хэш, хэширование и хэш-функция — что это такое?
Во-первых, все три термина относятся к криптографии. Криптография — это наука, которая занимается безопасным сокрытием информации путем ее шифрования или кодировки.
Хэширование — это процесс, при котором информация видоизменяется с целью ее сокрытия и обеспечения ей конфиденциальности. Хэширование — это однонаправленный процесс, при котором информация преобразуется в определенный набор символов. Обратного процесса не существует, то есть невозможно «расхэшировать» какое-то сообщение. Если результат хэширования удалось распознать, значит, хэширование не обеспечивает должной степени защиты информации.
Хэш-функция — это основной инструмент хэширования. Именно хэш-функция занимается преобразованием и сокрытием какой-то информации. По сути, хэш-функция — это математический алгоритм «сжатия» любой информации, который в результате собственной работы выдает сообщение определенной длины. Такое сообщение состоит из набора специальных символов, букв и чисел. Идеальная хэш-функция должна соответствовать следующим свойствам:
Одна и та же информация, поступающая в обработку, всегда дает один и тот же результат хэширования.
Вычисления хэш-функции проходят моментально для любого объема входящей информации.
После выполнения хэш-функции невозможно определить, какая информация была на входе.
Хэш-функция не должна выдавать одинаковое хэш-значение для разной информации на входе.
Небольшое изменение во входящей информации должно кардинально менять результат работы хэш-функции, чтобы при сравнении результата невозможно было догадаться, что входящие сообщения были похожи.
Хэш-сумма, хэш-значение или просто хэш — это результат работы хэш-функции. По сути, это сообщение, которое состоит из набора букв, чисел и символов. Такое сообщение имеет фиксированную битовую длину, независимо от того, какой объем информации был на входе.
Закрепим:
хэширование — это процесс преобразования и получения зашифрованной информации;
хэш-функция — это инструмент преобразования, который шифрует поступающую информацию;
хэш или хэш-сумма — это результат, полученный после работы хэш-функции.
Где применяется хэширование
Что такое хэширование и хэш-функция — мы разобрались. Но где конкретно они применяются?
Несколько примеров применения хэширования:
Проверка целостности информации. В этом случае информация пред отправкой хэшируется, потом отправляется. По прибытии информации она снова хэшируется. Потом оба хэша сравниваются. Они должны быть идентичными. Если идентичность нарушена, значит, в процессе передачи информации она была изменена.
Верификация пароля. Пароли пользователей хэшируются, и хранится только их хэш. Когда пользователь вводит пароль для входа, он хэшируется и его хэш сравнивается с хэшом, который хранится в базе данных. Если хэши совпадают, пользователю открывают доступ к ресурсу, куда он планировал зайти. Если хэш не совпадает, доступ будет закрыт. «Чистые» пароли пользователей хранятся все реже. При такой технологии, если пользователь забывает пароль, его не получится восстановить, так как в базе данных хранится хэш, а не пароль, а из хэша получить пароль нельзя. Поэтому пользователям предлагают подтвердить верификацию другими способами, а потом придумать новый пароль, который будет опять захэширован и записан на месте старого.
Цифровая подпись. В этом случае хэшируется не сама подпись, а документ, под которым пользователь ставит подпись. Таким образом, если после подписания документа в него внести хоть малейшее изменение, тогда у него изменится хэш. То есть перед внесением подписи документ хэшируется, а его хэш сохраняется. Спустя какое-то время, если нужно проверить актуальность и достоверность подписанного документа, он снова хэшируется, а первоначальный хэш и последний хэш сравниваются. Если хэши идентичны, тогда документ не изменялся.
Авторское право. Компании, которые выпускают видео, музыку и текст, хэшируют собственные продукты. Это дает им возможность в любой момент доказать, что продукт принадлежит именно им. Другой момент, когда хэш песни распространяется с самой песней и можно отслеживать ее использование вплоть до блокировки использования на конкретных ресурсах.
Заключение
Что такое хэширование? Простыми словами, это процесс однонаправленного шифрования информации, где хэш-функция — это основной инструмент шифрования. Хэширование действительно применяется во многих местах и уже очень давно. Первые алгоритмы хэширования появились еще в начале 80-х, но более массово стали применяться в начале 90-х, когда стал развиваться интернет.
Другое