我们正在实现一个开源软件包(copay,一个多功能比特币钱包),它使用peerJS
,它使用webRTC
来允许浏览器之间的点对点通信。
peerJS
(和webRTC
)使用信令服务器帮助对等方建立p2p信道。我的问题是:我们需要信任那个信令服务器吗?那台服务器能通过进行中间人攻击来破坏p2p频道吗?
非常感谢。我们的项目主页是:https://github.com/bitpay/copay
发布于 2014-07-30 22:48:34
答案取决于您所指的“信令服务器”。
WebRTC是MITM-针对不受信任的中继服务器、眩晕和转向服务器的安全。这些服务器只会帮助客户端建立p2p连接。
然而,
与中继服务器不同,SDP不具有任何权重,仅由客户端为初始化连接而发送的一些字符串组成。这些可以被javascript访问,并且可以在客户端之间以任何方式发送(HTTP、websockets、email)。
因此,您应该使用可信的通道来执行SDP。
SDP交换带有一个名为a=fingerprint:
的哈希,该哈希验证了承载p2p DTLS连接到另一个客户端的身份。RFD 5763很好地描述了DTLS和SDP之间的连接。
您可以将需要信任的内容减少到此散列,但除非它没有进一步的用途,否则最好通过受信任的通道执行整个SDP,因为您的复杂性较低。
发布于 2014-05-13 10:32:00
除了您自己的awnser,任何连接(http,p2p.)不是完全安全的,诀窍是拥有这样的安全性,因为证书是自签名的,所以很难进入,并不直接意味着它们不安全,专注于更好的加密技术(对于环境本身而言)和一个好的SSL证书更好,也许您想看看这个:https://www.globalsign.com/ssl-information-center/dangers-of-self-signed-certificates.html。
毕竟,在任何web应用程序中,真正的不安全性是用户:)
发布于 2014-04-30 11:04:31
答案是否定的。webRTC客户端生成自签名证书。建议使用外部ID提供程序,但尚未实现。
http://chimera.labs.oreilly.com/books/1230000000545/ch18.html#_安全_沟通_使用_dtls
身份和身份验证两个WebRTC客户端之间的DTLS握手依赖于自签名证书。因此,证书本身不能用于验证对等方,因为没有明确的信任链(请参阅“信任链和证书颁发机构”)来验证。如果需要,WebRTC应用程序必须对参与的节点执行自己的身份验证和身份验证: web应用程序可以在设置WebRTC会话之前使用其现有身份验证系统(例如,要求登录来验证用户)。或者,在生成SDP提供/应答时,每个参与的对等方都可以指定其“身份提供者”。然后,当接收到SDP消息时,对方对等方可以与指定的身份提供者联系以验证接收到的证书。后一种“身份提供者”机制仍在W3C WebRTC工作组中进行积极讨论和开发。有关最新的实现状态,请参阅规范和邮件列表。
https://security.stackexchange.com/questions/56775
复制相似问题