概述
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技术解析相关推荐

  1. WebRTC 之 DTLS 技术解析

    概述 DTLS(Datagram Transport Layer Security) 提供了 UDP 传输场景下的安全机制,能防止窃听.篡改.冒充等问题. 在 WebRTC中使用 DTLS 的地方包括 ...

  2. DTLS 技术要点解析

    DTLS 技术要点解析 </h1><div class="clear"></div><div class="postBody&q ...

  3. 互动直播之WebRTC服务开源技术选型【转】

            最近研究了一下会议服务器相关的知识,看到了这篇文章,介绍了很基础的概念说明和选型比较,这里转载分享一下. 转自:互动直播之WebRTC服务开源技术选型 - 掘金 1 直播基础知识 最原 ...

  4. WebRTC 中 SDP 信息解析

    TL;NR 更详细的 WebRTC SDP 解析请参考 https://tools.ietf.org/html/draft-ietf-rtcweb-sdp-14 0x00 前言 SDP (Sessio ...

  5. 直播软件开发互动直播之WebRTC服务开源技术选型

    直播软件开发互动直播之WebRTC服务开源技术选型 1 直播基础知识 最原始的直播系统其实并没有想象的那么复杂,无非就是主播端将音视频数据推送到服务器,观众端则从服务器拉取数据播放. 1.1 基本常识 ...

  6. CPU三级缓存技术解析

    CPU三级缓存技术解析 cpu存取数据 cpu存取数据大致可以认为是下图的流程(此处图比较简单) cpu拿到需要的内存地址,之后这个地址会被mmu转换成真正的物理地址,接下来会去查接下来查L1 cac ...

  7. 服务器BMC、BIOS、IPMI、UEFI技术解析

    服务器BMC.BIOS.IPMI.UEFI技术解析 以BIOS为核心的固件产业,是信创产业链的重要组成部分,可被誉为信创产业的"山海关".在计算机体系中,BIOS 有着比操作系统更 ...

  8. ITS智能交通监控系统技术解析

    ITS智能交通监控系统技术解析 红灯,逆行,变道 车辆抓拍和车速检测 非法停车和交通流量检测 交叉路口违法检测 发生碰撞的交叉口是智能交通管理. 机动执法 当你需要一个可以移动的系统时,会跟着你移动. ...

  9. Tensor Core技术解析(上)

    Tensor Core技术解析(上) NVIDIA在SIGGRAPH 2018上正式发布了新一代GPU架构--Turing(图灵),黄仁勋称Turing架构是自2006年CUDA GPU发明以来最大的 ...

最新文章

  1. 关于CSS样式浏览器兼容问题的一些注意事项
  2. 判断安卓程序是否高危程序。
  3. CS231n课程笔记翻译系列之目录汇总
  4. JVM对象占用内存计算
  5. js中加载指定的html代码,在js或JQuery中怎样判断页面html代码中含有指定名称的div元素...
  6. Harbor的安装部署(二)
  7. mysql windows 安装 错误
  8. char数组转换成字符串_将字符串转换为char数组java –将字符串转换为char
  9. python博弈论代码_博弈论的算法总结
  10. 怎样利用通达信软件调出半年线和年线?
  11. word文字上下间距怎么调_Word表格调整(行高、文字上下间距等)
  12. 德国IT民工找工有感
  13. Window10 磁盘如何分区(压缩卷操作)
  14. ZZULIOJ.1102: 火车票退票费计算(函数专题)
  15. svn怎么执行清理命令_C盘又见红了?一个C盘清理强迫症教你真正有效的解决方法!...
  16. Unity Failed to resolve project template:Failed to decompress
  17. 串口通信——S5PV210串口通信接口详解
  18. 【Jpeg】不同平台如何编译 jpeg-turbo 库文件
  19. rstp 转hls_将RTSP流转为浏览器播放
  20. Matlab中米粒图像处理,米粒个数和大小计算

热门文章

  1. 适用于中小企业的5种采购策略
  2. 证明x^n导数等于nx^n-1
  3. request的用法
  4. 打aar混淆包和集成aar的方法
  5. 一张图讲清楚淘宝直播背后的前端技术 | 赠送多媒体前端手册
  6. vue+element 输入的大于等于0
  7. python 爬虫 小电影 不会告诉网址_想看电影不知道看啥,python爬虫告诉你!
  8. 使用nginx设置代理服务器
  9. 晨读:工作中常用的表达
  10. ROS中ENU坐标系与无人机中NED坐标系的转换关系理解