1. SDP协商SRTP密钥

RFC4568中关于媒体流加密说明时,在SDP中新增了"crypto"字段用于描述加密信息,格式如下:

a=crypto:<tag> <crypto-suite> <key-params> [<session-params>]

其中:

<tag>为十进制数字,用于标记后面所述的加密属性,该数字内容不能为0,在offer/answer的协商模式下,tag用以区分各组备选信息。

<crypto-suite>用于描述加密和认证算法,在offer/answer模式下,本字段参数可协商。

<key-params>反馈crypto-suite字段对应的密钥信息

举例:

crypto:1 AES_CM_128_HMAC_SHA1_80 inline:NHomSmlnXy4qRCwhVi9ANVcwZ3Q3cXVaLykzJ1Rf|2^31|1:1

这里

tag =1

crypto-suite = AES_CM_128_HMAC_SHA1_80 ,支持AES128加密和SHA1_80的Hash

key-params = inline:NHomSmlnXy4qRCwhVi9ANVcwZ3Q3cXVaLykzJ1Rf|2^31|1:1

下面重点介绍下key-params

key-params = <key-method> ":" <key-info>

key-method参数现在只提供一种方式,即“inline”,指示实际密钥信息在key-info字段提供;key-info定义一串字符串,包含Master key、Master salt,可选包含Master key存活时长、Master key索引及长度;在offer/answer协商模式,密钥参数对外公开。

密钥生成规则如下图所示:

例如:AES_CM_128_HMAC_SHA1_80算法套件

Master key:128位(16字节)随机生成;

Master salt :112位(14字节)随机生成 ;

通信双方使用的AES密钥key=base64编码(Master key+ Master salt);

Master key存活时长:一般没有意义,因为默认值很长

MKI:形式为mki_length:mki_value,mki_length是指后面mki_value的实际长度,mki_value用于插入srtp报文中,防破解。

如果没有协商出MKI,则SRTP报文格式如下:

加密报文

Hash值

如果协商出MKI,则SRTP报文格式如下:

加密报文

MKI_VALUE

Hash值

其中MKI_VALUE占的字节数就是MKI_LENGTH

最后加密协商是不对称的,所以本端发出的crypto属性中的加密信息指示的本端发送的码

流的加密信息

RFC4568规范:SDP协商SRTP密钥相关推荐

  1. 翻译-pjsip开发者指南(十一)SDP协商框架

    Chapter 11:SDP Offer/Answer Framework SDP offer/answer框架是基于 RFC 3264 "An Offer/Answer Model wit ...

  2. 【网络通信 -- WebRTC】项目实战记录 -- WebRTC Native SDP 协商没有 H264 载荷问题

    [网络通信 -- WebRTC]项目实战记录 -- WebRTC Native SDP 协商没有 H264 载荷问题 [1]原因分析 webrtc h264 的 supportedHwCodecPro ...

  3. WebRTC 之 PeerConnection: 细说对等连接建立流程一

    WebRTC 是一套基于 Web 的实时通信解决方案,通过浏览器内置的 API 来支持音视频通道的搭建. 简而言之,先在信令通道协商出彼此的媒体和通信参数, 再通过媒体通道来传输音视频媒体数据. Ja ...

  4. 密钥协商(密钥交换)机制的讲解

    国标文件涉及密钥协商算法的函数 生成密钥协商参数并输出 计算会话密钥 产生协商数据并且计算会话密钥 密钥协商(交换)算法及其原理 密钥交换/协商目的 "密钥协商机制"是:(在身份认 ...

  5. RSA加密算法和DH密钥协商的比较

    最近在知乎上看到一篇关于RSA和DH的比较,简单明了,以此记录一下. 问题1:  RSA做密钥协商(密钥交换)时,是否可以防范中间人攻击? 答:单就RSA本身而言,是无法防范中间人攻击的. 和其它加密 ...

  6. mbedtls学习(8)ECDH密钥协商

    ECDH密钥协商 ECDH密钥协商算法基于椭圆曲线密码系统(ECC),使用较短的密钥长度可提供与RSA或DH算法同等的安全等级,密钥长度位160 ~ 256比特的椭圆曲线算法与密钥长度位1024 ~ ...

  7. dh密钥协商算法c语言实现,Diffie-Hellman密钥协商算法-python实现

    Boblee人工智能硕士毕业,擅长及爱好python,基于python研究人工智能.群体智能.区块链等技术,并使用python开发前后端.爬虫等. 1.Diffie-Hellman密钥协商算法 Dif ...

  8. 简单介绍一下SDP规范

    在现实世界中,我们知道寄快递,你首先知道对方和标识发送方的地址,姓名,联系方式等,这些快递才能寄出去,那么在webrtc的世界中,双方或者 多方通信是怎么联系的呢?就是通过SDP这样的一个东西,他里面 ...

  9. WebRTC 传输安全机制:DTLS 和 SRTP

    在 WebRTC 中,为了保证媒体传输的安全性,引入了 DTLS 和 SRTP 来对通信过程进行加密.DTLS 的作用.原理与 SSL/TLS 类似,都是为了使通信过程变得更安全. 常用加密方法 加密 ...

  10. webRTC——SDP(Session Description Protocal)

    SDP(Session Description Protocal),说直白点就是用文本描述的各端(PC 端.Mac 端.Android 端.iOS 端等)的能力. 这里的能力指的是各端所支持的音频编解 ...

最新文章

  1. Quick BI:降低使用门槛,大东鞋业8000家门店的数据导航
  2. 爸爸我爱您(之十二)
  3. C# 中的 null 包容运算符 “!” —— 概念、由来、用法和注意事项
  4. java format 补足空格_11 个简单的 Java 性能调优技巧
  5. godaddy mysql 连接 设置 2014_GoDaddy主机数据库远程访问设置的方法
  6. u2020 华为_顶级标压U加持轻薄本!华为MateBook 13 2020锐龙版评测
  7. 视频通信系统的关键技术与挑战
  8. 报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x93 in position 1721: illegal multibyte sequen
  9. Android 10.0去掉后台启动Service的限制
  10. mac 视频转文字工具
  11. 现代公关无需遮遮掩掩,明火执仗开干就行
  12. 公众号怎么设置滑动文字_微信公众号滑动文字怎么制作内容呢?
  13. html使用thymeleaf模板时,获取数据库中字符串值,拆分为list根据下标获取对应的值的方法
  14. altium designer原理图生成pcb
  15. lamp-linux2
  16. 安卓技术实战01 第一个安卓APP案例
  17. Hadoop基础部分-2
  18. 永信至诚助中国航信2015年信息安全技能竞赛圆满举行
  19. 轻量的web框架Bottle
  20. access 数据修复记

热门文章

  1. POJ 3207 解题报告
  2. matlab如何求状态方程,matlab状态方程解
  3. win10系统迁移后系统重装_Win10技巧:Windows 10系统迁移方法!
  4. win7如何添加开机启动项
  5. win10卸载office2010卸载途中就自动重启重复出现
  6. php怎么启动服务,如何打开php服务
  7. ArduinoUNO实战-第五章-有源蜂鸣器实验
  8. 刘强东的漫漫情路:龚晓京、西红柿、奶茶...
  9. linux ps命令详细解读
  10. 美国服务器用于外贸建站有哪些好处