1. 引言
现代密码学的密码体制主要分为对称密码体制和非对称密码体制。非对称密码体制又称为公钥密码体制,可以解决对称密码体制中密钥分发和管理的问题,常用于会话密钥协商。对称密码体制也称为单钥密码体制,利用协商的会话密钥执行加密和解密的速度非常快,在如今互联网传输中主要用于保障传输数据的机密性。根据柯克霍夫原则,密码算法不需要保密,仅密钥需要保密。因此,系统的保密性主要取决于密钥的保密性,设计出在不安全的信道安全地协商出共享密钥的密钥交换协议具有重要意义。
按照构建密钥交换协议所使用的密码技术的不同,密钥交换协议可分为需要使用数字证书的基于公钥密码体制和基于标识密码技术(Identity-Based Cryptograph,简称IBC)两种。由于IBC不需要使用数字证书,密钥管理环节可以得到简化。1984年,文献 [1] 首次提出标识密码的概念,最主要的观点是系统中不需要证书。IBC使用用户独有的标识如姓名、电子邮箱地址、手机号等作为生成用户公钥的关键信息,用户私钥由可信任的密钥生成中心(Key Generation Center,简称KGC)计算得出。2001年,文献 [2] 提出了用椭圆曲线配对构造标识公钥加密算法,该方案在随机谕言机模型下是可证明安全的并且效率较高。基于文献 [2] 的BF-IBC模式,我国自主制定了国产商用密码算法标准SM9 [3] ,该算法是我国首个全体系纳入ISO/IEC标准的非对称密码算法。
本文通过结合国家密码局认定的国产密码算法SM9标识加密算法、SM3杂凑算法 [4] 、国密系列算法中通用的密钥派生函数(Key Derivation Function,简称KDF) [3] 、以及美国国家标准与技术研究院(National Institute of Standards and Technology,简称NIST)后量子密码竞赛优胜算法FALCON [5] 设计了一个密钥交换协议,该协议具有机密性与认证性,可以在非保护信道中建立对称密码的秘密密钥。并且,通过形式化的BAN逻辑 [6] [7] [8] 和非形式化方法证明、分析了所设计协议的安全性。效率方面,本文设计协议应用到的SM9和FALCON算法都以高效率和适合资源受限场景为主要特点。经文献 [5] 分析,FALCON算法的功耗非常低。而且,SM9标识密码算法不需要证书的申请与校验,可以减少公钥证书基础设施部署和存储的开销。
随着量子计算机的发展,传统的基于大数分解难题和离散对数难题的密码算法将不再安全 [9] ,对称密码算法的比特安全性也将降低为原来的一半 [10] 。根据文献 [11] ,密钥大小为128比特的密钥系统对暴力攻击具有鲁棒性。为了达到2128的量子计算安全,对称密码的有效密钥尺寸应该至少设计为256比特。SM9算法中加密明文方法分为基于密钥派生函数的序列密码算法和分组密码算法,序列密码算法采用的密钥长度与明文等长,通过密钥与明文逐比特加密生成密文,安全性很强;而分组密码算法一般使用国家密码管理主管部门批准的SM4分组密码算法 [12] ,该算法是对称密码算法,暂未推出从128比特密钥升级到256比特或者更高比特的密钥,安全性较低。
在本文协议中,SM9算法的主公钥通过人工管理,除了密钥生成中心外只有参与方持有。不公开主公钥的操作保障了主密钥对的安全性。并且,SM9算法中加密明文的方法仅采用基于密钥派生函数的序列密码算法,先生成不全为0的256比特有效密钥,再通过密钥与明文逐比特异或的方法保障协商信息的机密性。为了进一步提高安全性,本文设计的密钥交换协议在使用SM9算法生成加密私钥时,将用户标识设置为用户名拼接当前时间戳值,使得同一对密钥协商双方在不同次密钥协商过程中的SM9加密私钥与自身的标识都会发生变化,进而增强了协议的前向安全性。结合文献 [6] 和 [13] 对每条交互信息添加时间戳的方法,本文协议可以抵抗重放攻击、中间人攻击和拒绝服务攻击。本文协议使用FALCON数字签名算法实现参与双方身份的可认证性,FALCON是NTRU (Number Theory Research Unit)格上基于文献 [14] 描述的GPV框架构建的签名方案,它使用快速傅里叶采样算法作为陷门采样器,是Hash-then-Sign签名方案中最高效的代表,并且具有抗量子的特性。
2. 预备知识
2.1. 密码杂凑函数
1) SM3密码杂凑算法 [4]
SM3密码杂凑算法基于MD结构 [15] [16] ,杂凑函数hash可将一个任意有限比特长度的信息m压缩到某一固定长度为n比特的杂凑值h,即
。
2) 密码函数H1(∙) [3]
密码函数
的输入为比特串Z和整数n,输出为一个整数
。本协议使用的
需要调用密码杂凑函数SM3。
3) 密钥派生函数KDF(∙) [3]
密钥派生函数
的作用是从一个共享的秘密比特串Z中派生出一固定长度为n比特的密钥数据,本协议使用的密钥派生函数需要调用杂凑函数SM3。
2.2. SM9标识加密算法 [3]
在基于标识的加密算法SM9中,解密用户持有一个标识和一个相应的加密私钥,该加密私钥由可信第三方——密钥生成中心KGC通过加密主私钥和解密用户的标识结合产生。KGC通常为可信第三方机构或可信硬件。加密用户用解密用户的标识加密数据,解密用户用自身加密私钥解密数据。
该公钥加密算法涉及5类辅助函数:SM3、KDF、消息认证码函数(Message Authentication Code,简称MAC)、随机数发生器、序列密码算法或者分组密码算法。其中,MAC函数使用KDF生成的密钥对密文比特串求取消息认证码,选用的随机数发生器应该符合文献 [17] 的要求。
2.3. FALCON数字签名算法 [5]
FALCON在NTRU格上构建,是目前Hash-then-Sign签名方案中最高效的代表,安全性由NTRU格上的SIS困难问题保证。FALCON工作在环
上,其中
,
或
。
3. 基于SM9和FALCON的密钥交换协议
本文设计了一个基于SM9标识公钥加密算法和FALCON数字签名算法的密钥交换协议,利用协商双方的标识信息和生成的随机数据串派生出一个共享的会话密钥。
3.1. 参数选取
SM3:消息分组长度为512比特,输出摘要长度为256比特。
SM9:椭圆曲线基域Fq (素数
),曲线的识别符cid用一个字节表示,0 × 10表示Fq上常曲线,0 × 11表示Fq上超奇异曲线,0 × 12表示Fq上常曲线及其扭曲线(扭曲线参数为
);Fq中的两个元素a和b,它们定义椭圆曲线的方程E:
;曲线阶的素因子N和相对于N的余因子cf;曲线
相对于N的嵌入次数k,N阶循环群
,规定
;N阶循环群
的生成元
;N阶循环群
的生成元
;双线性对e:
,用一个字节的识别符eid表示:0 × 01表示Tate对,0 × 02表示Weil对,0 × 03表示Ate对,0 × 04表示R-ate对;为了进一步增强安全性,用户标识ID设置为用户名拼接生成加密私钥时的时间戳值。
FALCON:根据文献 [18] ,在保障安全性的前提下,SM3的综合性能指标与SHA-256同等条件下相当。由于FALCON-512满足NIST第二级的安全强度即与SHA-256相当,所以本协议令FALCON算法采用的环的度n为512,模量q为12289,标准偏差为165.736617183,允许的最高的签名平方的范数为34034726,公钥长度为897字节,生成的签名长度为666字节。
3.2. 协议流程
设用户A为发起方,用户B为响应方。用户A和B协商获得共享的256比特秘密比特串,之后通过KDF派生出klen长度的共享密钥。
设计的基于SM9和FALCON的密钥交换协议执行过程中交互的每个信息在传输之前,都先对整个信息增加时间戳信息,然后做SM3杂凑变换,最后再对消息进行传输。接收方接收到信息后,也先做SM3杂凑变换,将计算出的杂凑值与接收到的杂凑值做比较,如果两者相同,则可以认为消息在传输过程中没有被篡改,否则消息就是非法的。然后接收方分析时间戳,进一步判断接收到的消息的有效性。假设发送方要传输信息给接收方时的时间戳为T,该网络中信息传输的时间为
,可能存在的时间偏差为
,则接收方接收信息后,分析时间戳,判断接收时间是否在时间窗口
区间内,如果在,则继续执行密钥交换协议;如果不在,则判定该信息为非法信息,丢弃不予处理。其中,
和
的取值可经过多次实验确定。
在本文设计的协议中,SM9算法中加密明文的方法仅采用基于密钥派生函数的序列密码算法,通过一次一密的方法保障协商信息的机密性。由于每次交互的信息都带有SM3杂凑值保障信息的完整性,且通过FALCON签名保障交互双方的身份真实性,此时SM9公钥加密算法中MAC码存在就显得冗余了,故本协议不做MAC码的计算与校验。
用户A和B执行密钥交换协议之前先从KGC处安全地获取到根据加密主私钥和自己的标识ID结合产生的加密私钥,分别记为
和
。用户A和B共用KGC的加密主公钥
。
若用户A和B都拥有系统参数,为了获得相同的会话密钥,双方应实现如下运算步骤:
用户A:
步骤A1:从KGC获取加密主公钥
和根据用户A的标识
生成的加密私钥
、加密私钥生成函数识别符hid。
步骤A2:通过FALCON数字签名算法的密钥产生算法计算出签名公钥
与签名私钥
。
步骤A3:用随机数发生器产生256比特随机数据串
。
步骤A4:通过FALCON数字签名算法,使用签名私钥
对
进行签名,得到签名
。
步骤A5:生成时间戳
。
步骤A6:使用SM3密码杂凑算法计算出要传输消息的杂凑值
。
步骤A7:将
发送给用户B。
用户B:
步骤B1:使用SM3密码杂凑算法计算出接收到的消息的杂凑值
,验证
是否成立,如果不成立将中断密钥交换过程;如果成立,继续执行后续步骤。
步骤B2:分析时间戳
,判断接收时间是否在时间窗口
区间内,如果不在,将中断密钥交换过程;如果在时间窗口区间内,继续执行后续步骤。
步骤B3:通过FALCON数字签名验证算法,使用用户A的签名公钥
验证
的签名
,如果签名验证失败,将中断密钥交换过程;如果签名验证成功,继续执行后续步骤。
步骤B4:从KGC获取加密主公钥
。
步骤B5:通过FALCON数字签名算法的密钥产生算法计算出签名公钥
与签名私钥
。
步骤B6:用随机数发生器产生256比特随机数据串
。
步骤B7:通过SM9加密算法,使用加密主公钥
和用户A的标识
加密
,得到密文
,具体为:
计算群
中的元素
产生随机数
计算群
中的元素
,将
的数据类型转换为比特串
计算群
中的元素
计算群
中的元素
,将w的数据类型转换为比特串
计算
,若K为全0比特串,则返回步骤(2)重新选择随机数r
计算
输出密文
步骤B8:通过FALCON数字签名算法,使用签名私钥
对
进行签名,得到签名
。
步骤B9:计算出共享密钥
。
步骤B10:使用SM3密码杂凑算法计算出SK的杂凑值计算
。
步骤B11:生成时间戳
。
步骤B12:使用SM3密码杂凑算法计算出要传输消息的杂凑值
。
步骤B13:将
发送给用户A。
用户A:
步骤A8:使用SM3密码杂凑算法计算出接收到的消息的杂凑值
,验证
是否成立,如果不成立将中断密钥交换过程;如果成立,继续执行后续步骤。
步骤A9:分析时间戳
,判断接收时间是否在时间窗口
区间内,如果不在,将中断密钥交换过程;如果在时间窗口区间内,继续执行后续步骤。
步骤A10:通过FALCON数字签名验证算法,使用用户B的签名公钥
验证
的签名
,如果签名验证失败,将中断密钥交换过程;如果签名验证成功,继续执行后续步骤。
步骤A11:通过SM9解密算法,使用
和
对
进行解密,得到明文
,具体为:
从
中取出比特串
,将
的数据类型转换为椭圆曲线上的点,验证
是否成立,若不成立则报错并退出
计算群
中的元素
,将
的数据类型转换为比特串
计算
,若
为全0比特串,则报错并退出
计算
步骤A12:计算出共享密钥
。
步骤A13:使用SM3密码杂凑算法计算出
的杂凑值
,验证
是否成立,如果不成立,从用户B到用户A的密钥确认失败;如果成立,从用户B到用户A的密钥确认成功,可以选择继续执行下一步骤。
步骤A14 (可选项):通过FALCON数字签名算法,使用签名私钥
对
进行签名,得到签名得到签名
,并将
发送给用户B。
用户B:
步骤B14 (可选项):通过FALCON数字签名验证算法,使用用户A的签名公钥
验证
是否是
的有效签名,如果签名验证失败,从用户A到用户B的密钥确认失败;如果签名验证成功,从用户A到用户B的密钥确认成功。
基于SM9和FALCON的密钥交换协议流程如图1。

Figure 1. Flowchart of key exchange protocol based on SM9 and FALCON
图1. 基于SM9和FALCON的密钥交换协议流程图
4. 安全性分析
4.1. BAN逻辑分析
本文采用BAN逻辑证明协议的安全性,形式化说明协议能够达到预期的安全目标。表1给出了本文涉及的BAN逻辑符号和含义,表2给出了本文使用的BAN逻辑规则。

Table 1. Symbols and meanings of BAN logic
表1. BAN逻辑符号和含义
协议的理想化过程如下。
消息
、
在不安全信道传输,则其对应的理想化形式分别为
、
。
协议初始化假设如下。
P1:
,
P2:
,
,
,
P3:cS是cB的签名,则
P4:
,
P5:B验证rS是有效签名,则
,
P6:A验证cS是有效签名,则
,
P7:
,
P8:通过可选项的操作,B验证
是
的有效签名后,
由于共享密钥的生成与安全性取决于随机数据串rB,所以本文协议需要证明的目标如下。
G1:
,即A相信B也相信协商出的共享秘密数据串rB
G2:
,即A相信与B协商出的共享秘密数据串rB
G3:
,即B相信A也相信协商出的共享秘密数据串rB
G4:
,即B相信与A协商出的共享秘密数据串rB
根据协议初始化假设、协议理想化以及 BAN逻辑规则来证明协议目标,具体的证明过程如下。
目标G1证明过程
根据P7和M2,通过规则R1,可以得到Q1;根据Q1和P2,通过规则R2,可以得到目标G1。具体为:
:Q1
:G1
目标G2证明过程
根据P2和P6,通过规则R4,可以得到Q2;根据Q2和P4,通过规则R3,可以得到Q3;根据Q3和P3,通过规则R4,可以得到Q4;根据Q4和P4,通过规则R3,可以得到目标G2。具体为:
:Q2
:Q3
:Q4
:G2
目标G3证明过程
根据P8,可以直接得到目标G3,即
:G3
目标G4证明过程
由于rB由B生成,所以可以直接得到G4,即
:G4
4.2. 非形式化分析
4.2.1. 相互认证性
参与方A和B分别通过验证rS和cS两个签名是否有效来认证对方的身份。因为rS和cS通过FALCON签名算法生成,安全性由NTRU格上的SIS困难问题保证,攻击者不能在多项式时间内解决该问题,从而攻击者不能冒充合法参与者通过身份认证。因此,本文协议实现了发起方A和响应方B之间的相互认证性。
4.2.2. 抗重放攻击
本文协议中,参与方接收到信息会先校验时间戳的有效性,只有在时间窗口内的信息才认为是合法信息,再进行下一步操作。因此,攻击者无法直接转发消息发起重放攻击。并且,本文协议中每个时间戳都添加到SM3杂凑值中,若攻击者通过替换新的时间戳发起重放攻击,则杂凑值无法通过验证,参与方将会中断与攻击者间协议的执行。因此,本文协议可以抵抗重放攻击。
4.2.3. 抗中间人攻击
为了发起中间人攻击,攻击者拦截通信双方的信息后,必须修改截获的信息,并让对方相信篡改的信息是真实的。由于攻击者无法得到参与方的加密私钥与签名私钥,因此,攻击者不能正确地修改传输中的信息,不能达到攻击目的。并且如前文所述,每个参与方都会检查时间戳的有效性,如果有第三方攻击者进行截取或转发两者之间的信息,由于消耗的时间大概率会远超过消息的传输时间,从而导致时间戳非法,接受者通过时间戳也可以辨认出该消息不是合法的消息。因此,本文协议可以抵抗中间人攻击。
4.2.4. 抗拒绝服务攻击
由于每个参与方接收到信息后都会先检查时间戳的有效性然后校验SM3杂凑值,任何一个验证失败,参与方都会中断执行的协议。因此,当参与方接收到大量非法信息时,计算资源并不会被大量浪费。因此,本文协议可以抵抗拒绝服务攻击。
4.2.5. 完全前向安全性
本文协议每次被执行时,都会根据通信参与双方重新生成的随机数创建新的共享会话密钥,并且保障协议协商过程的机密性与认证性所使用的SM9与FALCON的公私钥对也都会进行更新,因此协商生成的每个新密钥都与以前协商生成的密钥不可区分,任何会话密钥的泄露都不会影响其他会话密钥的安全性。因此,本文协议达到了完全的前向安全性要求。
4.2.6. 完善保密性
完善保密性主要是指明文与密文相互独立,知道密文并不能改善对于明文的认识 [19] 。本协议应用SM9公钥加密算法时,使用基于密钥派生函数的序列密码算法加密明文的方法,先生成与要加密的256比特随机数据串等长的密钥,再通过逐比特异或运算进行加密。这种一次一密的加密方法具有完善保密性。
5. 结束语
本文设计了一个基于SM9和FALCON的密钥交换协议,与SM9标识密码算法中的密钥交换协议 [3] 相比,该协议增加了签名,让协商双方可以鉴别对方的身份。并且,本文协议增加了时间戳信息,可以更好地抵抗重放攻击。经过安全性分析,该协议具有相互认证性、抗重放攻击、抗中间人攻击、抗拒绝服务攻击、完全前向安全性、完善保密性。本文协议采用抗量子安全的FALCON签名算法来提供身份认证和数据完整性。本文协议在使用SM9标识密码算法时,为了进一步增强加密主密钥对的安全性,主公钥随着私钥安全地发送给协议的参与方,通过人为管理的方式保证主公钥除了协议参与双方外无人知道。在文件共享、视频会议、无线网络安全通信等数据传输场景中,都可以应用本文所设计的基于SM9和FALCON的密钥交换协议来协商出一致的会话密钥,然后用此密钥对通信内容进行加密,从而达到安全地传输信息的目的。
基金项目
国家自然科学基金(61370188);北京市教委科研计划(KM202010015009);北京市教委科研计划资助(No. KM202110015004);北京印刷学院博士启动金项目(27170120003/020);北京印刷学院科研创新团队项目(Eb202101);北京印刷学院校内学科建设项目(21090121021);北京印刷学院重点教改项目(22150121033/009);北京印刷学院科研基础研究一般项目(Ec202201);北京印刷学院博士启动金项目(27170122006);北京印刷学院基础研究一般项目(Ec202201);北京市高等教育学会2022年立项面上课题(MS2022093);北京市教育委员会科学研究计划项目资助(KM202310015002);北京印刷学院网络空间安全培育学科建设项目(21090123010)。