使用pgcrypto而不是分区级加密有一些安全优势吗?

ent*_*opy 4 encryption postgresql

这里的文档:http://www.postgresql.org/docs/8.2/static/encryption-options.html描述了使用postgresql时加密数据的几种方法.

我想知道使用pgcrypto加密特定列是否有任何安全优势,而不是简单地加密数据库所在的整个分区.在我看来,pgcrypto使用起来很麻烦(而不是仅仅使用SQL查询而不必担心加密的东西)所以应该有它存在的理由.难道只是人们可能没有能力管理数据库服务器(共享主机/等......)所以他们必须与pgcrypto合作,还是有安全原因?

在我的特定情况下,应用程序代码和数据库位于同一主机上,因此在服务器本身存在时危及服务器本身会导致数据泄露(在一种情况下可以在代码中查找加密密钥,或者只是从另一个中安装的卷中检索数据.

编辑:我忘了提及,在这种特殊情况下,数据是由服务器而不是客户端使用的,即客户端无法在运行时提供密钥,它必须在服务器上的应用程序代码中.

man*_*iek 5

  • 您可以在不影响数据的情况下授予DBA SQL级别访问权限.
  • 您可以为不同的数据使用单独的加密密钥
  • 您的备份(转储)已加密
  • 如果客户端提供加密密钥,则不必信任服务器
  • 如果您将应用服务器与数据库服务器分开,则加密密钥只能位于应用服务器上.
  • 您只能加密部分数据.
  • 最后但并非最不重要:pgcrypto比对称单密钥加密更多,如非对称加密,加密散列,cryto-safe PRNG,密码散列.

  • _"如果客户端提供加密密钥,则不必信任服务器"_是不完全正确的,因为当使用pgcrypto时,密钥是对数据库服务器的SENT,因此,在数据库服务器的情况下达成妥协(但不是应用服务器)已被入侵.正如他链接的页面所述:_"解密数据和解密密钥存在于服务器上...这提供了一个简短的时刻,**数据和密钥可以被完全访问数据库服务器的人拦截**,例如系统管理员."_ (2认同)