从 0 打造音视频直播系统
李超
前新东方音视频直播技术专家,前沪江音视频架构师
32579 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 41 讲
WebRTC 1对1通话 (23讲)
从 0 打造音视频直播系统
15
15
1.0x
00:00/00:00
登录|注册

22 | 如何保证数据传输的安全(下)?

libsrtp库
SSL_Read
SSL_Write
SSL
SSL_CTX
握手协议
SRTP
STUN
SDP
DTLS
非对称加密
数字证书
非对称加密
思考时间
SRTP/SRTCP协议
OpenSSL库
DTLS 协议
WebRTC 数据安全机制
基本概念
如何保证数据传输的安全

该思维导图由 AI 生成,仅供参考

上一篇文章中,我向你介绍了保证数据传输安全的一些基本概念,如非对称加密、数字证书等等。那本文我们就结合这些基本概念,来一起看看 WebRTC 是如何保障数据安全的
WebRTC 的一个重要应用就是在浏览器上实现音视频实时通信,正如上一篇文章中所讲到的,在浏览器上由于用户量巨大,所以对于音视频的通信必须要有一套机制来保证音视频数据的安全性。
实际上,在浏览器上对于音视频数据的安全最终还是由 WebRTC 库自己保证的。它是通过使用 SDP、STUN、DTLS、SRTP 等几个协议的结合来达到数据安全的。

WebRTC 数据安全机制

为了保障音频数据的安全,WebRTC 使用了一整套机制来进行保护,下面我们就来看一下 WebRTC 是如何保障数据安全的吧!
我们来假设一个场景, A 与 B 通信,为了保障数据的安全,我们只需要在 A 端发送数据前将要发送的数据进行加密,B 端收到数据之后再进行解密就好了,这样看起来保证数据的安全还是蛮简单的事情。
但这里有一个问题,B 端是如何知道 A 端使用的哪种加密算法进行加密的呢?另外,加密算法还分对称加密和非对称加密,我们应该选择哪个呢?实际上在上一篇文章中我已经向你做了介绍,对于加密来说,使用非对称加密是最安全的,因此选择非对称加密是必然的选择
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

WebRTC是一种用于浏览器上实现音视频实时通信的重要应用,而保障数据安全是其关注的重点。文章介绍了WebRTC如何通过使用SDP、STUN、DTLS、SRTP等协议的结合来保障音视频数据的安全性。WebRTC采用非对称加密来保障数据的安全,并通过DTLS协议解决了公钥交换时可能被窃取的问题。此外,WebRTC还通过信令服务器交换SDP信息、使用STUN协议进行身份认证以及通过fingerprint验证证书的完整性来确认用户的合法性。整体机制包括媒体协商、身份认证、DTLS协商和数据加密传输。文章还介绍了DTLS协议的握手过程,以及DTLS如何在UDP协议上实现了与TLS几乎一模一样的安全机制。通过这些机制,WebRTC在数据安全方面做了非常多的努力,为音视频通信提供了可靠的安全保障。 文章还介绍了OpenSSL库的使用步骤,包括SSL上下文的初始化、证书和私钥的加载、SSL连接的建立和数据通信的步骤。此外,还介绍了SRTP/SRTCP协议的使用,通过libsrtp库对RTP数据进行加密和解密的基本步骤。 总的来说,本文详细介绍了WebRTC的安全机制、OpenSSL库的使用以及SRTP/SRTCP协议的应用,为读者提供了全面的技术概览。文章内容涵盖了安全通信的关键概念和实际操作步骤,对于希望了解WebRTC安全机制和相关技术的读者来说,是一篇具有很高参考价值的文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 打造音视频直播系统》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(9)

  • 最新
  • 精选
  • 杨柳
    这里有一个疑问,DTLS本身对数据层有加密,SRTP也是对数据的加密,是否重复了?经查资料是这样的,SRTP数据,经DTLS发送会跳过加密层,不进行二次加密,不知理解是否正确。

    作者回复: 对的,srtp 调用openssl 的 dtls

    2020-03-27
    4
  • 重生
    老师,有一点疑惑,SDP中交互用户名和密码是明文,这样黑客不是可以获取到吗?或者模仿对应得用户名和密码机制,这样无法提供安全保护吧?

    作者回复: 可以通过 restful 接口从服务器上获取,而不是写在js中,这属于 ICE 规范中的一部分。你可以去查一下相关资料哈

    2019-09-08
    4
  • Beast-Of-Prey
    加密应该是对payload部分进行加解密 这样的话 接收端可以解析出数据部分再解密 否则接收端应该找不到数据部分吧

    作者回复: 是的

    2019-09-12
    2
  • Geek_4b4f4a
    老师,能不能介绍一些关于WebRTC源码分析方面的资料,谢谢

    作者回复: 以后会专门出这方面的课程

    2019-09-03
    2
  • 王乐
    请问加密后的SRTP数据是用OpenSSL接口发送的,还是使用之前的RTCPeerConnection接口来发送?

    作者回复: 通过 RTCPeerConnection发送,OpenSSL 只起到DTLS握手与SRTP加密与解密的作用。

    2019-10-17
  • Beast-Of-Prey
    老师 A与B通讯那个地方 加解密不应该是公钥加密 私钥解密吗?

    作者回复: 是这样的,公钥加密私钥解码。我的意思是说,从公钥/私钥的原理来说:用公钥加密,用私钥解密;用私钥加密用公钥解密。

    2019-09-12
  • Hulu warrior
    您好,对于非对称加解密,我有些疑惑,一般不是应该用公钥加密,而只有对应的私钥可以解密嘛?文中提到用私钥加密,公钥解密和我的认知有些出入。请问是我理解错了吗?
    2023-07-06归属地:上海
  • 老师您好,有几个问题。 经过DTLS握手后,双方确定了对称加密算法的密钥后,再使用SRTP进行对称加解密的吗?SRTP进行加解密操作是基于openssl库实现的,因为webrtc使用的是libsrtp,那本质上是不是libsrtp去调用openssl的加解密方法呢?这些加解密操作是openssl对DTLS协议的实现,所以SRTP协议是基于DTLS协议的?
    2022-07-02
  • 2xshu
    使用RTCDataChannel,有没有选项设置为不加密呢?假设场景只是用RTCDataChannel传输视频,视频本身是drm流了,就没必要再加密了。
    2022-03-26
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部