WebRTC服务器理论铺垫(六):OpenSSL协议,DTLS协议,RTP协议和SRTP协议

article/2025/10/13 10:57:34

文章目录

  • 一、SSL协议
  • 二、OpenSSL
  • 三、TLS和DTLS
  • 四、DTLS的通信的步骤图
  • 五、RTP协议和SRTP协议
    • 5.1 详解RTP协议
    • 5.2 详解RTCP协议
    • 5.3 RTP && RTCP的协议的关键技术
  • 六、DTLS-SRTP协议


一、SSL协议

SSL的全名叫做secure socket layer(安全套接字层),最开始是由一家叫网景的互联网公司开发出来,主要是防止信息在互联网上传输的时候不被窃听或者篡改,后来网景公司提交SSL给ISOC组织做标准化,改名为TLS(transport layer security)。其实在互联网的数据传输中,对数据进行窃听和修改是非常容易的,如果你上网连得的是wifi,那么你的数据一定会经过wifi路由器,通过对路由器做些手脚就可以拿到这些数据。

SSL主要简化有以下几个步骤:

  1. 客户端向服务器端索要并验证对方证书
  2. 双方协商生成会话密钥(前两部合称为握手阶段,handshake)
  3. 双方采用会话密钥进行加密通信
  4. 断开连接

二、OpenSSL

上面的SSL只是一个协议,openssl则是SSL的实现工具,另外openssl还包含了公钥私钥的生成,摘要生成等各种工具。
OpenSSL由三部分组成:

  1. libencrpt库:加密解密库
  2. libssl库,实现SSL功能,用于通信加密的库
  3. openssl:多用途命令行工具

在这里插入图片描述

三、TLS和DTLS

TLS是基于TCP协议的,DTLS是基于UDP协议的。
DTLS协议的握手过程如下:
在这里插入图片描述
DTLS的安全性在以下几个方面得到了保障:

  • DTLS在握手时进行Cookie校验,防止dos攻击(放重放)。
  • DTLS在握手时具有身份证书和数据签名,防止篡改和冒充。
  • DTLS在握手时使用公钥密码进行加密,防止秘密密钥被泄露。
  • DTLS在通信时使用秘密密钥进行加密,防止通信内容泄露(机密性)。
  • DTLS在传输方面使用HMAC对数据完整性进行校验,防止数据被篡改(完整性).

简单的来说,DTLS是TLS的升级版,两者的握手过程基本上是一致的,差别以及特别说明如下:

  • DTLS中HelloVerifyRequest是为防止DoS攻击增加的消息。
  • TLS 没有发送证书申请,这个也不是必须的,是反向验证即服务器验证客户端。
  • DTLS的Record协议 新增了序号和纪元,以及ClientHello中新增了Cookie,以及握手中新增了碎片信息(防止超过UDP的MTU),都是为了适应UDP的丢包以及容易被攻击做的改进。
  • DTLS最后的警报是将客户端的加密警报消息,解密之后直接响应给客户端的,实际上服务器应该回应加密的消息,这里服务器回应明文是为了解析客户端加密的那个警报包是什么。

四、DTLS的通信的步骤图

在这里插入图片描述
注意,在STUN Request中会将ICE的username和password带过去。
如下图中的ice-ufrag和 ice-pwd
在这里插入图片描述

五、RTP协议和SRTP协议

RTP(Real Time Transport Protocol)是针对Internet上多媒体数据流的一个传输协议。其被定义为在一对一或者一对多的传输情况下工作,其目的是提供时间信息和实现流同步。RTP本身只能保证实时数据的传输,并不能为按顺序传送数据包提供可靠的传送机制,也不能提供流量控制或者拥塞控制,它依靠RTCP提供这些服务。

Real-time Transport Control Protocol或RTP Control Protocol或简写RTCP)是实时传输协议(RTP)的一个姐妹协议。RTCP由RFC 3550定义(取代作废的RFC 1889)。RTP 使用一个 偶数 UDP port ;而RTCP 则使用 RTP 的下一个 port,也就是一个奇数 port。RTCP与RTP联合工作,RTP实施实际数据的传输,RTCP则负责将控制包送至电话中的每个人。其主要功能是就RTP正在提供的服务质量做出反馈。

在这里插入图片描述

5.1 详解RTP协议

从下图可看出RTP被划分在传输层,它建立在UDP上。同UDP协议一样,为了实现其实时传输功能,RTP也有固定的封装形式。RTP用来为端到端的实时传输提供时间信息和流同步,但并不保证服务质量。服务质量由RTCP来提供。
在这里插入图片描述

RTP的数据报文格式如下:在这里插入图片描述
填充位(1bit)若p=1则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。填充可能用于某些具有固定长度的加密算法或者用在底层数据单元中传输多个RTP包
扩展(X):1个比特,置“1”表示RTP报头后紧随一个扩展报头
参与源数(CSRC计数(CC) )4b,CSRC计数包括紧接在固定头后CSRC标识符个数。
标记(M):1个比特,其具体解释由应用文档来定义。例如,对于视频流,它表示一帧的结束,而对于音频,则表示一次谈话的开始
有效载荷类型,7个比特,它指示在用户数据字段中承载数据的载荷类别,记录后面资料使用哪种编码,接收端找出相应的 decoder 解码出来。

音频:μ律PCM(0),GMS(3)
A律PCM(8),G.722(9),G728(1)
视频:活动JPEG(26)、H.261(31)、
MPEG1(32)、MPEG2(33)等

5.2 详解RTCP协议

在这里插入图片描述

RTCP也是用UDP来传送的,但RTCP封装的仅仅是一些控制信息,因而分组很短,所以可以将多个RTCP分组封装在一个UDP包中。RTCP有如下五种分组类型。

在这里插入图片描述
1、SR:
发送端报告包,用于发送和接受活动源的统计信息
2、RR:
接收者报告包,用于接收非活动站的统计信息;
3、SDES:
源描述包,用于报告和站点相关的信息,包括CNAME;
4、BYE:
断开RTCP包,是站点离开系统的报告,表示结束;
5、APP:
应用特定函数。

5.3 RTP && RTCP的协议的关键技术

  • 时间戳

  • 时延:
    影响时延的因素有多个方面:

    1. 编解码
    2. 网络
    3. 防抖动的缓冲:抖动指的是一对包中接收机相对于发射机的时间跨度的差值的平均偏差。该值等于两个包相对传输时间的差值,相对传输时间指的是包的RTP时间标志和到达时刻接收机时钟,以同一单位的差值。
      比如我们假设Si是包i的开始传输RTP时间标志,Ri是包i到达时刻的RTP时间标志值。对于两个包i和j,D可以表达为:
      D(i,j) = (Rj - Ri) - (Sj - Si) = (Rj - Sj) - (Ri - Si).

    到达时刻抖动J可以在收到从源SSRC_n来的每个数据包i后连续计算,利用该包和前一包i-1的偏差D。
    根据公式 J(i) = J(i-1) + (|D(i-1,i)| - J(i-1))/16 计算

在这里插入图片描述
SRTP其实是在RTP的基础上,对数据(Encrypted RTP payload)进行加密的协议.

六、DTLS-SRTP协议

在WebRTC中,DTLS要解决的问题是交换密钥,确认双方的加密算法(比如AES128)。

在WebRTC中,SRTP要解决的问题是对数据加密保证数据安全,保证数据完整性。

LIBSRTP: 由思科开发的开源库。调用步骤如下图所示
在这里插入图片描述



http://chatgpt.dhexx.cn/article/AmyYVqmB.shtml

相关文章

webrtc-dtls、sctp、srtp

Webrtc通道协议总览图 WebRtc媒体建立流程图 SCTP: 当我们在网上搜索SCTP时,会看到相关的描述,将SCTP介绍为与UDP,TCP同一层次的传输层协议。最早STCP是把窄带7号信令的可靠性传输机制引入到IP协议、优化TCP协议的不能分帧传输…

RTP/RTCP 和 SRTP/SRTCP协议

此文章为转载,如有侵权,通知删除 原地址:https://blog.csdn.net/swallow_he/article/details/74202104 RTP/RTCP 和 SRTP/SRTCP协议 1 RTP RTP 协议(Real TimeProtocol)提供具有实时特征的、端到端的数据传送服务,可用来传送声音…

【网络通信 -- 直播】网络通信协议简介 -- SRTP/SRTCP

【网络通信 -- 直播】网络通信协议简介 -- SRTP/SRTCP 【0】简介 安全实时传输协议 (Secure Real-time Transport Protocol,SRTP) 是在实时传输协议 (Real-time Transport Protocol,RTP) 基础上定义的一个协议,旨在为单播和多播应用程序中的…

RFC4568规范:SDP协商SRTP密钥

SDP协商SRTP密钥 RFC4568中关于媒体流加密说明时&#xff0c;在SDP中新增了"crypto"字段用于描述加密信息&#xff0c;格式如下&#xff1a; acrypto:<tag> <crypto-suite> <key-params> [<session-params>] 其中&#xff1a; <…

srtp的致命错误

文章目录 javaweb使用了ajax技术依然刷新页面法一法二法三 javaweb后台servlet不能重定向问题javaweb失败加载xxx&#xff0c;因为没有框架当用户一台设备打开多个网页访问我的窗口时验证码错误的实质session的实质浏览器和服务器之间的session关联的技术内幕实验验证 javaweb使…

Janus dtlssrtp 流程图

1 init 2 create bio接口和pre 秘钥 各个部分说明: 绑定ssl和bio;SSL_set_bio(dtls->ssl, dtls->read_bio, dtls->filter_bio);//init dtls:SSL_new--使用BIO那么就可以和SSL、非加密的网络以及文件IO进行透明的连接;BIO可以连接在一起成为一个BIO链//读写bio就等于读…

TLS-SRTP协议详解

当webrtc通过tls握手完成,会把key和加密算法给srtp,由srtp进行数据的加密和解密。 srtp使用的是对称的加解密算法。而dtls握手协议使用的是非对称的加解密算法。 对称加密算法需要同一个密钥。此时通过tls握手,a给b自己的密钥,b给a自己的密钥,a用自己的密钥加密,b用a给的…

SRTP RFC 3711

目录 1 SRTP session key 2 RTP 加密 2.1 RTP body加密 2.1.1 计算IV 2.1.2 计算AAD 1 SRTP session key K

WebRTC 传输安全机制:深入显出 SRTP 协议

简介&#xff1a;SRTP&#xff1a;安全传输协议&#xff08;Secure Real-time Transport&#xff09; 通过 DTLS 协商后&#xff0c;RTC 通信的双方完成 MasterKey 和 MasterSalt 的协商。接下来&#xff0c;我们继续分析在 WebRTC 中&#xff0c;如何使用交换的密钥&#xff0…

视频码流传输协议srtp/srtcp详细介绍

RTP/RTCP 协议并没有对它的负载数据进行任何保护。因此&#xff0c;如果攻击者通过抓包工具&#xff0c;如 Wireshark&#xff0c;将音视频数据抓取到后&#xff0c;通过该工具就可以直接将音视频流播放出来&#xff0c;这是非常恐怖的事情&#xff0c;这里可以通过srtp/srtcp协…

计算机专业srtp项目选题,我都大二了,才知道什么是SRTP

原标题:我都大二了,才知道什么是SRTP 大二下学期一开始,陆陆续续有同学问我: “哎,你报名SRTP了吗?” “你SRTP找了哪个老师了?” “我们SRTP组队吧!” 这时的我,一脸懵逼: 啥??? 惊讶的目光顿时向我扫来, “你连SRTP都不知道? 我一入学学长学姐就告诉我了!” …

WebRTC 传输安全机制:DTLS 和 SRTP

在 WebRTC 中&#xff0c;为了保证媒体传输的安全性&#xff0c;引入了 DTLS 和 SRTP 来对通信过程进行加密。DTLS 的作用、原理与 SSL/TLS 类似&#xff0c;都是为了使通信过程变得更安全。 常用加密方法 加密技术 1. 对称加密 对称加密&#xff08;Symmetric Cryptograph…

DTLS-SRTP协议学习

1.DTLS-SRTP&#xff1a; WEBRTC中真正使用的协议&#xff0c;会使用DTLS握手协议后交换证书key&#xff0c;交换完成将key和加密算法交给SRTP进行数据加解密。 2.DTLS要解决的问题&#xff1a; 2.1.交互密钥 SRTP是真正加解密的&#xff0c;使用的是对称的加密算法。DTLS使…

SRTP是如何工作的

什么是SRTP 参考RFC 3711 - The Secure Real-time Transport Protocol 参考RFC 7201 - Options for Securing RTP Sessions RTP是实时传输协议&#xff0c;用于媒体通信&#xff1b;SRTP就是加密的实时传输协议。 工作原理很简单&#xff0c;即在RTP开始前&#xff0c;双方先协…

SRTP/SRTCP协议

SRTP(Secure Real Time Protocol)安全实时传输协议&#xff0c;SRTCP(Secure Real Time Controle Protocol)安全实时传输控制协议。了解这个两个协议之前&#xff0c;首先需要了解RTP和RTCP协议&#xff0c;SRTP和SRTCP是在RTP和RTCP传输的基础上&#xff0c;对数据进行了加密和…

VoIP之SRTP

互联网已经渗透到生活的方方面面,用户对于网络信息安全的要求非常高。在VoIP领域中&#xff0c;使用SRTP对音频、视频数据进行加密&#xff0c;保证数据安全。 SRTP的作用如下&#xff1a; 1. 保证RTP包中负载&#xff08;音视频数据&#xff09;的机密性 2. RTP包完整性确认&…

音视频协议-SRTP

1 SRTP环境搭建 1.1 SRTP简介 STRP它是 思科的开源安全 RTP 库。RTP 是实时传输协议&#xff0c;一种用于传输实时数据&#xff08;如电话、音频和视频&#xff09;的 IETF 标准&#xff0c;由RFC 3550定义。SRTP用于为 RTP 数据提供机密性以及对 RTP 标头和有效负载进行身份…

关系型数据库设计

目录 一、本章目标 二、为什么需要设计数据库 三、设计数据库的步骤 四、数据库设计E-R图 4.1为什么使用E-R图 4.2绘制E-R图 4.3实体间的映射关系 五、数据库设计模型转换 5.1关系型数据库设计分类 5.2各模型之间的元素对应关系 5.3基本转换原理 5.4将实体关系转化为表…

个人博客数据库设计

前言 最近要做数据库大作业&#xff0c;在思考了很久之后&#xff0c;还是设计一个简单的个人博客数据库&#xff0c;数据库采用的时MySQL5.7。 数据库下载&#xff08;提取码: s2f9&#xff09; 一、 概述及分析 1.1 项目背景 随着互联网的发展&#xff0c;越来越多的人拥…

[数据库设计]如何合理和有效的进行数据库设计

#前言 通常情况下&#xff0c;可以从两个方面来判断数据库设计的是否规范: 1)一是看看是否拥有大量的窄表 窄表往往对于OLTP比较合适&#xff0c;符合范式设计原则 2)宽表的数量是否足够的少。 所谓的宽表就是字段比较多的表&#xff0c;包含的维度层次比较多&#xff0c;造成冗…