我正在开发一种产品,该产品需要在本地网络上充当服务器,以供其他客户端应用程序连接,受以下限制:
- 交换的数据非常有价值,我们无法保证用户网络或作为服务器的机器的安全性。因此,任何 SSL 证书都可能落入“坏人之手”。
- 为了尽量减少对用户体验的干扰,任何向客户端识别服务器的非电子方式都应仅限于可以写在便利贴上的信息(即 IP 地址、密码,而不是交换密钥文件)。
鉴于这些,我们当前的 SSL 策略是:
- 不要将任何 SSL 证书安装到任何受信任的存储中或针对 CA 证书签署任何证书 - 这可能会给潜在的攻击者提供所有客户端计算机的前门密钥
- 因此 SSL 证书将是自签名的。这不会提供中间人保护,因为我们无法验证服务器。但是,它确实为那些网络不安全但服务器安全的用户提供了窃听保护。
- 使用 Rijndael 对称加密在顶部实施“密码”系统,因此即使证书被泄露,也有一些窃听保护(我知道,很多漏桶 - 但总比没有好)。可以定期重新生成此密码,而对客户的用户体验的干扰最小。
在这些限制条件下,客户端和服务器之间是否有更安全的通信策略?