自己动手做信用卡存储(PCI - DSS 兼容)

信息安全 加密 pci-dss 信用卡
2021-09-02 18:55:52

我是一名软件开发人员,正在考虑为信用卡号存储编写自定义系统。我们的目标是完全符合支付卡行业 (PCI) 标准。我正在与一个租用东西的小企业主合作,并希望保留一张信用卡 # 以确保归还租用的物品。如果客户未能按时退回物品,则他们将根据签署的租赁协议收取费用。信用卡信息在商品退货时被清除。

我们知道,一些信用卡处理商除了我们用于支付租金的正常信用卡处理外,还提供信用卡存储服务。他们存储信用卡号,并为您提供代表该卡在存储中的令牌。(例如 Paypal、Stripe)该企业主已经承诺使用不提供该服务的信用卡处理器。将信用卡处理器更改为 Paypal 或 Stripe 似乎不是一种选择。我们还调查了信用卡存储库服务(使用令牌),但也无法正常工作。每月 1300 美元存储 500 张卡对于这家小企业来说有点太贵了。

我在这里看到了一些关键的帖子:

我可以看到所有三个主要的云存储供应商(亚马逊网络服务、微软 Azure 和谷歌云)作为基础设施都符合 PCI DSS。

我正在认真考虑使用其中一项服务作为信用卡信息的存储库。显然,我们希望完全符合 PCI DSS。我知道如何编写应用程序和服务器。我知道如何添加一个健壮的登录系统。我知道如何使用已发布的加密库进行服务器端加密。我知道如何在托管在其中一个云服务中的单独服务器上创建 MongoDB。我知道如何通过 https 与服务器通信。我不清楚的是整个密钥存储。

从上面的第一个链接项目:

用于加密数据的加密密钥 (EK) 本身应由密钥加密密钥 (KEK) 加密。加密的 EK 应该存储在一个受保护的地方——这可以是一个文件,一个注册表项,等等——重要的是限制对它的访问,仅限应用服务器的用户。

我对这个描述有点困惑。我以为一切都采用了公钥/私钥编码技术。我是否假设在上述参考中,上面提到的加密密钥实际上是私钥?还是我在这里错误地混合了算法?

我曾假设我们正在使用公钥/私钥算法。我假设我将在我的服务器代码中包含公钥。我的意图是将私钥完全离线存储在不同的位置(是的,满足 PCI-DSS 3.5.3 的要求)。我的倾向是要求自定义复制/粘贴私钥以进行信用卡解码/检索。这是一个非常罕见的过程,并且可能只会由企业主执行。

但也许我只是做错了。什么是个人信用卡编码的 PCI-DSS “认可”算法?据我所知,具体要求如下:

强密码学(如 PCI DSS 和 PA-DSS 术语、缩写和首字母缩略词表中所定义)的目的是加密基于经过行业测试和接受的算法(不是专有或“本土”算法)强大的加密密钥...

这是我的问题。

  • 目前推荐使用哪些公钥/私钥样式编码算法来满足此处的 PCI-DSS 标准?

  • 如果不是公钥/私钥编码,是否推荐其他加密技术?

  • 我这样做正确吗?

  • 任何其他意见,或在这里学到的教训?

非常感谢。

2个回答

PCI DSS 对此主题并没有明确说明。安全密钥存储和安全密钥管理的含义由 QSA 解释。您可能会发现一个 QSA 认为私有 KEK 是所有需要保护的东西,并且他将 EK 视为代币。或者您可能会发现一个不同的 QSA,它认为每个单独的 EK 都需要保护,即使它们已使用 KEK 加密。我们有两种类型的审计师,坦率地说,我认为两者中“更严厉的”更胜任(尽管我不同意他对风险的评估。)

我看到的更大的问题是你没有考虑拥有这个系统的成本。像这样的复杂系统将需要时间和金钱来构建。这将需要审核员对系统的所有角落和缝隙进行非常仔细的检查,这也将花费大量时间和金钱。他们必须每年重复考试。

考虑到根据现行规则,如果您构建的系统遭到破坏,出租人将承担与违规相关的所有欺诈成本的 100%。这意味着如果有人偷了百万富翁的卡并用它向法拉利收费,他要为损失负责。如果有人偷了 10 张百万富翁的卡片,并在每张卡片上收取一辆法拉利,他就要为全部损失负责。当然,他的律师会立即转身起诉你建立一个不安全的系统。他们将起诉 QSA 无能,因为他们没有告诉他们您的自制系统不安全。因此,QSA 必须收取足够的费用,不仅要支付审计系统所花费的时间,还要支付一些保险来弥补他们的风险。

坦率地说,出租人最好让他的柜台员工复印客户身份证并将复印件放入柜台下方的投递箱式保险箱中。并保持他的安全摄像头滚动。如果客户未能退回物品,或退回损坏的物品并提出异议,他将拥有将承租人带入小额索赔法庭所需的证据。这比构建一个符合 PCI DSS 的系统并对其进行维护要便宜得多。(这就是 PCI DSS 的真正意义——审计师应该识别和解释风险,企业主应该仔细考虑风险,然后做出明智的选择。)

好吧,参考“PCI DSS 和 PA-DSS 术语、缩写和首字母缩略词词汇表”,我们可以看到以下列出的“强密码学”

强密码学:基于经过行业测试和接受的算法的密码学,以及提供至少 112 位有效密钥强度和适当密钥管理实践的密钥长度。密码学是一种保护数据的方法,包括加密(可逆)和散列(“单向”;即不可逆)。请参阅散列。

在发布时,经过行业测试和接受的标准和算法的示例包括 AES(128 位和更高)、TDES/TDEA(三倍长度密钥)、RSA(2048 位和更高)、ECC(224 位和更高) , 和 DSA/DH(2048/224 位及更高位)。有关加密密钥强度和算法的更多指导,请参阅当前版本的 NIST 特别出版物 800-57 第 1 部分 ( http://csrc.nist.gov/publications/ )。

注意:以上示例适用于持卡人数据的持久存储。PCI PIN 和 PTS 中定义的基于交易的操作的最低加密要求更加灵活,因为有额外的控制措施来降低暴露水平。建议所有新实现使用至少 128 位的有效密钥强度。

一般来说,您可以使用对称加密算法,在使用它之前对其进行加密然后解密,这可以由数据库完成。

回答“我这样做正确吗?” 我会说不。他需要进行代币化,这将使他的生活更轻松、更便宜,他需要完全符合 PCI DSS 并需要每年进行自我评估,由于他因为喜欢而不愿意进行代币化,因此他可能不会合规他的处理器(在这个时代什么处理器不支持标记化?)。通过令牌化,您不必担心任何加密架构,因为令牌不必受到加密保护。