Шифрование / дешифрование больших файлов с помощью PyCrypto - стратегии - PullRequest
2 голосов
/ 03 апреля 2012

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

Итак, я смотрел на AES, и хотя передача байтовых блоков размером 64 или 32 Кбайт в объект AES, который вы создаете с использованием хэша пароля, выглядит нормально, мне все еще интересно, как сделать это безопаснее, так как я продолжайте читать, что криптография очень легко испортить.

Итак, я получаю фразу-пароль, получаю контрольную сумму SHA256, я использую ее для ключа при создании моего объекта шифрования / дешифрования.

Другие вещи, на которые я не смог найти ответ: использовать ли мне IV? если это так, я должен убедиться, что объект использует тот же IV при расшифровке, который он использовал при шифровании ... как мне это сделать?

Почему я увидел, что кто-то здесь сказал, что вы должны заполнить последний блок файла, даже если число байтов делится на 16?

Какой тип режима шифрования лучше всего использовать?

Не могли бы вы порекомендовать другие ресурсы для получения дополнительной информации о безопасности / криптографии?

Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 03 апреля 2012

Чтобы посмотреть на некоторые ваши вопросы.

В большинстве случаев используйте режим CTR или режим CBC.Если вам нужна встроенная аутентификация, используйте Режим счетчика Галуа (GCM).В противном случае используйте для аутентификации отдельный HMAC с другим ключом.

Требуется IV со всеми тремя предлагаемыми режимами, хотя в режиме CTR его иногда называют nonce.Он может быть отправлен открытым текстом и обычно добавляется к зашифрованному тексту.

Всегда следует использовать заполнение.Выберите PKCS7 или PKCS5, они фактически одинаковы.

Для изучения криптографии я бы предложил '1011 * Практическая криптография ' Фергюсона и Шнайера.Я понимаю, что существует обновленная версия под названием « Cryptography Engineering », которую я не читал.

1 голос
/ 03 апреля 2012
  1. Не используйте прямой хэш парольной фразы, но используйте (или создайте) KDF
  2. Вы определенно должны использовать IV . Вы можете сохранить его как первый блок вашего файла.
  3. Лично я бы, вероятно, использовал AES_MODE.CTR - см. Википедию для Почему? и Ответ Алекса Мартелли на этот старый вопрос для Как?
...