一种适用于元宇宙电力交易的轻量化认证密钥交换方法与流程

文档序号:33184714发布日期:2023-02-04 06:00阅读:81来源:国知局
一种适用于元宇宙电力交易的轻量化认证密钥交换方法与流程

1.本发明提供了一种适用于元宇宙电力交易的轻量化认证密钥交换方法,属于认证密钥交换技术领域。


背景技术:

2.随着能源物联网(eiot)的发展,将会有越来越多的设备加入其中。而大量的能源物联网设备处于开放式的网络环境中,很容易遭受各种各样的攻击。认证密钥交换(ake)协议可以确保能源物联网中电力交易双方的安全通信。为此研究人员设计了许多单因素的身份认证和密钥交换协议。但是使用单一因素进行认证也存在很多问题,未经授权的用户可以采用字典攻击、彩虹表、社会工程技术等各种方式获取访问权限。因此提出了双因素认证的解决方案,该方案结合代表性数据(如id/密码)和个人拥有的因素(如智能卡和手机),可以提供更强的安全保护。
3.元宇宙的蓬勃发展,使得未来能源物联网中的电力交易可以发生在其中,而电力交易双方设备的计算能力一般具有较大的差异,往往有一端的计算能力受限。因此针对元宇宙中的电力交易场景,通过充分利用计算能力较强的设备,将通讯双方中计算能力较弱设备的耗时密码学操作转移到另一端,提出了一种适用于元宇宙电力交易的轻量化认证密钥交换方法。


技术实现要素:

4.本发明为了解决现有能源物联网中认证密钥交换不安全且需要计算能力大的设备的问题,提出了一种适用于元宇宙电力交易的轻量化认证密钥交换方法。
5.为了解决上述技术问题,本发明采用的技术方案为:一种适用于元宇宙电力交易的轻量化认证密钥交换方法,包括如下步骤:
6.s1:初始化:服务器s选择一个椭圆曲线,产生一个随机数x,设为长期私钥;
7.s2:注册阶段:用户u在智能电表处注册,其中用户注册在安全通道中进行;
8.s3:认证阶段:包括online阶段和offline阶段,其中online阶段的认证步骤包括:
9.s301:用户u通过智能卡输入身份idu、密码pwu,进行验证,智能卡sc通过开放通道向服务器s发送登录请求消息;
10.s302:服务器s接收到登录请求消息后进行验证,验证通过服务器s通过开放信道向用户u发送认证请求信息;
11.s303:用户u接收到认证请求消息后,先验证其有效性,然后服务器s和用户存储相同的会话密钥用于安全通信;
12.offline阶段的认证步骤包括:
13.s311:服务器s使用自己的私钥对其产生的随机数和时间戳的乘积进行签名,完成签名后向用户u发送消息;
14.s312:用户u在接收到消息后,使用服务器s的公钥验证签名消息和时间戳,验证成
功后对数据进行加密,向服务器s发送加密后的签名消息;
15.s313:服务器s收到加密的签名消息后,使用用户u的公钥验证签名,同时验证时间戳和哈希值,验证成功后用密钥对数据进行解密。
16.所述注册阶段的具体过程如下:
17.s21:用户u选择自己的标识符idu、密码pwu,然后用户u生成一个随机数a和椭圆曲线公私钥对sku和pku,计算pwu=h(idu||pwu||a),然后用户u通过安全通道向服务器s提交idu和pwu;
18.s22:服务器s接收到{idu,pwu}后,生成一个随机数b,设置{idu,b,honey_list},并计算:
[0019][0020]
b1=h(idu‖x‖c‖b);
[0021][0022]
然后检查自己的数据库中是否存在idu和h2=(idu),如果存在,服务器s要求用户u用另一个新身份注册,通过安全通道向用户u发送椭圆曲线相关参数{g,g,h2,l1,c},其中g表示椭圆曲线群,g表示素数有限域f上的椭圆曲线e的基点,h2表示哈希函数;
[0023]
s23:用户u收到消息后,计算:
[0024][0025]
然后从智能卡上删除c并添加p1,p2,p3。
[0026]
所述s301:用户u通过智能卡sc输入身份idu、密码pwu,进行验证,智能卡sc通过开放通道向服务器s发送登录请求消息的具体过程如下:
[0027]
用户u通过智能卡输入身份idu、密码pwu,计算:
[0028][0029]
pwu’=h(idu‖pwu‖a
*
);
[0030]
上式中:pwu’表示h(idu‖pwu‖a
*
)级联后的hash值;
[0031]
之后,智能卡sc判断是否p2?=h(pwu'‖p1),否的话退出协议,否则智能卡sc选择一个随机数并计算:
[0032][0033]
上式中:c1表示h(idu‖c)这些值级联后的hash值,c2表示h(idu‖a*‖c1)这些值级联后的hash值,k
u1
表示h(idu‖a*‖p3)这些值级联后的hash值,n表示h(idu‖c1‖c2‖b1*‖t1)这些值级联后的hash值,e1表示用加密,t1表示时间戳,表示用k
u1
进行加密;
[0034]
然后,sc通过开放通道向服务器s发送登录请求消息msg1={e1,p3}。
[0035]
所述s302:服务器s接收到登录请求消息后进行验证,验证通过服务器s通过开放信道向用户u发送认证请求信息的具体过程如下:
[0036]
服务器s接收到msg1后计算k
s1
,并解密,并解密验证解密的p3与收到的p3是否相等,如果不相等,服务器s搜索用户列表user_list,检索是否存在idu,如果不存在,停止下一步操作,将honey_list的值加1,一旦honey_list的值超过阈值,服务器s会认为智能卡被窃取,挂起此次操作;然后,根据验证条件对接收到的时间戳t1进行验证|t
2-t1|《δt,其中δt为最大传输延迟,t2为消息msg1的接收时间,如果验证失败退出协议,验证通过,则计算:
[0037][0038]
其中表示用dks1加密(p3,idu,c1,c2,u+sku,n,t1),k
s1
表示h(idu‖p3

b‖p3)这些值级联后的hash值,表示解密后得到的idu,表示解密e1(p3,idu,c1,c2,u+sku,n,t1)从中得到的c1,表示解密e1(p3,idu,c1,c2,u+sku,n,t1)从中得到的c2,t1表示时间戳;
[0039]
然后验证n
*
?=n是否成立,如果不成立退出协议,成立则服务器s选择一个随机数?=n是否成立,如果不成立退出协议,成立则服务器s选择一个随机数并产生一时间戳t3,继续计算:
[0040][0041][0042]
上式中:k
s2
表示上面串的hash值,u.g表示(u+sku)*g-pku,sks表示上面串的hash值,v表示上面串的hash值,s.g表示随机数乘椭圆曲线基点,ids表示上面串的值,id
s1
表示上面串的值,e2表示用ek
s2
加密后的值,表示用ek
s2
加密;
[0043]
服务器s通过开放信道向用户u发送认证请求消息msg2={e2,t3}。
[0044]
所述s303:用户u接收到认证请求消息后,先验证其有效性,然后服务器s和用户存储相同的会话密钥用于安全通信的具体过程如下:
[0045]
在接收到msg2后,用户u首先根据条件验证接收到的时间戳t4,|t
4-t3|《δt,其中δt为最大传输延迟,如果验证有效的,用户u先计算k
u2
,然后解密
并计算下列值:
[0046][0047]
上式中:表示idu表示用户的id;
[0048]
然后验证v?=h(u.g||u.s.g||s.g||t3)是否成立,如果不成立退出协议,成立则计算:
[0049][0050]
其中k
u2
表示k
u2
=h(c1||c2||b1||n||t3);
[0051]
最后,服务器s和用户u都存储相同的会话密钥sks和sku,用于它们的安全通信。
[0052]
所述s311:服务器s使用自己的私钥对其产生的随机数和时间戳的乘积进行签名,完成签名后向用户u发送消息的具体过程如下:
[0053]
服务器s产生一个随机数x和一个时间戳ts,并计算:
[0054]
x=x*g;其中x表示随机数x乘以基点;
[0055]
然后服务器s使用自己的私钥对(x,ts)进行签名生成完成签名后向用户u发送消息
[0056]
所述s312:用户u在接收到消息后,使用服务器s的公钥验证签名消息和时间戳,验证成功后对数据进行加密,向服务器s发送加密后的签名消息的具体过程如下:
[0057]
用户u在接收到消息m1后,首先使用服务器s的公钥验证m1中的签名消息和时间戳ts,验证不成功退出协议,否则选择一个随机数进行下列计算:
[0058]
y=y*g;
[0059]
kk=y*x;
[0060]
其中y表示随机数y乘以基点,kk表示会话密钥;
[0061]
然后用户u端获取当前一个时间戳tu,并使用密钥kk对数据进行加密en
kk
(data,tu),随后对消息进行签名生成最后向服务器s发送消息其中en
kk
表示用密钥kk对数据进行加密,data表示数据,表示使用sku对消息进行签名,sku表示用户的私钥。
[0062]
所述s313:服务器s收到加密的签名消息后,使用用户u的公钥验证签名,同时验证时间戳和哈希值,验证成功后用密钥对数据进行解密的具体过程如下:
[0063]
服务器s收到消息m2后,通过使用用户u的公钥对m2中的签名消息进行验证签名,同时验证时间戳tu和h(en
kk
(data,tu)),若验证失败,退出协议,否则进行下列计算:
[0064]
kk=x*y;
[0065]
data=de
kk
(en
kk
(data,tu));
[0066]
上式中:de
kk
表示用密钥kk对数据进行解密。
[0067]
本发明相对于现有技术具备的有益效果为:
[0068]
1)使用智能卡、用户口令作为认证因素,提供了更强的安全保护;
[0069]
2)提供相互认证和用户匿名性;
[0070]
3)可以抵抗多种攻击:伪装、离线密码猜测、内部攻击、重放和mitm攻击;
[0071]
4)适用于使用智能卡进行信息上传等特定场景。
附图说明
[0072]
下面结合附图对本发明做进一步说明:
[0073]
图1为本发明的认证密钥交换方法流程图;
[0074]
图2为本发明online认证阶段的算法流程图;
[0075]
图3为本发明offline认证阶段的算法流程图。
具体实施方式
[0076]
如图1至图3所示,本发明是一个提供匿名性以及轻量化的双因素认证方法,使用该方法可以使通讯双方协商出一个安全的会话密钥。需要用到的符号及含义如下表1所示:
[0077][0078]
表1本发明符号及含义。
[0079]
本发明的具体步骤如下:
[0080]
初始化阶段:
[0081]
服务器s选择一个椭圆曲线,产生一个随机数x,设为长期私钥。
[0082]
注册阶段:
[0083]
用户u需要在智能电表处注册才能使用各种服务。用户注册阶段是在安全通道中进行的,具体过程如下:
[0084]
步骤1:用户u选择自己的标识符idu、密码pwu,然后用户u生成一个随机数a和椭圆曲线公私钥对sku和pku,计算pwu=h(idu||pwu||a),然后用户u通过安全通道向服务器s提交idu和pwu;
[0085]
步骤2:服务器s接收到{idu,pwu}后,生成一个随机数b,设置{idu,b,honey_
list},并计算:
[0086][0087]
b1=h(idu‖x‖c‖b);
[0088][0089]
然后检查自己的数据库中是否存在idu和h2=(idu)。如果存在,服务器s要求用户u用另一个新身份注册,通过安全通道向用户u发送椭圆曲线相关参数{g,g,h2,l1,c},g表示椭圆曲线群,g表示素数有限域f上的椭圆曲线e的基点,h2表示哈希函数。
[0090]
步骤3:用户u收到消息后,计算:
[0091][0092]
然后从智能卡上删除c并添加p1,p2,p3。
[0093]
认证阶段:
[0094]
online时:
[0095]
用户u注册后想要访问服务器s,需要发送一些信息进行身份认证。具体过程如下:
[0096]
步骤1:用户u通过智能卡输入身份idu、密码pwu,计算:
[0097][0098]
pwu’=h(idu‖pwu‖a
*
);
[0099]
之后,sc判断是否p2?=h(pwu'‖p1),否的话退出协议,否则sc选择一个随机数),否的话退出协议,否则sc选择一个随机数并计算:
[0100][0101]
上式中:c1表示h(idu‖c)这些值级联后的hash值,c2表示h(idu‖a*‖c1)这些值级联后的hash值,k
u1
表示h(idu‖a*‖p3)这些值级联后的hash值,n表示h(idu‖c1‖c2‖b1*‖t1)这些值级联后的hash值,e1表示用ek
u1
加密,t1表示时间戳,表示用ku1进行加密;
[0102]
然后,sc通过开放通道向服务器s发送登录请求消息msg1={e1,p3}。
[0103]
步骤2:服务器s接收到msg1后计算k
s1
,并解密,并解密验证解密的p3与收到的p3是否相等,如果不相等,服务器s搜索用户列表user_list,检索是否存在idu,如果不存在,停止下一步操作,将honey_list的值加1,一旦honey_list的值超过阈值,服务器s会认为智能卡被窃取,挂起此次操作。然后,根据验证条件对接收到的时间戳t1进行验证|t
2-t1|《δt,其中δt为最大传输延迟,t2为消息msg1的接收时间。如果验证失败退出协议,验证通过,则计算:
[0104][0105]
其中表示用dks1加密(p3,idu,c1,c2,u+sku,n,t1),k
s1
表示h(idu‖p3⊕
b‖p3)这些值级联后的hash值,表示解密后得到的idu,表示解密e1(p3,idu,c1,c2,u+sku,n,t1)从中得到的c1,表示解密e1(p3,idu,c1,c2,u+sku,n,t1)从中得到的c2,t1表示时间戳;
[0106]
然后验证n
*
?=n是否成立,如果不成立退出协议,成立则服务器s选择一个随机数?=n是否成立,如果不成立退出协议,成立则服务器s选择一个随机数并产生一时间戳t3,继续计算:
[0107][0108][0109]
上式中:k
s2
表示上面串的hash值,u.g表示(u+sku)*g-pku,sks表示上面串的hash值,v表示上面串的hash值,s.g表示随机数乘椭圆曲线基点,ids表示上面串的值,id
s1
表示上面串的值,e2表示用加密后的值,表示用ek
s2
加密;
[0110]
服务器s通过开放信道向用户u发送认证请求消息msg2={e2,t3},t3表示。
[0111]
步骤3:在接收到msg2后,用户u首先根据条件验证接收到的时间戳,|t
4-t3|《δt,其中δt为最大传输延迟,如果验证有效的,用户u先计算k
u2
,然后解密,然后解密并计算下列值:
[0112][0113]
上式中:表示idu表示用户的id;
[0114]
然后验证v?=h(u.g||u.s.g||s.g||t3)是否成立,如果不成立退出协议,成立则计算:
[0115][0116]
其中k
u2
表示ku2=h(c1||c2||b1||n||t3);
[0117]
最后,服务器s和用户u都存储相同的会话密钥sks和sku,用于它们的安全通信。
[0118]
offline时:
[0119]
步骤1:服务器s产生一个随机数x和一个时间戳ts,并计算:
[0120]
x=x*g;其中x表示随机数x乘以基点;
[0121]
然后服务器s使用自己的私钥对(x,ts)进行签名生成完成签名后向用户u发送消息
[0122]
步骤2:用户u在接收到消息m1后,首先使用服务器s的公钥验证m1中的签名消息和时间戳ts,验证不成功退出协议,否则选择一个随机数进行下列计算:
[0123]
y=y*g;
[0124]
kk=y*x;
[0125]
其中y表示随机数y乘以基点,kk表示会话密钥;
[0126]
然后用户u端获取当前一个时间戳tu,并使用kk对数据进行加密en
kk
(data,tu),随后对消息进行签名生成最后向服务器s发送消息其中en
kk
表示用密钥kk对数据进行加密,data表示数据,表示使用sku对消息进行签名,sku表示用户的私钥。
[0127]
步骤3:服务器s收到消息m2后,通过使用用户u的公钥对m2中的签名消息进行验证签名,同时验证时间戳tu和h(en
kk
(data,tu)),若验证失败,退出协议,否则进行下列计算:
[0128]
kk=x*y;
[0129]
data=de
kk
(en
kk
(data,tu));
[0130]
上式中:de
kk
表示用密钥kk对数据进行解密。
[0131]
关于本发明中公式的参数含义,除了参数表1里参数具有实际的含义外,其余加解密、哈希、抑或等计算都只是无实际含义的中间结果表示,目的是为了验证通过一系列复杂计算后得到的结果和接收到的是否相等,因为这些中间计算结果需要的计算参数很多是私有的。
[0132]
关于本发明具体结构需要说明的是,本发明采用的各部件模块相互之间的连接关系是确定的、可实现的,除实施例中特殊说明的以外,其特定的连接关系可以带来相应的技术效果,并基于不依赖相应软件程序执行的前提下,解决本发明提出的技术问题,本发明中出现的部件、模块、具体元器件的型号、相互间连接方式以及,由上述技术特征带来的常规使用方法、可预期技术效果,除具体说明的以外,均属于本领域技术人员在申请日前可以获取到的专利、期刊论文、技术手册、技术词典、教科书中已公开内容,或属于本领域常规技术、公知常识等现有技术,无需赘述,使得本案提供的技术方案是清楚、完整、可实现的,并能根据该技术手段重现或获得相应的实体产品。
[0133]
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1