我正在使用pgcrypto加密postgre表中的列。postgre版本为9.5.1。我已经知道了如何使用pgp_sym_encrypt()加密和使用pgp_sym_decrypt()解密。我的问题是想办法把钥匙藏起来。
我试图避免让应用程序解密返回的数据。只有当某人能够查看整个表(45万行)并将数据放在一起时,该表中的数据才是敏感的,因此数据返回到解密的应用程序是可以的。
在pgAdmin中,我的查询中包含了以下内容
SELECT pgp_sym_decrypt(column1,'password')很明显,我不希望我们的应用程序使用的查询模板将密码存储在其中,然后在每次运行查询时传递它。有什么好主意吗?
发布于 2017-11-02 20:38:04
没有办法避免服务器上对称加密的缺点。
如果您想要“避免应用程序解密”,PostgreSQL必须访问密钥和加密数据才能解密它。只有两个来源可以做到这一点。
当然,如果您有一个像webserver之类的数据访问点,您也可以在那里解密,并将密钥保持在服务器上。
发布于 2017-11-06 22:44:59
所以,我很好奇,你最后做了什么?
将评论转换为回答,以满足上述好奇心. :)
除非第二条被误解:
假设应用程序在该表上具有行级特权,则可以使用
SELECT pgp_sym_decrypt( column1, get_pswd(pkey) ) 其中,get_pswd(pkey)将为该特定的pkey行选择密码。
并且可以将每一行的pkey和密码存储在应用程序没有选择特权的单独表中。
https://dba.stackexchange.com/questions/189990
复制相似问题