Хранение зашифрованных файлов в базе данных - PullRequest
3 голосов
/ 07 мая 2011

Я использую PyCrypto для хранения некоторых файлов в базе данных SQLITE.

Я использую 4 поля:
имя файла,
длина файла (в байтах))
SHA512-хэш файла
зашифрованный файл (с AES и затем base64 в ASCII).

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

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

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

(я использую python, но вы можете привести примеры на любом языке)

Ответы [ 4 ]

3 голосов
/ 07 мая 2011

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

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

1 голос
/ 07 мая 2011

Вы не можете просто сказать: «О, это AES-256, конечно, это безопасно».Просто по вашему посту я вижу, что вы вводите в заблуждение атаки на потоковые и блочные шифры, поэтому вам, вероятно, следует НЕ реализовывать это, пока вы не проведете исследование этой темы.

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

Реальное решение: ИСПОЛЬЗУЙТЕ РЕАЛИЗАЦИЮ КТО-ЛИБО .

1 голос
/ 07 мая 2011

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

Если вы сделаете это, я не вижу проблем с вашим подходом.

0 голосов
/ 09 мая 2011

Вам действительно нужно подумать о том, от каких атак вы хотите защититься, и о ресурсах возможных атакующих.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...