通过未加密的tcp/ip安全密码传输

aca*_*bot 5 security encryption passwords cryptography tcp

我正处于用于移动客户端 - 服务器通信的自定义tcp/ip协议的设计阶段.如果不需要(数据不敏感),我希望避免使用SSL出于开销原因(在握手延迟和保存周期中).

我的问题是,通过未加密的连接传输身份验证信息的最佳实践方法是什么?

目前,我喜欢SRP或J-PAKE(他们生成安全会话令牌,哈希/盐友好,并允许在必要时踢入TLS),我相信这两者都是在OpenSSL中实现的.但是,我有点小心,因为我没有看到很多人为此目的使用这些算法.也非常感谢指向任何讨论这个主题的材料,因为我找不到任何材料.

编辑

也许问题应该是:对于未加密的tcp/ip,是否存在安全密码的最佳实践方法?如果没有,选择特定方法的原因是什么?(到目前为止,鲁克斯的回答与这个问题的精神最接近,即使它确实违反了这封信).

编辑,部分deux

我主要对客户端 - 服务器身份验证的情况感兴趣,期望双方先验地拥有共享密钥(密码).

tan*_*ens 7

你应该看一下"Diffie-Hellman密钥交换":

Diffie-Hellman密钥交换(D-H)是一种加密协议,它允许彼此没有先验知识的双方在不安全的通信信道上共同建立共享密钥.然后,该密钥可用于使用对称密钥密码加密后续通信.

交换密钥后,您可以使用此密钥加密密码,并通过不安全的协议进行传输.


roo*_*ook 6

我仍然认为SSL是目前为止你最好的选择,毕竟为什么重新发明这么多可能会出错?如果您有一份"好"和"坏"(受损)证书清单,则无需购买昂贵的证书.openSSL是完全免费的,我没有理由不使用它.

你可能不知道的一些事情: ssl握手可以恢复.

您还可以使用UDP上的SSL/TLS来减少其调用DTLS的开销.