我正在做一个关于WebRTC(基于浏览器/JavaScript)的研究和试点项目,现在我正在研究它的安全实现.

我理解(请另外更正)DTLS-SRTC实现了一种加密机制,我只能找到对TLS_ECDHE_RSA_和_AES_128_GCM_SHA256的引用.

我还认为,中间的任何眩晕/转身服务器都没有参与到加密机制中,这样有效负载就可以不受触动地通过转身服务器.

这让我想问,在浏览器/JavaScript解决方案中,是否可以设置和 Select WebRTC的可用密码和密钥长度列表...或者如果只有TLS_ECDHE_RSA_和_AES_128_GCM_SHA256.

如果可以设置密码/密钥长度,请您提供有关如何在JavaScript中设置密码/密钥长度的建议,或者指向一些实现这一点的特定文档?

推荐答案

首先,我想回答你的直接问题,关于那些没有明确提出的问题的注释.

您认为TURN不能为WebRTC会话提供安全性,这是正确的.使用TURN服务器时,数据在通过TURN服务器时已经加密.TURN服务器无法修改或判断流经它的数据.

您无法通过Javascript控制密码套件.目前还没有相关的API.

浏览器提供多种DTL和SRTP密码套件.以下是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密码套件

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使用两个密码套件.一个用于DTL,一个用于SRTP.DTLS用于数据通道消息,SRTP用于媒体.

TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256是TLS密码套件(不是SRTP密码套件).

控制密码套件的唯一方法是运行不在浏览器中的WebRTC实现.您 Select 的WebRTC服务器/客户端可以提供API来更改这些设置.

WebRTC for the Curious#Securing美元也可能有帮助.它更深入地触及了这个答案中的要点.

Javascript相关问答推荐

IMDB使用 puppeteer 加载更多按钮(nodejs)

fs. writeFile()vs fs.writeFile()vs fs.appendFile()

硬币兑换运行超时

按下同意按钮与 puppeteer 师

React 17与React 18中的不同setState行为

点击按钮一次有文本出现和褪色,而不是点击两次?(html,CSS,JavaScript)

如何在Java脚本中对列表中的特定元素进行排序?

使用父标签中的Find函数查找元素

将范围 Select 器添加到HighChart面积图

Reaction useState和useLoaderData的组合使用引发无限循环错误

在没有任何悬停或其他触发的情况下连续交换图像

TabNavigator和StackNavigator之间的Reaction Native中的导航问题

如何在Web项目中同步语音合成和文本 colored颜色 更改

如何在加载页面时使锚定标记成为焦点

在点击链接后重定向至url之前暂停

material UI自动完成全宽

如何缩小函数中联合返回类型的范围

我如何才能阻止我的球数以指数方式添加到我的HTML画布中?

FiRestore按字段的提取顺序

使用Java脚本的响应页面