我是一名软件开发人员,正在考虑为信用卡号存储编写自定义系统。我们的目标是完全符合支付卡行业 (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 标准?
如果不是公钥/私钥编码,是否推荐其他加密技术?
我这样做正确吗?
任何其他意见,或在这里学到的教训?
非常感谢。