Что такое криптографический хеш? [Руководство для начинающих]
Опубликовано: 2019-08-07Оглавление
Что такое криптографический хеш?
Объяснение криптографического хеша
Свойства криптографической хеш-функции
Общие алгоритмы хеширования
Хеширование в криптовалютах
Хеш-функции в хранилище паролей
Заворачивать
Скорее всего, когда-то вы и ваши друзья придумали код, чтобы передавать друг другу сообщения, которые никто не мог понять. По крайней мере, вы знали таких людей.
Некоторые такие ребята серьезно отнеслись к этой игре и сделали из нее карьеру.
Другие стали волшебниками - так называемыми менталистами. С помощью кодов они используют свои «умственные способности», чтобы угадывать карты, числа и т. Д.
Эта простая детская игра стала так называемым шифрованием, хешированием и всеми другими функциями, которые производят на первый взгляд нечитаемый код из заданного ввода.
Сегодня мы погрузимся в волшебный мир программирования, чтобы увидеть, что такое криптографический хеш , его внутренняя работа и приложения.
Итак, без лишних слов, давайте сразу приступим.
Что такое криптографический хеш?
Криптографической хэш - функция представляет собой тип используемой хэш - функции в целях безопасности. У него есть несколько свойств, которые отличают его от некриптографического. Давайте разберем это шаг за шагом.
Что такое хеш?
Хеширование - это метод сжатия данных.
Тем не менее, это не обычное сжатие, которое все знают, как файлы .zip или .rar.
Хеширование создает код для данных с использованием алгоритма хеширования . Код представляет собой строку символов, которая действует как «отпечаток пальца» этого файла.
Все мы знаем, что отпечатки пальцев маленькие, но они содержат огромное количество данных. Вы знаете, такие вещи, как наши имена, лица, адреса и другая конфиденциальная информация. Хеширование аналогично - оно берет кусок данных произвольного размера и превращает его в относительно небольшую последовательность символов.
Независимо от размера ввода, при хешировании вы всегда получаете вывод фиксированной длины .
Примеры хеш-функций
Вот пример того, как это происходит. Для этой демонстрации мы будем использовать 256-битный алгоритм безопасного хеширования , известный как SHA-256. Это один из наиболее распространенных алгоритмов хеширования , и, как оказалось, он также используется Биткойном .
Сообщение | Хеш сообщения |
Привет | 3639EFCD08ABB273B1619E82E78C29A7DF02C1051B1820E99FC395DCAA3326B8 |
Добро пожаловать в TechJury | B7FFC27E0A6F559E1F63A927B6132A42124CC790F9EFD0FCFF4C3B653AA0DF4B |
(Содержание всей статьи) | 9247D0E6C7A2A45976DCC3D2393A52658B6DDFC846d8AF5743400EA12FB9DE74 |
Видите ли, хотя сообщения имеют разную длину, все они получают хэш из 64 символов. Это также известно как хэш-значение или дайджест .
Вы получите тот же результат фиксированной длины, если хешируете книгу или даже содержимое всей библиотеки. Вы также можете сделать это с другими типами данных - видео, изображениями и т. Д.
Что хорошо в хешах, так это то, что вы получите совершенно другое значение хеша, даже если внесете самые маленькие изменения . Это явление известно как лавинный эффект .
Поэтому, если ваша девушка / парень удалит все ваши фотографии бывшего, например, хэш папки изменится. Таким образом, вы будете знать, что что-то не так, не проверяя каждую картинку.
Давайте посмотрим еще на один пример того, как хеш-функция полезна на практике. В следующем примере я хешировал наше « Что такое VPN? », И это выглядит так:
Затем я удалил слово из статьи и снова хешировал. Вот результат:
Удаление одного слова полностью изменило хеш-значения . Это особенно полезно, если вы хотите проверить, не были ли внесены какие-либо изменения в файл.
Это еще более полезно, когда вы имеете дело с большим объемом информации. Например, блокчейн криптовалюты, ежедневно хранящий тысячи транзакций.
Теперь давайте углубимся и посмотрим, что на самом деле означает криптографический хеш .
Объяснение криптографического хеша
Когда вам нужна безопасность и конфиденциальность, в игру вступает криптографический хеш . Обратной стороной криптографического хеширования является то, что он обычно медленнее, чем другие типы хешей . Если вам нужно быстро хешировать и вам не нужен высокий уровень безопасности, лучше использовать некриптографическое хеширование. Например - если вы создаете индекс некоторых не конфиденциальных данных.
Основное различие между некриптографическим и криптографическим хешированием состоит в том, что последнее чрезвычайно сложно взломать. Обратите внимание, что это не невозможно. Тем не менее, криптографическое хеширование делает взлом хеша практически невозможным.
Чтобы хеш-функция была криптографическим хешем, она должна иметь несколько свойств.
Свойства криптографической хеш-функции
Если вы хотите использовать хеширование для криптографических целей, существует несколько требований, которым должна соответствовать хеш-функция, чтобы считаться безопасной.
Свойство №1 - Скорость
Если вам нравятся модные слова - криптографические хеш-функции должны быть эффективными с точки зрения вычислений. Это означает, что функция хеширования должна иметь возможность создавать хеш за доли секунды .
Источник
Свойство # 2 - Эффект лавины
Эффект лавины означает, что даже незначительное изменение сообщения приведет к значительному изменению значения хеш-функции .
Сообщение | Хеш сообщения |
Добро пожаловать в TechJury | B7FFC27E0A6F559E1F63A927B6132A42124CC790F9EFD0FCFF4C3B653AA0DF4B |
Добро пожаловать в Techjury | 66251AE6324F670BF988465E49B9CEAA2F8C4E72E1D61336D3794301116C092B |
Использование строчной буквы «j» во втором сообщении полностью меняет хэш-код .
Это простой пример хеш-функции , но вы поняли идею. Это очень практично и может быстро показать, были ли изменены какие-либо данные.
Свойство # 3 - криптографическая хеш-функция должна быть детерминированной
Это означает, что независимо от того, сколько раз вы используете хеш-функцию для одного и того же ввода , вы всегда будете получать один и тот же результат . Это очевидно, поскольку если бы вы получили случайные хэши для одного и того же сообщения, весь процесс был бы бессмысленным.
Свойство №4 - Сопротивление предварительному изображению (односторонняя функция)
Это означает, что попасть на вход через выход действительно сложно.
Проще говоря, вы не можете отменить криптографическую хеш-функцию, чтобы получить данные. Тем не менее, это не означает, что сообщение невозможно увидеть.
Вот сделка.
Есть два метода поиска хешированного сообщения.
- Чтобы сравнить хэш с существующим списком хешей, например, Dehash.me. Обычно киберпреступники имеют собственные базы переведенных (дехешированных) сообщений.
- Выполнить атаку полным перебором.
Чтобы взломать хеш с помощью грубой силы, вы должны выбрать сообщение, хешировать его и сравнить с хешем, который у вас есть. В лучшем случае - получится с первого раза. Тем не менее, шансы на то, что это произойдет, крайне малы.
Худший сценарий - вы найдете его с последней попытки. Это означает, что вам нужно хешировать все возможные сообщения и сравнивать их с тем, которое у вас есть. Количество разное, в зависимости от алгоритма хеширования .
Для примера воспользуемся SHA-256. В этом случае вам нужно будет найти 2 256 Сначала -1 хеш-значение. Можно с уверенностью сказать, что это невозможно сделать за несколько жизней, и оставить все как есть.
Теперь.
Свойство стойкости к предварительному изображению криптографического хэша играет важную роль в дебатах о хешировании и шифровании .
Видите ли, вы можете расшифровать зашифрованное сообщение, но не можете сделать то же самое с криптографическим хешем .
Вы можете думать о гашиш как о смузи. Вы не можете извлечь сообщение из хеша так же, как не можете извлечь банан и молоко из смузи.
С другой стороны, шифрование больше похоже на сейф. Он защищает ваши ценности, но всегда есть ключ, который его открывает.
Свойство # 5 - Устойчивость к столкновениям
Это означает, что два разных сообщения не должны давать одно и то же значение хеш-функции . С математической точки зрения это все равно невозможно.
Вы уже знаете, что хеш-значения имеют фиксированную длину. Это означает, что количество выходных комбинаций ограничено . С другой стороны, входов бесконечно много. Итак, теоретически существует вероятность, что два разных сообщения могут создавать одинаковые хэши .
Тем не менее, хеш-функция в криптографии делает шансы на хеш-коллизию практически незначительными.
Смотреть.
Все эти свойства обеспечивают безопасность и удобство использования криптографического хэша . Итак, пришло время познакомиться с различными криптографическими хеш-функциями.
Общие алгоритмы хеширования
Существуют разные классы (семейства) хеш-алгоритмов. Основное различие между ними - это хеш-значение, которое каждый из них производит, и его свойства безопасности.
Вот наиболее часто используемые:
Алгоритм дайджеста сообщений (MD)
MD5 был предпочтительной хэш-функцией для многих компаний, но был сломан в 2004 году. Хеш-алгоритм считается сломанным, если на него произошла успешная коллизия или атака с предварительным изображением. Тем не менее, многие веб-сайты продолжают использовать функцию хеширования MD5 для проверки файлов.
Например, когда вы загружаете файл, вы можете сравнить его хэш с хешем на сайте, чтобы убедиться, что никто не подделал его.
Семейство MD состоит из MD2, MD3, MD4, MD5 (все они сломаны) и MD6 (что не так популярно).
Вот пример хеш-функции MD5.
Сообщение | MD5 хеш |
Techjury | FECE553512085FF6B5E213C8EFF9F30D |
MD5 производит 128-битное хеш-значение длиной 32 символа.
Из-за своих недостатков алгоритм дайджеста сообщения больше не считается криптографической хеш-функцией .
Алгоритм безопасного хеширования (SHA)
Самое большое семейство криптографических хеш-функций состоит из четырех классов:
- SHA-0
- SHA-1
- SHA-2
- SHA-3
SHA-0 имел много недостатков и не получил широкого распространения. SHA-1 пытался исправить их, но сломался в 2005 году.
SHA-2 и его подклассы широко используются сегодня, пока SHA-3 не зарекомендовал себя как еще более безопасная функция.
Семейство SHA-2 состоит из четырех членов - SHA-224, SHA-256, SHA-384 и SHA-512, которые различаются количеством бит в их хеш-значениях . Пока что не было успешной атаки на алгоритм криптографического хеширования SHA-2 .
Вот несколько примеров хэш-функций, использующих класс SHA-2.
Сообщение | Techjury |
SHA-256 | FF3E4985DAFF59392EAE60DEC66EC823CAF9575B81903729053A999B9B2C708E |
SHA-384 | 77653BC173A561E3378373F64E447FB3AEDC691F387BB599656E6AB63B9C5D34 523C298C59C94802A478F8C3F36E9CDF |
SHA-512 | C975F1074E969FAEA76C15084881F7694DE4D542F9E4DF934AFA52470952A362 25F7ED63D023AB05746DDAFDFED96D57A7AF5344EB91589A09952D102DD3AB04 |
Дайджест сообщения оценки примитивов целостности RACE (RIPEMD)
Изначально RIPEMD создавался для проекта Европейского Союза под названием RIPE. В семействе RIPEMD есть пять хэш-функций.
- RIPEMD
- РИПЭМД-128
- РИПЭМД-160
- РИПЭМД-256
- РИПЭМД-320
В 2004 г. произошла коллизия в исходной хэш-функции RIPEMD . Вот почему он больше не используется. В настоящее время наиболее распространенным является РИПЭМД-160. Вот как это выглядит:
Сообщение | Дайджест РИПЭМД-160 |
Techjury | ca25dc64fb00c8becb21eddf50805fbc106eed00 |
Водоворот
Это имя криптографической хеш- функции не имеет ничего общего с производителем бытовой техники. Галактика Водоворот вдохновила название алгоритма.
Что интересно в алгоритме хеширования Whirlpool , так это то, что одним из его создателей является Винсент Реймен, соавтор AES, Advanced Encryption Standard .
Whirlpool - это 512-битная хеш-функция, а ее дайджест представляет собой строку из 128 символов.
Это пример криптографической хэш - функции.
Сообщение | Whirlpool hash |
Techjury | 2E9A775FA4450549FCB6F6CDC4761865715D46FF8003E93CC614EF7C9E3D42A93 D5A663B4E48674C5155417D686D81ABDBC12FB32A1B650C5E44F24E80156E7D |
Это самые распространенные алгоритмы хеширования на сегодняшний день.
Итак, теперь, когда вы знаете основы хеширования, давайте посмотрим на его приложения в реальной жизни.
Хеширование в криптовалютах
Мы уже объяснили, что такое Биткойн и как работает блокчейн , поэтому сразу перейдем к хешированию.
Криптографической хэш - функция имеет важное значение для cryptocurrencies , поскольку она гарантирует один из самых важных особенностей blockchain в - неизменность.
Поскольку блокчейны криптовалюты обрабатывают большое количество транзакций, они используют хеширование. Это гораздо более практичный и безопасный подход, чем ведение каждой записи каждой отдельной транзакции в бухгалтерской книге.
В случае Биткойна майнеры запускают серию функций SHA-256 для создания хэша блока. Затем последний получает метку времени. Как только узлы достигают консенсуса, блок добавляется в цепочку блоков. Мало того, что у блока есть свой собственный хэш , он также содержит хеш предыдущего , таким образом объединяя их все вместе.
Из-за лавинного эффекта попытки вскрытия блока невозможны. Если кто-то пытается изменить транзакцию в блоке, он также должен изменить каждую последующую. Такая операция потребует столько вычислительной мощности и времени, что это практически невозможно .
Это делает хеширование важной функцией безопасности блокчейна.
Теперь.
Разные криптовалюты используют разные алгоритмы хеширования в своей цепочке блоков.
Биткойн, например, использует SHA-256 для доказательства работы. Тем не менее, Биткойн использует два алгоритма хеширования для генерации публичного адреса (ключа) - SHA-256 и RIPEMD-160. Это было сделано Сатоши Накамото, чтобы обеспечить лучшую защиту открытых ключей и снизить вероятность столкновения.
Ethereum, с другой стороны, использует хеш-алгоритм Keccak-256 , который является основой SHA-3.
На момент написания не было успешной атаки ни на один из этих алгоритмов.
Даже если вы не работаете на рынке криптовалют, вы все равно пользуетесь функциями хеширования каждый день.
Как это?
Хеш-функции в хранилище паролей
Компании используют четыре основных метода хранения наших паролей - в виде обычного текста, с шифрованием и с хеш-функцией . Последний метод представляет собой комбинацию двух или более из этих техник.
Посмотрим, в чем отличия.
Хранение паролей в виде обычного текста - большой запрет
Хранение паролей в виде обычного текста… ну… именно то, на что это похоже.
Нравится:
Имя пользователя: Джон Смит
Пароль: johnsmith93
В базе данных компании та же информация - пользователь: John Smith, пароль: johnsmith93.
Этого следует избегать, если компании ценят конфиденциальность своих клиентов. (Надеюсь, кто-нибудь из Facebook это прочитает.)
Обратная сторона этого метода очевидна - если киберпреступники проникнут в базу данных компании, они смогут увидеть все логины и пароли.
Хранение паролей с использованием шифрования
Шифрование - лучший способ защиты паролей. Он превращает ваш пароль в нечитаемую последовательность цифр и букв.
Вот как это работает:
Имя пользователя: Джон Смит
Пароль: johnsmith93
Когда компания использует шифрование для защиты вашего пароля, запись в базе данных выглядит так:
Имя пользователя: Джон Смит
Пароль: I8Zdy1QBthsk2ie1HHsl + 66bf20fDDcdCtXURqa07iQ =
Если злоумышленник получает этот пароль, он бесполезен - он не может использовать его для взлома учетной записи. Тем не менее, теоретически его можно расшифровать.
Если злоумышленник получит ваш зашифрованный пароль, он сможет расшифровать его с помощью различных инструментов. Тем не менее, это занимает больше времени и требует больших компьютерных навыков, чем получение простого текстового пароля.
К счастью, существуют достаточно мощные алгоритмы шифрования, чтобы быть безопасным методом защиты паролей.
Хранение паролей с помощью алгоритма хеширования
Хеш и шифрование часто ошибочно принимают за одно и то же и используются как взаимозаменяемые. Тем не менее, между ними есть принципиальная разница .
Хеш-функция, как и шифрование, также преобразует ваш пароль в нечитаемую последовательность цифр и букв. Принципиальная разница в том, что это работает только в одну сторону . В отличие от дешифрования, вы не можете полностью изменить процесс хеширования.При этом, если киберпреступник получает хэш вашего пароля, обычно они ничего не могут с ним поделать.
Доступно множество хеш-функций, но давайте воспользуемся SHA-256 для нашего примера.
Имя пользователя: Джон Смит
Пароль (хешированный): e7c95991f28e529b4d3b37611e5f3b6a6a43600ce148af0c42d3d38c06365af5
Теперь.
Хотя хеш нельзя вернуть к исходному тексту, существуют большие списки сообщений и их хэшей. К сожалению, злоумышленники могут взломать ваш пароль, если получат его хеш-значение. К счастью, если вы используете надежный пароль, шансы на то, что это произойдет, невероятно малы. В этом случае мы воспользуемся другим примером.
Примеры хеш-функций в хранилище паролей
Допустим, ваш пароль - 123456. (Никогда не используйте его, вместо этого создайте надежный пароль .)
Вот его хеш, если мы используем алгоритм хеширования SHA-256 :
8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92
К сожалению, этот хеш настраивается в виде списка удаленных сообщений.
Проблема еще больше, потому что многие люди используют один и тот же пароль. Таким образом, если база данных взломана и киберпреступники обнаруживают хэш пароля, они могут использовать его для каждого пользователя, использующего один и тот же пароль. Не говоря уже о том, что многие люди используют один и тот же пароль для разных учетных записей, что вытащит их из сковороды в огонь.
Тем не менее, вы можете сделать несколько вещей, чтобы этого не произошло.
Прежде всего, используйте надежный пароль и создавайте разные пароли для разных учетных записей.
Еще вы можете добавить к хешу « соли ». Соленый хэш добавляет дополнительную ценность для вашего пароля и производит различный хэш пароля для каждого входа.
Например, каждый пользователь, использующий пароль 123456 и «соли», получит другой хэш.
Каждый пример представляет собой соленый хэш 123456.
$ 2y $ 10 $ pIxpMnhlQmt1t.EUYK1G / eHkb7Roo / XhPybKyFZSAqk / 50BW10a8.
$ 2y $ 10 $ sCLqOpeA4R.St / 8IaUWF9.m01MM4YbY.qTwbCY3.K5z.cd5lwxL6W
Итак, как лучше всего компания может защитить ваш пароль?
Это комбинация всех техник, упомянутых выше, например, как это делает Dropbox.
Источник: Dropbox
Вот как вы справляетесь с хешированием каждый день, даже не осознавая этого.
Заворачивать
Подводя итог - хеширование имеет много преимуществ.
Вы можете хешировать данные любого типа - будь то для индексации или для проверки изменений. Это делает хеширование полезным для контрактов, загрузок, хранения паролей и т. Д.
Криптовалюты также развиваются. Не только те, которые у нас есть сейчас, но и новые игроки разминаются, чтобы присоединиться к веселью. Даже Facebook выпустит Libra , поэтому мы обязательно будем использовать хеширование еще больше.
Может быть, Facebook откроет путь другим крупным компаниям для выпуска собственных криптовалют - а почему бы не использовать новые механизмы хеширования? Время покажет.
Увидимся в следующий раз!
часто задаваемые вопросы
Вы можете рассматривать хеш-значение как отпечаток любой информации - файла, папки, блока транзакций и т. Д. Как только вы применяете хеш-функцию к любым данным, последние получает хеш-значение.
Он состоит из строки символов фиксированной длины, например:
Информация | Хеш-значение |
Привет | D44426ACA8AE0A69CDBC4021C64FA5AD68CA32FE |
Криптография - это метод защиты данных с помощью кодов (таких как хеширование и шифрование).
Разработчики применяют криптографию всякий раз, когда требуется более высокая безопасность и конфиденциальность. Он преобразует простой текст (или другие данные) в нечитаемую строку случайных символов. Это гарантирует защиту информации от посторонних глаз.
Хэш - функция является операцией , которая преобразует случайные величины данных в соответствующей фиксированной длину строку символов, также известную как хэш - значение.
Есть два класса хеш-функций - некриптографические и криптографические хеш-функции . Последний используется в криптовалютах и хранилище паролей и обеспечивает повышенную безопасность.