Алгоритм хеширования sha 2 что это такое
Обновлено: 21.11.2024
SHA-1, SHA-2, SHA-256, SHA-384 — что все это значит!!
Если вы слышали о «SHA» во многих его формах, но не совсем уверены, что это за аббревиатура и почему это важно, сегодня мы попытаемся пролить на это немного света.< /p>
Прежде чем мы сможем перейти к самому SHA, нам нужно разобраться, что такое хеш, а затем мы узнаем, как SSL-сертификаты используют хэши для формирования цифровых подписей. Это важные понятия, которые необходимо понять, прежде чем вы сможете понять, что такое SHA-1 и SHA-2.
Что такое хэш?
Алгоритм хеширования – это математическая функция, сжимающая данные до фиксированного размера. Так, например, если бы мы взяли предложение…
…и прогнали его через специальный алгоритм хеширования, известный как CRC32, и мы получили:
Этот результат известен как хэш или хеш-значение. Иногда хеширование называют односторонним шифрованием.
Хеши удобны в ситуациях, когда компьютерам может потребоваться идентифицировать, сравнить или иным образом выполнить вычисления с файлами и строками данных. Компьютеру проще сначала вычислить хэш, а затем сравнить значения, чем сравнивать исходные файлы.
Одним из ключевых свойств алгоритмов хэширования является детерминизм. Любой компьютер в мире, понимающий выбранный вами алгоритм хеширования, может локально вычислить хэш нашего примерного предложения и получить тот же ответ.
Алгоритмы хэширования используются самыми разными способами — они используются для хранения паролей, в компьютерном зрении, в базах данных и т. д.
Существуют сотни алгоритмов хэширования, и все они предназначены для определенных целей: одни оптимизированы для определенных типов данных, другие — для скорости, безопасности и т. д.
Для сегодняшнего обсуждения нам нужны только алгоритмы SHA. SHA расшифровывается как Secure Hash Algorithm — его название раскрывает его назначение — это криптографическая безопасность.
Если вы вынесете из этого раздела только одну вещь, она должна заключаться в следующем: алгоритмы криптографического хэширования производят необратимые и уникальные хэши. Необратимость означает, что если бы у вас был только хэш, вы не могли бы использовать его, чтобы выяснить, что представлял собой исходный фрагмент данных, что позволяет исходным данным оставаться безопасными и неизвестными. Уникальность означает, что два разных фрагмента данных никогда не смогут создать один и тот же хэш. В следующем разделе объясняется, почему это так важно.
Примечание. Чтобы упростить чтение и понимание этой статьи, я использую в качестве примера строку данных и алгоритм хэширования, который значительно короче, чем тот, который фактически используется на практике. Хэши, которые вы видели до сих пор, НЕ являются хэшами SHA любого типа.
Теперь, когда мы знаем, что такое хэши, мы можем объяснить, как они используются в SSL-сертификатах.
Протокол SSL/TLS используется для обеспечения безопасной передачи данных с одного устройства на другое через Интернет. Для краткости кажется, что SSL часто называют «шифрованием». Но не забывайте, что SSL также обеспечивает аутентификацию. Файл сертификата SSL предназначен для предоставления необходимой информации, необходимой для аутентификации. Другими словами, SSL-сертификаты связывают определенный открытый ключ с личностью.
Помните, что протокол SSL/TLS упрощает подключение с использованием асимметричного шифрования. Это означает, что есть два ключа шифрования, каждый из которых выполняет одну половину процесса: открытый ключ для шифрования и закрытый ключ для расшифровки. Каждый SSL-сертификат содержит открытый ключ, который может использоваться клиентом для шифрования данных, а владелец указанного SSL-сертификата надежно хранит закрытый ключ на своем сервере, который он использует для расшифровки этих данных и их чтения.
В конечном счете, основной целью этого асимметричного шифрования является безопасный обмен ключами. Из-за того, что асимметричные ключи требуют вычислительной мощности, более практично (и все же безопасно) использовать меньшие симметричные ключи для фактической коммуникационной части соединения. Таким образом, клиент создает ключ сеанса, затем шифрует его копию и отправляет на сервер, где ее можно расшифровать и использовать для связи в течение всего времени соединения (или до тех пор, пока он не будет отключен).
Вот почему аутентификация невероятно важна для того, чтобы убедиться, что SSL/TLS действительно обеспечивает значимую безопасность. Представьте, если бы у вашего компьютера не было надежного способа узнать, кому принадлежит ключ шифрования, который вы использовали?Шифрование вашего сеансового ключа с помощью этого открытого ключа было бы бесполезным, потому что вы не знали бы, у кого есть соответствующий закрытый ключ, который его расшифровывает. В конце концов, шифрование данных бесполезно, если вы отправляете их напрямую злоумышленнику-посреднику или злоумышленнику на другом конце соединения.
Цифровые подписи — важная часть аутентификации с помощью SSL-сертификатов. Когда сертификат выпускается, он подписывается цифровой подписью Центра сертификации (ЦС), который вы выбрали в качестве поставщика сертификата (например, Sectigo, DigiCert и т. д.). Эта подпись обеспечивает криптографическое доказательство того, что ЦС подписал SSL-сертификат и что сертификат не был изменен или воспроизведен. Что еще более важно, подлинная подпись является криптографическим доказательством того, что информация, содержащаяся в сертификате, была проверена доверенной третьей стороной.
Теперь давайте поговорим о том, как создается, наносится и ставится цифровая подпись — вы выбираете терминологию. Асимметричные ключи, о которых мы упоминали ранее, снова используются, но для подписи, а не для шифрования. С математической точки зрения подписание включает в себя изменение способа объединения данных и ключей (мы не будем слишком углубляться в особенности создания подписей, потому что это быстро усложняется. Если вам это интересно, Джошуа Дэвис написал отличный пост о том, как работают цифровые подписи). Чтобы облегчить компьютерам быстрое, но безопасное создание и проверку этих подписей, ЦС сначала хеширует файл сертификата и подписывает полученный хэш. Это более эффективно, чем подписывать весь сертификат.
Эти цифровые подписи обеспечивают необходимое доказательство того, что выданный вам сертификат является именно тем сертификатом, который был выдан доверенным ЦС для рассматриваемого веб-сайта. Никаких трюков. Нет спуфинга. Никакие посредники не манипулируют файлом сертификата SSL/TLS.
Цифровые подписи невероятно конфиденциальны: любое изменение в файле приведет к изменению подписи. Если мы возьмем наше примерное предложение из предыдущего раздела и напишем его полностью строчными («быстрая коричневая лиса перепрыгивает через ленивую собаку»), результирующий хэш будет совершенно другим. Это означает, что результирующая подпись этого хэша также будет другой. Даже изменение одного бита в документе объемом в несколько тысяч гигабайт приведет к совершенно другому хэшу.
Это делает невозможным изменение законного сертификата злоумышленником или создание мошеннического сертификата, который выглядит законным. Другой хеш означает, что подпись больше не будет действительной, и ваш компьютер узнает об этом при аутентификации SSL-сертификата. Если ваш компьютер обнаружит недопустимую подпись, это вызовет ошибку и полностью помешает безопасному соединению.
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-2 384». Но это так же отвратительно, как заставлять людей включать свой инициал отчества, когда вы произносите свое имя.
Индустрия SSL выбрала SHA в качестве алгоритма хеширования цифровых подписей
С 2011 по 2015 год SHA-1 был основным алгоритмом. Растущее количество исследований, показывающих слабые стороны SHA-1, вызвало переоценку. На самом деле, Google даже зашел так далеко, что создал коллизию SHA-1 (когда две части разрозненных данных создают одно и то же значение хеш-функции) просто для обеспечения. Итак, с 2016 года SHA-2 является новым стандартом. Если вы получаете сертификат SSL/TLS сегодня, он должен использовать как минимум эту подпись.
Иногда вы увидите сертификаты, использующие 384-битный алгоритм SHA-2.Вы редко встретите 224-разрядную версию, которая не одобрена для использования с общедоступными доверенными сертификатами, или 512-разрядную версию, которая менее широко поддерживается программным обеспечением.
SHA-2, скорее всего, будет использоваться не менее пяти лет. Однако может быть обнаружена непредвиденная атака на алгоритм, которая вызовет более ранний переход.
Вот как выглядит хэш SHA-1 и SHA-2 SSL-сертификата нашего веб-сайта:
Так что да. Вот из-за этого вся суета. Это может показаться не таким уж большим, но цифровые подписи невероятно важны для обеспечения безопасности SSL/TLS.
По теме: Защитите свой веб-сайт с помощью SSL-сертификата Comodo.
Большой битовый хеш может обеспечить большую безопасность, поскольку существует больше возможных комбинаций. Помните, что одна из важных функций алгоритма криптографического хеширования заключается в том, что он создает уникальные хэши. Опять же, если два разных значения или файла могут создать один и тот же хэш, вы создаете то, что мы называем коллизией.
Безопасность цифровых подписей может быть гарантирована только в том случае, если не происходит коллизий. Конфликты чрезвычайно опасны, потому что они позволяют двум файлам создавать одну и ту же подпись, поэтому, когда компьютер проверяет подпись, она может оказаться действительной, даже если этот файл никогда не был подписан.
Если предполагается, что алгоритм хеширования создает уникальные хэши для каждого возможного входного значения, то сколько существует возможных хэшей?
Бит имеет два возможных значения: 0 и 1. Возможное количество уникальных хэшей можно выразить как количество возможных значений, возведенное в число битов. Для SHA-256 существует 2 256 возможных комбинаций.
Итак, 2 256 комбинаций. Сколько это? Что ж, это огромное число. Серьезно. Это ставит такие числа, как триллион и септиллион, в позор. Это намного превышает количество песчинок в мире.
Чем больше количество возможных хэшей, тем меньше вероятность того, что два значения создадут один и тот же хеш.
Существует (технически) бесконечное количество возможных входов[1], но ограниченное количество выходов. Таким образом, в конечном итоге каждый алгоритм хеширования, включая безопасный, приводит к коллизии. Но нас больше всего беспокоит, насколько легко это будет сделать. SHA-1 был признан небезопасным, поскольку из-за его размера и конструкции можно было создать коллизию.
Обратите внимание, что большая длина в битах не означает автоматически, что алгоритм хеширования создает более безопасные хэши. Конструкция алгоритма также невероятно важна — именно поэтому индустрия SSL использует алгоритмы хеширования, специально разработанные для криптографической защиты.
Переход на SHA-2
В 2015 году в отрасли SSL произошел переход на SHA-2. Это включало перевыпуск тысяч существующих сертификатов, чтобы можно было создавать и подписывать новые файлы с помощью SHA-2. Это также связано с крупными обновлениями программного обеспечения для выдачи, с которым работают общедоступные доверенные центры сертификации (их десятки). Как и ожидалось, были некоторые сбои.
Крайний срок выпуска новых SSL-сертификатов с хешами SHA-1 – 31 декабря 2015 года. По большей части отрасль уложилась в этот срок. С тех пор было допущено несколько ошибок и разрешено несколько особых случаев.
Браузеры обрабатывали сертификаты, подписанные SHA-1, срок действия которых истекает в 2017 году, с более строгим предупреждением. Это связано с тем, что безопасность подписи напрямую связана с тем, как долго она действительна.
Теперь, в 2018 году, Google без суда и следствия казнит владельца сайта и оставляет его труп в качестве предупреждения для других, которые могут осмелиться совершить те же грехи.
Защита подписей
Со временем атаки на криптографию будут улучшаться, а вычислительная мощность компьютеров будет дешеветь. Это делает действующую подпись SHA-2 менее безопасной в 2020 году, чем в 2016 году. По этой причине выбор алгоритма будет намного более надежным, чем это необходимо немедленно, чтобы краткосрочные улучшения не привели к риску безопасности. Не исключено, что конкретный алгоритм хеширования будет оставаться безопасным в течение десятилетия.
Отраслевые эксперты и исследователи безопасности по всему миру постоянно анализируют SHA-2 и другие криптографические алгоритмы хеширования, поэтому будьте уверены, что текущие SSL-сертификаты еще какое-то время будут иметь надежные и безопасные цифровые подписи.
Это не означает, что криптографы будут просто сидеть и ждать, пока не возникнет проблема. Преемник SHA-2, получивший удобное название SHA-3, уже завершен. Когда придет время сделать еще один переход, индустрия SSL может использовать SHA-3 в качестве следующего выбора или может обратиться к совершенно другому алгоритму.
Потребуются годы, чтобы должным образом изучить и проверить новые криптографические стандарты, а затем разработать поддерживающее их программное обеспечение. Надеюсь, вам приятно осознавать, что отрасль всегда находится как минимум на один шаг впереди.
Время от времени нам нравится повторно хешировать некоторые из наших лучших старых материалов в надежде, что они понравятся нашим новым читателям. Эта статья, первоначально написанная Винсентом Линчем 29 июня 2016 г., была обновлена и исправлена Патриком Ноэ в 2018 г.
SHA — безопасный алгоритм хеширования. SHA — это модифицированная версия MD5, используемая для хэширования данных и сертификатов. Алгоритм хеширования сокращает входные данные до меньшей формы, которую невозможно понять с помощью побитовых операций, модульных сложений и функций сжатия. Вам может быть интересно, можно ли взломать или расшифровать хеширование? Хеширование похоже на шифрование, единственная разница между хешированием и шифрованием заключается в том, что хеширование является односторонним, то есть после хеширования данных полученный хэш-дайджест не может быть взломан, если только не используется атака грубой силы. См. изображение ниже для работы алгоритма SHA. SHA работает таким образом, даже если изменился один символ сообщения, то будет сгенерирован другой хэш. Например, хеширование двух похожих, но разных сообщений, т. е. Небеса и Небеса, отличается. Однако разница только в прописной и строчной букве.
Исходное сообщение хэшируется с помощью алгоритма SHA-1, в результате чего получается хеш-дайджест «06b73bd57b3b938786daed820cb9fa4561bf0e8e». Если второе, похожее сообщение хешируется с помощью SHA-1, хеш-дайджест будет выглядеть как «66da9f3b8d9d83f34770a14c38276a69433a535b». Это называется лавинным эффектом. Этот эффект важен в криптографии, так как даже малейшее изменение входного сообщения полностью меняет вывод. Это помешает злоумышленникам понять, что первоначально было сказано в хеш-дайджесте, и сообщить получателю сообщения, было ли сообщение изменено во время передачи.
SHA также помогает определить, было ли каким-либо образом изменено исходное сообщение. Ссылаясь на исходный хеш-дайджест, пользователь может сказать, была ли изменена хотя бы одна буква, поскольку хеш-дайджесты будут совершенно другими. Одной из наиболее важных частей SHA является то, что они детерминированы. Это означает, что пока известна используемая хэш-функция, любой компьютер или пользователь может воссоздать хеш-дайджест. Детерминированность алгоритмов SHA является одной из причин, по которой каждый сертификат SSL в Интернете должен быть хеширован с помощью функции SHA-2.
Различные формы SHA
При изучении форм SHA упоминаются несколько различных типов SHA. Примерами используемых имен SHA являются SHA-1, SHA-2, SHA-256, SHA-512, SHA-224 и SHA-384, но на самом деле существует только два типа: SHA-1 и SHA-2. Другие большие числа, такие как SHA-256, являются просто версиями SHA-2, в которых указывается длина битов SHA-2. SHA-1 был исходным алгоритмом безопасного хеширования, который после хеширования возвращал 160-битный дайджест хэша. Кто-то может задаться вопросом, можно ли взломать SHA-2 так же, как SHA-1? Ответ положительный. Из-за короткой длины хэш-дайджеста SHA-1 легче переборщить, чем SHA-2, но SHA-2 все еще можно переборщить. Еще одна проблема SHA-1 заключается в том, что он может дать один и тот же хеш-дайджест для двух разных значений, поскольку количество комбинаций, которые можно создать с помощью 160 бит, очень мало. SHA-2, с другой стороны, дает каждому дайджесту уникальное значение, поэтому все сертификаты должны использовать SHA-2.
SHA-2 может создавать биты разной длины от 256 до 512 бит, что позволяет присваивать абсолютно уникальные значения каждому созданному хеш-дайджесту. Коллизии происходят, когда два значения имеют одинаковый хеш-дайджест. SHA-1 может легко создавать коллизии, упрощая злоумышленникам получение двух совпадающих дайджестов и воссоздание исходного открытого текста По сравнению с SHA-1 SHA-2 гораздо более безопасен и требуется во всех цифровых подписях и сертификатах с 2016 года. Чтобы взломать дайджест хеш-суммы, например, с помощью грубой силы, могут потребоваться годы или даже десятилетия, поэтому SHA-2 считается самым безопасным алгоритмом хэширования.
Для чего используется SHA и почему
Как упоминалось ранее, алгоритмы безопасного хеширования требуются для всех цифровых подписей и сертификатов, связанных с соединениями SSL/TLS, но есть и другие области применения SHA. Такие приложения, как SSH, S-MIME (защищенные/многоцелевые расширения почты Интернета) и IPSec, также используют SHA. SHA также используются для хеширования паролей, поэтому серверу нужно запоминать только хэши, а не пароли.Таким образом, если злоумышленник украдет базу данных, содержащую все хэши, у него не будет прямого доступа ко всем открытым текстам паролей, ему также нужно будет найти способ взломать хэши, чтобы иметь возможность использовать пароли. SHA также могут работать как индикаторы целостности файла. Если файл был изменен при передаче, результирующий хеш-дайджест, созданный с помощью хеш-функции, не будет соответствовать хэш-дайджесту, изначально созданному и отправленному владельцем файла.
Теперь мы узнали, для чего используются алгоритмы SHA, но зачем вообще использовать алгоритм безопасного хеширования? Распространенной причиной является их способность остановить злоумышленников. Хотя некоторые методы, такие как атака полным перебором, могут раскрыть открытый текст хэш-дайджеста, SHA делает эту тактику чрезвычайно сложной. На взлом пароля, хэшированного с помощью SHA-2, могут уйти годы и даже десятилетия, что приводит к трате ресурсов и времени на простой пароль, который может отпугнуть многих злоумышленников. Еще одна причина для использования SHA — уникальность всех хеш-дайджестов. Если используется SHA-2, коллизий, скорее всего, будет мало или вообще не будет, а это означает, что простое изменение одного слова в сообщении полностью изменит дайджест хэша. Поскольку коллизий мало или они отсутствуют вовсе, невозможно найти шаблон, который облегчил бы взлом алгоритма безопасного хеширования для злоумышленника. Это лишь несколько причин, по которым SHA используется так часто.
SHA1, SHA2 и SHA256: объяснение алгоритма безопасного хеширования
Одной из наиболее распространенных тем, по которым мы отвечаем на вопросы, является алгоритм безопасного хеширования, иногда известный как SHA1, SHA2, SHA256. Очевидно, что разные числа в конце что-то значат, но существуют и неправильные представления о том, для чего они используются, что такое хеширование и как все это влияет на PKI и TLS.
Давайте начнем с некоторых основных понятий хеширования и того, как оно взаимодействует с другими функциями TLS.
Что такое алгоритм хеширования?
Хеширование – это алгоритмическая функция, которая сопоставляет данные любого размера с выходными данными фиксированной длины. Иногда люди называют это односторонним шифрованием, но это не совсем точно. Когда вы что-то хэшируете, оно создает хеш-значение, которое является выходом фиксированной длины, о котором мы только что упоминали. Никакие два разных фрагмента данных не могут дать одинаковое значение хеш-функции. На самом деле даже малейшее изменение фрагмента данных приведет к разным значениям хеш-функции.
Это задумано. И это помогает обеспечить целостность файла или фрагмента данных. Итак, что произойдет, если два разных фрагмента данных ДЕЙСТВИТЕЛЬНО создадут одно и то же значение хеш-функции? Это называется столкновение. И когда это происходит, это означает, что алгоритм хеширования теперь бесполезен.
Как алгоритмы хеширования вписываются в SSL/TLS и PKI?
В то время как RSA (Rivest, Shamir, Adleman) — это аббревиатура, отдающая дань уважения своим создателям, SHA — это аббревиатура, обозначающая его функцию: безопасный алгоритм хеширования. Когда предоставляется сертификат SSL, клиент (браузер) должен аутентифицировать его, и он делает это, проверяя, подписан ли сертификат доверенным центром сертификации.
Для этого необходимо проверить правильность подписи. Проще всего это сделать с помощью алгоритма безопасного хэширования (не зря я говорю «а» вместо «то», и мы скоро к этому вернемся). Когда сертификат подписан, подпись хешируется, и эта информация включается в сведения о сертификате. Таким образом, когда сертификат предоставляется клиенту, клиент запускает ту же хеш-функцию для подписи и проверяет, чтобы убедиться, что она дает то же значение. Помните, что даже малейшее изменение подписи изменит значение хеш-функции, поэтому, пока значения совпадают, вы можете быть уверены, что подпись подлинная.
В чем разница между SHA1, SHA2 и SHA256?
Как мы уже говорили, SHA — это аббревиатура от Secure Hash Algorithm, поэтому, хотя SHA2 является преемником SHA1, это совершенно другой алгоритм или, скорее, набор алгоритмов, а не вариант оригинала.
SHA1 был разработан правительством США и по своей природе ближе к MD5. Он создает дайджесты сообщений, 160-битные (20-байтовые) хэш-значения, которые представлены 40-значными шестнадцатеричными строками. SHA2 также был разработан правительством США, в частности АНБ, и на самом деле представляет собой семейство алгоритмов, шесть различных хеш-функций, которые создают дайджест/хеш-значения различной длины: 224, 256, 384 или 512.
«Разнообразие хэшей SHA-2 может привести к некоторой путанице, поскольку веб-сайты и авторы выражают их по-разному. Если вы видите «SHA-2», «SHA-256» или «SHA-256 бит», эти имена относятся к одному и тому же. Если вы видите «SHA-224», «SHA-384» или «SHA-512», это относится к альтернативной битовой длине SHA-2. Вы также можете увидеть, что некоторые сайты более подробно указывают как алгоритм, так и длину в битах, например «SHA-2 384».
Основное различие между SHA1 и SHA256 или SHA1 и SHA2 заключается в длине ключа, используемого для шифрования данных, передаваемых в Интернете. SHA1 использует 160-битный ключ для шифрования данных, а SHA256 использует 256-битный ключ для шифрования данных.SHA2 — это семейство алгоритмов, разработанных правительством США для защиты данных в Интернете. SHA2 использует ключи различной длины, включая 224, 256, 384 и 512, для шифрования данных. SHA512 использует 512-битный ключ для шифрования.
Что такое полный SHA2?
Это то, что вы увидите при создании сертификатов SSL/TLS. Это относится к алгоритмам хеширования, которые используются в корнях и промежуточных звеньях в цепочке сертификатов. Вкратце, каждая операционная система имеет группу сертификатов Root CA, которые хранятся в ее доверенном хранилище. Чтобы SSL-сертификат считался доверенным, система должна иметь возможность привязать его к одному из этих корней с помощью цифровых подписей, которые мы описали ранее.
Все сертификаты SSL/TLS конечных пользователей должны использовать SHA2, но из-за их повсеместного распространения и возраста промежуточные звенья могут по-прежнему использовать SHA1 в некоторых случаях. Это не считается серьезным риском для безопасности, поскольку их соответствующие закрытые ключи надежно защищены, но даже если вы хотите иметь промежуточные и корневые SHA2 или полную цепочку SHA2, это вариант для некоторых ЦС.
Читать также
Купите сертификаты SSL и сэкономьте 82%
Получите сертификаты SHA2 от популярных брендов SSL, таких как RapidSSL, GeoTrust, Thawte и Symantec. Вы можете сэкономить до 82 % на всех типах SSL-сертификатов.
Сертификаты GeoTrust SSL и экономия 58%
Защитите веб-сайт с помощью самых надежных сертификатов CA GeoTrust мирового класса. Он предлагает 256-битное шифрование, динамическую печать сайта, неограниченное количество серверных лицензий, бесплатную перевыпуск и многое другое.
SHA-2 (Secure Hash Algorithm 2) – это набор криптографических хэш-функций, определенных в RFC 6234: US Secure Hash Algorithms (SHA и HMAC и HKDF на основе SHA).
Семейство SHA-2 состоит из шести хэш-функций с дайджестами (значениями хеш-функций) размером 224, 256, 384 или 512 бит: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/. 224, SHA-512/256.
Эта библиотека поддерживает все упомянутые выше алгоритмы.
Реализация на ПЛИС¶
Внутреннюю структуру алгоритмов SHA-2 можно показать на рисунке ниже:
Как видно из рисунка, вычисление хэша SHA-2 можно разделить на две основные части.
- Часть предварительной обработки дополняет или разбивает входное сообщение на блоки фиксированного размера и сообщает нижестоящим частям, сколько блоков у нас есть в этом сообщении. Размер слова сообщения составляет 32 бита для SHA-224/SHA-256, 64 бита для остальных 4 алгоритмов, и каждый блок имеет размер 16 слов сообщения.
- В части дайджеста итеративно вычисляются хэш-значения. Зависимость, переносимая циклом, обеспечивается алгоритмом, поэтому эта часть не может достичь II=1.
Поскольку эти две части могут работать независимо друг от друга, они объединены в параллельный поток данных, соединенный потоками (FIFO).
Модуль dup_strm используется для дублирования количества потоков блоков, а модуль generateMsgSchedule отвечает за последовательное создание потока слов сообщений.
Производительность¶
SHA-224 и SHA-256¶
Поскольку SHA-224 — это просто усеченный SHA-256 с разными значениями инициализации, и они имеют одинаковую внутреннюю структуру, как показано на рисунке выше.
Один экземпляр функции SHA-256/SHA-224 обрабатывает входное сообщение со скоростью 512 бит/68 циклов на частоте 330,25 МГц/314,36 МГц соответственно.
Использование аппаратных ресурсов SHA-224 указано на вкладке 1SHA224 ниже:
BRAM | DSP | FF | LUT | CLB | SRL | тактовый период (ns) |
0 | 7806 | 4976 | 1121 | 0 | 3.028 |
Использование аппаратных ресурсов SHA-256 указано на вкладке 1SHA256 ниже:
BRAM | DSP | FF | LUT | CLB | SRL | тактовый период (ns) |
0 | 7806 | 4973 | 1176 | 0 | 3.181 |
SHA-384, SHA-512, SHA-512/224 и SHA-512/256¶
Поскольку SHA-384 и SHA-512/t — это просто усеченный SHA-512 с разными значениями инициализации, они имеют одинаковую внутреннюю структуру, как показано на рисунке выше.
Один экземпляр одного из SHA-384/SHA-512/SHA512-224/SHA512-256 обрабатывает входное сообщение со скоростью 1024 бит/84 цикла на частоте 313,28/323,31 МГц/310,26 МГц/313,57 МГц.< /p>
Использование аппаратных ресурсов SHA-384 указано на вкладке 1SHA384 ниже:
BRAM | DSP | FF | LUT | CLB | SRL | тактовый период (ns) |
0 | 15494 | 8317 | 2045 | 0 | 3.192 |
Использование аппаратных ресурсов SHA-512 указано на вкладке 1SHA512 ниже:
BRAM | DSP | FF | LUT | CLB | SRL | тактовый период (ns) |
0 | 15497 | 8318 | 2015 | 0 | 3.093 |
Использование аппаратных ресурсов SHA-512/224 указано на вкладке 1SHA512224 ниже:
BRAM | DSP | FF | LUT | CLB | SRL | тактовый период (ns) |
0 | 0 | 15498 | 8318 | 2101 | 0 | < td>3.223
Использование аппаратных ресурсов SHA-512/256 указано на вкладке 1SHA512256 ниже:
BRAM | DSP | FF | LUT | CLB | SRL | тактовый период (ns) |
0 | 0 | 15497 | 8322 | 2029 | 0 | < td>3.189
Кластеризация¶
Чтобы повысить пропускную способность примитивов SHA-2, несколько экземпляров можно организовать в кластер и обеспечить параллелизм на уровне сообщений.
Читайте также: