【发布时间】:2012-03-02 22:09:22
【问题描述】:
我正在尝试找出一个解决方案来解决我在一个新项目中遇到的“鸡和蛋”问题。
相关系统正在处理信用卡数据,因此卡号等需要加密存储在数据库中。为了符合 PCI 要求,我们为每个“商户”使用唯一的密钥对加密了数字,因此如果一个商户遭到入侵,则应该无法访问其他商户的持卡人数据。
这对于人类与系统的交互来说很好,因为人类可以输入密码来解锁私钥,然后解密数据,但是对于需要访问数据的自动化服务(即以便在以后处理事务)如何最好地向服务/守护进程提供凭据存在问题。
系统背景介绍:
- 卡号使用非对称密钥对加密
- 私钥受密码保护
- 然后使用“主”密钥对对该密码进行加密
- 然后,获得许可的操作员知道用于解锁主私钥的密码(实际上,他们使用自己的密钥对加密了密码的副本,他们只知道密码)。
- 守护进程将作为自己的用户和组在 linux 系统上运行。
为了让守护程序能够解密数据,我正在考虑以下几点:
- 设置类似于.pgpass 工作方式的密码短语文件
- 将文件存储在守护程序用户的主目录中
- 将文件的权限设置为 0600
- 设置文件完整性监控系统,例如 Tripwire,以通知安全组(或类似的)文件或权限的任何更改。
- 禁用守护程序用户的登录,因为它仅用于进程。
鉴于上述情况,我想知道这是否足够。显然,弱点在于系统管理员 - 在安全系统上受信任的这些(即 2 个)很少 - 因为他们可以提升他们的权限(即 root),然后更改文件的所有权或能够读取的权限密码 - 然而,这很可能再次通过监控文件的校验和更改、FIM 校验和等来缓解。
那么我是不是以错误的方式处理这个问题,还是有其他关于如何处理这个问题的建议?
【问题讨论】:
标签: security cryptography daemon pci-dss pci-compliance