Шифрование базы секретной информации: полностью или по частям? - PullRequest
0 голосов
/ 29 октября 2011

Представьте, что у вас есть база данных, полная секретной информации, например, списка имен пользователей + паролей.

Если вы хотите зашифровать эту базу данных с помощью алгоритма, такого как AES-128, как бы вы зашифровали данные?

  • Шифровать только поля секретной информации, например, пароли.Оставьте имена пользователей такими, какие они есть.Вывод может быть следующим: «mike@example.org/AES_ENCRYPTED_PASSWORD; linda@example.org/AES_ENCRYPTED_PASSWORD»

  • Шифрование всей базы данных, вывод будет: «AES_ENCRYPTED_DATA»

Проблема, о которой я думаю: возможно, данные сохраняются в формате XML.Таким образом, возможный злоумышленник может использовать произвольные пароли, используя грубую силу, пока не найдет XML-элемент в зашифрованных данных.Так что взломать легче, чем при первом подходе.Правильно?

Или безопасно просто временно сохранить мои данные в формате XML, а затем зашифровать весь файл XML с помощью AES?

Ответы [ 3 ]

1 голос
/ 29 октября 2011

Если вы используете одну и ту же фразу-пароль, сложность будет одинаковой, будь то набор имен пользователей / паролей или наборы файлов XML.

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

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

1 голос
/ 30 октября 2011

Как я понимаю ОП, вопрос больше касается "известного открытого текста", а также размера и избыточности зашифрованного сообщения.

Итак:

ДА, это в большинстве случаев "проще" нарушить шифрование, если известны части открытого текста, такие как XML-теги.

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

НО: все распространенные стандартные алгоритмы шифрования, которые еще не считаются «взломанными», довольно защищены от обоих типов атак.

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

Вывод:

Возьмите «хороший» алгоритм с хорошим ключом / паролем / ... и - если возможно - зашифруйте вашу «базу данных» как одно большое текстовое сообщение.

Илибезопасно ли просто [...] зашифровать весь файл [базы данных] с помощью AES?

Да, это то, что я рекомендовал бы в принципе.Но будьте очень осторожными, как и где вы храните свои данные "временно";например, файл в «временном» каталоге может быть не таким «временным», как хочется верить.

0 голосов
/ 29 октября 2011

Лучше хранить пароли как хеш с солью.

...