# Обзор популярных алгоритмов хеширования

Первую часть материала, где мы рассказали, что такое хеширование, [читайте здесь](https://notes.kraken-security.ru/kraken/krupicy-znanii/chto-takoe-kheshirovanie-i-kak-ego-ispolzuyut-v-ib). А теперь разберем некоторые из алгоритмов.

### MD5

Один из самых популярных алгоритмов хеширования. Его не рекомендуют сегодня для использования, потому что в нём есть несколько известных уязвимостей. Ключевая особенность — преобразует входные данные произвольной длины в хеш-значение с фиксированной длиной 128 бит.&#x20;

Поэтому его часто используют для проверки исходных данных. Любое изменение приведет к кардинально другому хеш-значению. Другие сферы применения: создание хеш-таблиц и проверка целостности данных в некритических системах.&#x20;

<img src="https://proznaniya.media/wp-content/uploads/2023/04/algoritmy-heshirovaniya-dannyh.jpg" alt="Как работает MD5" height="768" width="1024">

| +                                                                                 | -                                                                                                                     |
| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| Быстрое и простое хеширование данных                                              | Небезопасен для криптографических задач, так как существуют атаки, которые позволяют создавать коллизии в хеш-функции |
| Может использоваться для проверки целостности данных и обнаружения подмены данных | Не рекомендуют для критических систем: электронных подписей, паролей                                                  |
| Поддержка в различных ОС и языках программирования                                |                                                                                                                       |

### SHA-1

Преобразует произвольные данные переменной длины в хеш-значение с фиксированной длиной 160 бит. Тоже устаревший алгоритм, и тоже не стоит использовать его для критических систем.&#x20;

<img src="https://proznaniya.media/wp-content/uploads/2023/04/kakie-byvayut-algoritmy-heshirovaniya.jpg" alt="Как работает SHA-1" height="720" width="960">

| +                                                                        | -                                                                                                                     |
| ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------- |
| Надежное хеширование данных, используют для проверки целостности         | Небезопасен для криптографических задач, так как существуют атаки, которые позволяют создавать коллизии в хеш-функции |
| Быстрый и простой в использовании                                        | Не рекомендуют для критических систем: электронных подписей, паролей. SHA-1 надежнее MD5, но недостаточно безопасен   |
| Используется в некоторых стандартах и протоколах, например, в SSL и TLS. | Объявлен небезопасным, поэтому многие организации переходят на более современные и безопасные алгоритмы хеширования   |

#### SHA-2

Набор алгоритмов хеширования данных. В него входят хеш-функции с разными размерами выходных значений: SHA-224, SHA-256, SHA-384 и SHA-512.  Цифры — это количество бит. \
\
Больше размера выходного хеша → выше высокой стойкость к атакам. Но есть и минус: нужно будет больше мощностей. &#x20;

SHA-2 один из самых распространенных. Довольно безопасен для применения в криптографических целях. Но всё-таки есть атаки, которые могут создать коллизии. Благо, для них требуются огромные мощности, поэтому они не так страшны: их можно отражать.&#x20;

<img src="https://proznaniya.media/wp-content/uploads/2023/04/chto-takoe-heshirovanie-dannyh.png" alt="Как работает SHA-2" height="629" width="1232">

|                                                                                                                |                                                                                            |
| -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| Высокая стойкость к коллизиям, считается одним из наиболее безопасных алгоритмов                               | Медленнее некоторых других алгоритмов. Особенно это заметно при больших выходных значениях |
| Разные размеры выходных значений, поэтому можно выбрать вариант в зависимости от задачи                        | Есть атаки, которые создают коллизии. Но там нужны огромные мощности                       |
| Поддержка многими ОС и языками программирования                                                                |                                                                                            |
| Применяют для защиты данных, электронных подписей, проверки целостности и подлинности данных, хранения паролей |                                                                                            |

### SHA-3

Один из наиболее безопасных и современных алгоритмов хеширования данных. Из-за того, что он относительно новый — есть ограничения по поддержки в ОС и языках программирования.&#x20;

<img src="https://proznaniya.media/wp-content/uploads/2023/04/algoritmov-heshirovaniya-dannyh-2.jpg" alt="Как работает SHA-3" height="668" width="1280">

| +                                                     | -                                                               |
| ----------------------------------------------------- | --------------------------------------------------------------- |
| Устойчив к атакам                                     | Относительно новый алгоритм: его ещё не все приняли и потестили |
| Высокая производительность на современных процессорах | Сложен для эксплуатации по сравнению с прошлыми алгоритмами     |
| Генерирует хеш-значения в зависимости от задачи       | Довольно медлительный: уступает, например, SHA-256              |
|                                                       | Для высокой скорости хеширования нужно специальное оборудование |

### BLAKE

Семья алгоритмов хеширования данных. BLAKE разработали специально обеспечения безопасности и эффективности в криптографических целях. Его чаще всего используют, когда нужно защитить данные, проверить целостность данных и электронных подписей.&#x20;

<img src="https://proznaniya.media/wp-content/uploads/2023/04/kakie-byvayut-algoritmy-heshirovaniya.png" alt="Как работает BLAKE" height="505" width="1380">

| +                          | -                                                                                                                                     |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| Высокая скорость           | BLAKE использовали меньше, чем SHA-1 и MD5. Он недостаточно изучен, и это вызывает осторожность при применении в критических системах |
| Высокая стойкость к атакам | Старые приложения не поддерживают BLAKE, поэтому могут быть проблемы при обмене данными между разными приложениями                    |
| Открытый исходный код      |                                                                                                                                       |

### Сравнение алгоритмов хеширования

Размер ключа → длина ключа алгоритма \
Размер блока → размер данных, которые алгоритм обрабатывает за один раз <br>

| Алгоритм | Размер хэша (бит)  | Размер блока (бит)             | Размер ключа (бит) | Скорость хэширования | Устойчивость к атакам | Сложность атаки                    |
| -------- | ------------------ | ------------------------------ | ------------------ | -------------------- | --------------------- | ---------------------------------- |
| MD5      | 128                | 512                            | –                  | Высокая              | Уязвим к коллизиям    | Можно атаковать за небольшое время |
| SHA-1    | 160                | 512                            | –                  | Высокая              | Уязвим к коллизиям    | Можно атаковать за небольшое время |
| SHA-2    | 224, 256, 384, 512 | 512, 1024                      | –                  | Высокая              | Безопасен             | Зависит от размера хэша            |
| SHA-3    | 224, 256, 384, 512 | 1152, 1088, 832, 576, 512, 288 | –                  | Средняя              | Безопасен             | Зависит от размера хэша            |
| BLAKE    | 224, 256, 384, 512 | 512, 1024                      | 256, 512           | Средняя              | Безопасен             | зависит от размера хеша и ключа    |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://notes.kraken-security.ru/kraken/krupicy-znanii/obshie-stati/obzor-populyarnykh-algoritmov-kheshirovaniya.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
