2021SC@SDUSC
基本概念
1976年,Diffie和Hellman在其题为《密码学的新方向》的论文中首次给出了公钥密码学的定义,并提出了Diffie-Hellman密钥交换算法。该算法解决了对称密码体制中的密钥分发问题,使得通信双方可以通过公开信道安全地交换共享密钥。
使用SM9通信的双方通过对方的标识和自身的私钥,经过两次或者可选的三次信息传递过程,计算获取一个由双方共同决定的共享秘密密钥。该密钥可以作为对称密码算法的会话密钥,其中可选步骤用来实现密钥确认。
密钥交换协议执行前需给用户分配加密私钥。SM9密钥交换协议可抵抗中间入侵攻击。
应用场景:双方在线,密钥交换后,利用该会话密钥进行数据交换,会话结束后,会话密钥失效。
符号及辅助算法
密钥交换协议的符号与数字签名的符号相差不大,区别之处在于多添加了几个参数的定义:
其中,KDF()密码派生函数的具体内容如下:
其作用为把Z的长度压缩到klen长度的比特串。
另外,用户私钥的计算方法与数字签名中用户私钥的算法一样,在此不再赘述。有兴趣可以移步山东大学软件工程应用与实践——GMSSL开源库(三)——SM9数字签名算法及验证中查看用户私钥的生成方式与源代码头文件中参数的定义。
SM9密钥交换协议
密钥交换协议的具体流程如下:
说明:
1、用户A与B的计算过程并不同步。
2、其中“(选项)”部分为密钥的验证过程,若不需要密钥的验证,则不需要进行计算与传送工作。
3、SM9密钥交换协议的正确性条件是用户A 第五步与用户B第四步中各参数相等,即g1=g1’,g2=g2’,g3=g3’。
4、根据流程图内容理解SM9密钥交换协议的流程并不复杂,但其数学证明较为复杂,需要一定的数学基础,在此不进行具体的数学证明过程的描述。
参考:GMT 0044.3-2016 SM9 标识密码算法 第3部分:密钥交换协议