我正在开发一种解决方案,旨在存储会员详细信息以及信用卡详细信息。我正在尽我所能遵守 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,即使它在服务器上可能同样糟糕......
有人能看出上述设计有什么问题吗?是否必须更改上述内容并不重要。
谢谢
杰尼尔