我想使用RTCDataChannels(WebRTC(构建一个具有端到端加密的文件传输应用程序,类似于魔术虫洞或croc。
是否可以通过Web API验证对等证书来执行相互身份验证?这个想法是通过将证书(或证书指纹(与带外协商的值进行比较来防止中间人攻击。
显然有一个getRemoteCertificates和一个RTCCertificate接口,应该可以访问远程证书指纹。此外,在寻找解决方案时,我发现了一条与WebRTC旧草案有关的评论。然而,我不确定身份提供者与此有何关联。
WebRTC实现必须检查证书以确保安全。W3C草案第8.3.5节介绍了这一点:等待建立所有DTLS连接,并检查所有连接上的证书指纹是否与IdP提供的指纹匹配。
最后,这是一个好方法,还是最好添加另一个应用程序安全层进行身份验证?
这听起来很理智!
不幸的是,getRemoteCertificates并不是到处都可用,所以这可能会让它变得更难。但是,您可以直接从SessionDescription中获取此内容!查找a=fingerprint
,它可以是媒体级别的,也可以是全局的。
我不知道这是否会让它更容易,但如果你控制所有的客户端,你也可以提供自己的证书!RTCPeerConnection构造函数允许用户传递自己的证书。那你就完全不用担心MITM了。
gfile可能也是一个很好的灵感来源。它通过RTCDataChannels实现文件传输。