Бесплатно Что такое хеш-функции и как они используются

Тема в разделе "Сборник статей по безопасности и анонимности", создана пользователем Wowas, 3 июл 2017.

  1. Wowas

    Wowas Moder Модератор форума

    Здравствуйте уважаемые пользователи bdf.ms последнее время наблюдаю на нашем форуме появление огромного кол-ва новичков, как новичков на самом форуме, так новичков и в теме в целом. Поэтому считаю необходимым изначально вводить в курс дела, объяснять на пальцах, а потом уже подводить к мыслям о применении того или иного инструмента.
    Сегодня же будет целая серия тем, под общим знаменателем - безопасность в сети. В данной же статье поговорим о хеш-функциях и как их использовать.

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

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

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

    [​IMG]

    Как работают хеш-функции

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

    Есть много примеров хеш-функций: MD2, MD4, MD5, HAVAL, SHA, SHA-1, SHA-256, SHA-384, SHA-512, Tiger и так далее. В наше время, если вы подбираете криптографическую систему, вам стоит использовать SHA-256 и выше, я имею ввиду SHA-384 и SHA-512.

    ====================

    TrueCrypt v7.1a Hashes

    ====================

    SHA256

    ========

    Пример использования хеш-функций на практике

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

    Есть инструменты, которые вы можете скачать, чтобы делать это. Одним из таких инструментов является Quick Hash, и я могу выбрать файл, например, установочный файл Chrome, перетащить его сюда, и мы видим здесь хеш этого файла Chrome для SHA-1, 256, 512. Вы можете заметить, что с увеличением этих цифр в алгоритме хеширования, длина хеша становится все больше, поскольку это длина в битах. SHA-1 - короткий, 256, 512 и MD5, который слаб и не должен использоваться вообще. Так что это является способом подтверждения того, что файл, который вы скачали, сохранил свою целостность.

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

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

    Другой способ использования хешей, с которым вы познакомитесь, это хеширование паролей. Когда вы вводите пароль на веб-сайте или в операционной системе, крайне плохой способ хранить этот пароль в базе данных, поскольку если эта база данных окажется скомпрометированной, то и ваш пароль окажется скомпрометирован. Что должно происходить - так это преобразование вашего пароля посредством функции формирования ключа пароля в хеш. Здесь у нас примеры преобразования пароля администратора в хеш в операционной системе Windows, и эти хеши хранятся в базе данных SAM внутри Windows. Позже мы обсудим эту базу и как она может быть скомпрометирована, но сейчас я лишь хотел привести пример использования хешей. Следующий способ использования хешей - это включение заранее согласованного совместно используемого секретного ключа в сообщение, а затем хеширование этого сообщения, это называется HMAC, или код аутентификации (проверки подлинности) сообщений, использующий хеш-функции. Этот механизм обеспечивает аутентификацию и целостность, потому что у нас есть заранее согласованный ключ и у нас есть хеш, мы используем их комбинацию. Не беспокойтесь особо о деталях. Это лишь еще одна технология, используемая в криптосистемах, которую вам совершенно не обязательно пока что понимать в деталях.
     

Поделиться этой страницей