我接收数据,并在将其保存到数据库之前使用aes或blowfish对其进行加密,因此加密是在应用程序级别完成的。如果有人窃取了数据库,数据将相对安全,除非他们也窃取了应用程序(密钥存储/访问的位置)。
我现在正在研究使用ezNcrypt for MySQL、Encryption-GENERAL或SQLCipher等库进行数据库加密。
但是我不太理解数据库加密是如何工作的。如果应用程序只将未经修改的原始数据传递给数据库,而数据库以某种方式自行解密数据,那么如果数据库被盗,数据库级别的加密不会变得更不安全吗?
在我目前的情况下,如果数据库被盗,攻击者将不得不加固第二个组件(应用程序级别的密钥)来解密数据库。但是对于数据库加密,数据库本身完全负责加密,所以通过窃取数据库,攻击者不是拥有解密数据库所需的一切吗?
也许我不清楚数据库级解密是如何工作的。
发布于 2010-07-07 11:12:01
加密算法应用于应用程序堆栈中的不同点,但最终无论您使用应用程序还是db层解决方案,该过程都是完全相同的。密钥必须存储在某个地方,如果攻击者同时获得加密数据和密钥,则他们可以访问这些数据。
因此,真正的问题可以归结为如何存储密钥:
*我之所以这么说,主要是因为从技术上讲,密钥仍然以明文形式存在于RAM中的某个地方。但这比存储在磁盘上的东西要难得多(尽管有内存交换)。
特别是关于MySQL,您可能会发现this thread很有帮助。
发布于 2010-07-07 12:48:07
您使用什么方法对用户进行身份验证?如果身份验证方法在每种情况下都是相同的,那么应用程序中的加密可能不会比数据库中的安全性更高或更低。最有可能的攻击载体仍然是相同的。入侵者似乎不太可能有机会窃取数据库,而不是仅仅获得对它的访问-除非你正在做一些非常愚蠢的事情。
https://stackoverflow.com/questions/3191538
复制相似问题