掌桥专利:专业的专利平台
掌桥专利
首页

签名方法及装置、验证方法及装置、设备及存储介质

文献发布时间:2023-06-19 12:11:54


签名方法及装置、验证方法及装置、设备及存储介质

技术领域

本申请实施例涉及计算机技术领域,尤其涉及一种签名方法及装置、验证方法及装置、设备及存储介质。

背景技术

由国家密码管理局颁发的国家商用密码标准算法SM9是一种基于标识的密码(Identity-Based Cryptography,IBC)算法,该IBC算法基于用户的身份证号、手机号、邮箱地址等身份标识计算用户的公钥,省略了交换数字证书和公钥过程,使得安全系统变得易于部署和管理,非常适合端对端离线安全通讯、云端数据加密、基于属性加密、基于策略加密的各种场合。

相关技术中,在SM9算法的数据签名阶段,发送方从密钥生成中心(keygeneration center,KGC)获取对应的私钥,基于私钥生成自身的数据签名信息,发送方再将数据签名信息发送给接收方,接收方对数据签名信息进行验证,通过验证结果确定自身接收的数据是否来源于发送方。然而,由于密钥生成中心生成发送方进行数字签名所需的私钥,密钥生成中心有可能会利用上述私钥伪造发送方数据签名信息,并将伪造的数据签名信息发送给接收方验证,接收方对数据签名信息进行验证,通过验证结果确定自身接收的数据来源于发送方。这样,密钥生成中心可以以发送方的名义向接收方发送各种数据,与此同时,接收方感知数据来源于发送方,而不是来源于密钥生成中心。显然,基于上述数据签名方式进行数据传输时,数据安全性较差。

发明内容

本申请实施例提供一种签名方法及装置、验证方法及装置、设备及存储介质,用以提高数据安全性。

第一方面,本申请实施例中提供了一种签名方法,包括:

获取密钥生成中心提供的目标私钥以及系统参数;选择任一正整数作为目标秘密值;根据所述目标秘密值和所述系统参数生成目标参数,并将所述目标参数发送给接收方;根据所述目标私钥、所述目标秘密值和所述目标参数生成数字签名信息,并将所述数字签名信息发送给所述接收方,以使所述接收方根据所述目标参数对所述数字签名信息进行验证。

第二方面,本申请实施例中提供了一种验证方法,包括:

获取发送方发送的目标参数;其中,所述目标参数是根据目标秘密值和密钥生成中心提供的系统参数得到的;接收所述发送方发送的数字签名信息;其中,所述数字签名信息是根据目标私钥、所述目标秘密值和所述目标参数生成的;根据所述目标参数对所述数字签名信息进行验证。

第三方面,本申请实施例中提供了一种验证方法,包括:

响应接收到签名请求,查找本地是否保存目标私钥、目标秘密值以及目标参数;若查询结果为否,则获取密钥生成中心提供的目标私钥以及系统参数,并在本地保存所述目标私钥;选择任一正整数作为目标秘密值,并在本地保存所述目标秘密值;根据所述目标秘密值和所述系统参数生成目标参数,以及在本地保存所述目标参数,并将所述目标参数发送给接收方;根据所述目标私钥、所述目标秘密值和所述目标参数生成数字签名信息,并将所述数字签名信息发送给所述接收方,以使所述接收方根据所述目标参数对所述数字签名信息进行验证。

第四方面,本申请实施例中提供了一种签名装置,包括:

获取模块,用于获取密钥生成中心提供的目标私钥以及系统参数;处理模块,用于选择任一正整数作为目标秘密值;根据所述目标秘密值和所述系统参数生成目标参数,并将所述目标参数发送给接收方;根据所述目标私钥、所述目标秘密值和所述目标参数生成数字签名信息,并将所述数字签名信息发送给所述接收方,以使所述接收方根据所述目标参数对所述数字签名信息进行验证。

第五方面,本申请实施例中提供了一种签名装置,包括:

获取模块,用于响应接收到签名请求,查找本地是否保存目标私钥、目标秘密值以及目标参数;若查询结果为否,则获取密钥生成中心提供的目标私钥以及系统参数,并在本地保存所述目标私钥。处理模块,用于选择任一正整数作为目标秘密值,并在本地保存所述目标秘密值;根据所述目标秘密值和所述系统参数生成目标参数,以及在本地保存所述目标参数,并将所述目标参数发送给接收方;根据所述目标私钥、所述目标秘密值和所述目标参数生成数字签名信息,并将所述数字签名信息发送给所述接收方,以使所述接收方根据所述目标参数对所述数字签名信息进行验证。

第六方面,本申请实施例中提供了一种验证装置,包括:

获取模块,用于获取发送方发送的目标参数;其中,所述目标参数是根据目标秘密值和密钥生成中心提供的系统参数得到的;接收所述发送方发送的数字签名信息;其中,所述数字签名信息是根据目标私钥、所述目标秘密值和所述目标参数生成的;处理模块,用于根据所述目标参数对所述数字签名信息进行验证。

第七方面,本申请实施例提供了一种电子设备,包括处理组件以及存储组件;

所述存储组件存储一条或多条计算机指令;所述一条或多条计算机指令用以被所述处理组件调用执行;

所述处理组件用于:

获取密钥生成中心提供的目标私钥以及系统参数;选择任一正整数作为目标秘密值;根据所述目标秘密值和所述系统参数生成目标参数,并将所述目标参数发送给接收方;根据所述目标私钥、所述目标秘密值和所述目标参数生成数字签名信息,并将所述数字签名信息发送给所述接收方,以使所述接收方根据所述目标参数对所述数字签名信息进行验证,或者,

所述处理组件用于:

响应接收到签名请求,查找本地是否保存目标私钥、目标秘密值以及目标参数;若查询结果为否,则获取密钥生成中心提供的目标私钥以及系统参数,并在本地保存所述目标私钥;选择任一正整数作为目标秘密值,并在本地保存所述目标秘密值;根据所述目标秘密值和所述系统参数生成目标参数,以及在本地保存所述目标参数,并将所述目标参数发送给接收方;根据所述目标私钥、所述目标秘密值和所述目标参数生成数字签名信息,并将所述数字签名信息发送给所述接收方,以使所述接收方根据所述目标参数对所述数字签名信息进行验证;或者,

所述处理组件用于:

获取发送方发送的目标参数;其中,所述目标参数是根据目标秘密值和密钥生成中心提供的系统参数得到的;接收所述发送方发送的数字签名信息;其中,所述数字签名信息是根据目标私钥、所述目标秘密值和所述目标参数生成的;根据所述目标参数对所述数字签名信息进行验证。

第八方面,本申请实施例提供了一种计算机存储介质,存储有计算机程序,所述计算程序被计算机执行时,实现上述签名方法或者上述验证方法。

本申请实施例中,发送方生成数字签名信息时,即需要密钥生成中心发送的目标私钥,还需要自身选择的目标秘密值,以及基于目标秘密值和系统参数生成的目标参数。由此,由于所生成的数字签名信息不再仅仅利用密钥生成中心发送的目标私钥,有效地避免了密钥生成中心伪造发送端数据签名信息的情形发生,有效地避免了密钥生成中心以发送方的名义随意向接收方发送数据的情形发生,提高了数据安全性。

本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了根据本申请实施例在一个实际应用中的应用场景图;

图2a示出了本申请提供的签名方法一个实施例的流程图;

图2b示出了本申请提供的签名方法另一个实施例的流程图;

图3示出了本申请提供的验证方法一个实施例的流程图;

图4a示出了本申请实施例在一个实际应用中的签名方法的流程图;

图4b示出了本申请实施例在另一个实际应用中的签名方法的流程图;

图5示出了本申请实施例在一个实际应用中的验证方法的流程图;

图6示出了本申请提供的签名装置一个实施例的结构示意图;

图7示出了本申请提供的验证装置一个实施例的结构示意图;

图8示出了本申请提供的电子设备一个实施例的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图1示出了根据本申请实施例在一个实际应用中的应用场景图。在图1所示的应用场景中,包括发送方101、接收方102、密钥生成中心(Key Generation Center,KGC)103;发送方101和接收方102均与密钥生成中心KGC103建立网络连接,且发送方101和接收方102建立网络连接。发送方101可以是数据发送侧的终端设备,或者,发送方101可以是运行在数据发送侧的终端设备的计算机软件程序。接收方102可以是数据接收侧的终端设备,或者,接收方102可以是运行在数据接收侧的终端设备的计算机软件程序。其中,终端设备包括但不限于台式计算机、智能手机、平板电脑、电子阅读器、智能穿戴设备。密钥生成中心103可以是单个服务器或者服务器集群,或者是个服务器或者服务器集群上运行的计算机软件程序。

其中,密钥生成中心KGC103负责生成SM9算法所需的系统参数,并提供给终端设备使用,终端设备例如为发送方101或接收方102。

在本实施例中,执行SM9算法所需的系统参数根据实际的业务需求进行确定。例如,系统参数包括但不限于以下参数中的一种或多种:安全参数z、正整数N、第一加法循环群G

其中,安全参数z用于声明SM9算法的安全强度。密钥生成中心可以接收密钥生成中心的管理人员输入的安全参数z。

其中,双线性对映射

其中,第一生成元P

其中,G

其中,密钥生成中心选择一个字节来表示加密私钥生成函数识别符hid。

其中,密钥生成中心在生成主公钥P

其中,假设哈希函数H

关于上述系统参数的更多介绍可以参见国家密码管理局颁布SM9算法的相关标准文件。

需要指出的是,密钥生成中心103可以选择公开安全参数z、正整数N、第一加法循环群G

其中,密钥生成中心103所公开的系统参数,可以被终端设备获取的,密钥生成中心所保密的主私钥ke是不可以被终端设备获取的。可以理解的是,密钥生成中心向发送方101或接收方102发送的系统参数是所公开的系统参数,不包括保密的系统参数(例如主私钥ks)。

另外,密钥生成中心103还负责基于用户身份标识生成对应的私钥和公钥。

例如,密钥生成中心103可以基于发送侧用户的用户身份标识为数据发送侧的发送方生成目标私钥和目标公钥,并且通过安全渠道将目标私钥和目标公钥提供发送方。

假设发送侧用户的用户身份标识记为ID

其中,发送方101生成数字签名信息并发送给接收方102;接收方102对数字签名信息进行验证,以确认接收的业务数据来源于发送方101。

实际应用中,发送方101可以针对每次接收到的签名请求,都向密钥生成中心请求获取目标私钥以及系统参数,以及选择一个新的目标秘密值和生成一个新的目标参数,并基于新的目标秘密值和新的目标参数进行数字签名,以及将新的目标参数提供给接收方102,以使接收方102基于新的目标参数进行数字签名验证。为了便于理解,结合图2a详细说明上述签名方法。

图2a示出了本申请提供的签名方法一个实施例的流程图。该方法的执行主体为发送方101。参见图2a,该签名方法可以包括以下步骤:

201、获取密钥生成中心提供的目标私钥以及系统参数。

202、选择任一正整数作为目标秘密值。

假设目标秘密值记为

进一步的,为了进一步提高数据安全性,发送方101可以随机从[1,N-1]任选一个正整数作为目标秘密值。

203、根据目标秘密值和系统参数生成目标参数,并将目标参数发送给接收方。

示例性的,在生成目标参数时,可以利用系统参数中的第一加法循环群G

发送方101在生成目标参数后,利用目标参数生成与发送方101对应的数字签名信息。另外,为了保证接收方102能正常执行签名验证操作,还需要将目标参数发送给接收方102。

204、根据目标私钥、目标秘密值和目标参数生成数字签名信息,并将数字签名信息发送给接收方,以使接收方根据目标参数对数字签名信息进行验证。

需要指出的是,发送方101可以将目标参数和数字签名信息同时发送给接收方102;也可以先将目标参数发送给给接收方102,后将数字签名信息发送给接收方102;也可以先将数字签名信息发送给接收方102,后将将目标参数发送给接收方102,本申请实施例对此不做限制。

在本申请实施例中,发送方生成数字签名信息时,既需要密钥生成中心发送的目标私钥,还需要自身选择的目标秘密值,以及基于目标秘密值和系统参数生成的目标参数。由此,由于所生成的数字签名信息不再仅仅利用密钥生成中心发送的目标私钥,有效地避免了密钥生成中心伪造发送端数据签名信息的情形发生,有效地避免了密钥生成中心以发送方的名义随意向接收方发送数据的情形发生,提高了数据安全性。

在一些实施例中,系统参数包括:主公钥;“根据目标私钥、目标秘密值和目标参数生成数字签名信息”可以包括:对主公钥和目标参数进行双线性对映射,得到第一结果;随机选择随机数;根据随机数和第一结果,生成第一数字签名信息;将随机数减去第一数字签名信息的模运算结果,以得到第二结果。判断第二结果是否为零;若第二结果不为零,根据第二结果、目标秘密值以及目标私钥生成第二数字签名信息。若第二结果为零,返回随机选择随机数的步骤重新执行。

示例性的,假设第一结果记为g,发送方按照公式g=

假设随机数记为r,发送方随机选择一个随机数r,其中,其中,r∈Z

假设第一数字签名信息记为h,第二结果记为l,发送方按照公式l=(r-h)modN进行计算,以得到第二结果,其中,modN表示进行模N运算。

假设第二数字签名信息记为S,发送方按照公式S=

在一些实施例中,系统参数中还包括:阶数;“根据随机数和第一结果,生成第一数字签名信息”可以包括:获取待发送至接收方的业务数据;根据随机数对第一结果进行幂运算,以得到第三结果;获取业务数据与第三结果的第一拼接结果,以及将第一拼接结果和阶数进行哈希运算,以得到第一数字签名信息。

示例的,假设业务数据记为m,第三结果记为w。

发送方按照公式w=g

发送方按照公式h=H

在一些实施例中,在根据目标秘密值和系统参数生成目标参数之前,上述方法还可以包括:获取密钥生成中心提供的与发送方对应的目标公钥;验证目标私钥和目标公钥是否符合有效性要求;若目标私钥和目标公钥均符合有效性要求,则执行根据目标秘密值和系统参数中第一加法循环群的第一生成元生成目标参数的步骤。

实际应用中,可信的密钥生成中心可能被攻击,导致密钥生成中心提供无效的目标私钥和目标公钥。因此,发送方生成数字签名信息之前,先验证密钥生成中心提供的目标私钥和目标公钥的有效性,以确认密钥生成中心可信,可以进一步提高数据安全性。

需要指出的是,发送方在确定目标私钥和目标公钥不满足有效性要求时,不再执行数字签名操作,以及不再执行数据发送操作。

在一些实施例中,“验证目标私钥和目标公钥是否符合有效性要求”可以包括:对第一生成元和系统参数中的主公钥进行双线性对映射,得到第四结果;对目标私钥和目标公钥进行双线性对映射,得到第五结果;若第四结果等于第五结果,则目标私钥和目标公钥符合有效性要求;若第四结果不等于第五结果,则目标私钥和目标公钥不符合有效性要求。

假设目标私钥记为ds

实际应用中,发送方101还可以在接收到任一次的签名请求时,将响应该签名请求获取的目标私钥、目标秘密值以及目标参数在本地进行保存,以及通知接收方102也在本地保存相应的目标参数。在发送方101接收到后续签名请求时,首先查询本地是否保存目标私钥、目标秘密值以及目标参数,若查询结果为否,发送方101再向密钥生成中心提供的目标私钥以及系统参数,以及选择一个新的目标秘密值和生成一个新的目标参数,并基于新的目标秘密值和新的目标参数进行数字签名,以及将新的目标参数提供给接收方102,以使接收方102基于新的目标参数进行数字签名验证。若查询结果为是,发送方101获取本地保存目标私钥、目标秘密值以及目标参数,并基于本地保存的目标秘密值和目标参数进行数字签名。

为了便于理解,结合图2b对上述签名方法进行说明。

图2b示出了本申请提供的签名方法另一个实施例的流程图。该方法的执行主体为发送方101。参见图2b,该签名方法可以包括以下步骤:

11、响应接收到签名请求,查找本地是否保存目标私钥、目标秘密值以及目标参数,若查询结果为否,执行步骤12,若查询结果为是,执行步骤16;

12、获取密钥生成中心提供的目标私钥以及系统参数,并在本地保存所述目标私钥。

13、选择任一正整数作为目标秘密值,并在本地保存所述目标秘密值。

14、根据所述目标秘密值和所述系统参数生成目标参数,以及在本地保存所述目标参数,并将所述目标参数发送给接收方。

15、根据所述目标私钥、所述目标秘密值和所述目标参数生成数字签名信息,并将所述数字签名信息发送给所述接收方,以使所述接收方根据所述目标参数对所述数字签名信息进行验证。

16、获取本地保存的目标私钥、目标秘密值以及目标参数。

17、根据所述目标私钥、所述目标秘密值和所述目标参数生成数字签名信息,并将所述数字签名信息发送给所述接收方,以使所述接收方根据所述目标参数对所述数字签名信息进行验证。

需要指出的是,接收方根据发送方发送的最新的目标参数进行数字签名验证。接收方在接收到发送方发送的最新的目标参数时,在接收方本地保存最新的目标参数,以便后续再次接收到验证请求时,利用最新的目标参数进行验证。

在一些实施例中,系统参数包括:主公钥;“根据目标私钥、目标秘密值和目标参数生成数字签名信息”可以包括:对主公钥和目标参数进行双线性对映射,得到第一结果;随机选择随机数;根据随机数和第一结果,生成第一数字签名信息;将随机数减去第一数字签名信息的模运算结果,以得到第二结果。判断第二结果是否为零;若第二结果不为零,根据第二结果、目标秘密值以及目标私钥生成第二数字签名信息。若第二结果为零,返回随机选择随机数的步骤重新执行。

示例性的,假设第一结果记为g,发送方按照公式g=

假设随机数记为r,发送方随机选择一个随机数r,其中,r∈Z

假设第一数字签名信息记为h,第二结果记为l,发送方按照公式l=(r-h)modN进行计算,以得到第二结果,其中,modN表示进行模N运算。

假设第二数字签名信息记为S,发送方按照公式S=

在一些实施例中,系统参数中还包括:阶数;“根据随机数和第一结果,生成第一数字签名信息”可以包括:获取待发送至接收方的业务数据;根据随机数对第一结果进行幂运算,以得到第三结果;获取业务数据与第三结果的第一拼接结果,以及将第一拼接结果和阶数进行哈希运算,以得到第一数字签名信息。

示例的,假设业务数据记为m,第三结果记为w。

发送方按照公式w=g

发送方按照公式h=H

在一些实施例中,在根据目标秘密值和系统参数生成目标参数之前,上述方法还可以包括:获取密钥生成中心提供的与发送方对应的目标公钥;验证目标私钥和目标公钥是否符合有效性要求;若目标私钥和目标公钥均符合有效性要求,则执行根据目标秘密值和系统参数中第一加法循环群的第一生成元生成目标参数的步骤。

实际应用中,可信的密钥生成中心可能被攻击,导致密钥生成中心提供无效的目标私钥和目标公钥。因此,发送方生成数字签名信息之前,先验证密钥生成中心提供的目标私钥和目标公钥的有效性,以确认密钥生成中心可信,可以进一步提高数据安全性。

需要指出的是,发送方在确定目标私钥和目标公钥不满足有效性要求时,不再执行数字签名操作,以及不再执行数据发送操作。

在一些实施例中,“验证目标私钥和目标公钥是否符合有效性要求”可以包括:对第一生成元和系统参数中的主公钥进行双线性对映射,得到第四结果;对目标私钥和目标公钥进行双线性对映射,得到第五结果;若第四结果等于第五结果,则目标私钥和目标公钥符合有效性要求;若第四结果不等于第五结果,则目标私钥和目标公钥不符合有效性要求。

假设目标私钥记为ds

图3示出了本申请提供的验证方法一个实施例的流程图。该方法的执行主体为接收方102。参见图3,该验证方法可以包括以下步骤:

301、获取发送方发送的目标参数。

302、接收发送方发送的数字签名信息。

303、根据目标参数对数字签名信息进行验证。

其中,目标参数是根据目标秘密值和密钥生成中心提供的系统参数得到的。关于目标参数的生成方式具体参见前述内容,在此不再赘述。

其中,数字签名信息是根据目标私钥、目标秘密值和目标参数生成的。关于发送方生成数字签名信息的方式具体参见前述内容,在此不再赘述。

在数据传输过程中,发送方向接收方发送业务数据,同时为了提高数据安全性,发送方生成数字签名信息和目标参数,并向接收方发送数字签名信息和目标参数。接收方利用目标参数对数字签名信息进行验证,若验证通过,接收方确定所接收的业务数据来源于发送方,若验证不通过,接收方确定所接收的业务数据不是来源于发送方。

在本申请实施例中,接收方利用发送方发送的目标参数验证数字签名信息,可以有效地甄别所接收的业务数据是否来源于发送方,提高了数据安全性。

在一些实施例中,数字签名信息包括第一数字签名信息和第二数字签名信息;“根据目标参数对数字签名信息进行验证”可以包括:获取密钥生成中心提供的系统参数;根据系统参数、目标参数、第一数字签名信息和第二数字签名信息生成第三数字签名信息;若第三数字签名信息等于第一数字签名信息,确定数字签名信息合法;若第三数字签名信息不等于第一数字签名信息,确定数字签名信息不合法。

在一些实施例中,系统参数至少包括:主公钥、阶数、加密秘钥生成函数识别符和第二加法循环群的第二生成元;“根据系统参数、目标参数、第一数字签名信息和第二数字签名信息生成第三数字签名信息”可以包括:获取发送方对应的发送侧用户身份标识,以及获取发送方发送的业务数据;对主公钥和目标参数进行双线性对映射,得到第六结果;根据第一数字签名信息对第六结果进行幂运算,得到第七结果;获取拼接发送侧用户身份标识与加密秘钥生成函数识别符的第二拼接结果,以及将第二拼接结果和阶数进行哈希运算,得到第八结果;根据第八结果、主公钥以及第二生成元,生成中间主公钥;对中间主公钥和第二数字签名信息进行双线性对映射,得到第九结果;将第七结果和第九结果进行相乘,得到第十结果;获取业务数据与第十结果的第三拼接结果,以及将第三拼接结果和阶数进行哈希运算,以得到第三数字签名信息。

假设接收方接收的业务数据记为m,接收方从发送发接收的数字签名信息记为(h,S)。其中,h为第一数字签名信息,S为第二数字签名信息。

接收方按照公式g=

接收方按照公式t=g

接收方按照公式h

接收方按照公式P=h

接收方按照公式u=

接收方按照公式w′=u×t进行计算,以得到第十结果w′。

接收方按照公式h

接收方验证h

在一些实施例中,在根据目标参数对数字签名信息进行验证之前,上述方法还可以包括:确定第一数字签名信息属于预设的正整数,且确定第二数字签名信息属于第一加法循环群中的元素。

示例性的,预设的正整数为Z

可以理解的是,若确定第一数字签名信息h不属于预设的正整数或者确定第二数字签名信息S不属于第一加法循环群G

接收方可以将第二数字签名信息S转换为椭圆曲线上的点,并验证S∈G

图4a示出了本申请实施例在一个实际应用中的签名方法的流程图。该方法的执行主体为数据发送侧的发送方。本实施例涉及的各个符号的含义参见上述实施例的介绍,在此不再赘述。

参见图4a,该签名方法可以包括以下步骤:

401、发送方从密钥生成中心获取所需的系统参数。

402、发送方从密钥生成中心获取目标私钥ds

403发送方验证目标私钥和目标公钥的有效性。若验证通过,执行步骤404,若验证不通过,结束。

具体的,发送方验证

404、发送方随机选择目标秘密值

其中,

405、发送方生成目标参数PK

其中,PK

406、发送方按照公式g=

其中,g∈G

407、发送方随机选择一个随机数r。

其中,其中,r∈Z

408、发送方按照公式w=g

409、发送方按照公式h=H

410、发送方按照公式l=(r-h)modN进行计算,以得到第二结果l,若l=0,则返回执行步骤407;若l≠0,则执行步骤411;

411、发送方按照公式S=

412、发送方输出数据签名信息(h,S)。

图4b示出了本申请实施例在另一个实际应用中的签名方法的流程图。该方法的执行主体为数据发送侧的发送方。本实施例涉及的各个符号的含义参见上述实施例的介绍,在此不再赘述。参见图4b,该签名方法可以包括以下步骤:

21、发送方响应接收到签名请求,查找本地是否保存目标私钥、目标秘密值以及目标参数,若否,执行步骤22;若是,执行步骤34。

22、发送方从密钥生成中心获取所需的系统参数。

23、发送方从密钥生成中心获取目标私钥ds

24、发送方验证目标私钥和目标公钥的有效性。若验证通过,执行步骤25,若验证不通过,结束。

具体的,发送方验证

25、发送方随机选择目标秘密值

其中,

26、发送方生成目标参数PK

其中,PK

27、发送方按照公式g=

其中,g∈G

28、发送方随机选择一个随机数r。

其中,r∈Z

29、发送方按照公式w=g

30、发送方按照公式h=H

31、发送方按照公式l=(r-h)modN进行计算,以得到第二结果l,若l=0,则返回执行步骤28;若l≠0,则执行步骤32;

32、发送方按照公式S=

33、发送方输出数据签名信息(h,S)。

34、发送方获取本地保存的目标私钥、目标秘密值以及目标参数。

35、发送方根据目标私钥、目标秘密值和目标参数生成数字签名信息,并发送方输出数据签名信息(h,S)。

图5示出了本申请实施例在一个实际应用中的验证方法的流程图。该方法的执行主体为数据发送侧的接收方。本实施例涉及的各个符号的含义参见上述实施例的介绍,在此不再赘述。

如图5示,本实施例提供的验证方法,可以包括以下步骤:

501、接收方验证h∈Z

502、接收方验证S∈G

其中,S∈G

503、接收方按照公式g=

其中,g∈G

504、接收方按照公式t=g

其中,t∈G

505、接收方按照公式h

506、接收方按照公式P=h

507、接收方按照公式u=

508、接收方按照公式w′=u×t进行计算,以得到第十结果w′,并将w′转化为比特串形式的w′。

509、接收方按照公式h

510、接收方验证h

图6示出了本申请提供的签名装置一个实施例的结构示意图。参见图6,该签名装置可以包括:

获取模块601,用于获取密钥生成中心提供的目标私钥以及系统参数;

处理模块602,用于选择任一正整数作为目标秘密值;根据所述目标秘密值和所述系统参数生成目标参数,并将所述目标参数发送给接收方;根据所述目标私钥、所述目标秘密值和所述目标参数生成数字签名信息,并将所述数字签名信息发送给所述接收方,以使所述接收方根据所述目标参数对所述数字签名信息进行验证。

在一些实施例中,所述系统参数包括:主公钥;处理模块602根据所述目标私钥、所述目标秘密值和所述目标参数生成数字签名信息具体是:

对所述主公钥和所述目标参数进行双线性对映射,得到第一结果;随机选择随机数;根据所述随机数和所述第一结果,生成第一数字签名信息;将所述随机数减去所述第一数字签名信息的模运算结果,以得到第二结果;判断所述第二结果是否为零;若所述第二结果不为零,根据所述第二结果、所述目标秘密值以及所述目标私钥生成第二数字签名信息。

在一些实施例中,所述系统参数中还包括:阶数;处理模块602根据所述随机数和所述第一结果,生成第一数字签名信息具体是:

获取待发送至所述接收方的业务数据;根据所述随机数对所述第一结果进行幂运算,以得到第三结果;获取所述业务数据与所述第三结果的第一拼接结果,以及将所述第一拼接结果和所述阶数进行哈希运算,以得到所述第一数字签名信息。

在一些实施例中,处理模块602还用于:若所述第二结果为零,返回随机选择随机数的步骤重新执行。

在一些实施例中,处理模块602在根据所述目标秘密值和所述系统参数生成目标参数之前,还用于触发获取模块601获取所述密钥生成中心提供的与所述发送方对应的目标公钥;

所述处理模块602还用于:接收获取模块601发送的目标公钥;验证所述目标私钥和所述目标公钥是否符合有效性要求;若所述目标私钥和所述目标公钥均符合有效性要求,则执行根据所述目标秘密值和所述系统参数中第一加法循环群的第一生成元生成目标参数的步骤。

在一些实施例中,处理模块602验证所述目标私钥和所述目标公钥是否符合有效性要求具体是:对所述第一生成元和所述系统参数中的主公钥进行双线性对映射,得到第四结果;对所述目标私钥和所述目标公钥进行双线性对映射,得到第五结果;若所述第四结果等于所述第五结果,则所述目标私钥和所述目标公钥符合有效性要求;若所述第四结果不等于所述第五结果,则所述目标私钥和所述目标公钥不符合有效性要求。

图6的签名装置可以执行图2a所示实施例的签名方法,其实现原理和技术效果不再赘述。对于上述实施例中的验证装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

另外,图6的签名装置还可以执行图2b所示实施例的签名方法。在执行图2b所示实施例的签名方法时,获取模块601,用于响应接收到签名请求,查找本地是否保存目标私钥、目标秘密值以及目标参数;若查询结果为否,则获取密钥生成中心提供的目标私钥以及系统参数,并在本地保存所述目标私钥。

处理模块602,用于选择任一正整数作为目标秘密值,并在本地保存所述目标秘密值;根据所述目标秘密值和所述系统参数生成目标参数,以及在本地保存所述目标参数,并将所述目标参数发送给接收方;根据所述目标私钥、所述目标秘密值和所述目标参数生成数字签名信息,并将所述数字签名信息发送给所述接收方,以使所述接收方根据所述目标参数对所述数字签名信息进行验证。

在一些实施例中,若查询结果为是,获取模块601还用于获取本地保存的目标私钥、目标秘密值以及目标参数。

处理模块602,用于根据所述目标私钥、所述目标秘密值和所述目标参数生成数字签名信息,并将所述数字签名信息发送给所述接收方,以使所述接收方根据所述目标参数对所述数字签名信息进行验证。

图7示出了本申请提供的验证装置一个实施例的结构示意图。参见图7,该验证装置可以包括:

获取模块701,用于获取发送方发送的目标参数;其中,所述目标参数是根据目标秘密值和密钥生成中心提供的系统参数得到的;接收所述发送方发送的数字签名信息;其中,所述数字签名信息是根据目标私钥、所述目标秘密值和所述目标参数生成的;

处理模块702,用于根据所述目标参数对所述数字签名信息进行验证。

在一些实施例中,所述数字签名信息包括第一数字签名信息和第二数字签名信息;

处理模块702根据所述目标参数对所述数字签名信息进行验证具体是:

获取所述密钥生成中心提供的系统参数;根据所述系统参数、所述目标参数、所述第一数字签名信息和所述第二数字签名信息生成第三数字签名信息;若所述第三数字签名信息等于所述第一数字签名信息,确定所述数字签名信息合法;若所述第三数字签名信息不等于所述第一数字签名信息,确定所述数字签名信息不合法。

在一些实施例中,所述系统参数至少包括:主公钥、阶数、加密秘钥生成函数识别符和第二加法循环群的第二生成元;

处理模块702根据所述系统参数、所述目标参数、所述第一数字签名信息和所述第二数字签名信息生成第三数字签名信息具体是:获取所述发送方对应的发送侧用户身份标识,以及获取所述发送方发送的业务数据;对所述主公钥和所述目标参数进行双线性对映射,得到第六结果;根据所述第一数字签名信息对所述第四结果进行幂运算,得到第七结果;获取拼接所述发送侧用户身份标识与所述加密秘钥生成函数识别符的第二拼接结果,以及将所述第二拼接结果和所述阶数进行哈希运算,得到第八结果;根据所述第八结果、所述主公钥以及所述第二生成元,生成中间主公钥;对所述中间主公钥和所述第二数字签名信息进行双线性对映射,得到第九结果;将所述第七结果和所述第九结果进行相乘,得到第十结果;获取所述业务数据与所述第十结果的第三拼接结果,以及将所述第三拼接结果和所述阶数进行哈希运算,以得到所述第三数字签名信息。

在一些实施例中,处理模块702在根据所述目标参数对所述数字签名信息进行验证之前,还用于:确定所述第一数字签名信息属于预设的正整数,且确定所述第二数字签名信息属于第一加法循环群中的元素。

图7的验证装置可以执行图3所示实施例的验证方法,其实现原理和技术效果不再赘述。对于上述实施例中的验证装置其中各个模块、单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

在一个可能的设计中,图6所示实施例的签名装置或者图7所示实施例的验证装置可以实现为电子设备,如图8所示,该电子设备可以包括存储组件801以及处理组件802;

所述存储组件801存储一条或多条计算机指令,其中,所述一条或多条计算机指令供所述处理组件调用执行。

所述处理组件802用于:

获取密钥生成中心提供的目标私钥以及系统参数;选择任一正整数作为目标秘密值;根据所述目标秘密值和所述系统参数生成目标参数,并将所述目标参数发送给接收方;根据所述目标私钥、所述目标秘密值和所述目标参数生成数字签名信息,并将所述数字签名信息发送给所述接收方,以使所述接收方根据所述目标参数对所述数字签名信息进行验证,或者,

所述处理组件802用于:

响应接收到签名请求,查找本地是否保存目标私钥、目标秘密值以及目标参数;若查询结果为否,则获取密钥生成中心提供的目标私钥以及系统参数,并在本地保存所述目标私钥;选择任一正整数作为目标秘密值,并在本地保存所述目标秘密值;根据所述目标秘密值和所述系统参数生成目标参数,以及在本地保存所述目标参数,并将所述目标参数发送给接收方;根据所述目标私钥、所述目标秘密值和所述目标参数生成数字签名信息,并将所述数字签名信息发送给所述接收方,以使所述接收方根据所述目标参数对所述数字签名信息进行验证;或者,

所述处理组件802用于:

获取发送方发送的目标参数;其中,所述目标参数是根据目标秘密值和密钥生成中心提供的系统参数得到的;接收所述发送方发送的数字签名信息;其中,所述数字签名信息是根据目标私钥、所述目标秘密值和所述目标参数生成的;根据所述目标参数对所述数字签名信息进行验证。

其中,处理组件802可以包括一个或多个处理器来执行计算机指令,以完成上述的方法中的全部或部分步骤。当然处理组件也可以为一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

存储组件801被配置为存储各种类型的数据以支持在终端的操作。存储组件可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

电子设备还可以包括显示组件803,显示组件803可以为电子发光(EL)元件、液晶显示器或具有类似结构的微型显示器、或者视网膜可直接显示或类似的激光扫描式显示器。

当然,电子设备必然还可以包括其他部件,例如输入/输出接口、通信组件等。

输入/输出接口为处理组件和外围接口模块之间提供接口,上述外围接口模块可以是输出设备、输入设备等。

通信组件被配置为便于电子设备和其他设备之间有线或无线方式的通信等。

其中,该电子设备可以为物理设备或者云计算平台提供的弹性计算主机等,此时电子设备即可以是指云服务器,上述处理组件、存储组件等可以是从云计算平台租用或购买的基础服务器资源。

本申请实施例还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被计算机执行时可以实现上述图2所示实施例的签名方法或者图3所示实施例的验证方法。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

相关技术
  • 签名方法及装置、验证方法及装置、设备及存储介质
  • 一种签名写入方法、签名验证方法、装置及存储介质
技术分类

06120113208027