实现套接字连接的握手

时间:2009-10-01 10:46:22

标签: sockets encryption

我正在开发一个客户端/服务器模型的程序,其中客户端登录到服务器,服务器分配会话ID /握手,客户端将使用它来识别/授权其后续消息到服务器。 / p>

我想知道握手的长度应该是合理安全还是足够短以最小化数据开销,因为我希望它具有低延迟。

我正在考虑使用带有用户名的MD5或murmurhash2以及带有碰撞检测的随机数盐,但我想知道是否有更有效的解决方案(即更好的算法)以及32位是否太多/太多对于这种事情很少。

非常感谢任何输入。

2 个答案:

答案 0 :(得分:1)

我会使用HTTPS连接进行客户端/服务器通信。 它易于使用(几乎所有主要的SDK都实现它)并且它提供了良好的标识。

问候。

PD:在加密方法的参考中,我会使用Whirlpool,因为Rivest先生在2005年表示它被打破了。

答案 1 :(得分:0)

这可能不像看起来那么简单。请注意,如果您通过网络发送任何明确的内容(例如会话ID /握手),任何人都可以窃听通信并重复使用此值作为客户端。 如果你不能使用https,作为建议的第一个答案,你可能需要查看key agreement protocols。一旦双方就共享密钥达成一致(无法根据观察到的通信重建),您可以使用它来MAC(例如HMAC)验证所有剩余传输。

无论你做什么,都不要使用MD5,它完全被打破了。惠而浦也可能不是一个好选择,它的速度较慢,并且最近(理论上)攻击的主要部分,见 ASIACRYPT 2009 Program。 我现在坚持使用SHA-256。