Функция губки - Sponge function

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

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

строительство

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

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

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

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

Операция

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

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

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

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

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

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

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

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

Дуплексная конструкция

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

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

Режим перезаписи

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

Приложения

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

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

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

Ссылки