ША-3

Набор криптографических хэш-функций

Безопасные алгоритмы хэширования
Концепции
хэш-функции , SHA , DSA
Основные стандарты
SHA-0 , SHA-1 , SHA-2 , SHA-3
SHA-3
(Кеккак)
Общий
ДизайнерыГвидо Бертони, Джоан Демен , Микаэль Питерс и Жиль ван Аш .
Впервые опубликовано2016 ; 8 лет назад ( 2016 )
Ряд( ША-0 ), ША-1 , ША-2 , ША-3
СертификацияФИПС ПУБ 202
Деталь
Размеры дайджестапроизвольный
Структурагубчатая конструкция
Скорость12,6 cpb на типичной машине на базе x86-64 для Keccak-f[1600] плюс XOR 1024 бит, [1] что примерно соответствует SHA2-256.
Лучший публичный криптоанализ
Атака прообраза на Keccak-512 сокращена до 8 раундов, требуя 2 511,5 времени и 2 508 памяти. [2] Существуют различители с нулевой суммой для полного 24-раундового Keccak-f[1600], хотя их нельзя использовать для атаки на саму хэш-функцию [3]

SHA-3 ( Secure Hash Algorithm 3 ) — новейший [4] член семейства стандартов Secure Hash Algorithm , выпущенный NIST 5 августа 2015 года. [5] [6] [7] Несмотря на то, что SHA-3 является частью той же серии стандартов, он внутренне отличается от MD5 -подобной структуры SHA -1 и SHA-2 .

SHA-3 является подмножеством более широкого семейства криптографических примитивов Keccak ( / ˈ k ɛ æ k / или / ˈ k ɛ ɑː k / ), [8] [9] разработанного Гвидо Бертони, Джоан Дэменом , Михаэлем Петерсом и Жилем Ван Асше на основе RadioGatún . Авторы Keccak предложили дополнительные варианты использования функции, (еще) не стандартизированные NIST, включая потоковый шифр , аутентифицированную систему шифрования , схему хеширования «дерево» для более быстрого хеширования на определенных архитектурах, [10] [11] и шифры AEAD Keyak и Ketje. [12] [13]

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

По состоянию на 2022 год NIST не планирует отзывать SHA-2 или удалять его из пересмотренного стандарта Secure Hash. [15] Цель SHA-3 заключается в том, что он может быть напрямую заменен на SHA-2 в текущих приложениях при необходимости, а также в значительном повышении надежности общего инструментария алгоритма хэширования NIST. [16]

Для небольших размеров сообщений создатели алгоритмов Keccak и функций SHA-3 предлагают использовать более быструю функцию KangarooTwelve с настроенными параметрами и новым режимом древовидного хеширования без дополнительных накладных расходов.

История

Алгоритм Keccak — это работа Гвидо Бертони, Джоан Даемен (который также совместно с Винсентом Рейменом разработал шифр Rijndael ), Михаэля Петерса и Жиля Ван Аша . Он основан на более ранних разработках хэш-функций PANAMA и RadioGatún . PANAMA была разработана Дейменом и Крейгом Клэппом в 1998 году. RadioGatún, преемник PANAMA, был разработан Дейменом, Петерсом и Ван Ашем и представлен на семинаре NIST Hash в 2006 году. [17] Исходный код эталонной реализации был передан в общественное достояние через CC0 waiver . [18]

В 2006 году NIST начал организовывать конкурс хэш-функций NIST для создания нового стандарта хэширования, SHA-3. SHA-3 не предназначен для замены SHA-2 , поскольку не было публично продемонстрировано ни одной значительной атаки на SHA-2 [ нужно обновление ] . Из-за успешных атак на MD5 , SHA-0 и SHA-1 , [19] [20] NIST осознал необходимость в альтернативном, отличающемся криптографическом хэше, которым стал SHA-3.

После подготовительного периода, заявки на участие должны были быть поданы до конца 2008 года. Keccak был принят в качестве одного из 51 кандидатов. В июле 2009 года 14 алгоритмов были отобраны для второго тура. Keccak продвинулся до последнего тура в декабре 2010 года. [21]

Во время конкурса участникам разрешалось «подправлять» свои алгоритмы для решения обнаруженных проблем. Изменения, внесенные в Keccak: [22] [23]

  • Количество раундов было увеличено с 12 + ℓ до 12 + 2ℓ в целях большей безопасности.
  • Заполнение сообщения было изменено с более сложной схемы на простую схему 10 * 1, описанную ниже.
  • Ставка r была увеличена до предела безопасности, а не округлена до ближайшей степени числа 2.

2 октября 2012 года Keccak был выбран победителем конкурса. [8]

В 2014 году NIST опубликовал проект FIPS 202 «Стандарт SHA-3: хэш на основе перестановок и расширяемые выходные функции». [24] FIPS 202 был одобрен 5 августа 2015 года. [25]

5 августа 2015 года NIST объявил, что SHA-3 стал стандартом хеширования. [26]

Ослабление противоречий

В начале 2013 года NIST объявил, что они выберут другие значения для «емкости», параметра общей прочности по сравнению со скоростью, для стандарта SHA-3, по сравнению с представленными. [27] [28] Изменения вызвали некоторую суматоху.

Конкурс хэш-функций требовал хэш-функций, по крайней мере, таких же безопасных, как экземпляры SHA-2. Это означает, что d -битный выход должен иметь d /2-битную устойчивость к атакам коллизий и d -битную устойчивость к атакам прообразов , максимально достижимую для d бит выходных данных. Доказательство безопасности Keccak допускает регулируемый уровень безопасности на основе «емкости» c , обеспечивая c /2-битную устойчивость как к атакам коллизий, так и к атакам прообразов. Чтобы соответствовать первоначальным правилам конкурса, авторы Keccak предложили c = 2 d . Объявленное изменение заключалось в принятии той же d /2-битной безопасности для всех форм атак и стандартизации c = d . Это ускорило бы Keccak, позволив хэшировать дополнительные d бит входных данных на каждой итерации. Однако хэш-функции больше не были бы заменами с той же устойчивостью прообразов, что и SHA-2; он был бы разрезан пополам, что сделало бы его уязвимым для достижений в области квантовых вычислений, которые фактически разрезали бы его еще раз пополам. [29]

В сентябре 2013 года Дэниел Дж. Бернстайн предложил в списке рассылки NIST hash-forum [30] усилить безопасность до 576-битной емкости, которая изначально предлагалась как Keccak по умолчанию, в дополнение к спецификациям SHA-3, не включенным в них. [31] Это обеспечило бы по крайней мере SHA3-224 и SHA3-256 такую ​​же устойчивость к прообразу, как и их предшественники SHA-2, но SHA3-384 и SHA3-512 имели бы значительно меньшую устойчивость к прообразу, чем их предшественники SHA-2. В конце сентября команда Keccak ответила, заявив, что они предложили 128-битную безопасность, установив c = 256 в качестве опции уже в своем предложении SHA-3. [32] Хотя, по их мнению, уменьшенная емкость была оправдана, в свете отрицательного ответа они предложили увеличить емкость до c = 512 бит для всех случаев. Это было бы так же, как и любой предыдущий стандарт до уровня безопасности 256 бит, обеспечивая при этом разумную эффективность, [33] но не стойкость к 384-/512-битному прообразу, предлагаемую SHA2-384 и SHA2-512. Авторы заявили, что «заявлять или полагаться на уровни безопасности выше 256 бит бессмысленно».

В начале октября 2013 года Брюс Шнайер раскритиковал решение NIST на основании его возможных пагубных последствий для принятия алгоритма, заявив:

В воздухе витает слишком много недоверия. NIST рискует опубликовать алгоритм, которому никто не будет доверять и который никто (кроме вынужденных) не будет использовать. [34]

Позднее он отказался от своего предыдущего заявления, заявив:

Я оговорился, когда написал, что NIST внес «внутренние изменения» в алгоритм. Это было неряшливо с моей стороны. Перестановка Keccak осталась неизменной. NIST предложил уменьшить емкость хэш-функции во имя производительности. Одной из приятных особенностей Keccak является то, что он легко настраивается. [34]

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

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

Возникла некоторая путаница относительно того, что в Keccak могли быть внесены внутренние изменения, которые были прояснены первоначальной командой, заявив, что предложение NIST для SHA-3 является подмножеством семейства Keccak, для которого можно генерировать тестовые векторы, используя их справочный код, представленный на конкурс, и что это предложение стало результатом серии обсуждений между ними и командой хэширования NIST. [36]

В ответ на разногласия в ноябре 2013 года Джон Келси из NIST предложил вернуться к первоначальному предложению c = 2 d для всех случаев замены SHA-2. [37] Возврат был подтвержден в последующих черновиках [38] и в окончательном выпуске. [5]

Дизайн

Иллюстрация строения губки
Конструкция губки для хэш-функций. P i — входные данные, Z i — хэшированные выходные данные. Неиспользованная «емкость» c должна быть в два раза больше желаемой устойчивости к коллизиям или атакам на прообразы .

SHA-3 использует конструкцию губки [14] , в которой данные «впитываются» в губку, затем результат «выдавливается». В фазе поглощения блоки сообщений подвергаются операции XOR в подмножество состояния, которое затем преобразуется как целое с помощью функции перестановки . (Вызов перестановки может сбивать с толку. Технически это перестановка пространства состояний, то есть перестановка набора с элементами, но она делает больше, чем просто перестановку битов вектора состояния. [ требуется цитата ] ) В фазе «выдавливания» выходные блоки считываются из того же подмножества состояния, чередуясь с функцией преобразования состояния . Размер части состояния, которая записывается и считывается, называется «скоростью» (обозначается ), а размер части, которая не затронута вводом/выводом, называется «емкостью» (обозначается ). Емкость определяет безопасность схемы. Максимальный уровень безопасности составляет половину емкости. ф {\displaystyle f} ф {\displaystyle f} 2 1600 4.4 10 481 {\displaystyle 2^{1600}\приблизительно 4,4\cdot 10^{481}} ф {\displaystyle f} г {\displaystyle r} с {\displaystyle с}

При наличии входной битовой строки , функции заполнения , функции перестановки , которая работает с битовыми блоками ширины , скорости и выходной длины , мы имеем емкость и конструкцию губки , дающую битовую строку длины , которая работает следующим образом: [6] : 18  Н {\displaystyle N} п а г {\displaystyle панель} ф {\displaystyle f} б {\displaystyle б} г {\displaystyle r} г {\displaystyle д} с = б г {\displaystyle c=br} З = губка [ ф , п а г , г ] ( Н , г ) {\displaystyle Z={\text{губка}}[f,pad,r](N,d)} З {\displaystyle Z} г {\displaystyle д}

  • дополнить вход N с помощью функции pad, получив в результате дополненную битовую строку P с длиной, делящейся на (такой, что является целым числом) г {\displaystyle r} н = лен ( П ) / г {\displaystyle n={\text{len}}(P)/r}
  • разбить P на n последовательных r -битных частей P 0 , ..., P n −1
  • инициализируем состояние S строкой из b нулевых битов
  • поглощаем входные данные в состояние: для каждого блока P i :
    • расширить P i в конце строкой из c нулевых битов, получив в результате строку длиной b
    • XOR, что с S
    • применяем перестановку блоков f к результату, получая новое состояние S
  • инициализируем Z как пустую строку
  • в то время как длина Z меньше d :
    • добавить первые r битов S к Z
    • если Z все еще меньше d бит, применить f к S , получив новое состояние S
  • усечение Z до d бит

Тот факт, что внутреннее состояние S содержит c дополнительных бит информации в дополнение к тому, что выводится в Z, предотвращает атаки расширения длины , которым подвержены SHA-2, SHA-1, MD5 и другие хэши, основанные на конструкции Меркла–Дамгарда .

В SHA-3 состояние S состоит из массива 5 × 5 w -битных слов (с w = 64), b = 5 × 5 × w = 5 × 5 × 64 = 1600 бит всего. Keccak также определен для меньших размеров слов степени 2 w до 1 бита (общее состояние 25 бит). Малые размеры состояний могут использоваться для тестирования криптоаналитических атак, а промежуточные размеры состояний (от w = 8 200 бит до w = 32 800 бит) могут использоваться в практических, легких приложениях. [12] [13]

Для экземпляров SHA3-224, SHA3-256, SHA3-384 и SHA3-512 r больше d , поэтому нет необходимости в дополнительных перестановках блоков в фазе сжатия; ведущие d биты состояния являются желаемым хешем. Однако SHAKE128 и SHAKE256 допускают произвольную длину выходных данных, что полезно в таких приложениях, как оптимальное асимметричное шифрование padding .

Прокладка

Чтобы гарантировать, что сообщение можно равномерно разделить на r -битные блоки, требуется заполнение. SHA-3 использует шаблон 10…01 в своей функции заполнения: бит 1, за которым следует ноль или более битов 0 (максимум r − 1 ) и последний бит 1.

Максимум r − 1 нулевых битов достигается, когда последний блок сообщения имеет длину r − 1 бит. Затем после начального 1 бита добавляется еще один блок, содержащий r − 1 нулевых битов перед последним 1 битом.

Два бита 1 будут добавлены, даже если длина сообщения уже делится на r . [6] : 5.1  В этом случае к сообщению добавляется еще один блок, содержащий бит 1, за которым следует блок из r − 2 нулевых битов и еще один бит 1. Это необходимо для того, чтобы сообщение с длиной, делящейся на r, заканчивающееся чем-то, что выглядит как заполнение, не создавало тот же хэш, что и сообщение с удаленными этими битами.

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

Положение последнего бита 1 указывает, какая скорость r использовалась (многоскоростное заполнение), что требуется для того, чтобы доказательство безопасности работало для разных вариантов хеша. Без него разные варианты хеша одного и того же короткого сообщения были бы одинаковыми вплоть до усечения.

Перестановка блоков

Блочное преобразование f , которое для SHA-3 равно Keccak-f[1600], представляет собой перестановку, использующую операции XOR , AND и NOT , и разработано для простой реализации как в программном обеспечении, так и в оборудовании.

Он определен для любого размера слова степени двойки , w = 2 бит. Основная подача SHA-3 использует 64-битные слова, = 6 .

Состояние можно рассматривать как массив битов 5 × 5 × w . Пусть a [ i ][  j ][ k ] будет битом (5 i + j ) × w + k входа, используя соглашение о нумерации битов little-endian и индексацию по строкам . То есть i выбирает строку, j — столбец, а k — бит.

Индексная арифметика выполняется по модулю 5 для первых двух измерений и по модулю w для третьего.

Базовая функция перестановки блоков состоит из 12 + 2 раундов по пять шагов:

θ (тета)
Вычислите четность каждого из 5 w (320, когда w = 64 ) 5-битных столбцов и примените исключающее ИЛИ к двум соседним столбцам в регулярном шаблоне. Если быть точным, a [ i ][  j ][ k ] ← a [ i ][  j ][ k ] ⊕ parity(a[0...4][ j -1][ k ]) ⊕ parity(a[0...4][ j +1][ k −1])
ρ (ро)
Побитово вращаем каждое из 25 слов на разное треугольное число 0, 1, 3, 6, 10, 15, .... Если быть точным, a [0][0] не вращается, и для всех 0 ≤ t < 24 , a [ i ][  j ][ k ] ← a [ i ][  j ][ k −( t +1)( t +2)/2] , где . ( i j ) = ( 3 2 1 0 ) t ( 0 1 ) {\displaystyle {\begin{pmatrix}i\\j\end{pmatrix}}={\begin{pmatrix}3&2\\1&0\end{pmatrix}}^{t}{\begin{pmatrix}0\\1\end{pmatrix}}}
π (пи)
Переставьте 25 слов в фиксированном порядке. a [3 i +2 j ][ i ] ← a [  i ][ j ] .
χ (хи)
Побитовое объединение по строкам с использованием xx ⊕ (¬ y & z ) . Если быть точным, a [ i ][  j ][ k ] ← a [ i ][  j ][ k ] ⊕ (¬ a [ i ][  j + 1 ][ k ] & a [ i ][  j + 2 ][ k ]) . Это единственная нелинейная операция в SHA-3.
ι (йота)
Исключающее ИЛИ раундовой константы в одно слово состояния. Если быть точным, в раунде n для 0 ≤ mℓ [ 0 ] [0][2 m −1] подвергается XOR с битом m + 7 n последовательности LFSR степени 8. Это нарушает симметрию, сохраняемую другими шагами.

Скорость

Скорость хеширования SHA-3 длинных сообщений определяется вычислением f = Keccak-f[1600] и XORing S с расширенным P i , операцией на b = 1600 бит. Однако, поскольку последние c бит расширенного P i в любом случае равны 0, а XOR с 0 является NOP, достаточно выполнять операции XOR только для r бит ( r = 1600 − 2 × 224 = 1152 бита для SHA3-224, 1088 бит для SHA3-256, 832 бита для SHA3-384 и 576 бит для SHA3-512). Чем ниже r (и, наоборот, чем выше c = br = 1600 − r ), тем менее эффективным, но более безопасным становится хеширование, поскольку меньше битов сообщения могут быть подвергнуты операции XOR в состояние (быстрая операция) перед каждым применением вычислительно затратного f . Авторы сообщают о следующих скоростях для программных реализаций Keccak-f[1600] плюс XOR 1024 бит, [1] что примерно соответствует SHA3-256:

  • 57,4 cpb на IA-32, Intel Pentium 3 [39]
  • 41 cpb на IA-32+MMX, Intel Pentium 3
  • 20 cpb на IA-32+SSE, Intel Core 2 Duo или AMD Athlon 64
  • 12,6 cpb на типичной машине на базе x86-64
  • 6–7 cpb на IA-64 [1]

Для точного SHA3-256 на x86-64 Бернстайн измеряет 11,7–12,25 cpb в зависимости от ЦП. [40] : 7  SHA-3 критиковали за то, что он медленный на архитектурах наборов инструкций (ЦП), которые не имеют инструкций, специально предназначенных для вычисления функций Keccak быстрее – SHA2-512 более чем в два раза быстрее, чем SHA3-512, а SHA-1 более чем в три раза быстрее на процессоре Intel Skylake с тактовой частотой 3,2 ГГц. [41] Авторы отреагировали на эту критику, предложив использовать SHAKE128 и SHAKE256 вместо SHA3-256 и SHA3-512, за счет снижения сопротивления прообразу вдвое (но при сохранении сопротивления коллизии). При этом производительность находится на одном уровне с SHA2-256 и SHA2-512.

Однако в аппаратных реализациях SHA-3 заметно быстрее всех остальных финалистов, [42] а также быстрее, чем SHA-2 и SHA-1. [41]

По состоянию на 2018 год архитектура ARMv8 [43] от ARM включает специальные инструкции, которые позволяют алгоритмам Keccak выполняться быстрее, а архитектура z/Architecture [44] от IBM включает полную реализацию SHA-3 и SHAKE в одной инструкции. Также были предложения по расширению для RISC-V для добавления инструкций, специфичных для Keccak. [45]

Экземпляры

Стандарт NIST определяет следующие случаи для сообщения M и длины вывода d : [6] : 20, 23 

Пример
Размер выходного файла d
Скорость r
= размер блока
Емкость сОпределениеСила безопасности в битах сопротивления против
СтолкновениеПрообраз2-й прообраз
SHA3-224( М )2241152448Кеччак[448]( М || 01, 224)112224224
SHA3-256( М )2561088512Кеччак[512]( М || 01, 256)128256256
SHA3-384( М )384832768Кеччак[768]( М || 01, 384)192384384
SHA3-512( М )5125761024Кеччак[1024]( М || 01, 512)256512512
SHAKE128( М , д )г1344256Кеччак[256]( М || 1111, д )мин( д /2,128)≥min( д ,128)мин( д ,128)
SHAKE256( М , д )г1088512Кеччак[512]( М || 1111, д )мин( д /2,256)≥min( д ,256)мин( д ,256)

Со следующими определениями

  • Keccak[ c ]( N , d ) = губка[Keccak-f[1600], pad10 * 1, r ]( N , d ) [6] : 20 
  • Кеччак-ф[1600] = Кеччак-п[1600, 24] [6] : 17 
  • c - это емкость
  • r — это скорость = 1600 − c
  • N — входная битовая строка

Экземпляры SHA-3 являются полностью готовыми заменами SHA-2 и призваны иметь идентичные свойства безопасности.

SHAKE будет генерировать столько битов из своей губки, сколько запрошено, таким образом, являясь расширяемыми выходными функциями (XOF). Например, SHAKE128(M, 256) может использоваться как хэш-функция с 256-символьным битовым потоком с 128-битной степенью безопасности. Произвольно большие длины могут использоваться как генераторы псевдослучайных чисел. В качестве альтернативы, SHAKE256(M, 128) может использоваться как хэш-функция с 128-битной длиной и 128-битной устойчивостью. [6]

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

СуффиксЗначение
...0зарезервировано для будущего использования
01ША-3
...11RawSHAKE
1111ВСТРЯХНУТЬ

Дополнительные случаи

В декабре 2016 года NIST опубликовал новый документ NIST SP.800-185 [47] , описывающий дополнительные функции, полученные из SHA-3:

ПримерОписание
cSHAKE128( X , L , N , S )Версия SHAKE, поддерживающая явное разделение доменов с помощью параметров настройки.
cSHAKE256( X , L , N , S )
KMAC128( К , Х , Л , С )Ключевая хэш-функция на основе Keccak. Может также использоваться без ключа как обычная хэш-функция.
KMAC256( К , Х , Л , С )
KMACXOF128( К , Х , Л , С )
KMACXOF256( К , Х , Л , С )
TupleHash128( X , L , S )Функция хеширования кортежей строк. Выход этой функции зависит как от содержимого, так и от последовательности входных строк.
TupleHash256( X , L , S )
TupleHashXOF128( X , L , S )
TupleHashXOF256( X , L , S )
Параллельный хэш128( X , B , L , S )Функция, разработанная для использования параллелизма в современных процессорах для более быстрого хеширования. В отличие от KangarooTwelve, не использует Keccak с сокращенным раундом.
ParallelHash256( X , B , L , S )
ПараллельныйХэшXOF128( X , B , L , S )
ParallelHashXOF256( X , B , L , S )

• X — основная входная битовая строка. Может быть любой длины, включая нулевую.

• L — целое число, представляющее запрошенную длину выходных данных в битах.

• N — это строка битов имени функции, используемая NIST для определения функций на основе cSHAKE. Когда не требуется никакой другой функции, кроме cSHAKE, N устанавливается в пустую строку.

• S — это строка бита настройки. Пользователь выбирает эту строку, чтобы определить вариант функции. Если настройка не требуется, S устанавливается в пустую строку.

• K — строка битов ключа любой длины, включая ноль.

• B — размер блока в байтах для параллельного хеширования. Это может быть любое целое число, такое, что 0 < B < 2 2040 .

Дальнейшие события

КенгуруДвенадцать

КенгуруДвенадцать
Общий
ДизайнерыГвидо Бертони, Жоан Дэмен , Михаэль Питерс, Жиль Ван Аш , Ронни Ван Кир, Бенуа Вигье
Впервые опубликовано10 августа 2016 г. ; 8 лет назад (2016-08-10)
Получено изКеччак
Деталь
Размеры дайджестапроизвольный
Структурастроительство губки и перемешивание дерева с прыжками кенгуру
Раунды12
Скорость0,51 cpb на SkylakeX с AVX-512 [48]
Лучший публичный криптоанализ
То же, что и у Кечкака

В 2016 году та же команда, которая создала функции SHA-3 и алгоритм Keccak, представила более быстрые альтернативы с сокращенными раундами (сокращенными до 12 и 14 раундов с 24 в SHA-3), которые могут использовать доступность параллельного выполнения благодаря использованию древовидного хеширования : KangarooTwelve и MarsupilamiFourteen. [49]

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

Сокращенное количество раундов оправдано огромными криптоаналитическими усилиями, сосредоточенными на Keccak, которые не дали практических атак на что-либо близкое к двенадцати раундовому Keccak. Эти более скоростные алгоритмы не являются частью SHA-3 (так как они являются более поздней разработкой), и, таким образом, не соответствуют FIPS; но поскольку они используют ту же перестановку Keccak, они безопасны до тех пор, пока нет атак на SHA-3, сокращенный до 12 раундов. [49]

KangarooTwelve — это более производительная версия Keccak с сокращенным числом раундов (с 24 до 12), которая, как утверждается, имеет 128 бит безопасности [50] при производительности до 0,55 циклов на байт на процессоре Skylake . [51] Этот алгоритм является проектом IETF RFC . [52]

MarsupilamiFourteen, небольшая вариация KangarooTwelve, использует 14 раундов перестановки Keccak и заявляет о 256 битах безопасности. Обратите внимание, что 256-битная безопасность не более полезна на практике, чем 128-битная безопасность, но может быть необходима по некоторым стандартам. [50] 128 бит уже достаточно для отражения атак методом подбора на текущем оборудовании, поэтому наличие 256-битной безопасности не добавляет практической ценности, если только пользователь не беспокоится о значительном улучшении скорости классических компьютеров. О сопротивлении квантовым компьютерам см. ниже.

KangarooTwelve и MarsupilamiFourteen являются функциями Extendable-Output, похожими на SHAKE, поэтому они генерируют тесно связанный вывод для общего сообщения с разной длиной вывода (более длинный вывод является расширением более короткого вывода). Такое свойство не проявляется в хэш-функциях, таких как SHA-3 или ParallelHash (за исключением вариантов XOF). [6]

Строительство Фарфалле

В 2016 году команда Keccak выпустила другую конструкцию, названную конструкцией Farfalle, и Kravatte, экземпляр Farfalle, использующий перестановку Keccak-p, [53], а также два аутентифицированных алгоритма шифрования Kravatte-SANE и Kravatte-SANSE [54].

Сакура дерево хэширование

RawSHAKE является основой для кодирования Sakura для хеширования деревьев, которое пока не стандартизировано. Sakura использует суффикс 1111 для отдельных узлов, эквивалентный SHAKE, и другие сгенерированные суффиксы в зависимости от формы дерева. [46] : 16 

Защита от квантовых атак

Существует общий результат ( алгоритм Гровера ), что квантовые компьютеры могут выполнить структурированную атаку прообраза за , в то время как классическая атака методом грубой силы требует 2 d . Структурированная атака прообраза подразумевает вторую атаку прообраза [29] и, таким образом, атаку коллизии . Квантовый компьютер также может выполнить атаку дня рождения , тем самым сломав устойчивость к коллизиям, в [55] (хотя это оспаривается). [56] Отмечая, что максимальная прочность может быть , это дает следующие верхние [57] границы квантовой безопасности SHA-3: 2 d = 2 d / 2 {\displaystyle {\sqrt {2^{d}}}=2^{d/2}} 2 d 3 = 2 d / 3 {\displaystyle {\sqrt[{3}]{2^{d}}}=2^{d/3}} c / 2 {\displaystyle c/2}

ПримерСила безопасности в битах сопротивления против
Столкновение
(Брассар и др.)
Столкновение
(Бернштейн)
Прообраз2-й прообраз
SHA3-224( М )74 23112112112
SHA3-256( М )85 13128128128
SHA3-384( М )128192192192
SHA3-512( М )170 23256256256
SHAKE128( М , д )мин( д /3,128)мин( д /2,128)≥min( д /2,128)мин( д /2,128)
SHAKE256( М , д )мин( д /3,256)мин( д /2,256)≥min( д /2,256)мин( д /2,256)

Было показано, что конструкция Меркла–Дамгарда , используемая SHA-2, является коллапсирующей и, как следствие, устойчивой к квантовым столкновениям [58], но для конструкции губки, используемой SHA-3, авторы приводят доказательства только для случая, когда блочная функция f не является эффективно обратимой; однако Keccak-f[1600] эффективно обратима, и поэтому их доказательство неприменимо. [59] [ оригинальное исследование ]

Примеры вариантов SHA-3

Следующие значения хеша взяты из NIST.gov: [60]

SHA3-224("")6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7SHA3-256("")a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434aSHA3-384("")0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004SHA3-512("")a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26SHAKE128("", 256)7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26SHAKE256("", 512)46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fd75dc4ddd8c0f200cb05019d67b592f6fc821c49479ab48640292eacb3b7c4be

Изменение одного бита приводит к изменению каждого бита на выходе с вероятностью 50%, демонстрируя лавинный эффект :

SHAKE128("Быстрая коричневая лиса перепрыгивает через ленивую собаку", 256)f4202e3c5852f9182a0430fd8144f0a74b95e7417ecae17db0f8cfeed0e3e66eSHAKE128("Быстрая коричневая лиса прыгает через ленивую до ф ", 256)853f4538be0db9621a6cea659a06c1107b1f83f02b13d18297bd39d7411cf10c

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

В таблице ниже внутреннее состояние означает количество бит, которые переносятся в следующий блок.

Сравнение функций SHA
Алгоритм и вариантРазмер выходных данных
(бит)

Размер внутреннего состояния
(бит)
Размер блока
(бит)
РаундыОперацииЗащита от атак столкновений
(бит)
Защита от атак с удлинением длины
(бит)
Производительность на Skylake (медианная cpb ) [61]Впервые опубликовано
Длинные сообщения8 байт
MD5 (в качестве справочного материала)128128
(4 × 32)
5124
(16 операций в каждом раунде)
И, Исключающее или, Или, Вращение, Сложение (mod 2 32 )≤ 18
(найдены столкновения) [62]
04.9955.001992
ША-0160160
(5 × 32)
51280И, Исключающее или, Или, Вращение, Сложение (mod 2 32 )< 34
(найдены столкновения)
0≈ ША-1≈ ША-11993
ША-1< 63
(найдены столкновения) [63]
3.4752.001995
ША-2ША-224
ША-256
224
256
256
(8 × 32)
51264И, Исключающее, Или,
Рот, Шр, Добавить (мод 2 32 )
112
128
32
0
7.62
7.63
84,50
85,25
2004
2001
ША-384384512
(8 × 64)
102480И, Исключающее, Или,
Вращение, Шр, Сложение (мод 2 64 )
1921285.12135,752001
ША-5125122560 [64]5.06135.502001
ША-512/224
ША-512/256
224
256
112
128
288
256
≈ SHA-384≈ SHA-3842012
ША-3SHA3-224
SHA3-256
SHA3-384
SHA3-512
224
256
384
512
1600
(5 × 5 × 64)
1152
1088
832
576
24 [65]И, Xor, Rot, Not112
128
192
256
448
512
768
1024
8,12
8,59
11,06
15,88
154,25
155,50
164,00
164,00
2015
ВСТРЯХНУТЬ128
ВСТРЯХНУТЬ256
d (произвольный)
d (произвольный)
1344
1088
мин( д /2, 128)
мин( д /2, 256)
256
512
7.08
8.59
155,25
155,50

Оптимизированная реализация с использованием AVX-512VL (т. е. из OpenSSL , работающего на процессорах Skylake-X ) SHA3-256 достигает около 6,4 циклов на байт для больших сообщений, [66] и около 7,8 циклов на байт при использовании AVX2 на процессорах Skylake . [67] Производительность на других процессорах x86, Power и ARM в зависимости от используемых инструкций и конкретной модели процессора варьируется от около 8 до 15 циклов на байт, [68] [69] [70] с некоторыми старыми процессорами x86 до 25–40 циклов на байт. [71]

Реализации

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

Аппаратное ускорение

Шестиядерные ядра процессора SoC Apple A13 ARMv8 поддерживают [72] ускорение SHA-3 (и SHA-512) с использованием специализированных инструкций (EOR3, RAX1, XAR, BCAX) из набора крипторасширений ARMv8.2-SHA. [73]

Некоторые библиотеки программного обеспечения используют возможности векторизации ЦП для ускорения использования SHA-3. Например, Crypto++ может использовать SSE2 на x86 для ускорения SHA3, [74] а OpenSSL может использовать MMX , AVX-512 или AVX-512VL на многих системах x86. [75] Также ЦП POWER8 реализуют 2x64-битный поворот вектора, определенный в PowerISA 2.07, что может ускорить реализации SHA-3. [76] Большинство реализаций для ARM не используют векторные инструкции Neon , поскольку скалярный код быстрее. Однако реализации ARM можно ускорить с помощью векторных инструкций SVE и SVE2; они доступны , например, в ЦП Fujitsu A64FX . [77]

IBM z/Architecture поддерживает SHA-3 с 2017 года как часть расширения Message-Security-Assist Extension 6. [78] Процессоры поддерживают полную реализацию всех алгоритмов SHA-3 и SHAKE с помощью инструкций KIMD и KLMD, используя аппаратный вспомогательный механизм, встроенный в каждое ядро.

Использование в протоколах

Смотрите также

  • Ethash – еще один хэш на основе Keccak

Ссылки

  1. ^ abc Бертони, Гвидо; Дэмен, Джоан ; Питерс, Майкл; ван Аш, Жиль (29 мая 2012 г.). «Обзор реализации Keccak» (PDF) . п. 25 . Проверено 27 марта 2023 г.
  2. ^ Morawiecki, Paweł; Pieprzyk, Josef; Srebrny, Marian (2013). "Rotational Cryptanalysis of Round-Reduced Keccak" (PDF) . В Moriai, S (ред.). Fast Software Encryption . Fast Software Encryption Lecture Notes in Computer Science. Vol. 8424. pp. 241–262. doi :10.1007/978-3-662-43933-3_13. ISBN 978-3-662-43932-6. Архивировано (PDF) из оригинала 8 января 2013 г. . Получено 8 февраля 2019 г. .
  3. ^ Бертони, Гвидо; Дэмен, Джоан; Питерс, Майкл; ван Аш, Джайлз (14 января 2011 г.). «Представление Keccak SHA-3» (PDF) . keccak.team . Архивировано (PDF) из оригинала 19 августа 2011 г. Проверено 27 марта 2023 г.
  4. Computer Security Division, Information Technology Laboratory (4 января 2017 г.). "Хэш-функции | CSRC | CSRC". CSRC | NIST . Получено 19 апреля 2024 г. .
  5. ^ ab "Hash Functions". NIST . 22 июня 2020 г. Получено 17 февраля 2021 г.
  6. ^ abcdefghi Лаборатория информационных технологий (август 2015 г.). Стандарт SHA-3: хэш на основе перестановок и расширяемые выходные функции (PDF) . Национальный институт стандартов и технологий . doi :10.6028/NIST.FIPS.202. S2CID  64734386. Публикация федерального стандарта обработки информации 202 . Получено 29 февраля 2020 г. .
  7. ^ Дворкин, Моррис Дж. (4 августа 2015 г.). «Стандарт SHA-3: хэш на основе перестановок и расширяемые выходные функции». Федеральные стандарты обработки информации (NIST FIPS).
  8. ^ ab "NIST выбирает победителя конкурса Secure Hash Algorithm (SHA-3)". NIST . 2 октября 2012 г. . Получено 2 октября 2012 г. .
  9. ^ Круз, Хосе RC (7 мая 2013 г.). "Keccak: Новый стандарт шифрования SHA-3". Доктор Доббс .
  10. ^ Бертони, Гвидо; Дэмен, Джоан; Питерс, Майкл; Ван Аш, Жиль. «Сводка технических характеристик Keccak» . Проверено 27 марта 2023 г.
  11. ^ Чанг, Шу-джен; Перлнер, Рэй; Берр, Уильям Э.; Сонмез Туран, Мельтем; Келси, Джон М.; Пол, Сурадьюти; Бэшем, Лоуренс Э. (ноябрь 2012 г.). Отчет третьего раунда конкурса алгоритмов криптографического хеширования SHA-3 (PDF) . doi : 10.6028/NIST.IR.7896 . Проверено 29 февраля 2020 г.Разделы 5.1.2.1 (упоминание «режима дерева»), 6.2 («другие функции», упоминание аутентифицированного шифрования) и 7 (упоминание о том, что «дополнения» могут быть стандартизированы в будущем).
  12. ^ аб Бертони, Гвидо; Дэмен, Джоан; Питерс, Майкл; Ван Аш, Жиль; Ван Кир, Ронни (13 марта 2014 г.). «Представление CAESAR: Ketje v1» (PDF) . Проверено 29 февраля 2020 г.
  13. ^ аб Бертони, Гвидо; Дэмен, Джоан; Питерс, Майкл; Ван Аш, Жиль; Ван Кир, Ронни (13 марта 2014 г.). «Представление CAESAR: Keyak v1» (PDF) . Проверено 29 февраля 2020 г.
  14. ^ аб Бертони, Гвидо; Дэмен, Джоан; Питерс, Майкл; ван Аш, Джайлз. «Губка и дуплексные конструкции» . Проверено 27 марта 2023 г.
  15. ^ Отдел компьютерной безопасности, Лаборатория информационных технологий (14 декабря 2022 г.). "NIST переходит от SHA-1 для всех приложений | CSRC". CSRC | NIST . Получено 9 октября 2024 г. .
  16. ^ "Объявление о запросе на выдвижение кандидатур на новый алгоритм криптографического хэширования (SHA-3) [Федеральный реестр США, том 72, № 212)]" (PDF) . 2 ноября 2007 г. Архивировано (PDF) из оригинала 31 марта 2011 г. Получено 18 июля 2017 г.
  17. ^ Бертони, Гвидо; Дэмен, Джоан; Питерс, Майкл; Ван Аш, Жиль. «Дорога из Панамы в Кечак через РадиоГатун» (PDF) . Проверено 27 марта 2023 г.
  18. ^ KeccakReferenceAndOptimized-3.2.zip mainReference.c "Функция губки Keccak, разработанная Гвидо Бертони, Джоан Дэменом, Михаэлем Петерсом и Жилем Ван Асше. Для получения дополнительной информации, отзывов или вопросов, пожалуйста, посетите наш веб-сайт: http://keccak.noekeon.org/Implementation [ постоянная неработающая ссылка ] дизайнерами, настоящим обозначаемыми как "реализатор". В той степени, в которой это возможно в соответствии с законом, реализатор отказался от всех авторских и смежных или смежных прав на исходный код в этом файле. https://creativecommons.org/publicdomain/zero/1.0/"
  19. ^ Стивенс, Марк; Бурштейн, Эли; Карпман, Пьер; Альбертини, Анж; Марков, Ярик. "Первое столкновение для полного SHA-1" (PDF) . Получено 23 февраля 2017 г.
  20. ^ Леран, Гаэтан; Пейрин, Томас. «SHA-1 — это руины» . Проверено 8 января 2020 г.
  21. ^ "Отдел компьютерной безопасности NIST – Конкурс криптографических алгоритмов хэширования SHA-3, ноябрь 2007 г. – октябрь 2012 г.". 4 января 2017 г.
  22. ^ "Изменения параметров Keccak для раунда 2". Keccak Team . 22 сентября 2009 г. Архивировано из оригинала 13 ноября 2017 г. Получено 29 февраля 2020 г.
  23. ^ "Упрощение правила заполнения Keccak для раунда 3". Keccak Team . 17 января 2011 г. Получено 27 марта 2023 г.
  24. ^ "Стандартизация SHA-3". NIST . Получено 16 апреля 2015 г.
  25. ^ Национальный институт стандартов и технологий (5 августа 2015 г.). "Федеральные стандарты обработки информации: хэш на основе перестановок и расширяемые выходные функции и т. д." . Получено 5 августа 2015 г.
  26. ^ «Объявление об утверждении Федерального стандарта обработки информации (FIPS) 202, стандарта SHA-3: хэш на основе перестановок и расширяемых выходных функций, а также пересмотр пункта о применимости FIPS 180-4, стандарта безопасного хэширования». 5 августа 2015 г.
  27. ^ Келси, Джон. «SHA3, где мы были, куда мы идем» (PDF) . Конференция RSA 2013.
  28. ^ Келси, Джон. «SHA3, прошлое, настоящее и будущее». CHES 2013.
  29. ^ ab "Аннотация" (PDF) . cr.yp.to .
  30. ^ "Рассылка форума NIST hash". 4 января 2017 г.
  31. ^ "The Keccak SHA-3 representation" (PDF) . 14 января 2011 г. . Получено 27 марта 2023 г. .
  32. ^ "О 128-битной безопасности". 2 октября 2013 г. Получено 27 марта 2023 г.
  33. ^ "Конкретное предложение". 2 октября 2013 г. Получено 27 марта 2023 г.
  34. ^ ab «Шнайер о безопасности: будет ли Keccak = SHA-3?».
  35. ^ «LShift: Почему я поддерживаю правительство США, делающее стандарт криптографии слабее».
  36. ^ «Да, это Кеччак!». 4 октября 2013 г. Получено 27 марта 2023 г.
  37. ^ «Движение вперед с SHA-3» (PDF) .
  38. ^ Отдел компьютерной безопасности NIST (CSD). "Стандарт SHA-3: хэш на основе перестановок и расширяемые функции вывода" (PDF) . NIST.
  39. ^ "около 41 цикла/байт [...] представляет собой 40% ускорение по сравнению с реализацией, использующей только 32-битные инструкции". По формуле получаем 1 x × 1.40 = 1 41 {\displaystyle {\frac {1}{x}}\times 1.40={\frac {1}{41}}} x = 57.4 {\displaystyle x=57.4}
  40. ^ Бернстайн, Дэниел Дж. (4 января 2012 г.). «Ошибки оптимизации в программном обеспечении SHA-3» (PDF) . cr.yp.to . Получено 29 февраля 2020 г. .
  41. ^ ab "SHA-3 медленный?". 12 июня 2017 г. Получено 27 марта 2023 г.
  42. ^ Го, Сюй; Хуан, Синан; Нажандали, Лейла; Шаумон, Патрик (август 2010 г.), «Справедливая и всесторонняя оценка производительности 14 реализаций второго раунда SHA-3 ASIC» (PDF) , 2-я конференция кандидатов на SHA-3 NIST : 12 , получено 18 февраля 2011 г.«Keccak» уступает только «Luffa», которая не вышла в финальный раунд.
  43. ^ Корпорация ARM, Справочное руководство по архитектуре ARMv8, для профиля архитектуры ARMv8-A, документ ARM DDI 0487C.a (ID121917), https://www.arm.com
  44. ^ http://publibfp.dhe.ibm.com/epubs/pdf/dz9zr011.pdf стр. 672
  45. ^ Рават, Хемендра; Шаумонт, Патрик (2017). «Расширения набора векторных инструкций для эффективного вычисления <sc>Keccak</sc>». IEEE Transactions on Computers . 66 (10): 1778–1789. doi :10.1109/TC.2017.2700795.
  46. ^ ab "Sakura: гибкое кодирование для хеширования деревьев" (PDF) . Keccak Team . 2014 . Получено 29 февраля 2020 .
  47. ^ Производные функции SHA-3: cSHAKE, KMAC, TupleHash и ParallelHash Общественное достояниеВ этой статье используется текст из этого источника, который находится в открытом доступе .
  48. ^ "Показатели производительности программного обеспечения".
  49. ^ ab "Команда Keccak: KangarooTwelve". Команда Keccak.
  50. ^ ab "KangarooTwelve: быстрое хеширование на основе Keccak-p" (PDF) . Международная ассоциация криптографических исследований . 2016.
  51. ^ "Слайды KangarooTwelve, представленные на ACNS 2018" (PDF) . Команда Keccak.
  52. ^ "draft-irtf-cfrg-kangarootwelve-00 – KangarooTwelve". Ietf Datatracker . IETF . Получено 17 января 2020 г. .
  53. ^ Бертони, Гвидо; Дэмен, Джоан; Хофферт, Сет; Питерс, Майкл; Ван Аш, Жиль; Ван Кир, Ронни (29 декабря 2016 г.). «Фарфалле: параллельная криптография на основе перестановок». Архив электронной печати по криптологии .
  54. ^ Гвидо Бертони; Джоан Дэмен; Сет Хофферт; Майкл Питерс; Жиль Ван Аш; Ронни Ван Кир (12 октября 2018 г.). «Аутентифицированные схемы шифрования Kravatte-SANE и Kravatte-SANSE». Архив электронной печати по криптологии .
  55. ^ Брассар, Жиль; Хойер, Петер; Тапп, Ален (1998). «Квантовый криптоанализ хэш- и когте-свободных функций». Аннотация . Конспект лекций по информатике. Том 1380. С. 163–169. arXiv : quant-ph/9705002 . doi : 10.1007/BFb0054319. ISBN 978-3-540-64275-6. S2CID  118940551.
  56. ^ "Анализ затрат" (PDF) . cr.yp.to .
  57. ^ "Проблема столкновения" (PDF) . scottaaronson.com .
  58. ^ "Paper" (PDF) . eprint.iacr.org . 2016.
  59. ^ "Аннотация" (PDF) . eprint.iacr.org . 2017.
  60. ^ "NIST.gov – Отдел компьютерной безопасности – Центр ресурсов компьютерной безопасности". 29 декабря 2016 г.
  61. ^ "Таблица измерений". bench.cr.yp.to .
  62. ^ Тао, Се; Лю, Фаньбао; Фэн, Дэнго (2013). Быстрая коллизионная атака на MD5 (PDF) . Архив Cryptology ePrint (технический отчет). IACR .
  63. ^ Стивенс, Марк ; Бурштейн, Эли ; Карпман, Пьер; Альбертини, Анж; Марков, Ярик. Первое столкновение для полного SHA-1 (PDF) (Технический отчет). Google Research .
    • Марк Стивенс; Эли Бурштейн; Пьер Карпман; Анж Альбертини; Ярик Марков; Алекс Пети Бьянко; Клемент Бейсс (23 февраля 2017 г.). «Анонс первой коллизии SHA1». Блог безопасности Google .
  64. ^ Без усечения полное внутреннее состояние хэш-функции известно, независимо от устойчивости к коллизиям. Если вывод усечен, удаленная часть состояния должна быть найдена, прежде чем хэш-функция может быть возобновлена, что позволяет продолжить атаку.
  65. ^ "Семейство функций губки Кеккак" . Получено 27 января 2016 г.
  66. ^ "openssl/openssl – kecak1600-avx512vl.pl". GitHub . Получено 25 июня 2020 г. .
  67. ^ "openssl/openssl – keccak1600-avx2.pl". GitHub . Ноябрь 2021 г.
  68. ^ "openssl/openssl – keccak1600-x86_64.pl". GitHub . Получено 25 июня 2020 г. .
  69. ^ "openssl/openssl – keccak1600-armv8.pl". GitHub . Ноябрь 2021 г.
  70. ^ "openssl/openssl – keccak1600-ppc64.pl". GitHub . Получено 25 июня 2020 г. .
  71. ^ "openssl/openssl – kccak1600-mmx.pl". GitHub . Получено 25 июня 2020 г. .
  72. ^ "llvm/llvm-project – AArch64.td". GitHub . Получено 24 июня 2020 г. .
  73. ^ "ARMv8 – ARM – WikiChip". en.wikichip.org . Получено 24 июня 2020 г. .
  74. ^ "weidai11/cryptopp". GitHub . Получено 25 июня 2020 г. .
  75. ^ "openssl/openssl". GitHub . Получено 25 июня 2020 г. .
  76. ^ "openssl/openssl". GitHub . Ноябрь 2021 г.
  77. ^ "apple/llvm-project – lib/Target/AArch64/AArch64SVEInstrInfo.td". GitHub . Получено 25 июня 2020 г. .
  78. ^ IBM z/Architecture Principles of Operation, номер публикации SA22-7832. См. инструкции KIMD и KLMD в Главе 7.
  • Веб-сайт Keccak
  • Стандарт SHA-3
Retrieved from "https://en.wikipedia.org/w/index.php?title=SHA-3&oldid=1250227179"