【问题标题】:How do you provide encryption keys to a daemon or service?您如何为守护程序或服务提供加密密钥?
【发布时间】:2012-03-02 22:09:22
【问题描述】:

我正在尝试找出一个解决方案来解决我在一个新项目中遇到的“鸡和蛋”问题。

相关系统正在处理信用卡数据,因此卡号等需要加密存储在数据库中。为了符合 PCI 要求,我们为每个“商户”使用唯一的密钥对加密了数字,因此如果一个商户遭到入侵,则应该无法访问其他商户的持卡人数据。

这对于人类与系统的交互来说很好,因为人类可以输入密码来解锁私钥,然后解密数据,但是对于需要访问数据的自动化服务(即以便在以后处理事务)如何最好地向服务/守护进程提供凭据存在问题。

系统背景介绍:

  • 卡号使用非对称密钥对加密
  • 私钥受密码保护
  • 然后使用“主”密钥对对该密码进行加密
  • 然后,获得许可的操作员知道用于解锁主私钥的密码(实际上,他们使用自己的密钥对加密了密码的副本,他们只知道密码)。
  • 守护进程将作为自己的用户和组在 linux 系统上运行。

为了让守护程序能够解密数据,我正在考虑以下几点:

  • 设置类似于.pgpass 工作方式的密码短语文件
  • 将文件存储在守护程序用户的主目录中
  • 将文件的权限设置为 0600
  • 设置文件完整性监控系统,例如 Tripwire,以通知安全组(或类似的)文件或权限的任何更改。
  • 禁用守护程序用户的登录,因为它仅用于进程。

鉴于上述情况,我想知道这是否足够。显然,弱点在于系统管理员 - 在安全系统上受信任的这些(即 2 个)很少 - 因为他们可以提升他们的权限(即 root),然后更改文件的所有权或能够读取的权限密码 - 然而,这很可能再次通过监控文件的校验和更改、FIM 校验和等来缓解。

那么我是不是以错误的方式处理这个问题,还是有其他关于如何处理这个问题的建议?

【问题讨论】:

    标签: security cryptography daemon pci-dss pci-compliance


    【解决方案1】:

    不确定这会有多大帮助,因为您的目标是遵守 PCI-DSS,您需要说服的人就是您的 QSA。

    大多数 QSA 公司都乐于以咨询的身份工作并帮助您找到合适的解决方案,而不是纯粹以评估的身份工作,因此请尽早让他们参与并与他们合作以获得他们乐于签署合规的解决方案.

    也许值得让他们记录下为什么它就足够了,这样如果您将来更改 QSA,您可以随身携带推理,以防问题再次出现。

    根据上述解决方案,他们可能会提到的一件事是密钥管理的知识拆分。听起来单个管理员拥有访问密钥所需的所有知识,而 PCI (3.6.6) 需要拆分知识和双重控制来手动明文密钥管理过程。

    【讨论】:

    • 我们与我们的 QSA 讨论了这个问题(这可能是自审计以来关系中最有价值的部分),他建议我们使用我们的一个运营商帐户(其中只有用户知道密码)解锁服务帐户详细信息。这有点像嵌套的俄罗斯娃娃设置,但它似乎可以工作,这意味着我们可以根据需要轻松旋转键。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2022-07-23
    • 2023-03-22
    相关资源
    最近更新 更多