SRTP是如何工作的

article/2025/10/13 13:52:08

什么是SRTP

SRTP wiki

参考RFC 3711 - The Secure Real-time Transport Protocol
参考RFC 7201 - Options for Securing RTP Sessions

RTP是实时传输协议,用于媒体通信;SRTP就是加密的实时传输协议。

工作原理很简单,即在RTP开始前,双方先协商约定好加密的cipher suite和key,然后把媒体加密后传输。


加密方式

默认的加密方式使用的是AES, 定义了两种mode

  • (1) AES in Counter Mode
  • (2) AES in f8-mode
    RFC 3711

这两种mode是什么区别请参考RFC 3711

支持的Cipher Suite

每一种SRTP设备可能支持的Cipher Suite可能各不相同,需要查看响应的文档。

比如我们常见的Freeswitch支持的SRTP Cipher Suite如下,

AEAD_AES_256_GCM_8
AEAD_AES_128_GCM_8
AES_CM_256_HMAC_SHA1_80
AES_CM_192_HMAC_SHA1_80
AES_CM_128_HMAC_SHA1_80
AES_CM_256_HMAC_SHA1_32
AES_CM_192_HMAC_SHA1_32
AES_CM_128_HMAC_SHA1_32
AES_CM_128_NULL_AUTH

具体可以参考这里

KEY的管理

在开始加密传输前,双方应该以什么样的方式来协商加密方式呢?

RFC 7201给了几种可供参考的选择

  1. Session Description Protocol (SDP) security descriptions

Refer RFC 4566 - SDP: Session Description Protocol

  1. Datagram Transport Layer Security Extension for SRTP (DTLS-SRTP)

Refer RFC 5763 - Framework for Establishing a Secure Real-time Transport Protocol (SRTP)
Security Context Using Datagram Transport Layer Security (DTLS)

  1. The Multimedia Internet Keying (MIKEY) protocol

Refer RFC 3830 - MIKEY: Multimedia Internet KEYing

SRTP with SDP

比较常用的方式是SRTP with SDP,

SDP的offer/answer协商模式这里不在讨论,不清楚的可以参考RFC文档。下面举一个最简单的例子

OFFER/ANSWER

  1. client 发起INVITE携带SDP, SDP中包含client支持的cipher suites和对应的key
    offer
  2. server answer的时候带的SDP,这里就是协商过的加密信息answer

注意事项

VOIP部署的情况下,一般采用的是SRTP WITH SDP.但是这里的key都是明文传输,所以光有SRTP还是等于裸奔,一般SRTP会配套TLS使用


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

相关文章

SRTP/SRTCP协议

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

VoIP之SRTP

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

音视频协议-SRTP

1 SRTP环境搭建 1.1 SRTP简介 STRP它是 思科的开源安全 RTP 库。RTP 是实时传输协议,一种用于传输实时数据(如电话、音频和视频)的 IETF 标准,由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将实体关系转化为表…

个人博客数据库设计

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

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

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

数据库设计实战(一):数据库设计规范

一、数据库设计流程 1、需求分析 确定用户对数据库系统的使用要求和各种约束条件,形成用户需求规约 2、概念设计 对用户要求描述的现实世界,通过对其分类、聚集和概括,建立抽象的概念数据模型 3、逻辑设计 将现实世界的概念数据模型设计…

详解数据库设计的四个阶段

一、系统需求分析阶段 数据库设计的第一步,就是了解与分析用户需求,确定系统边界信息需求、处理需求、安全性和完整性需求,然后编写系统分析报告。 系统分析报告的内容主要包括: 随系统分析报告需提供的附件还有: …

MySQL数据库设计-案例

大家好,我是忘鱼。分享一下数据库设计(案例) 目录 一、案例 二、代码 三、总结 一、案例 如下进行数据库设计。这是黑马上的一道练习题。 二、代码 drop table if EXISTS music; drop table if EXISTS song; drop table if EXI…

数据库设计流程

数据库设计的步骤 数据库设计的流程总共有三步: 现实世界的实体模型通过建模转换为信息世界的概念模型(即 E-R 模型)概念模型经过模型转化,得到数据库使用的数据模型(在关系数据库设计中为关系模型)数据模…

浅谈数据库设计

第一章 需求分析 设计简介 根据业务需要,结合选用的DBMS,设计出最有的数据存储模型并建立好数据库中的表结构及表与表之间的关系使之有效的存储和高效的访问。 数据库设计 在系统设计开始就应该对数据库进行良好的设计,这样才能保证以后对…

数据库设计与实现

一个良好的设计对于数据库系统至关重要,它可以减少数据冗余,确保数据的一致性和完整性,同时使得数据库易于维护和扩展。 实体关系图 实体关系图(Entity-Relationship Diagram,ERD)是一种用于数据库设计的结…

数据库设计(二)——简单设计实例

Mysql设计步骤 一、设计一套系统数据库的步骤 1、实现什么样的功能(保证项目功能的完整性,列出所有模块)。 2、通过思维导图将每个功能模块串联起来(放射状,细节可以用文字描述)。 …

数据库设计的一般步骤

经过几天给韶关某个高校进行数据库设计的实训,对数据库设计的过程有了更加深刻的理解。 一、数据库设计的步骤 (1)了解功能需求 在设计数据库之前,设计人员必须要先了解系统的功能需求。这里可以通过阅读产品需求规格说明书&…

9.数据库设计

数据库设计 1、数据库设计概述 数据库设计。广义地讲,是数据库及其应用系统的设计,即设计整个数据库应用系统;狭义地讲,是设计数据库本身,即设计数据库的各级模式并建立数据库, 这是数据库应用系统设计的一…

数据库设计-概念结构设计

文章目录 数据库设计概念设计结构概念结构设计ER模型的基本元素实体/实体集属性区别实体和属性联系 二元联系的关系1:11:nm:n 一元联系1:11:nm:n 三元联系 采用ER模型的概念设计设计局部ER模型例题设计全局ER模型全局ER模型的优化 数据库设计 数据库设计:构造最优的…

数据库设计—图书管理数据库系统设计

如下代码供学习交流,获取完整代码,请关注公众号(coding加油站)获取 1、项目简介 图书馆数据库,该项目同时提供pythonweb可视化展示界面,也可提供相关报告数据,可以用来作为数据库系统设计的期…

数据库设计(一)——数据库设计

一、数据库设计简介 按照规范设计,将数据库的设计过程分为六个阶段: A、系统需求分析阶段 B、概念结构设计阶段 C、逻辑结构设计阶段 D、物理结构设计阶段 E、数据库实施阶段 F、数据库运行与维护阶段 需求分析和概念结构设计独立于任何数据库管理系统…

数据库设计的六个基本步骤

按照规范设计的方法,考虑数据库及其应用系统开发全过程,可将数据库设计分为以下6个阶段,分别为:1.需求分析,2.概念结构设计,3.逻辑结构设计,4.物理结构设计,5.数据库实施&#xff0c…

数据库设计(一)

目录 数据库设计的基本概念: 数据库设计包括以下几个部分: 需求设计: 1、数据: 2、处理: 概念结构设计: 实体: 例如: 联系类型: 1、一对一: 2、一对多&a…