SHA-1

редактировать
Криптографическая хеш-функция
[Хеш-алгоритмы]
Основные понятия
хэш-функции ·SHA ·DSA
Основные стандарты
SHA-0 ·SHA-1 ·SHA-2 ·SHA-3
SHA-1
Общие
КонструкторыАгентство национальной безопасности
Впервые опубликовано1993 (SHA-0),. 1995 (SHA-1)
Серия(SHA-0 ), SHA-1, SHA -2, SHA-3
СертификацияFIPS PUB 180-4, CRYPTREC (отслеживается)
Детализация шифра
Размеры дайджеста 160 бит
Размеры блоков 512 бит
СтруктураКонструкция Меркла – Дамгарда
Раунды80
Лучший публичный криптоанализ
Атака Марка Стивенса 2011 года может вызвать хэш-коллизии со сложностью от 2 до 2 операций. Первая публичная коллизия была опубликована 23 февраля 2017 года. SHA-1 подвержен атакам с расширением длины .

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

. С 2005 года SHA-1 не считался безопасным против хорошо финансируемых оппонентов; по состоянию на 2010 год многие организации рекомендовали его замену. NIST официально отказался от использования SHA-1 в 2011 году и запретил его использование для цифровых подписей в 2013 году. Начиная с 2020 года, атаки с выбранным префиксом против SHA-1 являются практичными. Поэтому рекомендуется как можно скорее удалить SHA-1 из продуктов и вместо этого использовать SHA-2 или SHA-3. Замена SHA-1 срочно требуется там, где он используется для цифровых подписей.

. Все основные поставщики веб-браузеров прекратили прием SHA-1 SSL-сертификатов в 2017 году. В феврале 2017 года, CWI Amsterdam и Google объявили, что они выполнили атаку коллизии против SHA-1, опубликовав два разных файла PDF, которые дали одинаковый хэш SHA-1. Но SHA-1 по-прежнему безопасен для HMAC.

Содержание

  • 1 Разработка
  • 2 Приложения
    • 2.1 Криптография
    • 2.2 Целостность данных
  • 3 Криптоанализ и проверка
    • 3.1 Атаки
      • 3.1.1 SHAppening
      • 3.1.2 SHAttered - первая публичная коллизия
      • 3.1.3 Атака с приближением дня рождения - первая практическая атака с выбранным префиксом
    • 3.2 SHA-0
    • 3.3 Официальная проверка
  • 4 Примеры и псевдокод
    • 4.1 Примеры хэшей
    • 4.2 Псевдокод SHA-1
  • 5 Сравнение функций SHA
  • 6 Реализации
  • 7 См. Также
  • 8 Примечания
  • 9 Ссылки
  • 10 Внешние ссылки

Разработка

Одна итерация в функции сжатия SHA-1:. A, B, C, D и E - 32-битные слова состояния;. F - нелинейная функция, которая изменяется;. ⋘ n {\ displaystyle \ lll _ {n}}{\ displaystyle \ lll _ {n}} обозначает поворот битов влево на n позиций;. n изменяется для каждая операция;. Wt- расширенное слово сообщения раунда t;. Kt- постоянная раунда раунда t;. Дополнение обозначает сложение по модулю 2.

SHA-1 prod Использует дайджест сообщения на основе принципов, аналогичных тем, которые использовались Рональдом Л. Ривестом из MIT при разработке MD2, MD4 и MD5 алгоритмы дайджеста сообщения, но генерирует большее хеш-значение (160 бит против 128 бит).

SHA-1 был разработан в рамках проекта Capstone правительства США. Первоначальная спецификация алгоритма была опубликована в 1993 г. под названием Secure Hash Standard, FIPS PUB 180, агентством государственных стандартов США NIST (Национальный институт стандартов и технологий). Эта версия теперь часто называется SHA-0. Он был отозван АНБ вскоре после публикации и заменен пересмотренной версией, опубликованной в 1995 году в FIPS PUB 180-1 и обычно обозначаемой как SHA-1. SHA-1 отличается от SHA-0 только одним поразрядным чередованием в расписании сообщений его функции сжатия. По данным АНБ, это было сделано для исправления изъяна в исходном алгоритме, который снижал его криптографическую безопасность, но никаких дополнительных объяснений не предоставили. Общедоступные методы действительно продемонстрировали компромисс SHA-0 в 2004 году до SHA-1 в 2017 году. См. #Attacks

Приложения

Криптография

Формы SHA-1. часть нескольких широко используемых приложений и протоколов безопасности, включая TLS и SSL, PGP, SSH, S / MIME и IPsec. Эти приложения также могут использовать MD5 ; как MD5, так и SHA-1 являются производными от MD4.

SHA-1 и SHA-2 - это алгоритмы хеширования, требуемые по закону для использования в некоторых США. правительственные приложения, включая использование в других криптографических алгоритмах и протоколах, для защиты конфиденциальной несекретной информации. FIPS PUB 180-1 также поощрял принятие и использование SHA-1 частными и коммерческими организациями. SHA-1 больше не используется в правительстве; Национальный институт стандартов и технологий США заявил: «Федеральные агентства должны прекратить использование SHA-1 для... приложений, требующих защиты от столкновений, как можно скорее, и должны использовать SHA-2 семейство хэш-функций для этих приложений после 2010 г. »(курсив в оригинале), хотя позже это было ослаблено, чтобы позволить использовать SHA-1 для проверки старых цифровых подписей и отметок времени.

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

Хэш-функции SHA использовались в качестве основы для блочных шифров SHACAL .

Целостность данных

Контроль версий таких систем, как Git, Mercurial и Monotone используют SHA-1 не для безопасности, а для идентификации версий и для гарантии того, что данные не изменились из-за случайного повреждения. Линус Торвальдс сказал о Git:

Если у вас есть повреждение диска, если у вас есть повреждение DRAM, если у вас вообще есть какие-либо проблемы, Git их заметит. Это не вопрос, если, это гарантия. У вас могут быть люди, которые пытаются быть злыми. У них ничего не получится.... Никто не смог взломать SHA-1, но дело в том, что SHA-1 с точки зрения Git даже не является функцией безопасности. Это чистая проверка согласованности. Компоненты безопасности находятся в другом месте, поэтому многие люди предполагают, что, поскольку Git использует SHA-1, а SHA-1 используется для криптографически безопасных вещей, они думают, что, хорошо, это огромная функция безопасности. Это не имеет ничего общего с безопасностью, это просто лучший хэш, который вы можете получить....
Я гарантирую вам, если вы поместите свои данные в Git, вы сможете доверять тому факту, что пять лет спустя, после того, как они были преобразованы с вашего жесткого диска на DVD с использованием какой-либо новой технологии, и вы скопировали их вместе, пять лет спустя вы можете убедиться, что данные, которые вы получаете обратно, являются точно такими же данными, которые вы вводили....
Одна из причин, по которой я забочусь, - это ядро, мы взломали один сайтов BitKeeper, где люди пытались повредить репозитории исходного кода ядра. Однако Git не требует сопротивления второму прообразу SHA-1 в качестве функции безопасности, так как он всегда предпочитает сохранять самую раннюю версию объекта в случае коллизии, не позволяя злоумышленнику тайно перезаписывать файлы.

Криптоанализ и проверка

Для хеш-функции, для которой L - количество бит в дайджесте сообщения, найти сообщение, которое соответствует заданному дайджесту сообщения, всегда можно выполнить с помощью поиска грубой силы примерно за 2 оценки. Это называется атакой по прообразу и может быть практичным, а может и не быть практичным в зависимости от L и конкретной вычислительной среды. Однако коллизия, состоящая из поиска двух разных сообщений, которые производят один и тот же дайджест сообщения, требует в среднем только около 1,2 × 2 оценок с использованием атаки дня рождения. Таким образом, мощность хэш-функции обычно сравнивается с симметричным шифром, имеющим половину длины дайджеста сообщения. SHA-1, который имеет 160-битный дайджест сообщения, изначально считался 80-битным.

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

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

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

Из-за блочной и итеративной структуры алгоритмов и отсутствия Из дополнительных заключительных шагов, все функции SHA (кроме SHA-3) уязвимы для атак с расширением длины и частичным конфликтом сообщений. Эти атаки позволяют злоумышленнику подделать сообщение, подписанное только хешем с ключом - SHA (сообщение || ключ) или SHA (ключ || сообщение) - путем расширения сообщения и пересчета хеша, не зная ключа. Простым улучшением для предотвращения этих атак является двукратное хеширование: SHA d (message) = SHA (SHA (0 || message)) (длина 0, нулевой блок, равна размеру блока хеш-функция).

Атаки

В начале 2005 года Раймен и Элизабет Освальд опубликовали атаку на сокращенную версию SHA-1 - 53 раунда из 80. - который находит коллизии с вычислительными затратами менее двух операций.

В феврале 2005 года было объявлено об атаке Ван Сяоюнь, Ицюнь Лиза Инь и Хунбо Ю. Атаки могут обнаруживать коллизии в полной версии SHA-1, требуя менее 2 операций. (Для перебора потребуется 2 операции.)

Авторы пишут: «В частности, наш анализ построен на исходной дифференциальной атаке на SHA-0, атаке с близким столкновением. на SHA-0 используются методы многоблочных коллизий, а также методы модификации сообщений, используемые в атаке поиска коллизий на MD5. Взлом SHA-1 был бы невозможен без этих мощных аналитических методов ». Авторы представили коллизию для 58-раундового SHA-1, обнаруженную с помощью 2 хеш-операций. Статья с полным описанием атаки была опубликована в августе 2005 года на конференции CRYPTO.

В интервью Инь заявляет, что «грубо говоря, мы используем следующие две слабости: первая заключается в том, что этап предварительной обработки файла недостаточно сложен; другой заключается в том, что некоторые математические операции в первых 20 раундах имеют неожиданную безопасность. проблемы. "

17 августа 2005 г. от имени Сяоюнь Ван, Эндрю Яо и Фрэнсис Яо было объявлено об улучшении атаки SHA-1 на CRYPTO 2005 Rump Session, снизив сложность, необходимую для обнаружения коллизии в SHA-1, до 2. 18 декабря 2007 года детали этого результата были объяснены и проверены Мартином Кокраном.

Christophe De Канньер и Кристиан Рехбергер усовершенствовали атаку на SHA-1 в статье «Поиск характеристик SHA-1: общие результаты и приложения», получив награду за лучшую работу на ASIACRYPT 2006. Была представлена ​​двухблочная коллизия для 64-раундового SHA-1, найденная с использованием неоптимизированных методов с двумя оценками функции сжатия. Поскольку эта атака требует примерно двух оценок, это считается значительным теоретическим прорывом. Их атака была продлена Гречниковым до 73 раундов (из 80) в 2010 году. Однако для того, чтобы найти реальную коллизию в полных 80 раундах хэш-функции, требуется огромное количество компьютерного времени. С этой целью 8 августа 2007 г. начался поиск конфликтов для SHA-1 с использованием платформы распределенных вычислений BOINC, организованный Технологическим университетом Граца. Работа была прекращена 12 мая 2009 года из-за отсутствия прогресса.

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

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

Кэмерон Макдональд, Филип Хоукс и Йозеф Пипшик представили атака с коллизией хэша с заявленной сложностью 2 на Rump Session Eurocrypt 2009. Однако сопроводительный документ «Дифференциальный путь для SHA-1 со сложностью O (2)» был отозван из-за авторов обнаружение того, что их оценка была неверной.

Одной из атак на SHA-1 была атака Марка Стивенса с расчетной стоимостью 2,77 миллиона долларов (2012 г.) для взлома одного хеш-значения путем аренды мощности ЦП у облачных серверов. Стивенс разработал эту атаку в проекте под названием HashClash, реализовав атаку по дифференциальному пути. 8 ноября 2010 года он заявил, что у него есть полностью работающая атака с приближением к коллизии против полного SHA-1, работающая со сложностью, эквивалентной 2 сжатиям SHA-1. По его оценкам, эта атака может быть расширена до полного столкновения со сложностью около 2.

The SHAppening

8 октября 2015 года Марк Стивенс, Пьер Карпман и Томас Пейрин опубликовали атаку на случай столкновения. на функции сжатия SHA-1, которая требует только двух вычислений SHA-1. Это не приводит напрямую к конфликту с полной хэш-функцией SHA-1 (когда злоумышленник не может свободно выбирать начальное внутреннее состояние), но подрывает требования безопасности для SHA-1. В частности, впервые была продемонстрирована атака на полный SHA-1; все предыдущие атаки были слишком дорогими для их авторов. Авторы назвали этот значительный прорыв в криптоанализе SHA-1 SHAppening.

Метод был основан на их более ранней работе, а также на технике ускорения вспомогательных путей (или бумерангов) от Жу и Пейрина. и использование высокопроизводительных / экономичных видеокарт от NVIDIA. Коллизия была обнаружена в кластере из 16 узлов с 64 видеокартами. Авторы подсчитали, что аналогичную коллизию можно обнаружить, купив 2000 долларов США графического процессора на EC2.

. Авторы подсчитали, что стоимость аренды достаточного количества времени CPU / GPU EC2 для генерации полного коллизии для SHA-1 при на момент публикации было от 75 до 120 тысяч долларов США, и отмечалось, что это укладывается в бюджет преступных организаций, не говоря уже о национальных спецслужбах. Таким образом, авторы рекомендовали как можно скорее отказаться от SHA-1.

SHAttered - первая публичная коллизия

23 февраля 2017 г. CWI (Centrum Wiskunde Informatica) и Google объявили об атаке SHAttered, в ходе которой они сгенерировали два разных файла PDF с одинаковым хешем SHA-1 примерно в двух оценках SHA-1. Эта атака примерно в 100 000 раз быстрее, чем грубое форсирование коллизии SHA-1 с атакой по случаю дня рождения, которая, по оценкам, потребовала 2 оценок SHA-1. Атака потребовала «вычислительной мощности, эквивалентной 6500 годам вычислений на одном процессоре и 110 годам вычислений на одном графическом процессоре».

Атака с приближением дня рождения - первая практическая атака с выбранным префиксом

24 апреля 2019 года доклад Гаэтана Леурента и Томаса Пейрина, представленный на Eurocrypt 2019, описал усовершенствование ранее лучшей атаки с выбранным префиксом в Меркле – Дамгарде -подобных функциях дайджеста на основе Блочные шифры Дэвиса – Мейера. Благодаря этим улучшениям, этот метод способен обнаруживать конфликты с выбранным префиксом примерно в двух оценках SHA-1. Это примерно в 1 миллиард раз быстрее (и теперь может использоваться для многих целевых атак благодаря возможности выбора префикса, например вредоносного кода или поддельных идентификаторов в подписанных сертификатах), чем две оценки предыдущей атаки (но без выбранного префикса, который был непрактично для большинства целевых атак, поскольку обнаруженные коллизии были почти случайными) и достаточно быстр, чтобы быть практичным для находчивых злоумышленников, требуя примерно 100 000 долларов на облачную обработку. Этот метод также способен обнаруживать коллизии с выбранным префиксом в функции MD5, но при сложности 2 не превосходит предыдущий наилучший доступный метод на теоретическом уровне (2), хотя потенциально на практическом уровне. (≤2). Для этой атаки требуется 500+ ГБ памяти.

5 января 2020 года авторы опубликовали улучшенную атаку. В этой статье они демонстрируют атаку коллизии с выбранным префиксом со сложностью 2, которая на момент публикации будет стоить 45 тысяч долларов за сгенерированную коллизию.

SHA-0

На CRYPTO 98 два французских исследователя и Антуан Жу представили атаку на SHA-0: коллизии могут быть найдены со сложностью 2, меньшей, чем 2 для идеальной хеш-функции того же размера.

В 2004 году Бихам и Чен обнаружили близкие к коллизии для SHA- 0 - два сообщения, которые имеют почти одинаковое значение хэша; в этом случае 142 из 160 битов равны. Они также обнаружили, что полные коллизии SHA-0 уменьшены до 62 из 80 раундов.

Впоследствии, 12 августа 2004 г., Жу, Карриболт, Лемуэ и другие объявили о коллизии полного алгоритма SHA-0. Джалби. Это было сделано с использованием обобщения атаки Шабо и Жу. Обнаружение коллизии имело сложность 2 и заняло около 80 000 процессорных часов на суперкомпьютере с 256 процессорами Itanium 2 (что эквивалентно 13 дням непрерывного использования компьютера).

17 августа 2004 г., на крупной сессии CRYPTO 2004, Ван, Фэн, Лай и Ю объявили предварительные результаты атаки на MD5, SHA-0 и другие хэш-функции. Сложность их атаки на SHA-0 равна 2, что значительно лучше, чем атака Джо и др.

В феврале 2005 года атака Ван Сяоюнь, Ицюнь Лиза Инь, и было объявлено, что Хунбо Ю может обнаруживать коллизии в SHA-0 за 2 операции.

Другая атака в 2008 году с применением атаки бумерангом снизила сложность поиска коллизий до 2, что, по оценкам, занимает 1 час на среднем ПК.

В свете результатов для SHA-0 некоторые эксперты предположили, что планы по использованию SHA-1 в новых криптосистемах следует пересмотреть. После того, как результаты CRYPTO 2004 были опубликованы, NIST объявил, что они планируют постепенно отказаться от использования SHA-1 к 2010 году в пользу вариантов SHA-2.

Официальная проверка

Реализации всех Утвержденные FIPS функции безопасности могут быть официально подтверждены с помощью программы CMVP, совместно осуществляемой Национальным институтом стандартов и технологий (NIST) и организацией по обеспечению безопасности связи (CSE). Для неформальной проверки пакет для генерации большого количества тестовых векторов доступен для загрузки на сайте NIST; Однако полученная проверка не заменяет формальную проверку CMVP, которая требуется по закону для определенных приложений.

По состоянию на декабрь 2013 г. существует более 2000 проверенных реализаций SHA-1, 14 из которых способны обрабатывать сообщения с длиной в битах, не кратной восьми (см. Список валидации SHS ).

Примеры и псевдокод

Примеры хэшей

Это примеры дайджестов сообщений SHA-1 в шестнадцатеричном формате и в двоичном формате Base64 в ASCII кодировка текста.

SHA1 («Быстрая коричневая лиса перепрыгивает через ленивую собаку») дает шестнадцатеричное значение: 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 дает Base64 двоичный код в ASCII кодировку текста: L9thJTxnotKP>258>Даже небольшое изменение в сообщении с огромной вероятностью приведет к изменению многих битов из-за лавинного эффекта . Например, изменение dogна cogдает хэш с разными значениями для 81 из 160 бит:

SHA1 ("Быстрая коричневая лиса перепрыгивает через ленивую шестеренку ") дает шестнадцатеричный формат: de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3 дает двоичный код Base64 в кодировку текста ASCII : 3p8sf9JeGzr60 + haC9F9mxANtLM =
длина>h: <длина><0: <длина>h 252>SHA1 ("") дает шестнадцатеричное: da39a3ee5e6b4b0d3255bfef95601890afd80709 дает Base64 двоичный код в ASCII кодировку текста: 2jmj7l5rSw0yVb / vlWAYkK12se3Awk = 1 Псевдокод для алгоритма SHA-1 выглядит следующим образом:

Примечание 1: все переменные являются беззнаковыми 32-битными величинами и переносятся по модулю 2 при вычислении, за исключением ml, длины сообщения, которое является 64-битным. количество и hh, дайджест сообщения, который является 160-битным количеством. Примечание 2: Все константы в этом псевдокоде находятся в формате big endian. В каждом слове старший значащий байт хранится в крайней левой позиции байта. Инициализация переменных: h0 = 0x67452301 h1 = 0xEFCDAB89 h2 = 0x98BADCFE h3 = 0x10325476 h4 = 0xC3D2E1F0 ml = длина сообщения в битах (всегда кратна количеству бит в характер). Предварительная обработка: добавьте к сообщению бит '1', например. добавлением 0x80, если длина сообщения кратна 8 битам. добавить 0 ≤ k < 512 bits '0', such that the resulting message length in bits is конгруэнтно к −64 ≡ 448 (mod 512) добавить ml, исходную длину сообщения, как 64-битное big-endian целое. Таким образом, общая длина кратна 512 битам. Обработка сообщения последовательными 512-битными блоками: разбиение сообщения на 512-битные блоки для каждый блок разбивает блок на шестнадцать 32-битных слов с прямым порядком байтов w [i], 0 ≤ i ≤ 15 Расписание сообщений: расширить шестнадцать 32-битных слов до восьмидесяти 32-битных слов: для i от 16 до 79 Примечание 3: SHA-0 отличается тем, что не имеет этого поворота влево. w [i] = (w [i-3] xor w [i-8] xor w [i-14] xor w [i-16 ]) leftrotate 1 Инициализировать хеш-значение для этого блока: a = h0 b = h1 c = h2 d = h3 e = h4 Основной цикл: для i из 0 to79 если 0 ≤ i ≤ 19, то f = (b и c) or((не b) и d) k = 0x5A827999 иначе, если 20 ≤ i ≤ 39 f = b xor c xor dk = 0x6ED9EBA1 else if 40 ≤ i ≤ 59 f = (b и c) или (b и d) или (c и d) k = 0x8F1BBCDC иначе, если 60 ≤ i ≤ 79 f = b xor c xor dk = 0xCA62C1D6 temp = (a leftrotate 5) + f + e + k + w [i] e = dd = cc = b leftrotate 30 b = aa = temp Добавьте хеш этого фрагмента, чтобы получить результат: h0 = h0 + a h1 = h1 + b h2 = h2 + c h3 = h3 + d h4 = h4 + e Вывести окончательное хеш-значение (с прямым порядком байтов) как 160-битное число: hh = (h0 левый сдвиг 128) или (h1 сдвиг влево 96) или (h2 сдвиг влево 6 4) или (h3 leftshift 32) или h4

Число hh- это дайджест сообщения, который может быть записанным в шестнадцатеричной системе счисления (основание 16).

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

  • Четыре круглые константы kв 2 раза больше квадратных корней из 2, 3, 5 и 10. Однако они были неправильно округлены до ближайшего целого числа вместо округления до ближайшего нечетного целого числа с уравновешенными пропорциями нуля и единицы. Кроме того, выбор квадратного корня из 10 (который не является простым) сделал его общим множителем для двух других выбранных квадратных корней из простых чисел 2 и 5, с возможно используемыми арифметическими свойствами в последовательных раундах, снижая эффективность алгоритма по сравнению с обнаружение коллизий в некоторых битах.
  • Первые четыре начальных значения для h0- h3совпадают с алгоритмом MD5, а пятое и шестое (для h4и h5) похожи. Однако они не были должным образом проверены на устойчивость к инверсии нескольких первых раундов, чтобы сделать вывод о возможных конфликтах на некоторых битах, которые можно использовать для многоблочных дифференциальных атак.

Вместо формулировки из показанного оригинального FIPS PUB 180-1, следующий эквивалент выражения могут использоваться для вычисления fв главном цикле выше:

Побитовый выбор между c и d, управляемый b. (0 ≤ i ≤ 19): f = d xor (b и (c xor d)) (вариант 1) (0 ≤ i ≤ 19) : f = (b и c) xor ((not b) и d) (вариант 2) (0 ≤ i ≤ 19): f = (b и c) xor ((not b) и d) (вариант 3) (0 ≤ i ≤ 19): f = vec_sel (d, c, b) (альтернатива 4) Побитовая функция большинства. (40 ≤ i ≤ 59): f = (b и c) или (d и (b или c)) ( альтернатива 1) (40 ≤ i ≤ 59): f = (b и c) или (d and (b xor c)) (вариант 2) (40 ≤ i ≤ 59): f = (b и c) xor (d and (b xor c)) (вариант 3) (40 ≤ i ≤ 59): f = (b и c) xor (d и (b xor c)) (вариант 4) (40 ≤ i ≤ 59): f = (b и c) xor (b и d) xor (c и d) (вариант 5) (40 ≤ i ≤ 59): f = vec_sel (c, b, c xor d) ( альтернатива 6)

Также было показано, что для раундов 32–79 вычисление:

w [i] = (w [i-3] xor w [i-8] xor w [i-14] xor w [i-16]) leftrotate 1

можно заменить на:

w [i] = (w [i-6] xor w [i-16] xor w [i-28] xor w [ i-32]) leftrotate 2

Это преобразование сохраняет все 64-битные операнды выровненными и, удаляя зависимость cy of w [i]на w [i-3], позволяет эффективную реализацию SIMD с длиной вектора 4, например x86 SSE инструкция.

Сравнение функций SHA

В таблице ниже внутреннее состояние означает «внутреннюю хеш-сумму» после каждого сжатия блока данных.

Сравнение функций SHA
  • view
  • talk
Алгоритм и вариантРазмер вывода. (биты)Размер внутреннего состояния. (биты)Размер блока. (биты)ОкругляетОперацииБезопасность (в битах) против атак с коллизиями Емкость. против атак с расширением длины Производительность на Skylake (медиана cpb )Первые опубликованные
длинные сообщения8 байтов
MD5 (для справки)128128. (4 × 32)51264And, Xor, Rot, Add (mod 2), Или≤18. (обнаружены коллизии)04.9955.001992
SHA-0 160160. (5 × 32)51280And, Xor, Rot, Add (mod 2), или<34. (обнаружены коллизии)0≈ SHA-1≈ SHA-11993
SHA-1 <63. (обнаружены коллизии)3.4752.001995
SHA-2 SHA-224. SHA-256224. 256256. (8 × 32)51264And, Xor, Rot, Add (mod 2), Or, Shr112. 12832. 07.62. 7.6384.50. 85.252004. 2001
SHA-384. SHA-512384. 512512. (8 × 64)102480And, Xor, Rot, Add (mod 2), Or, Shr192. 256128 (≤ 384). 05,12. 5,06135,75. 135,502001
SHA -512/224. SHA-512/256224. 256112. 128288. 256≈ SHA-384≈ SHA-3842012
SHA-3 SHA3-224. SHA3-256. SHA3-384. SHA3 -512224. 256. 384. 5121600. (5 × 5 × 64)1152. 1088. 832. 57624And, Xor, Rot, Not112. 128. 192. 256448. 512. 768. 10248,12. 8,59. 11,06. 15,88154,25. 155,50. 164,00. 164,002015
SHAKE128. SHAKE256d (произвольно). d (произвольно)1344. 1088мин (d / 2, 128). мин (d / 2, 256)256. 5127,08. 8,59155,25. 155,50

Приспособление tations

Ниже приводится список библиотек криптографии, поддерживающих SHA-1:

Аппаратное ускорение обеспечивается следующими расширениями процессора:

См. Также

Примечания

Ссылки

Внешние ссылки

Последняя правка сделана 2021-06-06 03:21:27
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте