【TCP/IP】TLS—SRTP协议学习笔记

加密解密

1、非对称加密

公钥上锁,私钥打开
私钥上锁,公钥打开

2、数字签名

创建摘要,与加密文件里的摘要进行匹配

3、数字证书

私有证书:

openssl req (请求创建证书)

  • x509——证书格式
  • days 3650——证书有效时间3650天
  • newkey rsa:1024——创建密钥,使用的算法rsa:1024
  • nodes——不加密
  • keyout server.key——密钥生成的文件
  • out server.cert——证书生成的文件

下图是常用的加密算法,前三种是创建摘要

在这里插入图片描述

OpenSSL

概念

开源的SSL,而SSL即 Secure Sockets Layer,网络套接字加上安全机制,如非对称加密

TLS

国际安全组织对SSL 3.0进行了标准化,重新更改了名字,于是成为了TLS,Transport Layer Security

TLS是基于TCP协议的,它有两个步骤:

  1. TLS握手协议:下图的创建SSL上下文、加载证书、私钥
  2. TLS记录协议:下图的创建SSL实例

原理

  • SSL_CTX:上下文,存放了版本、密钥、证书
  • SSL:代表一个SSL连接,需要把一个socket当做参数放进去绑定,用来传输数据
  • SSL_Write/SSL_Read:socket的读写函数

使用

在这里插入图片描述

DTLS协议

它是基于UDP协议的

WebRTC默认是aes 128加密算法

DTLS握手协议

利用了非对称加密算法

1、客户端先发送Hello

注:这里的客户端并不是指真正的客户端,实际上哪边先发送Hello哪边就被称作客户端

2、服务端回复Hello,并发送自己的证书、私钥

3、客户端回复证书、私钥,并发送加密套件

4、服务端确认加密套件

在这里插入图片描述

DTLS时序图

第一步:媒体协商,交换SDP,其最重要的是ICE中的usr_name和password

第二步: STUN协议的Request,也是发送usr_name和password,然后对方会把收到的usr_name和password与媒体协商中获得的usr_name和password进行对比;若一致的便是合法用户,便会回复Response

第三步:现在才是DTLS四次握手

第四步:互相发送SRTP数据,SRTP是加密后的RTP数据

在这里插入图片描述

SRTP

SRTP的协议头和RTP相同,故头部不加密,在payload里面才会加密

在WebRTC中,一般不用MKI(must K indicate,主K标识符),所以为0

Authentication Tag:用来进行完整性验证。发送端将RTP数据头与RTP的加密数据做一次哈希函数运算,计算出摘要,附加在加密数据尾部。接收端收到后会再一次把数据头和加密数据做相同的哈希运算,若得出的结果与摘要匹配,才会进行数据解密

在这里插入图片描述

两个功能:

  • 保证数据完整性
  • 对数据加密解密

libsrtp

思科开源的一个srtp库,对性能优化得非常棒,损耗可以忽略不记

市面上所有开源的WebRTC流媒体服务器都使用的libsrtp,它用起来也很简单方便

下图是使用libsrtp的过程

在这里插入图片描述

第一步:对libsrtp做初始化

第二步:创建Session,在DTLS握手之后,拿到SSL实例(握手交换的信息都在里面,包括profile里的加密算法、密钥等),把这些信息都设置到Session中便能进行对数据的加密解密。注意:在流媒体服务器中创建的Session有两个,分别用于输出流和输入流,对输出流加密,输入流解密

第三步:加密和解密

另外有个博主的文章也写得不错:SSL/TLS/DTLS对比

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值