WebRTC 之 DTLS 技术解析
概述
DTLS(Datagram Transport Layer Security) 提供了 UDP 传输场景下的安全机制,能防止窃听、篡改、冒充等问题。
在 WebRTC中使用 DTLS 的地方包括两部分:
Datachannel 数据通道
在 Datachannel 数据通道中,WebRTC 完全使用 DTLS 来进行协商和加解密
MediaChannel 媒体通道
在媒体通道中 WebRTC 使用 SRTP 来进行数据的加解密,DTLS 的作用仅仅是用来做密钥交换,RTP/RTCP 的数据为了与历史设备兼容性的考虑,完全通过 SRTP 来实现。
DTLS 的作用是给数据通道数据加密(保证数据安全性)、增加链路证书校验机制(防止网络攻击)。与 TLS over TCP 不同,UDP层没有对数据报文的乱序、丢包做处理,会导致链路证书校验协商无法保证。所以:
DTLS 在创建连接时的握手消息里面,需要增加可靠性传输机制。
由于 UDP 对数据的实时性要求比较高,所以链路建立稳定后,传输应用数据时,没有提供数据可靠性传输机制,需要 SCTP 协议或者应用层保证。
DTLS 可以参考的 RFC 文档:
- rfc4347
- rfc5763
DTLS 的交互流程大概如下:
Peer-1 Peer-2------ ------ClientHello --------> Flight 1<------- HelloVerifyRequest Flight 2ClientHello --------> Flight 3ServerHello \Certificate* \ServerKeyExchange* Flight 4CertificateRequest* /<-------- ServerHelloDone /Certificate* \ClientKeyExchange \CertificateVerify* Flight 5[ChangeCipherSpec] /Finished --------> /[ChangeCipherSpec] \ Flight 6<-------- Finished /Figure 1. Message flights for full handshake
下图为 WebRTC 媒体通过建立过程的简单描述,可以看出 DTLS 在整个协商过程中与其他流程的时序关系。
WebRTC 中 DTLS 参数
WebRTC 中的 DTLS 参数需要通过 SDP 信息来设置和传递,而且只需要两种 a line
表示:
a=setup
a=fingerprint
a=setup 表示 DTLS 的协商过程中角色,有三个可能值:
a=setup:actpass 既可以是 client 角色,也可以是 server 角色
a=setup:active client 角色
a=setup:passive server 角色
根据 RFC5763,SDP请求的 a=setup 属性必须是 actpass,由应答方决定谁是 DTLS client,谁是 DTLS server。
a=fingerprint 的内容是证书的摘要签名,用于验证证书的有效性,防止冒充。
WebRTC 之 DTLS 技术解析相关推荐
- WebRTC之DTLS技术解析
概述 DTLS(Datagram Transport Layer Security) 提供了 UDP 传输场景下的安全机制,能防止窃听.篡改.冒充等问题. 在 WebRTC中使用 DTLS 的地方包括 ...
- DTLS 技术要点解析
DTLS 技术要点解析 </h1><div class="clear"></div><div class="postBody&q ...
- 互动直播之WebRTC服务开源技术选型【转】
最近研究了一下会议服务器相关的知识,看到了这篇文章,介绍了很基础的概念说明和选型比较,这里转载分享一下. 转自:互动直播之WebRTC服务开源技术选型 - 掘金 1 直播基础知识 最原 ...
- WebRTC 中 SDP 信息解析
TL;NR 更详细的 WebRTC SDP 解析请参考 https://tools.ietf.org/html/draft-ietf-rtcweb-sdp-14 0x00 前言 SDP (Sessio ...
- 直播软件开发互动直播之WebRTC服务开源技术选型
直播软件开发互动直播之WebRTC服务开源技术选型 1 直播基础知识 最原始的直播系统其实并没有想象的那么复杂,无非就是主播端将音视频数据推送到服务器,观众端则从服务器拉取数据播放. 1.1 基本常识 ...
- CPU三级缓存技术解析
CPU三级缓存技术解析 cpu存取数据 cpu存取数据大致可以认为是下图的流程(此处图比较简单) cpu拿到需要的内存地址,之后这个地址会被mmu转换成真正的物理地址,接下来会去查接下来查L1 cac ...
- 服务器BMC、BIOS、IPMI、UEFI技术解析
服务器BMC.BIOS.IPMI.UEFI技术解析 以BIOS为核心的固件产业,是信创产业链的重要组成部分,可被誉为信创产业的"山海关".在计算机体系中,BIOS 有着比操作系统更 ...
- ITS智能交通监控系统技术解析
ITS智能交通监控系统技术解析 红灯,逆行,变道 车辆抓拍和车速检测 非法停车和交通流量检测 交叉路口违法检测 发生碰撞的交叉口是智能交通管理. 机动执法 当你需要一个可以移动的系统时,会跟着你移动. ...
- Tensor Core技术解析(上)
Tensor Core技术解析(上) NVIDIA在SIGGRAPH 2018上正式发布了新一代GPU架构--Turing(图灵),黄仁勋称Turing架构是自2006年CUDA GPU发明以来最大的 ...
最新文章
- sourcetree下回退
- python matplotlib.pyplot.show() plt.show()(显示一个图表)
- jdbc preparestatement 执行多条语句_第二十一天JDBC编程
- Codeforces-33C. Wonderful Randomized Sum
- Android(五)——dex文件动态调试
- 机器学习问题方法总结
- VC,一条会被鼠标移动的直线
- 同花顺如何切换k线_K线之形态学:浅谈纸白银产品该如何去做好交易?
- 《python透明人士,他是凭什么成为主流编程的宠儿?!》Python基础
- js高级学习笔记(b站尚硅谷)-11-变量提升与函数提升
- Java解析XML并自动写入Excel
- PushService开发分享
- qq空间上传html代码,100分!如何在博客或msn、qq空间里面添加html代码?
- Git学习-本地版本库的创建与简单操作
- 【DB笔试面试594】在Oracle中,关键字NOLOGGING、APPEND和PARALLEL提高DML性能方面有什么差别?...
- 【Charles】charles unknown问题解决,及手机代理设置【iOS手机】
- 字节跳动2023届校招薪资盘点!
- 计算机研究生论文数学公式,研究生论文公式符号细则.doc
- B2B企业品牌驱动增长的底层逻辑
- Java 面试全解析:核心知识点与典型面试题
热门文章
- 从零搭建自己的SpringBoot后台框架(一)
- A feature selection method via analysis of relevance, redundancy, and interaction
- 微信公众号打开小程序
- Vue CLI 環境設定與打包
- A与B都是m×n矩阵,则A与B等价的充分必要条件是存在m阶可逆矩阵P以及n阶可逆矩阵Q,使PAQ=B
- JData数据处理及高潜用户购买意向预测
- Linux Bash漏洞复现
- FATE联邦学习框架之KubeFATE部署(基于K8S)最详细过程
- python 用turtle自动画图
- 用Android Studio 编写简易计算器