Рейтинг:1

Использование Chaskey в качестве потокового шифра

флаг cz

Часки (https://eprint.iacr.org/2014/386.pdf) — это безопасный, компактный и эффективный MAC для встраиваемых систем, который выиграл множество тестов. Он построен с использованием блочного шифра Эвена-Мансура. Этот блочный шифр выполняет XOR открытого текста с ключом, применяет общедоступную функцию перестановки, затем XOR результата с тем же ключом для создания зашифрованного текста. К сожалению, в документе обсуждается только вариант использования MAC, а не вариант использования шифрования. Веб-сайт (https://mouha.be/chaskey/), однако упоминает и другие варианты использования:

  1. Легкий ПРФ.
  2. Может использоваться для криптографической проверки целостности сообщения (как MAC).
  3. Для аутентификации пользователей (в протоколах запрос-ответ).
  4. Для генерации случайных чисел (в режиме счетчика).

Мне интересно, можно ли его также использовать безопасным способом для шифрования, то есть использовать его в режиме счетчика для создания потокового шифра. Это означало бы, что мы могли бы создать алгоритм Encrypt-then-MAC, используя только Chaskey в качестве примитива, что было бы очень эффективно для встраиваемых систем (конечно, в сочетании с одноразовым номером для каждого сообщения).

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

Рейтинг:0
флаг in

Режим CTR изначально предназначен для PRF.

Любой PRF* можно превратить в потоковый шифр с режимом CTR.Однако не рекомендуется использовать сложную функцию, созданную для MAC, для использования в качестве потокового шифра. Используйте ChaCha для потокового шифра, созданного из PRF, или используйте прямой потоковый шифр, такой как Trivium.

Если вы действительно хотите использовать, используйте ввод как $$F_k(\text{nonce_block}\mathbin\|\text{counter_block})$$ как режим CTR и зашифровать как

$$c_i = m_i \oplus F_k(\text{nonce_block}\mathbin\|\text{counter_i})$$

Убедись в том, что

  • $\text{counter_i}$ никогда не превышайте размер $\text{counter_block}$,
  • никогда не возвращаться в исходное состояние, если счетчик достигает максимума $2^{\text{counter_block_size}}-1$
  • не усложняйте возобновление счетчика для другого шифрования.
  • Под выше, новее пусть $(IV,ключ)$ появиться снова, где $IV = (\text{nonce_block}\mathbin\|\text{counter_i})$

* На самом деле для криптографии любого недостаточно, важен размер ключа и размер ввода и вывода. Сегодня мы предпочитаем xChaCha20, так как он позволяет использовать 192-битные одноразовые номера, чтобы избежать коллизии одноразовых номеров под одним и тем же ключом, и имеет 512-битные размеры ввода/вывода. 128-битной защиты Chaskey достаточно для легковесной криптографии, однако для других целей она недостаточно надежна.

флаг cz
Большой! Дополнительный вопрос: CCM использует один и тот же ключ как для шифрования CTR, так и для MAC путем тщательного построения входных данных для блочного шифра. Можем ли мы использовать аналогичный подход здесь, чтобы избежать необходимости иметь два ключа?
kelalaka avatar
флаг in
Он нуждается в анализе. Всегда лучше генерировать два из одного с помощью KDF, такого как [HKDF] (https://crypto.stackexchange.com/a/76589/18298), и вам будет достаточно расширения, если у вас есть единый случайный ключ.

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

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