ћерион Ќетворкс

5 минут чтени€

¬ этой статье расскажем что такое хеш, хеширование и рассмотрим какие есть алгоритмы хешировани€.

„то такое хеширование? ’еширование означает использование некоторой функции или алгоритма дл€ сопоставлени€ данных объекта с некоторым репрезентативным целочисленным значением. –езультат этой функции известен как хеш-значение или просто хэш (hash). ’ороша€ хеш-функци€ использует алгоритм одностороннего хешировани€, или, другими словами, хэш нельз€ преобразовать обратно в исходный ключ.

ќбеспечение того, чтобы данные не измен€лись (модифицировались) во врем€ передачи, очень важно, и чтобы помочь нам определить, сохран€етс€ ли целостность сообщени€, мы можем использовать алгоритмы хешировани€. јлгоритмы хешировани€ предназначены дл€ получени€ входных данных, например, строки текста или файла, а затем использовани€ односторонней функции дл€ создани€ дайджеста. ƒайджест (digest) - это хеш-представление ввода, и его нельз€ отменить.  аждый уникальный файл или сообщение генерирует уникальное хеш-значение (дайджест). Ёто означает, что, если данные каким-либо образом изменены, значение хеш-функции будет однозначно другим.

Ќа следующем рисунке показан процесс одностороннего хешировани€:

ѕроцесс хешировани€

 ак этот процесс работает между устройствами? ѕредставьте, что отправитель, хост A, хочет отправить сообщение на устройство назначени€, хост B. ¬место того, чтобы хост A отправл€л сообщение как есть, хост A создаст дайджест сообщени€.  ак только в дайджесте будет создано сообщение, хост A отправит и сообщение, и дайджест хосту B. Ќа следующем рисунке показано, что хост A отправл€ет сообщение с дайджестом хосту B:

» сообщение, и хэш отправл€ютс€ адресату

 огда хост B получает сообщение от источника, он также создает дайджест сообщени€ и сравнивает его с дайджестом, полученным от хоста A. ≈сли оба значени€ хеш-функции (дайджесты) совпадают, это означает, что сообщение не было изменено во врем€ передачи. ќднако, если значени€ дайджеста различаютс€, это означает, что где-то по пути сообщение было изменено и, следовательно, содержимое сообщени€ не совпадает.

¬озможно ли, что два разных файла будут иметь одинаковое хеш-значение? ’от€ алгоритмы хешировани€ предназначены дл€ создани€ уникального дайджеста дл€ каждого уникального файла, в прошлом были случаи, что у двух разных файлов одно и то же значение хеш-функции. Ёто известно, как хэш-коллизи€. ≈сли произошла коллизи€ хешировани€, это означает, что алгоритм хешировани€, используемый во врем€ процесса, у€звим, и ему не следует довер€ть. ќднако некоторые из самых попул€рных алгоритмов хешировани€, которые используютс€ в насто€щее врем€, подвержены коллизии хешировани€.


јлгоритмы хешировани€

Message Digest 5 (MD5) - это алгоритм хешировани€, который создает 128-битный дайджест. јлгоритм MD5 был реализован во многих системах на прот€жении многих лет и работал хорошо до тех пор, пока не произошла коллизи€ хешировани€. Ёто сделало MD5 у€звимым алгоритмом хешировани€, который больше не рекомендуетс€.

Ќа следующем рисунке представлен процесс хешировани€ MD5:

ѕроцесс хешировани€ MD5

 ак показано на предыдущей диаграмме, сообщение отправл€етс€ алгоритму MD5, который затем преобразуетс€ в 128-битный дайджест. ’от€ MD5 все еще используетс€ во многих системах, рекомендуетс€ использовать более безопасную функцию, такую как Secure Hashing Algorithm 2 (SHA-2).

≈ще одна хорошо известна€ функци€ хешировани€ - это Secure Hashing Algorithm 1 (SHA-1). Ётот алгоритм хешировани€ был создан еще в 1990-х годах Ќациональным институтом стандартов и технологий (NIST). NIST разработал этот алгоритм с функци€ми, аналогичными MD5. ќдним из основных преимуществ использовани€ SHA-1 дл€ проверки целостности €вл€етс€ то, что он создает 160-битный дайджест любого сообщени€ или файла.

Ќа следующем рисунке представлена функци€ SHA-1:

‘ункци€ хешировани€ SHA-1

’от€ SHA-1 считаетс€ лучше, чем MD5, так как создает более крупный дайджест, он работает медленнее, чем MD5, и содержит у€звимости в самом алгоритме. ќднако NIST разработал более новую версию, известную как SHA-2.

SHA-2 позвол€ет создавать дайджест с использованием битов большого размера, таких как:

  • SHA-224 (224 bit)
  • SHA-256 (256 bit)
  • SHA-384 (384 bit)
  • SHA-512 (512 bit)

»мейте в виду, что даже если вы знаете, что дл€ проверки целостности сообщени€ использовалось хеширование, оно все равно у€звимо дл€ атаки MiTM. ѕредставьте, что источник отправл€ет сообщение с хеш-значением. «лоумышленник может перехватить сообщение, изменить его содержимое и пересчитать новый хэш перед его отправкой адресату. „тобы помочь получателю проверить подлинность источника, нам нужно применить Hash Message Authentication Code (HMAC) к нашему процессу хешировани€.

„тобы добавить аутентификацию источника во врем€ процесса хешировани€, добавл€етс€ HMAC. HMAC - это секретный ключ, который объедин€ет входное сообщение с алгоритмом хешировани€, таким как MD5 или SHA-1, дл€ создани€ уникального дайджеста.

Ќа следующем рисунке показано использование HMAC с функцией хешировани€:

ѕрименение HMAC с хешированием

ѕоскольку этот секретный ключ (HMAC) используетс€ только отправителем и предполагаемым получателем, значение выходного дайджеста будет просто зависеть от фактического входного сообщени€ (данных) и секретного ключа, используемого дл€ применени€ дополнительного уровн€ безопасности дл€ аутентификации источника. ѕоскольку источник и место назначени€ будут единственными сторонами, которые знают секретный ключ (значение HMAC), атака MiTM не будет успешной с точки зрени€ нарушени€ целостности любых сообщений, которые проход€т через сеть.

Ќа следующем скриншоте показан секретный ключ (HMAC), примененный к строке текста:

HMAC с алгоритмом хешировани€

 ак показано на предыдущем рисунке, текстова€ строка (сообщение) была объединена с секретным ключом и обработана с использованием алгоритма хешировани€ MD5 и SHA-1 дл€ создани€ уникального дайджеста.


—кидки 50% в Merion Academy

¬ыбрать курс