签名验证方法、装置、计算机设备和存储介质
技术领域
本申请涉及信息安全技术领域,特别涉及一种签名验证方法、装置、计算机设备和存储介质。
背景技术
随着网络信息技术应用的日渐普及,网络信息安全越来越成为一个倍受关注的课题。在解决网络信息安全问题的所有机制与方案当中,用户身份认证通常是最基本的一步。
物联网是新一代网络信息技术的重要组成部分,面临着严峻的网络信息安全问题,身份认证是信息安全的第一道防线,可以通过验证签名的有效性来进行身份认证。然而,由于物联网应用环境中的CPU运算能力有限、存储空间有限且网络带宽有限等等,因此在物联网应用场景应用传统PKI体系进行签名验证时存在诸多弊端,至少包括签名验证效率低。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种签名验证方法、装置、计算机设备和存储介质,以解决现有技术中签名验证效率低的问题。
本申请实施例提供了一种签名验证方法,包括:第一用户端生成第一部分公钥和第一部分私钥;第一用户端向证书授权中心发送证书请求,其中,证书请求中携带有第一用户端的身份信息和第一部分公钥;第一用户端接收证书授权中心响应于证书请求返回的第二部分私钥和隐式证书,其中,第二部分私钥和隐式证书由证书授权中心根据身份信息和第一部分公钥生成;第一用户端根据第一部分私钥和第二部分私钥生成第一用户端的完整私钥;第一用户端根据完整私钥生成签名,并将隐式证书和签名发送至第二用户端,使得第二用户端根据隐式证书验证签名的有效性。
在一个实施例中,第一用户端生成第一部分公钥和第一部分私钥,包括:获取椭圆曲线相关参数;根据椭圆曲线相关参数生成第一部分公钥和第一部分私钥。
在一个实施例中,证书授权中心根据身份信息和第一部分公钥生成第二部分私钥和隐式证书,包括:接收第一用户端发送的证书请求,其中,证书请求中携带有证书相关参数、第一用户端的身份信息和第一部分公钥;生成椭圆曲线相关参数和哈希函数;根据椭圆曲线相关参数生成临时公钥和临时私钥;根据第一部分公钥和临时公钥生成第二部分公钥,根据证书相关参数构造证书信息,并根据身份信息、第二部分公钥和证书信息生成隐式证书;根据系统公钥、系统私钥、证书信息、椭圆曲线相关参数、哈希函数、身份信息、第二部分公钥和临时私钥生成第二部分私钥,其中,系统私钥为证书授权中心的私钥,系统公钥为证书授权中心的公钥。
在一个实施例中,第一用户端根据第一部分私钥和第二部分私钥生成第一用户端的完整私钥,包括:根据第一部分私钥、第二部分私钥和椭圆曲线相关参数生成完整私钥。
在一个实施例中,第二用户端根据隐式证书验证签名的有效性,包括:接收第一用户端发送的隐式证书和签名,其中,隐式证书中携带有第一用户端的身份信息、证书信息和第二部分公钥;获取哈希函数、椭圆曲线相关参数以及系统公钥;根据证书信息验证隐式证书的有效性;在验证隐式证书有效的情况下,根据哈希函数、系统公钥、身份信息、第二部分公钥和证书信息生成第一用户端的完整公钥;根据完整公钥验证签名的有效性,并将验证结果返回至第一用户端。
在一个实施例中,第一用户端根据椭圆曲线相关参数生成第一部分公钥和第一部分私钥,包括按照以下公式生成第一部分公钥:
X=x·G;
其中,X为第一部分公钥,x为第一部分私钥,x∈[1,q-1],G为椭圆曲线E上的基点,q为G的阶,E为定义在有限域Fp上的椭圆曲线,p为大素数,Fp为包含p个元素的有限域,p、q和G为椭圆曲线相关参数。
在一个实施例中,证书授权中心根据身份信息和第一部分公钥生成第二部分私钥,包括按照以下公式生成第二部分私钥:
y=(l·m+w)modq;
其中,y为第二部分私钥,m为系统私钥,w为临时私钥,w∈[1,q-1],q为G的阶,G为椭圆曲线E上的基点,E为定义在有限域Fp上的椭圆曲线,p为大素数,Fp为包含p个元素的有限域,p、q和G为椭圆曲线相关参数,l=H(Mx||My||ID||Yx||Yy||Cif),其中,H为哈希函数,Mx、My为M的坐标,Yx、Yy为Y的坐标,其中,M为系统公钥,Y为第二部分公钥,ID为身份信息,Cif为证书信息,其中,Y=X+W,X为第一部分公钥,W为临时公钥,其中,W=w·G。
在一个实施例中,第一用户端根据第一部分私钥和第二部分私钥生成第一用户端的完整私钥,包括按照以下公式生成完整私钥:
s=(x+y)modq;
其中,s为完整私钥,x为第一部分私钥,y为第二部分私钥,q为G的阶,G为椭圆曲线E上的基点,E为定义在有限域Fp上的椭圆曲线,p为大素数,Fp为包含p个元素的有限域,p、q和G为椭圆曲线相关参数。
在一个实施例中,第二用户端根据哈希函数、系统公钥、身份信息、第二部分公钥和证书信息生成第一用户端的完整公钥,包括按照以下公式生成完整公钥:
P=l·M+Y;
其中,P为完整公钥,M为系统公钥,Y为第二部分公钥,l=H(Mx||My||ID||Yx||Yy||Cif),其中,H为哈希函数,Mx、My为M的坐标,Yx、Yy为Y的坐标,ID为身份信息,Cif为证书信息,ID为身份信息。
本申请实施例还提供了一种签名验证装置,位于第一用户端中,包括:第一生成模块,用于生成第一部分公钥和第一部分私钥;发送模块,用于向证书授权中心发送证书请求,其中,证书请求中携带有第一用户端的身份信息和第一部分公钥;接收模块,用于接收证书授权中心响应于证书请求返回的第二部分私钥和隐式证书,其中,第二部分私钥和隐式证书由证书授权中心根据身份信息和第一部分公钥生成;第二生成模块,用于根据第一部分私钥和第二部分私钥生成第一用户端的完整私钥;签名模块,用于根据完整私钥生成签名,并将隐式证书和签名发送至第二用户端,使得第二用户端根据隐式证书验证签名的有效性。
本申请实施例还提供一种计算机设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述任意实施例中所述的签名验证方法的步骤。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现上述任意实施例中所述的签名验证方法的步骤。
在本申请实施例中,提供了一种签名验证方法,第一用户端生成第一部分公钥和第一部分私钥,并向证书授权中心发送携带有第一用户端的身份信息和第一部分公钥的证书请求;证书授权中心响应于证书请求根据身份信息和第一部分公钥生成第二部分私钥和隐式证书,并将生成的第二部分私钥和隐式证书发送至第一用户端;第一用户端根据第一部分私钥和第二部分私钥生成第一用户端的完整私钥,根据完整私钥生成签名,并将隐式证书和签名发送至第二用户端,使得第二用户端根据隐式证书验证签名的有效性。上述方案中,由于隐式证书是基于第一部分公钥生成的,生成的隐式证书中仅包含部分公钥,因此可以有效减小证书长度,使得所占用的存储空间更小并且在物联网带宽资源受限的场景下传输效率更高;进一步地,由于隐式证书是基于身份信息生成的,因此更适用于物联网场景下的身份管理;更进一步地,由于相比于显式证书,隐式证书中不包含证书授权中心对证书属性的签名,在第二用户端根据隐式证书验证签名有效性时可以减少一次验签时间,因而在物联网计算能力有限的场景下可提高验证速度。通过上述方案解决了现有的签名验证的效率低下的技术问题,达到了有效提升验证效率、降低对设备和网络性能的要求、并且便于进行身份管理的技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,并不构成对本申请的限定。在附图中:
图1示出了本申请一实施例中的签名验证方法的应用场景的示意图;
图2示出了本申请一实施例中的签名验证方法的流程图;
图3示出了本申请一实施例中的签名验证方法的顺序图;
图4示出了本申请一实施例中的签名验证装置的示意图;
图5示出了本申请一实施例中的计算机设备的示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本申请的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本申请,而并非以任何方式限制本申请的范围。相反,提供这些实施方式是为了使本申请公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域的技术人员知道,本申请的实施方式可以实现为一种系统、装置设备、方法或计算机程序产品。因此,本申请公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
考虑到物联网应用环境中的CPU运算能力有限、存储空间有限且网络带宽有限等等,在物联网应用场景应用传统PKI体系进行签名验证时存在诸多弊端,对此,发明人经过研究发现可以通过生成隐式证书并根据隐式证书进行签名验证可以有效提高物联网应用场景下的签名验证速度。
请参考图1,示出了本申请一实施例中的签名验证方法的应用场景的示意图。在图1中,示意性地示出了证书授权中心、第一用户端和第二用户端,其中,证书授权中心可以用于生成签名算法所需的参数、哈希函数,并且证书授权中心中存储有系统公钥和系统私钥。第一用户端可以生成第一用户端的第一部分公钥和第一部分私钥,并向证书授权中心发送证书请求,该证书请求中携带有第一部分公钥和第一用户端的身份信息。响应于接收到的证书请求,证书授权中心根据证书请求中的第一部分公钥和身份信息生成隐式证书和第一用户端的第二部分私钥,并将生成的隐式证书和第二部分私钥返回至第一用户端。第一用户端可以根据第一部分私钥和第二部分私钥生成完整私钥,根据完整私钥生成签名,并将隐式证书和所述签名发送至第二用户端。第二用户端可以根据接收到的隐式证书验证签名的有效性,从而实现身份认证。上述应用场景中,证书授权中心根据第一部分公钥和身份信息生成隐式证书,能够降低证书存储空间并且同时节约带宽,此外,由于隐式证书中不包含证书授权中心对证书属性的签名,因此能够减少数字签名验证次数,提高验证速度。
其中,上述证书授权中心可以是单一的服务器,也可以是服务器集群,或者是云服务器等都可以,只要可以生成签名算法所需的参数以及隐式证书即可,具体的组成形成本申请不作限定。上述第一用户端和第二用户端可以是台式电脑、笔记本、手机终端、PDA等,只要是可以建立通信连接并具备计算能力的设备都可以,对于第一用户端和第二用户端的呈现形成,本申请也不作限定。
本申请实施例提供了一种签名验证方法,图2示出了本申请一实施例中签名验证方法的流程图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本申请实施例描述及附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构连接进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至分布式处理环境)。
如图2所示,本申请一种实施例提供的签名验证方法可以包括以下步骤:
步骤S201,第一用户端生成第一部分公钥和第一部分私钥。
步骤S202,第一用户端向证书授权中心发送证书请求。
第一用户端向证书授权中心发送证书请求,以使得证书授权中心为第一用户端生成隐式证书。其中,证书请求中携带有第一用户端的身份信息和第一部分公钥。在发送证书请求之前,第一用户端生成第一部分公钥和第一部分私钥。其中,身份信息可以包括但不限于以下至少之一:姓名、住址、邮箱地址和手机号码等信息。
步骤S203,第一用户端接收证书授权中心响应于证书请求返回的第二部分私钥和隐式证书,其中,第二部分私钥和隐式证书由证书授权中心根据身份信息和第一部分公钥生成。
具体地,证书授权中心响应于接收到的证书请求,根据证书请求中携带的身份信息和第一部分公钥生成第一用户端的第二部分私钥和隐式证书,并将生成的第二部分私钥和隐式证书发送至第一用户端。
步骤S204,第一用户端根据第一部分私钥和第二部分私钥生成第一用户端的完整私钥。
步骤S205,第一用户端根据完整私钥生成签名,并将隐式证书和签名发送至第二用户端,使得第二用户端根据隐式证书验证签名的有效性。
具体地,在接收到证书授权中心发送的第二部分私钥之后,第一用户端可以根据证书授权中心生成的第二部分私钥和第一用户端生成的第一部分私钥生成第一用户端的完整私钥。在生成完整私钥之后,第一用户端可以根据完整私钥生成签名,并将生成的签名和隐式证书发送至第二用户端。第二用户端接收到隐式证书和签名之后,可以根据隐式证书验证签名的有效性,从而实现身份认证。
上述签名验证方法中,由于隐式证书是基于第一部分公钥生成的,生成的隐式证书中仅包含部分公钥,因此可以有效减小证书长度,使得所占用的存储空间更小并且在物联网带宽资源受限的场景下传输效率更高;进一步地,由于隐式证书是基于身份信息生成的,因此更适用于物联网场景下的身份管理;更进一步地,由于相比于显式证书,隐式证书中不包含证书授权中心对证书属性的签名,在第二用户端根据隐式证书验证签名有效性时可以减少一次验签时间,因而在物联网计算能力有限的场景下可提高验证速度。通过上述方案解决了现有的签名验证的效率低下的技术问题,达到了有效提升验证效率、降低对设备和网络性能的要求、并且便于进行身份管理的技术效果。
进一步地,在本申请一些实施例中,第一用户端生成第一部分公钥和第一部分私钥,可以包括:获取椭圆曲线相关参数;根据椭圆曲线相关参数生成第一部分公钥和第一部分私钥。具体地,第一用户端可以从证书授权中心获取椭圆曲线相关参数。通过上述方式,第一用户端可以生成第一部分公钥和第一部分私钥。
进一步地,在本申请一些实施例中,证书授权中心根据身份信息和第一部分公钥生成第二部分私钥和隐式证书,可以包括:接收第一用户端发送的证书请求,其中,证书请求中携带有证书相关参数、第一用户端的身份信息和第一部分公钥;生成椭圆曲线相关参数和哈希函数;根据椭圆曲线相关参数生成临时公钥和临时私钥;根据第一部分公钥和临时公钥生成第二部分公钥,根据证书相关参数构造证书信息,并根据身份信息、第二部分公钥和证书信息生成隐式证书;根据系统公钥、系统私钥、证书信息、椭圆曲线相关参数、哈希函数、身份信息、第二部分公钥和临时私钥生成第二部分私钥,其中,系统私钥为证书授权中心的私钥,系统公钥为证书授权中心的公钥。
具体地,证书授权中心接收第一用户端发送的证书请求,其中,证书请求中携带有证书相关参数、身份信息和第一部分公钥。其中,证书相关参数可以包括但不限于以下至少之一:有效期、地理位置、应用列表等。证书授权中心生成椭圆曲线相关参数,根据椭圆曲线相关参数生成临时公钥和临时私钥,根据第一部分公钥和临时公钥生成第二部分公钥。证书授权中心根据证书相关参数构造证书信息。在一个实施例中,证书授权中心可以通过对证书相关参数进行编码生成证明信息。证书授权中心可以根据身份信息、第二部分公钥和证书信息生成隐式证书。证书授权中心存储有自身的系统公钥和系统私钥,其中,系统公钥包含在证书授权中心的证书中。证书授权中心根据系统公钥、系统私钥、证书信息、椭圆曲线相关参数、哈希函数、身份信息、第二部分公钥和临时私钥生成第二部分私钥,并将生成的隐式证书和第二部分私钥返回至第一用户端。通过上述方式,可以实现由证书授权中心基于第一用户端的身份信息和第一部分公钥生成隐式证书和第二部分私钥。
进一步地,在第一用户端接收到证书授权中心返回的第二部分私钥之后,可以根据第一部分私钥、第二部分私钥和椭圆曲线相关参数生成第一用户端的完整私钥。因此,在本申请一些实施例中,第一用户端根据第一部分私钥和第二部分私钥生成第一用户端的完整私钥,可以包括:根据第一部分私钥、第二部分私钥和椭圆曲线相关参数生成完整私钥。通过上述方式可以生成第一用户端的完整私钥,以便后续根据第一用户端的完整私钥生成签名。
进一步,在本申请一些实施例中,第二用户端根据隐式证书验证签名的有效性,可以包括:接收第一用户端发送的隐式证书和签名;获取哈希函数、椭圆曲线相关参数以及系统公钥;根据证书信息验证隐式证书的有效性;在验证隐式证书有效的情况下,根据哈希函数、系统公钥、身份信息、第二部分公钥和证书信息生成第一用户端的完整公钥;根据完整公钥验证签名的有效性,并将验证结果返回至第一用户端。
其中,隐式证书中携带有第一用户端的身份信息、证书信息和第二部分公钥。第二用户端可以从证书授权中心获取哈希函数、椭圆曲线相关参数和系统公钥。在第二用户端接收到第一用户端发送的隐式证书之后,可以根据隐式证书中的证书信息来验证隐式证书是否有效,例如,可以包括:验证有效期的有效性、验证地理位置的有效性等等。在验证隐式证书有效的情况下,第二用户端可以根据哈希函数、系统公钥、隐式证书中的身份信息、第二部分公钥和证书信息生成第一用户端的完整公钥。其中,生成完整公钥和验证签名的有效性可以联合执行以达到快速验证的目的。第二用户端根据生成的完整公钥验证签名的有效性,并将验证结果返回至第一用户端。通过上述方式,使得第二用户端可以根据隐式证书和第二部分公钥生成第一用户端的完整公钥,并根据完整公钥验证签名的有效性,从而实现身份验证。
考虑到上述签名验证方法可以基于SM2签名算法,在第一用户端获取椭圆曲线相关参数之后,可以根据椭圆曲线相关参数利用SM2签名算法生成第一部分公钥和第一部分私钥。因此,在本申请一些实施例中,第一用户端根据椭圆曲线相关参数生成第一部分公钥和第一部分私钥,可以包括按照以下公式生成第一部分公钥:
X=x·G;
其中,X为第一部分公钥,x为第一部分私钥,x∈[1,q-1],G为椭圆曲线E上的基点,q为G的阶,E为定义在有限域Fp上的椭圆曲线,p为大素数,Fp为包含p个元素的有限域,p、q和G为椭圆曲线相关参数。
进一步地,在本申请一些实施例中,证书授权中心根据身份信息和第一部分公钥生成第二部分私钥,可以包括按照以下公式生成第二部分私钥:
y=(l·m+w)modq;
其中,y为第二部分私钥,m为系统私钥,w为临时私钥,q为G的阶,G为椭圆曲线E上的基点,E为定义在有限域Fp上的椭圆曲线,p为大素数,Fp为包含p个元素的有限域,p、q和G为椭圆曲线相关参数,l=H(Mx||My||ID||Yx||Yy||Cif),其中,H为哈希函数,Mx、My为M的坐标,Yx、Yy为Y的坐标,其中,M为系统公钥,Y为第二部分公钥,ID为身份信息,Cif为证书信息。其中,临时私钥可以为:w∈[1,q-1]。第二部分公钥Y可以按照以下公式生成:Y=X+W,其中,X为第一部分公钥,W为临时公钥。临时公钥W可以按照以下公式生成:W=w·G。其中,H可以为SM3哈希函数,通常与SM2签名算法配套使用。
进一步地,在本申请一些实施例中,第一用户端根据第一部分私钥和第二部分私钥生成第一用户端的完整私钥,可以包括按照以下公式生成完整私钥:
s=(x+y)modq;
其中,s为完整私钥,x为第一部分私钥,y为第二部分私钥,q为G的阶,G为椭圆曲线E上的基点,E为定义在有限域Fp上的椭圆曲线,p为大素数,Fp为包含p个元素的有限域,p、q和G为椭圆曲线相关参数。
进一步地,在本申请一些实施例中,第二用户端根据哈希函数、系统公钥、身份信息、第二部分公钥和证书信息生成第一用户端的完整公钥,可以包括按照以下公式生成完整公钥:
P=l·M+Y;
其中,P为完整公钥,M为系统公钥,Y为第二部分公钥,l=H(Mx||My||ID||Yx||Yy||Cif),其中,H为哈希函数,Mx、My为M的坐标,Yx、Yy为Y的坐标,ID为身份信息,Cif为证书信息,ID为身份信息。其中,H可以为SM3哈希函数,通常与SM2签名算法配套使用。
下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。
请参考图3,示出了本申请一实施例中的签名验证方法的顺序图。如图3所示,上述签名验证方法可以包括以下步骤:
步骤1,证书授权中心生成SM2签名算法的椭圆曲线相关参数p、q和G以及SM3哈希函数H,证书授权中心中存储有自身的系统公钥M和系统私钥m,其中,G为椭圆曲线E上的基点,q为G的阶,E为定义在有限域Fp上的椭圆曲线,p为大素数,Fp为包含p个元素的有限域;
步骤2,第一用户端从证书授权中心获取椭圆曲线相关参数p、q和G和SM3哈希函数H,并根据椭圆曲线相关参数生成第一用户端的第一部分私钥和第一部分公钥,具体地,随机选取x∈[1,q-1],x为第一部分私钥,计算X=x·G,X为第一部分公钥;
步骤3,第一用户端向证书授权中心发送证书请求,其中,所述证书请求中携带有第一用户端的身份信息ID、第一部分公钥X和证书相关参数;
步骤4,证书授权中心响应于证书请求,根据椭圆曲线相关参数生成临时公钥和临时私钥,根据第一部分公钥和临时公钥生成第二部分公钥,具体地,随机选取w∈[1,q-1],w为临时私钥,计算W=w·G,W为临时公钥,计算Y=X+W,Y为第二部分公钥,X为第一部分公钥;
步骤5,证书授权中心根据证书请求中的证书相关参数构造证书信息Cif,并根据证书请求中的身份信息ID、第二部分公钥Y和证书信息Cif生成隐式证书,具体地,对证书相关参数进行编码,生成证书信息Cif,根据身份信息ID、第二部分公钥Y和证书信息Cif生成隐式证书;
步骤6,证书授权中心根据系统公钥M、系统私钥m、证书信息Cif、椭圆曲线相关参数p、q和G、SM3哈希函数H、身份信息ID、第二部分公钥Y和临时私钥w生成第二部分私钥y,具体地,计算l=H(Mx||My||ID||Yx||Yy||Cif),其中,H为SM3哈希函数,Mx、My为系统公钥M的坐标,Yx、Yy为第二部分公钥Y的坐标,计算第二部分私钥y=(l·m+w)modq;
步骤7,证书授权中心将生成的隐式证书和第二部分私钥y发送至第一用户端;
步骤8,第一用户端接收证书授权中心发送的隐式证书和第二部分私钥y,根据第一部分私钥x、第二部分私钥y和椭圆曲线相关参数q生成第一用户端的完整私钥s,并根据完整私钥s生成签名,具体地,计算完整私钥s=(x+y)modq;
步骤9,第一用户端将生成的签名和隐式证书发送至第二用户端;
步骤10,第二用户端接收第一用户端发送的签名和隐式证书,隐式证书中携带有第一用户端的身份信息ID、证书信息Cif和第二部分公钥Y,从证书授权中心获取SM3哈希函数H、椭圆曲线相关参数p、q和G以及系统公钥M;
步骤11,第二用户端根据证书信息验证隐式证书的有效性,在验证隐式证书有效的情况下,根据哈希函数H、系统公钥M、身份信息ID、第二部分公钥Y和证书信息Cif生成第一用户端的完整公钥P,具体地,通过验证证书信息是否有效来验证隐式证书的有效性,在验证隐式证书有效的情况下,计算l=H(Mx||My||ID||Yx||Yy||Cif),其中,Mx、My为系统公钥M的坐标,Yx、Yy为第二部分公钥Y的坐标,计算完整公钥P=l·M+Y;
步骤12,第二用户端根据完整公钥P验证签名的有效性,并将验证结果返回至第一用户端。
上述签名验证方法中,基于SM2签名算法生成密钥可以显著提高运算速度,进而提高签名验证的效率;由于隐式证书是基于第一部分公钥生成的,生成的隐式证书中仅包含部分公钥,因此可以有效减小证书长度,使得所占用的存储空间更小并且在物联网带宽资源受限的场景下传输效率更高;进一步地,由于隐式证书是基于身份信息生成的,因此更适用于物联网场景下的身份管理;更进一步地,由于相比于显式证书,隐式证书中不包含证书授权中心对证书属性的签名,在第二用户端根据隐式证书验证签名有效性时可以减少一次验签时间,因而在物联网计算能力有限的场景下可提高验证速度。通过上述方案解决了现有的签名验证的效率低下的技术问题,达到了有效提升验证效率、降低对设备和网络性能的要求、并且便于进行身份管理的技术效果。
基于同一发明构思,本申请实施例中还提供了一种签名验证装置,如下面的实施例所述。由于签名验证装置解决问题的原理与签名验证方法相似,因此签名验证装置的实施可以参见签名验证方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图4是本申请实施例的签名验证装置的一种结构框图,如图4所示,包括:第一生成模块401、发送模块402、接收模块403、第二生成模块404和签名模块405,下面对该结构进行说明。
第一生成模块401用于生成第一部分公钥和第一部分私钥。
发送模块402用于向证书授权中心发送证书请求,其中,证书请求中携带有第一用户端的身份信息和第一部分公钥。
接收模块403用于接收证书授权中心响应于证书请求返回的第二部分私钥和隐式证书,其中,第二部分私钥和隐式证书由证书授权中心根据身份信息和第一部分公钥生成。
第二生成模块404用于根据第一部分私钥和第二部分私钥生成第一用户端的完整私钥。
签名模块405用于根据完整私钥生成签名,并将隐式证书和签名发送至第二用户端,使得第二用户端根据隐式证书验证签名的有效性。
在本申请一些实施例中,第一生成模块可以具体用于:获取椭圆曲线相关参数;根据椭圆曲线相关参数生成第一部分公钥和第一部分私钥。
在本申请一些实施例中,证书授权中心根据身份信息和第一部分公钥生成第二部分私钥和隐式证书,可以包括:接收第一用户端发送的证书请求,其中,证书请求中携带有证书相关参数、第一用户端的身份信息和第一部分公钥;生成椭圆曲线相关参数和哈希函数;根据椭圆曲线相关参数生成临时公钥和临时私钥;根据第一部分公钥和临时公钥生成第二部分公钥,根据证书相关参数构造证书信息,并根据身份信息、第二部分公钥和证书信息生成隐式证书;根据系统公钥、系统私钥、证书信息、椭圆曲线相关参数、哈希函数、身份信息、第二部分公钥和临时私钥生成第二部分私钥,其中,系统私钥为证书授权中心的私钥,系统公钥为证书授权中心的公钥。
在本申请一些实施例中,第二生成模块可以具体用于:根据第一部分私钥、第二部分私钥和椭圆曲线相关参数生成完整私钥。
在本申请一些实施例中,第二用户端根据隐式证书验证签名的有效性,可以包括:接收第一用户端发送的隐式证书和签名,其中,隐式证书中携带有第一用户端的身份信息、证书信息和第二部分公钥;获取哈希函数、椭圆曲线相关参数以及系统公钥;根据证书信息验证隐式证书的有效性;在验证隐式证书有效的情况下,根据哈希函数、系统公钥、身份信息、第二部分公钥和证书信息生成第一用户端的完整公钥;根据完整公钥验证签名的有效性,并将验证结果返回至第一用户端。
在本申请一些实施例中,第一用户端根据椭圆曲线相关参数生成第一部分公钥和第一部分私钥,可以包括按照以下公式生成第一部分公钥:
X=x·G;
其中,X为第一部分公钥,x为第一部分私钥,x∈[1,q-1],G为椭圆曲线E上的基点,q为G的阶,E为定义在有限域Fp上的椭圆曲线,p为大素数,Fp为包含p个元素的有限域,p、q和G为椭圆曲线相关参数。
在本申请一些实施例中,证书授权中心根据身份信息和第一部分公钥生成第二部分私钥,可以包括按照以下公式生成第二部分私钥:
y=(l·m+w)modq;
其中,y为第二部分私钥,m为系统私钥,w为临时私钥,w∈[1,q-1],q为G的阶,G为椭圆曲线E上的基点,E为定义在有限域Fp上的椭圆曲线,p为大素数,Fp为包含p个元素的有限域,p、q和G为椭圆曲线相关参数,l=H(Mx||My||ID||Yx||Yy||Cif),其中,H为哈希函数,Mx、My为M的坐标,Yx、Yy为Y的坐标,其中,M为系统公钥,Y为第二部分公钥,ID为身份信息,Cif为证书信息,其中,Y=X+W,X为第一部分公钥,W为临时公钥,其中,W=w·G。
在本申请一些实施例中,第二生成模块可以具体用于按照以下公式生成完整私钥:
s=(x+y)modq;
其中,s为完整私钥,x为第一部分私钥,y为第二部分私钥,q为G的阶,G为椭圆曲线E上的基点,E为定义在有限域Fp上的椭圆曲线,p为大素数,Fp为包含p个元素的有限域,p、q和G为椭圆曲线相关参数。
在本申请一些实施例中,第二用户端根据哈希函数、系统公钥、身份信息、第二部分公钥和证书信息生成第一用户端的完整公钥,可以包括按照以下公式生成完整公钥:
P=l·M+Y;
其中,P为完整公钥,M为系统公钥,Y为第二部分公钥,l=H(Mx||My||ID||Yx||Yy||Cif),其中,H为哈希函数,Mx、My为M的坐标,Yx、Yy为Y的坐标,ID为身份信息,Cif为证书信息,ID为身份信息。
从以上的描述中,可以看出,本申请实施例实现了如下技术效果:上述方案中,由于隐式证书是基于第一部分公钥生成的,生成的隐式证书中仅包含部分公钥,因此可以有效减小证书长度,使得所占用的存储空间更小并且在物联网带宽资源受限的场景下传输效率更高;进一步地,由于隐式证书是基于身份信息生成的,因此更适用于物联网场景下的身份管理;更进一步地,由于相比于显式证书,隐式证书中不包含证书授权中心对证书属性的签名,在第二用户端根据隐式证书验证签名有效性时可以减少一次验签时间,因而在物联网计算能力有限的场景下可提高验证速度。通过上述方案解决了现有的签名验证的效率低下的技术问题,达到了有效提升验证效率、降低对设备和网络性能的要求、并且便于进行身份管理的技术效果。
本申请实施方式还提供了一种计算机设备,具体可以参阅图5所示的基于本申请实施例提供的签名验证方法的计算机设备组成结构示意图,所述计算机设备具体可以包括输入设备51、处理器52、存储器53。其中,所述存储器53用于存储处理器可执行指令。所述处理器52执行所述指令时实现上述任意实施例中所述的签名验证方法的步骤。所述输入设备51具体可以用于输入身份信息等参数。
在本实施方式中,所述输入设备具体可以是用户和计算机系统之间进行信息交换的主要装置之一。所述输入设备可以包括键盘、鼠标、摄像头、扫描仪、光笔、手写输入板、语音输入装置等;输入设备用于把原始数据和处理这些数的程序输入到计算机中。所述输入设备还可以获取接收其他模块、单元、设备传输过来的数据。所述处理器可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。所述存储器具体可以是现代信息技术中用于保存信息的记忆设备。所述存储器可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
在本实施方式中,该计算机设备具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
本申请实施方式中还提供了一种基于签名验证方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现上述任意实施例中所述签名验证方法的步骤。
在本实施方式中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
应该理解,以上描述是为了进行图示说明而不是为了进行限制。通过阅读上述描述,在所提供的示例之外的许多实施方式和许多应用对本领域技术人员来说都将是显而易见的。因此,本申请的范围不应该参照上述描述来确定,而是应该参照前述权利要求以及这些权利要求所拥有的等价物的全部范围来确定。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。