【发布时间】:2011-01-31 05:04:41
【问题描述】:
我正在开发一种解决方案,旨在存储会员详细信息以及信用卡详细信息。我正在尽我所能遵守 PCI DSS。到目前为止,这是我的设计:
PAN = 主帐号 == 信用卡上的长号
- 服务器 A 是远程服务器。它存储所有成员详细信息(姓名、地址等),并为每个存储的 PAN 提供单独的密钥 A
- 服务器 B 是本地服务器,实际上保存加密的 PAN 以及密钥 B,并进行解密。
要获得 PAN,客户端必须向两个服务器进行身份验证,向服务器 A 询问相应的密钥 A,然后将密钥 A 提供给服务器 B,服务器 B 会将 PAN 返回给客户端(前提是身份验证成功)。 服务器 A 只会使用服务器 B 的公钥加密密钥 A,因为它会事先拥有它。 不过,服务器 B 可能必须先发送盐,但我认为不必加密
我还没有真正考虑过关于上述内容的任何实现(即编码)细节,但是解决方案是使用 Java 的 Cajo 框架(RMI 的包装器),这样服务器将如何相互通信(目前,会员详细信息以这种方式传输)。
我希望服务器 B 而不是客户端进行解密的原因是,我害怕解密密钥进入客户端的 RAM,即使它在服务器上可能同样糟糕......
有人能看出上述设计有什么问题吗?上面的要不要改也没关系。
谢谢
jtnire
【问题讨论】:
-
我可能应该补充一点,服务器 B 将需要 2 因素身份验证(密钥文件/密码)来安装驱动器(它将具有全盘加密),并且还需要 2 因素身份验证才能登录安慰。密钥文件和密码将由 2 个不同的人持有。
-
有人建议我将存储服务器与进行加密/解密的服务器分开。这似乎是一个非常好的主意。我唯一关心的是存储服务器如何知道只与加密/解密服务器通信?密钥对?
标签: java encryption pci-dss