APP下载

X3DH密钥协商协议演示系统的设计与实现

2022-03-21北方工业大学信息学院门凯旋李天昊王广硕姚辰宇盛恺曦

数字技术与应用 2022年2期
关键词:密码学公钥密钥

北方工业大学信息学院 门凯旋 李天昊 王广硕 姚辰宇 盛恺曦

密码学技术已广泛应用于社会中的各个领域,在重要的网络系统和信息平台也发挥着不可或缺的作用。自2019年10月26日《中华人民共和国密码法》颁布以来,作为网络空间安全国家战略的基石,密码学技术得到了越来越多的社会关注,密码也逐渐的与人们的生活不可分割。密码学的安全性本质上是密钥的安全性,但是公开信道上的密钥传输并不能保证完全不被窃取和篡改。为达到保护密钥安全传输的目的,密钥协商协议这一概念应运而生。X3DH密钥协商协议以DH协议为基础,为异步通信而设计。在DH协议的基础上了实现了转发保密性和加密可否认性。为了使用户能够通过操作实现更加清楚地了解X3DH协议的原理和过程,本文面向用户设计了一个可以具体操作和展示X3DH 密钥协商协议过程的演示系统。该系统实现了X3DH密钥协商协议中的三方交互过程,使用户可通过该系统模拟X3DH协议的实现过程,从而获得更为深刻的理解。

密码技术是保障网络安全和信息安全的基础支撑和核心技术。密码学是研究编制密码和破译密码的技术科学,并且它具有机密性、完整性和不可否认性。自2020年《中华人民共和国密码法》实施以来,社会公众密码安全意识不断提高。直到今日实施近两周年,密码学领域发展日新月异,科研方面硕果累累,公民的个人信息得到强有力的保障。

为了解决通信安全问题,密钥协商协议的概念被提出。所谓密钥协商协议主要是为了能够在通信过程中产生临时的会话密钥,进而进行保密通信。采用的加密技术使用了密码学原理,将传送的密钥在传递时从发送方进行加密,之后在接收方进行解密。主要的协商过程是由两个或者多个实体参与,这几个实体共同建立会话密钥,任何一个参与会话的实体都将会对结果产生影响。一般的密钥协商协议需要至少两个参与者,协议能够给参与通信的双方在公开的信道提供一种安全的通信方式。

1 X3DH密钥协商协议简介

X3DH协议是被称为“扩展三重的Diffie Hellman”密钥协商协议,在DH密钥协商协议的基础上增加了更多的公钥参数用来提高自身的安全性,其本质是在基于公钥进行身份验证的双方之间建立共享型密钥。

X3DH协议支持在Bob离线的情况下进行密钥协商。首先,需要接收方Bob在通信建立之前先连接服务器,将自己的身份密钥等公钥材料进行存储。当发送方Alice想要与接收方Bob进行通信时,需要先连接服务器获取Bob预先上传的公钥包,供后续的密钥协商过程使用。在这个过程中不需要Bob参与。Alice根据X3DH协议过程生成会话密钥后,会将其与初始消息一并发送给Bob。至此,便完成了第一轮的X3DH通信过程。

2 X3DH密钥协商协议系统应用的算法

2.1 X3DH算法步骤详解

以下部分将接收方称为Bob,发送方称为Alice:

(1)Bob首先产生自己的身份认证公钥IK-B,之后产生预共享公钥SPK-B,并且生成预共享公钥的签名Sig(IK-B,Encode(SPK-B))和一组Bob的一次性于共享公钥(OPK-B1、OPK-B2、OPK-B3……);

(2)Bob将这些公钥包发送给服务器,服务器端进行保存;

(3)Alice在向Bob方发送消息前,进行密钥协商的操作:先要连接服务器,下载Bob预先上传至服务器的公钥包;

(4)在获取到Bob的公钥包之后,Alice用预共享公钥包进行验证,此处的验证是对Alice对收到的预共享公钥的签名进行验证,如果验证失败则终止协议;

(5)验证通过之后,Alice方生成一个临时密钥对EK;

(6)如果公钥包中中不包含一次性预共享,Alice方会进行如下的计算:

若在公钥包中含有一次性预共享公钥,则计算时还需要多加一个步骤:

(7)在进行SK的计算之后,Alice方要进行对刚才生成过的临时密钥对进行删除, 并且也要删除掉进行计算的DH值。之后按照以下过程进行计算:AD=Encode(IK-A)||Encode(IK-B)在进行AD的计算之中,可以自行进行添加一些附加信息;

(8)Alice方正式开启通讯,Alice向Bob发送的初始信息中含有IK-A,EK-A,初始密文(使用AEAD);

(9)Bob在上线之后会接收到Alice所发送的消息包,Bob会从消息中检索到Alice的身份公钥IK-A和临时密钥对EK-A,并且加载Bob的IK-B对应的私钥,以及Alice所使用的SPK-B和OPK-B(若存在),按照上文中提到的DH算法计算三次或者四次的DH,之后删除计算的DH中间值;

(10)计算得到了与Alice方相同的SK的值,解码加密的AEAD密文(若存在OPK-B的话要及时进行删除对应的私钥)若解码成功,则消息在Bob处可以进行发送。之后,Bob还可用之前生成的SK或者SK的密钥来进行与Alice的通信。

2.2 椭圆曲线X25519

为了实现整个X3DH密钥协商协议,首先需要先产生椭圆曲线公钥。本系统实现协议实现时使用的是x25519椭圆曲线产生的公钥包,Curve25519曲线是由著名的密码学家Bernstein于2005年提出的,在2013年开始被广泛运用。Curve25519是基于Montgomery曲线形式,不同于国际的NIST P曲线和国密算法的SM2,这两个都是基于Weierstrass形式,而Montgomery曲线形式是在1987年被提出的,见式(1)

另一种Edwards的曲线,见式(2)

Curve25519被提出后最初是被用来实现ECDH密钥协商协议使用的,可以提供128bit的安全性。这样的设计操作使得Curve25519有着参数选取明确,不容易受到随机数生成器的攻击和时序攻击的影响,而且能够接受任意的32字节的字符串作为公钥。

Curve25519曲线使用的是Montgomery曲线,GF(2-19),是基于素数,他的函数形式见式(3)

在计算中仅需要每个点的x坐标,y坐标可以忽略掉,这可以避免侧信道攻击,是世界上目前最快速的椭圆曲线的密码算法之一。

3 X3DH密钥协商协议系统的设计与实现

3.1 系统具体功能模块图

本系统分为三方的界面展示,即作为用户需要运行处三个不同的界面,分别是发送方界面,接收方界面和服务器界面,在打开界面之后需要运行服务器界面中的打开服务器才能继续进行后续的协议的操作。

主要的功能设计如图1所示。

图1 系统具体功能模块图Fig.1 Diagram of specific functional modules of the system

3.2 X3DH密钥协商协议主要流程

协议的主要流程大致分为三个步骤:

(1)首先,接收方(Bob)先要自行连接服务器,想服务器发起请求,并且将自己产生的公钥包出存在服务器;

(2)之后,当发送方(Alice)想要与接收方(Bob)进行通信时,需要连接服务器取得接收方(Bob)的公钥包进行验证,并且发送初始消息;

(3)接收方(Bob)接受消息并且验证后开始通信

其中,X3DH协议的具体流程如图2所示。

图2 X3DH密钥协商协议具体内容Fig.2 Specific contents of X3DH key agreement protocol

3.3 系统的界面设计

X3DH密钥协商协议演示系统的界面如图3所示。可以根据按键的提示进行操作,操作步骤以及产生密钥对、DH值、SK、EK的值会对应进行显示。功能键里面包括生成IK-A,向服务器请求公钥包,验证签名(EK-A),DH公钥密钥(SK),计算关联数据(AD),发起会话和连接Bob。

图3 发送方和接收方演示Fig.3 Demonstration of sender and receiver

其中,用户在点击“生成IK-B”按钮后,本系统将逐次生成SPK-B和Sig(IK-B,Encode (SPK-B))等,并随之在在右侧显示区中显示出相应字符串;所需公钥包生成完毕后,点击“上传公钥包”按钮即可连接服务器,完成公钥包的上传;当Bob欲和Alice进行交互时,点击“接受IK-A”按钮,请求Alice的身份公钥并进行验证,验证成功后,即可成功建立通讯。(在整个通信过程中,随着发送消息的过程不同,发送方和接收方的身份会随之转换。对后续过程中转变为发送方的Bob而言,所需要的流程与Alice相同。)开启会话之后,Bob的界面可以显示关于Alice方所发送的内容。

服务器端Server的界面如图4所示。

图4 服务器端Server界面Fig.4 Server interface

4 总结

本文设计的X3DH密钥协商协议演示系统,能极大程度上帮助用户理解X3DH密钥协商协议的原理以及流程。用户能够从中了解到密钥协商协议的作用,对协议的交互流程能够获得更加直观的认识,为用户研究X3DH密钥协商协议带来帮助,具有较高的实际应用价值。

猜你喜欢

密码学公钥密钥
探索企业创新密钥
密码系统中密钥的状态与保护*
图灵奖获得者、美国国家工程院院士马丁·爱德华·海尔曼:我们正处于密钥学革命前夕
一种基于混沌的公钥加密方案
密码学课程教学中的“破”与“立”
一种对称密钥的密钥管理方法及系统
基于ECC的智能家居密钥管理机制的实现
HES:一种更小公钥的同态加密算法
SM2椭圆曲线公钥密码算法综述
矩阵在密码学中的应用