一、概述

本文着重分析 WebRTC 的安全性,分析其安全性考虑及安全性实现,回答了以下问题:

  • WebRTC 加密过程需要或依赖 CA (Certificate Authority)吗? 不需要 CA, 但可能依赖 CA.
  • DTLS-SRTP 加密机制中, DTLS 与 SRTP 的关系是什么? DTLS 实现秘钥交换和管理, SRTP 实现具体的加密和解密过程.
  • DTLS 握手交换秘钥的安全性如何进行保障? 明文传输,但通过其它机制保证握手阶段数据的一致性.

二、顶层结构

为了解释和回答上述问题,需要对 WebRTC 的整体结构进行初步的描述.

根据 [RFC9429] , 无论是 WebRTC 的何种变体,都遵循着 媒体信令媒体传输 的两级分层:
在这里插入图片描述
媒体信令: 通过 HTTPS 、加密SIP 或 加密WebSocket 等方式实现 SDP的交换(协商), 具体协议类型由应用决定,信令传输安全也交由应用负责.

媒体传输: 规定数据传输使用 DTLS-SRTP , 数据传输安全由 DTLS-SRTP 负责.

但是 媒体传输 一定是安全的吗?

在没有 CA 的背书下, DTLS-SRTP 是无法解决 MITM (中间人攻击);

故媒体信令传输过程中, SDP 引入了一种新的机制,用于解决此问题. (在后文会具体展开描述)

除了中间人攻击之外, DTLS-SRTP 传输是安全的.

三、媒体传输

DTLS-SRTP 的关系是什么, 在 [RFC5736](Framework for Establishing a Secure Real-time Transport Protocol (SRTP) Security Context Using Datagram Transport Layer Security (DTLS)) 解释了它们之间的关系.

  • DTLS : 支持 秘钥交换(DTLS Handshake Protocol) 和 数据加密 (DTLS Record Protocol)
  • SRTP : 支持数据加密

故 SRTP 在实践过程中需要一种其他协议帮助其实现秘钥管理,这个协议就是 DTLS.

DTLS-SRTP 的完成描述是: 秘钥交换过程使用 DTLS 的握手实现, SRTP 则实现数据加密和解密.

(1) 秘钥交换

其中 DTLS 的握手协议是基于 TLS 制定的,可以在 [RFC5246](The Transport Layer Security (TLS) Protocol Version 1.2) 中找到:
在这里插入图片描述
其中 * 为可选, 以双向认证(包含上述所有步骤)为例进行解释说明:

角色信令描述
客户端ClientHello提供可选加密算法
服务端ServerHello选择具体的加密算法
服务端Certificate服务端发送证书
服务端ServerKeyExchange发送秘钥交换参数
服务端CertificateRequest要求客户端提供证书
服务端ServerHelloDone
客户端Certificate客户端发送证书
客户端ClientKeyExchange发送密钥交换材料
客户端CertificateVerify验证客户端身份
客户端ChangeCipherSpec通知对方要开始加密
服务端Finished握手完成信号包

完整流程如上, 其中 Certificate 是需要其它机制保证其安全:

即单纯的 DTLS 握手解决不了 我是我 这个核心问题, 在存在中间人窃听过程中, 中间人可伪造证书横跨在客户端及服务端之间.

常见的做法是对双端发送的证书做 CA 认证, 来回答 我是我 的这个问题;

但 WebRTC 对此的安全处理与此稍微不同,虽然本质是一样的, 在后文展开描述.

(2) 数据加密

由于 SRTP 已经相对来说比较成熟,一般实际开发过程中由 libsrtp 实现, 故此部分可简略描述.

通俗简单地描述, DLTS 未将接收到的数据原封不动地传输给 SRTP, SRTP 需要发送的数据也会原封不动地传输给 DTLS.

(3) 相关参考

  • RFC6347 : Datagram Transport Layer Security Version 1.2
  • RFC5736 : Datagram Transport Layer Security (DTLS) Extension to Establish Keys for the Secure Real-time Transport Protocol (SRTP)
  • RFC3711 : The Secure Real-time Transport Protocol (SRTP)
  • RFC5264 : The Transport Layer Security (TLS) Protocol Version 1.2

四、信令交互

媒体传输 中遗留了一个问题,如何证明 我是我.

在传统做法中,可以通过 CA 来证明 我是我 的这个问题, CA 认证可以确保证书的完整性不被破坏, 即数据未被篡改.

更进一步, DTLS 握手过程中的安全性,不依赖于数据加密,仅依赖于数据一致性.

为了实现数据一致性,WebRTC 的做法是对证书做一个 HMAC 指纹运算 (本质上就是证书的哈希值),然后这个证书指纹通过其它安全的方式进行传输.

这样,在 DTLS 握手阶段的 Certificate 环节,服务端和客户端就可以对收到的证书进行同样的哈希运算得到对比指纹,如果指纹与原先通过其它途径获取到的证书指纹一致的,则回答了 我是我 这个问题.

这个的其他途径是什么?

[RFC8122](Connection-Oriented Media Transport over the Transport Layer Security (TLS) Protocol in the Session Description Protocol (SDP)) 描述了这个过程,

通过在 SDP 里携带一个新的 attribute fingerprint,携带这个证书指纹.

故这里隐含了两条信息:

  • 数据传输的安全性隐式地依赖与信令传输的安全性,若 SDP 传输是通过安全协议 (如 HTTPS 、加密 SIP 等),则可认为数据传输是安全的
  • 数据传输使用的证书可能不是 CA 认证过的证书, 可以是自签证书,但是自签证书可能隐式地收到CA证书的安全保护 (如 WHIP RTC 推流, SDP 是通过 HTTPS 进行的)

WebRTC 的安全性考虑性,本质上是安全链传递.

相关参考:

  • RFC 8122 : Connection-Oriented Media Transport over the Transport Layer Security (TLS) Protocol in the Session Description Protocol (SDP)

为什么 WebRTC 的媒体传输设计考虑不依赖于 CA 认证?
因为在实践操作过程中几乎不可能实行, [RFC8122](3.3 The Need for Self-Signed Certificates) 中进行的详细描述, 主要难点在于:

  • RTC 设计是应用在任意终端的, 而 CA 证书一般是公网服务器才具备的条件
  • CA 认证要求 IP 是固定的, 而很多情况下地址是动态的 (如使用 DHCP)

故实际媒体传输使用的证书往往使用自签证书.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/912904.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912904.shtml
英文地址,请注明出处:http://en.pswp.cn/news/912904.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云操作系统控制台如何解决三大OS运维难题?

背景 操作系统运维常常遇到以下问题: 1.问题定界浪费大量人力:当业务出现问题时,客户在不清楚是操作系统问题还是业务问题时,往往会拉上所有相关团队一起排查,浪费人力。 2.问题定位时间长:通过操作系统…

自由学习记录(65)

其他脚本语言也可以热更新,但 Lua 特别适合,游戏主程序通常是 C,Lua 只是逻辑脚本,改 Lua 不影响主程序运行 语言应用场景PythonWeb 后端 / 数据处理服务JavaScript浏览器端热重载 / React HMRC#Unity 的 ILRuntime / HybridCLR …

抗辐照芯片在核电厂火灾探测器中的应用优势与性能解析

一、引言 核电厂作为能源供应的关键设施,其安全性备受关注。火灾是威胁核电厂安全运行的重要风险因素之一。在核电厂的特殊环境下,火灾探测器肩负着及时发现火情、保障核电厂安全运行的重任。然而,核电厂存在高能辐射等复杂环境因素&#xf…

FastAPI+Sqlite+HTML的登录注册与文件上传系统:完整实现指南

作为一名开发者,你是否曾想过亲手搭建一个包含用户注册、登录认证和文件上传功能的完整 Web 系统?今天,我将带大家一步步拆解一个基于FastAPI(后端)和原生 JavaScript(前端)的前后端分离项目&am…

【动态规划】P11188 「KDOI-10」商店砍价|普及+

本文涉及知识点 C动态规划 P11188 「KDOI-10」商店砍价 题目背景 English Statement. You must submit your code at the Chinese version of the statement. 您可以点击 这里 下载本场比赛的选手文件。 You can click here to download all tasks and examples of the c…

国产LHR3040芯片是REF5040的代替品

LHR3040是一款噪声低、漂移低、精度高的电压基准产品系列。这些基准同时支持灌电流和拉电流,并且具有出色的线性和负载调节性能。采用专有的设计技术实现了出色的温漂(3ppm/℃)和高精度(0.05%)。这些特性与极低噪声相结合,使LHR30XX系列成为高精度数据采…

专题:2025AI营销市场发展研究报告|附400+份报告PDF汇总下载

原文链接:https://tecdat.cn/?p42800 在数字化浪潮席卷全球的当下,AI营销正成为驱动企业增长的核心动力。 从市场规模来看,AI营销正经历着爆发式增长,生成式AI的出现更是为其注入了强大活力。在应用层面,AI已渗透到营…

深入对比 Python 中的 `__repr__` 与 `__str__`:选择正确的对象表示方法

文章目录 核心概念对比1. 根本目的差异2. 调用场景对比深入解析:何时使用哪种方法场景 1:开发者调试 vs 用户展示场景 2:技术表示 vs 简化视图高级对比:特殊场景处理1. 容器中的对象表示2. 日志记录的最佳实践3. 异常信息展示最佳实践指南1. 何时实现哪个方法?2. 实现原则…

万能公式基分析重构补丁复分析和欧拉公式原理推导

基分析, x11 x2-1 x3i 存在加法法则 x1x20 所以x1-x2 存在链式基乘法法则 x1x1*x1x2*x2 x2x3*x3 x3x1*x3 -x1x2x3 将链式基乘法操作 二次,三次,直至n次化简得 一次 x1 -x1 x3 矩阵 x1 x1 x2 x2 x3 …

OpenCV 4.10.0 移植

OpenCV 4.10.0 移植使用 概述移植编译下载解压编译环境编译 编译完成OpenCV 库文件及其作用 使用实例参考代码 参考 概述 OpenCV(Open Source Computer Vision Library)是计算机视觉领域最广泛使用的开源库之一,提供了丰富的功能模块&#xf…

Tomcat10.0以上版本编译成功但报错HTTP状态 404

Tomcat正常启动且项目已成功部署,但出现404错误。 HTTP状态 404 - 未找到package org.example;import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpSer…

在Flask项目中用Git LFS管理大文件(PDF)的完整实践

在Flask项目中用Git LFS高效管理大文件(以农机说明书PDF为例) 背景与需求 在农机管理系统等实际项目中,经常需要上传和管理大量超大文件(如200MB以上的PDF说明书、图片等)。如果直接用Git管理这些大文件,不仅会导致仓库膨胀、clone/pull速度变慢,还可能遇到推送失败等…

朴素贝叶斯算法案例演示及Python实现

目录 一、基本原理二、案例演示2.1 未平滑处理2.2 Laplace平滑处理 三、Python实现 一、基本原理 朴素贝叶斯思想:依靠特征概率去预测分类,针对于代分类的样本,会求解在该样本出现的条件下,各个类别出现的概率,哪个类…

RAG从入门到高阶(二):Retrieve-and-Rerank

在上一篇教程中,我们了解了 Naive RAG 的基本原理和实现。它就像一个刚刚学会查找资料的新手,虽然能找到一些信息,但有时候找到的并不够精准,甚至会有一些无关的干扰。 今天,我们将介绍 Retrieve-and-Rerank RAG&…

【脚本】Linux磁盘目录挂载脚本(不分区)

以下是一个不带分区,直接挂载整个磁盘到指定目录的脚本。该脚本会检查磁盘是否已挂载,自动创建文件系统(可选),并配置开机自动挂载: #!/bin/bash# 磁盘直接挂载脚本(不分区) # 使用…

壁纸网站分享

壁纸网站链接: 1.Microsoft Design - Wallpapers:https://wallpapers.microsoft.design/?refwww.8kmm.com 2.哲风壁纸:https://haowallpaper.com/wallpaperForum 3.壁纸湖:https://bizihu.com/ 4.极简壁纸:https://bz…

XILINX FPGA如何做时序分析和时序优化?

时序分析和时序优化是FPGA开发流程中关键步骤,确保设计在目标时钟频率下正确运行,避免时序违例(如建立时间或保持时间不足)。以下以Xilinx Kintex-7系列FPGA为例,详细介绍时序分析和时序优化的方法、工具、流程及实用技…

linux screen轻松管理长时间运行的任务

以下是针对 Alpine Linux 环境下 screen 的安装与使用指南,结合迁移数据场景的具体操作步骤: 1. 安装 screen‌ 在 Alpine Linux 中需通过 apk 安装(非默认预装): apk add screen 验证安装: screen --…

VR制作公司业务范围

VR制作公司概念、能力与服务范围 虚拟现实(Virtual Reality, VR)技术,作为当代科技的前沿领域,通过计算机技术模拟出真实或虚构的世界环境,使用户能够沉浸其中并进行交互体验。VR制作公司,是这一领域的专业…