我正在WebRTC (基于浏览器/JavaScript)上做一个研究和试点项目,现在我正在研究它的安全实现。
我理解(请纠正我,否则),DTLS实现了加密机制,我只能找到对TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256的引用。
我还认为,中间的任何眩晕/转服务器都没有参与加密机制,因此有效负载只需通过一个转接服务器不受影响地传递。
这让我不禁要问,是否可以在浏览器/JavaScript解决方案中为WebRTC设置和选择可用密码器和密钥长度列表.或者TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256是唯一一个。
如果可以设置密码/密钥长度,您可以建议如何在JavaScript中这样做,或者指向一些特定的文档来实现这一点吗?
发布于 2022-05-01 19:28:38
首先,我想回答你的直接问题,关于没有明确要求的事情的说明。
您是正确的,转弯没有为WebRTC会话提供安全性。当使用转弯服务器时,数据在经过转轮服务器时已经加密。旋转服务器不能修改或检查流经它的数据。
您不能通过Javascript控制CipherSuites。目前还不存在任何API。
浏览器提供多个DTLS和SRTP CipherSuites。下面是FireFox 98使用的列表。
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca9)
Cipher Suite: TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca8)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)这些是SRTP CipherSuites
SRTP Protection Profile: SRTP_AEAD_AES_128_GCM (0x0007)
SRTP Protection Profile: SRTP_AEAD_AES_256_GCM (0x0008)
SRTP Protection Profile: SRTP_AES128_CM_HMAC_SHA1_80 (0x0001)
SRTP Protection Profile: SRTP_AES128_CM_HMAC_SHA1_32 (0x0002)WebRTC使用两个CipherSuites。一个用于DTLS,另一个用于SRTP。DTLS用于DataChannel消息,SRTP用于媒体。
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256是一个TLS CipherSuite (不是SRTP CipherSuite)。
控制CipherSuite的唯一方法是运行不在浏览器中的WebRTC实现。您选择的WebRTC服务器/客户端可以提供API来更改这些API。
WebRTC用于Curious#Securing也可能有帮助。它触及了这个答案中的要点,再深入一点。
https://stackoverflow.com/questions/72077469
复制相似问题