本发明涉及一种加密方法,尤其涉及了一种基于国密算法的预共享密钥的身份鉴别方法。
技术背景
目前国家保密局处于对通讯安全的考虑,发布了一系列国密算法,包括对称算法SM1和SM4,非对称算法SM2,密码杂凑算法SM3,分别用于替代国际标准上美国提出的AES/3DES、RSA、SHA-1/MD5等算法。国密局还提出了支持国密算法的数字证书、CA系统、IPSec VPN等的中国密码行业标准。
国际标准IPSec协议中,使用IKE协议协商,支持预共享密钥和数字证书两种身份鉴别方式。预共享密钥身份鉴别方式使用起来比较简单,双方各自设置一个相同口令作为预共享密钥,用来表征双方身份;数字证书方式需要依赖CA系统,制作双方表征身份的数字证书。
国密算法的IPSec VPN中国行业标准中,只描述了使用数字证书作为身份鉴别的方法,而数字证书身份鉴别方式依赖于国密算法CA系统。在一些不具备部署CA系统的小型网络中,则只能使用预共享密钥方式时。而预共享密钥方式是建立在Diffie-Hellman密钥交换算法基础上的,这个算法不属于国密算法,于是在国密算法的体系下的IPSEC VPN实现方式上,缺少一种预共享密钥身份鉴别方法。
技术实现要素:
本发明的目的就是实现一种简单的、易于部署的基于国密算法的预共享密钥的身份鉴别方法。
为了解决上述技术问题,本发明通过下述技术方案得以解决:
一种基于国密算法的预共享密钥的身份鉴别方法,包括以下步骤:
步骤1:通信双方发起者A和响应者B事先约定好一个预共享密钥PSK;
步骤2:通信双方采用IKE协议进行安全协商、密钥交换,算法采用国密算法;
步骤3:在IKE协商第一阶段采用主模式协商,交互消息1和消息2中,发起者A和响应者B互相协商一个安全联盟载荷SA;
步骤4:发起者A和响应者B各产生一个128-bit的随机数rA和rB;
步骤5:根据SM2椭圆曲线公钥密码算法,发起者A和响应者B分别计算椭圆曲线上的点RA=[rA]G,RB=[rB]G;
步骤6:在IKE协商第一阶段交互消息3和消息4中,将RA和RB作为密钥交换载荷KE_I和KE_R互相交换,互相交换Nonce载荷Ni和Nr;
步骤7:发起者A计算KA=[rA]RB,响应者B计算KB=[rB]RA,根据椭圆曲线计算规则:KA=[rA]RB=[rA∙ rB]G=[rB∙ rA]G =[rB]RA=KB,所以KA、KB相同,作为第一阶段的公共密钥K(K= KA=KB);
步骤8:使用预共享密钥PSK,推导出衍生密钥SKEYID,用于交换鉴别数据,实现身份认证:
SKEYID = prf(PSK, Ni_b | Nr_b)
prf(key, msg)是key的伪随机函数——通常是key的hash函数,hash算法采用SM3算法;
步骤9:按如下方法计算后续密钥:
衍生密钥SKEYID_d = prf(SKEYID, K | CKY-I | CKY-R | 0)
认证密钥SKEYID_a = prf(SKEYID, SKEYID_d | K | CKY-I | CKY-R | 1)
加密密钥SKEYID_e = prf(SKEYID, SKEYID_a | K | CKY-I | CKY-R | 2)
步骤10:在IKE协商第一阶段交互消息5和消息6中,通信双方鉴别前面的交互过程,交换鉴别数据HASH_I和HASH_R。这个消息使用SKEYID_e作为对称密码加密,算法采用SM1或SM4,模式采用CBC模式,IV=HASH(rA | rB)
HASH_I = prf(SKEYID, CKY-I | CKY-R | SAi_b | IDii_b )
HASH_R = prf(SKEYID, CKY-R | CKY-I | SAi_b | IDir_b )
步骤11:至此,IKE第一阶段协商,采用基于国密算法预共享密钥身份鉴别,后续按照国密算法标准规定的步骤进行第二阶段的协商。
本发明由于采用了以上技术方案,具有显著的技术效果:
本发明基于这种方法,能够在IPSEC VPN中实现一种简单的、易于部署的基于国密算法的预共享密钥的身份鉴别方法,特别是在一些不具备部署国密CA系统的小型网络中,能完整的使用国密算法部署IPSEC VPN。
附图说明:
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要的附图作简单地介绍。
图1是本发明的网络拓扑图;
图2是IKE协商第一阶段,采用主模式时,基于国密算法的预共享密钥身份验证的协商过程;
图3是IKE协商第一阶段,采用积极模式时,基于国密算法的预共享密钥身份验证的协商过程。
具体实施方式:
下面结合实施例对本发明做进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。
实施例1:
本发明系统组成,如图1所示,由路由器A与路由器B组成的网络,路由器A和路由器B之间建立IPSEC隧道,使用IKE协议协商安全联盟、密钥交换,算法采用国密算法,IKE第一阶段采用主模式。
一种基于国密算法的预共享密钥的身份鉴别方法,包括以下步骤:
步骤1:通信双方发起者A和响应者B事先约定好一个预共享密钥PSK;
步骤2:通信双方采用IKE协议进行安全协商、密钥交换,算法采用国密算法;
步骤3:在IKE协商第一阶段的交互消息1和消息2中,发起者A和响应者B互相协商一个安全联盟载荷SA;
步骤4:发起者A和响应者B各产生一个128-bit的随机数rA和rB,例如
rA = 3945208F 7B2144B1 3F36E38A C6D39F95 88939369 2860B51A 42FB81EF 4DF7C5B8
rB= 59276E27 D506861A 16680F3A D9C02DCC EF3CC1FA 3CDBE4CE 6D54B80D EAC1BC21
步骤5:根据SM2椭圆曲线公钥密码算法,发起者A和响应者B分别计算椭圆曲线上的点RA=[rA]G,RB=[rB]G,例如
RA = 09F9DF31 1E5421A1 50DD7D16 1E4BC5C6 72179FAD 1833FC07 6BB08FF3 56F35020
CCEA490C E26775A5 2DC6EA71 8CC1AA60 0AED05FB F35E084A 6632F607 2DA9AD13
RB = 04EBFC71 8E8D1798 62043226 8E77FEB6 415E2EDE 0E073C0F 4F640ECD 2E149A73
E858F9D8 1E5430A5 7B36DAAB 8F950A3C 64E6EE6A 63094D99 283AFF76 7E124DF0
步骤6:在IKE协商第一阶段交互消息3和消息4中,将RA和RB作为密钥交换载荷KE_I和KE_R互相交换,互相交换Nonce载荷Ni和Nr;
步骤7:发起者A计算KA=[rA]RB,响应者B计算KB=[rB]RA,根据椭圆曲线计算规则:KA=[rA]RB=[rA∙ rB]G=[rB∙ rA]G =[rB]RA=KB,所以KA、KB相同,作为第一阶段的公共密钥K(K= KA=KB),例如
KA = 335E18D7 51E51F04 0E27D468 138B7AB1 DC86AD7F 981D7D41 6222FD6A B3ED230D
AB743EBC FB22D64F 7B6AB791 F70658F2 5B48FA93 E54064FD BFBED3F0 BD847AC9
KB = 335E18D7 51E51F04 0E27D468 138B7AB1 DC86AD7F 981D7D41 6222FD6A B3ED230D
AB743EBC FB22D64F 7B6AB791 F70658F2 5B48FA93 E54064FD BFBED3F0 BD847AC9
计算结果也验证了KA=KB;
步骤8:使用预共享密钥PSK,推导出衍生密钥SKEYID,用于交换鉴别数据,实现身份认证:
SKEYID = prf(PSK, Ni_b | Nr_b)
prf(key, msg)是key的伪随机函数——通常是key的hash函数,hash算法采用SM3算法;
步骤9:按如下方法计算后续密钥:
衍生密钥SKEYID_d = prf(SKEYID, K | CKY-I | CKY-R | 0)
认证密钥SKEYID_a = prf(SKEYID, SKEYID_d | K | CKY-I | CKY-R | 1)
加密密钥SKEYID_e = prf(SKEYID, SKEYID_a | K | CKY-I | CKY-R | 2)
步骤10:在IKE协商第一阶段交互消息5和消息6中,通信双方鉴别前面的交互过程,交换鉴别数据HASH_I和HASH_R。这个消息使用SKEYID_e作为对称密码加密,算法采用SM1或SM4,模式采用CBC模式,IV=HASH(rA | rB)
HASH_I = prf(SKEYID, CKY-I | CKY-R | SAi_b | IDii_b )
HASH_R = prf(SKEYID, CKY-R | CKY-I | SAi_b | IDir_b )
步骤11:至此,IKE第一阶段协商,采用基于国密算法预共享密钥身份鉴别,后续按照国密算法标准规定的步骤进行第二阶段的协商。
使用本发明方法后,能够在IPSEC VPN中实现一种简单的、易于部署的基于国密算法的预共享密钥的身份鉴别方法,特别是在一些不具备部署国密CA系统的小型网络中,能完整的使用国密算法部署IPSEC VPN。
实施例2:
本发明系统组成,如图1所示,由路由器A与路由器B组成的网络,路由器A和路由器B之间建立IPSEC隧道,使用IKE协议协商安全联盟、密钥交换,算法采用国密算法,与实施例1基本相同,所不同的是IKE第一阶段采用积极模式。
采用积极模式协商时,其特征在于包括以下步骤::
步骤1:发起者A发送SA、KE、Ni载荷,其中KE生成方法同实施例1中的生成方法;
步骤2:响应者B发送SA、KE、Nr、HASH_R载荷,其中KE生成方法、预共享密钥PSK推导出衍生密钥SKEYID的方法,以及HASH_R计算方法同实施例1中的生成方法;
步骤3:发起者A发送HASH_I载荷,其中预共享密钥PSK推导出衍生密钥SKEYID的方法,以及HASH_I计算方法同实施例1中的生成方法。