Хэш-алгоритмы / Хабр
Как я полагаю, многим известно о том, что с 2007 года Национальный институт стандартов и технологий США (NIST) проводит конкурс на разработку хэш-алгоритма для замены SHA-1, и семейства алгоритмов SHA-2. Однако данная тема, почему-то обделена вниманием на сайте. Собственно это и привело меня к вам. Предлагаю вашему вниманию цикл статей, посвященных хэш-алгоритмам. В этом цикле мы вместе изучим основы хэш-функций, рассмотрим самые именитые хэш-алгоритмы, окунемся в атмосферу конкурса SHA-3 и рассмотрим алгоритмы, претендующие на победу в нем, обязательно их потестируем. Так же по возможности будут рассмотрены российские стандарты хеширования.
О себе
Студент кафедры информационной безопасности.
О хэшировании
В настоящее время практически ни одно приложение криптографии не обходится без использования хэширования.
Хэш-функции – это функции, предназначенные для «сжатия» произвольного сообщения или набора данных, записанных, как правило, в двоичном алфавите, в некоторую битовую комбинацию фиксированной длины, называемую сверткой. Хэш-функции имеют разнообразные применения при проведении статистических экспериментов, при тестировании логических устройств, при построении алгоритмов быстрого поиска и проверки целостности записей в базах данных. Основным требованием к хэш-функциям является равномерность распределения их значений при случайном выборе значений аргумента.
Криптографической хеш-функцией называется всякая хеш-функция, являющаяся криптостойкой, то есть удовлетворяющая ряду требований специфичных для криптографических приложений. В криптографии хэш-функции применяются для решения следующих задач:
— построения систем контроля целостности данных при их передаче или хранении,
— аутентификация источника данных.
Хэш-функцией называется всякая функция h:X -> Y, легко вычислимая и такая, что для любого сообщения M значение h(M) = H (свертка) имеет фиксированную битовую длину. X — множество всех сообщений, Y — множество двоичных векторов фиксированной длины.
Как правило хэш-функции строят на основе так называемых одношаговых сжимающих функций y = f(x1, x2) двух переменных, где x
Для получения значения h(M) сообщение сначала разбивается на блоки длины m (при этом, если длина сообщения не кратна m то последний блок неким специальным образом дополняется до полного), а затем к полученным блокам M1, M2,.., MN применяют следующую последовательную процедуру вычисления свертки:
Ho = v,
Hi = f(Mi,Hi-1), i = 1,.., N,
h(M) = HN
Здесь v — некоторая константа, часто ее называют инициализирующим вектором. Она выбирается
При таком подходе свойства хэш-функции полностью определяются свойствами одношаговой сжимающей функции.
Выделяют два важных вида криптографических хэш-функций — ключевые и бесключевые. Ключевые хэш-функции называют кодами аутентификации сообщений. Они дают возможность без дополнительных средств гарантировать как правильность источника данных, так и целостность данных в системах с доверяющими друг другу пользователями.
О статистических свойствах и требованиях
Как я уже говорил основным требованием к хэш-функциям является равномерность распределения их значений при случайном выборе значений аргумента. Для криптографических хеш-функций также важно, чтобы при малейшем изменении аргумента значение функции сильно изменялось.
К ключевым функциям хэширования предъявляются следующие требования:
— невозможность фабрикации,
— невозможность модификации.
Первое требование означает высокую сложность подбора сообщения с правильным значением свертки. Второе — высокую сложность подбора для заданного сообщения с известным значением свертки другого сообщения с правильным значением свертки.
К бесключевым функциям предъявляют требования:
— однонаправленность,
— устойчивость к коллизиям,
— устойчивость к нахождению второго прообраза.
Под однонаправленностью понимают высокую сложность нахождения сообщения по заданному значению свертки. Следует заметить что на данный момент нет используемых хэш-функций с доказанной однонаправленностью.
Под устойчивостью к нахождению второго прообраза понимают сложность нахождения второго сообщения с тем же значением свертки для заданного сообщения с известным значением свертки.
Это была теоретическая часть, которая пригодится нам в дальнейшем…
О популярных хэш-алгоритмах
Алгоритмы CRC16/32 — контрольная сумма (не криптографическое преобразование).
Алгоритмы MD2/4/5/6. Являются творением Рона Райвеста, одного из авторов алгоритма RSA.
Алгоритм MD5 имел некогда большую популярность, но первые предпосылки взлома появились еще в конце девяностых, и сейчас его популярность стремительно падает.
Алгоритм MD6 — очень интересный с конструктивной точки зрения алгоритм. Он выдвигался на конкурс SHA-3, но, к сожалению, авторы не успели довести его до кондиции, и в списке кандидатов, прошедших во второй раунд этот алгоритм отсутствует.
Алгоритмы линейки SHA Широко распространенные сейчас алгоритмы. Идет активный переход от SHA-1 к стандартам версии SHA-2.
Российский стандарт — ГОСТ 34.11-94.
В следующей статье
Обзор алгоритмов MD (MD4, MD5, MD6).
Литература
А. П. Алферов, Основы криптографии.
Брюс Шнайер, Прикладная криптография.
Цепочка блочного шифрования (CBC) MAC | Одним из алгоритмов (КАЛГ _ Mac), реализованных поставщиками Майкрософт, является блочный шифр |
Код проверки подлинности сообщений с помощью хэш-функций | Алгоритм (КАЛГ _ HMAC), реализованный поставщиками Майкрософт. Этот алгоритм также использует симметричный ключ для создания хэша, но он более сложен по сравнению с алгоритмом шифрования Mac. Его можно использовать с любым циклическим хэш-алгоритмом шифрования, например MD5 или SHA-1. Дополнительные сведения см. в разделе Создание HMAC. |
Технологии MD2, MD4 и MD5 | Эти алгоритмы хэширования были разработаны с помощью RSA Data Security, Inc. Эти алгоритмы были разработаны в последовательном порядке. Все три создания 128-разрядных хэш-значений. Все три имеют слабые места и должны использоваться только там, где это необходимо для обеспечения совместимости. Для нового кода рекомендуется использовать семейство хэшей SHA-2. Эти алгоритмы хорошо известны и могут быть подробно рассмотрены в любой ссылке на криптографию. |
Код проверки подлинности сообщения (MAC) | Алгоритмы MAC похожи на алгоритмы |
Безопасный алгоритм хэширования (SHA-1) | Этот алгоритм хеширования был разработан национальным институтом стандартов и технологий (NIST) и национальным агентством по безопасности (NSA). Этот алгоритм был разработан для использования с DSA (алгоритмом цифровых подписей) или DSS (стандарт цифровой подписи). Этот алгоритм создает 160-разрядное |
Безопасный алгоритм хэширования — 2 (SHA-2) | Этот алгоритм хэширования был разработан как преемник SHA-1 национальным институтом стандартов и технологий (NIST) и Агентством национальной безопасности (NSA). |
Алгоритм авторизации клиента SSL3 | Этот алгоритм используется для проверки подлинности клиента SSL3. В протоколе SSL3 объединение хэша MD5 и хэша SHA подписывается с помощью закрытого ключаRSA. CryptoAPI 2.0 и Microsoft Base и усовершенствованные поставщики служб шифрования поддерживают это с типом ХЕША калг _ SSL3 _ SHAMD5. Дополнительные сведения см. в разделе Создание калг _ SSL3 _ SHAMD5 hash. |
Что такое алгоритм хеширования? — Русские Блоги
Основное значение алгоритма хеширования
Хеширование является основой криптографии, а понимание хеширования является необходимой предпосылкой для понимания технологий, таких как цифровые подписи и шифрованные сообщения.
Хэш, который по-английски означает хэш, первоначально означал «измельчить и перемешать». Существует разновидность пищи, называемая хэш, которая изготавливается путем измельчения и перемешивания ингредиентов. Результатом операции хеш-функции является хеш-значение, обычно называемое хеш-функцией. Хеш-функции иногда переводятся как хеш-функции.
Согласно определению Википедии, хэш-функция должна генерировать данные фиксированной длины для произвольного размера данных в качестве их отображения. Так называемое отображение — это взаимно-однозначное соответствие. Надежный алгоритм хеширования должен удовлетворять трем точкам.
Первый — это безопасность. Учитывая данные M, легко вычислить значение хеш-функции X, а учитывая, что X не может вычислить M, или алгоритм хеширования должен быть односторонним алгоритмом. Второе уникально: два разных данных имеют разные хэши. Третий — фиксированная длина. Учитывая алгоритм хеширования, длина вывода фиксирована независимо от размера входных данных.
Но подумайте об этом осторожно, если длина хеша фиксирована, то есть диапазон значений ограничен, а диапазон значений входных данных неограничен, поэтому вы всегда найдете два разных входа с одинаковым хешем. Следовательно, безопасность хеш-функции определенно является относительной концепцией. Если два разных входа имеют одинаковый выход, это называется столкновением, столкновением. Различные алгоритмы хеширования, чем больше бит хэширования, тем выше уровень безопасности или тем лучше его «сопротивление коллизиям».
Говоря об основной функции хэш-функции. Уникальность хеша гарантирует, что если данные вообще будут повреждены во время хранения или передачи, их хеш изменится. Одной из наиболее распространенных функций хеш-функции является проверка целостности (Integrity Check), что означает, что данные не повреждены. Хэш имеет много разных имен, иногда называемых Digest, иногда называемых Checksum, иногда называемых Fingerprint, что на самом деле означает то же самое, то есть хеш может использоваться для представления самих данных.
Например, друг передает мне часть данных. После того, как я передам ее, у меня есть копия, и у него также есть копия. Если значения хеш-функции двух копий данных одинаковы, то содержимое двух копий данных совпадает или может Я думаю, что данные не были повреждены во время передачи, и данные, которые я получил, были полными.
Следовательно, основная функция хеш-функции заключается в вычислении итоговой строки с фиксированной длиной для больших данных, которая называется хеш-функцией. Функция хэша состоит главным образом в проверке целостности.
Классификация алгоритмов хеширования
На следующем шаге мы классифицируем хеш-функцию и поговорим о характеристиках хеш-алгоритма более подробно. Прежде всего, существует много видов алгоритмов хеширования, таких как md5, sha256 и т. Д., Но их можно разделить на две категории: одна — обычный хеш, другая — криптографический хэш, криптографическая хеш-функция.
Есть много видов алгоритмов хеширования, которые можно найти в отрасли. Мы можем приблизительно говорить о длине выходного хэша, хотя безопасность алгоритма хэширования связана не только с длиной хэша, но и чем длиннее значение хэша, тем он безопаснее.
Например, выход CRC-32 является 32-разрядным, то есть 32-разрядное двоичное число, которое выражается в шестнадцатеричном формате, составляет 8 бит. Хэш алгоритма MD5 представляет собой 32-разрядное шестнадцатеричное число, что является довольно распространенным явлением. SHA-256 — это 256 бит, а шестнадцатеричное представление — 64 бита. Эти алгоритмы можно разделить на обычные хешированные и зашифрованные хеш-алгоритмы, и между этими двумя алгоритмами нет особой очевидной разницы. Например, MD5 изначально был предназначен для криптографического хэширования, однако из-за развития компьютеров вероятность столкновения MD5 выше, поэтому MD5 можно использовать только как обычный хэш для проверки данных.
Разница между зашифрованным хешем и обычным хешем заключается в безопасности. Общий принцип заключается в том, что до тех пор, пока хеш-алгоритм столкнулся, он не будет рекомендоваться в качестве зашифрованного хеш-кода. Для шифрования может использоваться только хеш-алгоритм с высоким уровнем безопасности. Греция.
В то же время, зашифрованный хэш также можно использовать как обычный хэш.Устройство контроля версий Git использует алгоритм хеширования шифрования SHA-1 для проверки целостности. Вообще говоря, чем более безопасен алгоритм хеширования, тем медленнее скорость обработки, поэтому не все случаи подходят для замены обычного хеша зашифрованным хешем.
В области криптографии есть два алгоритма, которые принимают данные в качестве входных данных, а выходные данные представляют собой фрагмент данных, который никто не может понять. Одним из них является алгоритм хэширования, а другим — алгоритм шифрования. Обратите внимание, что алгоритм хеширования и алгоритм шифрования совершенно разные.
Во-первых, выходная длина алгоритма хеширования является фиксированной, а выходная длина алгоритма шифрования напрямую связана с длиной самих данных. Во-вторых, хэш не может быть рассчитан обратно, и выходные данные алгоритма шифрования должны иметь возможность обратного Из данных. Что касается алгоритма шифрования, мы не будем говорить об этом здесь.
Основной акцент здесь заключается в том, что алгоритм хэширования шифрования используется только в процессе шифрования, но он не является алгоритмом шифрования.
Короче говоря, существует много типов алгоритмов хеширования, и чем длиннее алгоритм, тем он безопаснее. Хеш-алгоритмы с низким уровнем безопасности считаются обычными хеш-алгоритмами и в основном используются для проверки целостности. Высокий уровень безопасности называется алгоритмом хеширования шифрования, который будет использоваться в алгоритме шифрования. Так называемые high и low являются относительными понятиями, например, MD5 использовался как криптографический хеш, но в настоящее время его можно использовать только для проверки безопасности. С 2017 года сертификат шифрования, сгенерированный по алгоритму SHA-1, также будет отклоняться основными браузерами. В настоящее время наиболее популярным алгоритмом шифрования является SHA-2, но в отличие от SHA-1, SHA-2 — это не алгоритм, а общее название для серии алгоритмов, включая SHA-256, о котором мы упоминали ранее.
Практические примеры
Сказав так много базовых знаний, в последней части мы поговорим о применении хэша в реальности.
Первый сценарий — регистрация на сайте. Когда мы отправляем имя пользователя и пароль, имя пользователя сохраняется непосредственно в базе данных веб-сайта, но пароль не сохраняется напрямую, но пароль сначала преобразуется в хеш, и хеш фактически сохраняется в базе данных. Поэтому даже персонал управления бэк-офиса компании не может получить пароль пользователя. Таким образом, если утечка из базы данных компании, пароль пользователя остается безопасным. Когда пользователь входит на веб-сайт самостоятельно, он вводит пароль и отправляет его на сервер. Та же самая операция хеширования выполняется на сервере. Поскольку входные данные не изменяются, хеш не изменяется, и вход в систему успешен.
Другой сценарий в блокчейне и криптовалюте. Когда биткойн-адрес генерируется, используется алгоритм SHA-256, и POW является доказательством работы, и этот алгоритм также используется.
В основном, где бы ни использовалась криптография, хэш-функции используются более или менее.
резюме
О хешировании и хеш-функциях мы поговорим здесь. Давайте подведем итог нескольким предложениям.
Основная функция хеширования — предоставить сводку или отпечаток данных. Обычный сценарий использования — проверка целостности. Существует много видов алгоритмов хеширования. Вообще говоря, чем дольше алгоритм хеширования, тем выше безопасность. Хэширование с достаточно высокой безопасностью или то, что никто не может успешно достичь хэширования коллизий, может рассматриваться. Используемый в шифровании, этот тип алгоритма хеширования также называется алгоритмом зашифрованного хэша.
На практике распространенными алгоритмами хеширования являются MD5, SHA-1, SHA-256 и т. Д. Обычно MD5 используется для проверки данных. SHA-1 когда-то был криптографическим алгоритмом хеширования, но он был исключен из списка и может только Как более безопасный алгоритм проверки. SHA-256 по-прежнему является широко используемым криптографическим алгоритмом хеширования, который используется в алгоритмах генерации адресов Биткойн и доказательствах работы военнопленных.
Адрес станции Б:
https://www.bilibili.com/video/av34660197/
Порекомендуйте техническую публичную учетную запись, если вы заинтересованы, вы можете отсканировать код на WeChat, чтобы следовать:
Хеширование – что это и зачем
Криптографические хеш-функции — незаменимый и повсеместно распространенный инструмент, используемый для выполнения целого ряда задач, включая аутентификацию, проверку целостности данных, защиту файлов и даже обнаружение зловредного ПО. Существует масса алгоритмов хеширования, отличающихся криптостойкостью, сложностью, разрядностью и другими свойствами. Считается, что идея хеширования принадлежит сотруднику IBM, появилась около 50 лет назад и с тех пор не претерпела принципиальных изменений. Зато в наши дни хеширование обрело массу новых свойств и используется в очень многих областях информационных технологий.
Что такое хеш?
Если коротко, то криптографическая хеш-функция, чаще называемая просто хешем, — это математический алгоритм, преобразовывающий произвольный массив данных в состоящую из букв и цифр строку фиксированной длины. Причем при условии использования того же типа хеша длина эта будет оставаться неизменной, вне зависимости от объема вводных данных. Криптостойкой хеш-функция может быть только в том случае, если выполняются главные требования: стойкость к восстановлению хешируемых данных и стойкость к коллизиям, то есть образованию из двух разных массивов данных двух одинаковых значений хеша. Интересно, что под данные требования формально не подпадает ни один из существующих алгоритмов, поскольку нахождение обратного хешу значения — вопрос лишь вычислительных мощностей. По факту же в случае с некоторыми особо продвинутыми алгоритмами этот процесс может занимать чудовищно много времени.
Как работает хеш?
Например, мое имя — Brian — после преобразования хеш-функцией SHA-1 (одной из самых распространенных наряду с MD5 и SHA-2) при помощи онлайн-генератора будет выглядеть так: 75c450c3f963befb912ee79f0b63e563652780f0. Как вам скажет, наверное, любой другой Брайан, данное имя нередко пишут с ошибкой, что в итоге превращает его в слово brain (мозг). Это настолько частая опечатка, что однажды я даже получил настоящие водительские права, на которых вместо моего имени красовалось Brain Donohue. Впрочем, это уже другая история. Так вот, если снова воспользоваться алгоритмом SHA-1, то слово Brain трансформируется в строку 97fb724268c2de1e6432d3816239463a6aaf8450. Как видите, результаты значительно отличаются друг от друга, даже несмотря на то, что разница между моим именем и названием органа центральной нервной системы заключается лишь в последовательности написания двух гласных. Более того, если я преобразую тем же алгоритмом собственное имя, но написанное уже со строчной буквы, то результат все равно не будет иметь ничего общего с двумя предыдущими: 760e7dab2836853c63805033e514668301fa9c47.
Впрочем, кое-что общее у них все же есть: каждая строка имеет длину ровно 40 символов. Казалось бы, ничего удивительного, ведь все введенные мною слова также имели одинаковую длину — 5 букв. Однако если вы захешируете весь предыдущий абзац целиком, то все равно получите последовательность, состоящую ровно из 40 символов: c5e7346089419bb4ab47aaa61ef3755d122826e2. То есть 1128 символов, включая пробелы, были ужаты до строки той же длины, что и пятибуквенное слово. То же самое произойдет даже с полным собранием сочинений Уильяма Шекспира: на выходе вы получите строку из 40 букв и цифр. При всем этом не может существовать двух разных массивов данных, которые преобразовывались бы в одинаковый хеш.
Вот как это выглядит, если изобразить все вышесказанное в виде схемы:
Для чего используется хеш?
Отличный вопрос. Однако ответ не так прост, поскольку криптохеши используются для огромного количества вещей.
Для нас с вами, простых пользователей, наиболее распространенная область применения хеширования — хранение паролей. К примеру, если вы забыли пароль к какому-либо онлайн-сервису, скорее всего, придется воспользоваться функцией восстановления пароля. В этом случае вы, впрочем, не получите свой старый пароль, поскольку онлайн-сервис на самом деле не хранит пользовательские пароли в виде обычного текста. Вместо этого он хранит их в виде хеш-значений. То есть даже сам сервис не может знать, как в действительности выглядит ваш пароль. Исключение составляют только те случаи, когда пароль очень прост и его хеш-значение широко известно в кругах взломщиков. Таким образом, если вы, воспользовавшись функцией восстановления, вдруг получили старый пароль в открытом виде, то можете быть уверены: используемый вами сервис не хеширует пользовательские пароли, что очень плохо.
Вы даже можете провести простой эксперимент: попробуйте при помощи специального сайта произвести преобразование какого-нибудь простого пароля вроде «123456» или «password» из их хеш-значений (созданных алгоритмом MD5) обратно в текст. Вероятность того, что в базе хешей найдутся данные о введенных вами простых паролях, очень высока. В моем случае хеши слов «brain» (8b373710bcf876edd91f281e50ed58ab) и «Brian» (4d236810821e8e83a025f2a83ea31820) успешно распознались, а вот хеш предыдущего абзаца — нет. Отличный пример, как раз для тех, кто все еще использует простые пароли.
Еще один пример, покруче. Не так давно по тематическим сайтам прокатилась новость о том, что популярный облачный сервис Dropbox заблокировал одного из своих пользователей за распространение контента, защищенного авторскими правами. Герой истории тут же написал об этом в твиттере, запустив волну негодования среди пользователей сервиса, ринувшихся обвинять Dropbox в том, что он якобы позволяет себе просматривать содержимое клиентских аккаунтов, хотя не имеет права этого делать.
Впрочем, необходимости в этом все равно не было. Дело в том, что владелец защищенного копирайтом контента имел на руках хеш-коды определенных аудио- и видеофайлов, запрещенных к распространению, и занес их в список блокируемых хешей. Когда пользователь предпринял попытку незаконно распространить некий контент, автоматические сканеры Dropbox засекли файлы, чьи хеши оказались в пресловутом списке, и заблокировали возможность их распространения.
Где еще можно использовать хеш-функции помимо систем хранения паролей и защиты медиафайлов? На самом деле задач, где используется хеширование, гораздо больше, чем я знаю и тем более могу описать в одной статье. Однако есть одна особенная область применения хешей, особо близкая нам как сотрудникам «Лаборатории Касперского»: хеширование широко используется для детектирования зловредных программ защитным ПО, в том числе и тем, что выпускается нашей компанией.
Как при помощи хеша ловить вирусы?
Примерно так же, как звукозаписывающие лейблы и кинопрокатные компании защищают свой контент, сообщество создает списки зловредов (многие из них доступны публично), а точнее, списки их хешей. Причем это может быть хеш не всего зловреда целиком, а лишь какого-либо его специфического и хорошо узнаваемого компонента. С одной стороны, это позволяет пользователю, обнаружившему подозрительный файл, тут же внести его хеш-код в одну из подобных открытых баз данных и проверить, не является ли файл вредоносным. С другой — то же самое может сделать и антивирусная программа, чей «движок» использует данный метод детектирования наряду с другими, более сложными.
Криптографические хеш-функции также могут использоваться для защиты от фальсификации передаваемой информации. Иными словами, вы можете удостовериться в том, что файл по пути куда-либо не претерпел никаких изменений, сравнив его хеши, снятые непосредственно до отправки и сразу после получения. Если данные были изменены даже всего на 1 байт, хеш-коды будут отличаться, как мы уже убедились в самом начале статьи. Недостаток такого подхода лишь в том, что криптографическое хеширование требует больше вычислительных мощностей или времени на вычисление, чем алгоритмы с отсутствием криптостойкости. Зато они в разы надежнее.
Кстати, в повседневной жизни мы, сами того не подозревая, иногда пользуемся простейшими хешами. Например, представьте, что вы совершаете переезд и упаковали все вещи по коробкам и ящикам. Погрузив их в грузовик, вы фиксируете количество багажных мест (то есть, по сути, количество коробок) и запоминаете это значение. По окончании выгрузки на новом месте, вместо того чтобы проверять наличие каждой коробки по списку, достаточно будет просто пересчитать их и сравнить получившееся значение с тем, что вы запомнили раньше. Если значения совпали, значит, ни одна коробка не потерялась.
Выбор безопасного размера ключа и алгоритмов хэширования
Алгоритмы, размер ключа и цифровые сертификаты
Резюме
На самом деле цифровые сертификаты не так сложны в понимании. Доверенная публичная организация, такая как центр сертификации центр сертификации GlobalSign, проверяет определенную выборку свидетельств, чтобы сформировать электронный идентификатор, который будет служить доказательством того, что была проведена проверка подлинности физического лица или организации.
Цифровой сертификат содержит сведения о том, кому он был выдан и кем. Также некоторые центры авторизации в свою очередь проходят сертификацию по целой цепочке центров, и эти сведения входят в сертификат. Когда цифровой сертификат используется, например, для подписывания документов и программного обеспечения, эта информация хранится с подписанным объектом в безопасном и проверяемом формате и может быть использована для установления доверительной канала связи.
Как обычно и бывает, если копнуть поглубже, то все оказывается немного более сложным. В случае цифровых сертификатов действует и ряд других факторов. Например, какова квалификация третьей стороны, их методы работы, криптографические алгоритмы, использованные для формирования цифрового сертификата?
С точки зрения начальника управления информационной безопасности использование цифровых сертификатов, подобно SSL цифровых сертификатов, подобных SSL, может сказаться на рабочем процессе организации. Поэтому использование сертификата от центра сертификации подразумевает полное доверие методам, применяемым в центре.
Это особенно важно в отношении решений, касающихся используемых криптографических алгоритмов и длин ключей. К счастью не нужно быть криптоаналитиком, чтобы принимать хорошие решения по данным вопросам, но нужно базовое понимание темы, представление о грядущих переменах, и внимательное отношение к алгоритмам, которые предоставляют ряд центров сертификации, работающих на рынке безопасности в данный момент.
История
До недавнего времени индустрия шифрования использовала два алгоритма в цифровых сертификатах. Первый алгоритм шифрования называется RSA, второй — алгоритм хэширования — SHA-1, оба в данный момент считается неустойчивыми из-за прогресса в области криптоанализ.
Устойчивость и эффективность работы алгоритма RSA зависит от размера ключа, чем больше ключ тем устойчивее и медленнее шифрование. Прогресс в области криптоанализа привел к увеличению размера ключей, используемых с алгоритмом, что повысило требования к вычислительным мощностям, нужных для поддержания достаточной устойчивости алгоритма. Проблема заключается в том, что при каждом удвоении размера RSA-ключа, время затрачиваемое на дешифровку ключа увеличивается в 6-7 раз.
Поэтому в январе 2011 года доверенные центры авторизации решили принять в работу рекомендации NIST (Национального института стандартов и технологий) и обеспечивать все новые RSA-сертификаты ключами с длиной не менее 2048 бит. В 1998 году компания GlobalSign одной из первых в качестве центра авторизации реализовала ключи с размером 2048 бит в своих цифровых сертификатах, с тех пор центры сертификации стремились следовать этим рекомендациям.
К сожалению, размеры ключей не могут расти постоянно, особенно если, как мы надеемся, протокол SSL будет использоваться для большинства трафика в Интернете — будет затрачиваться слишком много вычислительных ресурсов.
Затем стал использоваться алгоритм SHA-1. Алгоритмы хэширования SHA-1 на входе получают данные различного размера и уменьшают их до определенной и фиксированной длины, в результате на выходе получается уникальный идентификатор входных данных. Следует учитывать, что алгоритмы хэширования всегда подвержены коллизиям, а прогресс в области криптоанализа сделал появление подобных коллизий более вероятным. Проблема заключается в том, что при хэшировании нет вариабельного параметра, так что все что может меняться, так это только используемый алгоритм.
Будущее
За последнее десятилетие медленно но верно в обиход входят два новых алгоритма SHA-2 и ECC. Алгоритм ECC обладает большей эффективностью чем RSA при сохранении того же уровня устойчивости. SHA-2 имеет 3 версии, в каждой из которых последовательно реализуются все большие длины ключей, что позволяет устранить текущие риски и обеспечивает достаточно длительный период времени, в который можно безопасно использовать данный алгоритм.
Хотя Форум CA/B еще не включил алгоритм SHA-256 в список базовых требований, Microsoft и Google установили для отрасли ключевую дату (январь 2017 года), после которой они перестанут доверять сертификатам SHA-1, выданным от общественных корневых сертификатов. GlobalSign отслеживает текущую ситуацию в области центров сертификации и браузеров, а также форумы по безопасности, и уже выполняет ряд активных шагов для того, чтобы начать поддержку сертификатов SSL SHA-256 с марта 2014 года.
Что следует учитывать
Основная цель использования протокола SSL — позволить пользователям безопасно взаимодействовать в Интернете. Организации и физические лица должны иметь возможность взаимодействовать без лишних затрат ресурсов, времени и в соответствии с утвержденными стандартами.
При принятии решений следует учитывать и соответствие стандартам, будь то стандарты PCI, касающиеся кредитных карт и безопасности данных, стандарты FIPS или любой другой набор критериев, которым нужно соответствовать.
Сторонние поставщики, использующие алгоритмы SHA2 и RSA 2048-бит, будут обеспечивать безопасные решения как минимум ближайшие десять лет. Что важно учитывать при выборе поставщика, так это время, когда поставщик стал использовать подобные стандарты в своей работе. В компании GlobalSign данный стандарт безопасности использовался за 10 лет до выхода в свет рекомендаций NIST, что позволяло компании быть на острие прогресса.
Криптография: что такое хеш-алгоритмы и для чего они используются?
Для чего нужны хеши?Криптографические хеши в основном используются для защиты паролей, а не для хранения их в открытом виде в базе данных . Если вы когда-нибудь читали о хэш-функциях, вероятно, это было их основное использование, чтобы защитить пароли, чтобы избежать их хранения в виде открытого текста. Представьте, что киберпреступники смогли взломать службу и украсть ее базу данных, если бы пароли не были хешированы, их учетные данные были бы немедленно раскрыты.
Чтобы убедиться, что мы правильно ввели пароль, хранящийся в базе данных (хэш ключа сохраняется), нужно применить алгоритм хеширования к введенному паролю и сравнить его с сохраненным, если он такой же, ключ правильный, если другой, ключ неправильный. Эта процедура используется во всех операционных системах, на веб-сайтах с аутентификацией пользователя / пароля и т. Д.
Если вам когда-либо понадобится получить или повторно получить свой пароль из онлайн-службы, вам нужно будет сбросить его, поскольку даже сама служба не сможет предоставить вам пароль в открытом виде, а будет хранить только хэш. пароль. Если в службе вы запросили пароль, а они предлагают его вам в открытом виде, это означает, что они хранятся таким образом и использовать эту службу небезопасно. Хотя типичные пароли 123456 имеют хорошо известные хэши, как только мы введем надежный ключ, его не будет в какой-либо онлайн-системе хеширования, и нам придется взламывать его самостоятельно с помощью таких инструментов, как Hashcat, среди прочих.
Не все способы использования алгоритмов хеширования относятся к паролям, криптографические хеш-функции также используются для обнаружения вредоносных программ , их можно использовать для обнаружения различных песен или фильмов, защищенных авторским правом, и создания черных списков. Есть также общедоступные списки вредоносных программ, известные как сигнатуры вредоносных программ, представляют собой хеш-значения целых или небольших фрагментов вредоносного ПО. Таким образом, если, с одной стороны, пользователь обнаруживает подозрительный файл, он может проконсультироваться с этими общедоступными хэш-базами данных и, таким образом, узнать, является ли это вредоносный файл или он не представляет никакой опасности, в свою очередь, с другой стороны, они также используются антивирусами для обнаружения и блокировки вредоносных программ путем сравнения хэшей собственных баз данных и общедоступных баз данных, о которых мы говорим.
Еще одно важное использование криптографических хеш-функций — обеспечить целостность сообщения . Их можно использовать для этой цели. проверять хэши, созданные до и после передачи данных , таким образом, если хэши полностью идентичны, это будет означать, что связь была защищена и данные не были изменены, в противном случае что-то пошло не так, и данные, полученные в конце связи, не будут такими же, как те, которые были выпущены в начале.
Теперь, когда мы знаем все о хэш-функциях, давайте посмотрим, какие из них сегодня используются наиболее часто.
SHA2
На заре своего существования алгоритм Secure Hash Algorithm (SHA) был создан NSA и NIST с целью генерации хэшей или уникальных кодов на основе стандарта. В 1993 году родился первый протокол SHA, также известный как SHA-0, но он почти не использовался и оказал небольшое влияние. Несколько лет спустя был выпущен улучшенный, более надежный и безопасный вариант SHA-1, который в течение многих лет использовался для подписания цифровых сертификатов SSL / TLS для миллионов веб-сайтов. Несколько лет спустя был создан SHA-2, который имеет четыре варианта в зависимости от количества выходных битов, это SHA2-224, SHA2-256, SHA2-384 и SHA2-512 . В настоящее время из соображений безопасности SHA1 больше не используется, но настоятельно рекомендуется использовать SHA2 или SHA3 (в семействе SHA).
Операция SHA2
Алгоритмы хеширования работают только в одном направлении: мы можем сгенерировать хэш любого контента или отпечаток пальца, но с помощью хеша или отпечатка пальца нет способа сгенерировать контент. Единственный способ сделать это — использовать словарь или грубую силу, поэтому получение исходной информации может занять тысячи лет (в настоящее время).
Среди множества различных способов создания хэшей алгоритм SHA2-256 является одним из наиболее часто используемых из-за баланса между безопасностью и скоростью, это очень эффективный алгоритм с высокой устойчивостью к конфликтам, что очень важно для поддержания безопасности. этого алгоритма хеширования. Чтобы алгоритм хеширования был безопасным, не должно быть известно о коллизиях. Например, метод проверки биткойнов основан на SHA2-256.
Характеристики различных типов SHA2
- Размер выхода : это размер символов, которые будут составлять хеш.
- Размер внутреннего состояния : это внутренняя хеш-сумма после каждого сжатия блока данных.
- Размер блока : это размер блока, обрабатываемого алгоритмом.
- Максимальный размер сообщения : это максимальный размер сообщения, к которому применяется алгоритм.
- Длина словцо : это длина в битах операции, которую алгоритм применяет к каждому ходу.
- Взаимодействия или повороты : это количество операций, которые алгоритм выполняет для получения окончательного хеша.
- Поддерживаемые операции : это операции, выполняемые алгоритмом для получения окончательного хеша.
SHA-256
Он имеет 256-битный выходной размер, 256-битный размер внутреннего состояния, 512-битный размер блока, максимальный размер сообщения, который он может обработать, составляет 2 64 — 1, длина слова — 32 бита, число примененных витков — 64, а операции, применяемые к хешированию, — это +, и, или, xor, shr и rot. Длина хэша всегда одинакова, независимо от размера содержимого, которое вы используете для генерации хэша: будь то одна буква или образ ISO 4 ГБ, результатом всегда будет последовательность из 40 букв и цифр.
SHA2-384
Этот алгоритм отличается по характеристикам, но принцип его действия такой же. Он имеет 384-битный выходной размер, 512-битный размер внутреннего состояния, 1024-битный размер блока, максимальный размер сообщения, который он может обработать, составляет 2 128— 1, длина слова — 64 бита, число примененных витков — 80, а операции, применяемые к хешированию, — это +, и, или, xor, shr и rot. Этот алгоритм является более безопасной версией, чем SHA2-256, поскольку применяется больше циклов операций, и он также может применяться к более полной информации. Этот алгоритм хеширования обычно используется для проверки целостности и подлинности сообщений в виртуальных частных сетях. Один отрицательный аспект заключается в том, что он немного медленнее, чем SHA2-256, но при определенных обстоятельствах это может быть очень хорошим вариантом для его использования.
SHA2-512
Как и во всех SHA2, операция одинакова, они меняют только одну характеристику. Его выходной размер составляет 512 бит. Все остальные функции такие же, как у SHA2-384. Размер внутреннего состояния 512 бит, размер блока 1024 бит, 2 128 — 1 для максимального размера сообщения, 64 бита длины слова и 80 — числа оборотов, которые применяются к нему. Этот алгоритм также применяет те же операции к каждому повороту +, и, или, xor, shr и rot.
SHA2-224
Мы не комментировали этот алгоритм как основной, потому что его старший брат (SHA2-256) используется намного больше, потому что разница в вычислениях между ними смехотворна, а SHA2-256 гораздо более стандартизирован. Мы упоминаем об этом, потому что, по крайней мере, до сих пор для этого алгоритма не было обнаружено никаких конфликтов, что делает его безопасным и удобным вариантом.
В следующей таблице мы сможем гораздо лучше проверить различия между всеми алгоритмами по их характеристикам.
Вы увидите, что Алгоритмы хеширования MD5, SHA-0 и SHA-1 появиться ранее в таблице , мы не учли их потому что, хотя они использовались очень давно, коллизии уже обнаружены и использовать их уже небезопасно , поэтому в настоящее время используются SHA2 во всех его вариантах и SHA3.
Чтобы прояснить концепцию столкновения и правильно ее понять, мы объясняем, что в информатике хеш-коллизия это ситуация, которая возникает, когда два разных входа хеш-функции производят одинаковый результат.
SHA-3
SHA3 - новейший алгоритм хеширования в семействе SHA, он был выпущен NISH в 2015 году, но пока не получил широкого распространения. Хотя он принадлежит к одному семейству, его внутренняя структура совершенно другая. Этот новый алгоритм хеширования основан на «Конструкция из губки» . Конструкция этой губки основана на случайной функции или случайной перестановке данных, она позволяет вводить любой объем данных и генерировать любой объем данных, причем функция является псевдослучайной по отношению ко всем предыдущим записям. Это позволяет SHA-3 иметь большую гибкость, цель состоит в том, чтобы заменить SHA2 в типичных протоколах TLS или VPN, которые используют этот алгоритм хеширования для проверки целостности и подлинности данных.
SHA-3 — это рождены как альтернатива SHA2, но не потому, что использование SHA-2 небезопасно, а потому, что они хотели иметь план B в случае успешной атаки против SHA2, таким образом, SHA-2 и SHA-3 будут сосуществовать. лет, фактически, SHA-3 не используется широко, как с SHA-2.
Эксплуатация и характеристики
SHA-3 использует конструкцию «губки», данные «поглощаются» и обрабатываются для отображения вывода желаемой длины. На этапе поглощения данных используется операция XOR, которая затем преобразуется в функцию перестановки. SHA-3 позволяет нам иметь дополнительную информацию, чтобы защитить хеш-функцию от атак расширения, которые случаются с MD5, SHA-1 и SHA-2. Другой важной особенностью является то, что он очень гибкий, что позволяет тестировать криптоаналитические атаки и использовать их в легких приложениях. В настоящее время SHA2-512 в два раза быстрее, чем SHA3-512, но последний может быть реализован с помощью оборудования, что тогда может быть таким же быстрым и даже быстрее.
Хеш-алгоритмы KDF
Разница между KDF (функция деривации ключа) а хеш-функция пароля состоит в том, что длина с KDF отличается, в то время как хеш-функция пароля всегда будет иметь одинаковую длину вывода. В зависимости от того, есть ли у вас ключи шифрования или пароли, хранящиеся в базе данных, рекомендуется использовать определенные алгоритмы хеширования или другие. Например, в случае сохраненных паролей рекомендуется, чтобы алгоритм хеширования занимал время, скажем, 5 секунд для вычисления, но тогда он был бы очень надежным и очень дорогим для расшифровки.
Менее опытные разработчики, незнакомые со всеми возможностями хэш-алгоритмов KDF, будут думать, что универсальные однонаправленные, устойчивые к коллизиям криптографические хеш-функции фиксированной длины, такие как SHA2-256 или SHA2-512, лучше, не задумываясь дважды о возможной проблеме. они могут иметь. Проблема с хешами фиксированной длины в том, что они быстрые, что позволяет злоумышленнику очень быстро взломать пароль с помощью мощного компьютера. Хэши переменной длины работают медленнее, что идеально для взломщиков паролей, чтобы получить больше времени.
Криптосообщество собралось вместе, чтобы представить хеш-функции, разработанные специально для паролей, в которые включена «стоимость». Ключевые функции обхода также были разработаны с учетом «стоимости». Основываясь на функциях деривации ключей на основе паролей и хэш-функций, специально разработанных для паролей, сообщество разработало различные алгоритмы, которые будут использоваться для защиты паролей.
Наиболее популярные алгоритмы защиты паролей:
- Аргон2 (KDF)
- зашифрованный (KDF)
- Bcrypt
- ПБКДФ2 (КДФ)
Основное различие между KDF и хэш-функцией пароля состоит в том, что длина KDF является произвольной, а типичные хэши паролей, такие как MD5, SHA-1, SHA2-256, SHA2-512, имеют на выходе фиксированную длину.
Что касается хранения паролей, угроза заключается в том, что база данных ключей будет просочена через Интернет, и хакеры по всему миру работают над хэшами базы данных для получения паролей.
Взяв в качестве примера хранение паролей в базе данных, когда вы подключаетесь для доступа к веб-сайту, всегда необходимо, чтобы хэш ключа выполнялся быстро, чтобы не ждать без ожидания. Иметь возможность получить к нему доступ, но это предполагает, что проблема в том, что он может быть взломан быстрее, особенно если мы будем использовать мощность графического процессора с Hashcat.
bcrypt, sha256crypt, sha512crypt и PBKDF2
В следующей таблице вы найдете сравнение нескольких широко используемых алгоритмов хеширования с соответствующей стоимостью в одной таблице. Вы увидите, что зеленая линия выделена там, где возможный рабочий фактор может означать потратить 0,5 секунды на хеширование пароля, что является довольно хорошим соотношением, и красная линия, где возможный рабочий фактор может означать потратить 5 полных секунд на создание ключа. пароль на основе шифрования, что плохо сказывается на эффективности
Обратите внимание, что для bcrypt это означает, что для хеширования пароля коэффициент 13 обеспечит стоимость примерно 0,5 секунды для шифрования пароля, в то время как коэффициент 16 приблизит затраты примерно на 5 секунд для создания пароля на основе ключа. Для sha256crypt, sha512crypt и PBKDF2 это примерно 640 000 и 5 120 000 итераций соответственно.
зашифровать
Когда вы думаете о переходе на scrypt, это потому, что все становится немного сложнее. С bcrypt, sha256crypt, sha512crypt и PBKDF2 наша стоимость полностью зависит от загрузки ЦП, чем выше мощность обработки, тем выше эффективность алгоритма. Обратной стороной является то, что они по-прежнему становятся жертвами специализированных ПЛИС и ASIC. Для борьбы с этим может быть включена стоимость памяти. С scrypt у нас будут затраты как на процессор, так и на оперативную память.
В следующей таблице вы можете увидеть сравнение с различными значениями стоимости.
Эти тесты проводились с одним четырехъядерным процессором, мы пытались ограничить стоимость «p» до 1, 2 и 4. Использование оперативной памяти также было ограничено и, следовательно, не было необходимости прерывать остальные. . Следовательно, стоимость «r» была ограничена 4, 8 и 16 разом по 128 байтов (512 байтов, 1024 байта и 2048 байтов).
argonxnumx
Argon2 имеет две разные версии: Argon2d и Argon2i; первый зависит от данных (d), а второй не зависит от данных (i). Считается, что первый устойчив к взлому графического процессора, а второй — к атакам по побочным каналам. Другими словами, Argon2d подойдет для хеширования паролей , в то время как что Argon2i подходит для получения ключей шифрования .
Argon2 имеет стоимость ЦП и стоимость ОЗУ, они обрабатываются отдельно. Стоимость процессора обрабатывается стандартными итерациями, такими как bcrypt или PBKDF2, а стоимость оперативной памяти регулируется путем специального увеличения памяти. Когда они начали тестирование этого алгоритма, было обнаружено, что простая манипуляция итерациями очень похожа на bcrypt, но, в свою очередь, на общее время, необходимое для вычисления хэша, может влиять простая манипуляция с памятью. Путем объединения этих двух итераций было обнаружено, что итерации повлияли на стоимость процессора больше, чем RAM, но на обе они приходилось значительную долю времени вычислений, как показано в таблицах ниже. Как и в случае с scrypt, он также требует распараллеливания,
Примечание, которое следует учитывать в этом процессе настройки, заключается в том, что стоимость ОЗУ варьируется от 256 КБ до 16 МБ, в дополнение к количеству итераций и подсчетной стоимости процессора. По мере увеличения объема оперативной памяти, используемой при настройке, мы можем снизить затраты на итерацию. Поскольку нам нужно больше потоков для работы с хешем, мы можем еще больше сократить эту итерацию. Итак, две рассматриваемые концепции означают, что независимо от того, вы пытаетесь выделить 0,5 секунды для интерактивного входа в систему с паролем и полные 5 секунд для получения ключа шифрования на основе пароля.
заключениеМы можем резюмировать использование этих алгоритмов хеширования следующим образом: При хешировании паролей, будь то хранение их на диске или для создания ключей шифрования, следует использовать криптографические коды на основе слов. Pass, специально разработанные для данной проблемы. Не следует использовать какие-либо хэш-функции общего назначения из-за их скорости. Кроме того, им не следует реализовывать собственный алгоритм «растягивания ключа», например рекурсивное хеширование дайджеста пароля и дополнительных выходных данных.
Следовательно, если мы примем во внимание, что, если алгоритм был разработан специально для управления паролями, а стоимость достаточна для покрытия потребностей, модели угроз и злоумышленника, мы можем без сомнения сказать, что делаем это хорошо. . Фактически, мы не ошибемся, если выберем любой из них, нам просто нужно четко понимать, для чего мы собираемся его использовать, чтобы избежать любого алгоритма, который не предназначен специально для слов. Пароль, который будет повысить их безопасность.
Теперь, когда у вас есть четкое представление о том, какие алгоритмы используются сегодня, мы объяснили, как работает каждый алгоритм, и даже объяснили затраты на обработку, чтобы мы могли четко определить, какие из них использовать в зависимости от ситуации. Стало ясно, что все они используются для ясной общей цели, нашей защиты, как алгоритмы на основе фиксированных хешей, так и переменные используются для защиты информации, потому что, как вы знаете, информация — это сила. Благодаря им наши пароли, файлы и передача данных защищены от любого внешнего агента, который хотел бы их узнать.
Что такое хеш и для чего он нужен?
Что такое хеш и для чего он нужен?
Что такое хеш?Хеш-функцией называется математическое преобразование информации в короткую, определенной длины строку.
Зачем это нужно?Анализ при помощи хеш-функций часто используют для контроля целостности важных файлов операционной системы, важных программ, важных данных. Контроль может производиться как по необходимости, так и на регулярной основе.
Как это делается?Вначале определяют, целостность каких файлов нужно контролировать. Для каждого файла производится вычисления значения его хеша по специальному алгоритму с сохранением результата. Через необходимое время производится аналогичный расчет и сравниваются результаты. Если значения отличаются, значит информация содержащаяся в файле была изменена.
Какими характеристиками должна обладать хеш-функция?
- должна уметь выполнять преобразования данных произвольной длины в фиксированную;
- должна иметь открытый алгоритм, чтобы можно было исследовать её криптостойкость;
- должна быть односторонней, то есть не должно быть математической возможности по результату определить исходные данные;
- должна «сопротивляться» коллизиям, то есть не должна выдавать одинаковых значений при разных входных данных;
- не должна требовать больших вычислительных ресурсов;
- при малейшем изменении входных данных результат должен существенно изменяться.
Какие популярные алгоритмы хеширования?В настоящее время используются следующие хеш-функции:
- CRC– циклический избыточный код или контрольная сумма. Алгоритм весьма прост, имеет большое количество вариаций в зависимости от необходимой выходной длины. Не является криптографическим!
- MD5 – очень популярный алгоритм. Как и его предыдущая версия MD4 является криптографической функцией. Размер хеша 128 бит.
- SHA-1 – также очень популярная криптографическаяфункция. Размер хеша 160 бит.
- ГОСТ Р 34.11-94 – российский криптографический стандарт вычисления хеш-функции. Размер хеша 256 бит.
Когда эти алгоритмы может использовать системный администратор? Часто при скачивании какого-либо контента, например программ с сайта производителя, музыки, фильмов или другой информации присутствует значение контрольных сумм, вычисленных по определенному алгоритму. Из соображений безопасности после скачивания необходимо провести самостоятельное вычисление хеш-функции и сравнить значение с тем, что указано на сайте или в приложении к файлу. Делали ли вы когда-нибудь такое?
Чем удобнее рассчитывать хеш?Сейчас существует большое количество подобных утилит как платных, так и свободных для использования. Мне лично понравилась HashTab . Во-первых, утилита при установке встраивается в виде вкладки в свойства файлов, во-вторых, позволяет выбирать большое количество алгоритмов хеширования, а в третьих является бесплатной для частного некоммерческого использования.Что есть российского? Как было сказано выше в России есть стандарт хеширования ГОСТ Р 34.11-94, который повсеместно используется многими производителями средств защиты информации. Одним из таких средств является программа фиксации и контроля исходного состояния программного комплекса «ФИКС». Эта программа является средством контроля эффективности применения СЗИ.
ФИКС (версия 2.0.1) для Windows 9x/NT/2000/XP
- Вычисление контрольных сумм заданных файлов по одному из 5 реализованных алгоритмов.
- Фиксация и последующий контроль исходного состояния программного комплекса.
- Сравнение версий программного комплекса.
- Фиксация и контроль каталогов.
- Контроль изменений в заданных файлах (каталогах).
- Формирование отчетов в форматах TXT, HTML, SV.
- Изделие имеет сертификат ФСТЭК по НДВ 3 № 913 до 01 июня 2013 г.
А как на счет ЭЦП? Результат вычисленияхеш-функции вместе с секретным ключом пользователя попадает на вход криптографического алгоритма, где и рассчитывается электронно-цифровая подпись. Строго говоря, хеш-функция не является частью алгоритма ЭЦП, но часто это делается специально, для того, чтобы исключить атаку с использованием открытого ключа.
В настоящее время многие приложения электронной коммерции позволяют хранить секретный ключ пользователя в закрытой области токена (ruToken, eToken) без технической возможности извлечения его оттуда. Сам токен имеет весьма ограниченную область памяти, измеряемую в килобайтах. Для подписания документа нет никакой возможности передать документ в сам токен, а вот передать хеш документа в токен и на выходе получить ЭЦП очень просто.
В нашем телеграм канале мы рассказываем о главных новостях из мира IT, актуальных угрозах и событиях, которые оказывают влияние на обороноспособность стран, бизнес глобальных корпораций и безопасность пользователей по всему миру. Узнай первым как выжить в цифровом кошмаре!
Поделиться новостью:
хеширование алгоритм — обзор
Работа с хэшированием алгоритмов
Summary: Алгоритмы хеширования — односторонние функции, используемые для проверки целостности данных | Угроза: 0 | Информация утечка, повреждение данных, атаки «человек посередине», атаки грубой силы | |
Несмотря на то, что шифрование важно для защиты данных, иногда важно иметь возможность доказать, что никто не модифицировал данные.Это можно сделать с помощью алгоритмов хеширования. Хэш — это односторонняя функция, которая преобразует данные таким образом, что при наличии результата хеширования (иногда называемого дайджестом ) невозможно с вычислительной точки зрения создать исходное сообщение. Помимо того, что они односторонние, хеш-функции обладают некоторыми другими основными свойствами:
- ▪
Они принимают входные данные любой длины и производят выходные данные фиксированной длины.
- ▪
Они должны быть эффективными и быстрыми в вычислении.
- ▪
Их нельзя инвертировать с вычислительной точки зрения.
- ▪
Они должны быть полностью защищены от столкновений.
Хэш-функция принимает ввод любой длины и создает строку фиксированной длины. Это означает, что вы можете использовать хэши как для чего-то небольшого, например, для пароля, так и для целого документа. Алгоритмы хеширования, предоставляемые .NET Framework, очень эффективны и быстры, что делает их полезными для многих приложений.Наиболее важным свойством хеш-функций является размер хеша. Большой хеш затрудняет инвертирование функции и гарантирует, что функция не будет коллизии.
Поскольку хеш-функции имеют фиксированный выход, но неограниченные входы, несколько значений могут давать один и тот же хэш. Однако из-за того, что существует так много возможных хеш-значений, крайне сложно найти два входа, которые действительно производят совпадающие хэши. По этой причине хэши подобны отпечаткам пальцев исходных данных.Если данные изменятся, отпечаток больше не будет совпадать, и маловероятно, что какие-либо другие полезные данные будут давать такой же отпечаток. Таким образом, вы можете хранить эти небольшие отпечатки пальцев или хэши, чтобы позже проверить целостность ваших данных.
Еще одно распространенное использование хэша — демонстрация того, что кто-то знает часть информации, фактически не раскрывая эту информацию. Например, чтобы доказать, что вы знаете пароль, вы можете отправить фактический пароль или создать и отправить хэш этого пароля.Это полезно для аутентификации веб-сайта, поскольку серверу не нужно хранить фактический пароль — ему нужен только хэш.
.NET Framework поддерживает алгоритмы хеширования, показанные в таблице 4.3.
Таблица 4.3. Алгоритмы хэширования Доступные в .NET Framework
Имя класса | Hash Длина | |
---|---|---|
MD5 | MD5CryptoServiceProvider128 бит | |
SHA-1 | SHA1CryptoServiceProvider SHA1Managed | 160 BITS |
SHA-2560 | Sha256Maned | 256 BITS |
SHA-384 | SHA384MANED | 384 BITS |
SHA-512 | SHA512MANED | 512 бит |
Алгоритм MD5, определенный в RFC 1321, вероятно, является наиболее известной и широко используемой хэш-функцией. Это самый быстрый из всех алгоритмов хеширования .NET, но он использует меньшее 128-битное хэш-значение, что делает его наиболее уязвимым для атак в долгосрочной перспективе. Было показано, что MD5 имеет некоторые частичные коллизии и вряд ли сможет противостоять будущим атакам по мере увеличения аппаратных возможностей. Тем не менее, на данный момент это наиболее часто используемый алгоритм хеширования.
SHA — это алгоритм, разработанный Агентством национальной безопасности (АНБ) и опубликованный NIST как FIPS PUB 180. Разработанный для использования со стандартом цифровой подписи (DSS), SHA создает 160-битное хэш-значение.
Первоначальная спецификация SHA, опубликованная в 1993 г., была вскоре отозвана АНБ и заменена пересмотренной версией FIPS PUB 180-1, обычно называемой SHA-1. алгоритм, снижающий его криптографическую безопасность. Однако АНБ никогда не сообщало подробностей об этом недостатке, что побудило исследователей внимательно изучить оба алгоритма. Из-за такой тщательной проверки SHA-1 широко считается достаточно безопасным.
С тех пор NIST опубликовал три варианта SHA-1, которые производят более крупные хэши: SHA-256, SHA-384 и SHA-512. Хотя с большими размерами хэшей эти алгоритмы должны быть более безопасными, они не подвергались такому тщательному анализу, как SHA-1. Тем не менее, длина хеша важна для защиты от атак грубой силы и атак дня рождения.
Взлом кода…
Об атаках по случаю дня рождения
Атаки по случаю дня рождения основаны на уникальной проблеме алгоритмов хеширования, основанной на концепции, называемой парадоксом дня рождения.Эта головоломка основана на том факте, что в комнате из 183 человек вероятность того, что один из них совпадает с вашим днём рождения, составляет 50%. Однако, если вам нужен 50-процентный шанс найти любых двух людей с одинаковыми днями рождения, вам, как ни странно, потребуется всего 23 человека в комнате. Для хеш-функций это означает, что гораздо проще найти любые два совпадения, если вам все равно, какие именно. Можно предварительно вычислить хэши для заданной длины пароля, чтобы определить, происходят ли какие-либо коллизии.
Проверка целостности
Вы можете использовать хэши для проверки целостности, но многие разработчики используют их неправильно, сводя на нет их эффективность. Например, многие веб-сайты позволяют загрузить файл, а также контрольную сумму MD5 для этого файла. Они делают это, чтобы вы могли проверить целостность файла, но вы загружаете контрольную сумму из того же места и по тому же соединению, что и сам файл. Если вы не настолько доверяете файлу, чтобы действительно проверять хэш, как вы можете доверять хешу, полученному из того же места? Если кто-то может изменить файл, он может так же легко вычислить и сохранить новый хэш.
СОВЕТ
Для проверки целостности загружаемых файлов многие веб-сайты предоставляют сумму MD5, а также PGP-подпись суммы. Сумма MD5 подтверждает целостность, а подпись PGP подтверждает подлинность суммы MD5.
Хэши полезны, если вы держите их в секрете для проверки данных, таких как файлы cookie. Например, предположим, что вы записываете файл cookie в браузер клиента и сохраняете хэш этого файла cookie в своей базе данных. Когда клиент позже вернет этот файл cookie, вы можете вычислить хэш и сравнить его с тем, который хранится в базе данных, чтобы убедиться, что он не изменился.Поскольку ASP.NET хранит маркеры сеанса и проверки подлинности полностью в файле cookie, а не на сервере, он вычисляет хэш данных файла cookie и шифрует как данные, так и хэш. Этот зашифрованный результат кодируется и сохраняется в файле cookie на стороне клиента. Когда клиент возвращает данные cookie, сервер расшифровывает строку и проверяет хэш. Таким образом, ASP.NET защищает хеш и защищает конфиденциальность данных.
Еще один способ сделать хэши более безопасными — использовать алгоритм хэширования с ключом .Хэши с ключом похожи на обычные хэши, за исключением того, что хэш основан на секретном ключе. Чтобы проверить хэш или создать поддельный хэш, вам нужно знать этот ключ. .NET Framework предоставляет два алгоритма хеширования с ключом:
- ▪
HMACSHA1 Эта функция создает код проверки подлинности сообщения на основе хэша на основе алгоритма хеширования SHA-1. HMACSHA1 объединяет исходное сообщение и секретный ключ и использует SHA-1 для создания хэша. Затем он снова объединяет этот хэш с секретным ключом и создает второй хэш SHA-1.Как и SHA-1, алгоритм HMACSHA1 создает 160-битный хэш.
- ▪
MACTripleDES Этот алгоритм использует TripleDES для шифрования сообщения, отбрасывая все биты зашифрованного текста, кроме последних 64.
При использовании алгоритмов хеширования с ключом вы можете отправлять хеш вместе с данными, но вы должны держать ключ в секрете. Обратите внимание, что этот метод имеет ограничения, аналогичные проблемам обмена ключами в симметричной криптографии. Рисунки 4.17 и 4.18 демонстрируют использование функции HMACSHA1.
Рисунок 4.17. Хеширование с ключом с использованием HMACSHA1: C#
Рисунок 4.18. Хеширование с ключом с использованием HMACSHA1: VB.NET
Хеширование паролей
Еще одно важное применение хэшей — хранение паролей. Как описано в главе 1, вы не должны хранить в своей базе данных настоящие пароли. Используя алгоритмы хеширования, вы можете сохранить хэш и использовать его для аутентификации пользователя. Поскольку маловероятно, что два пароля будут генерировать один и тот же хэш, вы можете сравнить сохраненный хэш с хэшем пароля, отправленным пользователем.Если они совпадают, вы можете быть уверены, что у пользователя правильный пароль.
Защита паролей с помощью хэшей имеет некоторые уникальные проблемы. Во-первых, хотя хэши необратимы, их можно взломать методом грубой силы. Вы не можете создать пароль из хэша, но вы можете создавать хэши из миллионов паролей, пока не найдете подходящий. По этой причине надежность хэша зависит не столько от длины ключа алгоритма хеширования, сколько от длины самого пароля.А поскольку пароли имеют такую низкую энтропию, предсказуемы и часто слишком короткие, это обычно не является сложной задачей.
Еще одна проблема с хэшами заключается в том, что одни и те же данные всегда будут давать один и тот же хэш. Это может стать проблемой, если кто-то когда-либо получит хэши, потому что они могут использовать предварительно вычисленный словарь хэшей для мгновенного обнаружения общих паролей. Чтобы предотвратить эту ситуацию, мы можем добавить к паролю соль, чтобы каждый раз использовать другой хэш. Соль должна быть большим случайным числом, специально сгенерированным для этой цели.Вам не нужно хранить соль в секрете, поэтому вы можете сохранить соль вместе с самим хэшем.
Когда вы используете соль, существует столько возможных хэшей для любого фрагмента данных, сколько битов содержится в соли. Конечно, если злоумышленник имеет доступ к хэшам, он также имеет доступ к солям, но ключ здесь в том, чтобы заставить злоумышленника вычислять каждый хэш по отдельности и не получить никакой выгоды от паролей, которые он или она уже взломали. На рисунках 4.19 и 4.20 показаны алгоритмы хеширования, включающие соли.
Рисунок 4.19. Хэширование с солью: C#
Рисунок 4.20. Хеширование с солью: VB. NET
Вы можете подумать, что соль похожа на IV. По сути, это одна и та же техника, которая выполняет ту же цель. Обратите внимание, что по функциям он также похож на алгоритм хеширования с ключом, а функция с ключом, такая как HMACSHA1, является отличной заменой кода на рис. 4.20. Чтобы использовать хэш с ключом, просто используйте соль вместо ключа, а в остальном следуйте примеру кода на рис. 4.19.
Политика безопасности
- ▪
Используйте алгоритмы хеширования для проверки целостности и хранения паролей.
- ▪
Для проверки данных вы можете разрешить другим просматривать хэш, но вы должны защитить его от изменения.
- ▪
Используйте алгоритмы хеширования с ключом для защиты хэша от изменения.
- ▪
Для аутентификации по паролю держите хэши в секрете, чтобы предотвратить атаки грубой силы.
- ▪
Добавьте соль в хэш, чтобы обеспечить случайность.
Обзор алгоритма хэширования: типы, методология и использование
Алгоритм хеширования — это математическая функция, которая искажает данные и делает их нечитаемыми.
Алгоритмы хэширования — это односторонние программы, поэтому никто другой не может расшифровать и расшифровать текст. И в этом суть. Хеширование защищает данные в состоянии покоя, поэтому даже если кто-то получит доступ к вашему серверу, хранящиеся там элементы останутся нечитаемыми.
Хэширование также может помочь вам доказать, что данные не корректируются и не изменяются после того, как автор закончил с ними работать. А некоторые люди используют хеширование, чтобы разобраться в огромном количестве данных.
Что такое алгоритм хеширования?
Существуют десятки различных алгоритмов хеширования, и все они работают немного по-разному. Но в каждом из них люди вводят данные, а программа изменяет их в другой форме.
Все алгоритмы хеширования:
- Матем. В основе работы алгоритма лежат строгие правила, и эти правила нельзя нарушать или корректировать.
- Униформа. Выберите один тип алгоритма хеширования, и данные любого количества символов, пропущенные через систему, будут иметь длину, заданную программой.
- Последовательный. Алгоритм делает только одно (сжимает данные) и больше ничего.
- В одну сторону. После преобразования алгоритмом вернуть данные в исходное состояние практически невозможно.
Важно понимать, что хеширование и шифрование — это разные функции. Вы можете использовать их в сочетании друг с другом. Но не используйте термины взаимозаменяемо.
Как работает алгоритм хеширования?
Можно создать алгоритм, используя только диаграмму, калькулятор и базовые знания математики. Но большинство людей используют компьютеры, чтобы помочь.
Большинство алгоритмов хеширования следуют этому процессу:
- Создайте сообщение. Пользователь определяет, что нужно хэшировать.
- Выберите тип. Существуют десятки алгоритмов хеширования, и пользователь может решить, какой из них лучше всего подходит для этого сообщения.
- Введите сообщение. Пользователь вводит сообщение в компьютер, на котором запущен алгоритм.
- Запустить хэш. Система преобразует сообщение, которое может иметь любую длину, в заранее определенный размер бит. Обычно программы разбивают сообщение на серию блоков одинакового размера, и каждый из них последовательно сжимается.
- Храните или делитесь. Пользователь отправляет хэш (также называемый «дайджестом сообщения») предполагаемому получателю, или хешированные данные сохраняются в этой форме.
Процесс сложный, но работает очень быстро. Через несколько секунд хеш будет готов.
Для чего используются алгоритмы хеширования?
Самый первый алгоритм хеширования, разработанный в 1958 году, использовался для классификации и организации данных. С тех пор разработчики обнаружили десятки применений этой технологии.
Ваша компания может использовать алгоритм хеширования для:
- Хранение паролей. Вы должны вести учет всех комбинаций имени пользователя и пароля, которые люди используют для доступа к вашим ресурсам. Но если хакер получит доступ, украсть незащищенные данные будет легко. Хеширование гарантирует, что данные хранятся в зашифрованном виде, поэтому их труднее украсть.
- Цифровые подписи. Небольшой фрагмент данных доказывает, что заметка не была изменена с момента, когда она покидает почтовый ящик пользователя и попадает в ваш почтовый ящик.
- Документооборот. Алгоритмы хэширования могут использоваться для аутентификации данных. Писатель использует хэш для защиты документа после его завершения. Хэш работает как печать одобрения.
Получатель может сгенерировать хэш и сравнить его с оригиналом. Если они равны, данные считаются подлинными. Если они не совпадают, документ был изменен.
- Управление файлами. Некоторые компании также используют хэши для индексации данных, идентификации файлов и удаления дубликатов.Если в системе тысячи файлов, использование хэшей может сэкономить значительное количество времени.
Примеры алгоритмов хеширования
Может быть трудно понять, что делают эти специализированные программы, не видя их в действии.
Представьте, что мы хотим хэшировать ответ на секретный вопрос. Мы спросили: «Где был ваш первый дом?» Нам дали ответ: «На крыше многоквартирного дома в Квинсе». Вот как выглядят хэши с:
- MD5 : 72b003ba1a806c3f94026568ad5c5933
- SHA-256 : f6bf870a2a5bb6d26ddbeda8e903f3867f729785a36f89bfae896776777d50af
А теперь представьте, что мы задали тот же вопрос другому человеку, и она ответила: «Чикаго.» Вот как выглядят хэши с:
- МД-5 : 9cfa1e69f507d007a516eb3e9f5074e2
- SHA-256 : 0f5d983d203189bbffc5f686d01f6680bc6a83718a515fe42639347efc92478e
Обратите внимание, что в исходных сообщениях разное количество символов. Но алгоритмы каждый раз производят хэши одинаковой длины.
Обратите внимание, что хэши полностью искажены. Почти невозможно понять, что они говорят и как они работают.
Объяснение популярных алгоритмов хеширования
Множество различных типов программ могут преобразовывать текст в хэш, и все они работают немного по-разному.
Общие алгоритмы хеширования включают:
- МД-5. Этот — один из первых алгоритмов, получивших широкое одобрение. Он был разработан в 1991 году и в то время считался чрезвычайно безопасным.
С тех пор хакеры научились расшифровывать алгоритм, и они могут сделать это за считанные секунды.Большинство экспертов считают, что это небезопасно для широкого использования, поскольку его очень легко разорвать.
- РИПЭМД-160. Дайджест оценочных сообщений RACE Integrity Primitives (или RIPEMD-160) был разработан в Бельгии в середине 1990-х годов. Он считается чрезвычайно безопасным, поскольку хакеры еще не придумали, как его взломать.
- ША. Алгоритмы семейства SHA считаются немного более безопасными. Первые версии были разработаны правительством Соединенных Штатов, но другие программисты опирались на исходную структуру и сделали более поздние варианты более строгими и трудными для взлома.Как правило, чем больше число после букв «SHA», тем новее выпуск и сложнее программа.
Например, SHA-3 включает в себя источники случайности в коде, что делает его гораздо более сложным для взлома, чем те, что были раньше. По этой причине он стал стандартным алгоритмом хеширования в 2015 году.
- Водоворот. В 2000 году разработчики создали этот алгоритм на основе стандарта расширенного шифрования. Он также считается очень безопасным.
Правительство больше не может участвовать в написании алгоритмов хеширования. Но власти должны сыграть свою роль в защите данных. Программа проверки криптографических модулей, частично проводимая Национальным институтом стандартов и технологий, проверяет криптографические модули. Компании могут использовать этот ресурс, чтобы убедиться, что они используют безопасные и эффективные технологии.
Что нужно знать о хешировании?
Если вы работаете в сфере безопасности, вам важно знать все тонкости защиты.Хеширование — это ключевой способ гарантировать, что важные данные, включая пароли, не будут украдены кем-то, кто может причинить вам вред.
Частным лицам также может быть полезно понять принципы хэширования. Например, если вы когда-либо хотели участвовать в биткойнах, вы должны хорошо разбираться в хешировании. Ваши торговые партнеры активно используют эту технологию, поскольку они используют ее в процессах блокчейна.
Но если математика, стоящая за алгоритмами, кажется запутанной, не беспокойтесь. Большинство компьютерных программ берут на себя тяжелую работу по вычислениям за вас.
В Okta мы также делаем защиту ваших данных очень простой. У нас есть сложные программы, которые могут защитить вас от хакеров и обеспечить бесперебойную работу.
И мы всегда готовы ответить на вопросы и вмешаться, когда вам нужна помощь. Связаться с нами, чтобы узнать больше.
Ссылки
Ганс Петер Лун и рождение алгоритма хеширования. (январь 2018 г.). IEEE Спектр.
Алгоритмы хеширования. Центр знаний IBM.
Генератор хешей MD5. Инструменты Дэна.
Генератор хэшей SHA-256. Инструменты Дэна.
Криптографическая хеш-функция. Википедия.
Программа проверки криптографического модуля. Национальный институт стандартов и технологий.
Что такое алгоритм хеширования и как он работает?
A алгоритм хеширования – это математический алгоритм, который преобразует массив входных данных определенного типа и произвольной длины в выходную битовую строку фиксированной длины.Алгоритмы хеширования берут любые входные данные и преобразуют их в единое сообщение с помощью хеш-таблицы .
Хеширование является критически важным аспектом криптовалюты, поскольку безопасность и эффективность, которые он обеспечивает для блокчейна, являются двумя его наиболее определяющими характеристиками.
Фон
Алгоритмы хешированиястали прорывом в мире криптографических вычислений. Этот особый тип функции программирования используется для сохранения данных произвольного размера в данные фиксированного размера .Хэш-функции были созданы для сжатия данных, чтобы уменьшить объем памяти, необходимый для хранения больших файлов. Хэши, которые они создают, могут храниться в специальной структуре данных, называемой хеш-таблицами, что позволяет быстрее искать данные.
Основная причина использования хеш-функций возникла из-за необходимости сжатия содержимого, но вскоре уникальные идентификаторы хеш-значений стали основой простоты в управлении базами данных. Никакие два хеш-ввода не должны возвращать один и тот же хэш, вместо этого необходимо создавать уникальные уникальные идентификаторы для каждого хэш-входа. Когда два разных входных хэша возвращают один и тот же выходной хэш, это называется коллизией .
Хотя хэш-функции были созданы для ускорения обслуживания базы данных, полезность алгоритмов хеширования значительно изменилась. Более обширное семейство хеш-функций было создано с учетом конфиденциальности, безопасности и прозрачности. Теперь мы объясним и углубимся в это особое семейство хеш-функций, называемое «Алгоритмы криптографического хеширования».
Как работает хеширование?
Хэширование в контексте криптовалюты — это процесс вычисления « хеш-значения » из обычного текста для защиты от помех.
Ниже приведены 32-байтовые хеш-значения, созданные хэш-калькулятором SHA-256:
Отображает входные данные различных сообщений, чтобы проиллюстрировать различия в выходных хэшах.
Обратите внимание, как одно изменение заглавных букв приводит к совершенно другой строке символов. Фактически, анализ каждого вывода в сравнении с другим подчеркивает сложность алгоритма SHA-256.
Хэш-функции принимают данные в качестве входных данных и возвращают целое число в диапазоне возможных значений в хеш-таблицу.Чтобы делать это неоднократно, есть четыре ключевых компонента алгоритма хеширования:
Хэш-значение полностью определяется хешируемыми входными данными.
Хэш-функция использует все входные данные.
Хэш-функция последовательно распределяет данные по всему набору возможных хеш-значений.
Хеш-функция генерирует совершенно разные хеш-значения даже для одинаковых строк.
Эти четыре компонента обеспечивают работу алгоритмов хеширования.Каждый хэш-алгоритм будет делать это в той или иной форме. Чтобы проиллюстрировать, что такое хеш-функция и что она делает, мы рассмотрим три наиболее важные функции хэш-алгоритма ниже.
Что такое функция хеширования?
Хэш-функции различаются по типу; однако между ними сохраняется несколько характеристик.
Детерминированный : значение хеш-функции остается прежним. Независимо от того, сколько раз вы вводите сообщение в хэш-функцию, вы должны получить один и тот же результат.Детерминированный характер является ключом к созданию порядка в системе с использованием хеш-функции.
Быстрое вычисление : Для использования хеш-функции в реальных приложениях необходимо эффективное вычисление любого данного сообщения. Хеш-функция должна быстро возвращать хеш-значение для любого потенциально заданного сообщения.
Необратимый : Реверс-инжиниринг отсутствует; сообщения не могут быть повторно отслежены из хеш-вывода. Ввод невозможно восстановить из его хеш-значения.Алгоритм хеширования разработан как односторонняя функция, поэтому, если хеш-функцию можно отменить, она считается скомпрометированной и больше не может хранить конфиденциальные данные.
Популярные алгоритмы хеширования
В процессе цифровой криминалистики были разработаны многочисленные алгоритмы хеширования, среди которых наиболее известные из них:
Больше не используется активно, MD5 был одним из наиболее распространенных алгоритмов хеширования в ранней криптографии. Из-за нескольких уязвимостей, включая частоту коллизий , никакие криптовалюты не используют 128-битные выходные данные.
Названная в честь своих разработчиков (Ривест-Шамир-Адлеман), RSA представляет собой криптосистему, возникшую в конце двадцатого века. RSA использует простой метод распространения: лицо А использует открытый ключ лица Б для шифрования сообщения, а лицо Б использует закрытый ключ, который остается секретным для пользователя, чтобы раскрыть его значение. Никакие активные криптовалюты не используют структуру RSA.
- Алгоритм безопасного хеширования (SHA)
Алгоритм безопасного хеширования (SHA) — это семейство криптографических хеш-функций, которые используются в большинстве криптовалют.Это семейство криптографических хеш-функций было разработано Национальным институтом стандартов и технологий. Каждый алгоритм хеширования, выпущенный в рамках семейства SHA, основан на последней версии, и с 2000 года не было выпущено ни одного нового алгоритма SHA. SHA-384 используется для защиты информации АНБ вплоть до СОВЕРШЕННО СЕКРЕТНО. Считайте, что это один из самых безопасных алгоритмов хеширования.
Эта хэш-функция требует больших вычислительных ресурсов, поэтому для ее вычисления требуется относительно больше времени. Из-за временной сложности алгоритма хеширования и требуемого большого объема памяти алгоритм хеширования Scrypt очень безопасен.Litecoin — самая популярная криптовалюта, использующая Scrypt для защиты своего блокчейна.
Ethash — это алгоритм майнинга с доказательством работы, созданный и реализованный сетью Ethereum. Этот хэш-алгоритм был разработан для решения трех основных проблем в сообществе криптовалют: устойчивость к ASIC, легкая верифицируемость клиента и обработка полного хранилища цепочки. Виталику Бутерину приписывают помощь в создании этого хеш-алгоритма.
Какой алгоритм Биткойн использует для хеширования блоков?
Биткойн использует двойную хэш-функцию SHA-256 при майнинге биткойнов. Хэш-функция SHA-256 со временем разрабатывалась на основе других хеш-функций семейства SHA. SHA-256 является частью семейства SHA-2 и основан на SHA-2, но с возможностью обработки больших выходных строк, до 256 бит.
После выполнения транзакции блок получает два случайно сгенерированных числа. Во-первых, встраивается nonce , 32-битное целое число. Это генерирует хеш или 256-битное число и включает данные, записанные об экземпляре: когда это произошло ( время ), где ( высота ) и кем ( передано ).
Затем эти хэши объединяются в дерево Меркла или дерево хэшей. Корень меркла хэшей объясняет транзакции, и это то, что защищает блокчейн Биткойн — наш цифровой реестр транзакций. Хэш заголовка блока действует как идентификатор блока и хранит предыдущий хеш и случайное число, nonce. Прежде чем блок будет добавлен в цепочку, майнеры должны правильно создать Proof-of-Work. Именно здесь используется одноразовый номер — постепенное добавление к заголовку блока, пока майнеры не найдут действительный хэш для блока и не перейдут к добыче хэша следующего блока.
CrossTower Inc. предоставляет этот контент для общих информационных целей, чтобы лучше информировать вас о вашем пути инвестирования в цифровые активы. Мы не даем рекомендаций по инвестициям и не консультируем по вопросам налогообложения. Пожалуйста, проконсультируйтесь со своим специалистом по инвестициям или налоговым консультантом, если вам нужна помощь в этих областях.
примеров работы алгоритмов хеширования
Вот полное изложение того, что такое алгоритмы хеширования и как они работают
Если бы криптография была телом, ее алгоритм хэширования был бы ее сердцем.Если бы криптография была автомобилем, ее алгоритм хеширования был бы ее двигателем. Если бы «Криптография» была фильмом, главным героем был бы алгоритм хеширования. Если бы криптография была Солнечной системой, ее алгоритмом хеширования было бы Солнце. Хорошо, это слишком далеко, но вы уловили суть, верно? Прежде чем мы перейдем к тому, что такое алгоритм хэширования, почему он существует и как он работает; важно понимать, где его гайки и болты. Начнем с Хэширование .
Что такое хеширование?
Попробуем представить здесь гипотетическую ситуацию.Предположим, вы хотите отправить кому-то сообщение/файл, и абсолютно необходимо, чтобы оно дошло до предполагаемого получателя в точно таком же формате. Как бы вы это сделали? Один из вариантов — отправить его несколько раз и убедиться, что он не был подделан. Но что, если сообщение слишком длинное? Что делать, если размер файла измеряется гигабайтами? Было бы совершенно абсурдно, непрактично и откровенно скучно проверять каждую букву, не так ли? Ну, вот где хеширование вступает в игру.
Используя выбранный алгоритм хеширования, данные сжимаются до фиксированного размера.Давайте разберемся с этим на примере. Если мы возьмем предложение «Ослы живут долго» и применим к нему алгоритм хеширования joaat , то получим 6e04f289 . Это значение известно как хэш .
Хэшиочень удобны, когда вы хотите идентифицировать или сравнивать файлы или базы данных. Вместо того, чтобы сравнивать данные в их исходной форме, компьютерам гораздо проще сравнивать хеш-значения. Будь то хранение паролей, компьютерная графика или SSL-сертификаты… Хэширование делает все.
По сути, хеширование определяется двумя различными характеристиками — необратимостью и уникальностью . Необратимость указывает на то, что если вы что-то перепутали, пути назад уже нет. В отличие от шифрования и кодирования, вы не можете легко дехэшировать сообщение/данные. Уникальный, потому что никогда не бывает двух одинаковых хеш-значений для двух разных фрагментов данных. Если два хэша оказываются одинаковыми для двух разных частей данных, это называется «коллизией хэшей», и этот алгоритм становится бесполезным.
(Примечание: здесь мы использовали алгоритм хэширования joaat , так как он короткий и простой для понимания. Современные алгоритмы намного сложнее и длиннее.)
Функция хеширования: ядро алгоритма хеширования
«За каждым успешным мужчиной стоит великая женщина». — Граучо Маркс
«За каждым успешным хеш-алгоритмом стоит отличная хеш-функция». — Мы только что это придумали.
Давайте на минутку отложим шутки и сосредоточимся на сути дела.Хеш-функция — это математическая функция, которая преобразует входное значение в сжатое числовое значение — хэш или хеш-значение. По сути, это блок обработки, который принимает данные произвольной длины и выдает вам результат фиксированной длины — хеш-значение.
Длина вывода или хэша зависит от алгоритма хэширования. Вообще говоря, самые популярные алгоритмы или функции хэширования имеют длину хеш-функции от 160 до 512 бит.
Теперь давайте перейдем к той части, которую вы так долго ждали.
Что такое алгоритм хеширования? Как это работает?
Как мы уже говорили, хэш-функция лежит в основе алгоритма хеширования. Но чтобы получить хеш-значение заданной длины, сначала нужно разделить входные данные на блоки фиксированного размера. Это связано с тем, что хэш-функция принимает данные фиксированной длины. Эти блоки называются «блоками данных». Это показано на изображении ниже.
Размер блока(ов) данных отличается от одного алгоритма к другому. Но для конкретного алгоритма он остается прежним.Например, SHA-1 принимает сообщение/данные только блоками по 512 бит. Таким образом, если сообщение имеет длину ровно 512 бит, хеш-функция запускается только один раз (80 раундов в случае SHA-1). Точно так же, если сообщение имеет длину 1024 бита, оно делится на два блока по 512 бит, и хэш-функция выполняется дважды. Однако в 99% случаев размер сообщения не будет кратен 512 битам. Для таких случаев (почти всех случаев) используется техника под названием Padding . Используя технику заполнения, все сообщение делится на блоки данных фиксированного размера.Хэш-функция повторяется столько раз, сколько блоков данных. Вот как это делается:
Как показано выше, блоки обрабатываются по одному. Выход первого блока данных подается как вход вместе со вторым блоком данных. Следовательно, выход второго блока подается вместе с третьим блоком и так далее. Таким образом, окончательный вывод представляет собой объединенное значение всех блоков. Если вы измените один бит в любом месте сообщения, изменится все значение хеш-функции. Это называется «лавинный эффект».
Популярные алгоритмы хеширования
- Алгоритм дайджеста сообщения (MD)
- Алгоритм безопасного хэширования (SHA)
- Дайджест сообщения оценки примитивов целостности RACE (RIPEMD)
- Whirlpool
- RSA
2 Связанные сообщения 7
Алгоритмы хэширования — подробное руководство по пониманию хэш-функций
Мы все работаем удаленно с несколькими общими файлами и бесчисленными попытками входа в систему из разных источников для различных инструментов, которые мы используем.Такие действия часто неизбежны и необходимы для бесперебойной работы бизнеса. Сначала поговорим об учетных данных. Во многих организациях имя пользователя и пароль присутствуют в таблице базы данных. Когда кто-то пытается войти в систему, система проверяет имя пользователя и сравнивает пароль, введенный пользователем, с паролем, представленным в таблице, чтобы проверить совпадение. Самый простой формат хранения паролей — открытый текст , где «читаемые данные хранятся в открытом виде». Однако о безопасности на этом уровне говорить особо не о чем, так как это почти то же самое, что записывать учетные данные на листе цифровой бумаги, который хакеры могут легко взломать.Итак, вы можете себе представить, насколько уязвима система! Решение?
Введите алгоритм хеширования, фундаментальную часть криптографии, который относится к «разделению данных на более мелкие, перепутанные части, что затрудняет для конечного пользователя возврат к исходному тексту/состоянию». Хеш-функция — это алгоритм, который генерирует результат фиксированной длины или хэш-значение из определенных входных данных. Он отличается от шифрования, которое преобразует обычный текст в зашифрованный текст и с помощью расшифровки преобразует зашифрованный текст обратно в исходный обычный текст.В случае алгоритма хэширования обычный текст преобразуется в хешированный текст с помощью криптографической хеш-функции, что затрудняет его понимание хакерами. (Длина хэша от 160 до 512 бит хороша). Но это не дает возможности вернуться к исходному тексту.
Итак, если нам нужно обеспечить безопасность паролей, хеширование гарантирует, что пароли хешируются и сохраняются парами вместе с именами пользователей в таблице базы данных. При входе в систему введенный пароль хешируется и сравнивается с хешированной записью из таблицы базы данных.Если есть совпадение, вуаля! Пользователю разрешено продолжить.
Хэштеги можно использовать для хранения паролей, проверки целостности, цифровых подписей, кодов аутентификации сообщений. Они также могут пригодиться для снятия отпечатков пальцев, передачи файлов, контрольных сумм и т. д.
Что такое идеальная криптографическая хеш-функция?Есть несколько ключевых аспектов, которые делают хеш-функцию идеальной для использования.
Хеш-функции ведут себя как односторонние функцииНевозможно вернуться к исходному тексту после того, как он был подвергнут алгоритму хеширования. Таким образом, если вы получаете конкретный результат, идеальная хеш-функция гарантирует, что вы не получите исходные данные, которые привели к результату. Например, 6, деленное на 2, дает результат 3. Но то же самое дает и 9, деленное на 3. Но не было бы никакого способа определить начальные два числа только по результату «3».
Хеш-функции очень хорошо используют лавинный эффектКонкретный ввод обеспечивает определенный вывод, но даже очень незначительное изменение ввода (пусть даже очень незначительное) приведет к довольно радикальному изменению вывода.
Например:
Входной сигнал: App1sealing583
Хэш: 5420d1938buif7686dedsf9560bb5087d24676de5f83b7cb4c3b96bf46ec388b
Входной сигнал: App2sealing583
Хэш: 4ic79ff6a81da0b5fc63989d6b6db7dbf1264228052d2da70baqsf7f82961rt6
Для любых заданных входных данных, подвергнутых хэширования, получение результатов в течение нескольких секунд должен не должно быть проблемой, если хэш-функция построена строго
Выходные данные хеш-функции не должны конфликтоватьВыходные данные двух входных параметров никогда не должны совпадать поймите, что мы говорим)
Хеш-функции являются детерминированнымиВывод одного входного параметра должен быть одинаковым независимо от того, когда он проверяется или сколько раз он используется. Это особенно удобно, когда несколько человек должны быть проверены в разные моменты времени
Алгоритм хеширования в действии — как он работает?О паролях и учетных данных мы говорили в начале статьи. Теперь давайте поговорим о передаче файлов. Если один человек (назовем его X) хочет передать файл другому (назовем ее Y). Без алгоритма хеширования единственный способ, которым X может подтвердить содержимое или получателей, — это лично проверить Y.Но это было бы громоздко и в некотором роде бессмысленно в занятом, быстро меняющемся, но крайне небезопасном мире. И если сообщение длинное, файлы тяжелые или почта содержит несколько типов, форматов и количество связанных с ним вложений, этот процесс будет длиться днями.
Но с помощью алгоритма хеширования X может генерировать контрольную сумму (небольшой блок цифровых данных, полученный из другого блока для обнаружения ошибок во время передачи) для конкретного файла. Как только Y получит файл и контрольную сумму, она сможет использовать тот же алгоритм хеширования для полученного файла. Это гарантирует, что правильный файл будет отправлен правильным отправителем правильному получателю.
Типы алгоритмов хеширования MD5 (MD означает дайджест сообщения)
Один из наиболее часто используемых и в то же время наиболее небезопасных алгоритмов. Когда пароль преобразуется в определенный шаблон с помощью этого метода, очень легко просто ввести в Google хеш-значение, чтобы получить исходное значение. Так вот, этого лучше избегать и, по сути, считать непригодным для дальнейшего использования.
Пример:
Вход: пример выхода MD5
(контрольная сумма, содержащая 32 цифр шестнадцатеричного числа, как следующее): 6C30EEB06CE8EB66B7A65191272B9743
SHA-0, ввел в 1993 году был скомпрометирован множество раз. SHA-1, хотя и является слегка улучшенной версией, которая использовалась для безопасности Secure Socket Layer (SSL), также подвергалась множеству атак. Сейчас рекомендуется использовать SHA-2, так как он более сложный.SHA-3 может использоваться компаниями, которые очень серьезно относятся к безопасности.
Пример:
Вход: пример вывода SHA-1
: 482AE821C8245E95451C8245E9545E3275CFB
CAB6FB
CAB6FB
WhirlpoolЭто 512-битная хэш-функция, полученная из расширенного стандарта шифрования (AES).
Пример:
Input: Пример Whirlpool
Выход: 42fefc20dd412b5ad776271d1008ca65d1503a5acd384f3b4e3c8793ded11a0c3d853d721c6d23c37deeecc9b98765575c806099cec4a61b402b65b7a271bfd7
Это означает RACE Integrity Primitives оценки Message Digest и была разработана где-то в середине 1990-х годов.Существует несколько версий, таких как RIPEMD-160, RIPEMD-256 и RIPEMD-320. Поскольку длина выходных данных в последующих версиях продолжает увеличиваться, уровень безопасности также увеличивается.
Пример:
Вход: пример Ripemd-160
Выход: 033432770126267D6640CB35B1D7E1E75A78E7E5
Это известно как циклический код резервирования и обычно известен своими свойствами распространения. Также предполагается, что это будет намного быстрее, что приведет к плавной передаче и проверке файлов.
Пример:
Ввод: Пример CRC32
Вывод: 5c8e1a03
Алгоритмы хеширования безопасны, но не защищены от злоумышленников. Иногда хакеру приходится вводить данные для хеш-функции, которые затем можно использовать для аутентификации. Несколько попыток входа в систему с помощью атак грубой силы также могут быть опробованы до тех пор, пока не будет найдено совпадение.
Поскольку один точный ввод может иметь один точный вывод каждый раз, хакеру будет легче взломать типичный, часто используемый пароль, такой как «123456», и получить несанкционированный доступ.Кроме того, если несколько пользователей сопоставлены с одним и тем же паролем, хакер будет улыбаться всю дорогу.
Другой метод, называемый атакой радужных таблиц, когда хакер использует большую базу данных предварительно вычисленных цепочек хэшей для взлома паролей, является распространенным. Поговорим о самом часто используемом пароле в мире — 123456. Рассмотрим хеш-функцию Md5. Атака по радужной таблице будет работать следующим образом:
- Пропустите пароль (123456) через хеш-функцию MD5, чтобы получить: e10adc3949ba59abbe56e057f20f883e
- повторно хешированное значение: 96bf38d01b84aa16cf2bb9f55c61ac85
- Повторяйте описанную выше процедуру до тех пор, пока не будет получено достаточное количество хэшей в виде цепочки, начиная с исходного простого текста до конечного хешированного текста
- Сохраните их все в таблице
- Продолжайте перечисляйте по одному, пока не будет найдено совпадение
Для противодействия таким попыткам используется метод соления, при котором к хешированному значению добавляется дополнительная сложность, чтобы затруднить взлом пароля.Здесь к входным данным хеш-функции добавляются случайные данные для создания гораздо более сложных выходных данных. Rainbow table в основном работает с несолеными хеш-значениями, поэтому это добавляет дополнительный уровень безопасности.
Самозащита приложения во время выполнения (RASP), которая обнаруживает атаки на приложение в режиме реального времени, является хорошей практикой, на которую следует обратить внимание. Благодаря ограниченному вмешательству человека и интеллектуальному анализу контекстуального поведения приложений гарантируется более высокий уровень безопасности. Таким образом, при обнаружении любой подозрительной активности RASP гарантирует завершение сеанса или предоставление пользователям соответствующих предупреждений для дальнейших действий.И у них есть преимущество перед брандмауэрами, которые просто смотрят на периметр приложения и не имеют большого представления о том, что происходит внутри приложения.
Заключительные мыслиНесмотря на то, что на рынке представлены более новые версии алгоритмов хеширования с дополнительным уровнем безопасности, и SHA-2 кажется хорошим вариантом, всегда лучше обновляться до последней версии. в технологии алгоритма хеширования.
Но, безусловно, когда речь идет о непрерывности бизнеса, когда проверка учетных данных и передача файлов/сообщений являются постоянной деятельностью по всему миру, алгоритм хэширования хорошо справляется со своей задачей.
Чтобы защитить код javascript без КАКОГО-ЛИБО КОДИРОВАНИЯ от обратного проектирования и взлома, нажмите на ссылку ниже, чтобы узнать больше о AppSealing и зарегистрироваться для получения бесплатной пробной версии.
Защитите мое приложение
Что такое хеширование? Преимущества, типы и многое другое
Введение в хэширование и его использование
Автор: Конрад Чанг, 2BrightSparks Pte. ООО
Если вы переносите файл с одного компьютера на другой, как убедиться, что скопированный файл совпадает с исходным? Один из методов, который вы могли бы использовать, называется хэшированием. По сути, это процесс, который переводит информацию о файле в код.Два хеш-значения (исходного файла и его копии) можно сравнить, чтобы убедиться, что файлы равны.
Что такое хеширование?
Хеширование — это алгоритм, который вычисляет значение битовой строки фиксированного размера из файла. Файл в основном содержит блоки данных. Хэширование преобразует эти данные в гораздо более короткое значение фиксированной длины или ключ, представляющий исходную строку. Хэш-значение можно считать дистиллированной сводкой всего, что находится в этом файле.
Хороший алгоритм хеширования будет демонстрировать свойство, называемое лавинным эффектом, при котором результирующий вывод хеширования будет значительно или полностью изменяться даже при изменении одного бита или байта данных в файле.Хеш-функция, которая этого не делает, считается плохой рандомизацией, которую хакерам будет легко взломать.
Хэш обычно представляет собой шестнадцатеричную строку из нескольких символов. Хэширование также является однонаправленным процессом, поэтому вы никогда не сможете работать в обратном направлении, чтобы получить исходные данные.
Хороший хэш-алгоритм должен быть достаточно сложным, чтобы он не выдавал одно и то же значение хеш-функции из двух разных входных данных. Если это так, это известно как хеш-коллизия. Алгоритм хеширования можно считать хорошим и приемлемым только в том случае, если он предлагает очень низкую вероятность коллизии.
Каковы преимущества хеширования?
Одним из основных применений хеширования является сравнение двух файлов на предмет равенства. Не открывая два файла документа для их дословного сравнения, рассчитанные хеш-значения этих файлов позволят владельцу сразу узнать, отличаются ли они.
Хешированиетакже используется для проверки целостности файла после его передачи из одного места в другое, как правило, в программе резервного копирования файлов, такой как SyncBack. Чтобы убедиться, что передаваемый файл не поврежден, пользователь может сравнить хэш-значение обоих файлов.Если они совпадают, то переданный файл является идентичной копией.
В некоторых случаях зашифрованный файл может быть спроектирован так, чтобы никогда не изменять размер файла, а также дату и время последнего изменения (например, файлы-контейнеры виртуального диска). В таких случаях было бы невозможно с первого взгляда определить, отличаются ли два похожих файла или нет, но значения хеш-функции легко отличили бы эти файлы друг от друга, если они разные.
Типы хеширования
Существует множество различных типов алгоритмов хеширования, таких как RipeMD, Tiger, xxhash и другие, но наиболее распространенными типами хеширования, используемыми для проверки целостности файлов, являются MD5, SHA-2 и CRC32.
MD5 — хеш-функция MD5 кодирует строку информации и кодирует ее в 128-битный отпечаток пальца. MD5 часто используется в качестве контрольной суммы для проверки целостности данных. Однако известно, что из-за своего возраста MD5 также страдает от обширных уязвимостей, связанных с коллизиями хэшей, но он по-прежнему остается одним из наиболее широко используемых алгоритмов в мире.
SHA-2 — SHA-2, разработанный Агентством национальной безопасности (АНБ), представляет собой криптографическую хеш-функцию. SHA-2 включает в себя существенные отличия от своего предшественника SHA-1.Семейство SHA-2 состоит из шести хэш-функций с дайджестами (хеш-значениями) размером 224, 256, 384 или 512 бит: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, SHA. -512/256.
CRC32 — проверка циклическим избыточным кодом (CRC) — это код обнаружения ошибок, часто используемый для обнаружения случайных изменений данных. Кодирование одной и той же строки данных с использованием CRC32 всегда приводит к одному и тому же выводу хэша, поэтому CRC32 иногда используется в качестве алгоритма хеширования для проверки целостности файлов. В наши дни CRC32 редко используется за пределами Zip-файлов и FTP-серверов.
Использование хеширования в программе 2BrightSparks
В программном обеспечении резервного копирования и синхронизации SyncBackPro/SE/Free хеширование в основном используется для проверки целостности файлов во время или после сеанса передачи данных. Например, пользователь SyncBack может включить проверку файлов ( Изменить профиль > Копировать/удалить ) или использовать более медленный, но более надежный метод ( Изменить профиль > Параметры сравнения ), который позволит хэшировать для проверки различий между файлами. В зависимости от того, какой параметр используется и где находятся файлы резервных копий, будут использоваться разные хэш-функции.
Другими областями, где используется хеширование, являются возобновление на FTP, проверка целостности данных, сценарии и иногда для аутентификации в облачных профилях (скрипты и облачное резервное копирование поддерживаются только SyncBackPro).
2BrightSparks также имеет вспомогательную программу под названием HashOnClick, которую можно использовать для обеспечения идентичности файлов. HashOnClick является частью утилиты OnClick, которая совершенно бесплатна. В HashOnClick доступно несколько типов алгоритмов хеширования.
Вы можете посетить нашу страницу загрузок, если хотите ознакомиться с любым программным обеспечением 2BrightSparks.
Резюме
В заключение следует отметить, что хеширование является полезным инструментом для проверки правильности копирования файлов между двумя ресурсами. Его также можно использовать для проверки идентичности файлов без их открытия и сравнения. Чтобы узнать больше о хешировании, посетите страницу Википедии.
Какой самый сильный алгоритм хеширования?
Потребность в сокрытии сообщений существовала с момента зарождения человечества, решетки Кардана являются примером раннего эквивалента хеширования.
То же самое, когда вы отправляете сообщения через Интернет. Для защиты сообщений, которые вы отправляете через Интернет, вы можете использовать алгоритм хеширования, который преобразует текстовую строку в буквенно-цифровую строку. Хеши обычно называют односторонними хэшами, это просто относится к тому факту, что их очень трудно реверсировать. Практически невозможно, чтобы два разных сообщения получили одну и ту же строку. Если сообщение будет изменено, хеш-строка станет недействительной, так сказать, сломав печать.Хеширование отличается от шифрования тем, что результирующий хэш обычно меньше исходного, тогда как зашифрованный документ имеет такой же размер.
Шифрование и хеширование похожи в том, что они оба берут строку полезного текста и преобразуют ее во что-то совсем другое. Однако вы не можете вернуть значение хеш-функции в его исходное сообщение, поскольку потенциально два сообщения могут иметь одно и то же значение хеш-функции. Как мы упоминали ранее, возможность того, что два значения имеют одно и то же значение хеш-функции, очень маловероятна, но все же возможна.Зашифрованные значения можно преобразовать обратно в исходные, если вы знаете, какой ключ и метод шифрования использовались. Машина «Энигма» использовалась для взлома немецкого шифрования, использовавшегося во время Второй мировой войны. Хэш-значения никогда не нужно декодировать, когда вы входите в свой компьютер, хеш-значение сравнивается с хэш-значением, хранящимся на вашем сервере.
Существует много различных доступных алгоритмов хеширования, и мы посвятим оставшуюся часть этой статьи анализу и сравнению популярных алгоритмов хеширования.
Алгоритмы SHA
Алгоритмы серии SHA расшифровываются как «Алгоритм безопасного хеширования». Они были разработаны NIST. Из-за лавинного эффекта даже небольшое изменение в зашифрованных данных, вероятно, приведет к совершенно другой хэш-строке. Поскольку алгоритмы SHA демонстрируют признаки лавинного эффекта, считается, что они обладают достаточно хорошей функцией рандомизации. Алгоритмы SHA были основаны на алгоритмах MD4 и 5, разработанных Роном Ривестом. SHA был выпущен органом национальной безопасности в качестве стандарта правительства США.
SHA-0
SHA-0 официально известен как SHA, это было первое воплощение безопасного алгоритма хеширования. Эта первая версия была отозвана вскоре после выпуска из-за недостатков конструкции. Пару лет спустя был выпущен SHA-1, в котором эти проблемы были устранены.
SHA-1
SHA-1 — популярный алгоритм хеширования, выпущенный в 1994 году и разработанный NIST. SHA-1 похож на алгоритмы хеширования MD4 и MD5, и из-за того, что он немного более безопасен, чем MD4 и MD5, он считается преемником MD5.Сказав это, SHA-1 также медленнее, чем MD5. SHA-1 создает 160-битный хэш. Алгоритм SHA-1 используется в большом количестве протоколов и приложений безопасности. Недавно Сяоюнь Вану удалось взломать популярные хэши, доказав, что SHA-1 не так безопасен, как считалось раньше.
SHA-2
SHA-2 тесно связан с алгоритмом SHA-1. SHA-2 фактически объединяет алгоритмы SHA-224, SHA-256, SHA-384 и SHA-512, некоторые из которых мы рассмотрим более подробно позже. Федеральные агентства и другие государственные органы должны начать использовать семейство алгоритмов SHA-2 до 2010 года.Люди до сих пор не уверены, насколько на самом деле безопасен SHA-2.
SHA-256
SHA-256, как мы уже упоминали, является частью семейства продуктов SHA-2, он основан на SHA-2, но с возможностью вывода больших строк (до 256 бит). Дизайн SHA-256 немного изменился, однако, поскольку он по-прежнему основан на SHA-1, люди скептически относятся к его надежности.
SHA-384
SHA-384 является частью семейства алгоритмов SHA-2, он тесно связан с SHA-1, но выходные размеры увеличены до 384 бит.
SHA-512
SHA-512 основан на алгоритмах SHA-1, однако существуют небольшие различия. Строка увеличена в размере до 512 бит.
Семейство алгоритмов хеширования MD
Семейство алгоритмов хеширования MD было разработано Роном Ривестом в конце 1980-х и начале 1990-х годов. MD на самом деле означает Message Digest, а не Medical Doctor в данном случае!
Хэши MD2
MD2 оптимизирован для работы на 8-битных компьютерах и генерирует 128-битное хеш-значение. Хэши обычно отображаются в виде шестнадцатеричной строки длиной 32 символа.Этот хэш демонстрирует черты эффекта лавины, поэтому даже очень небольшое изменение в текстовой строке приведет к созданию совершенно другой шестнадцатеричной строки.
Хэши MD5
MD5 был разработан в 1991 году и заменил более раннюю хеш-функцию MD4 из-за предполагаемых недостатков этого алгоритма. MD5 по-прежнему широко используется для защиты неконфиденциальной информации. 1996 год был очень разрушительным для MD5, однако в его конструкции был обнаружен недостаток, и поэтому были предложены другие функции хеширования.Размер хэша составляет 128 бит, и поэтому он достаточно мал, чтобы допустить атаку дня рождения.
HAVAL
HAVAL — еще одна популярная хеш-функция. Она отличается от многих других хеш-функций тем, что может генерировать хеш-значения разной длины, длина хэшей может быть 128 бит, 160 бит, 192 бит, 224 бит. бит или 245 бит. HAVAL был разработан в 1992 году. Эта хэш-функция демонстрирует лавинный эффект, поэтому даже небольшое изменение в строке может привести к совершенно другому значению хеш-функции.Недавнее исследование, в основном проведенное Xiaoyun Wang, показало, что HAVAL имеет ряд недостатков, что, возможно, откладывает его использование.
RIPEMD-320
RIPEMD был разработан европейским консорциумом как расширение исходной хэш-функции RIPEMD. Функция RIPEMD-320 не обеспечивает большей безопасности, чем RIPEMD-160, она просто позволяет использовать более длинные хеш-строки. RIPEMD-320 — вариант популярного RIPEMD-160 с двойной шириной струны.
ГОСТ
ГОСТ был набором стандартов Советского Союза и применялся ко всему, от электроники до химикатов.ГОСТ стандартизировал все в России, то есть почти все было взаимозаменяемо, потому что было совместимо. ГОСТ 28147-89 является фактическим шифром, разработанным как советским, так и российским стандартом. ГОСТ 28147-89 обычно называют ГОСТ в криптологических кругах. ГОСТ очень тесно связан со стандартом US DES. Основная проблема ГОСТа заключается в том, что лавинный эффект возникает не очень быстро.
Whirlpool
Whirlpool — довольно молодой хэш-алгоритм, впервые выпущенный в 2000 году.С тех пор было проведено несколько доработок. Дизайнеры Whirlpool пообещали никогда не патентовать Whirlpool, вместо этого он бесплатен для всех, кто хочет его использовать. Хэши Whirlpool обычно отображаются в виде 128-значной шестнадцатеричной строки. Whirlpool-0 — это первая версия, Whirlpool-1 — вторая, а Whirlpool — самая последняя версия алгоритма. Whirlpool основан на модифицированной версии AES (Advanced Encryption Standard).
Что выбрать?
Разработчики часто хотят разрабатывать приложения, требующие передачи конфиденциальных личных данных, поэтому необходима какая-то форма шифрования.Разработчики, использующие платформу .net, могут легко инвестировать в функции хеширования .net, библиотеки хеширования доступны по разумным ценам. Защитить данные с помощью алгоритмов хеширования можно, если приобрести библиотеку хеширования. При принятии решения о том, какой пакет выбрать, обратите внимание на то, сколько раз вы можете распространять программное обеспечение. Большинство библиотек хеширования .net совместимы со всем пакетом .net, включая Visual Basic, Visual C++ и Visual C#.
Самыми популярными алгоритмами хеширования по-прежнему являются семейство SHA, однако из-за выявленных слабых мест рекомендуется использовать только семейство продуктов SHA-2.Федеральные организации США должны перейти на использование SHA-2 до 2010 года.
SHA-1 по-прежнему считается безопасным для менее важных целей, несмотря на обнаруженные в нем недостатки. Бизнесу и домам рекомендуется использовать SHA-1, так как он все же более безопасен, чем MD5. Microsoft даже полагается на алгоритм SHA-1 для защиты от копирования в своей игровой консоли Xbox, поэтому, если он достаточно хорош для такой компании, как Microsoft, почему бы и нет? Microsoft пытается любой ценой помешать людям копировать игры.
Алгоритмы хэширования можно обратить вспять, если вы сделаете достаточно вычислений.Проблема алгоритмов хеширования в том, что они быстро устаревают. Чтобы взломать алгоритм, требуется грубая сила, пробующая все различные комбинации. Компьютеры со временем становятся быстрее, поэтому они могут выполнять больше таких вычислений за более короткое время. Скорость процессора обычно увеличивается примерно на 60% в год, но, конечно, со временем она начнет выравниваться. Даже задержка оперативной памяти уменьшается примерно на 10% в год, это означает, что с каждым годом наши компьютеры становятся быстрее и способны выполнять больше вычислений в секунду.Атака дня рождения — это просто время, необходимое для взлома кода методом грубой силы, оно должно быть в два раза больше времени, которое было бы возможно сделать.
Чтобы алгоритм хеширования считался безопасным, он должен выполнять в два раза больше вычислений, необходимых для его решения за приемлемое время. Компьютеры все время становятся быстрее, поэтому постоянно разрабатываются более совершенные алгоритмы хеширования.
Расширенный стандарт шифрования (AES) является заменой DES. Был проведен конкурс по поиску замены устаревшей технологии DES, команда из двух человек Джоан Деймен и Винсент Риймен предложили шифр Rijndael, который и одержал победу.Этот AES является причиной того, что АНБ сочло необходимым запустить семейство продуктов SHA-2.
В приведенной ниже таблице указаны хэши, которые считаются взломанными. В настоящее время самыми надежными алгоритмами шифрования являются SHA-512, RIPEMD-320 и Whirlpool. Любой из этих алгоритмов достоин защиты информации совершенно секретного уровня для вашего бизнеса.
Хэш | Количество битов | Количество проходов | Взломали? | Автор | Дата запущены | |
SHA-1 | 160 | 80 | NSA | 1995 | ||
SHA-2 | Нет * | NSA | 5 2000||||
SHA-256 | 256 | 64 | 9005 64NSA | |||
SHA-384 | 384 | 80 | NO * | NSA | 2000 | |
SHA-512 | 512 | 80 | NSA | NSA | 2000 | |
MD2 | ||||||
MD2 | 128 | 1Да ** | Ronald Rovest | 1989 | ||
MD5 | 128 | 1 | Да | Рональд Ривест | 1991 | |
HAVAL | 9 6 18 960 1№ | Юлян Чжэн, Йозеф Пепшик, Дженнифер Себерри. | 1992 | |||
RIPEMD-320 | 320 | № | Ханс Доббертин, Антон Босселарс, Бард Пренель. | 1996 | ||
Гост | 64 | Нет | Советский Союз | 1970- | ||
Whirlpool | 512 | Нет и | Пауло Баррето, Винсент Рэймен | 2001 |
*Хотя сообщений об атаках не поступало, люди скептически относятся к безопасности, которую обеспечивает SHA-2, поскольку он тесно связан с алгоритмом SHA-1.