首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >信用卡存储解决方案

信用卡存储解决方案
EN

Stack Overflow用户
提问于 2010-03-24 10:59:30
回答 3查看 4.3K关注 0票数 4

我正在开发一个解决方案,旨在存储成员的详细信息,以及信用卡细节。我正在尽我所能遵守PCI DSS。到目前为止,这是我的设计:

PAN =信用卡上的主帐号==长号

  • 服务器A是远程服务器。它存储所有成员的详细信息(姓名、地址等)并为每个存储的平底锅提供独立密钥A。
  • 服务器B是本地服务器,实际上保存加密的PAN和密钥B,并进行解密。

要获得PAN,客户端必须使用两个服务器进行身份验证,向Server A请求相应的密钥A,然后将密钥A交给服务器B,后者将PAN返回给客户端(前提是验证是成功的)。服务器A只会用服务器B的公钥对密钥A进行加密,因为它会预先得到密钥A。服务器B可能需要先发送一个salt,但是我认为这不需要加密

关于上面的内容,我还没有真正考虑过任何实现(即编码)的细节,但是解决方案是使用Java的Cajo框架(RMI的包装器),因此服务器将如何相互通信(目前,成员身份细节以这种方式传递)。

我之所以希望服务器B进行解密,而不是客户端,是因为我害怕将密钥解密到客户端的RAM中,尽管服务器上的密钥可能同样糟糕……

有人能看出上面的设计有什么问题吗?如果必须改变上面的内容,这并不重要。

谢谢

伊特内尔

EN

回答 3

Stack Overflow用户

发布于 2010-03-24 13:04:53

作为序言,您将经历一段时间的噩梦--开发它并完成PCI遵从性。肯定值得考虑其他选择,例如使用支付服务提供商为您存储这些卡的详细信息,并使用令牌Ids执行临时授权/解决(而不是通过您描述的“拨号信用卡机”输入它们)。

如果您选择忽略该建议并选择PCI路由,那么至少要确保尽早获得一个经过PCI批准的合格安全评估(QSA),以批准您想出的任何设计。PCI不是你应该“尽你所能去遵守”的东西,不幸的是,它是一件全部或根本没有的事情!

尽管如此,解决这个问题的一种方法是在框A上运行一个密钥服务应用程序。这个应用程序需要输入两个“密钥管理”密钥,当xor一起形成一个主密钥时。主密钥只存储在RAM中,从未持久化到磁盘。

应用程序生成密钥加密密钥,这些密钥存储在框A中,由主密钥加密。KEK是自动生成的(它不是用户输入的内容)。KEK可以持久化到方框A上的磁盘,并由主密钥加密。

卡详细信息存储在框B上。此框还存储数据加密密钥,用于对卡详细信息执行对称加密。DEK本身是以加密格式存储的,加密的密钥来自方框A。

执行加密/解密的应用程序应该在方框B上,并在请求KEK之前对方框A进行身份验证。然后使用KEK对DEK进行解密,然后可以进行加密/解密。

票数 6
EN

Stack Overflow用户

发布于 2010-03-24 11:04:29

如果服务器A被黑客入侵-这个meansI仍然可以获得所有信用卡的明文,或?我可以访问所有的个人钥匙,一个信息,我需要访问每一张信用卡。

票数 1
EN

Stack Overflow用户

发布于 2010-03-24 11:23:42

您可能会对如何存储信用卡信息的Bytemark博客条目感兴趣。

要点是持有卡信息的服务器不会泄露号码;允许的操作是“添加新卡”、“更新或删除现有卡”和“收费卡”--服务器连接到支付处理器本身。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2507034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档