加密秘密信息数据库:完全或部分?

时间:2011-10-29 17:00:42

标签: security encryption passwords aes

想象一下,你有一个充满秘密信息的数据库,例如:用户名+密码列表。

如果您想使用AES-128等算法加密此数据库,您将如何加密数据?

  • 仅加密秘密信息字段,例如密码。保留用户名。输出可以是:“mike@example.org/AES_ENCRYPTED_PASSWORD; linda@example.org/AES_ENCRYPTED_PASSWORD”

  • 加密整个数据库,输出为:“AES_ENCRYPTED_DATA”

我在想的问题:可能是数据以XML格式保存。因此,可能的攻击者可以使用暴力来尝试随机密码,直到他在加密数据中找到XML元素。所以它比第一种方法更容易破解。正确?

或者以XML格式临时保存我的数据然后使用AES加密整个XML文件是否安全?

3 个答案:

答案 0 :(得分:1)

如果您使用相同的密码短语,那么无论是一堆用户名/密码还是XML文件集,难度都是相同的。

仅加密必须加密的内容。虽然在密码问题上,加密并不是一个好主意,因为密码可以被恢复(这会将它们透露给攻击者)。

如果用户无法调出密码,最好存储哈希并使用机制生成新密码。

答案 1 :(得分:1)

据我了解OP,问题更多的是“已知纯文本”以及要加密的邮件的大小和冗余。

所以:

是的,在大多数情况下,如果已知部分明文(例如XML标签),则“更容易”破解加密。

是的,如果有更多加密数据,可能更容易破解加密。

但是:所有常见的现成加密算法,都尚未被视为“破损”,对两种类型的攻击都具有相当的免疫力。

理论上,如果只加密几乎随机内容(如密码)的短消息,它实际上应该更安全。但是,如果单独加密许多这样的消息,则必须考虑初始化向量(类似于“盐”)等,以避免产生实际上想要隐藏的模式。

结论:

使用一个好的密钥/密码/“...”的“好”算法,并且 - 如果可行 - 将您的“数据库”加密为一个大的明文消息。

  

或者使用AES加密整个[数据库]文件是否安全?

是的,这就是我原则上会推荐的。但请非常小心“临时”存储数据的方式和位置;例如,“临时”目录中的文件可能不像人们想要相信的那样“临时”。

答案 2 :(得分:-1)

最好将密码存储为带盐的哈希。