一种基于矩阵运算的双向认证方法
技术领域
本发明涉及一种数字认证方法,具体的说是涉及一种基于矩阵运算的双向认证方法。
背景技术
随着数字信息技术和计算机网络通讯技术的发展,如何保证私有信息保密和安全地传输得到越来越广泛地关注。目前,网络中的各种计算机系统及其应用领域都是通过数字认证来确认一个用户的合法性,从而向其提供个人数据和特定权限;反之,用户也需要对网络中的系统进行认证,从而向其更新个人数据。为此,国内外学者进行了大量有意义的研究工作,产生了许多数字认证的方法。目前大部分安全强度较高的认证系统都基于椭圆曲线算法上的离散对数问题产生的,但是椭圆曲线算法所涉及的模数运算开销很大,特别是对于一些有硬件存贮量开销限制的应用领域来说,该方法实施起来比较困难。
发明内容
本发明所解决的问题,就是针对传统的安全度高的椭圆曲线算法硬件开销大导致实施困难的问题,提出一种安全系数高且硬件开销小的基于矩阵运算的双向认证方法。
本发明解决上述技术问题所采用的技术方案是:一种基于矩阵运算的双向认证方法,其特征在于,包括以下步骤:
a.设置一对公私钥对为其中为公钥,为私钥,设置另一对公私钥对 其中为公钥,为私钥,所述和存在矩阵关系其中,分别为向量的转置矩阵,向量为已知的偏移向量;
b.将公私钥对赋予第一用户端本地保存,公私钥对赋予第二用户端本地保存;
c.第一用户端向第二用户端发送信息串Wa,所述Wa包含公钥与随机数Ra, 其中表示串联数据;
d.第二用户端接收到第一用户端的信息串Wa后,提取出Wa中的公钥的值,根据提取出的公钥的值和本地私钥的值由公式构建PMb,根据公式 构建参数PMa,然后根据参数PMa和PMb通过叠加抗碰撞杂凑函数构建第一认证码MACa和第二认证码MACb,将第二认证码MACb和信息串Wb发送到第一用户端,所述Wb包含公钥与随机数Rb,其中k、h为常数;
e.第一用户端接收到第二用户端的信息串Wb后,提取出提取Wb中的值,同样由提取出的公钥值和本地私钥由公式构建参数PMa,公式 构建PMb,然后根据参数PMa和PMb通过叠加抗碰撞杂凑函数构建第一认证码MACa和第二认证码MACb,将第一认证码MACa发送到第二用户端;
f.第一用户端将本地计算出的第二认证码MACb的值与接收到的第二认证码MACb的值进行比较,若两个值相等,则第一用户端对第二用户端的身份认证成功,若两个值不相等,则认证失败;
g.第二用户端将本地计算出的第一认证码MACa的值与接收到的第一认证码MACa的值进行比较,若两个值相等,则第二用户端对第一用户端的身份认证成功,若两个值不相等,则认证失败。
具体的,所述叠加抗碰撞杂凑函数的具体方式为:第一认证码MACa=SHA(PMa||Ra),第二认证码MACb=SHA(PMb||Rb),其中SHA()为SHA256杂凑函数。
本发明的有益效果为,具备较高的安全性,同时大大减少了硬件开销,提高了适用范围,还能够有效地进行用户识别,防止身份的假冒,从而避免私有信息的泄漏。
附图说明
图1为本发明一种基于矩阵运算的双向认证方法的认证流程图。
具体实施方式
下面结合附图和实施例,详细描述本发明的技术方案:
如图1所示,本发明所述的一种基于矩阵运算的双向认证方法的主要步骤为:
首先设置一对公私钥对为其中为公钥,为私钥,设置另一对公私钥对 其中为公钥,为私钥,所述和存在矩阵关系其中,分别为向量的转置矩阵,向量为已知的偏移向量,其中可以为1x64bit的向量,为已知的1x64bit的偏移向量,向量中的每个元素长度为2bit,取值位于0-3之间;为1x64bit的向量,向量的每个元素最大长度为128bit。
然后分别将公私钥对赋予第一用户端本地保存,公私钥对赋予第二用户端本地保存。
在进行数据认证时可以由第一用户端向第二用户端发送信息串Wa,所述Wa包含公钥与随机数Ra,其中||表示串联数据,当然也可以由第二用户端向第一用户端发起认证。
当第二用户端接收到第一用户端的信息串Wa后,首先提取出Wa中的公钥的值,然后根据提取出的公钥的值和本地私钥的值由公式构建PMb,根据公式 构建参数PMa,然后根据参数PMa和PMb通过叠加抗碰撞杂凑函数构建第一认证码MACa和第二认证码MACb,将第二认证码MACb和信息串Wb发送到第一用户端,所述Wb包含公钥与随机数Rb,其中为1x64bit的偏移向量,向量中的每个元素最大长度为88bit;k为固定数值,长度为8bit;m为固定数值,长度为72bit,m为模数,由于矩阵算法的关系,可以得出PMa=PMb。
同样第一用户端接收到第二用户端的信息串Wb后,提取出提取Wb中的值,同样由提取出的公钥值和本地私钥由公式构建参数PMa,公式 构建PMb,然后根据参数PMa和PMb通过叠加抗碰撞杂凑函数构建第一认证码MACa和第二认证码MACb,将第一认证码MACa发送到第二用户端,本步骤中同样PMa=PMb。
第一用户端将本地计算出的第二认证码MACb的值与接收到的第二认证码MACb的值进行比较,若两个值相等,则第一用户端对第二用户端的身份认证成功,若两个值不相等,则认证失败。
同样第二用户端将本地计算出的第一认证码MACa的值与接收到的第一认证码MACa的值进行比较,若两个值相等,则第二用户端对第一用户端的身份认证成功,若两个值不相等,则认证失败。
一种具体的叠加抗碰撞杂凑函数的具体方式为:第一认证码MACa=SHA(PMa||Ra),第二认证码MACb=SHA(PMb||Rb),其中SHA()为SHA256杂凑函数。
实施例:
假定用户A和用户B要进行保密的交互通信并采用了本发明所述的技术方案,用户A和用户B获得需要的相应的公私钥对,具体如下:
1、用户A本地保存公钥和私钥用户B本地保存公钥和私钥
公钥
公钥
私钥
私钥
偏移向量
2、用户A选取随机数Ra=0x89A4084099A44A38,向用户B发送信息串PMa。
3、用户B选取随机数Rb=0xA984984439A82A3A,收到Wa后,依次做如下计算:
其中,系数h=0x11A33AD136C313B54D
系统k=21
模数m=0x75A00014A7D4E963284E5810F8ABF2FB
MACa=SHA(PMa||Ra)
=SHA(3836196da6dad27dc14a74ca3c10523d89a4084099a44a38)
=0xd10d28d15afe2ed4945cee8b7d7af517a99b36cc7cb807ce5bca824c73b6bec3
MACb=SHA(PMb||Rb)
=SHA(3836196da6dad27dc14a74ca3c10523da984984439a82a3a)
=0xcd929a7f7662fb1981de3fddc6e20a3eec73d82b33087e5a2a7e8ef8c9e8903b
计算完成后,用户B向用户A发送信息串Wb和MACb。
4、用户A收到Wa后,按照与用户B相同的流程依次做计算,最后可以得出:
MACa=SHA(PMa||Ra)=0xd10d28d15afe2ed4945cee8b7d7af517a99b36cc7cb807ce5bca824c73b6bec3
MACb=SHA(PMb||Rb)=0xcd929a7f7662fb1981de3fddc6e20a3eec73d82b33087e5a2a7e8ef8c9e8903b
计算完成后,用户A向用户B发送MACa。
5、用户A比较本地计算的MACb值和接收到的用户的MACb值,结果为相等,确认用户B合法。
6、用户B比较本地计算的MACa值和接收到的用户的MACa值,结果为相等,确认用户A合法。