使用加密对对等聊天进行编程的最佳方法是什么。是SSL对p2p有用,因为客户端没有verisign签署的证书,...?是否可以在没有主服务器的情况下编程这样的聊天,主服务器告诉客户端他们的聊天伙伴的IP?
我真的很喜欢编写这样的聊天程序,因为在所有这些隐私问题中,我想要一个我真正可以信任的程序。我有一些网络编程经验,但只有客户< - >服务器
我不想要任何代码,只需要点对点聊天的理论部分(如Skype)。
感谢。
答案 0 :(得分:2)
首先,您可以在两端强制使用自签名证书,或者甚至可以使用“预共享密钥”而不是证书进行身份验证。预共享密钥应该由提前参与的所有各方知道。
其次,SSL是一种加密机制,因此它与通信模型的设计无关,即客户端/服务器与p2p的关系。
最后,如果你的两个p2p节点都有公共或实时ip,并且每个节点都知道对方的节点,那么你就不需要任何类型的中央服务器。这里真正的问题是,在实践中,大多数机器都使用NAT和私有IP防火墙。因此,您需要某种机制来遍历NAT,确定公共IP和端口,以便成功到达目标计算机。
看看下面的SO question,我写的是答案。它提到了常见的p2p应用程序使用的一些技术,例如skype(skype协议的知识,因为它是专有的),gtalk以及其他基于XMPP的聊天应用程序。