Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Иллюстрация конструкции губки
Конструкция губки для хэш-функций. P i - блоки входной строки, Z i - хешированные выходные блоки.

В криптографии , А губки функции или губки конструкция представляет собой любая из класса алгоритмов с конечным внутренним состоянием , которые принимают входные битовый поток любой длины и производить выходную битовый поток любой требуемой длины. Функции губки имеют как теоретическое, так и практическое применение. Их можно использовать для моделирования или реализации многих криптографических примитивов , включая криптографические хэши , коды аутентификации сообщений , функции генерации масок , потоковые шифры , генераторы псевдослучайных чисел и аутентифицированное шифрование.. [1]

Строительство [ править ]

Функция губки состоит из трех компонентов: [2]

  • Состояние , содержащее биты ,
  • функция , преобразующая память состояний (часто это псевдослучайная перестановка значений состояния)
  • функция заполнения Pad

Государственная память разделена на две секции: битрейт и оставшейся часть емкости .

Pad добавляет во входную строку достаточное количество битов, так что длина дополненного ввода кратна | Битрейт | . Таким образом, дополненный ввод можно разбить на | Битрейт | -битовые блоки.

Операция [ править ]

Функция губки работает следующим образом:

  • Состояние инициализируется нулем
  • Входная строка дополняется. Это означает, что ввод преобразуется в блоки | Битрейт | биты с помощью Pad .
  • для каждого | Битрейт | -bit Блок дополненного ввода:
    • Битрейт заменяется блоком XOR битрейта (с использованием побитового XOR )
    • Состояние заменяется на f ( Состояние )

Этот процесс «поглощает» (в метафоре губки ) все блоки дополненной входной строки.

Теперь выходные данные функции губки готовы к производству ("выдавлены") следующим образом:

  • Поток часть памяти состояния выводится
  • повторяйте, пока не будет выведено достаточно бит:
    • Состояние заменяется на f ( Состояние )
    • Поток часть памяти состояния выводится

Если меньше чем | Битрейт | биты остаются для вывода, тогда битрейт будет усечен ( будет выведена только часть битрейта ).

Другая метафора описывает память состояний как « пул энтропии », при этом ввод «вливается в» пул, а функция преобразования называется «перемешивание пула энтропии». [3]

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

Дуплексная конструкция [ править ]

Также возможно попеременное поглощение и сжатие. [4] Эта операция называется дуплексным построением или дуплексом. Это может быть основой однопроходной аутентифицированной системы шифрования.

  • Государство инициализируется в ноль
  • Битрейт подвергается операции XOR с первым | Битрейт | -битовый блок ввода
  • Состояние заменяется на f ( Состояние )
  • Битрейт теперь первый | Битрейт | биты вывода.
  • Битрейт подвергается операции XOR со следующим | Битрейт | -битовый блок ввода
  • Состояние заменяется на f ( Состояние )
  • Битрейт теперь следующий | Битрейт | биты вывода.

Режим перезаписи [ править ]

Можно не выполнять операции XOR во время поглощения, сохраняя при этом выбранный уровень безопасности . [4] В этом режиме, в фазе поглощения, следующий блок ввода перезаписывает битрейтную часть состояния. Это позволяет сохранять меньшее состояние между шагами. Поскольку часть битрейта в любом случае будет перезаписана, ее можно отбросить заранее, только часть емкости должна быть сохранена.

Приложения [ править ]

Функции губки имеют как теоретическое, так и практическое применение. В теоретическом криптоанализе случайная функция губки - это конструкция губки, где f - случайная перестановка или преобразование, в зависимости от ситуации. Случайные губчатые функции охватывают больше практических ограничений криптографических примитивов, чем широко используемая случайная модель оракула , в частности конечное внутреннее состояние. [5]

Конструкция губки также может быть использована для создания практических криптографических примитивов. Например, криптографическая губка Keccak с 1600-битным состоянием была выбрана NIST в качестве победителя в конкурсе SHA-3 . Сила Keccak проистекает из сложной многоэтапной перестановки f , разработанной его авторами. [6] RC4 -redesign называется Шпритц относится к губке-конструкции , чтобы определить алгоритм.

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

Ссылки [ править ]

  1. ^ Команда Keccak. "Двусторонняя печать губки" (PDF) .
  2. ^ Гвидо Бертони, Джоан Дэемен, Микаэль Петерс и Жиль Ван Аше. «Функции губки» . Ecrypt Hash Workshop 2007.CS1 maint: несколько имен: список авторов ( ссылка )
  3. ^ a b Ривест, Рон; Шульдт, Джейкоб (27.10.2014). «Spritz - губчатый поточный шифр и хэш-функция в стиле RC4» (PDF) . Проверено 29 декабря 2014 .
  4. ^ a b Гвидо Бертони, Джоан Дэмен, Микаэль Петерс и Жиль Ван Аше. «Дуплексирование губки: однопроходное шифрование с проверкой подлинности и другие приложения» (PDF) . CS1 maint: несколько имен: список авторов ( ссылка )
  5. ^ Гвидо Бертони, Джоан Дэемен, Микаэль Петерс и Жиль Ван Аше. «О неразличимости конструкции губки» . EuroCrypt 2008.CS1 maint: несколько имен: список авторов ( ссылка )
  6. ^ Бутин, Чад (2 октября 2012). «NIST выбирает победителя конкурса алгоритмов безопасного хеширования (SHA-3)» . NIST . Проверено 4 октября 2012 года .
  7. ^ van Beirendonck, M .; Trudeau, L .; Giard, P .; Балацукас-Стимминг, А. (29.05.2019). Ядро Lyra2 FPGA для криптовалют на основе Lyra2REv2 . Международный симпозиум IEEE по схемам и системам (ISCAS). Саппоро, Япония: IEEE. С. 1–5. arXiv : 1807.05764 . DOI : 10.1109 / ISCAS.2019.8702498 .