我需要保护客户端和服务器之间的套接字连接。不幸的是,SSL / TLS在客户端平台上是不可用的(所以那些会自动回答“不要推销自己的安全性”的人:不要 :-)),我需要构建一些东西我。我想出了这个简单的方案(基于我对SSL的小型,可能过时的知识):
据我所知,这是安全的。 MITM是不可能的,因为他无法解密生成的密钥。客户端软件本身是从HTTPS网站下载的。唯一的“缺陷”是嗅探器仍然可以看到发送的消息的数量和大小,但这不是问题。
您的专家意见是什么?
我需要查看要使用的具体加密(取决于客户端上可用的加密),但我认为RSA和AES-256是安全的选择吗?
答案 0 :(得分:0)
只要您提供足够长的密钥,RSA和AES-256就是安全的选择。
答案 1 :(得分:0)
是的,这是SSL的基本(简化)理念。至于密钥长度,AES-256适用于对称,而此时带有2048的RSA应该没问题。不确定系统预计会持续多长时间,但您可能想要考虑一直在多长时间内加密(越来越大)的密钥大小。因此,这可能与您的硬编码概念有关,而不是将其作为用户指定。
我不确定你为什么要在那里硬编码公钥。如果它被撤销,或者它们(无论出于何种原因)更改密钥,或者如果他们想要使用不同的证书连接到不同的站点,或者可能发生的任何其他事情,这可能是从一个方便到一个错误相当快。
您是否考虑过非对称侧的椭圆曲线加密?不确定客户端是什么,但ECC越来越受欢迎(特别是在移动设备中),因为它使用的密钥尺寸明显小于RSA,因此处理的资源更少。