加密数据库字段的好方法是什么?
有人让我对数据库中的一些字段进行加密。
问题是,这些字段在读取后需要被解密。
我正在使用Django和SQL Server 2005。
有什么好的建议吗?
4 个回答
6
我之前也遇到过同样的问题,所以我想出了一个解决方案:http://djangosnippets.org/snippets/2489/
我用的是M2Crypto作为加密引擎,不过如果你想的话,可以换成其他的。
正如TomTom所说,这种做法只是让攻击者的工作变得更难,而不是让他们完全无法解密。除了要访问你的数据库,他们还需要找到你存储密钥的地方,这个密钥是用来生成加密的。不过,通过把密钥和它保护的数据分开,你至少可以选择进一步保护这个密钥(比如用一个密钥管理服务器),这样就能让安全性更高。多层防御是一种不错的策略,但你也需要考虑在特定应用中什么算是过度保护。
另外,给任何可能用于搜索或排序的字段加密是个糟糕的主意(我只用这个方法来存储一个不支持正常令牌化OAuth连接的网络服务的OAuth凭证)。
6
没错。告诉你的人要现实点。这听起来没什么道理。如果是关于存储的值的话,2008年的企业版可以存储加密的数据库文件。
否则,如果你真的需要这样做(虽然有很多缺点),那就把它们加密,然后作为字节字段存储。