暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

双棘轮原理解析

轻易科技技术中心 2019-09-19
4602


一. 背景

    IM通讯协议有多种,其中端到端加密通讯协议signal protocol是最安全的,号称是世界上最安全的通讯协议,任何第三方包括服务器都无法查看通讯内容,热门应用facebook,messenger,whatsapp,singal app都采用的此协议。从服务角度看,黑客只能获取通话人两端的公钥,无法获取其私钥,从客户端角度看,如果想获取客户端私钥,需要破解客户端并解密双棘轮算法,那么双棘轮算法如何保证客户端协议的安全性呢?

二. 定义

    双棘轮算法用于通信双方基于共享密钥交换加密消息。我们调研的singal app通讯协议原理如下:


DH算法  DH(A私钥+B公钥) = DH(B私钥+A公钥)

    上图是端到端加密原理图,通信双方将先使用某种密钥协商协议(例如 X3DH)以协商共享密钥。此后,通信双方即可使用双棘轮算法发送接收加密消息了。这里的X3DH指的是singal protocol 是基于DH协议多加了3重身份密钥(身份密钥,预签名密钥,一次性密钥)。而双棘轮指的是对称密钥棘轮和迪菲-赫尔曼棘轮。

三. 概述

3.1 对称密钥棘轮

    每条发送或者接收的消息都是使用消息密钥s加密,此密钥是发送KDF(可以认为是哈希函数的加强版)链和接收KDF链的输出密钥,这些链的KDF密钥称为链密钥。发送链和接收链只能确保每条消息使用唯一的密钥加密,而此密钥在加密或者解密后可以删除,由一个给定的链密钥计算下一个链密钥和消息密钥的过程,称为对称密钥棘轮的一次棘轮步进。

    上图表示进行了两次步进,以上一次输出的的chain key作为第二次步进的输入来加密消息密钥。

3.2 迪菲-赫尔曼棘轮

    DH棘轮: 通信双方各自生成一个DH密钥对(迪菲-赫尔曼公钥和私钥)作为当前棘轮密钥对。


    从图中可以看出仅截获了其中一方可能得到当前棘轮私钥的值,但此棘轮私钥将最终被未泄露的棘轮私钥取代。那时,棘轮密钥对之间的迪菲-赫尔曼计算将定义一个对攻击者未知的新的 DH 输出。

3.3 双棘轮

将对称密钥棘轮和DH棘轮组合在一起,就组成了双棘轮: 

  • 当发送或接收消息时,执行一次发送链或接收链的对称密钥棘轮步进,以派生新的消息密钥。

  • 当接收到新的棘轮公钥时,在对称密钥棘轮步进之前,执行一次 DH 棘轮步进,以更新链密钥。

     

四. 总结

    双棘轮不仅适合IM端通讯加密,在密码学上也有广泛应用。从安全方面考虑,双棘轮算法的设计可避免攻击者记录加密消息并在以后阻止继续攻击,假如攻击者攻破了会话一方的加密消息,DH棘轮的设计保证了从泄漏中恢复的安全性,所以双棘轮是值得信任的。

文章转载自轻易科技技术中心,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论