Рейтинг:0

Безопасно ли повторно использовать ключ с Fernet?

флаг in

Фернет — это предположительно защищенная от идиотов схема симметричного шифрования на основе AES, которая (опять же, предположительно) была тщательно разработана, чтобы избежать любых ловушек, которые могут поставить под угрозу безопасность.

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

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

С другой стороны,

  • Фернет якобы защищен от идиотов
  • Fernet использует случайный IV каждый раз, когда что-то шифрует.
  • Документация не предупреждает о повторном использовании ключей

Так, что может пойти не так, если я повторно использую ключ с Fernet?

Мой альтернативный подход, если повторное использование ключа небезопасно, заключается в шифровании файлов следующим образом:

  • Выберите случайную соль
  • Используйте KDF для вычисления отдельного ключа из общего ключа и соли.
  • Зашифруйте файл с помощью индивидуального ключа и добавьте соль

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

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

На указанной странице рассказывается о шифровании AES-128-CBC с помощью Encrypt-then-MAC Mac с HMAC.

обязательство пользователя заключается в предоставлении сообщения, 256-битного универсального случайного ключа и метки времени.

Fernet разбивает 256 бит ключа на две части одинакового размера.Сначала часть используется при шифровании сообщения с помощью AES-128-CBC, затем тег аутентификации $t$

$$ t = \operatorname{HMAC-SHA-256}( Версия … Отметка времени … IV … Зашифрованный текст) $$ вычисляется с другой частью ключа.

что может пойти не так, если я повторно использую ключ с Fernet?

  1. Шифрование слишком много сообщений с одним и тем же ключом может вызвать коллизию IV под одним и тем же ключом.

    Это может привести к утечке, что начало сообщений совпадает. Если вы отредактируете свой файл и не зашифруете его с помощью другого IV, произойдет утечка того же префикса файлов.

    ну надо шифровать $2^{64}$ сообщения, чтобы иметь коллизию IV под одним и тем же ключом. 50% слишком много для преимущества атакующего, следует учитывать более низкие вероятности.

  2. Шифрование слишком большой блок данных

    Может вызвать коллизию зашифрованного текста, которая использует сладкий32 атака. X-или блока сообщения можно получить, если $c_i = c_j$ с $i \neq j$ $$m_i \oplus m_j = c_{1-1} \oplus c_{j-1}.$$

    Опять же, 50% слишком много для преимущества атакующего, следует учитывать более низкие вероятности.

Эти две проблемы действительно зависят от того, сколько у вас файлов и какого они размера.

Не совсем безопасно, лучше использовать разные ключи и IV для каждого файла. На самом деле API Fernet позволяет это сделать.

Мой альтернативный подход, если повторное использование ключа небезопасно, заключается в шифровании файлов следующим образом:

  • Выберите случайную соль
  • Используйте KDF для вычисления отдельного ключа из общего ключа и соли.
  • Зашифруйте файл с помощью индивидуального ключа и добавьте соль

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

Это то, что мы делаем; иметь разные ключи и IV для каждого файла. Ты можешь использовать ХКДФ даже только расширять часть для получения ключа и IV.

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

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

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