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