一种基于椭圆曲线的签名认证方法及系统转让专利

申请号 : CN201710396734.X

文献号 : CN107171807B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 朱斌吴小林胡雨彤冉亚梅朱帅吴小同陈书然

申请人 : 重庆大学

摘要 :

本发明属于体域网节点认证技术领域,提供了一种基于椭圆曲线的签名认证方法及系统,方法包括:对基于椭圆曲线的认证参数进行初始化;在节点A,随机选择作为私钥,计算公钥QA=dAP=(QAx,QAy),并存储私钥和公布(G1,G2,H,P,QA);在节点A,随机选取两个整数m,r∈ZP,计算在离线状态下的签名值σ';在节点A,恢复状态信息m和r,计算消息M的在线签名值r';根据计算得到的离线状态下的签名值σ'和消息M的在线签名值r',生成消息M的完整签名σM,并将生成的消息M的完整签名σM发送给节点B;在节点B,对节点A发送的完整签名σM,进行签名的有效认证,实现基于椭圆曲线的签名认证,而且有效减少签名和验证计算量,提升签名验证速度。

权利要求 :

1.一种基于椭圆曲线的签名认证方法,其特征在于,所述方法包括下述步骤:对基于椭圆曲线的认证参数进行初始化,定义节点A为签名节点,节点B为对所述节点A进行身份认证的认证节点;

在节点A,随机选择 作为私钥,计算公钥QA=dAP=(QAx,QAy),并存储私钥和公布(G1,G2,H,P,QA),其中QAx,QAy为节点A的横、纵坐标,G1,G2是p阶乘法循环群,H是Hash函数,P为椭圆曲线上随机选择的基点;

在节点A,随机选取两个整数m,r∈ZP,计算在离线状态下的签名值σ';

在节点A,恢复状态信息m和r,计算消息M的在线签名值r';

根据计算得到的离线状态下的签名值σ'和消息M的在线签名值r',生成消息M的完整签名σM,并将生成的消息M的完整签名σM发送给节点B;

在节点B,对所述节点A发送的完整签名σM,进行签名的有效认证;

所述在节点A,随机选取两个整数m,r∈ZP,计算在离线状态下的签名值σ'的步骤具体包括下述步骤:计算消息u的数值,其中,u=QA×m+P×r,并存储状态信息(r,m);

计算离线状态下的签名值σ',σ'=H(u);

所述在节点A,恢复状态信息m和r,计算并发送消息M的在线签名值r'的步骤具体包括下述步骤:在节点A,恢复出状态信息m和r;

计算消息M的摘要值z=H(M);

计算消息M的签名值r',其中,r'=(m-z)dA+r。

2.根据权利要求1所述的基于椭圆曲线的签名认证方法,其特征在于,所述方法还包括下述步骤:认证通过后,在节点B,计算R=m+r,并将R反馈给所述节点A。

3.根据权利要求1所述的基于椭圆曲线的签名认证方法,其特征在于,所述在节点B,对所述节点A发送的完整签名σM,进行签名的有效认证的步骤具体包括下述步骤:根据接收到的消息M,计算消息M的摘要值z=H(M);

计算消息u'的数值,u'=QA×z+P×r';

判断方程H(u')=σ'是否成立,如果σ'是关于u'的一个有效签名,则验证方程成立,那么节点B完成对节点A的身份认证;否则节点A未通过节点B的身份认证。

4.一种基于椭圆曲线的签名认证系统,其特征在于,所述系统包括:初始化模块,用于对基于椭圆曲线的认证参数进行初始化,定义节点A为签名节点,节点B为对所述节点A进行身份认证的认证节点;

密钥生成模块,用于在节点A,随机选择 作为私钥,计算公钥QA=dAP=(QAx,QAy),并存储私钥和公布(G1,G2,H,P,QA),其中QAx,QAy为节点A的横、纵坐标,G1,G2是p阶乘法循环群,H是Hash函数,P为椭圆曲线上随机选择的基点;

离线签名模块,用于在节点A,随机选取两个整数m,r∈ZP,计算在离线状态下的签名值σ';

在线签名模块,用于在节点A,恢复状态信息m和r,计算消息M的在线签名值r';

完整签名生成模块,用于根据计算得到的离线状态下的签名值σ'和消息M的在线签名值r',生成消息M的完整签名σM;

发送模块,用于将生成的消息M的完整签名σM发送给节点B;

认证模块,用于在节点B,对所述节点A发送的完整签名σM,进行签名的有效认证;

所述离线签名模块具体包括:

状态信息存储模块,用于存储状态信息(r,m);

第一计算数值模块,用于计算消息u的数值,其中,u=QA×m+P×r;

离线签名值计算模块,用于计算离线状态下的签名值σ',σ'=H(u);

所述在线签名模块具体包括:

状态信息恢复模块,用于在节点A,恢复出状态信息m和r;

第一摘要值计算模块,计算消息M的摘要值z=H(M);

在线签名值计算模块,用于计算消息M的签名值r',其中,r'=(m-z)dA+r。

5.根据权利要求4所述的基于椭圆曲线的签名认证系统,其特征在于,所述系统还包括:反馈模块,用于认证通过后,在节点B,计算R=m+r,并将R反馈给所述节点A。

6.根据权利要求4所述的基于椭圆曲线的签名认证系统,其特征在于,所述认证模块具体包括:第二摘要值计算模块,用于根据接收到的消息M,计算消息M的摘要值z=H(M);

第二计算数值模块,用于计算消息u'的数值,u'=QA×z+P×r';

验证判断模块,用于判断方程H(u')=σ'是否成立,如果σ'是关于u'的一个有效签名,则验证方程成立,那么节点B完成对节点A的身份认证;否则节点A未通过节点B的身份认证。

说明书 :

一种基于椭圆曲线的签名认证方法及系统

技术领域

[0001] 本发明涉及体域网节点认证技术领域,具体涉及一种基于椭圆曲线的签名认证方法及系统。

背景技术

[0002] 无线体域网是由一些放置在人体表面或者植入人体内部的传感器以及一些可移动终端所组成的以人体为中心的网络。随着对无线体域网的深入研究,无线体域网的安全问题越来越受到人们的重视,身份认证在信息安全中具有特殊的作用,大多数情况下是与密钥协商等方法结合起来作为一个大的整体信息保护方案被提出。身份认证是身份识别(identification)和身份认证(authentication)的统称,是用来验明用户是否具备所请求资源的使用和存储权,即验证查核用户身份的过程。身份认证中最为关键的点是可以准确无误地将对方辨认出来,在体域网系统当中,需要对节点之间的身份进行相互的认证。节点间的身份认证是体域网生理信息安全传输的首要保障,一旦节点间的身份认证体系被攻破,那么整个传输系统的所有安全措施便将形同虚设。
[0003] 椭圆曲线密码机制作为很重要的一种密码机制,近来受到广大研究者的热捧,由其衍生出的椭圆曲线签名算法具有广阔的应用前景,但是传统的基于椭圆曲线的签名认证算法存在如下缺陷:
[0004] (一)在签名方案中,发送节点不能否认自己曾经发送过的消息,但是对接收节点却没有任何约束,这样就可能存在两种情况:
[0005] (1)接收节点已经阅读了消息,事后却否认自己曾接收过该消息。例如接收节点接收并阅读到了一条消息但是却将其丢失并否认自己曾接收过该消息;
[0006] (2)接收节点故意拖延阅读时间,以作出对自己更有利的决定。例如发送节点在上午10点之前将信息发送给接收节点,而接收节点此时因为某些原因没有实时处理,10点以后才开始处理信息,结果事后反而指责发送节点并未实时发送签名信息从而完成认证。
[0007] (二)在传统的签名值的计算中,不仅有数乘运算和加法运算,同时还有求逆运算,对于大整数求逆是比较耗时的一种运算,求逆运算大大提高了整个签名算法的耗时。

发明内容

[0008] 针对现有技术中的缺陷,本发明提供有效减少签名和验证计算量,提升签名验证速度的基于椭圆曲线的签名认证方法。
[0009] 本发明是这样实现的,一种基于椭圆曲线的签名认证方法,所述方法包括下述步骤:
[0010] 对基于椭圆曲线的认证参数进行初始化,定义节点A为签名节点,节点B为对所述节点A进行身份认证的认证节点;
[0011] 在节点A,随机选择 作为私钥,计算公钥QA=dAP=(QAx,QAy),并存储私钥和公布(G1,G2,H,P,QA),其中QAx,QAy为节点A的横、纵坐标,G1,G2是p阶乘法循环群,H是Hash函数,P为椭圆曲线上随机选择的基点;
[0012] 在节点A,随机选取两个整数m,r∈ZP,计算在离线状态下的签名值σ';
[0013] 在节点A,恢复状态信息m和r,计算消息M的在线签名值r';
[0014] 根据计算得到的离线状态下的签名值σ'和消息M的在线签名值r',生成消息M的完整签名σM,并将生成的消息M的完整签名σM发送给节点B;
[0015] 在节点B,对所述节点A发送的完整签名σM,进行签名的有效认证。
[0016] 作为一种改进的方案,所述方法还包括下述步骤:
[0017] 认证通过后,在节点B,计算R=m+r,并将R反馈给所述节点A。
[0018] 作为一种改进的方案,所述在节点A,随机选取两个整数m,r∈ZP,计算在离线状态下的签名值σ'的步骤具体包括下述步骤:
[0019] 计算消息u的数值,其中,u=QA×m+P×r,并存储状态信息(r,m);
[0020] 计算离线状态下的签名值σ',σ'=H(u)。
[0021] 作为一种改进的方案,所述在节点A,恢复状态信息m和r,计算并发送消息M的在线签名值r'的步骤具体包括下述步骤:
[0022] 在节点A,恢复出状态信息m和r;
[0023] 计算消息M的摘要值z=H(M);
[0024] 计算消息M的签名值r',其中,r'=(m-z)dA+r。
[0025] 作为一种改进的方案,所述在节点B,对所述节点A发送的完整签名σM,进行签名的有效认证的步骤具体包括下述步骤:
[0026] 根据接收到的消息M,计算消息M的摘要值z=H(M);
[0027] 计算消息u'的数值,u'=QA×z+P×r';
[0028] 判断方程H(u')=σ'是否成立,如果σ'是关于u'的一个有效签名,则验证方程成立,那么节点B完成对节点A的身份认证;否则节点A未通过节点B的身份认证。
[0029] 本发明的另一目的在于提供一种基于椭圆曲线的签名认证系统,所述系统包括:
[0030] 初始化模块,用于对基于椭圆曲线的认证参数进行初始化,定义节点A为签名节点,节点B为对所述节点A进行身份认证的认证节点;
[0031] 密钥生成模块,用于在节点A,随机选择 作为私钥,计算公钥QA=dAP=(QAx,QAy),并存储私钥和公布(G1,G2,H,P,QA),其中QAx,QAy为节点A的横、纵坐标,G1,G2是p阶乘法循环群,H是Hash函数,P为椭圆曲线上随机选择的基点;
[0032] 离线签名模块,用于在节点A,随机选取两个整数m,r∈ZP,计算在离线状态下的签名值σ';
[0033] 在线签名模块,用于在节点A,恢复状态信息m和r,计算消息M的在线签名值r';
[0034] 完整签名生成模块,用于根据计算得到的离线状态下的签名值σ'和消息M的在线签名值r',生成消息M的完整签名σM;
[0035] 发送模块,用于将生成的消息M的完整签名σM发送给节点B;
[0036] 认证模块,用于在节点B,对所述节点A发送的完整签名σM,进行签名的有效认证。
[0037] 作为一种改进的方案,所述系统还包括:
[0038] 反馈模块,用于认证通过后,在节点B,计算R=m+r,并将R反馈给所述节点A。
[0039] 作为一种改进的方案,所述离线签名模块具体包括:
[0040] 状态信息存储模块,用于存储状态信息(r,m);
[0041] 第一计算数值模块,用于计算消息u的数值,其中,u=QA×m+P×r;
[0042] 离线签名值计算模块,用于计算离线状态下的签名值σ',σ'=H(u)。
[0043] 作为一种改进的方案,所述在线签名模块具体包括:
[0044] 状态信息恢复模块,用于在节点A,恢复出状态信息m和r;
[0045] 第一摘要值计算模块,用于利用消息摘要算法,计算消息M的摘要值z=H(M);
[0046] 在线签名值计算模块,用于计算消息M的签名值r',其中r'=(m-z)dA+r。
[0047] 作为一种改进的方案,所述认证模块具体包括:
[0048] 第二摘要值计算模块,用于根据接收到的消息M,计算消息M的摘要值z=H(M);
[0049] 第二计算数值模块,用于计算消息u'的数值,u'=QA×z+P×r';
[0050] 验证判断模块,用于判断方程H(u')=σ'是否成立,如果σ'是关于u'的一个有效签名,则验证方程成立,那么节点B完成对节点A的身份认证;否则节点A未通过节点B的身份认证。
[0051] 在本发明实施例中,对基于椭圆曲线的认证参数进行初始化;在节点A,随机选择作为私钥,计算公钥QA=dAP=(QAx,QAy),并存储私钥和公布(G1,G2,H,P,QA);在节点A,随机选取两个整数m,r∈ZP,计算在离线状态下的签名值σ';在节点A,恢复状态信息m和r,计算消息M的在线签名值r';根据计算得到的离线状态下的签名值σ'和消息M的在线签名值r',生成消息M的完整签名σM,并将生成的消息M的完整签名σM发送给节点B;在节点B,对节点A发送的完整签名σM,进行签名的有效认证,实现基于椭圆曲线的签名认真,而且有效减少签名和验证计算量,提升签名验证速度。

附图说明

[0052] 为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
[0053] 图1为本发明提供的基于椭圆曲线的签名认证方法的实现流程图;
[0054] 图2为本发明提供的在节点A,随机选取两个整数m,r∈ZP,计算在离线状态下的签名值σ'的实现流程图;
[0055] 图3为本发明提供的在节点A,恢复状态信息m和r,计算并发送消息M的在线签名值r'的实现流程图;
[0056] 图4为本发明提供的在节点B,对所述节点A发送的完整签名σM,进行签名的有效认证的实现流程图;
[0057] 图5为本发明提供的基于椭圆曲线的签名认证系统的结构框图。

具体实施方式

[0058] 下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。
[0059] 图1示出了本发明提供的基于椭圆曲线的签名认证方法的实现流程图,其具体包括下述步骤:
[0060] 在步骤S101中,对基于椭圆曲线的认证参数进行初始化,定义节点A为签名节点,节点B为对所述节点A进行身份认证的认证节点。
[0061] 在步骤S102中,在节点A,随机选择 作为私钥,计算公钥QA=dAP=(QAx,QAy),并存储私钥和公布(G1,G2,H,P,QA),其中QAx,QAy为节点A的横、纵坐标,G1,G2是p阶乘法循环群,H是Hash函数,P为椭圆曲线上随机选择的基点。
[0062] 在步骤S103中,在节点A,随机选取两个整数m,r∈ZP,计算在离线状态下的签名值σ'。
[0063] 在步骤S104中,在节点A,恢复状态信息m和r,计算消息M的在线签名值r'。
[0064] 在步骤S105中,根据计算得到的离线状态下的签名值σ'和消息M的在线签名值r',生成消息M的完整签名σM,并将生成的消息M的完整签名σM发送给节点B。
[0065] 在该步骤中,当计算得到离线状态下的签名值σ'和消息M的在线签名值r'后,加上属于节点A的签名许可凭证Mw,最后关于消息M的完整签名是σM=(σ',r',Mw),同时,使用混合加密算法中的共享密钥加密传输状态信息(r,m)给节点B。
[0066] 在步骤S106中,在节点B,对所述节点A发送的完整签名σM,进行签名的有效认证。
[0067] 在该步骤中,认证通过后,在节点B,计算R=m+r,并将R反馈给所述节点A。
[0068] 其中,上述步骤S101,对基于椭圆曲线的认证参数进行初始化的过程为:
[0069] 初始化主要是完成参数的初始化以及系统的准备工作。设Ep(a,b)是定义在有限域Fq上的一条安全椭圆曲线,该曲线Ep(a,b)上的有理点构成的群的阶能够被一个大的素数n整除。在曲线上随机选取一个点作为基点P,以P作为生成元对椭圆曲线上的加法运算构成了一个循环子群

,其阶为n,并且满足条件nP=O,O表示一个无穷远点。基点P作为公共信息被公开。设(1l)→(Q,G1,G2,e),其中G1,G2都是p阶乘法循环群。同时设单向Hash函数H:{0,1}*→G2。每个参与身份认证的节点都有一个MAC地址和一个唯一的身份标识符ID,这些信息代表了需要认证节点的身份信息。节点A为签名者,B是对节点A进行身份认证的节点。M是一个消息空间,表示原生理信息,M={0,1}*,Mw表示节点A的签名许可凭证,其中包含节点A的身份信息(MAC和ID信息)、公钥信息等内容。

[0070] 图2示出了本发明提供的在节点A,随机选取两个整数m,r∈ZP,计算在离线状态下的签名值σ'的实现流程图,其具体包括下述步骤:
[0071] 在步骤S201中,计算消息u的数值,其中,u=QA×m+P×r,并存储状态信息(r,m)。
[0072] 在步骤S202中,计算离线状态下的签名值σ',σ'=H(u)。
[0073] 其中,对于签名的计算过程,大部分计算量是在离线签名过程实现。
[0074] 图3示出了本发明提供的在节点A,恢复状态信息m和r,计算并发送消息M的在线签名值r'的实现流程图,其具体包括下述步骤:
[0075] 在步骤S301中,在节点A,恢复出状态信息m和r。
[0076] 在步骤S302中,计算消息M的摘要值z=H(M)。
[0077] 在步骤S303中,计算消息M的签名值r',其中r'=(m-z)dA+r。
[0078] 相对图2所示的离线签名计算过程,该在线签名计算量较小,从而大大提升了签名认证时间。
[0079] 图4示出了本发明提供的在节点B,对所述节点A发送的完整签名σM,进行签名的有效认证的实现流程图,其具体包括下述步骤:
[0080] 在步骤S401中,根据接收到的消息M,计算消息M的摘要值z=H(M)。
[0081] 在步骤S402中,计算消息u'的数值,u'=QA×z+P×r'。
[0082] 在步骤S403中,判断方程H(u')=σ'是否成立,如果σ'是关于u'的一个有效签名,则验证方程成立,那么节点B完成对节点A的身份认证;否则节点A未通过节点B的身份认证。
[0083] 在本发明实施例中,在未确定签名消息之前做离线签名运算;在确定要加密的消息和身份私钥之后做在线签名计算,该方案使得在线阶段消耗较少的资源,而离线阶段先进行部分计算,因此,该方案更适合计算能力有限的体域网节点。
[0084] 图5示出了本发明提供的基于椭圆曲线的签名认证系统的结构框图,为了便于说明,图中仅给出了与本发明实施例相关的部分。
[0085] 初始化模块11对基于椭圆曲线的认证参数进行初始化,定义节点A为签名节点,节点B为对所述节点A进行身份认证的认证节点;密钥生成模块12在节点A,随机选择作为私钥,计算公钥QA=dAP=(QAx,QAy),并存储私钥和公布(G1,G2,H,P,QA),其中QAx,QAy为节点A的横、纵坐标,G1,G2是p阶乘法循环群,H是Hash函数,P为椭圆曲线上随机选择的基点;离线签名模块13在节点A,随机选取两个整数m,r∈ZP,计算在离线状态下的签名值σ';在线签名模块14在节点A,恢复状态信息m和r,计算消息M的在线签名值r';完整签名生成模块15根据计算得到的离线状态下的签名值σ'和消息M的在线签名值r',生成消息M的完整签名σM;发送模块16将生成的消息M的完整签名σM发送给节点B;认证模块17在节点B,对所述节点A发送的完整签名σM,进行签名的有效认证。
[0086] 在该实施例中,反馈模块18认证通过后,在节点B,计算R=m+r,并将R反馈给所述节点A。
[0087] 在该实施例中,所述离线签名模块13具体包括:
[0088] 状态信息存储模块19存储状态信息(r,m);
[0089] 第一计算数值模块20计算消息u的数值,其中,u=QA×m+P×r;
[0090] 离线签名值计算模块21计算离线状态下的签名值σ',σ'=H(u),其中,H为Hash函数。
[0091] 在该实施例中,在线签名模块14具体包括:
[0092] 状态信息恢复模块22在节点A,恢复出状态信息m和r;
[0093] 第一摘要值计算模块23,计算消息M的摘要值z=H(M);
[0094] 在线签名值计算模块24计算消息M的签名值r',其中,r'=(m-z)dA+r。
[0095] 在该实施例中,认证模块17具体包括:
[0096] 第二摘要值计算模块25根据接收到的消息M,计算消息M的摘要值z=H(M);
[0097] 第二计算数值模块26计算消息u'的数值,u'=QA×z+P×r';
[0098] 验证判断模块27判断方程H(u')=σ'是否成立,如果σ'是关于u'的一个有效签名,则验证方程成立,那么节点B完成对节点A的身份认证;否则节点A未通过节点B的身份认证。
[0099] 在该实施例中,上述各个模块的功能内容如上述方法实施例所记载,在此不再赘述。
[0100] 在本发明实施例中,对基于椭圆曲线的认证参数进行初始化;在节点A,随机选择作为私钥,计算公钥QA=dAP=(QAx,QAy),并存储私钥和公布(G1,G2,H,P,QA);在节点A,随机选取两个整数m,r∈ZP,计算在离线状态下的签名值σ';在节点A,恢复状态信息m和r,计算消息M的在线签名值r';根据计算得到的离线状态下的签名值σ'和消息M的在线签名值r',生成消息M的完整签名σM,并将生成的消息M的完整签名σM发送给节点B;在节点B,对节点A发送的完整签名σM,进行签名的有效认证,实现基于椭圆曲线的签名认真,而且有效减少签名和验证计算量,提升签名验证速度。
[0101] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。