Автор Новостей / Будущее уже здесь10 СЕНТЯБРЯ, 13:38

Доверяй, но проверяй: зачем нужен хеш

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

ИИ/Гигачат

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

Представьте: вы переслали кому-то файл, по электронной почте, в мессенджере или через облако, а человек, получивший его, сомневается, не потерялось ли что-то по дороге. Или ещё пример: лежит на сервере какой-нибудь массив данных, а злоумышленник, пробравшийся к ним, решил заменить в них часть информации. Это не просто досадно, а прямо-таки опасно – а вдруг хакер нахимичил в программе управления самолётом или банковской системе?   

Как убедиться, что файл в сохранности? Для этого и существует хеш-функция.

Это программка, а точнее алгоритм, которая на основе входных данных – то есть оригинального файла – выстраивает для последующей проверки уникальную строчку. Способ похож на шифрование, только без возможности расшифровки. Вот простейший алгоритм: посчитайте, сколько раз та или иная буква появляется в тексте, и запишите все эти буквы и их количество. Скажем, для текста «Это пример фразы, для которой считаем хеш» мы запишем «А2Д1Е2З1И2Й1К1Л1М2О4П1Р3С1Т3Ф1Х1Ч1Ш1Э2Я1Ы1». Это вроде и шифр, но восстановить по нему исходный текст не получится, правда же? А вот если человек, который получит от вас подобное сообщение, пропустит его через такой же шифр, то строчка у него получится ровно та же. Так что при передаче файла можно для надёжности дополнительно переслать и получившийся хеш для проверки.

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

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

Кроме того – для проверки пароля. Хранить пароль пользователя в системе опасно, велика вероятность взлома. Так что в большинстве систем хранятся не сами пароли, а их хеши, и, когда пользователь авторизуется, система сверяет не вводимый пароль, а его вычисляемый хеш. Используются хеши и в системе электронных подписей.

А ещё оказалось, что некоторые алгоритмы значительно ускоряют поиск записей в базе данных, если предварительно посчитать и сохранить хеши для всех данных. Хеширование ускоряет и решение геометрических задачек в компьютерной графике…

Наиболее распространённые алгоритмы хеширования называются MD5 и SHA. Есть и наша, российская, разработка, которая называется Стрибог (STREEBOG). На её основе строится система государственных электронных подписей и обмен данными между государственными учреждениями.


Текст: Мирослав АНДРУЩЕНКО