在线咨询
专属客服在线解答,提供专业解决方案
声网 AI 助手
您的专属 AI 伙伴,开启全新搜索体验

什么是安全实时传输协议

安全实时传输协议(SRTP)是RTP的安全扩展,在单播与组播应用中为RTP/RTCP数据提供加密、消息认证、完整性及重放攻击防护。它通过AES加密(支持分段整型计数器模式和f8模式)保障数据流机密性,并借助HMAC-SHA1实现认证与完整性校验。SRTP/SRTCP功能可选,但SRTCP必须启用认证,该协议是保障实时音视频通信安全的基础。

 

一. 安全实时传输协议(SRTR)是什么

安全实时传输协议(SRTP)实时传输协议(RTP)的一个规范,旨在为单播和组播应用中的RTP数据提供加密、消息认证和完整性保护以及重放攻击防护。它由思科和爱立信的互联网协议和密码学专家组成的小团队开发,并于2004年3月由互联网工程任务组(IETF)首次发布,

由于RTP附带RTP控制协议(RTCP),用于控制RTP会话,因此SRTP有一个姊妹协议,称为安全RTCP(SRTCP);它安全地向SRTP提供与RTCP向RTP提供的功能相同的功能。

在RTP或RTCP应用中,SRTP或SRTCP的使用是可选的;即使使用了SRTP或SRTCP,所有提供的功能(例如加密和身份验证)也是可选的,可以单独启用或禁用。唯一的例外是消息身份验证功能,在使用SRTCP时,该功能必不可少。

 

二. SRTP的工作原理

1. 数据流加密

为了提供对数据流的保密,需要对数据流进行加密和解密。关于这一点,安全实时传输协议(结合安全实时传输控制协议)只为一种加密算法,即AES制定了使用标准。这种加密算法有两种加密模式,它们能将原始的AES块密文转换成流密文:

  • 分段整型计数器模式——一种典型的计数器模式,它允许对任意块的随机访问——这一点对于实时传输协议的数据流在可能丢包的不可靠网络上进行传输是非常必要的。一般情况下,几乎所有的函数都能被作为计数器使用,只要它在一次循环中重复的次数不要太多就可以。但是,用于实时传输协议数据加密的仅仅是一个普通的整型递增计数器。运行在这一模式下的AES是其默认的加密算法,它使用的是默认128位长度的加密密钥和默认112位长度的会话盐密钥。
  • f8模式——输出反馈模式的一个变种,它增加了定位功能并改变了初始化功能。其加密密钥和盐密钥的默认值和计数器模式下的AES是一样的。运行在这种模式下的AES被用于UMTS3G移动网络

除了AES加密算法,安全实时传输协议还允许彻底禁用加密,此时使用的是所谓的“零加密算法”。它可以被认为是安全实时传输协议支持的第二种加密算法,或者说是它所支持的第三种加密模式。事实上,零加密算法并不进行任何加密,也就是说,加密算法把密钥流想像成只包含“0”的流,并原封不动地将输入流复制到输出流。这种模式是所有与安全实时传输协议兼容的系统都必须实现的,因为它可以被用在不需要安全实时传输协议提供保密性保证而只要求它提供其它特性(如认证和消息完整性)的场合。

2. 认证、完整性和重放保护

以上列举的加密算法本身并不能保护消息的完整性,攻击者仍然可以伪造数据——至少可以重放过去传输过的数据。因此,安全实时传输协议标准同时还提供了保护数据完整性以及防止重放的方法。

为了进行消息认证并保护消息的完整性,安全实时传输协议使用了HMAC-SHA1算法(在RFC2104中定义)。这种算法使用的是默认160位长度的HMAC-SHA1认证密钥。但是它不能抵御重放攻击;重放保护方法建议接收方维护好先前接收到的消息的索引,将它们与每个新接收到的消息进行比对,并只接收那些过去没有被播放过的新消息。这种方法十分依赖于完整性保护的使用(以杜绝针对消息索引的欺骗技术)。

在声网,连接无限可能

想进一步了解「对话式 AI 与 实时互动」?欢迎注册,开启探索之旅。

本博客为技术交流与平台行业信息分享平台,内容仅供交流参考,文章内容不代表本公司立场和观点,亦不构成任何出版或销售行为。