数据库加密比应用程序加密安全吗?

coo*_*per 6 mysql database security encryption

我收到数据,并在将其保存到数据库之前使用aes或blowfish对其进行加密,因此加密是在应用程序级别完成的.如果有人窃取数据库,数据将相对安全,除非他们也偷走了应用程序(存储/访问密钥的地方).

我现在正在寻找使用ezNcrypt for MySQL,Encryption-GENERALSQLCipher等库的数据库加密.

但我不太明白数据库加密是如何工作的.如果应用程序只将原始未更改的数据传递给数据库,并且数据库以某种方式解密数据本身,那么由于100%的加密组件被盗,如果数据库被盗,这不会使数据库级加密安全性降低吗?

在我目前的情况下,如果数据库被盗,攻击者将不得不加工第二个组件(应用程序级别的密钥)来解密数据库.但是使用数据库加密,数据库本身对加密负有全部责任,因此通过窃取数据库,攻击者是否拥有解密数据库所需的一切?

也许我不清楚数据库级解密如何工作.

G__*_*G__ 2

加密算法应用于应用程序堆栈中的不同点,但最终,无论您使用应用程序还是数据库层解决方案,该过程都是完全相同的。密钥必须存储在某个地方,如果攻击者同时获得加密数据和密钥,那么他们就可以访问该数据。

因此,真正的问题归结为如何存储密钥:

  • 明文 - 如果它是文件系统中某处的明文,那么这就是你的弱点。也许它在应用程序代码中,也许在某个配置文件中。无论如何,获得服务器管理员访问权限(或只是窃取硬盘驱动器)的人拥有他们所需要的东西,而默默无闻是您唯一的保护。
  • 手动输入 - 如果您在应用程序/数据库/电脑启动时让人类用户输入密钥,那么您就可以*缓解明文密钥的问题。作为交换,您要求用户记住密钥,并且放弃完全自动重新启动的能力(对于需要保持运行的服务器来说是个坏消息)。

* 我说主要是因为从技术上讲,密钥仍然可以在 RAM 中的某个地方以明文形式使用。但这比存储在磁盘上的东西要难得多(尽管有内存交换)。

特别是对于 MySQL,您可能会发现此线程很有帮助。