«Криптография в блокчейнах»: о хеш-функциях, ключах и цифровых подписях / Хабр

«Криптография в блокчейнах»: о хеш-функциях, ключах и цифровых подписях / Хабр Сертификаты

Что такое хеш?

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

Службы центра сертификации (ЦС) ИОК используют криптографические хеш-функции для подтверждения идентификационных данных и запросов цифровых сертификатов. Кроме этого, хеши используются для подтверждения цифровых сертификатов (например, цифровой подписью) и списка аннулированных сертификатов (CRL, certificate revocation list), которые выдают другие доверенные стороны.

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

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

Введение в семейство sha

Алгоритм SHA-1 был разработан Агентством национальной безопасности США (АНБ) и опубликован Национальным институтом стандартов и технологий США (NIST) в качестве федерального стандарта в 1995 году. Выпущенные NIST криптографические стандарты пользуются доверием по всему миру и как правило требуются на всех компьютерах, используемых правительством или вооружёнными силами Соединённых Штатов. SHA-1 заменил предыдущие ослабевшие хеш-функции, например, MD5.

Со временем несколько непрерывных криптографических атак на SHA-1 уменьшили эффективность длины ключа. Из-за этого в 2002 году АНБ и NIST выбрали SHA-2 новым рекомендуемым стандартом хеширования. Это случилось задолго до того, как SHA-1 начали считать взломанным.

Отличное обсуждение взлома SHA-1 и пример документации можно найти здесь.

Sha-1 и sha-2

«Криптография в блокчейнах»: о хеш-функциях, ключах и цифровых подписях / Хабр

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

Вам следует воспринимать SHA-2, как преемника SHA-1. В первую очередь, люди сосредоточены на бит-длине, как на важном различии. SHA-1 — это 160-битный хеш. SHA-2, на самом деле, является «семейством» хешей и имеет множество длин, наиболее популярной из которых является 256-бит.

Разнообразие хешей SHA-2 может привести к путанице, поскольку сайты и авторы обозначают их по-разному. Если вы видите «SHA-2», «SHA-256» или «SHA-256 бит», эти имена относятся к одной и той же вещи. Если вы видите «SHA-224», «SHA-384» или «SHA-512», это относится к чередованию бит-длины SHA-2.

Sha-3 уже здесь, но стоит ли его использовать?

Хотя в SHA-2 не обнаружено существенных криптографических слабостей, он считается алгоритмически схожим с SHA-1. Большинство экспертов думают, что его время жизни будет схожим с SHA-1. В августе 2021 NIST утвердило новый алгоритм криптографического хеширования SHA-3.

К сожалению, люди, откладывающие свой переход на SHA-2 в надежде сразу перейти на SHA-3, будут очень расстроены. Общемировое принятие стандарта SHA-3 может затянуться на долгие годы, а переход на SHA-2 следует сделать уже сейчас. Если вы перейдёте на SHA-3 сейчас, то большинство, если не все, ваших криптографически-зависимых приложений или устройств, скорее всего, сообщат об ошибке (не смогут распознать цифровой сертификат).

Итак, если вы ещё не перешли на SHA-2, то переходите сейчас. И когда SHA-2 начнёт ослабевать, мы все вместе перейдём на SHA-3.

Перевод статьи «All you need to know about the move from SHA-1 to SHA-2 encryption»

Варвара Николаева

Атаки на хеши

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

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

Вычислительная сложность криптостойкого хеша равна заявленной эффективной длине последовательности бит минус 1. Таким образом, когда неизвестны его недостатки, 128-битный хеш будет иметь сложность вычисления 2^127. Как только кто-то найдёт математический алгоритм, который позволит взломать хеш за время меньшее, чем эффективная длина бит минус 1, такой хеш будет считаться ослабленным.

Как правило, все общепринятые хеши становятся слабее со временем. Когда эффективная длина бит сокращается, хеш становится менее защищённым и менее ценным. Когда считается, что хеш может быть взломан за разумный период времени и с не столь значительными вычислительными ресурсами (стоимостью от сотен тысяч до миллионов долларов), то хеш считается «взломанным» и не должен больше использоваться.

Взломанные хеши используются вредоносными программами и злоумышленниками для создания якобы законного программного обеспечения с цифровой подписью. Хороший пример такого ПО — Flame malware program. В общем, слабые хеши могут сыграть свою роль и не должны использоваться.

Для чего используется хеш?

Отличный вопрос. Однако ответ не так прост, поскольку криптохеши используются для огромного количества вещей.

Для нас с вами, простых пользователей, наиболее распространенная область применения хеширования — хранение паролей. К примеру, если вы забыли пароль к какому-либо онлайн-сервису, скорее всего, придется воспользоваться функцией восстановления пароля.

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

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

Вы даже можете провести простой эксперимент: попробуйте при помощи специального сайта произвести преобразование какого-нибудь простого пароля вроде «123456» или «password» из их хеш-значений (созданных алгоритмом MD5) обратно в текст. Вероятность того, что в базе хешей найдутся данные о введенных вами простых паролях, очень высока.

В моем случае хеши слов «brain» (8b373710bcf876edd91f281e50ed58ab) и «Brian» (4d236810821e8e83a025f2a83ea31820) успешно распознались, а вот хеш предыдущего абзаца — нет. Отличный пример, как раз для тех, кто все еще использует простые пароли.

Еще один пример, покруче. Не так давно по тематическим сайтам прокатилась новость о том, что популярный облачный сервис Dropbox заблокировал одного из своих пользователей за распространение контента, защищенного авторскими правами. Герой истории тут же написал об этом в твиттере, запустив волну негодования среди пользователей сервиса, ринувшихся обвинять Dropbox в том, что он якобы позволяет себе просматривать содержимое клиентских аккаунтов, хотя не имеет права этого делать.

Про сертификаты:  Active directory certificate services - Вэб-шпаргалка для интернет предпринимателей!

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

Где еще можно использовать хеш-функции помимо систем хранения паролей и защиты медиафайлов? На самом деле задач, где используется хеширование, гораздо больше, чем я знаю и тем более могу описать в одной статье. Однако есть одна особенная область применения хешей, особо близкая нам как сотрудникам «Лаборатории Касперского»: хеширование широко используется для детектирования зловредных программ защитным ПО, в том числе и тем, что выпускается нашей компанией.

Замечания

Используйте необходимость импорта пакета maven или jar

Как при помощи хеша ловить вирусы?

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

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

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

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

Кстати, в повседневной жизни мы, сами того не подозревая, иногда пользуемся простейшими хешами. Например, представьте, что вы совершаете переезд и упаковали все вещи по коробкам и ящикам. Погрузив их в грузовик, вы фиксируете количество багажных мест (то есть, по сути, количество коробок) и запоминаете это значение.

По окончании выгрузки на новом месте, вместо того чтобы проверять наличие каждой коробки по списку, достаточно будет просто пересчитать их и сравнить получившееся значение с тем, что вы запомнили раньше. Если значения совпали, значит, ни одна коробка не потерялась.

Как работает хеш?

Например, мое имя — Brian — после преобразования хеш-функцией SHA-1 (одной из самых распространенных наряду с MD5 и SHA-2) при помощи онлайн-генератора будет выглядеть так: 75c450c3f963befb912ee79f0b63e563652780f0. Как вам скажет, наверное, любой другой Брайан, данное имя нередко пишут с ошибкой, что в итоге превращает его в слово brain (мозг).

Это настолько частая опечатка, что однажды я даже получил настоящие водительские права, на которых вместо моего имени красовалось Brain Donohue. Впрочем, это уже другая история. Так вот, если снова воспользоваться алгоритмом SHA-1, то слово Brain трансформируется в строку 97fb724268c2de1e6432d3816239463a6aaf8450.

Как видите, результаты значительно отличаются друг от друга, даже несмотря на то, что разница между моим именем и названием органа центральной нервной системы заключается лишь в последовательности написания двух гласных. Более того, если я преобразую тем же алгоритмом собственное имя, но написанное уже со строчной буквы, то результат все равно не будет иметь ничего общего с двумя предыдущими: 760e7dab2836853c63805033e514668301fa9c47.

Впрочем, кое-что общее у них все же есть: каждая строка имеет длину ровно 40 символов. Казалось бы, ничего удивительного, ведь все введенные мною слова также имели одинаковую длину — 5 букв. Однако если вы захешируете весь предыдущий абзац целиком, то все равно получите последовательность, состоящую ровно из 40 символов:

c5e7346089419bb4ab47aaa61ef3755d122826e2. То есть 1128 символов, включая пробелы, были ужаты до строки той же длины, что и пятибуквенное слово. То же самое произойдет даже с полным собранием сочинений Уильяма Шекспира: на выходе вы получите строку из 40 букв и цифр. При всем этом не может существовать двух разных массивов данных, которые преобразовывались бы в одинаковый хеш.

Вот как это выглядит, если изобразить все вышесказанное в виде схемы:

Модели перехода иок

Ниже перечислены сценарии для внедрения SHA-2 в компоненты ИОК (для этих примеров используется двухуровневая ИОК — автономная корневая система, онлайн центры сертификации), каждый из которых может быть либо новым компонентом, либо перенесённым:

  • Два ИОК дерева, один полностью SHA-1, другой полностью SHA-2.

Остальные сценарии предполагают одно дерево ИОК:

  • Всё дерево ИОК, от корня до конечных точек, — SHA-1.
  • Всё дерево ИОК, от корня до конечных точек, — SHA-2.
  • Корень — SHA-1, выдающие ЦС — SHA-2, сертификаты конечных точек — SHA-2.
  • Корень — SHA-1, выдающие ЦС — SHA-2, сертификаты конечных точек — SHA-1.
  • Корень — SHA-1, выдающие ЦС — SHA-2 и SHA-1, сертификаты конечных точек — SHA-2 и SHA-1.
  • Корень — SHA-2, выдающие ЦС — SHA-1, сертификаты конечных точек — SHA-1.
  • Корень — SHA-2, выдающие ЦС — SHA-2, сертификаты конечных точек — SHA-1.
  • Корень — SHA-2, выдающие ЦС — SHA-2 и SHA-1, сертификаты конечных точек — SHA-2 и SHA-1.

Также возможно существование выдающего центра сертификации, который переключается между SHA-1 и SHA-2 по необходимости, но это с большой вероятностью вызовет путаницу в службах ИОК (и не особо рекомендуется). Если возможно, для облегчения перехода можно запустить параллельные ИОК, один — с SHA-1, другой — с SHA-2, а потом переводить используемые устройства после того, как позволит тестирование.

Примечание: собственный сертификат ЦС корневого ЦС не нужно переносить на SHA-2, даже если он всё ещё использует SHA-1. Все программы проверки устаревших SHA-1 заботятся обо всём после собственного сертификата корневого ЦС (и будут заботиться, по крайней мере, в обозримом будущем).

Публичные ЦС уже перешли с SHA-1 на SHA-2 для любых сертификатов со сроком жизни, заканчивающимся после 1 января 2021, поэтому вы должны сосредоточить свои усилия на серверах и приложениях с ещё не перешедшими на SHA-2 публичными цифровыми сертификатами.

Обеспечение безопасности подписей

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

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

Это не означает, что криптографы будут просто сидеть и ждать, пока не возникнет проблема. Преемник SHA-2, удобно названный SHA-3, уже создан. Когда придет время сделать другой коммутатор, индустрия SSL может использовать SHA-3 в качестве своего следующего выбора, или сможет воспользоваться совершенно другим алгоритмом.

Про сертификаты:  Сертификат соответствия № С-RU.АЯ81.В.00856

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

Обработка устаревших хэшей sha-1

Все крупные поставщики веб-браузеров (например, Microsoft, Google, Mozilla, Apple) и другие доверенные стороны рекомендовали всем клиентам, сервисам и продуктам, в настоящее время использующим SHA-1, перейти на SHA-2, хотя что и когда должно перейти зависит от поставщика.

Например, многие поставщики заботятся только о сертификатах TLS (т. е. веб-серверах), и только компания Microsoft озабочена использованием SHA-1 в цифровом сертификате от «публичного» центра сертификации. Но можно ожидать, что все поставщики потребуют перевести на SHA-2 все приложения и устройства, даже если они не готовы к этому.

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

К сожалению, переход с SHA-1 на SHA-2 является односторонней операцией в большинстве сценариев сервера. Например, как только вы начнёте использовать цифровой сертификат SHA-2 вместо SHA-1, пользователи, не понимающие сертификаты SHA-2, начнут получать предупреждения и уведомления об ошибках, или даже отказы. Для пользователей приложений и устройств, не поддерживающих SHA-2, переход будет опасным скачком.

Общие алгоритмы шифрования

Алгоритм дайджеста сообщения MD5(Английский: MD5 Message-Digest Algorithm), широко используемая криптографическая хеш-функция, может генерировать128 битХэш-значение (16 байтов) используется для обеспечения полной и согласованной передачи информации.

MD5 был разработан американским криптографом Рональдом Линном Ривестом и опубликован в 1992 году для замены алгоритма MD4. Порядок работы этого алгоритма регламентирован стандартом RFC 1321. После 1996 года было доказано, что алгоритм имеет слабые места и может быть взломан.

Для данных, требующих высокой безопасности, эксперты обычно рекомендуют использовать другие алгоритмы, такие как SHA-2. В 2004 году это было подтверждено.Алгоритм MD5 не может предотвратить коллизии(Коллизия), поэтому он не подходит для сертификации безопасности, такой как сертификация открытого ключа SSL или цифровая подпись.

SHA-1(Английский: Secure Hash Algorithm 1, китайское название: Secure Hash Algorithm 1) – это криптографическая хеш-функция, разработанная Агентством национальной безопасности и выпущенная Национальным институтом стандартов и технологий (NIST)

как Федеральный стандарт обработки данных (FIPS). )). SHA-1 может генерировать дайджест сообщения160 бит(20 байт) хеш-значение, обычная форма хеш-значения – 40 шестнадцатеричных чисел.SHA-1 больше не рассматривается как защита от злоумышленников, располагающих достаточными средствами и вычислительными ресурсами.

В 2005 году криптоаналитики обнаружили эффективный метод атаки на SHA-1, который указывает на то, что алгоритм может быть недостаточно безопасным для дальнейшего использования. С 2021 года многие организации предлагали заменить SHA-1 на SHA-2 или SHA-3. .

Microsoft, Google и Mozilla объявили, что к 2021 году их браузеры перестанут принимать сертификаты SSL, подписанные с помощью алгоритма SHA-1.23 февраля 2021 г. CWI Amsterdam и Google объявили об успешной атаке на коллизию SHA-1. Два файла PDF с разным содержанием, но с одинаковым значением хэша SHA-1 были опубликованы в качестве подтверждения концепции.

SHA-2/SHA-256
SHA-2 имеет много разных цифр, что приводит к некоторой путанице в этом термине. Но будь то «SHA-2», «SHA-256» или «SHA-256 бит», они фактически относятся к одному и тому же алгоритму шифрования. Но SHA-224 »,« SHA-384 »или« SHA-512 »означает двоичную длину SHA-2. Другой способ – записать как алгоритм, так и двоичную длину, например« SHA-2 384 ».
Индустрия SSL выбрала SHA в качестве хеш-алгоритма для цифровых подписей. С 2021 по 2021 год бит SHA-1 был доминирующим алгоритмом. Но с развитием Интернет-технологий недостатки SHA-1 становятся все более заметными. С прошлого года SHA-2 стал новым стандартом, поэтому выданный сертификат SSL должен быть подписан с использованием этого алгоритма.
Может быть, кто-то иногда будет видеть 384-битный сертификат SHA-2, редко – 224-битный, потому что 224-битный сертификат не может использоваться для общедоступных доверенных сертификатов, 512-битный не используется с помощью программного обеспечения в режиме ожидания.
Первоначально предполагается, что срок полезного использования SHA-2 составляет пять лет, но он может быть прекращен досрочно. Для проверки потребуется время.
«Криптография в блокчейнах»: о хеш-функциях, ключах и цифровых подписях / ХабрHMACЭто аббревиатура Hash-based Message Authentication Code (Hash-based Message Authentication Code), связанная с ключом. Он был предложен Х. Кравезиком, М. Белларе и Р. Канетти в 1996 году для аутентификации сообщений на основе хеш-кода. Функция и ключ. Метод был опубликован как RFC2104 в 1997 г. и широко используется в IPSec и других сетевых протоколах (например, SSL). Теперь он стал де-факто стандартом безопасности в Интернете. Его можно связать с любой итеративной хеш-функцией.
Операция HMAC использует алгоритм хеширования, принимает сообщение M и ключ K в качестве входных данных и генерирует дайджест сообщения фиксированной длины в качестве выходных данных. Алгоритм HMAC использует существующую функцию хеширования, и ключевой вопрос заключается в том, как использовать ключ.
«Криптография в блокчейнах»: о хеш-функциях, ключах и цифровых подписях / Хабр
Длина ключа HMAC может быть любого размера. Если она меньше n (размер выходного значения хеш-функции), надежность алгоритма будет снижена. Рекомендуется использовать ключ длиной больше n, но использование длинного ключа не означает, что безопасность функции повышается. Ключ должен выбираться случайным образом, может использоваться сильный псевдослучайный генератор, и ключ необходимо периодически обновлять, что может снизить опасность слабого ключа хеш-функции и ущерба, нанесенного раскрытым ключом.
HMAC, созданный с использованием SHA-1, SHA-224, SHA-256, SHA-384 и SHA-512, называется HMAC-SHA1, HMAC-SHA-224, HMAC- SHA- 384, HMAC-SHA-512.
Алгоритм HMAC больше похож на алгоритм шифрования, он вводит ключ, его безопасность не полностью зависит от используемого алгоритма хеширования., Безопасность в основном гарантируется следующими пунктами.
(1) Используемый ключ согласован обеими сторонами заранее, и третья сторона не может узнать об этом. Как третья сторона, которая незаконно перехватывает информацию, единственная информация, которая может быть получена, – это случайное число как «вызов» и результат HMAC как «ответ», и ключ не может быть получен из этих двух данных. Поскольку ключ неизвестен, последовательный ответ нельзя подделать.
(2) Важное различие между HMAC и общим шифрованием заключается в том, что оно “мгновенное”, то есть аутентификация действительна только в то время, а после взлома алгоритма шифрования предыдущий Результатом шифрования может быть Расшифровать.
Безопасность HMAC зависит от криптографических свойств хэш-функции H: ① свойства защиты от коллизий; ② свойства аутентификации сообщения функции сжатия H при применении к отдельной группе сообщений.

Назначение четырех алгоритмов: MD5 и SHA-1 могут использоваться для создания информационных дайджестов в некоторых случаях, когда объем данных невелик. Дайджесты, которые они генерируют, короче по длине и быстро шифруются, но более короткие дайджесты могут вызывать коллизии;

SHA-256 может может использоваться для шифрования некоторых больших объемов данных или генерации информационных дайджестов на основе его длинной дайджеста, вероятность коллизии мала; HMAC вводит ключ, поэтому его безопасность является наивысшей, и его можно использовать для шифрования пароль;

Про сертификаты:  отключите проверку сертификата ssl-при установке с помощью pip - CodeRoad.Wiki

Переход на sha-2

В 2021 году индустрия SSL прошла «переход на SHA-2». Это включало повторную выдачу тысяч существующих сертификатов, чтобы новые файлы могли быть созданы и подписаны с SHA-2. Это также связано с крупными обновлениями программного обеспечения для выпуска, которым работают централизованные доверенные центры сертификации (их десятки).

Как и ожидалось, были сбои. Крайний срок для выдачи новых SSL сертификатов с SHA-1 был назначен на 31 декабря 2021. По большей части, выдача была осуществлена к назначенному сроку. С тех пор было сделано несколько ошибок, и произошло несколько особых случаев.

План перехода иок с sha-1 на sha-2

Каждая компания с внутренним ИОК, не использующая SHA-2, должна будет создать ИОК SHA-2 или перевести существующую ИОК с SHA-1 на SHA-2. Для перехода нужно:

  • Обучить вовлечённых членов команды тому, что такое SHA-2 и почему требуется его использование (эта статья будет хорошим началом).
  • Провести инвентаризацию всех критических хешей или цифровых сертификатов, используемых в приложениях или устройствах.
  • Определить, какие критически важные устройства или приложения могут использовать SHA-2, какой размер ключа может быть использован и какие операционные проблемы могут возникнуть (этот этап зачастую включает обращение к поставщику и тестирование).
  • Определить, какие компоненты ИОК могут или должны быть перенесены в SHA-2.
  • Составить план перехода для преобразования компонентов SHA-1 в SHA-2, включая потребителей и компоненты ИОК, плюс резервный план на случай сбоя.
  • Провести PoC-тестирование.
  • Принять управленческий риск и решение о переходе или отказе от него.
  • Внедрить план перехода в производственную среду.
  • Провести тестирование и получить обратную связь.

Самая сложная часть перехода — определение того, какие устройства и приложения работают с SHA-2. Если используемые устройства не понимают SHA-2, вас ждёт неудача или сообщение об ошибке, которое вряд ли будет звучать как «SHA-2 не принят». Вместо этого готовьтесь к:

Подумайте о своей миссии, чтобы определить, какие важные части вашей инфраструктуры будут или не будут работать. Начните с попытки инвентаризации каждого уникального устройства, ОС и приложения, которые должны понимать SHA-2. Затем соберите команду людей, которые протестируют, работает ли SHA-2.

Обновление приложений и устройств — задача не из лёгких, и потребует больше времени, чем кажется. Даже сейчас существует множество устройств и приложений, использующих старые версии OpenSSL, которые следовало бы обновить после атаки Heartbleed, но администраторы серверов этого так и не сделали.

Если у вас есть внутренняя ИОК, вам понадобится подготовить её к переходу на SHA-2. Иногда это означает обновление ваших центров сертификации, получение новых сертификатов или установку полностью новых ИОК. Последнее рекомендуется по множеству причин, в основном потому, что новая ИОК даст вам шанс начать сначала без груза старых ошибок.

Подпись

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

Другими словами, если приватный ключ не включен при создании подписи, получатель сообщения не сможет использовать соответствующий публичный ключ для проверки его действительности. Поскольку публичный и приватный ключи генерируются отправителем сообщения, только публичный используется совместно с получателем.

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

Предисловие

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

Семейство sha-2

SHA-2 — стандарт криптографического хеширования, который программное и аппаратное обеспечение должны использовать по крайней мере ближайшие пару лет. SHA-2 очень часто называется семейством хеш-функций SHA-2, поскольку содержит много хешей разных размеров, включая 224-, 256-, 384- и 512-битные последовательности.

Когда кто-то говорит, что использует SHA-2, длина его хеша неизвестна, но сейчас самый популярный — 256-битный. Хотя некоторые математические характеристики SHA-2 совпадают с SHA-1, и в нём обнаружены незначительные недостатки, в криптомире он по-прежнему считается «стойким».

Сравнение хеш-шифрования и симметричного / асимметричного шифрования

«Криптография в блокчейнах»: о хеш-функциях, ключах и цифровых подписях / Хабр
в основном имеет следующие отличия:

  1. Хешированный пароль необратим, поэтому исходный текст не может быть получен из зашифрованного текста, в то время как симметричное / асимметричное шифрование может;
  2. В большинстве случаев для шифрования хеш-паролей ключ не требуется (кроме HMAC), тогда как для симметричного / асимметричного шифрования требуется;
  3. Независимо от того, является ли хеш-шифрование короткими или длинными данными, длина зашифрованного текста, полученного после шифрования, является фиксированной, а симметричный / асимметричный обычно пропорционален длине исходного текста;
  4. Шифрование хэша может конфликтовать. Хотя теоретическое шифрование хешей невозможно, это всего лишь теория. Профессор Ван Сяоюнь ранее предлагал метод коллизий. Для симметричного / асимметричного результата дешифрования зашифрованного текста с помощью ключа должен быть уникальным;

Хеширование данных

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

Хеш-функции

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

Хеш-функции имеются практически в любом языке программирования. Например, они используются для реализации хеш-таблиц и множеств (HashMap/HashSet в Java, dict и set в Python, Map, Set и объекты в JavaScript и так далее). Отдельная категория хеш-функций — криптографические хеш-функции.

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

Поэкспериментировать с хеш-функциями можно, написав простую программу на Python:

import hashlib
def hash_hex(message):
    return hashlib.sha256(message.encode()).hexdigest()

Функция hash_hex() рассчитывает представление хеша в шестнадцатеричной записи для строки. В приведенном примере используется функция SHA-256 — та же, что и в биткойне.

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

Оцените статью
Мой сертификат
Добавить комментарий