ША-2
Безопасные алгоритмы хеширования | |
---|---|
Концепции | |
хэш-функции , SHA , DSA | |
Основные стандарты | |
ША-0 , ША-1 , ША-2 , ША-3 | |
SHA-2 ( Secure Hash Algorithm 2 ) — набор криптографических хэш-функций, США разработанный Агентством национальной безопасности (АНБ) и впервые опубликованный в 2001 году. [1] [2] Они построены с использованием конструкции Меркла-Дамгорда на основе функции одностороннего сжатия, построенной с использованием структуры Дэвиса-Мейера из специализированного блочного шифра.
SHA-2 включает существенные изменения по сравнению со своим предшественником SHA-1 . Семейство SHA-2 состоит из шести хэш-функций с дайджестами (хэш-значениями) длиной 224, 256, 384 или 512 бит: [3]
ША-224, ША-256, ША-384, ША-512, ША-512/224, ША-512/256 . SHA-256 и SHA-512 — это новые хэш-функции, дайджесты которых представляют собой восемь 32-битных и 64-битных слов соответственно. Они используют разные величины сдвига и аддитивные константы, но в остальном их структуры практически идентичны, отличаясь только количеством раундов. SHA-224 и SHA-384 — это усеченные версии SHA-256 и SHA-512 соответственно, рассчитанные с разными начальными значениями. SHA-512/224 и SHA-512/256 также являются усеченными версиями SHA-512, но начальные значения генерируются с использованием метода, описанного в Федеральных стандартах обработки информации (FIPS) PUB 180-4.
SHA-2 был впервые опубликован Национальным институтом стандартов и технологий (NIST) в качестве федерального стандарта США. Семейство алгоритмов SHA-2 запатентовано в США. [4] Соединенные Штаты выпустили патент по бесплатной лицензии. [3]
По состоянию на 2011 год лучшие публичные атаки преодолевают сопротивление прообразу в течение 52 из 64 раундов SHA-256 или 57 из 80 раундов SHA-512, а также сопротивление коллизиям в течение 46 из 64 раундов SHA-256. [5] [6]
Стандарт хеша
[ редактировать ]С публикацией FIPS PUB 180-2 NIST добавил три дополнительные хэш-функции в семейство SHA. Алгоритмы известны под общим названием SHA-2 по длине их дайджеста (в битах): SHA-256, SHA-384 и SHA-512.
Алгоритмы были впервые опубликованы в 2001 году в проекте FIPS PUB 180-2, после чего были приняты общественное рассмотрение и комментарии. В августе 2002 года FIPS PUB 180-2 стал новым стандартом безопасного хэширования , заменив FIPS PUB 180-1, выпущенный в апреле 1995 года. Обновленный стандарт включал исходный алгоритм SHA-1 с обновленными техническими обозначениями, соответствующими тем, которые описывают внутренняя работа семейства SHA-2. [2]
В феврале 2004 года было опубликовано уведомление об изменении FIPS PUB 180-2, в котором указан дополнительный вариант SHA-224, определенный для соответствия длине ключа двухключевого Triple DES . [7] В октябре 2008 года стандарт был обновлен до FIPS PUB 180-3, включая SHA-224 из уведомления об изменении, но в остальном фундаментальных изменений в стандарт не вносилось. Основной мотивацией для обновления стандарта было перемещение информации о безопасности об алгоритмах хэширования и рекомендаций по их использованию в специальные публикации 800-107 и 800-57. [8] [9] [10] Подробные тестовые данные и примеры дайджестов сообщений также были удалены из стандарта и предоставлены в виде отдельных документов. [11]
В январе 2011 года NIST опубликовал пакет SP800-131A, в котором оговаривался переход от действующего на тот момент минимума 80-битной безопасности (обеспечиваемого SHA-1), разрешенного для использования федеральным правительством до конца 2013 года, к 112-битной безопасности (при условии по SHA-2) является одновременно минимальным требованием (начиная с 2014 года) и рекомендуемым уровнем безопасности (начиная с даты публикации в 2011 году). [12]
В марте 2012 года стандарт был обновлен в FIPS PUB 180-4, добавив хеш-функции SHA-512/224 и SHA-512/256 и описав метод генерации начальных значений для усеченных версий SHA-512. Кроме того, было снято ограничение на заполнение входных данных перед вычислением хеш-функции, что позволяет вычислять хеш-данные одновременно с генерацией контента, например видео- или аудиопотока в реальном времени. Заполнение последнего блока данных должно произойти до вывода хэша. [13]
В июле 2012 года NIST пересмотрел пакет SP800-57, который содержит рекомендации по управлению криптографическими ключами. Публикация запрещала создание цифровых подписей с хеш-безопасностью ниже 112 бит после 2013 года. В предыдущей версии 2007 года было указано, что предельный срок приходится на конец 2010 года. [10] В августе 2012 года NIST пересмотрел SP800-107 таким же образом. [9]
была В 2012 году на конкурсе хэш-функций NIST выбрана новая хэш-функция SHA-3 . [14] Алгоритм SHA-3 не является производным от SHA-2.
Приложения
[ редактировать ]Хэш-функция SHA-2 реализована в некоторых широко используемых приложениях и протоколах безопасности, включая TLS и SSL , PGP , SSH , S/MIME и IPsec . Неотъемлемая вычислительная потребность алгоритмов SHA-2 привела к предложению более эффективных решений, например, на основе аппаратных ускорителей интегральных схем для конкретных приложений (ASIC). [15]
SHA-256 используется для аутентификации Debian. пакетов программного обеспечения [16] и в стандарте подписи сообщений DKIM ; SHA-512 является частью системы аутентификации архивных видео Международного уголовного трибунала о геноциде в Руанде . [17] SHA-256 и SHA-512 предлагаются для использования в DNSSEC . [18] Поставщики Unix и Linux переходят на использование 256- и 512-битного SHA-2 для безопасного хеширования паролей. [19]
Некоторые криптовалюты , включая Биткойн , используют SHA-256 для проверки транзакций и расчета доказательства работы. [20] или подтверждение доли . [21] Рост популярности микросхем-ускорителей ASIC SHA-2 привел к использованию шифрования схем доказательства работы на основе .
SHA-1 и SHA-2 — это алгоритмы безопасного хеширования, необходимые по закону для использования в некоторых приложениях правительства США , включая использование в других криптографических алгоритмах и протоколах, для защиты конфиденциальной несекретной информации. FIPS PUB 180-1 также поощряет принятие и использование SHA-1 частными и коммерческими организациями. SHA-1 выводится из эксплуатации для большинства государственных нужд; Национальный институт стандартов и технологий США заявляет: «Федеральные агентства должны прекратить использование SHA-1 для... приложений, которым требуется устойчивость к коллизиям, как можно скорее, и должны использовать семейство хеш-функций SHA-2 для этих приложений после 2010 года». (выделено в оригинале). [22] Директива NIST о том, что правительственные учреждения США должны, но не обязаны прекратить использование SHA-1 после 2010 года. [23] надеялись ускорить переход от SHA-1.
Первоначально функции SHA-2 не были быстро приняты, несмотря на лучшую безопасность, чем SHA-1. Причины могут включать отсутствие поддержки SHA-2 в системах под управлением Windows XP SP2 или более ранних версий. [24] и отсутствие осознания срочности, поскольку коллизии SHA-1 еще не были обнаружены. Команда Google Chrome объявила о плане постепенного прекращения поддержки сертификатов TLS, зависящих от SHA-1, в течение периода с конца 2014 по начало 2015 года. [25] [26] [27] Аналогичным образом Microsoft объявила [28] что Internet Explorer и Edge перестанут соблюдать общедоступные сертификаты TLS, подписанные SHA-1, с февраля 2017 года. Mozilla отключила SHA-1 в начале января 2016 года, но была вынуждена временно включить его через обновление Firefox из-за проблем с веб-пользователем. интерфейсы некоторых моделей маршрутизаторов и устройств безопасности . [29]
Криптоанализ и проверка
[ редактировать ]Для хеш-функции, для которой L — количество битов в дайджесте сообщения , поиск сообщения, соответствующего данному дайджесту сообщения, всегда можно выполнить с помощью перебора в 2 л оценки. Это называется атакой прообраза и может быть практичным, а может и не быть практичным в зависимости от L и конкретной вычислительной среды. Второй критерий, поиск двух разных сообщений, которые создают один и тот же дайджест сообщения, известный как коллизия , требует в среднем всего 2 Л /2 оценки с использованием атаки на день рождения .
Некоторые приложения, использующие криптографические хэши, такие как хранилище паролей, лишь минимально подвержены атаке коллизий . Создание пароля, который работает для данной учетной записи, требует атаки на прообраз, а также доступа к хешу исходного пароля (обычно в shadow
файл), который может быть или не быть тривиальным. Обратное шифрование пароля (например, для получения пароля и попытки использования учетной записи пользователя в другом месте) не становится возможным в результате атак. (Однако даже безопасный хэш пароля не может предотвратить перебор слабых паролей .)
В случае подписания документа злоумышленник не мог просто подделать подпись на существующем документе — злоумышленнику пришлось бы предоставить пару документов, один безобидный и один вредный, и заставить владельца закрытого ключа подписать безобидный документ. Существуют практические обстоятельства, при которых это возможно; до конца 2008 года можно было создавать поддельные SSL сертификаты с использованием коллизии MD5 , которые принимались широко используемыми веб-браузерами. [30]
Повышенный интерес к криптографическому хэш-анализу во время конкурса SHA-3 привел к появлению нескольких новых атак на семейство SHA-2, лучшие из которых приведены в таблице ниже. Только атаки столкновений имеют практическую сложность; ни одна из атак не распространяется на полную хеш-функцию.
На FSE 2012 исследователи из Sony выступили с презентацией, в которой предлагалось расширить атаки псевдостолкновений до 52 раундов для SHA-256 и до 57 раундов для SHA-512, опираясь на атаку бикликового псевдопрообраза. [31]
Опубликовано в | Год | Метод атаки | Атака | Вариант | Раунды | Сложность |
---|---|---|---|---|---|---|
Новые коллизионные атаки против 24-шагового SHA-2 [32] [33] | 2008 | Дифференциал | Столкновение | ША-256 | 24/64 | 2 15.5 |
ША-512 | 24/80 | 2 22.5 | ||||
Прообразы для ступенчатого SHA-2 [34] | 2009 | Встреча посередине | Прообраз | ША-256 | 42/64 | 2 251.7 |
43/64 | 2 254.9 | |||||
ША-512 | 42/80 | 2 502.3 | ||||
46/80 | 2 511.5 | |||||
Расширенные атаки по принципу «встреча посередине» [35] | 2010 | Встреча посередине | Прообраз | ША-256 | 42/64 | 2 248.4 |
ША-512 | 42/80 | 2 494.6 | ||||
Дифференциальная атака высшего порядка на сокращенный SHA-256 [6] | 2011 | Дифференциал | Псевдостолкновение | ША-256 | 46/64 | 2 178 |
33/64 | 2 46 | |||||
Биклики для прообразов: атаки на Skein-512 и семейство SHA-2 [5] | 2011 | Биклик | Прообраз | ША-256 | 45/64 | 2 255.5 |
ША-512 | 50/80 | 2 511.5 | ||||
Псевдо-прообраз | ША-256 | 52/64 | 2 255 | |||
ША-512 | 57/80 | 2 511 | ||||
Улучшение локальных коллизий: новые атаки на уменьшенный SHA-256 [36] | 2013 | Дифференциал | Столкновение | ША-256 | 31/64 | 2 65.5 |
Псевдостолкновение | ША-256 | 38/64 | 2 37 | |||
Эвристика ветвления при дифференциальном поиске коллизий с применением SHA-512 [37] | 2014 | Эвристический дифференциал | Псевдостолкновение | ША-512 | 38/80 | 2 40.5 |
Анализ SHA-512/224 и SHA-512/256 [38] | 2016 | Дифференциал | Столкновение | ША-256 | 28/64 | практичный |
ША-512 | 27/80 | практичный | ||||
Псевдостолкновение | ША-512 | 39/80 | практичный | |||
Новые рекорды коллизионных атак на SHA-2 [39] | 2023 | Дифференциал | Столкновение | ША-256 | 31/64 | 2 49.8 |
ША-512 | 31/80 | 2 115.6 | ||||
Псевдостолкновение | ША-256 | 39/64 | практичный |
Официальная валидация
[ редактировать ]Реализация всех функций безопасности, одобренных FIPS, может быть официально проверена с помощью программы CMVP , совместно управляемой Национальным институтом стандартов и технологий (NIST) и Управлением безопасности коммуникаций (CSE). Для неофициальной проверки на сайте NIST доступен для скачивания пакет для создания большого количества тестовых векторов; однако полученная в результате проверка не заменяет формальную проверку CMVP, которая требуется по закону. [ нужна ссылка ] для определенных приложений.
По состоянию на декабрь 2013 г. [update]Существует более 1300 проверенных реализаций SHA-256 и более 900 SHA-512, причем только 5 из них способны обрабатывать сообщения длиной в битах, не кратной восьми, при этом поддерживая оба варианта. [40]
Тестовые векторы
[ редактировать ]Хэш-значения пустой строки (т. е. входного текста нулевой длины).
SHA224("") 0x d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f SHA256("") 0x e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 SHA384("") 0x 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b SHA512("") 0x cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e SHA512/224("") 0x 6ed0dd02806fa89e25de060c19d3ac86cabb87d6a0ddd05c333b84f4 SHA512/256("") 0x c672b8d1ef56ed28ab87c3622c5114069bdd3ad7b8f9737498d0c01ecef0967a
Даже небольшое изменение в сообщении (с подавляющей вероятностью) приведет к другому хешу из-за лавинного эффекта . Например, добавление точки в конец следующего предложения изменяет примерно половину (111 из 224) битов хеша, что эквивалентно случайному выбору нового хеша:
SHA224("The quick brown fox jumps over the lazy dog") 0x 730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525 SHA224("The quick brown fox jumps over the lazy dog.") 0x 619cba8e8e05826e9b8c519c0a5c68f4fb653e8a3d8aa04bb2c8cd4c
Псевдокод
[ редактировать ]Ниже приведен псевдокод для алгоритма SHA-256. Обратите внимание на значительное увеличение смешивания между битами w[16..63]
слов по сравнению с SHA-1.
Note 1: All variables are 32 bit unsigned integers and addition is calculated modulo 232 Note 2: For each round, there is one round constant k[i] and one entry in the message schedule array w[i], 0 ≤ i ≤ 63 Note 3: The compression function uses 8 working variables, a through h Note 4: Big-endian convention is used when expressing the constants in this pseudocode, and when parsing message block data from bytes to words, for example, the first word of the input message "abc" after padding is 0x61626380 Initialize hash values: (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19): h0 := 0x6a09e667 h1 := 0xbb67ae85 h2 := 0x3c6ef372 h3 := 0xa54ff53a h4 := 0x510e527f h5 := 0x9b05688c h6 := 0x1f83d9ab h7 := 0x5be0cd19 Initialize array of round constants: (first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311): k[0..63] := 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 Pre-processing (Padding): begin with the original message of length L bits append a single '1' bit append K '0' bits, where K is the minimum number >= 0 such that (L + 1 + K + 64) is a multiple of 512 append L as a 64-bit big-endian integer, making the total post-processed length a multiple of 512 bits such that the bits in the message are: <original message of length L> 1 <K zeros> <L as 64 bit integer> , (the number of bits will be a multiple of 512) Process the message in successive 512-bit chunks: break message into 512-bit chunks for each chunk create a 64-entry message schedule array w[0..63] of 32-bit words (The initial values in w[0..63] don't matter, so many implementations zero them here) copy chunk into first 16 words w[0..15] of the message schedule array Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array: for i from 16 to 63 s0 := (w[i-15] rightrotate 7) xor (w[i-15] rightrotate 18) xor (w[i-15] rightshift 3) s1 := (w[i-2] rightrotate 17) xor (w[i-2] rightrotate 19) xor (w[i-2] rightshift 10) w[i] := w[i-16] + s0 + w[i-7] + s1 Initialize working variables to current hash value: a := h0 b := h1 c := h2 d := h3 e := h4 f := h5 g := h6 h := h7 Compression function main loop: for i from 0 to 63 S1 := (e rightrotate 6) xor (e rightrotate 11) xor (e rightrotate 25) ch := (e and f) xor ((not e) and g) temp1 := h + S1 + ch + k[i] + w[i] S0 := (a rightrotate 2) xor (a rightrotate 13) xor (a rightrotate 22) maj := (a and b) xor (a and c) xor (b and c) temp2 := S0 + maj h := g g := f f := e e := d + temp1 d := c c := b b := a a := temp1 + temp2 Add the compressed chunk to the current hash value: h0 := h0 + a h1 := h1 + b h2 := h2 + c h3 := h3 + d h4 := h4 + e h5 := h5 + f h6 := h6 + g h7 := h7 + h Produce the final hash value (big-endian): digest := hash := h0 append h1 append h2 append h3 append h4 append h5 append h6 append h7
Вычисление ch
и maj
значения можно оптимизировать так же , как описано для SHA-1 .
SHA-224 идентичен SHA-256, за исключением того:
- начальные значения хеш-функции
h0
черезh7
разные, и - вывод строится путем исключения
h7
.
SHA-224 initial hash values (in big endian): (The second 32 bits of the fractional parts of the square roots of the 9th through 16th primes 23..53) h[0..7] := 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4
SHA-512 по структуре идентичен SHA-256, но:
- сообщение разбито на куски по 1024 бита,
- начальные значения хеш-функции и константы округления расширены до 64 бит,
- там 80 патронов вместо 64,
- массив расписания сообщений w имеет 80 64-битных слов вместо 64 32-битных слов,
- чтобы расширить массив расписания сообщений w, цикл составляет от 16 до 79 вместо 16 до 63,
- константы округления основаны на первых 80 простых числах 2..409,
- размер слова, используемого для вычислений, составляет 64 бита,
- добавленная длина сообщения (до предварительной обработки) в битах представляет собой 128-битное целое число с прямым порядком байтов и
- используемые величины сдвига и поворота различны.
SHA-512 initial hash values (in big-endian): h[0..7] := 0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1, 0x510e527fade682d1, 0x9b05688c2b3e6c1f, 0x1f83d9abfb41bd6b, 0x5be0cd19137e2179 SHA-512 round constants: k[0..79] := 0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc, 0x3956c25bf348b538, 0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118, 0xd807aa98a3030242, 0x12835b0145706fbe, 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2, 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, 0xc19bf174cf692694, 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65, 0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5, 0x983e5152ee66dfab, 0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4, 0xc6e00bf33da88fc2, 0xd5a79147930aa725, 0x06ca6351e003826f, 0x142929670a0e6e70, 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df, 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b, 0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30, 0xd192e819d6ef5218, 0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8, 0x19a4c116b8d2d0c8, 0x1e376c085141ab53, 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8, 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3, 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec, 0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b, 0xca273eceea26619c, 0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178, 0x06f067aa72176fba, 0x0a637dc5a2c898a6, 0x113f9804bef90dae, 0x1b710b35131c471b, 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c, 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817 SHA-512 Sum & Sigma: S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39) S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41) s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7) s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)
SHA-384 идентичен SHA-512, за исключением того, что:
- начальные значения хеш-функции
h0
черезh7
различны (взяты с 9-го по 16-е простые числа), и - вывод строится путем исключения
h6
иh7
.
SHA-384 initial hash values (in big-endian):
h[0..7] := 0xcbbb9d5dc1059ed8, 0x629a292a367cd507, 0x9159015a3070dd17, 0x152fecd8f70e5939,
0x67332667ffc00b31, 0x8eb44a8768581511, 0xdb0c2e0d64f98fa7, 0x47b5481dbefa4fa4
SHA-512/t идентичен SHA-512, за исключением того, что:
- начальные значения хеш-функции
h0
черезh7
задаются функцией генерации SHA-512/t IV , - вывод создается путем усечения конкатенации
h0
черезh7
в t битах, - t, равный 384, не допускается, вместо него следует использовать SHA-384, как указано, и
- Значения t 224 и 256 особо упоминаются как утвержденные.
Функция генерации SHA-512/t IV оценивает модифицированный SHA-512 в строке ASCII «SHA-512/ t », замененной десятичным представлением t . Модифицированный SHA -512 аналогичен SHA-512, за исключением начальных значений. h0
через h7
каждый из них был подвергнут операции XOR с шестнадцатеричной константой 0xa5a5a5a5a5a5a5a5
.
Пример реализации C для семейства хеш-функций SHA-2 можно найти в РФК 6234 .
Сравнение функций SHA
[ редактировать ]В таблице ниже внутреннее состояние означает «внутреннюю хэш-сумму» после каждого сжатия блока данных.
Алгоритм и вариант | Выходной размер (биты) |
Внутренний размер штата (биты) |
Размер блока (биты) |
Раунды | Операции | Защита от столкновений (биты) |
Защита от атак расширения длины (биты) |
Производительность на Skylake (медиана cpb ) [41] | Впервые опубликовано | ||
---|---|---|---|---|---|---|---|---|---|---|---|
Длинные сообщения | 8 байт | ||||||||||
MD5 (для справки) | 128 | 128 (4 × 32) |
512 | 4 (16 операций в каждом раунде) |
И, Xor, Or, Rot, Add (мод 2 32 ) | ≤ 18 (обнаружены столкновения) [42] |
0 | 4.99 | 55.00 | 1992 | |
ША-0 | 160 | 160 (5 × 32) |
512 | 80 | И, Xor, Or, Rot, Add (мод 2 32 ) | < 34 (обнаружены столкновения) |
0 | ≈ ША-1 | ≈ ША-1 | 1993 | |
ША-1 | < 63 (обнаружены столкновения) [43] |
3.47 | 52.00 | 1995 | |||||||
ША-2 | ША-224 ША-256 |
224 256 |
256 (8 × 32) |
512 | 64 | И, Ксор, Или, Рот, Шр, Адд (мод 2 32 ) |
112 128 |
32 0 |
7.62 7.63 |
84.50 85.25 |
2004 2001 |
ША-384 | 384 | 512 (8 × 64) |
1024 | 80 | И, Ксор, Или, Рот, Шр, Адд (мод 2 64 ) |
192 | 128 | 5.12 | 135.75 | 2001 | |
ША-512 | 512 | 256 | 0 [44] | 5.06 | 135.50 | 2001 | |||||
ША-512/224 ША-512/256 |
224 256 |
112 128 |
288 256 |
≈ ША-384 | ≈ ША-384 | 2012 | |||||
ША-3 | SHA3-224 SHA3-256 SHA3-384 SHA3-512 |
224 256 384 512 |
1600 (5 × 5 × 64) |
1152 1088 832 576 |
24 [45] | И, Ксор, Гниль, Не | 112 128 192 256 |
448 512 768 1024 |
8.12 8.59 11.06 15.88 |
154.25 155.50 164.00 164.00 |
2015 |
SHAKE128 SHAKE256 |
д (произвольно) д (произвольно) |
1344 1088 |
мин( д /2, 128) мин( д /2, 256) |
256 512 |
7.08 8.59 |
155.25 155.50 |
В столбце побитовых операций «Rot» означает вращение без переноса , а «Shr» означает логический сдвиг вправо . Все эти алгоритмы используют модульное сложение. [ сломанный якорь ] каким-то образом, кроме SHA-3.
Более подробные измерения производительности на современных процессорных архитектурах приведены в таблице ниже.
Архитектура процессора | Частота | Алгоритм | Размер слова (биты) | Циклов/байт x86 | МиБ/с x86 | Циклов/байт x86-64 | МиБ/с x86-64 |
---|---|---|---|---|---|---|---|
Интел Айви Бридж | 3,5 ГГц | ША-256 | 32 | 16.80 | 199 | 13.05 | 256 |
ША-512 | 64 | 43.66 | 76 | 8.48 | 394 | ||
AMD Piledriver APU | 3,8 ГГц | ША-256 | 32 | 22.87 | 158 | 18.47 | 196 |
ША-512 | 64 | 88.36 | 41 | 12.43 | 292 |
Показатели производительности, помеченные как «x86», выполнялись с использованием 32-битного кода на 64-битных процессорах, тогда как цифры «x86-64» представляют собой собственный 64-битный код. Хотя SHA-256 предназначен для 32-битных вычислений, его код оптимизирован для 64-битных процессоров с архитектурой x86. 32-битные реализации SHA-512 значительно медленнее, чем их 64-битные аналоги. Варианты обоих алгоритмов с разными выходными размерами будут работать одинаково, поскольку функции расширения и сжатия сообщений идентичны, а различаются только начальные значения хеш-функции и выходные размеры. Лучшие реализации MD5 и SHA-1 выполняют на современных процессорах от 4,5 до 6 циклов на байт.
Тестирование проводилось Университетом Иллинойса в Чикаго на системе Hydra8 с процессором Intel Xeon E3-1275 V2 с тактовой частотой 3,5 ГГц и на системе Hydra9 с APU AMD A10-5800K на тактовой частоте 3,8 ГГц. [46] Указанные выше скорости циклов на байт представляют собой среднюю производительность алгоритма, обрабатывающего сообщение размером 4096 байт с использованием программного обеспечения для криптографического тестирования SUPERCOP. [47] Производительность МиБ/с экстраполируется на основе тактовой частоты процессора на одном ядре; Реальная производительность будет варьироваться в зависимости от множества факторов.
Реализации
[ редактировать ]Ниже приведен список библиотек шифрования, поддерживающих SHA-2:
- Ботан
- Надувной замок
- Криптлиб
- Крипто++
- Libgcrypt
- Мбед ТЛС [48] [49]
- либнатрий
- Крапива
- LibreSSL
- OpenSSL
- ГнуTLS
- волкSSL
Аппаратное ускорение обеспечивается следующими расширениями процессора:
- Расширения Intel SHA : доступны на некоторых процессорах Intel и AMD x86.
- ВИА PadLock
- Расширения криптографии ARMv8 [50]
- IBM z/Architecture : доступен с 2005 года как часть расширений Message-Security-Assist Extensions 1 (SHA-256) и 2 (SHA-512). [51]
- IBM Power ISA начиная с версии 2.07
См. также
[ редактировать ]- Сравнение криптографических хэш-функций
- Сравнение криптографических библиотек
- Сводка безопасности хеш-функции
- Хэшкэш
- HMAC
- Международная ассоциация криптологических исследований (IACR)
- Доверенная временная метка
Ссылки
[ редактировать ]- ^ Пенард, Воутер; ван Верховен, Тим. «О семействе алгоритмов безопасного хеширования» (PDF) . Staff.science.uu.nl . Архивировано из оригинала (PDF) 30 марта 2016 г.
- ^ Jump up to: а б Уведомление Федерального реестра 02-21599, объявляющее об утверждении публикации FIPS 180-2. Архивировано 14 марта 2022 г. на Wayback Machine.
- ^ Jump up to: а б «Подробности ПИС: Соединенные Штаты Америки, представленные в заявлении об общей лицензии Агентства национальной безопасности» . Трекер данных IETF . 858. Архивировано из оригинала 16 июня 2016 г. Проверено 17 февраля 2008 г.
- ^ США 6829355 , Лилли, Гленн М., «Устройство и метод одностороннего криптографического хеширования», опубликовано 7 декабря 2004 г., передано Агентству национальной безопасности.
- ^ Jump up to: а б Дмитрий Ховратович, Кристиан Рехбергер и Александра Савельева (2011). «Биклик для прообразов: атаки на Skein-512 и семейство SHA-2» (PDF) . Архив электронной печати криптологии IACR . 2011 (286). Архивировано (PDF) из оригинала 15 февраля 2022 г. Проверено 15 февраля 2022 г.
- ^ Jump up to: а б Марио Ламбергер и Флориан Мендель (2011). «Дифференциальная атака высшего порядка на уменьшенный SHA-256» (PDF) . Архив электронной печати криптологии IACR . 2011 (37). Архивировано (PDF) из оригинала 22 декабря 2022 г. Проверено 15 февраля 2022 г.
- ^ «FIPS 180-2 с уведомлением об изменении 1» (PDF) . csrc.nist.gov . Архивировано (PDF) из оригинала 9 августа 2017 г. Проверено 15 февраля 2022 г.
- ^ Уведомление Федерального реестра E8-24743, объявляющее об одобрении публикации FIPS 180-3.
- ^ Jump up to: а б Данг, Куинь (24 августа 2012 г.). Рекомендации для приложений, использующих утвержденные алгоритмы хеширования (отчет). Национальный институт стандартов и технологий. Архивировано из оригинала 28 августа 2023 г. Проверено 28 августа 2023 г.
- ^ Jump up to: а б Баркер, Элейн; Баркер, Уильям; Берр, Уильям; Полк, В.; Смид, Майлз (10 июля 2012 г.). Рекомендации по управлению ключами, Часть 1: Общие сведения (редакция 3) (Отчет). Национальный институт стандартов и технологий. Архивировано из оригинала 28 августа 2023 г. Проверено 28 августа 2023 г.
- ^ «NIST.gov – Отдел компьютерной безопасности – Ресурсный центр компьютерной безопасности» . 29 декабря 2016 года. Архивировано из оригинала 9 сентября 2017 года . Проверено 15 февраля 2022 г.
- ^ Баркер, Элейн; Рогинский, Аллен (13 января 2011 г.). Переходы: рекомендации по переходу на использование криптографических алгоритмов и длин ключей (отчет). Национальный институт стандартов и технологий. Архивировано из оригинала 28 августа 2023 г. Проверено 28 августа 2023 г.
- ^ Уведомление Федерального реестра 2012-5400, объявляющее об одобрении публикации FIPS 180-4.
- ^ «NIST выбирает победителя конкурса алгоритмов безопасного хеширования (SHA-3)» . НИСТ . 2 октября 2012 г. Архивировано из оригинала 2 апреля 2015 г. Проверено 24 февраля 2015 г.
- ^ Лукас Даудт Франк; Габриэль Аугусто Гинья; Жоау Паулу Карму; Хосе А. Афонсо; Максимилиам Луппе (2024). «Индивидуальная разработка ASIC для SHA-256 с использованием инструментов с открытым исходным кодом» . Компьютеры . 13 (1): 9. doi : 10.3390/computers13010009 . hdl : 1822/89307 .
- ^ «Проверка подлинности образов Debian» . Архивировано из оригинала 19 февраля 2024 г. Проверено 19 февраля 2024 г.
- ^ Маркофф, Джон (27 января 2009 г.). «Инструмент для проверки цифровых записей даже при изменении технологий» . Нью-Йорк Таймс . ISSN 0362-4331 . Архивировано из оригинала 19 сентября 2023 г. Проверено 27 августа 2023 г.
- ^ Использование алгоритмов SHA-2 с RSA в DNSKEY и записях ресурсов RRSIG для DNSSEC . Октябрь 2009 г. doi : 10.17487/RFC5702 . РФК 5702 .
- ^ «Unix-крипта с SHA-256/512» . akkadia.org . Архивировано из оригинала 20 августа 2023 г. Проверено 27 августа 2023 г.
- ^ Биткойн, Излишек. «Биткойн не тратит энергию зря» . Избыток биткойнов . Архивировано из оригинала 28 мая 2022 г. Проверено 20 апреля 2020 г.
- ^ «Что такое SHA-256 и как он связан с биткойнами? — Mycryptopedia» . Моякриптопедия . 21 сентября 2017 г. Архивировано из оригинала 17 сентября 2018 г. Проверено 17 сентября 2018 г.
- ^ Отдел компьютерной безопасности, Лаборатория информационных технологий (04.01.2017). «Политика NIST в отношении хэш-функций – хеш-функции | CSRC | CSRC» . ЦКРС | НИСТ . Архивировано из оригинала 28 августа 2023 г. Проверено 27 августа 2023 г.
- ^ «Безопасное хеширование» . НИСТ . Архивировано из оригинала 25 июня 2011 г. Проверено 25 ноября 2010 г.
- ^ «Обзор пакета обновления 3 для Windows XP» (PDF) . Корпорация Майкрософт. Архивировано из оригинала (PDF) 30 мая 2008 г.
- ^ «Постепенный закат SHA-1» . Блог Хрома . Архивировано из оригинала 07 августа 2023 г. Проверено 27 августа 2023 г.
- ^ Эрик Милль. «ШАААААААААААА» . ШАААААААААААА.com . Архивировано из оригинала 01 марта 2017 г. Проверено 26 августа 2015 г.
- ^ «Неофициальные часто задаваемые вопросы об устаревании Chrome SHA1» . Филиппо Вальсорда . 08.04.2015. Архивировано из оригинала 28 августа 2023 г. Проверено 27 августа 2023 г.
- ^ «Обновление нашей дорожной карты по прекращению поддержки SHA-1 — блог разработчиков Microsoft EdgeБлог разработчиков Microsoft Edge» . блоги.windows.com . 29 апреля 2016 г. Архивировано из оригинала 28 ноября 2016 г. Проверено 28 ноября 2016 г.
- ^ онлайн, Хайзе (08.01.2016). «Firefox: Mozilla выключает SHA-1... а затем снова включает» . Безопасность (на немецком языке). Архивировано из оригинала 28 августа 2023 г. Проверено 27 августа 2023 г.
- ↑ Александр Сотиров, Марк Стивенс, Джейкоб Аппельбаум, Арьен Ленстра, Дэвид Молнар, Даг Арне Освик, Бенне де Вегер, MD5 сегодня считается вредным: создание мошеннического сертификата CA. Архивировано 23 марта 2022 г. на Wayback Machine , по состоянию на 29 марта 2009 г. .
- ↑ Джи Ли, Таканори Исобе и Кёдзи Шибутани, Китайская исследовательская лаборатория Sony и Sony Corporation, Преобразование атаки «встреча посередине» в атаку псевдостолкновения: применение к SHA-2. Архивировано 24 февраля 2022 г. на Wayback Machine.
- ^ Санадхья, Сомитра Кумар; Саркар, Палаш (2008), Новые коллизионные атаки против 24-шагового SHA-2 , Конспекты лекций по информатике, том. 5365, Springer-Verlag, стр. 91–103, номер doi : 10.1007/978-3-540-89754-5_8 , ISBN. 978-3-540-89753-8 , заархивировано из оригинала 21 января 2022 г. , получено 12 февраля 2024 г.
- ^ Санадхья, Сомитра Кумар; Саркар, Палаш (2009). «Комбинаторный анализ недавних атак на семейство ступенчато уменьшенного SHA-2» . Криптография и связь . дои : 10.1007/s12095-009-0011-5 . Архивировано из оригинала 02 августа 2023 г. Проверено 12 февраля 2024 г.
- ^ Кадзумаро Аоки; Цзянь Го; Кристиан Матусевич; Ю Сасаки и Лэй Ван (2009). «Прообразы для SHA-2 с пошаговым сокращением». Достижения в криптологии – ASIACRYPT 2009 . Конспекты лекций по информатике. Том. 5912. Шпрингер Берлин Гейдельберг. стр. 578–597. дои : 10.1007/978-3-642-10366-7_34 . ISBN 978-3-642-10366-7 . ISSN 0302-9743 .
- ^ Цзянь Го; Сан Линг; Кристиан Рехбергер и Хуасюн Ван (2010). «Продвинутые атаки по принципу «встреча посередине»: первые результаты на Full Tiger и улучшенные результаты на MD4 и SHA-2». Достижения в криптологии - ASIACRYPT 2010 (PDF) . Конспекты лекций по информатике. Том. 6477. Шпрингер Берлин Гейдельберг. стр. 56–75. дои : 10.1007/978-3-642-17373-8_4 . ISBN 978-3-642-17373-8 . ISSN 0302-9743 . Архивировано (PDF) из оригинала 3 марта 2022 г. Проверено 15 февраля 2022 г.
- ^ Флориан Мендель; Томислав Над; Мартин Шлеффер (2013). «Улучшение локальных коллизий: новые атаки на сокращенный SHA-256». Достижения в криптологии – EUROCRYPT 2013 . Конспекты лекций по информатике. Том. 7881. Шпрингер Берлин Гейдельберг. стр. 262–278. дои : 10.1007/978-3-642-38348-9_16 . ISBN 978-3-642-38348-9 . ISSN 0302-9743 . Архивировано из оригинала 06.11.2018 . Проверено 13 декабря 2014 г.
- ^ Мария Эйхлзедер, Флориан Мендель и Мартин Шлеффер (2014). «Эвристика ветвления при дифференциальном поиске коллизий с применением SHA-512» (PDF) . Архив электронной печати криптологии IACR . 2014 (302). Архивировано (PDF) из оригинала 20 января 2022 г. Проверено 15 февраля 2022 г.
- ^ Кристоф Добрауниг; Мария Эйхлседер и Флориан Мендель (2016). «Анализ SHA-512/224 и SHA-512/256» (PDF) . Международная ассоциация криптологических исследований . Архивировано (PDF) из оригинала 15 июля 2017 г. Проверено 15 апреля 2016 г.
- ^ Ли, Инсинь; Лю, Фукан; Ван, Гаоли (2024). «Новые рекорды столкновений на SHA-2» . Архив электронной печати по криптологии . Архивировано из оригинала 02 марта 2024 г. Проверено 2 марта 2024 г.
- ^ «Список проверки SHS» . НИСТ . 16.06.2017. Архивировано из оригинала 17 июня 2017 г.
- ^ «Таблица измерений» . скамейка.cr.yp.to .
- ^ Тао, Се; Лю, Фаньбао; Фэн, Дэнго (2013). Быстрая атака столкновений на MD5 (PDF) . Архив криптологии ePrint (Технический отчет). МАКР .
- ^ Стивенс, Марк ; Бурштейн, Эли ; Карпман, Пьер; Альбертини, Анж; Марков, Ярик. Первое столкновение для полного SHA-1 (PDF) (Технический отчет). Google Исследования .
- Марк Стивенс; Эли Бурштейн; Пьер Карпман; Анж Альбертини; Ярик Марков; Алекс Пети Бьянко; Клеман Байс (23 февраля 2017 г.). «Анонсируем первое столкновение SHA1» . Блог Google по безопасности .
- ^ Без усечения известно полное внутреннее состояние хеш-функции, независимо от устойчивости к коллизиям. Если выходные данные усекаются, удаленную часть состояния необходимо найти и найти, прежде чем можно будет возобновить хеш-функцию, что позволит продолжить атаку.
- ^ «Семейство функций губки Кечака» . Проверено 27 января 2016 г.
- ^ Контрольные показатели SUPERCOP Измерения хеш-функций, индексируемые машиной.
- ^ «СУПЕРКОП» . Архивировано из оригинала 15 февраля 2015 года . Проверено 24 февраля 2015 г.
- ^ « Поддерживаемые наборы шифров SSL/TLS » . Архивировано из оригинала 12 мая 2019 г. Проверено 19 октября 2019 г.
- ^ « Журнал изменений Mbed TLS , 7 июля 2007 г.» . Архивировано из оригинала 4 февраля 2019 года . Проверено 19 октября 2019 г.
- ^ «Техническое справочное руководство по процессору ARM Cortex-A53 MPCore. Расширение криптографии» . Архивировано из оригинала 01 июня 2020 г. Проверено 15 февраля 2022 г.
- ^ Принципы работы IBM z/Architecture, номер публикации SA22-7832. См. инструкции KIMD и KLMD в главе 7.
Дальнейшее чтение
[ редактировать ]- Анри Жильбер, Хелена Хандшу: Анализ безопасности SHA-256 и сестер. Избранные области криптографии , 2003 г.: стр. 175–193.
- «Предлагаемая редакция Федерального стандарта обработки информации (FIPS) 180, Стандарт безопасного хеширования» . Федеральный реестр . 59 (131): 35317–35318. 11 июля 1994 г. Архивировано из оригинала 28 июля 2020 г. Проверено 26 апреля 2007 г.
Внешние ссылки
[ редактировать ]- Описания SHA-256, SHA-384 и SHA-512 из NIST.
- SHA-2 Checker – SHAChecker для проверки совместимости SSL с SHA-2.
- Калькулятор SHA-256 – Калькулятор SHA-256
- Генератор хеша SHA-256 – Генератор SHA256 – Также обслуживает другие критически важные алгоритмы безопасного хеширования.
- Спецификации стандарта безопасного хеширования (SHS) — проект предлагаемого SHS (SHA-0)
- Стандарт безопасного хеширования (SHS) – предлагаемый SHS (SHA-0)
- CSRC Cryptographic Toolkit - Официальный сайт NIST по стандарту Secure Hash
- FIPS PUB 180-4: Стандарт безопасного хеширования (SHS) ( PDF , 834 КБ) — текущая версия стандарта безопасного хеширования (SHA-1, SHA-224, SHA-256, SHA-384 и SHA-512), август 2015 год
- Тестовые векторы для SHA-256/384/512 из NESSIE проекта
- Тестовые векторы для SHA-1, SHA-2 с NIST . сайта
- Проект криптографического хеширования NIST – конкурс SHA-3
- RFC 3874 : «224-битная односторонняя хеш-функция: SHA-224».
- RFC 6234 : «Алгоритмы безопасного хеширования США (SHA и HMAC и HKDF на основе SHA)»; содержит пример реализации C
- Демонстрация алгоритма SHA-256