不可信服务器的SSL证书策略
我正在开发一种产品,需要充当本地网络上的服务器,供其他客户端应用程序连接,但受到以下限制:
- 交换的数据非常有价值,并且我们无法保证用户网络的安全或充当服务器的机器。因此,任何 SSL 证书都有可能落入“坏人之手”。
- 为了最大限度地减少对用户体验的干扰,客户端识别服务器的任何非电子方式都应仅限于可写在便利贴上的信息(即 IP 地址、密码,而不是交换密钥文件)。
鉴于这些,我们当前的 SSL 策略是:
- 不要将任何 SSL 证书安装到任何受信任的存储中或根据 CA 证书签署任何证书 - 这可能会给潜在的攻击者提供所有客户端计算机的前门密钥,
- 因此 SSL 证书将是自己的-签署。这不提供中间人保护,因为我们无法验证服务器。然而,它确实为网络不安全但服务器安全的用户提供窃听保护。
- 使用 Rijndael 对称加密在顶部实现“密码”系统,因此即使证书被泄露,也有一些窃听保护(我知道,有很多漏水桶 - 但总比没有好)。该密码可以定期重新生成,最大限度地减少对客户端用户体验的干扰。
在这些限制下,是否有更安全的客户端和服务器通信策略?
I'm developing a product that needs to act as a server over a local network for other client applications to connect to, under the following constraints:
- The data exchanged is very valuable, and we have no guarantee over the security of the users' network or the machine acting as a server. Therefore any SSL certificate could potentially fall into "the wrong hands".
- To minimise disruption to the user experience, any non-electronic means of identifying the server to the client should be limited to information that can be written on a post-it (i.e. IP address, passcode rather than exchanging key files).
Given these, our current SSL strategy is:
- Do not install any SSL certificates into any trusted stores or sign any certificates against a CA certificate - this could give a potential attacker a front-door key to all the client machines
- SSL certificates will therefore be self-signed. This offers no man in the middle protection, because we have no way of verifying the server. It does however offer eavesdropping protection to those users who have insecure networks but secure servers.
- Implement a "passcode" system over the top using Rijndael symmetric encryption, so even if the certificate is compromised there is some eaves-dropping protection (I know, many leaky buckets - but better than nothing). This passcode can be regularly regenerated with minimal interruption to the user experience of the clients.
Within these constraints, is there a more secure strategy for the client and server to communicate?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最后,我们开发了一个系统,可以在内存中为我们要支持的每个通道生成新的 SSL 证书。这不能提供针对中间人的保护,但至少可以防止窃听(除非第三方在传输时可以访问服务器的内存,在这种情况下,所有安全性都毫无意义!)。
In the end we developed a system where we could generate a new SSL certificate in memory for each channel we were going to support. This cannot provide protection against Man in the Middle but does at least protect against eavesdropping (unless the third party has access to the memory of the server at time of transmission, in which case all security is moot anyway!).