我正在为移动客户端 - 服务器通信定制tcp/ip协议的设计阶段。如果不需要(数据不敏感),我想避免使用SSL(出于交换时间原因(握手延迟和节省周期))。安全的密码传输通过未加密的TCP/IP
我的问题是,通过未加密连接传输验证信息的最佳实践方式是什么?我相当喜欢SRP或J-PAKE(他们生成安全的会话标记,哈希/盐友好,并允许在必要时踢入TLS),我相信它们都是在OpenSSL中实现的。不过,我有点警惕,因为我没有看到许多人为此使用这些算法。对于讨论这个主题的任何材料,我一般也会很欣赏,因为我很难找到任何材料。
编辑
也许这个问题应该是:是有通过未加密的TCP/IP安全密码最佳实践的方法吗?如果不是,选择一种特定方法的原因是什么? (到目前为止,Rooks的答案在精神上最接近这个问题,即使它确实违反了这封信)。
编辑,部分德塞夫勒
我在客户端 - 服务器的认证,其中有一个期望,双方都有一个共享密钥(密码)先验的情况感兴趣。
+1 a Dh密钥交换确实解决了他的问题。然而,DH密钥交换不能防止主动的MITM攻击,只能是被动的。 – rook 2010-05-16 10:45:40
为此,D-H似乎不如SRP或J-PAKE,因为后两者将密码验证为副产品,但前者在建立密钥后需要额外的工作来加密/解密密码。我在这里错过了一些微妙之处吗? – academicRobot 2010-05-16 16:56:44