概述

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. sourcetree下回退
  2. python matplotlib.pyplot.show() plt.show()(显示一个图表)
  3. jdbc preparestatement 执行多条语句_第二十一天JDBC编程
  4. Codeforces-33C. Wonderful Randomized Sum
  5. Android(五)——dex文件动态调试
  6. 机器学习问题方法总结
  7. VC,一条会被鼠标移动的直线
  8. 同花顺如何切换k线_K线之形态学:浅谈纸白银产品该如何去做好交易?
  9. 《python透明人士,他是凭什么成为主流编程的宠儿?!》Python基础
  10. js高级学习笔记(b站尚硅谷)-11-变量提升与函数提升
  11. Java解析XML并自动写入Excel
  12. PushService开发分享
  13. qq空间上传html代码,100分!如何在博客或msn、qq空间里面添加html代码?
  14. Git学习-本地版本库的创建与简单操作
  15. 【DB笔试面试594】在Oracle中,关键字NOLOGGING、APPEND和PARALLEL提高DML性能方面有什么差别?...
  16. 【Charles】charles unknown问题解决,及手机代理设置【iOS手机】
  17. 字节跳动2023届校招薪资盘点!
  18. 计算机研究生论文数学公式,研究生论文公式符号细则.doc
  19. B2B企业品牌驱动增长的底层逻辑
  20. Java 面试全解析:核心知识点与典型面试题

热门文章

  1. 从零搭建自己的SpringBoot后台框架(一)
  2. A feature selection method via analysis of relevance, redundancy, and interaction
  3. 微信公众号打开小程序
  4. Vue CLI 環境設定與打包
  5. A与B都是m×n矩阵,则A与B等价的充分必要条件是存在m阶可逆矩阵P以及n阶可逆矩阵Q,使PAQ=B
  6. JData数据处理及高潜用户购买意向预测
  7. Linux Bash漏洞复现
  8. FATE联邦学习框架之KubeFATE部署(基于K8S)最详细过程
  9. python 用turtle自动画图
  10. 用Android Studio 编写简易计算器