我开发设计用于存储会员的详细信息,以及信用卡详细信息的解决方案。我尽可能地遵守PCI DSS。这里是我的设计到目前为止:信用卡存储解决方案
PAN =主账户==信用卡上的长号码
- 服务器A是一个远程服务器。它存储所有成员的详细信息(姓名,地址等),并提供indivudal重点A的存储
- 服务器B每个PAN是一个本地服务器,并实际持有加密盘,以及关键B,并执行解密。
要获得PAN,客户端与这两个服务器进行身份验证,要求服务器A对各个键A,然后给予重点A到服务器B,这将PAN返回给客户端(提供认证是SUCESSFUL )。 服务器A将只使用服务器B的公钥对密钥A进行加密,因为它将事先提供。 虽然服务器B可能必须先发送一个salt,但是我不认为必须加密
我没有真正考虑任何关于上述的实现(即编码)细节,但是解决方案正在使用Java的Cajo框架(RMI的包装),以便服务器如何相互通信(目前,会员详细信息以此方式传输)。
为什么我想要服务器B做解密,而不是客户端,原因是我害怕解密密钥进入客户端的RAM,即使它可能同样在服务器上一样糟糕......
任何人都可以看到上述设计有什么问题吗?如果需要更改上述内容并不重要。
感谢
jtnire
我应该补充说,服务器B将需要2因素身份验证(密钥文件/密码)来装载驱动器(它将具有完整磁盘加密),并且还需要2因素身份验证才能登录到控制台。密钥文件和密码将由2个不同的人员持有。 – jtnire 2010-03-24 11:03:10
有人建议我将存储服务器与执行加密/解密的服务器分开。这似乎是一个非常好的主意。我唯一担心的是,存储服务器如何知道只与加密/解密服务器通信?钥匙对? – jtnire 2010-03-24 11:51:38