我要求在Postgres中以加密形式存储某些数据。显然,我需要加密它,存储它,并能够读取和解密它。这样做最好的方法是什么?
最好的方法是在客户端或应用服务器上进行加密,所以数据库不知道密钥是什么,也不能解密数据。如果客户端/应用服务器在不同的主机上,一切都会更好。
原文链接:/postgresql/193205.html如果您的数据库正在为您加密和解密数据,则很容易将密钥与数据库一起窃取。
如果您使用pgcrypto的数据库加密功能,您可以让应用程序发送密钥以及数据,这至少有所帮助。尽管如果有用的sysadmin打开了积极的语句记录或自动计划转储,仍然有可能将密钥暴露在日志中,并且最终如果密钥进入数据库机器,那么它们比不存在。控制数据库机器的攻击者也可以更改日志设置,替换postgresql二进制文件,或者以嗅探流量捕获密钥和数据。
如果appserver和db位于同一台计算机上并且由相同的角色进行管理,则不用担心隔离它们,并且使用pgcrypto可能是合理的。
无论哪种方式,记住要盐!