Найти в Дзене
IT - это просто

Что такое хэш (hash)? Простыми словами

Здравствуй, дорогой читатель. Сегодня Автор хочет поговорить о слове, которое встречается повсюду: в новостях про криптовалюты, в статьях про защиту данных, в разговорах программистов. Это слово — HASH. Хеш, хэш, хеш-сумма, хеш-функция — всё это про него. Многие думают, что это что-то невероятно сложное, доступное только бородатым айтишникам в свитерах. Но на самом деле с хешами мы сталкиваемся чаще, чем кажется. И сегодня Автор докажет: понять хеш может даже ребёнок. А помогут нам, как всегда, Алиса, Илья и маленькая Арина. Однажды в семье, где всё и происходит, случилась небольшая драма. Алиса рассыпала свои кубики и никак не могла собрать их обратно в коробку. Она пыталась пересчитать: один, два, три... но постоянно сбивалась. Илья, старший брат, решил помочь. Но помог он необычным способом. — Алиса, — сказал Илья, — давай я покажу тебе фокус. Смотри: у тебя есть набор кубиков. Я возьму листочек, запишу все кубики, которые ты назовёшь. А потом пропущу этот список через волшебную маш
Оглавление

Здравствуй, дорогой читатель. Сегодня Автор хочет поговорить о слове, которое встречается повсюду: в новостях про криптовалюты, в статьях про защиту данных, в разговорах программистов. Это слово — HASH. Хеш, хэш, хеш-сумма, хеш-функция — всё это про него.

Многие думают, что это что-то невероятно сложное, доступное только бородатым айтишникам в свитерах. Но на самом деле с хешами мы сталкиваемся чаще, чем кажется. И сегодня Автор докажет: понять хеш может даже ребёнок. А помогут нам, как всегда, Алиса, Илья и маленькая Арина.

С чего всё началось: история про игрушки

Однажды в семье, где всё и происходит, случилась небольшая драма. Алиса рассыпала свои кубики и никак не могла собрать их обратно в коробку. Она пыталась пересчитать: один, два, три... но постоянно сбивалась.

Алиса запуталась в кубиках, Илья примеряет роль детектива, а Почтальон уже чует, что будет что-то интересное.
Алиса запуталась в кубиках, Илья примеряет роль детектива, а Почтальон уже чует, что будет что-то интересное.

Илья, старший брат, решил помочь. Но помог он необычным способом.

— Алиса, — сказал Илья, — давай я покажу тебе фокус. Смотри: у тебя есть набор кубиков. Я возьму листочек, запишу все кубики, которые ты назовёшь. А потом пропущу этот список через волшебную машинку.

— Какую машинку? — насторожилась Алиса.

— Воображаемую, — улыбнулся Илья. — Она умеет превращать любые слова и числа в короткий код. Вот смотри.

Алиса продиктовала:
— Красный кубик, синий кубик, жёлтый кубик, зелёный кубик, погремушка.

Илья сделал вид, что крутит ручку воображаемой машинки, и торжественно объявил:
— Получилось число 47. Это хеш твоего набора. Теперь, если ты потеряешь кубик или, наоборот, найдёшь ещё один, число сразу изменится. Давай проверим?

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

— Давай! — Алиса тут же убежала и принесла ещё один синий кубик. — Теперь тут два синих кубика!

Илья снова сделал вид, что крутит машинку, и выдал:
— А теперь хеш стал 215. Совсем другое число, правда?

— Ух ты! — Алиса захлопала в ладоши. — А если я уберу погремушку?

— Попробуй.

Она убрала погремушку. Илья снова «прокрутил»:
— Теперь хеш 184.

— А если я просто переложу кубики в другом порядке? — не унималась Алиса.

— Давай. Скажи новый порядок.

— Синий, красный, жёлтый, зелёный, синий.

Илья «покрутил» и выдал:
— Хеш 231.

Алиса задумалась. Даже порядок влияет! Получается, что любой самый маленький чих меняет это число.

Алиса проверяет правило: даже один кубик полностью меняет число-хеш.
Алиса проверяет правило: даже один кубик полностью меняет число-хеш.

В это время в комнату приползла Арина со своими игрушками: прорезыватель, погремушка, мягкий зайка.

— А у Арины какой хеш? — спросила Алиса.

Илья «посчитал»:
— 92.

— А если я ей дам своего зайку?

— Тогда у Арины будет другой набор, и хеш станет другим.

Арина, конечно, ничего не поняла, но зато получила нового зайку и была счастлива. А Алиса начала понимать главное: хеш — это уникальный отпечаток любого набора данных. Меняются данные — меняется отпечаток.

Как это работает на самом деле

Теперь давайте честно: Илья никакую машинку не крутил. Он просто показал принцип. В реальном мире хеш-функция — это математическое правило, которое любому куску данных (тексту, файлу, картинке) сопоставляет короткое число фиксированной длины.

Что значит «фиксированной длины»? Неважно, берёте вы одну букву или «Войну и мир» целиком — на выходе всегда число из, скажем, 64 символов. Удобно, правда?

Аналогия со смузи

Представьте, что вы делаете смузи. Кидаете в блендер банан, клубнику, йогурт — получается розовая масса. Кидаете банан, киви, йогурт — масса зелёная. Кидаете те же фрукты, но в другом порядке? Для смузи порядок не важен, но для хеша — важен. Главное: из готового смузи невозможно достать обратно целые кусочки банана. Так и из хеша нельзя восстановить исходные данные.

Как из смузи не вытащить целый банан, так из хеша не восстановить исходные данные.
Как из смузи не вытащить целый банан, так из хеша не восстановить исходные данные.

Это свойство называется необратимость. Именно оно делает хеши такими полезными для безопасности.

Почему маленькое изменение так сильно меняет хеш?

Хорошие хеш-функции устроены так, что даже один бит (самая маленькая единица информации) меняет результат полностью. Это называется «лавинный эффект». Как в реальной лавине: упал маленький камушек — и поехала вся гора. Так и здесь: чуть-чуть изменили входные данные — хеш стал неузнаваемым.

Где мы встречаем хеши в жизни

Теперь, когда мы поняли принцип, давайте посмотрим, где он применяется. Алиса, Илья и Арина (ну, Арина пока просто слушает) уже готовы удивляться.

1. Пароли на сайтах

Самый частый пример. Когда вы регистрируетесь на сайте и придумываете пароль, сайт не сохраняет его в базе данных. Это было бы слишком опасно: если базу украдут, злоумышленники узнают все пароли. Вместо этого сайт вычисляет хеш вашего пароля и сохраняет его.

Сайт хранит не сам пароль, а его хеш в сейфе. Даже Почтальон его охраняет.
Сайт хранит не сам пароль, а его хеш в сейфе. Даже Почтальон его охраняет.

Когда вы в следующий раз входите на сайт, вы вводите пароль, сайт снова вычисляет его хеш и сравнивает с тем, что у него в базе. Если хеши совпадают — значит, пароль правильный. Если нет — доступ запрещён.

— А если украдут базу с хешами? — спросит внимательный читатель.

— Тогда злоумышленники увидят набор чисел, но по ним невозможно восстановить пароль, — ответит Илья. — Помните смузи? Вот так же.

Конечно, есть способы подбора, но если пароль сложный, это займёт тысячи лет.

2. Проверка целостности файлов

Вы скачиваете из интернета программу. На сайте написано: «Контрольная сумма SHA-256: 3b4c5d6e...» Это и есть хеш файла.

После скачивания вы можете сами вычислить хеш скачанного файла (есть специальные программы) и сравнить с тем, что на сайте. Если числа совпали — файл скачался без ошибок и не был подменён вирусом. Если не совпали — лучше удалить и скачать заново.

Почтальон доставил правильный хеш от разработчиков. Илья сверяет — всё совпало, файл настоящий.
Почтальон доставил правильный хеш от разработчиков. Илья сверяет — всё совпало, файл настоящий.

Особенно это важно для больших файлов или когда вы качаете сомнительные торренты.

3. Блокчейн и криптовалюты

Здесь хеши играют ключевую роль. Каждый блок в блокчейне содержит хеш предыдущего блока. Получается цепочка: если кто-то попытается изменить один старый блок, его хеш изменится, и все последующие блоки перестанут ссылаться на него. Чтобы подделать блокчейн, пришлось бы пересчитывать все хеши заново, а это нереально сложно.

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

4. Поиск дубликатов

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

5. Git и контроль версий

Программисты используют систему Git. Там каждый коммит (сохранение) имеет свой хеш. По этому хешу можно найти точное состояние файлов в тот момент. И если что-то потерялось — легко восстановить.

А что насчёт «соли»?

Тут Алиса, которая уже совсем освоилась, спросила:
— Илья, а если два человека придумают одинаковый пароль, у них будут одинаковые хеши? И злоумышленник поймёт, что пароли совпадают?

— Умница, — похвалил Илья. — Именно поэтому сайты используют «соль».

Соль — это случайный набор символов, который добавляется к паролю перед хешированием. Например, ваш пароль «Котик123», а соль «xyz». Хешируется не «Котик123», а «Котик123xyz». У каждого пользователя своя соль, поэтому даже одинаковые пароли дают разные хеши.

Соль хранится рядом с хешем, но она не секретная. Главное, что она уникальна для каждого. Это защищает от атак, когда злоумышленник заранее вычисляет хеши для популярных паролей.

Мифы, которые стоит развеять

Миф первый: «Хеш — это шифрование»

Нет. Шифрование предполагает, что можно расшифровать обратно, если есть ключ. Хеширование необратимо принципиально. Это как котлета: из неё уже не восстановить кусок мяса.

Миф второй: «Хеш всегда уникален»

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

Миф третий: «Чем длиннее хеш, тем лучше»

Длина имеет значение, но не только она. Важна и сама функция. MD5 (старая функция) выдаёт 32 символа, но его уже научились взламывать. SHA-256 выдаёт 64 символа и считается пока надёжным.

Что в итоге?

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

Теперь хеш — не страшный зверь, а старый друг семьи!
Теперь хеш — не страшный зверь, а старый друг семьи!

Илья доволен, что смог объяснить сложную тему так, что даже Алиса поняла. Арина, кажется, задремала под эти разговоры, но и она впитала главное: есть какое-то волшебное превращение игрушек в числа.

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

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

UPD

Для тех, кто любит точность. В статье мы говорили о криптографических хеш-функциях (SHA-256, MD5, и др.). Именно они применяются для паролей, цифровых подписей, блокчейна.

Мы опустили детали о стойкости, коллизиях, методах подбора (радужные таблицы), необходимости соли и медленных хеш-функциях (bcrypt, scrypt). Это темы для отдельного разговора. Здесь же мы ставили цель — дать базовое понимание принципа. Если вы его уловили — цель достигнута. До новых встреч!