# Что такое хеширование и как его используют в ИБ

### Что такое хеширование?&#x20;

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

Например, введем несколько фраз [в онлайн-генераторе SHA-1](http://www.sha1-online.com/) и посмотрим, что получится:

| **Что вводим**                                                            | **Что получаем при хешировании**                            |
| ------------------------------------------------------------------------- | ----------------------------------------------------------- |
| Kraken                                                                    | <p>3515 dc3d fe46 1ab1 24f0<br>7951 72e3 d7a5 9a67 8c6b</p> |
| Выпускайте кракена!                                                       | <p>9b69 307f d79f 8709 ccb8<br>c4e8 69a8 2dec d725 07e3</p> |
| Мифы ловят богов как сети — рыбу. Люди плохие рыбаки: боги уходят от них. | <p>258d 5344 bc8b deec 5a5d<br>5c39 36e8 cfc3 3c6d 56e1</p> |

\
Есть несколько алгоритмов хеширования. Вот самые популярные из них:&#x20;

1. MD5 (Message Digest 5) — один из самых старых алгоритмов хеширования, преобразует входные данные в 128-битное хеш-значение.
2. SHA-3 — последняя версия алгоритма SHA, использует хеш-значения разной длины, но отличается более высоким уровнем безопасности.
3. SHA-256 — один из наиболее распространенных криптографических алгоритмов хеширования. Его используют для генерации уникального цифрового отпечатка данных.
4. BLAKE — семейство алгоритмов, где используют хеш-значения разной длины. Отличаются высокой скоростью и безопасностью.

Хеширование отличается от [других алгоритмов шифрования](https://notes.kraken-security.ru/kraken/krupicy-znanii/kakie-est-algoritmy-shifrovaniya) — здесь нет ключа, поэтому всегда можно дешифровать хеш в исходный файл. Вопрос лишь в мощностях: дешифровать некоторые алгоритмы займёт очень-очень много времени.

### Для чего нужно хеширование?&#x20;

#### Хранение паролей

Все онлайн-ресурсы держат ваши пароли не в открытом виде, а в виде хеш-значений. То есть ни Netflix, ни «Кинопоиск», ни Kraken Academy не знают, какой именно ваш пароль.&#x20;

Поэтому когда вы восстанавливаете пароль на сервисах, вам не присылают его обратно — вас просят сделать новый. Кстати, если вы получили пароль от сервиса в открытом виде — всё очень плохо.\
\
У злоумышленников, кстати, есть наборы хешированных распространенных паролей. Это помогает взломать слабозащищенные учетные записи. Поэтому хеширование это, конечно, хорошо, но ставить пароль 12345 не стоит. Лучше пользуйтесь [KeePass](https://keepass.info/).

Давайте проведем эксперимент. У нас есть два пароля. Первый — admin, второй мы сделаем с KeePass — K$w3|°¦\_aYebÑøîvIý±z\
\
Преобразуем их в хеш по алгоритму MD5:&#x20;

| **Пароль**             | **Пароль после хеширования**     |
| ---------------------- | -------------------------------- |
| admin                  | 21232f297a57a5a743894a0e4a801fc3 |
| K$w3\|°¦\_aYebÑøîvIý±z | 5efc85352533d1eff443ca57d7504dd6 |

Теперь попробуем преобразовать их обратно, с помощью ещё одного [онлайн-сервиса](http://reverse-hash-lookup.online-domain-tools.com/). Пароль admin распознался на секунду. А вот что случилось, когда мы ввели второй пароль:<br>

<figure><img src="https://lh7-us.googleusercontent.com/HRmZwftwbtIAxVbqLTugTL1QVGzLj7PIYtmlVjGEP6eRnfqVH0_24W7KRB8lH5ddG_N4Sxqif0xFrUKQasHO-O4BcepYR_a7xxmMpgY304u8o5izQ6IyGRPxvB34LmaNnUnlvRX2HFGVdq8NQj55CW8" alt=""><figcaption></figcaption></figure>

#### Защита медиафайлов&#x20;

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

#### Поиск вирусов&#x20;

В сообществе кибербезопасников есть списки хешов зловредов или их частей, обычно каких-то хорошо узнаваемых компонентов. Один из самых популярных — [VirusTotal](https://www.virustotal.com/gui/home/upload).\
\
Что это позволяет:\
\
1\. Пользователь, который наткнулся на подозрительный, может проверить его хеш и понять, не вредоносный ли он. Тут только стоит учесть, что далеко не все вредоносы и их части есть в списках.\
\
2\. По этому же принципу может работать и антивирус, проверка по хэшам — один из самых простых методов детектирования, которые они используют.

#### Защита от фальсификации данных

С помощью хеширования можно понять, были ли изменения в передаваемом файле. Нужно просто сравнить хеши, ведь даже изменение на 1 байт сильно повлияет на результат хеш-значения. Давайте на примере. Предположим, что в нашем файле есть значение admin, где каждый символ — на латинице. Также предположим, что нам вернули файл с аdmin, но первый символ здесь кириллический. Вот как будут выглядеть хеши по MD5:

| **Рил admin**                    | **Фэйк аdmin**                   |
| -------------------------------- | -------------------------------- |
| 21232f297a57a5a743894a0e4a801fc3 | 6bd61645af3f3f3b089964d29f139c56 |

<br>
