音视频学习–ZRTP和BZRTP

bzrtp背景

整数因子分解和有限域或椭圆曲线上的离散对数问题是支撑互联网上用于密钥建立和数字签名的大多数非对称算法的数学问题。这些问题及基于它们的算法将容易受到使用Shor算法的攻击,而Shor算法需要一个足够大的通用量子计算机,被称为密码相关量子计算机(CRQC)。目前难以预测这样的设备何时出现,甚至是否会出现。然而,有必要对抗这种可能性。今天使用易受量子计算机攻击的算法加密的数据可能会被未来拥有CRQC的攻击者用于解密。

量子计算机科学领域的当前发展对现有加密算法构成了越来越大的威胁,这些算法用于安全 IP 语音和即时消息应用程序等。由于量子计算机很快就会问世,大多数政府建议保护高度敏感的数据免受此类攻击。由于量子计算的突破,今天共享的加密数据可以在不久的将来被存储和解密。

2017 年,美国国家标准与技术研究院( NIST ) 发起了一项标准化“后量子算法”的国际竞赛, 大会最后选择用于通用加密的算法是CRYSTALS-Kyber“对于我们访问安全网站时使用的通用加密,NIST 选择了 CRYSTALS-Kyber 算法。其优点包括相对较小的加密密钥,两方可以轻松交换,以及操作速度”

所以bzrtp采用了Post-Quantum cryptography作为加密的算法

音视频学习--ZRTP和BZRTP

如何开启,首页点击“偏好设置”,选择“通话和聊天”选项,即可看到加密选项。

音视频学习--ZRTP和BZRTP

手机端APP也是类似的情况:

音视频学习--ZRTP和BZRTP


Post-Quantum cryptography介绍

当今大多数标准算法的安全性都依赖于非常难以解决的数学问题。这意味着当今的公钥加密协议,例如安全套接字层 (SSL)和传输层安全性(TLS),足以防御大多数现代技术。但这不会持续下去。运行Shar算法的量子计算机将能够立即打破这些基于数学的系统。此外,不良行为者已经收集了大量加密数据并存储记录,直到他们能够使用量子计算破解这些密钥。

量子安全也称为量子加密或量子密码学,是利用量子力学原理来增强安全性并检测第三方是否窃听通信的实践。量子加密利用了基本物理定律,例如观察者效应,即在不改变粒子的情况下不可能识别该粒子的位置。

而后量子密码学是一个很容易混淆的类似术语。虽然量子密码学描述了使用量子现象作为安全策略的核心,但后量子密码学(有时称为量子证明、量子安全或量子抗性)是指被认为是密码算法(通常是公钥算法)。抵御量子计算机的攻击。后量子密码学就是通过更新现有的基于数学的算法和标准来为量子计算时代做好准备。

什么是量子密码学?

量子密码学是应用量子力学概念来完成密码任务的研究。量子密码学的突出应用是量子密钥分发,它为密钥交换问题提供了信息理论上安全的解决方案。

至少从理论上来说,量子密码学看起来是信息安全行业的一个成功转折点。然而,没有一种加密方法是完全安全的。在实践中,量子密码学只是有条件地安全,因为它基于一组关键假设。

量子密码学如何工作?

发送器通过滤光器(或偏振器)发送光子,该滤光器为光子随机分配四种偏振名称之一:垂直、水平、向右 45 度或向左 45 度。

光子被发送到接收器,接收器使用两个分束器(水平/垂直和对角线)“读取”每个光子的偏振。接收器必须估计每个光子要使用哪个分束器,因为它不知道要使用哪个。

发送光子流后,接收器通知发送器发送序列中的每个光子使用了哪个分束器,发送器将此信息与用于传送密钥的偏振器序列相匹配。使用不正确的分束器读取的光子被消除,所得的位序列成为关键。

什么是后量子密码学?

量子计算机可能成为现实。因此,研究可用于对付拥有加密技术的对手的加密技术至关重要。用于描述此类方法研究的术语是后量子密码学。

肖尔在量子计算机上分解和计算离散对数的方法可用于破解许多常见的加密和签名方案,从而需要后量子密码学。

虽然量子密码学描述了使用量子现象作为安全策略的核心,但后量子密码学是指被认为可以安全抵御量子计算机攻击的密码算法(通常是公钥算法)。后量子密码学就是通过更新现有的基于数学的算法和标准来为量子计算时代做好准备。

量子密钥分配

量子密码学通过量子密钥分发(QKD)来表示。它使用光子而不是利用比特的传统方法来传输数据。光子具有不以任何方式复制或修改的特性,实体可以利用这一特性。因此,两方之间传输的数据可以保密。

QKD 采用量子力学概念来确保通信安全并且不可能进行不需要的访问。QKD 概念肯定会用于高度敏感的信息交换。通信实体必须位于特定位置。它将主要用于经常发送敏感信息的政府、军事和金融服务领域。

量子密码学与后量子密码学的区别

下表强调了量子密码学和后量子密码学之间的主要区别 –

音视频学习--ZRTP和BZRTP

Linphone 使用 liboqs(Stebila 和 Mosca,2017)作为后量子加密实现的提供者。liboqs 是由 Open Quantum Safe 维护的项目,是由Douglas Stebila和Michele Mosca领导的开放量子安全 (OQS)项目的一部分。该项目旨在开发量子安全加密技术并将其集成到应用程序中,以促进在现实世界环境中的部署和测试。特别是,OQS 通过OpenSSL和OpenSSH提供了 liboqs 到 TLS 和 SSH 的原型集成。liboqs 汇集了各种 PQC 算法官方存储库的代码源,包括密钥交换和签名算法。 liboqs 提供:

  • 量子安全密钥封装机制(KEM)和数字签名算法的开源实现的集合;
  • 这些算法的通用 API
  • 测试工具和基准测试例程

    音视频学习--ZRTP和BZRTP


bzrtp介绍

Linphone 应用程序号称是世界上第一个实施CRYSTALS-Kyber 算法以提供安全语音和视频通信的开源软件。为此,Linphone团队开发了著名加密协议ZRTP的修改版本。linphone的bzrtp需要执行以下步骤:

  • 将 KEM 集成到 ZRTP 协议中:创建 ZRTP 的修改版本,接受“密钥封装机制”类型的密钥交换算法;
  • 混合:创建一个结合了经典 ECDH 和后量子加密的加密引擎。对ZRTP协议进行了修改,使其可以同时处理两种不同的密钥交换算法并安全地组合结果;
  • 分段:添加一种对 ZRTP 数据包进行分段的机制;
  • 将这个具有后量子功能的新 ZRTP 库集成到 Linphone 中,并添加了可用于激活/停用后量子模式的配置设置;
  • 创建了性能测试。 

linphone给出了一个bzrtp的加密过程文档,文档中关于加密的相关流程如下:

DH模式

音视频学习--ZRTP和BZRTP

KEM模式:

音视频学习--ZRTP和BZRTP

PS:PQC 密钥交换算法要求 NIST的相关责任方强制使用 KEM 接口。DH 和 KEM 接口之间的主要区别在于,在 DH 密钥交换中,双方具有完全对称的角色,而 KEM 方案则不然。

在 Diffie-Hellman ZRTP 交换中,ClientA 和 ClientB 可以预先计算他们的 DH 密钥对,因此 ClientB 可以承诺使用公钥。KEM 方案不能直接替代 DH 方案,因为一方必须有权访问另一方的公钥才能启动协议。

实际抓包如下:音频协商按照DH模式协商,会传递hash image, ZID,Hash,Cipher, Auth tag, Key agreement,SAS Type,HVI, HMAC等值完成DH协商。

音视频学习--ZRTP和BZRTP

其中对应的各个字段的含义和字段取值如下表所示:

音视频学习--ZRTP和BZRTP

为了支持后量子密钥封装机制,对原始 ZRTP 协议进行了扩展,以包含 KEM 模式密钥协议。linphone启用后量子密码学时,该库还支持以下混合密码:

  • X255/Kyber512, X255/HQC128, X255/Kyber512/HQC128
  • X448/Kyber1024, X448/HQC256, X448/Kyber1024/HQC256

需要说明的是,如果要建立加密的视频通话,则视频通道协商时候要按照Multistream Mode的方式进行,否则与bzrtp协商会失败。

音视频学习--ZRTP和BZRTP

这部分可以参考RFC6189 第3.1.3章节:多流模式是当两个端点之间已建立带有活动 ZRTP 会话密钥的 SRTP 媒体流时使用的替代密钥协商方法。ZRTP 可以从单个 DH 交换中派生多个 SRTP 密钥。例如,已建立的添加视频流的安全语音呼叫使用多流模式快速启动视频流,无需第二次 DH 交换。

ZRTP加密流程

ZRTP端点必须支持Hello、HelloACK、Commit、DHPart1、DHPart2、Confirm1、Confirm2、Conf2ACK、SASrelay、RelayACK、Error、ErrorACK和PingACK消息类型。ZRTP端点可能支持GoClear、ClearACK和Ping消息。为了生成PingACK消息,需要解析Ping消息。

ZRTP发包格式

音视频学习--ZRTP和BZRTP

ZRTP消息类型

音视频学习--ZRTP和BZRTP

zrtp还有更多的其他信息,有兴趣的可以参考相关文档完成阅读。


参考文献

https://www.cnblogs.com/xdyixia/p/11611642.html

https://www.researchgate.net/profile/Nicolas-Sendrier-2/publication/226115302_Code-Based_Cryptography/links/540d62d50cf2df04e7549388/Code-Based-Cryptography.pdf

https://cms.zone.ci/cnnvd/cnnvd_vulns/217396.html

https://nvlpubs.nist.gov/nistpubs/fips/nist.fips.198-1.pdf

作者信息:我是一枚爱跑步的程序猿,维护公众号和知乎专栏《MediaStack》,有兴趣可以关注,一起学习音视频知识,时不时分享实战经验。


版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。

(0)

相关推荐

发表回复

登录后才能评论