1.本发明提供一种基于带外信道的高效认证密钥交换方法,属于高效认证密钥交换技术领域。
背景技术:2.认证密钥交换协议在很多设备交互场景中是必不可少的,目前使用的椭圆曲线diffie-hellman(ecdh)方案是当今比较流行的方式,但基于ecdh方案的计算量较大,这会导致很多资源受限的设备在运行协议时花费的时间较长;而在物联网场景中,很多交互设备的计算能力是不平等的,比如一些传感器节点和强大的服务器之间的通信,但采用的现行ecdh方案标准协议(比如ieee802.15.6里的display authenticated association)里忽略了这一点,他们所提供的方案并不能高效率实现非平衡算力设备之间的密钥协商;此外在一些非平衡的优化算法中,将一端的计算量转移到了另一端上,将给后者带来额外的计算量;基于此,有必要改进和优化现有的认证密钥交换协议,使其能够应用于广泛存在的计算力非平衡场景并进行高效认证,且不会额外增加设备的计算量。
技术实现要素:3.本发明为了克服现有技术中存在的不足,所要解决的技术问题为:提供一种基于带外信道的高效认证密钥交换方法的改进。
4.为了解决上述技术问题,本发明采用的技术方案为:一种基于带外信道的高效认证密钥交换方法,包括如下密钥交换步骤:
5.步骤一:使用算法协议对认证密钥交换的发起端、响应端共享的公共参数定义为:
[0006][0007]
式中:k是安全参数,是产生私钥的域,e是选定的椭圆曲线,g是该曲线的基点;
[0008]
在进行信息交换前,发起端和响应端预先计算自己的公私钥对:
[0009]
计算发起端ida的公私钥对为:私钥公钥pka=ska×
g;
[0010]
计算响应端idb的公私钥对为:私钥公钥pkb=skb×
g;
[0011]
步骤二:设置发起端算法为:
[0012]
步骤a01:发起端产生随机数
[0013]
步骤a02:发起端计算ua=ra+ska;
[0014]
步骤a03:发起端使用普通信道把ida,pka发送给响应端;
[0015]
步骤a04:发起端收到由普通信道发来的idb,cb,pkb;
[0016]
步骤a05:发起端使用普通信道把ida,ua发送给响应端;
[0017]
步骤a06:发起端收到由普通信道发来的ldb,rb;
[0018]
步骤a07:发起端使用消息认证码函数,使用密钥rb,将pka,pkb作为输入,产生的输出记为c
′b;
[0019]
步骤a08:发起端比较cb和c
′b是否相等,若不相等,则停止协议,若相等,则继续执
行步骤a09;
[0020]
步骤a09:发起端使用短消息认证码函数,使用密钥其中为异或操作,将pka,pkb作为输入,产生的输出为da;
[0021]
步骤a10:发起端把da转化为6位十进制数字,并将该6位十进制数字显示在屏幕上,让用户进行比对:若da=db,则继续执行步骤a11,若da≠db,则停止协议;
[0022]
步骤a11:发起端计算ta=ra×
pkb;
[0023]
步骤a12:发起端使用消息认证码函数,使用密钥rb,将ta作为输入,产生的输出为ka;
[0024]
步骤a13:发起端使用消息认证码函数,使用密钥ka,将ua,rb,ida,idb作为输入,产生的输出为maca;
[0025]
步骤a14:发起端使用普通信道把ida,maca发送给响应端;
[0026]
步骤a15:发起端收到由普通信道发来的idb,macb;
[0027]
步骤a16:发起端使用消息认证码函数,使用密钥ka,将rb,ua,idb,ida作为输入,产生的输出为mac2;发起端验证mac2和macb是否相等,若不相等,则停止协议,若相等,则继续执行步骤a17;
[0028]
步骤a17:发起端使用消息认证码函数,使用密钥ka,将ta,ua,rb,ida,idb作为输入,产生的输出为本次会话的会话密钥lka;
[0029]
步骤三:设置响应端算法为:
[0030]
步骤b01:响应端收到由普通信道发来的ida,pka;
[0031]
步骤b02:响应端产生随机数
[0032]
步骤b03:响应端使用消息认证码函数,使用密钥rb,将pka,pkb作为输入,产生的输出记为cb;
[0033]
步骤b04:响应端使用普通信道把idb,cb发送给发起端;
[0034]
步骤b05:响应端收到由普通信道发来的ida,ua;
[0035]
步骤b06:响应端使用普通信道把idb,rb发送给发起端;
[0036]
步骤b07:响应端使用短消息认证码函数,使用密钥其中为异或操作,将pka,pkb作为输入,产生的输出为dbb;
[0037]
步骤b08:响应端把db转化为6位十进制数字,并将该6位十进制数字显示在屏幕上,让用户进行比对:若db=da,则继续执行步骤b09,若db≠da,则停止协议;
[0038]
步骤b09:响应端计算tb=skb×
(ua×
g-pka);
[0039]
步骤b10:响应端使用消息认证码函数,使用密钥rb,将tb作为输入,产生的输出为kb;
[0040]
步骤b11:响应端收到由普通信道发来的ida,maca;
[0041]
步骤b12:响应端使用消息认证码函数,使用密钥kb,将ua,rb,ida,idb作为输入,产生的输出为mac1;
[0042]
步骤b13:响应端验证mac1和maca是否相等,若不相等,则停止协议,若相等,则继续执行步骤b14;
[0043]
步骤b14:响应端使用消息验证码函数,使用密钥kb,将rb,ua,idb,ida作为输入,产生的输出为macb;
[0044]
步骤b15:响应端使用普通信道把idb,macb发送给发起端;
[0045]
步骤b16:响应端使用消息认证码函数,使用密钥kb,将ta,ua,rb,ida,idb作为输入,产生的输出为本次会话的会话密钥lkb。
[0046]
本发明相对于现有技术具备的有益效果为:本发明提供的基于带外信道的高效认证密钥交换协议采用转移计算量的方法,可以让强设备端(响应端)代替弱设备端(发起端)计算标量乘法(即椭圆曲线中的一种耗时算法),从而实现协议的高效运行,有效减少整体运算时间,基于该交换协议优化的算法步骤相较于标准协议(即ieee802.15.6 display authenticated association)在减少弱设备端计算量的同时并没有增加强设备端的计算负荷,有效降低了强设备端(比如服务器)在进行多线程交互时,由于额外负荷而导致效率低下或宕机的可能性。
附图说明
[0047]
下面结合附图对本发明做进一步说明:
[0048]
图1为本发明高效认证密钥交换协议实现的流程图;
具体实施方式
[0049]
如图1所示,本发明具体提供一种基于带外信道的高效认证密钥交换方法,首先使用算法协议对认证密钥交换的发起端、响应端共享的公共参数进行定义,然后依次设置通讯的发起端和响应端算法,用于实现认证密钥的交换。
[0050]
首先定义本发明密钥交换方法中使用的各参数含义:
[0051]
k是安全参数,是产生私钥的域,e是选定的椭圆曲线,g是该曲线的基点;
[0052]
ida为发起端,ska为发起端的私钥,pka为发起端的公钥;
[0053]
idb为响应端,skb为响应端的私钥,pkb为响应端的公钥;
[0054]
ra为随机数,
rb
为随机数;
[0055]
ua为密钥;
[0056]
cb为响应端计算的承诺值;c
′b为发起端计算的承诺值,要与响应端的作比较;
[0057]
da为发起端计算的消息摘要码;db为响应端计算的消息摘要码;
[0058]
ta为计算密钥ka时输入的一个参数;ka为密钥;tb为计算密钥kb时输入的一个参数;kb为密钥;
[0059]
maca为发起端计算的自身消息校验码;macb为响应端计算的自身消息校验码;mac2为发起端为了验证响应端身份计算的消息校验码;mac1为响应端为了验证发起端身份计算的消息校验码;
[0060]
lka为会话密钥;lkb为会话密钥;
[0061]
本发明针对发起端的算法步骤主要有:
[0062]
步骤a01:发起端产生随机数
[0063]
步骤a02:发起端计算:ua=ra+ska;
[0064]
步骤a03:发起端使用普通信道把ida,pka发送给响应端;
[0065]
步骤a04:发起端收到由普通信道发来的idb,cb,pkb;
[0066]
步骤a05:发起端使用普通信道把ida,ua发送给响应端;
[0067]
步骤a06:发起端收到由普通信道发来的idb,rb;
[0068]
步骤a07:发起端使用消息认证码函数,使用密钥rb,将pka,pkb作为输入,产生的输出记为c
′b;
[0069]
步骤a08:发起端比较cb和c
′b是否相等,若不相等,则停止协议;若相等,则继续执行步骤a09;
[0070]
步骤a09:发起端使用短消息认证码函数,使用密钥(其中为异或操作),将pka,pkb作为输入,产生的输出为da;
[0071]
步骤a10:发起端把da转化为6位十进制数字,并把这个6位十进制数字显示在屏幕上,让用户进行比对;若da=db,则继续执行步骤a11;若da≠db,则停止协议;
[0072]
步骤a11:发起端计算:ta=ra×
pkb;
[0073]
步骤a12:发起端使用消息认证码函数,使用密钥rb,将ta作为输入,产生的输出为ka;
[0074]
步骤a13:发起端使用消息认证码函数,使用密钥ka,将ua,rb,ida,idb作为输入,产生的输出为maca;
[0075]
步骤a14:发起端使用普通信道把ida,maca发送给响应端;
[0076]
步骤a15:发起端收到由普通信道发来的idb,macb;
[0077]
步骤a16:发起端使用消息认证码函数,使用密钥ka,将rb,ua,idb,ida作为输入,产生的输出为mac2;发起端验证mac2和macb是否相等,若不相等,则停止协议,若相等,则继续执行步骤a17;
[0078]
步骤a17:发起端使用消息认证码函数,使用密钥ka,将ta,ua,rb,ida,idb作为输入,产生的输出为本次会话的会话密钥lka;
[0079]
本发明针对响应端的算法步骤主要有:
[0080]
步骤b01:响应端收到由普通信道发来的ida,pka;
[0081]
步骤b02:响应端产生随机数
[0082]
步骤b03:响应端使用消息认证码函数,使用密钥rb,将pka,pkb作为输入,产生的输出记为cb;
[0083]
步骤b04:响应端使用普通信道把idb,cb发送给发起端;
[0084]
步骤b05:响应端收到由普通信道发来的ida,ua;
[0085]
步骤b06:响应端使用普通信道把idb,rb发送给发起端;
[0086]
步骤b07:响应端使用短消息认证码函数,使用密钥将pka,pkbb作为输入,产生的输出为db;
[0087]
步骤b08:响应端把db转化为6位十进制数字,并把这个6位十进制数字显示在屏幕上,让用户进行比对;若db=da,则继续执行步骤b08;若db≠da,则停止协议;
[0088]
步骤b09:响应端计算:tb=skb×
(ua×
g-pka);
[0089]
步骤b10:响应端使用消息认证码函数,使用密钥rb,将tb作为输入,产生的输出为kb;
[0090]
步骤b11:响应端收到由普通信道发来的ida,maca;
[0091]
步骤b12:响应端使用消息认证码函数,使用密钥kb,将ua,rb,ida,idb作为输入,产生的输出为mac1;
[0092]
步骤b13:响应端验证mac1和maca是否相等,若不相等,则停止协议,若相等,则继续执行步骤b14;
[0093]
步骤b14:响应端使用消息验证码函数,使用密钥kb,将rb,ua,idb,ida作为输入,产生的输出为macb;
[0094]
步骤b15:响应端使用普通信道把idb,macb发送给发起端;
[0095]
步骤b16:响应端使用消息认证码函数,使用密钥kb,将ta,ua,rb,ida,idb作为输入,产生的输出为本次会话的会话密钥lkb。
[0096]
上述协议方法中使用到的消息认证码函数,可以使用哈希消息认证码hmac,也可以使用国密体系sm3密码杂凑算法来代替。
[0097]
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
技术特征:1.一种基于带外信道的高效认证密钥交换方法,其特征在于:包括如下密钥交换步骤:步骤一:使用算法协议对认证密钥交换的发起端、响应端共享的公共参数定义为:式中:k是安全参数,是产生私钥的域,e是选定的椭圆曲线,g是该曲线的基点;在进行信息交换前,发起端和响应端预先计算自己的公私钥对:计算发起端id
a
的公私钥对为:私钥公钥pk
a
=sk
a
×
g;计算响应端id
b
的公私钥对为:私钥公钥pk
b
=sk
b
×
g;步骤二:设置发起端算法为:步骤a01:发起端产生随机数步骤a02:发起端计算u
a
=r
a
+sk
a
;步骤a03:发起端使用普通信道把id
a
,pk
a
发送给响应端;步骤a04:发起端收到由普通信道发来的id
b
,c
b
,pk
b
;步骤a05:发起端使用普通信道把id
a
,u
a
发送给响应端;步骤a06:发起端收到由普通信道发来的id
b
,r
b
;步骤a07:发起端使用消息认证码函数,使用密钥r
b
,将pk
a
,pk
b
作为输入,产生的输出记为c
′
b
;步骤a08:发起端比较c
b
和c
′
b
是否相等,若不相等,则停止协议,若相等,则继续执行步骤a09;步骤a09:发起端使用短消息认证码函数,使用密钥其中为异或操作,将pk
a
,pk
b
作为输入,产生的输出为d
a
;步骤a10:发起端把d
a
转化为6位十进制数字,并将该6位十进制数字显示在屏幕上,让用户进行比对:若d
a
=d
b
,则继续执行步骤a11,若d
a
≠d
b
,则停止协议;步骤a11:发起端计算t
a
=r
a
×
pk
b
;步骤a12:发起端使用消息认证码函数,使用密钥r
b
,将t
a
作为输入,产生的输出为k
a
;步骤a13:发起端使用消息认证码函数,使用密钥k
a
,将u
a
,r
b
,id
a
,id
b
作为输入,产生的输出为max
a
;步骤a14:发起端使用普通信道把id
a
,mac
a
发送给响应端;步骤a15:发起端收到由普通信道发来的id
b
,mac
b
;步骤a16:发起端使用消息认证码函数,使用密钥k
a
,将r
b
,u
a
,id
b
,id
a
作为输入,产生的输出为mac2;发起端验证mac2和mac
b
是否相等,若不相等,则停止协议,若相等,则继续执行步骤a17;步骤a17:发起端使用消息认证码函数,使用密钥k
a
,将t
a
,u
a
,r
b
,id
a
,id
b
作为输入,产生的输出为本次会话的会话密钥lk
a
;步骤三:设置响应端算法为:步骤b01:响应端收到由普通信道发来的id
a
,pk
a
;步骤b02:响应端产生随机数步骤b03:响应端使用消息认证码函数,使用密钥r
b
,将pk
a
,pk
b
作为输入,产生的输出记
为c
b
;步骤b04:响应端使用普通信道把id
b
,c
b
发送给发起端;步骤b05:响应端收到由普通信道发来的id
a
,u
a
;步骤b06:响应端使用普通信道把id
b
,r
b
发送给发起端;步骤b07:响应端使用短消息认证码函数,使用密钥其中为异或操作,将pk
a
,pk
b
作为输入,产生的输出为d
b
;步骤b08:响应端把d
b
转化为6位十进制数字,并将该6位十进制数字显示在屏幕上,让用户进行比对:若d
b
=d
a
,则继续执行步骤b09,若d
b
≠d
a
,则停止协议;步骤b09:响应端计算t
b
=sk
b
×
(u
a
×
g-pk
a
);步骤b10:响应端使用消息认证码函数,使用密钥r
b
,将t
b
作为输入,产生的输出为k
b
;步骤b11:响应端收到由普通信道发来的id
a
,mac
a
;步骤b12:响应端使用消息认证码函数,使用密钥k
b
,将u
a
,r
b
,id
a
,id
b
作为输入,产生的输出为mac1;步骤b13:响应端验证mac1和mac
a
是否相等,若不相等,则停止协议,若相等,则继续执行步骤b14;步骤b14:响应端使用消息验证码函数,使用密钥k
b
,将r
b
,u
a
,id
b
,id
a
作为输入,产生的输出为mac
b
;步骤b15:响应端使用普通信道把id
b
,mac
b
发送给发起端;步骤b16:响应端使用消息认证码函数,使用密钥k
b
,将t
a
,u
a
,r
b
,id
a
,id
b
作为输入,产生的输出为本次会话的会话密钥lk
b
。
技术总结本发明提供一种基于带外信道的高效认证密钥交换方法,属于高效认证密钥交换技术领域;所要解决的技术问题为:提供一种基于带外信道的高效认证密钥交换方法的改进;解决该技术问题采用的技术方案为:包括如下密钥交换步骤:使用算法协议对认证密钥交换的发起端、响应端共享的公共参数进行定义,预先计算发起端和响应端的公私钥对,然后设置发起端算法,主要由发起端产生随机数,并使用普通信道把处理数据发送给响应端,收到由普通信道发来的处理数据;然后设置响应端算法,主要由响应端收到由普通信道发来的处理数据,响应端产生随机数,响应端使用消息认证码函数,使用密钥输入,产生数据输出;本发明应用于认证密钥交换。本发明应用于认证密钥交换。本发明应用于认证密钥交换。
技术研发人员:黄鑫 尹昊天 邢斌 赵渊 武晓华 彭跃余 赵梁斌 黄佳佳 孙晓欣 李建爽 柴晟 张笛 拉纳
受保护的技术使用者:铁塔能源有限公司山西分公司
技术研发日:2022.07.22
技术公布日:2022/11/1