当前位置: 首页 > news >正文

webrtc安全性 加密方式

媒体加密与通信安全

     有各种不同的做法会让实时通信软件暴露在安全隐患中。其中需要特别值得注意的是在信息传输的过程中截取未加密的媒体或者数据。这可以发生在浏览器到浏览器之间或者浏览器到服务器之间的通信过程中,第三方可以窃取到所有发送的数据。但是在数据加密之后,可以有效的组织窃听者获取通信流中的内容。只有拥有加密密钥的会话参与方才可以将通信数据流解码。加密功能在WebRTC中是强制要求的,所有内容,包括信令机制,都必须进行加密工作。所以,所有通过WebRTC发送出的媒体流都会通过标准化的知名的加密协议得到保护。由传输通道的类型决定加密协议;数据流使用数据报传输层安全协议(DTLS)进行加密,媒体流使用安全实时传输协议(SRTP)进行加密。

4.3.1 DTLS:数据报传输层安全协议

     WebRTC使用DTLS加密发送的信息,所有通过RTCDataChannel全都使用DTLS来确保安全性。DTLS是一个标准化的协议,已经内置在了所有支持WebRTC的浏览器中,并且始终在网页浏览器,电子邮件和VoIP平台上进行信息加密工作。该协议内置的特性意味着不需要再使用前进行任何设置。与其他加密协议一样,DTLS的目标是防止信息窃取。DTLS是基于面向流的TLS所建模的,TLS是一个使用非对称密码技术,数据和信息授权技术来提供全面加密技术的协议。TLS是实际的网页加密标准,TLS被设计用来给可靠的TCP传输机制提供服务,但不适用于使用UDP这种不可靠传输机制的VoIP应用。DTLS协议是从SSL衍生来的,所有数据都认为是与使用任何基于标准SSL连接中的数据一样安全。事实上,WebRTC数据可以通过任何基于标准SSL的连接来进行保护,使WebRTC可以在几乎任何服务器场景中提供端到端加密。参考文献[8]

4.3.1.1 TURN上的DTLS

     所有WebRTC通信的默认选项是在两个浏览器之间建立直接P2P通信,在设置阶段有信令服务器的帮助。在TURN通信过程中,媒体可能会出现质量降低以及延时增加的情况,但是允许“如果其他所有都失败了”这种情景迫使WebRTC应用在很差的环境下继续工作。我们必须考虑在TURN的替代通信结构上进行通信加密。我们知道,无论什么通信方法,被发送的数据都会在终端被加密。TURN服务器的目的是简单的在通话参与方之间进行WebRTC数据传输,以及只在获取路由目的的时候对WebRTC数据包中的UDP层进行解析。服务器不会为了路由数据包而解码应用数据层信息,所以我们可以确定它们不会(且不能)对DTLS加密产生影响。所以,加密保护不会因为WebRTC通信在TURN上传输就受损,并且服务器不能读懂或者更改对等端之间所传送的信息。

4.3.2 SRTP:安全实时传输协议

     基本的RTP不具备任何内置的安全机制,而这就导致了传输的数据没有任何保护。取而代之的是使用外在机制来给数据提供加密。事实上,使用未经加密的RTP是被WebRTC规范所明文禁止的。WebRTC使用SRTP来对媒体流进行加密,而不是DTLS。这是因为SRTP相比于DTLS,是更轻型的协议。规范要求任何WebRTC实现都要支持RTP/SAVPF。但是,实际的SRTP密钥交换最开始时使用DTLS-SRTP进行的,可以检测到任一MiTM攻击。

4.3.3 安全连接的建立

     在这一小节中让我们来探讨一下WebRTC应用建立一通新的通话的过程。在这个例子中,有两个会话参与方,Alice和Bob。在一方(Alice)打电话给另一方(Bob)的时候初始化通话进程,然后信令处理在双方之间交换相关的数据元。一旦初始ICE检查结束了,双方就会开始设立一个或多个安全通道。最开始,DTLS握手会发生在ICE所创立的所有通道上。对于这些数据通道而言,单独这一步作为简单的DTLS对于加密来说已经足够用了。但是对于媒体通道,需要进行其他的额外步骤。一旦DTLS握手结束后,密钥被“发出”并且作为媒体通道的密钥SRTP。在这一步,会话双方都知道他们可以使用这些密钥与对方分享安全的数据和/或媒体通道,并且这些通道是不为恶意的第三方所知晓的。参考文献[10]

4.3.4 DTLS-SRTP vs SDES

     为了在媒体传输会话中协商安全性参数,SRTP需要与密钥管理协议进行互动。此协议是未确定的,给任务提供多个可能的选择。其中两个选择分别为SDES和DTLS-SRTP。需要提醒的是,多媒体通信中涉及到的信令(SIP,HTTP)和媒体(RTP)可以单独地进行安全加密。

SDES

     对媒体流的SDP安全描述(SDP Security Description for Media Streams, SDES)是WebRTC之前所选择的方法。SDES中,被用来设立SRTP会话的安全性参数和密钥,以SDP属性的形式进行交换。因为SDP是在信令平面上进行传输的,如果不是额外再针对信令消息进行加密的话,那么窃听者还是可以获得密钥,从而窃取SDES加密的数据。换句话说,还需要再使用一个额外的加密协议来给信令平面进行加密。一种实现方法是使用TLS。但是,如果单独对信令和媒体进行加密,可能会使媒体用户与信令用户不同的情况发生(不保证一定会发生)。为了能够保证上述事情发生,还需要有密码捆绑。DTLS-SRTP就是可以提供这项保证的机制之一,但是SDES不能。至今还存在一个尚未解决的问题,就是大部分VoIP网络的RTP数据并没有安全保护。事实上,为了将花费削减到预算可接受程度,用户通常都会先向技术提供商提出砍掉加密功能的要求。当得到安全保证后,绝大多数使用SDES的部署,就像我们刚刚提到的那样,很大程度上的依赖于信令平面的安全性。

DTLS-SRTP

     另一方面,DTLS-SRTP在媒体平面上交换密钥,而不是信令平面。这项不同之处使SRTP媒体通道不需要像SDES一样,在SDP信息交换中不需要将私钥暴露出来。WebRTC规范指出WebRTC实现必须支持DTLS-SRTP来进行密钥管理。还有,DTLS-SRTP是默认方案,而且不允许使用其他的密钥管理方案。换句话说,其他的方案可能,也可能不会得到一点支持。如果一个请求或者“通话”被同时支持DTLS-SRTP和SDES的对等端接收,无论信令加密与否,都必须选择使用DTLS-SRTP。

https://webrtc.org.cn/webrtc-security/

相关文章:

webrtc安全性 加密方式

媒体加密与通信安全 有各种不同的做法会让实时通信软件暴露在安全隐患中。其中需要特别值得注意的是在信息传输的过程中截取未加密的媒体或者数据。这可以发生在浏览器到浏览器之间或者浏览器到服务器之间的通信过程中,第三方可以窃取到所有发送的数据。但是在数据加…...

【2023年11月第四版教材】软考上机考试操作指南(注意事项)

软考上机考试操作指南(注意事项) 1 考试注意事项2 获取<font color=blue>模拟作答系统1.1 方式1:绑定资源下载1.2 方式2:百度网盘下载1.3 方式3:官方下载1.4 说明3 模拟作答系统使用方法3.1 注意事项3.2 解压压缩文件3.3 运行软件3.4 考试科目选择3.5 登录3.6 阅读考…...

在vs code中创建一个名为 “django_env“ 的虚拟环境报错?!以下方法可以解决

# vs code 终端窗口中运行&#xff1a; mkvirtualenv django_env # 拓展&#xff1a; mkvirtualenv django_env 是一个命令&#xff0c;用于创建一个名为 "django_env" 的虚拟环境。虚拟环境是一种用于隔离不同Python项目所需依赖的工具。通过创建虚拟环境&#x…...

C++产生未定义的行为的原因分析

前言 最近一直在做QT开发&#xff0c;编程环境是VS2017和QT5.11.2 经常遇到的问题就是&#xff0c;在VS中调试程序&#xff0c;前面都是正常运行的&#xff0c;但是当关闭窗口&#xff0c;退出程序的时候&#xff0c;VS会抛出一个异常 “未加载ntdll.pdb&#xff0c;触发了一…...

C++ Qt QString类用法介绍

QString 是 Qt 框架中的一个重要类&#xff0c;用于处理 Unicode 字符串。它提供了大量的功能&#xff0c;方便开发者处理、查询和操作字符串。以下是 QString 的一些常用功能和示例&#xff1a; 构造和初始化 QString s1; // 默认构造函数&#xff0c;创建一个空字符串 QStr…...

亚马逊测评关于IP和DNS的问题

最近不少人询问了关于IP和DNS的问题&#xff0c;在此进行一些科普。 当客户端试图访问一个网站时&#xff0c;首先会向其所在的ISP的DNS服务器进行查询。如果ISP的DNS服务器没有相关缓存&#xff0c;则会向上级DNS服务器进行查询。 一些诸如CDN之类的服务&#xff0c;可能会为…...

新增Node.js运行环境、新增系统缓存清理功能,1Panel开源面板v1.7.0发布

2023年10月16日&#xff0c;现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.7.0版本。 在这个版本中&#xff0c;1Panel新增Node.js运行环境&#xff1b;新增系统缓存清理功能&#xff1b;应用安装时支持选择远程数据库。此外&#xff0c;我们进行了40多项功能更新和…...

【SA8295P 源码分析 (一)】60 - QNX Host 如何新增 android_test 分区给 Android GVM 挂载使用

【SA8295P 源码分析】60 - QNX Host 如何新增 android_test 分区给 Android GVM 挂载使用 一、QNX 侧:创建分区、配置下载、配置透传1.1 修改分区表,新增 android_test 分区,大小为 2GByte1.2 下载 android_test.img 镜像1.3 配置 /dev/disk/android_test_a 分区透传到 Andr…...

天津滨海新区城市轨道交通电能管理系统方案与实施方案

【摘要】&#xff1a;介绍天津滨海新区轨道交通项目建设电能管理系统的系统架构、功能组成和实施方案。在借鉴其他城市轨道交通项目电能管理系统的基础上,结合天津滨海新区轨道交通建设的具体情况&#xff0c;对系统组网方案、测量表计设置原则、与通风空调节能系统和照明节能系…...

torch.cat 使用小节

torch.cat 使用小节 torch.cat 要求在所指定拼接维度之外的所有维度都要匹配&#xff0c;例如 import torch v1 torch.tensor([[1, 2, 3], [4, 5, 6], [4, 5, 6]]) # 3*3 v2 torch.tensor([[3, 6, 8]]) # 1*3 torch.cat([v1, v2], dim1)运行之后会报错 Sizes of tensors…...

Java:SpringBoot整合Spring Batch示例

目录 文档基础概念Tasklet方式示例Chunk方式示例参考文章 文档 https://docs.spring.io/spring-batch/docs/4.3.9/reference/html/index.html 基础概念 JobLauncher&#xff1a;作业启动器&#xff0c;启动作业的入口。对应的实现类为SimpleJobLauncher。Job&#xff1a;作业…...

Windows + Msys 下编译 TensorFlow 2.14

安装基本工具 pacman -S --needed zip unzip patch diffutils git 下载安装 Windows 版本 bazel 6.1.2&#xff0c;复制到 C:/Windows/system32 目录下&#xff0c;改名为 bazel.exe wget https://github.com/bazelbuild/bazel/releases/download/6.1.2/bazel-6.1.2-window…...

百度发布全新 AI 互动式搜索:百度简单搜索

本心、输入输出、结果 文章目录 百度发布全新 AI 互动式搜索&#xff1a;百度简单搜索前言主要能力 相关资料能力介绍 百度搜索升级发文告用户如何获取百度简单搜索百度简单搜索的定位百度简单搜索在 APP 上面的体验讨论和点评我们关注的几个问题 弘扬爱国精神 百度发布全新 AI…...

VUE开发记录

记录vue开发中遇到的问题 - 2023/10/16 问题&#xff1a;项目element-ui表单中&#xff0c;input点击需要打开弹框&#xff0c;弹框选择值后回填到input&#xff0c;但是此时elementUI的校验出错&#xff08;值存在却校验为空&#xff09; 解决方法&#xff1a; this.employee…...

2023年中国乳胶制品产量、需求量及市场规模分析[图]

乳胶泛指聚合物微粒分散于水中形成的胶体乳液&#xff0c;又称胶乳。习惯上将橡胶微粒的水分散体称为胶乳&#xff0c;而将树脂微粒的水分散体称为乳液。以乳胶为原料制成的制品称乳胶制品&#xff0c;常见的如海绵、手套、玩具、胶管等。 我国乳胶制品细分主要分为避孕套、乳胶…...

手撕Vue-数据驱动界面改变上

经过上一篇的介绍&#xff0c;已经实现了监听数据的变化&#xff0c;接下来就是要实现数据变化后&#xff0c;界面也跟着变化&#xff0c;这就是数据驱动界面改变。 想要实现数据变化之后更新UI界面&#xff0c;我们可以使用发布订阅模式来实现&#xff0c;先定义一个观察者类,…...

for循环中循环一次提交一次 insert update 关闭事务 spring springboot mybatis

省流&#xff1a; 在方法上直接加如下注解&#xff1a; Transactional(propagation Propagation.NOT_SUPPORTED) public void t1(){//业务代码 } 正文&#xff1a; 在测试的时候&#xff0c;有时候会希望在for循环中&#xff0c;代码循环一次就提交一次事务。 方法一&#…...

VS2010 C语言内嵌汇编语言程序

VS2010 C语言内嵌汇编语言程序 2021年7月28日席锦 在visual studio 2010中C语言使用内联汇编写代码 &#xff0c;它的格式有两种&#xff0c; 一种是__asm 直接接汇编指令语句&#xff0c;比如:__asm int 3 // 软件中断 另一种是加上花括号&#xff0c;类似于一个函数&…...

【TES720D】青翼科技基于复旦微的FMQL20S400全国产化ARM核心模块

板卡概述 TES720D是一款基于上海复旦微电子FMQL20S400的全国产化核心模块。该核心模块将复旦微的FMQL20S400&#xff08;兼容FMQL10S400&#xff09;的最小系统集成在了一个50*70mm的核心板上&#xff0c;可以作为一个核心模块&#xff0c;进行功能性扩展&#xff0c;特别是用…...

css 左右滚轮无缝衔接

最近的项目有做到一个功能 类似跑马灯或者公告栏那种 有文字 也有列表的 所以 写了两种 第一种公告栏文字是用的js 第二种图文类型是用的css 两种方法 记录一下 第一种 纯文字滚动 其实也是根据js去计算dom的宽度 通过js去给css赋值 <div class"div1"><div …...

Hadoop分布式文件系统-HDFS

1.介绍 HDFS (Hadoop Distributed File System)是 Hadoop 下的分布式文件系统,具有高容错、高吞吐量等特性,可以部署在低成本的硬件上。 2.HDFS 设计原理 2.1 HDFS 架构 HDFS 遵循主/从架构,由单个 NameNode(NN) 和多个 DataNode(DN) 组成:...

专业图表绘制软件 OmniGraffle Pro mac v7.22.1中文版软件介绍

OmniGraffle Pro mac是一款Mac平台上的专业绘图软件&#xff0c;主要用于创建各种图形&#xff0c;包括流程图、组织结构图、网络拓扑图、UI原型等。该软件提供了强大的绘图工具和丰富的样式库&#xff0c;可以让用户快速创建出高质量的图形&#xff0c;并支持导入和导出各种常…...

Git 本地文件合并和恢复

前记&#xff1a; git svn sourcetree gitee github gitlab gitblit gitbucket gitolite gogs 版本控制 | 仓库管理 ---- 系列工程笔记. Platform&#xff1a;Windows 10 Git version&#xff1a;git version 2.32.0.windows.1 Function&#xff1a; Git 本地文件合并和恢复…...

记录git仓库pr没有显示贡献者的问题,以及如何提交一个pr(简)

git config --global --list # 查看全局配置&#xff08;适用于所有仓库&#xff09;的信息&#xff0c;可以添加 --global 标志git config --list # 查看你的Git配置git config user.name # 显示您的Git用户名。同样&#xff0c;可以替换 user.name 为其他配置项名称来查看特定…...

入侵检测代码

在人工智能中有个入侵检测&#xff1a;当检测到的目标位于指定区域内才算是入侵&#xff0c;思路很简单&#xff0c;判断相关坐标即可&#xff1a; from matplotlib import pyplot as plt, patches from shapely.geometry import Polygon, Pointdef is_intrusion(target_box, …...

数字孪生技术如何提高化工生产安全性?

随着科技的不断进步&#xff0c;数字孪生技术已经渗透到了各个领域&#xff0c;为化工行业带来了翻天覆地的变革。这一技术的应用不仅在生产效率方面发挥了积极作用&#xff0c;还在安全性、创新、环保和可持续性等多个方面作出了巨大的贡献。 化工行业常常涉及危险品和复杂的生…...

PHP 如何查看php函数源码

一、在git找到php对应的版本 找到对应的分支版本可以下载也可以在线直接查看 通过这个地址 https://github.com/php/php-src 二、下面已shuffle函数举例&#xff0c;版本为7.4 找到对应的版本进入 点击ext&#xff0c;这个文件夹里面是存放函数的目录 在文件夹里搜不到stu…...

前端web自动化测试:selenium怎么实现关键字驱动

要做 ui 自动化测试&#xff0c;使用关键字驱动可以说是必须会的一种测试方式&#xff0c;它既可以在纯代码的自动化程序中运行&#xff0c;也可以在测试平台中使用。 使用纯代码方式时&#xff0c;自动化工程师先写好一个通用的程序&#xff0c;其他手工测试人员只需要把执行…...

C++标准模板(STL)- 类型支持 (数值极限,min,lowest,max)

数值极限 提供查询所有基础数值类型的性质的接口 定义于头文件 <limits> template< class T > class numeric_limits; numeric_limits 类模板提供查询各种算术类型属性的标准化方式&#xff08;例如 int 类型的最大可能值是 std::numeric_limits<int>::m…...

国际SPEC CPU创榜以来整机最高纪录!浪潮信息八路服务器TS860G7刷新权威算力基准评测性能

近日&#xff0c;国际标准性能评估组织SPEC发布新一轮SPEC CPU2017通用算力性能测试榜单&#xff0c;浪潮信息八路服务器TS860G7以3940分获得SPEC CPU创榜以来整机性能最佳成绩&#xff0c;打破了单系统服务器性能世界纪录&#xff0c;较之前的测试最高分提升10%。 SPEC CPU201…...

做网站怎么复制视频链接/全球网络营销公司排行榜

前言后台运行程序有一种需求&#xff0c;比如查看当前进度&#xff0c;想在终端看到某个值的变化情况&#xff1a;先提供一种很土的办法&#xff0c;把进度落地文件为 例如 process&#xff0c;采用创建写的方式。然后可以使用watch -n 1 cat process来查看进度。这里提供两种方…...

微信公众平台网站建设新闻报道/万物识别扫一扫

InnoDB引擎有几个重点特性&#xff0c;为其带来了更好的性能和可靠性&#xff1a;插入缓冲(Insert Buffer)两次写(Double Write)自适应哈希索引(Adaptive Hash Index)异步IO(Async IO)刷新邻接页(Flush Neighbor Page)关于AIO与SIO为了提高磁盘操作性能&#xff0c;当前的数据库…...

网站建设博敏/建立网站怎么搞

这样做的目的是一次遍历两个列表,一个是右列表,另一个是左列表。然后测量两点之间的角度,并将其与之前计算的角度进行比较。如果在某个时候计算的角度变大(漏斗变宽),我想用I0和新的右和左列表重新开始迭代过程。目前我没有任何输出。我认为问题出在calc()语句上,我希望def cal…...

做健身推广网站/域名查询 站长查询

1.安装&#xff1a; 首先找到git的官网&#xff0c;内部有下载链接。 也可以用下面的&#xff0c;我的是win7的64位系统&#xff1a; 可以在此处下载&#xff1a;Git-2.13.0-64-bit.exe链接&#xff1a;http://pan.baidu.com/s/1dFIOU1V 密码&#xff1a;xky2 下面是安装后的效…...

怎么做微网站/免费制作网页平台

一个类型允许定义多个实例构造器&#xff0c;在使用过程中确实是十分方便的。但是&#xff0c;在定义这些构造器时&#xff0c;如果稍不留神&#xff0c;可能就使你的代码编译后产生了好多不必要的垃圾&#xff0c;增加了程序集的大小&#xff0c;也不够简洁。 例如&#xff1a…...

wordpress安全防范教程/建站模板哪个好

录像机本地激活&#xff0c;录像机本地激活失败一般会提示激活失败或者超时。激活失败如何处理呢&#xff1f;①检查激活密码:录像机一键激活摄像机一般是用的录像机的管理员密码或者IPC密码激活的&#xff0c;如果密码里面含有admin可能就会出现激活失败。基于安全考虑部分前端…...