Рейтинг:5

Можете ли вы использовать SHAKE256_XOF с XOR для создания потокового шифра?

флаг mc

SHAKE256_XOF — это расширяемая функция вывода, основанная на SHA3-512. SHAKE256_XOF можно использовать для создания битовой строки бесконечной длины с 256-битной защитой. Например:

из Crypto.Hash.SHAKE256 импортировать SHAKE256_XOF

встряхнуть = встряхнуть256_XOF()
Shake.update(b'key' + b'nonce')

для _ в диапазоне (10):
    печать (встряхнуть. прочитать (16). hex())
18068a140f4c0f1f85f17da13b049155
1fc6d25b11833480dae5fba50b8b73db
bf4284c0d9a32b9b374ae82d5c0514c6
...

SHAKE256_XOF — псевдослучайная функция, поэтому исключающее ИЛИ-обработка его вывода открытым текстом должна давать зашифрованный текст. Насколько я понимаю, это будет асимметричный потоковый шифр. Мне трудно найти исследование по этому вопросу, кроме того, что оно возможное и Брюс Шнайер говоря «Я не знаю криптоаналитического анализа конкретных однонаправленных хэш-функций в качестве блочных шифров; дождитесь такого анализа, прежде чем доверять любому из них». Наконец, этот шифр можно сделать аутентифицированный по SHA3-512 как часть семени. Это приводит к окончательному алгоритму:

из Crypto.Hash.SHAKE256 импортировать SHAKE256_XOF
из Crypto.Hash импортировать SHA3_512

xor = лямбда левый, правый: байты (a ^ b для a, b в zip (левый, правый))

открытый текст = b'открытый текст'
ключ = b'ключ'
одноразовый номер = b'одноразовый номер'
дайджест = SHA3_512.new().update(открытый текст).digest()

e_shake = SHAKE256_XOF (). Обновление (ключ + одноразовый номер + дайджест)
cipher_text = xor(e_shake.read(len(открытый текст)), открытый текст)

d_shake = SHAKE256_XOF (). Обновление (ключ + одноразовый номер + дайджест)
d_plaintext = xor(d_shake.read(len(cipher_text)), cipher_text)

печать (d_plaintext)
  1. Есть ли литература по использованию SHAKE256_XOF в качестве шифра?
  2. Чем этот метод отличается от AES256 с точки зрения безопасности?
  3. Каковы слабые стороны или недостатки этого шифра? Очевидно, что использование SHA3-512 для аутентификации означает, что его нельзя эффективно зашифровать за один проход, а для расшифровки требуется вычисление дайджеста SHA3-512 для аутентификации (я изучаю, как работает аутентифицированное шифрование, поэтому предложения и отзывы приветствуются) .
  4. Дает ли это какое-либо возможное преимущество перед AES256?
  5. AES256 имеет 128-битную устойчивость к теоретический квантовые атаки. Будет ли этот шифр поддерживать мин (длина_ключа/2, 256) немного сопротивления теоретическим квантовым атакам, которые SHAKE256_XOF имеет.
Рейтинг:7
флаг vu

В разделе 3.2 «Режимы использования функций губки» Функции криптографической губки (сокращенно CSF для целей этого ответа), авторы перечислили несколько «режимов работы» для разных целей, одним из которых являются приложения потокового шифрования. Вот таблица:

Функциональность Выражение Вход Вывод
$n$-битная хеш-функция $ч = Н(М)$ $ млн $ $\lэтаж Z \rэтаж _n$
$n$-битная рандомизированная хэш-функция $h = H_R(M)$ $R|M$ $\lэтаж Z \rэтаж _n$
$n$-битовая хэш-функция дифференциация экземпляров $h = H_D(M)$ $Д|М$ $\lэтаж Z \rэтаж _n$
Медленный $n$-битная односторонняя функция $ ч = Н _ {\ текст {медленно}} (М) $ $М|0^N$ $\lэтаж Z \rэтаж _n$
$n$-битная функция MAC $T = MAC(K,[IV,]M)$ $К|IV|М$ $\lэтаж Z \rэтаж _n$
Потоковое шифрование с произвольным доступом ($n$-битовый блок) $z_i = F(K,IV,i)$ $К|IV|i$ $\lэтаж Z \rэтаж _n$
Поточный шифр $Z=F(K,IV)$ $К|IV$ как есть
Генератор детерминированных случайных битов (DRBG) $z=DRBG(начальное число)$ семя как есть
Генерация маски и функция вывода ключа $ маска = F (семя, л) $ семя $\lэтаж Z \rэтаж _l$

Есть ли литература по использованию SHAKE256_XOF в качестве шифра?

Ну, бумага вас прикрыла.

Чем этот метод отличается от AES256 с точки зрения безопасности?

Этот метод имеет равную силу с точки зрения грубой силы. поточный шифр SHAKE может иметь более длинные периоды, чем AES-256, либо в режиме счетчика (CTR), либо в режиме обратной связи шифра (CFB).

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

На самом деле, если вы посмотрите на «дуплексные» режимы (которые также рассматриваются в документе CSF), AEAD на самом деле проще реализовать за один проход.

Дает ли это какое-либо возможное преимущество перед AES256?

Я упомянул 2 (длина периода, 1 проход). Он также имеет лучшую масштабируемость параметров, чем блочный шифр с фиксированной шириной, поэтому я считаю его третьим.

AES256 имеет 128-битную устойчивость к теоретическим квантовым атакам. Будет ли этот шифр поддерживать мин (длина_ключа/2, 256) биты сопротивления теоретическим квантовым атакам, которые есть у SHAKE256_XOF.

Возможно, но я не силен в математике.

forest avatar
флаг vn
XOF действительно удивительно универсальны.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.