ША-3
Безопасные алгоритмы хеширования | |
---|---|
Концепции | |
хэш-функции , SHA , DSA | |
Основные стандарты | |
ША-0 , ША-1 , ША-2 , ША-3 | |
Общий | |
---|---|
Дизайнеры | Гвидо Бертони, Джоан Демен , Микаэль Питерс и Жиль ван Аш . |
Впервые опубликовано | 2016 |
Ряд | ( ША-0 ), ША-1 , ША-2 , ША-3 |
Сертификация | ФИПС ПАБ 202 |
Деталь | |
Размеры дайджеста | произвольный |
Структура | губка строительство |
Скорость | 12,6 cpb на типичной машине с процессором x86-64 для Keccak-f[1600] плюс XOR 1024 бита, [ 1 ] что примерно соответствует SHA2-256. |
Лучший публичный криптоанализ | |
Прообраз атаки на Кечак-512 уменьшен до 8 выстрелов, требуется 2 511.5 время и 2 508 память. [ 2 ] Различители с нулевой суммой существуют для полного 24-раундового Keccak-f[1600], хотя их нельзя использовать для атаки на саму хэш-функцию. [ 3 ] |
SHA-3 ( алгоритм безопасного хеширования 3 ) является новейшим [ 4 ] член семейства стандартов Secure Hash Algorithm , выпущенных NIST 5 августа 2015 г. [ 5 ] [ 6 ] [ 7 ] Хотя SHA-3 входит в одну и ту же серию стандартов, он внутренне отличается от MD5 -подобной структуры SHA -1 и SHA-2 .
SHA-3 — это подмножество более широкого семейства криптографических примитивов Keccak ( / ˈ k ɛ tʃ æ k / или / ˈ k ɛ tʃ ɑː k / ), [ 8 ] [ 9 ] Разработан Гвидо Бертони , Джоан Демен , Микаэлем Петерсом и Жилем Ван Аше на основе RadioGatún . Авторы Кечака предложили дополнительные варианты использования этой функции, (пока) не стандартизированные NIST, включая поточный шифр , систему шифрования с аутентификацией , схему хеширования «дерево» для более быстрого хеширования на определенных архитектурах. [ 10 ] [ 11 ] а AEAD шифрует Кейака и Кетье. [ 12 ] [ 13 ]
Keccak основан на новом подходе, называемом строительством из губки . [ 14 ] Конструкция губки основана на широкой случайной функции или случайной перестановке и позволяет вводить («поглощать» в терминологии губки) любой объем данных и выводить («сжимать») любой объем данных, действуя при этом как псевдослучайная функция по отношению к все предыдущие входы. Это приводит к большой гибкости.
По состоянию на 2007 год NIST не планировал отзывать SHA-2 или удалять его из пересмотренного стандарта Secure Hash. [ нужно обновить? ] Цель SHA-3 состоит в том, чтобы при необходимости его можно было напрямую заменить SHA-2 в текущих приложениях, а также значительно повысить надежность всего набора инструментов алгоритма хеширования NIST. [ 15 ]
Для небольших размеров сообщений создатели алгоритмов Keccak и функций SHA-3 предлагают использовать более быструю функцию KangarooTwelve с скорректированными параметрами и новым режимом хеширования дерева без дополнительных накладных расходов.
История
[ редактировать ]Алгоритм Кекчака — это работа Гвидо Бертони, Джоан Демен (которая также разработала шифр Рейндала совместно с Винсентом Рейменом ), Микаэля Петерса и Жиля Ван Аша . Он основан на более ранних разработках хэш-функций PANAMA и RadioGatún . PANAMA была разработана Дэменом и Крейгом Клэппом в 1998 году. RadioGatún, преемник PANAMA, был разработан Дэменом, Питерсом и Ван Ашем и был представлен на семинаре NIST Hash Workshop в 2006 году. [ 16 ] Исходный реализации код эталонной был передан в общественное достояние посредством CC0 отказа от . [ 17 ]
В 2006 году NIST начал организовывать конкурс хеш-функций NIST для создания нового стандарта хеширования SHA-3. SHA-3 не предназначен для замены SHA-2 , поскольку никаких серьезных атак на SHA-2 публично не было продемонстрировано. [ нужно обновить ] . Из-за успешных атак на MD5 , SHA-0 и SHA-1 , [ 18 ] [ 19 ] NIST осознал необходимость в альтернативном, непохожем криптографическом хеше, которым стал SHA-3.
После подготовительного периода заявки должны были быть поданы к концу 2008 года. Кечак был принят в качестве одного из 51 кандидата. В июле 2009 года для второго тура было отобрано 14 алгоритмов. Кечак вышел в последний раунд в декабре 2010 года. [ 20 ]
Во время конкурса участникам разрешалось «настраивать» свои алгоритмы для решения обнаруженных проблем. Изменения, внесенные в Кечак: [ 21 ] [ 22 ]
- Количество раундов было увеличено с 12 + ℓ до 12 + 2ℓ, чтобы обеспечить более консервативный подход к безопасности.
- Заполнение сообщений было изменено с более сложной схемы на простую 10 * 1 шаблон описан ниже.
- Скорость r была увеличена до предела безопасности, а не округлена до ближайшей степени 2.
2 октября 2012 года Кечак был признан победителем конкурса. [ 8 ]
В 2014 году NIST опубликовал проект FIPS 202 «Стандарт SHA-3: хэш на основе перестановок и функции расширяемого вывода». [ 23 ] FIPS 202 был утвержден 5 августа 2015 года. [ 24 ]
5 августа 2015 года NIST объявил, что SHA-3 стал стандартом хеширования. [ 25 ]
Ослабление противоречий
[ редактировать ]В начале 2013 года NIST объявил, что выберет другие значения для «емкости», параметра общей силы и скорости, для стандарта SHA-3 по сравнению с представленными. [ 26 ] [ 27 ] Изменения вызвали некоторые волнения.
Конкуренция хэш-функций требовала, чтобы хеш-функции были как минимум столь же безопасными, как экземпляры SHA-2. Это означает, что d -битный выход должен иметь d /2-битную устойчивость к атакам коллизий и d -битную устойчивость к атакам на прообразы , максимум, достижимый для d бит вывода. Доказательство безопасности Keccak позволяет регулировать уровень безопасности на основе «емкости» c , обеспечивая c /2-битную устойчивость как к атакам на коллизии, так и к атакам на прообразы. Чтобы соответствовать первоначальным правилам соревнований, авторы Кечака предложили c = 2 d . Объявленное изменение заключалось в том, чтобы принять одинаковую d /2-битную защиту для всех форм атак и стандартизировать c = d . Это ускорило бы работу Keccak, позволив дополнительные d хешировать бит ввода на каждой итерации. Однако хэш-функции больше не были бы заменой с той же устойчивостью к прообразу, что и SHA-2; его сократили бы вдвое, что сделало бы его уязвимым для достижений в области квантовых вычислений, что фактически еще раз сократило бы его вдвое. [ 28 ]
В сентябре 2013 года Дэниел Дж. Бернштейн предложил в NIST списке рассылки хэш-форума [ 29 ] для усиления безопасности до 576-битной емкости, которая изначально была предложена в качестве Keccak по умолчанию, в дополнение к спецификациям SHA-3 и не включена в них. [ 30 ] Это обеспечило бы по крайней мере SHA3-224 и SHA3-256 ту же устойчивость к прообразу, что и их предшественники SHA-2, но SHA3-384 и SHA3-512 имели бы значительно меньшую устойчивость к прообразу, чем их предшественники SHA-2. В конце сентября команда Keccak ответила, заявив, что они предложили 128-битную безопасность, установив c = 256 в качестве опции уже в своем предложении SHA-3. [ 31 ] Хотя снижение емкости было по их мнению оправданным, в свете отрицательного ответа они предложили увеличить емкость до c = 512 бит для всех случаев. Это будет такой же уровень безопасности, как и любой предыдущий стандарт, вплоть до 256-битного уровня безопасности, обеспечивая при этом разумную эффективность. [ 32 ] но не 384-/512-битное сопротивление прообразу, обеспечиваемое SHA2-384 и SHA2-512. Авторы заявили, что «заявлять или полагаться на уровни безопасности выше 256 бит бессмысленно».
В начале октября 2013 года Брюс Шнайер раскритиковал решение NIST из-за его возможных пагубных последствий для принятия алгоритма, заявив:
В воздухе слишком много недоверия. NIST рискует опубликовать алгоритм, которому никто не будет доверять и который никто (кроме тех, кого заставят) не будет использовать. [ 33 ]
Позже он отказался от своего предыдущего заявления, заявив:
Я ошибся, когда написал, что NIST внес в алгоритм «внутренние изменения». Это было неряшливо с моей стороны. Перестановка Кечака остается неизменной. NIST предложил уменьшить мощность хэш-функции во имя производительности. Одной из приятных особенностей Keccak является то, что он легко настраивается. [ 33 ]
Пол Кроули, криптограф и старший разработчик независимой компании по разработке программного обеспечения, выразил поддержку этому решению, заявив, что Keccak должен быть настраиваемым и нет никаких причин для разных уровней безопасности в рамках одного примитива. Он также добавил:
Да, немного обидно за конкурс, что они потребовали для участников определенный уровень безопасности, а потом пошли публиковать стандарт с другим. Но сейчас ничего нельзя сделать, чтобы это исправить, кроме возобновления соревнований. Требование, чтобы они придерживались своих ошибок, никому не улучшает ситуацию. [ 34 ]
Возникла некоторая путаница в том, что в Keccak могли быть внесены внутренние изменения, которые были выяснены исходной командой, заявившей, что предложение NIST для SHA-3 является подмножеством семейства Keccak, для которого можно генерировать тестовые векторы, используя их ссылочный код. были представлены на конкурс, и что это предложение стало результатом серии обсуждений между ними и хэш-командой NIST. [ 35 ]
В ответ на разногласия в ноябре 2013 года Джон Келси из NIST предложил вернуться к исходному предложению c = 2 d для всех экземпляров замены SHA-2. [ 36 ] Возврат был подтвержден в последующих проектах. [ 37 ] и в финальном выпуске. [ 5 ]
Дизайн
[ редактировать ]SHA-3 использует губчатую конструкцию , [ 14 ] при котором данные «всасываются» в губку, а затем «выжимается» результат. На этапе поглощения блоки сообщений подвергаются операции XOR в подмножество состояния, которое затем преобразуется целиком с помощью функции перестановки. . (Вызов перестановка может сбить с толку. Технически это перестановка пространства состояний, то есть перестановка множества с элементы, но он делает больше, чем просто переставляет биты вектора состояния. [ нужна ссылка ] ) На этапе «сжатия» выходные блоки считываются из одного и того же подмножества состояния, чередуясь с функцией преобразования состояния. . Размер той части состояния, которая записывается и читается, называется «скоростью» (обозначается ), а размер части, не затронутой вводом/выводом, называется «емкостью» (обозначается ). Емкость определяет безопасность схемы. Максимальный уровень безопасности составляет половину емкости.
Учитывая входную битовую строку , функция заполнения , функция перестановки который работает с битовыми блоками ширины , ставка и выходная длина , у нас есть мощности и конструкция из губки , что дает битовую строку длины , работает следующим образом: [ 6 ] : 18
- дополните вход N с помощью функции заполнения, получив дополненную битовую строку P с длиной, кратной (такой, что это целое число)
- разбить 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 допускают произвольную длину вывода, что полезно в таких приложениях, как оптимальное заполнение асимметричного шифрования .
Заполнение
[ редактировать ]Чтобы гарантировать, что сообщение может быть равномерно разделено на блоки r -бит, требуется заполнение. SHA-3 использует шаблон 10. * 1 в своей функции заполнения: бит 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 , которое представляет собой Keccak-f[1600] для SHA-3, представляет собой перестановку, использующую операции XOR , AND и NOT и предназначенную для простой реализации как в программном, так и в аппаратном обеспечении.
степени двойки Он определен для любого размера слова , w = 2. ℓ биты. В основном представлении SHA-3 используются 64-битные слова, ℓ = 6 .
Состояние можно рассматривать как размером 5 × 5 × w массив битов . Пусть a [ i ][ j ][ k ] будет битом (5 i + j ) × w + k входных данных, используя с прямым порядком соглашение о нумерации битов байтов и индексацию по строкам . Т.е. i выбирает строку, j — столбец, а k — бит.
Индексная арифметика выполняется по модулю 5 для первых двух измерений и по модулю w для третьего.
Базовая функция перестановки блоков состоит из 12 + 2 ℓ раундов по пять шагов:
- θ (тета)
- Вычислите четность каждого из 5 w (320, когда w = 64 ) 5-битных столбцов и исключите-или это для двух соседних столбцов в обычном порядке. Точнее, a [ i ][ j ][ k ] ← a [ i ][ j ][ k ] ⊕ четность (a[0...4][ j -1][ k ]) ⊕ четность (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] , где .
- π (пи)
- Переставьте 25 слов по фиксированному шаблону. а [3 я +2 j ][ я ] ← а [ я ][ j ] .
- х (чи)
- Побитовое объединение по строкам, используя x ← x ⊕ (¬ y & z ) . Точнее, a [ i ][ j ][ k ] ← a [ i ][ j ][ k ] ⊕ (¬ a [ i ][ j + 1 ][ k ] & a [ i ][ j + 2 ] [ к ]) . Это единственная нелинейная операция в SHA-3.
- я (йота)
- Эксклюзивный - или круглая константа в одно слово состояния. Точнее, в раунде n , для 0 ≤ m ≤ ℓ , a [0][0][2 м −1] подвергается операции XOR с битом m + 7 n 8-й степени последовательности LFSR . Это нарушает симметрию, сохраняемую на других этапах.
Скорость
[ редактировать ]Скорость хеширования SHA-3 длинных сообщений определяется вычислением f = Keccak-f[1600] и выполнением операции XOR S с расширенным Pi — операцией над b = 1600 бит. Однако, поскольку последние c бит расширенного Pi SHA3-224 в любом случае равны 0, а XOR с 0 является NOP, достаточно выполнить операции XOR только для r бит ( r = 1600 − 2 × 224 = 1152 бит для , 1088 бит для SHA3-256, 832 бит для SHA3-384 и 576 бит для SHA3-512). Чем ниже r (и, наоборот, чем выше c = b − r = 1600 − r ), тем менее эффективным, но более безопасным становится хеширование, поскольку перед каждым применение вычислительно затратного f . Авторы сообщают о следующих скоростях программных реализаций Keccak-f[1600] плюс XOR 1024 бит: [ 1 ] что примерно соответствует SHA3-256:
- 57,4 cpb на IA-32, Intel Pentium 3 [ 38 ]
- 41 cpb на IA-32+MMX, Intel Pentium 3
- 20 cpb на IA-32+SSE, Intel Core 2 Duo или AMD Athlon 64
- 12,6 ЦПБ на типичной машине с процессором x86-64
- 6–7 cb на ИА-64 [ 1 ]
Для точного SHA3-256 на x86-64 Бернштейн измеряет 11,7–12,25 cpb в зависимости от процессора. [ 39 ] : 7 SHA-3 критиковали за медленную работу на архитектурах набора команд (ЦП), в которых нет инструкций, предназначенных специально для более быстрого вычисления функций Keccak: SHA2-512 более чем в два раза быстрее, чем SHA3-512, а SHA-1 более чем в два раза быстрее, чем SHA3-512. в три раза быстрее на процессоре Intel Skylake с тактовой частотой 3,2 ГГц. [ 40 ] Авторы отреагировали на эту критику предложением использовать SHAKE128 и SHAKE256 вместо SHA3-256 и SHA3-512 за счет сокращения сопротивления прообраза вдвое (но при сохранении сопротивления коллизиям). При этом производительность находится на уровне SHA2-256 и SHA2-512.
Однако в аппаратных реализациях SHA-3 заметно быстрее всех остальных финалистов, [ 41 ] а также быстрее, чем SHA-2 и SHA-1. [ 40 ]
По состоянию на 2018 год ARMv8 от ARM [ 42 ] и архитектуры IBM s390x [ 43 ] включают специальные инструкции, которые позволяют алгоритмам Keccak выполняться быстрее. Также были предложения по расширению RISC-V для добавления инструкций, специфичных для Keccak. [ 44 ]
Экземпляры
[ редактировать ]Стандарт NIST определяет следующие случаи для сообщения M и длины вывода d : [ 6 ] : 20, 23
Пример | Выход размер д |
Оценить р = размер блока |
Емкость c | Определение | Сила безопасности в битах сопротивления | ||
---|---|---|---|---|---|---|---|
Столкновение | Прообраз | 2-й прообраз | |||||
SHA3-224( М ) | 224 | 1152 | 448 | Кечак[448]( М || 01, 224) | 112 | 224 | 224 |
SHA3-256( М ) | 256 | 1088 | 512 | Кечак[512]( М || 01, 256) | 128 | 256 | 256 |
SHA3-384( М ) | 384 | 832 | 768 | Кечак[768]( М || 01, 384) | 192 | 384 | 384 |
SHA3-512( М ) | 512 | 576 | 1024 | Кечак[1024]( М || 01, 512) | 256 | 512 | 512 |
ВСтряска128( М , д ) | д | 1344 | 256 | Кечак[256]( М || 1111, д ) | мин( д /2,128) | ≥мин( д ,128) | мин( д ,128) |
ВСтряска256( М , д ) | д | 1088 | 512 | Кечак[512]( М || 1111, д ) | мин( д /2,256) | ≥мин( д ,256) | мин( д ,256) |
Со следующими определениями
- Keccak[ c ]( N , d ) = губка[Keccak-f[1600], площадку10 * 1, р ]( Н , д ) [ 6 ] : 20
- Кечак-f[1600] = Кечак-p[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 ] [ 45 ]
Суффикс | Значение |
---|---|
...0 | зарезервировано для будущего использования |
01 | ША-3 |
...11 | RawSHAKE |
1111 | встряхнуть |
Дополнительные экземпляры
[ редактировать ]В декабре 2016 года NIST опубликовал новый документ NIST SP.800-185. [ 46 ] описание дополнительных производных функций SHA-3:
Пример | Описание |
---|---|
cSHAKE128( Икс , Л , Н , С ) | Версия SHAKE, поддерживающая явное разделение доменов с помощью параметров настройки. |
cSHAKE256( Икс , Л , Н , С ) | |
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, не использует Кечак с уменьшенным раундом. |
ParallelHash256( X , B , L , S ) | |
ParallelHashXOF128(ParallelHashXOF128 , B, L, ( | |
ПараллельныйХэшXOF256( X , B , L , S ) |
• X — основная входная битовая строка. Длина может быть любой, включая нулевую.
• L — целое число, представляющее запрошенную длину вывода в битах.
• N — битовая строка имени функции, используемая NIST для определения функций, основанных на cSHAKE. Если не требуется никакая другая функция, кроме cSHAKE, N устанавливается в пустую строку.
• S — битовая строка настройки. Пользователь выбирает эту строку, чтобы определить вариант функции. Если настройка не требуется, для S устанавливается пустая строка.
• K — строка ключевых битов любой длины, включая нулевую.
• B — размер блока в байтах для параллельного хеширования. Это может быть любое целое число такое, что 0 < B < 2. 2040 .
Более поздние события
[ редактировать ]КенгуруДвенадцать
[ редактировать ]Общий | |
---|---|
Дизайнеры | Гвидо Бертони, Жоан Дэмен , Михаэль Питерс, Жиль Ван Аш , Ронни Ван Кир, Бенуа Вигье |
Впервые опубликовано | 10 августа 2016 г |
Получено из | Кечак |
Деталь | |
Размеры дайджеста | произвольный |
Структура | построение губки и перемешивание деревьев с помощью прыжков кенгуру |
Раунды | 12 |
Скорость | 0,51 cpb на SkylakeX с AVX-512 [ 47 ] |
Лучший публичный криптоанализ | |
То же, что и у Кечака |
В 2016 году та же команда, которая создала функции SHA-3 и алгоритм Keccak, представила более быстрые альтернативы с сокращенным числом раундов (сокращено до 12 и 14 раундов по сравнению с 24 в SHA-3), которые могут использовать доступность параллельного выполнения из-за использования дерева. хеширование : KangarooTwelve и MarsupilamiFourteen. [ 48 ]
Эти функции отличаются от ParallelHash, стандартизированной FIPS распараллеливаемой хэш-функции на основе Keccak, в отношении параллелизма, поскольку они быстрее, чем ParallelHash, для сообщений небольшого размера.
Уменьшение количества раундов оправдано огромными криптоаналитическими усилиями, сосредоточенными на Кечаке, которые не привели к практическим атакам на что-либо близкое к двенадцатираундному Кечаку. Эти высокоскоростные алгоритмы не являются частью SHA-3 (поскольку они являются более поздней разработкой) и, следовательно, не соответствуют FIPS; но поскольку они используют ту же самую перестановку Keccak, они безопасны до тех пор, пока нет атак на SHA-3, сокращенных до 12 раундов. [ 48 ]
KangarooTwelve — это более производительная версия Keccak с уменьшенным количеством раундов (с 24 до 12 раундов), которая утверждает, что имеет 128 бит безопасности. [ 49 ] достигает 0,55 цикла на байт при этом производительность процессора Skylake . [ 50 ] Этот алгоритм представляет собой проект IETF RFC . [ 51 ]
MarsupilamiFourteen, небольшая вариация KangarooTwelve, использует 14 раундов перестановки Keccak и требует 256 бит безопасности. Обратите внимание, что 256-битная безопасность на практике не более полезна, чем 128-битная, но может потребоваться некоторыми стандартами. [ 49 ] 128 бит уже достаточно для защиты от атак методом перебора на современное оборудование, поэтому наличие 256-битной безопасности не добавляет практической ценности, если только пользователь не обеспокоен значительным улучшением скорости классических компьютеров. О сопротивлении квантовым компьютерам см. ниже.
KangarooTwelve и MarsupilamiFourteen — это функции расширяемого вывода, аналогичные SHAKE, поэтому они генерируют тесно связанные выходные данные для общего сообщения с разной длиной вывода (более длинный вывод является расширением более короткого вывода). Такое свойство не проявляется в хэш-функциях, таких как SHA-3 или ParallelHash (за исключением вариантов XOF). [ 6 ]
Строительство Фарфалле
[ редактировать ]В 2016 году команда Keccak выпустила другую конструкцию под названием конструкция Farfalle , и Kravatte, экземпляр Farfalle, использующий перестановку Keccak-p, [ 52 ] а также два аутентифицированных алгоритма шифрования Kravette-SANE и Kravette-SANSE. [ 53 ]
Хеширование дерева сакуры
[ редактировать ]RawSHAKE является основой для кода Sakura для хеширования деревьев, который еще не стандартизирован. Сакура использует суффикс 1111 для отдельных узлов, эквивалентный SHAKE, и другие генерируемые суффиксы в зависимости от формы дерева. [ 45 ] : 16
Защита от квантовых атак
[ редактировать ]Существует общий результат ( алгоритм Гровера ), что квантовые компьютеры могут выполнять атаку структурированного прообраза в , тогда как для классической атаки методом перебора требуется 2 д . Структурированная атака на прообраз подразумевает атаку второго прообраза. [ 28 ] и, таким образом, столкновение . Квантовый компьютер также может выполнить атаку на день рождения , тем самым преодолев сопротивление столкновению, в [ 54 ] (хотя это спорно). [ 55 ] Отмечая, что максимальная сила может быть , это дает следующий верхний [ 56 ] границы квантовой безопасности SHA-3:
Пример | Сила безопасности в битах сопротивления | |||
---|---|---|---|---|
Столкновение (Брассар и др.) |
Столкновение (Бернштейн) |
Прообраз | 2-й прообраз | |
SHA3-224( М ) | 74 2 ⁄ 3 | 112 | 112 | 112 |
SHA3-256( М ) | 85 1 ⁄ 3 | 128 | 128 | 128 |
SHA3-384( М ) | 128 | 192 | 192 | 192 |
SHA3-512( М ) | 170 2 ⁄ 3 | 256 | 256 | 256 |
ВСтряска128( М , д ) | мин( д /3,128) | мин( д /2,128) | ≥мин( д /2,128) | мин( д /2,128) |
ВСтряска256( М , д ) | мин( д /3,256) | мин( д /2,256) | ≥мин( д /2,256) | мин( д /2,256) |
Было показано, что конструкция Меркла-Дамгорда , используемая SHA-2, разрушается и, как следствие, устойчива к квантовым столкновениям. [ 57 ] но для губчатой конструкции, используемой SHA-3, авторы приводят доказательства только для случая, когда блочная функция f не является эффективно обратимой; Однако Keccak-f[1600] эффективно обратим, и поэтому их доказательство неприменимо. [ 58 ] [ оригинальное исследование ]
Примеры вариантов SHA-3
[ редактировать ]Следующие значения хеш-функции взяты из NIST.gov: [ 59 ]
SHA3-224("") 6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7 SHA3-256("") a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a SHA3-384("") 0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004 SHA3-512("") a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26 SHAKE128("", 256) 7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26 SHAKE256("", 512) 46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fd75dc4ddd8c0f200cb05019d67b592f6fc821c49479ab48640292eacb3b7c4be
Изменение одного бита приводит к изменению каждого бита выходных данных с вероятностью 50%, демонстрируя лавинный эффект :
SHAKE128("The quick brown fox jumps over the lazy dog", 256) f4202e3c5852f9182a0430fd8144f0a74b95e7417ecae17db0f8cfeed0e3e66e SHAKE128("The quick brown fox jumps over the lazy dof", 256) 853f4538be0db9621a6cea659a06c1107b1f83f02b13d18297bd39d7411cf10c
Сравнение функций SHA
[ редактировать ]В таблице ниже внутреннее состояние означает количество битов, которые передаются в следующий блок.
Алгоритм и вариант | Выходной размер (биты) |
Внутренний размер штата (биты) |
Размер блока (биты) |
Раунды | Операции | Защита от столкновений (биты) |
Защита от атак расширения длины (биты) |
Производительность на Skylake (медиана cpb ) [ 60 ] | Впервые опубликовано | ||
---|---|---|---|---|---|---|---|---|---|---|---|
Длинные сообщения | 8 байт | ||||||||||
MD5 (для справки) | 128 | 128 (4 × 32) |
512 | 4 (16 операций в каждом раунде) |
И, Xor, Or, Rot, Add (мод 2 32 ) | ≤ 18 (обнаружены столкновения) [ 61 ] |
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 (обнаружены столкновения) [ 62 ] |
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 [ 63 ] | 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 [ 64 ] | И, Ксор, Гниль, Не | 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 |
Оптимизированная реализация SHA3-256 с использованием AVX-512VL (т. е. из OpenSSL , работающего на процессорах Skylake-X ) обеспечивает около 6,4 циклов на байт для больших сообщений. [ 65 ] и около 7,8 циклов на байт при использовании AVX2 на процессорах Skylake . [ 66 ] Производительность на других процессорах x86, Power и ARM в зависимости от используемых инструкций и конкретной модели процессора варьируется от 8 до 15 циклов на байт. [ 67 ] [ 68 ] [ 69 ] с некоторыми старыми процессорами x86 до 25–40 циклов на байт. [ 70 ]
Реализации
[ редактировать ]Ниже приведен список библиотек шифрования, поддерживающих SHA-3:
- Раста Ша3
- Ботан
- Надувной замок
- Крипто++
- Libgcrypt
- Крапива
- OpenSSL
- волкSSL
- Криптографический SDK MIRACL
- Голанга x/crypto/sha3
- libkeccs
Аппаратное ускорение
[ редактировать ]Apple A13 Ядра шестиядерного процессора SoC ARMv8 поддерживаются [ 71 ] для ускорения SHA-3 (и SHA-512) с использованием специализированных инструкций (EOR3, RAX1, XAR, BCAX) из набора криптографических расширений ARMv8.2-SHA. [ 72 ]
Некоторые библиотеки программного обеспечения используют средства векторизации ЦП для ускорения использования SHA-3. Например, Crypto++ может использовать SSE2 на x86 для ускорения SHA3. [ 73 ] и OpenSSL также может использовать MMX , AVX-512 или AVX-512VL во многих системах x86. [ 74 ] Кроме того, процессоры POWER8 реализуют 2x64-битный векторный поворот, определенный в PowerISA 2.07, что может ускорить реализацию SHA-3. [ 75 ] Большинство реализаций для ARM не используют Neon векторные инструкции , поскольку скалярный код работает быстрее. Однако реализации ARM можно ускорить с помощью SVE векторных инструкций и SVE2; они доступны Fujitsu A64FX . , например, в процессоре [ 76 ]
IBM z/Architecture поддерживает SHA-3 с 2017 года как часть расширения Message-Security-Assist Extension 6. [ 77 ] Процессоры поддерживают полную реализацию всех алгоритмов SHA-3 и SHAKE с помощью инструкций KIMD и KLMD с использованием аппаратного вспомогательного механизма, встроенного в каждое ядро.
Использование в протоколах
[ редактировать ]См. также
[ редактировать ]- Ethash — еще один хеш на основе Keccak.
Ссылки
[ редактировать ]- ^ Jump up to: а б с Бертони, Гвидо; Дэмен, Джоан ; Питерс, Майкл; ван Аш, Жиль (29 мая 2012 г.). «Обзор реализации Keccak» (PDF) . п. 25 . Проверено 27 марта 2023 г.
- ^ Моравецкий, Павел; Пепшик, Йозеф; Сребрный, Мариан (2013). «Вращательный криптоанализ Кечака с уменьшенным раундом» (PDF) . В Мориай, С. (ред.). Быстрое программное шифрование . Конспекты лекций по быстрому программному шифрованию по информатике. Том. 8424. стр. 241–262. дои : 10.1007/978-3-662-43933-3_13 . ISBN 978-3-662-43932-6 . Архивировано (PDF) из оригинала 8 января 2013 г. Проверено 8 февраля 2019 г.
- ^ Бертони, Гвидо; Дэмен, Джоан; Питерс, Майкл; ван Аш, Джайлз (14 января 2011 г.). «Представление Keccak SHA-3» (PDF) . keccak.team . Архивировано (PDF) из оригинала 19 августа 2011 г. Проверено 27 марта 2023 г.
- ^ Отдел компьютерной безопасности, Лаборатория информационных технологий (4 января 2017 г.). «Хеш-функции | CSRC | CSRC» . ЦКРС | НИСТ . Проверено 19 апреля 2024 г.
- ^ Jump up to: а б «Хеш-функции» . НИСТ . 22 июня 2020 г. Проверено 17 февраля 2021 г.
- ^ Jump up to: а б с д и ж г час я Лаборатория информационных технологий (август 2015 г.). Стандарт SHA-3: хеширование на основе перестановок и функции расширяемого вывода (PDF) . Национальный институт стандартов и технологий . дои : 10.6028/NIST.FIPS.202 . S2CID 64734386 . Публикация Федерального стандарта обработки информации 202 . Проверено 29 февраля 2020 г.
- ^ Дворкин, Моррис Дж. (4 августа 2015 г.). «Стандарт SHA-3: хеширование на основе перестановок и функции расширяемого вывода» . Федеральные стандарты обработки информации (НИСТ ФИПС).
- ^ Jump up to: а б «NIST выбирает победителя конкурса алгоритмов безопасного хеширования (SHA-3)» . НИСТ . 2 октября 2012 года . Проверено 2 октября 2012 г.
- ^ Круз, Хосе Р.К. (7 мая 2013 г.). «Кеккак: новый стандарт шифрования SHA-3» . Доктор Доббс .
- ^ Бертони, Гвидо; Дэмен, Джоан; Питерс, Майкл; Ван Аш, Жиль. «Сводка технических характеристик Keccak» . Проверено 27 марта 2023 г.
- ^ Чанг, Шу-жен; Перлнер, Рэй; Берр, Уильям Э.; Сонмез Туран, Мельтем; Келси, Джон М.; Пол, Сурадьюти; Бэшем, Лоуренс Э. (ноябрь 2012 г.). Отчет третьего раунда конкурса алгоритмов криптографического хеширования SHA-3 (PDF) . doi : 10.6028/NIST.IR.7896 . Проверено 29 февраля 2020 г. Разделы 5.1.2.1 (упоминание «режим дерева»), 6.2 («другие функции», упоминание аутентифицированного шифрования) и 7 (упоминание «дополнительных возможностей» могут быть стандартизированы в будущем).
- ^ Jump up to: а б Бертони, Гвидо; Дэмен, Джоан; Питерс, Майкл; Ван Аш, Жиль; Ван Кир, Ронни (13 марта 2014 г.). «Представление CAESAR: Ketje v1» (PDF) . Проверено 29 февраля 2020 г.
- ^ Jump up to: а б Бертони, Гвидо; Дэмен, Джоан; Питерс, Майкл; Ван Аш, Жиль; Ван Кир, Ронни (13 марта 2014 г.). «Представление CAESAR: Keyak v1» (PDF) . Проверено 29 февраля 2020 г.
- ^ Jump up to: а б Бертони, Гвидо; Дэмен, Джоан; Питерс, Майкл; ван Аш, Джайлз. «Губка и дуплексные конструкции» . Проверено 27 марта 2023 г.
- ^ «Объявление о выдвижении кандидатов на алгоритмы для нового семейства алгоритмов криптографического хеширования (SHA-3) [Федеральный реестр США, том 72, № 212)]» (PDF) . 2 ноября 2007 г. Архивировано (PDF) из оригинала 31 марта 2011 г. . Проверено 18 июля 2017 г.
- ^ Бертони, Гвидо; Дэмен, Джоан; Питерс, Майкл; Ван Аш, Жиль. «Дорога из Панамы в Кечак через РадиоГатун» (PDF) . Проверено 27 марта 2023 г.
- ^ KeccakReferenceAndOptimized-3.2.zip mainReference.c «Функция губки Keccak, разработанная Гвидо Бертони, Джоан Даемен, Микаэлем Питерсом и Жилем Ван Ашем. Для получения дополнительной информации, отзывов или вопросов посетите наш веб-сайт: http://keccak. noekeon.org/Реализация [ постоянная мертвая ссылка ] разработчиками, именуемыми здесь «исполнителями». Насколько это возможно по закону, разработчик отказался от всех авторских и смежных прав на исходный код в этом файле. https://creativecommons.org/publicdomain/zero/1.0/ "
- ^ Стивенс, Марк; Бурштейн, Эли; Карпман, Пьер; Альбертини, Анж; Марков, Ярик. «Первое столкновение для полного SHA-1» (PDF) . Проверено 23 февраля 2017 г.
- ^ Леран, Гаэтан; Пейрин, Томас. «SHA-1 — это руины» . Проверено 8 января 2020 г.
- ^ «Отдел компьютерной безопасности NIST – Конкурс криптографических алгоритмов хеширования SHA-3, ноябрь 2007 г. – октябрь 2012 г.» . 4 января 2017 г.
- ^ «Изменение параметров Кечака для второго раунда» . Команда Кечак . 22 сентября 2009 года. Архивировано из оригинала 13 ноября 2017 года . Проверено 29 февраля 2020 г.
- ^ «Упрощение правила заполнения Кечака для раунда 3» . Команда Кечак . 17 января 2011 года . Проверено 27 марта 2023 г.
- ^ «Стандартизация SHA-3» . НИСТ . Проверено 16 апреля 2015 г.
- ^ Национальный институт стандартов и технологий (5 августа 2015 г.). «Федеральные стандарты обработки информации: хеш-функции на основе перестановок, функции расширяемого вывода и т. д.» . Проверено 5 августа 2015 г.
- ^ «Объявление об утверждении Федерального стандарта обработки информации (FIPS) 202, Стандарт SHA-3: хеширование на основе перестановок и функции расширяемого вывода, а также пересмотр пункта о применимости FIPS 180-4, Стандарт безопасного хеширования» . 5 августа 2015 г.
- ^ Келси, Джон. «SHA3, Где мы были, Куда мы идем» (PDF) . Конференция ЮАР 2013.
- ^ Келси, Джон. «SHA3, прошлое, настоящее и будущее» . ЧЭС 2013.
- ^ Jump up to: а б «Аннотация» (PDF) . cr.yp.to .
- ^ «Список рассылки хэш-форума NIST» . 4 января 2017 г.
- ^ «Представление Keccak SHA-3» (PDF) . 14 января 2011 года . Проверено 27 марта 2023 г.
- ^ «О 128-битной безопасности» . 2 октября 2013 года . Проверено 27 марта 2023 г.
- ^ «Конкретное предложение» . 2 октября 2013 года . Проверено 27 марта 2023 г.
- ^ Jump up to: а б «Шнайер по безопасности: будет ли Кекчак = SHA-3?» .
- ^ «LShift: Почему я поддерживаю правительство США, ослабляющее стандарт криптографии» .
- ^ «Да, это Кечак!» . 4 октября 2013 года . Проверено 27 марта 2023 г.
- ^ «Движение вперед с SHA-3» (PDF) .
- ^ Отдел компьютерной безопасности (CSD) НИСТ. «Стандарт SHA-3: хэш на основе перестановок и функции расширяемого вывода» (PDF) . НИСТ.
- ^ «около 41 цикла на байт [...] представляет собой ускорение на 40% по сравнению с реализацией, использующей только 32-битные инструкции». По формуле мы получаем
- ^ Бернштейн, Дэниел Дж. (4 января 2012 г.). «Ошибки оптимизации в программном обеспечении SHA-3» (PDF) . cr.yp.to . Проверено 29 февраля 2020 г.
- ^ Jump up to: а б «SHA-3 медленный?» . 12 июня 2017 г. Проверено 27 марта 2023 г.
- ^ Го, Сюй; Хуан, Синан; Нажандали, Лейла; Шаумонт, Патрик (август 2010 г.), «Справедливая и всесторонняя оценка производительности 14 реализаций ASIC SHA-3 второго раунда» (PDF) , 2-я конференция кандидатов SHA-3 NIST : 12 , получено 18 февраля 2011 г. Кекчак уступает только Луффе, которые не прошли в финальный раунд.
- ^ Корпорация ARM, Справочное руководство по архитектуре ARM ARMv8, для профиля архитектуры ARMv8-A, документ ARM DDI 0487C.a (ID121917), https://www.arm.com
- ^ http://publibfp.dhe.ibm.com/epubs/pdf/dz9zr011.pdf с. 672
- ^ https://ieeexplore.ieee.org/document/7918507.
- ^ Jump up to: а б «Сакура: гибкое кодирование для хеширования деревьев» (PDF) . Команда Кечак . 2014 . Проверено 29 февраля 2020 г.
- ^ Производные функции SHA-3: cSHAKE, KMAC, TupleHash и ParallelHash. В данную статью включен текст из этого источника, находящегося в свободном доступе .
- ^ «Показатели производительности программного обеспечения» .
- ^ Jump up to: а б «Команда Кечак: КенгуруДвенадцать» . Команда Кечак.
- ^ Jump up to: а б «KangarooTwelve: быстрое хеширование на основе Keccak-p» (PDF) . Международная ассоциация криптологических исследований . 2016.
- ^ «Двенадцать слайдов Кенгуру, представленные на ACNS 2018» (PDF) . Команда Кечак.
- ^ «draft-irtf-cfrg-kangarootwelve-00 – KangarooTwelve» . Ietf Datatracker . IETF . Проверено 17 января 2020 г.
- ^ Бертони, Гвидо; Дэмен, Джоан; Хофферт, Сет; Питерс, Майкл; Ван Аш, Жиль; Ван Кир, Ронни (29 декабря 2016 г.). «Фарфалле: параллельная криптография на основе перестановок» . Архив электронной печати по криптологии .
- ^ Гвидо Бертони; Джоан Дэмен; Сет Хофферт; Майкл Питерс; Жиль Ван Аш; Ронни Ван Кир (12 октября 2018 г.). «Аутентифицированные схемы шифрования Kravatte-SANE и Kravatte-SANSE» . Архив электронной печати по криптологии .
- ^ Брассар, Жиль; Хойер, Питер; Тапп, Ален (1998). «Квантовый криптоанализ хэш-функций и функций без когтей». Абстрактный . Конспекты лекций по информатике. Том. 1380. стр. 163–169. arXiv : Quant-ph/9705002 . дои : 10.1007/BFb0054319 . ISBN 978-3-540-64275-6 . S2CID 118940551 .
- ^ «Анализ затрат» (PDF) . cr.yp.to .
- ^ «Проблема столкновения» (PDF) . scottaaronson.com .
- ^ «Бумага» (PDF) . eprint.iacr.org . 2016.
- ^ «Аннотация» (PDF) . eprint.iacr.org . 2017.
- ^ «NIST.gov – Отдел компьютерной безопасности – Ресурсный центр компьютерной безопасности» . 29 декабря 2016 г.
- ^ «Таблица измерений» . скамейка.cr.yp.to .
- ^ Тао, Се; Лю, Фаньбао; Фэн, Дэнго (2013). Быстрая атака столкновений на MD5 (PDF) . Архив криптологии ePrint (Технический отчет). МАКР .
- ^ Стивенс, Марк ; Бурштейн, Эли ; Карпман, Пьер; Альбертини, Анж; Марков, Ярик. Первое столкновение для полного SHA-1 (PDF) (Технический отчет). Google Исследования .
- Марк Стивенс; Эли Бурштейн; Пьер Карпман; Анж Альбертини; Ярик Марков; Алекс Пети Бьянко; Клеман Байс (23 февраля 2017 г.). «Анонсируем первое столкновение SHA1» . Блог Google по безопасности .
- ^ Без усечения известно полное внутреннее состояние хеш-функции, независимо от устойчивости к коллизиям. Если выходные данные усекаются, удаленную часть состояния необходимо найти и найти, прежде чем можно будет возобновить хеш-функцию, что позволит продолжить атаку.
- ^ «Семейство функций губки Кечака» . Проверено 27 января 2016 г.
- ^ «openssl/openssl – kecak1600-avx512vl.pl» . Гитхаб . Проверено 25 июня 2020 г.
- ^ «openssl/openssl – keccak1600-avx2.pl» . Гитхаб . Ноябрь 2021 г.
- ^ «openssl/openssl – keccak1600-x86_64.pl» . Гитхаб . Проверено 25 июня 2020 г.
- ^ «openssl/openssl – keccak1600-armv8.pl» . Гитхаб . Ноябрь 2021 г.
- ^ «openssl/openssl – keccak1600-ppc64.pl» . Гитхаб . Проверено 25 июня 2020 г.
- ^ «openssl/openssl – kccak1600-mmx.pl» . Гитхаб . Проверено 25 июня 2020 г.
- ^ «llvm/llvm-проект – AArch64.td» . Гитхаб . Проверено 24 июня 2020 г.
- ^ «ARMv8 – ARM – WikiChip» . ru.wikichip.org . Проверено 24 июня 2020 г.
- ^ «weidai11/cryptopp» . Гитхаб . Проверено 25 июня 2020 г.
- ^ «опенссл/опенссл» . Гитхаб . Проверено 25 июня 2020 г.
- ^ «опенссл/опенссл» . Гитхаб . Ноябрь 2021 г.
- ^ «apple/llvm-project – lib/Target/AArch64/AArch64SVEInstrInfo.td» . Гитхаб . Проверено 25 июня 2020 г.
- ^ Принципы работы IBM z/Architecture, номер публикации SA22-7832. См. инструкции KIMD и KLMD в главе 7.