0

我为零售连锁店的 POS 交易创建了后端/处理/统计。问题是,现在是从 alpha 到 beta 的时候了,我们需要为传入的数据提供某种安全性。这就是我迷路的地方。我如何在这种系统中实现一些类似的安全性?

我想出的是一个简单的非对称键/值对,它对于每个 POS 系统都是唯一的,其中服务器拥有所有的私钥,每个 pos 都有这个交换的公共部分。除此之外,所有的数据交换都是通过 HTTPS 发送的。

这样的事情有意义吗?还是有更好的方法来保证数据安全?

PS 由于需要单独重新配置每个 POS,这与该系统无关,因此不必在每个 POS 上进行手动工作。

4

1 回答 1

1

你想完成两件事:

1) 加密流量,使其对外人隐藏(保密)。只需强制 SSL 用于客户端和服务器之间的流量,您就可以很容易地完成此操作。服务器将需要 x509 证书来完成此操作。

2) 确保进入服务器的所有流量都来自受信任的客户端/POS(完整性)。您可以使用几种不同的技术来完成此操作,这两种技术都需要在每个客户端 (POS) 系统上安装 x509 证书:

a) 要求对服务器的所有请求都附有客户端证书. 在这种情况下,客户端 (POS) 安装了 x509 证书,它可以访问自己的私钥(服务器没有,也不应该有这个私钥,它属于客户端)。服务器被配置为在每个请求中都需要客户端证书,它还被配置为验证所提供的客户端证书确实与其中一个 POS 系统匹配。因此,如果您稍后添加新的 POS,您需要对服务器进行更改,以确保它认为新的 POS 证书有效。下面是对协议的描述,以供您自己丰富,您不需要确切地知道它是如何工作的(因为大多数工具 IIS、Apache 等都会为您抽象出其中的大部分内容),但它确实使事情变得神秘。 http://publib.boulder.ibm.com/infocenter/tivihelp/v5r1/index.jsp?topic=%2Fcom.ibm.itim.infocenter.doc%2Fcpt%2Fcpt_ic_security_ssl_authent2way.html

或者

b) 要求对服务器的所有请求都由受信任的客户端进行数字签名。公钥(非对称)加密允许您对消息进行签名。基本上它是用客户端(POS)的私钥签名的,然后任何人(包括服务器)都可以通过使用客户端的公钥验证签名来验证它的完整性。许多工具实际上会对消息进行加密和签名,这没关系,但如果您已经在使用 SSL 并且性能是一个问题,那么您不需要加密两次。如果安全性比性能更重要,那么加密两次也无妨。以下是有关数字签名的更多信息: http ://www.cgi.com/files/white-papers/cgi_whpr_35_pki_e.pdf

所以你应该对如何进行有一个很好的计划。当您着手实施这些解决方案时,请随时在这里询问,因为有很多事情通常在第一次时不起作用,并且调试通常很困难。我推荐一个名为 Fiddler 或 WireShark 的工具,它可以在一定程度上帮助调试 Web 服务。确保您的客户端可以访问他们自己的私钥,并且客户端的证书受到服务器的信任。祝你好运。

http://fiddler2.com/

于 2013-05-08T13:23:50.467 回答