首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库加密是否不如应用程序加密安全?

数据库加密是否不如应用程序加密安全?
EN

Stack Overflow用户
提问于 2010-07-07 10:37:29
回答 2查看 1.9K关注 0票数 6

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

我现在正在研究使用ezNcrypt for MySQLEncryption-GENERALSQLCipher等库进行数据库加密。

但是我不太理解数据库加密是如何工作的。如果应用程序只将未经修改的原始数据传递给数据库,而数据库以某种方式自行解密数据,那么如果数据库被盗,数据库级别的加密不会变得更不安全吗?

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-07 11:12:01

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

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

  • 明文-如果它在文件系统中的某个地方是明文,那么这就是您的弱点。可能在应用程序代码中,也可能在某个配置文件中。在任何情况下,获得服务器管理员访问权限(或简单地窃取硬盘)的人都拥有他们所需要的东西,而模糊性是您唯一的protection.
  • Manually-entered -如果您让人类用户在应用程序/数据库/pc启动时输入密钥,那么您基本上*缓解了明文密钥的问题。作为交换,您要求用户记住密钥,并且您放弃了完全自动重新启动的能力(对于需要保持运行的服务器来说,这是个坏消息)。

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

特别是关于MySQL,您可能会发现this thread很有帮助。

票数 2
EN

Stack Overflow用户

发布于 2010-07-07 12:48:07

您使用什么方法对用户进行身份验证?如果身份验证方法在每种情况下都是相同的,那么应用程序中的加密可能不会比数据库中的安全性更高或更低。最有可能的攻击载体仍然是相同的。入侵者似乎不太可能有机会窃取数据库,而不是仅仅获得对它的访问-除非你正在做一些非常愚蠢的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3191538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档