【发布时间】:2011-12-17 22:16:23
【问题描述】:
我想用主密钥或主密码保护我的机密信息数据库并加密数据。只有用户输入正确的主密钥,数据才会被解密。
显然,在创建主密钥时,我应该只将其保存为哈希值(例如 SHA)。但是我还需要一个密钥来加密数据(例如 AES)。我想到了使用主密钥的哈希值作为加密密钥。
但可能,这并不安全,对吧?
如果用户输入一个键,则计算哈希值并将其与保存的哈希值进行比较。如果它们相同,则应该对数据库进行加密。
但是保存主密钥的哈希值并将其用作加密密钥可能存在安全风险,对吧?
我是否应该使用主密钥的实际(明文)版本来加密数据?
或者只是省略将哈希值与输入的密码进行比较的步骤,而只是尝试使用输入的密码加密数据?
我希望你能理解我想告诉你的关于我的问题的内容。提前非常感谢!
【问题讨论】:
-
为什么不用密码保护数据库访问?为什么还要加密数据?
-
也许是为了防止诸如 SQL 注入之类的攻击或任何其他只能访问数据库中数据的攻击?
-
@Hanno:通过加密数据来防止 SQL 注入?对我来说似乎太多了。更不用说如果 SQL 注入是可能的,数据可能会被破坏,加密也无济于事
-
是的,SQL 注入等可以破坏数据库中的很多东西。 - 或者,比方说,您的数据库上个月的一个备份磁带通过不受信任的人走了一些奇怪的弯路……软件访问保护在这里不再有帮助。
-
哦,但是:对于密码,加密真的只是第二好的方法。如果您可以使用加盐和散列的密码,就这样做吧!
标签: security encryption hash