Jump to content

ША-2

(Перенаправлено с SHA2 )
Безопасные алгоритмы хеширования
Концепции
хэш-функции , SHA , DSA
Основные стандарты
ША-0 , ША-1 , ША-2 , ША-3
ША-2
Общий
Дизайнеры Агентство национальной безопасности
Впервые опубликовано 2001 год ; 23 года назад ( 2001 )
Ряд ( ША-0 ), ША-1 , ША-2, ША-3
Сертификация FIPS PUB 180-4, КРИПТРЕК , НЕССИ
Деталь
Размеры дайджеста 224, 256, 384 или 512 бит.
Структура Конструкция Меркла – Дамгорда с функцией сжатия Дэвиса – Мейера
Раунды 64 или 80
Лучший публичный криптоанализ
Атака 2011 года преодолевает сопротивление прообраза на 57 из 80 раундов SHA-512 и на 52 из 64 раундов SHA-256. [ 1 ]

Атака псевдостолкновением против 46 снарядов SHA-256. [ 2 ]

SHA-256 и SHA-512 подвержены атакам с расширением длины . Угадывая скрытую часть состояния, атаки на расширение длины SHA-224 и SHA-384 успешны с вероятностью 2. −(256−224) = 2 −32 > 2 −224 и 2 −(512−384) = 2 −128 > 2 −384 соответственно.

SHA-2 ( Secure Hash Algorithm 2 ) — набор криптографических хеш-функций, США разработанный Агентством национальной безопасности (АНБ) и впервые опубликованный в 2001 году. [ 3 ] [ 4 ] Они построены с использованием конструкции Меркла-Дамгорда на основе функции одностороннего сжатия, построенной с использованием структуры Дэвиса-Мейера из специализированного блочного шифра.

SHA-2 включает существенные изменения по сравнению со своим предшественником SHA-1 . Семейство SHA-2 состоит из шести хэш-функций с дайджестами (хеш-значениями) длиной 224, 256, 384 или 512 бит: [ 5 ]

ША-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 запатентовано в США. [ 6 ] Соединенные Штаты выпустили патент по бесплатной лицензии. [ 5 ]

По состоянию на 2011 год лучшие публичные атаки преодолевают сопротивление прообразу в течение 52 из 64 раундов SHA-256 или 57 из 80 раундов SHA-512, а также сопротивление коллизиям в течение 46 из 64 раундов SHA-256. [ 1 ] [ 2 ]

Стандарт хеша

[ редактировать ]
Одна итерация функции сжатия семейства SHA-2. Синие компоненты выполняют следующие операции:
    
    
    
    
Побитовое вращение использует разные константы для SHA-512. Данные цифры относятся к SHA-256.
Красный это сложение по модулю 2 32 для SHA-256 или 2 64 для ША-512.

С публикацией 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. [ 4 ]

В феврале 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 привело к использованию scrypt схем доказательства работы на основе .

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 [ 2 ] 2011 Дифференциал Псевдостолкновение ША-256 46/64 2 178
33/64 2 46
Биклики для прообразов: атаки на Skein-512 и семейство SHA-2 [ 1 ] 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 г. Существует более 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

[ редактировать ]

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

Сравнение функций 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:

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

См. также

[ редактировать ]
  1. ^ Jump up to: а б с Дмитрий Ховратович, Кристиан Рехбергер и Александра Савельева (2011). «Биклик для прообразов: атаки на Skein-512 и семейство SHA-2» (PDF) . Архив электронной печати криптологии IACR . 2011 (286). Архивировано (PDF) из оригинала 15 февраля 2022 г. Проверено 15 февраля 2022 г.
  2. ^ Jump up to: а б с Марио Ламбергер и Флориан Мендель (2011). «Дифференциальная атака высшего порядка на уменьшенный SHA-256» (PDF) . Архив электронной печати криптологии IACR . 2011 (37). Архивировано (PDF) из оригинала 22 декабря 2022 г. Проверено 15 февраля 2022 г.
  3. ^ Пенард, Воутер; ван Верховен, Тим. «О семействе алгоритмов безопасного хеширования» (PDF) . Staff.science.uu.nl . Архивировано из оригинала (PDF) 30 марта 2016 г.
  4. ^ Jump up to: а б Уведомление Федерального реестра 02-21599, объявляющее об утверждении публикации FIPS 180-2. Архивировано 14 марта 2022 г. на Wayback Machine.
  5. ^ Jump up to: а б «Подробности ПИС: Соединенные Штаты Америки, представленные в заявлении об общей лицензии Агентства национальной безопасности» . Трекер данных IETF . 858. Архивировано из оригинала 16 июня 2016 г. Проверено 17 февраля 2008 г.
  6. ^ США 6829355 , Лилли, Гленн М., «Устройство и метод одностороннего криптографического хеширования», опубликовано 7 декабря 2004 г., передано Агентству национальной безопасности.  
  7. ^ «FIPS 180-2 с уведомлением об изменении 1» (PDF) . csrc.nist.gov . Архивировано (PDF) из оригинала 9 августа 2017 г. Проверено 15 февраля 2022 г.
  8. ^ Уведомление Федерального реестра E8-24743, объявляющее об одобрении публикации FIPS 180-3.
  9. ^ Jump up to: а б Данг, Куинь (24 августа 2012 г.). Рекомендации для приложений, использующих утвержденные алгоритмы хэширования (отчет). Национальный институт стандартов и технологий. Архивировано из оригинала 28 августа 2023 г. Проверено 28 августа 2023 г.
  10. ^ Jump up to: а б Баркер, Элейн; Баркер, Уильям; Берр, Уильям; Полк, В.; Смид, Майлз (10 июля 2012 г.). Рекомендации по управлению ключами, Часть 1: Общие сведения (редакция 3) (Отчет). Национальный институт стандартов и технологий. Архивировано из оригинала 28 августа 2023 г. Проверено 28 августа 2023 г.
  11. ^ «NIST.gov – Отдел компьютерной безопасности – Ресурсный центр компьютерной безопасности» . 29 декабря 2016 года. Архивировано из оригинала 9 сентября 2017 года . Проверено 15 февраля 2022 г.
  12. ^ Баркер, Элейн; Рогинский, Аллен (13 января 2011 г.). Переходы: рекомендации по переходу на использование криптографических алгоритмов и длин ключей (отчет). Национальный институт стандартов и технологий. Архивировано из оригинала 28 августа 2023 г. Проверено 28 августа 2023 г.
  13. ^ Уведомление Федерального реестра 2012-5400, объявляющее об одобрении публикации FIPS 180-4.
  14. ^ «NIST выбирает победителя конкурса алгоритмов безопасного хеширования (SHA-3)» . НИСТ . 2 октября 2012 г. Архивировано из оригинала 2 апреля 2015 г. Проверено 24 февраля 2015 г.
  15. ^ Лукас Даудт Франк; Габриэль Аугусто Гинья; Жоау Паулу Карму; Хосе А. Афонсо; Максимилиам Луппе (2024). «Индивидуальная разработка ASIC для SHA-256 с использованием инструментов с открытым исходным кодом» . Компьютеры . 13 (1): 9. doi : 10.3390/computers13010009 . hdl : 1822/89307 .
  16. ^ «Проверка подлинности образов Debian» . Архивировано из оригинала 19 февраля 2024 г. Проверено 19 февраля 2024 г.
  17. ^ Маркофф, Джон (27 января 2009 г.). «Инструмент для проверки цифровых записей даже при изменении технологий» . Нью-Йорк Таймс . ISSN   0362-4331 . Архивировано из оригинала 19 сентября 2023 г. Проверено 27 августа 2023 г.
  18. ^ Использование алгоритмов SHA-2 с RSA в DNSKEY и записях ресурсов RRSIG для DNSSEC . Октябрь 2009 г. doi : 10.17487/RFC5702 . РФК 5702 .
  19. ^ «Unix-крипта с SHA-256/512» . akkadia.org . Архивировано из оригинала 20 августа 2023 г. Проверено 27 августа 2023 г.
  20. ^ Биткойн, Излишек. «Биткойн не тратит энергию зря» . Избыток биткойнов . Архивировано из оригинала 28 мая 2022 г. Проверено 20 апреля 2020 г.
  21. ^ «Что такое SHA-256 и как он связан с биткойнами? — Mycryptopedia» . Моякриптопедия . 21 сентября 2017 г. Архивировано из оригинала 17 сентября 2018 г. Проверено 17 сентября 2018 г.
  22. ^ Отдел компьютерной безопасности, Лаборатория информационных технологий (04.01.2017). «Политика NIST в отношении хеш-функций – хеш-функции | CSRC | CSRC» . ЦКРС | НИСТ . Архивировано из оригинала 28 августа 2023 г. Проверено 27 августа 2023 г.
  23. ^ «Безопасное хеширование» . НИСТ . Архивировано из оригинала 25 июня 2011 г. Проверено 25 ноября 2010 г.
  24. ^ «Обзор пакета обновления 3 для Windows XP» (PDF) . Корпорация Майкрософт. Архивировано из оригинала (PDF) 30 мая 2008 г.
  25. ^ «Постепенный закат SHA-1» . Блог Хрома . Архивировано из оригинала 07 августа 2023 г. Проверено 27 августа 2023 г.
  26. ^ Эрик Милль. «ШАААААААААААА» . ШАААААААААААА.com . Архивировано из оригинала 01 марта 2017 г. Проверено 26 августа 2015 г.
  27. ^ «Неофициальные часто задаваемые вопросы об устаревании Chrome SHA1» . Филиппо Вальсорда . 08.04.2015. Архивировано из оригинала 28 августа 2023 г. Проверено 27 августа 2023 г.
  28. ^ «Обновление нашей дорожной карты по прекращению поддержки SHA-1 — блог разработчиков Microsoft EdgeБлог разработчиков Microsoft Edge» . blogs.windows.com . 29 апреля 2016 г. Архивировано из оригинала 28 ноября 2016 г. Проверено 28 ноября 2016 г.
  29. ^ онлайн, Хайзе (08.01.2016). «Firefox: Mozilla выключает SHA-1... а затем снова включает» . Безопасность (на немецком языке). Архивировано из оригинала 28 августа 2023 г. Проверено 27 августа 2023 г.
  30. Александр Сотиров, Марк Стивенс, Джейкоб Аппельбаум, Арьен Ленстра, Дэвид Молнар, Даг Арне Освик, Бенне де Вегер, MD5 сегодня считается вредным: создание мошеннического сертификата CA. Архивировано 23 марта 2022 г. на Wayback Machine , по состоянию на 29 марта 2009 г. .
  31. Джи Ли, Таканори Исобе и Кёдзи Шибутани, Китайская исследовательская лаборатория Sony и Sony Corporation, Преобразование атаки «встреча посередине» в атаку псевдостолкновения: применение к SHA-2. Архивировано 24 февраля 2022 г. на Wayback Machine.
  32. ^ Санадхья, Сомитра Кумар; Саркар, Палаш (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 г.
  33. ^ Санадхья, Сомитра Кумар; Саркар, Палаш (2009). «Комбинаторный анализ недавних атак на семейство SHA-2 с пониженным уровнем» . Криптография и связь . дои : 10.1007/s12095-009-0011-5 . Архивировано из оригинала 02 августа 2023 г. Проверено 12 февраля 2024 г.
  34. ^ Кадзумаро Аоки; Цзянь Го; Кристиан Матусевич; Ю Сасаки и Лэй Ван (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 .
  35. ^ Цзянь Го; Сан Линг; Кристиан Рехбергер и Хуасюн Ван (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 г.
  36. ^ Флориан Мендель; Томислав Над; Мартин Шлеффер (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 г.
  37. ^ Мария Эйхлседер, Флориан Мендель и Мартин Шлеффер (2014). «Эвристика ветвления при дифференциальном поиске коллизий с применением SHA-512» (PDF) . Архив электронной печати криптологии IACR . 2014 (302). Архивировано (PDF) из оригинала 20 января 2022 г. Проверено 15 февраля 2022 г.
  38. ^ Кристоф Добрауниг; Мария Эйхлседер и Флориан Мендель (2016). «Анализ SHA-512/224 и SHA-512/256» (PDF) . Международная ассоциация криптологических исследований . Архивировано (PDF) из оригинала 15 июля 2017 г. Проверено 15 апреля 2016 г.
  39. ^ Ли, Инсинь; Лю, Фукан; Ван, Гаоли (2024). «Новые рекорды столкновений на SHA-2» . Архив электронной печати по криптологии . Архивировано из оригинала 02 марта 2024 г. Проверено 2 марта 2024 г.
  40. ^ «Список проверки SHS» . НИСТ . 16.06.2017. Архивировано из оригинала 17 июня 2017 г.
  41. ^ «Таблица измерений» . скамейка.cr.yp.to .
  42. ^ Тао, Се; Лю, Фаньбао; Фэн, Дэнго (2013). Быстрая атака столкновений на MD5 (PDF) . Архив криптологии ePrint (Технический отчет). МАКР .
  43. ^ Стивенс, Марк ; Бурштейн, Эли ; Карпман, Пьер; Альбертини, Анж; Марков, Ярик. Первое столкновение для полного SHA-1 (PDF) (Технический отчет). Google Исследования .
  44. ^ Без усечения известно полное внутреннее состояние хеш-функции, независимо от устойчивости к коллизиям. Если выходные данные усекаются, удаленную часть состояния необходимо найти и найти, прежде чем можно будет возобновить хеш-функцию, что позволит продолжить атаку.
  45. ^ «Семейство функций губки Кечака» . Проверено 27 января 2016 г.
  46. ^ Контрольные показатели SUPERCOP Измерения хэш-функций, индексируемые машиной.
  47. ^ «СУПЕРКОП» . Архивировано из оригинала 15 февраля 2015 года . Проверено 24 февраля 2015 г.
  48. ^ « Поддерживаемые наборы шифров SSL/TLS » . Архивировано из оригинала 12 мая 2019 г. Проверено 19 октября 2019 г.
  49. ^ « Журнал изменений Mbed TLS , 7 июля 2007 г.» . Архивировано из оригинала 4 февраля 2019 года . Проверено 19 октября 2019 г.
  50. ^ «Техническое справочное руководство по процессору ARM Cortex-A53 MPCore. Расширение криптографии» . Архивировано из оригинала 01 июня 2020 г. Проверено 15 февраля 2022 г.
  51. ^ Принципы работы IBM z/Architecture, номер публикации SA22-7832. См. инструкции KIMD и KLMD в главе 7.

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 284fc639eac38d7853d056a65cfcc0be__1721489280
URL1:https://arc.ask3.ru/arc/aa/28/be/284fc639eac38d7853d056a65cfcc0be.html
Заголовок, (Title) документа по адресу, URL1:
SHA-2 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)