一种数字签名的生成和验证方法、装置、设备、存储介质与流程

未命名 08-06 阅读:67 评论:0


1.本说明书涉及数字签名技术领域,尤其涉及一种数字签名的生成和验证方法、装置、设备、存储介质。


背景技术:

2.数字签名技术作为鉴别通讯各方身份信息的重要工具,被越来越多的场景使用。数字签名技术包括签名和验签两部分,均会涉及到杂凑值的计算。在现有数字签名技术中,当每次消息访问签名/验签方设备时,在杂凑值大多数情况都固定时,仍会对杂凑值重复计算,导致硬件成本变高,影响签名/验签方设备的计算性能。


技术实现要素:

3.为克服相关技术中存在的问题,本说明书提供了一种数字签名的生成和验证方法、装置、设备、存储介质。
4.根据本公开实施例的第一方面,提供一种生成数字签名的方法,应用于签名方设备,包括:
5.获取待签名对象和用于计算杂凑值的预设信息;
6.若所述签名方设备查询到根据所述用于计算杂凑值的预设信息生成的历史杂凑值,则基于所述历史杂凑值生成所述待签名对象对应的数字签名。
7.可选的,所述用于计算杂凑值的预设信息至少包括:
8.用户身份标识id值、所述签名方设备使用的签名证书公钥值xa和ya。
9.可选的,所述方法还包括:
10.若所述签名方设备没有记录根据所述用于计算杂凑值的预设信息生成的历史杂凑值,则计算所述杂凑值并生成所述待签名对象对应的数字签名。
11.可选的,所述历史杂凑值在所述签名方设备配置所述签名证书时生成并储存。
12.根据本公开实施例的第二方面,提供一种验证数字签名的方法,应用于验签方设备,包括:
13.获取待验签对象、数字签名和用于计算杂凑值的预设信息;
14.若所述验签方设备查询到根据所述用于计算杂凑值的预设信息生成的历史杂凑值,则基于所述历史杂凑值验证所述待验签对象的数字签名。
15.可选的,所述用于计算杂凑值的预设信息至少包括:
16.用户身份标识id值、所述签名方设备使用的签名证书公钥值xa和yy。
17.可选的,所述方法还包括:
18.若所述验签方设备没有记录根据所述用于计算杂凑值的预设信息生成的历史杂凑值,则计算所述杂凑值并验证所述待验签对象的数字签名。
19.可选的,所述历史杂凑值在签名方设备配置签名证书时生成并储存。
20.根据本公开实施例的第三方面,提供一种生成数字签名的装置,应用于签名方设
备,包括:
21.接收单元,获取待签名对象和用于计算杂凑值的预设信息;
22.查找单元,查找所述签名方设备记录,将是否有根据所述用于计算杂凑值的预设信息生成的历史杂凑值的查找结果传递给签名单元;
23.签名单元,若接收到查找单元结果为有,则基于所述历史杂凑值生成所述待签名对象对应的数字签名。
24.根据本公开实施例的第四方面,提供一种验证数字签名的装置,应用于验签方设备,包括:
25.获取单元,用于获取待验签对象、数字签名和用于计算杂凑值的预设信息;
26.比对单元,查找所述验签方设备记录,将是否有根据所述用于计算杂凑值的预设信息生成的历史杂凑值的查找结果传递给签名单元;
27.验签单元,若接收到查找单元结果为有,则基于所述历史杂凑值验证所述待签名对象对应的数字签名。
28.根据本公开实施例的第五方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面或第二方面所述方法的步骤。
29.根据本公开实施例的第六方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如第一方面或第二方面所述方法的步骤。
30.本公开的实施例提供的技术方案可以包括以下有益效果:
31.由上述实施例可知,本公开对生成数字签名和验证数字签名算法中,需要反复计算的杂凑值提出了避免杂凑值冗余计算的方法,即:如果查询到用于计算杂凑值的预设信息生成的历史杂凑值,则直接复用历史杂凑值。相比于现有生成数字签名和验证数字签名算法,能够有效提升计算效率,减少硬件投资成本和能源、机房空间等的资源浪费。
32.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
33.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
34.图1是本说明书一示例性实施例示出的一种生成数字签名的方法流程图。
35.图2是本说明书一示例性实施例示出的签名/验签方设备与服务器之间实现通信的示意图。
36.图3是本说明书一示例性实施例示出的签名方设备与服务器的交互流程图。
37.图4是本说明书一示例性实施例示出的一种验证数字签名的方法流程图。
38.图5是本说明书一示例性实施例示出的验签方设备与服务器的交互流程图。
39.图6是本说明书一示例性实施例示出的签名证书导入签名/验签方设备的软件界面示意图。
40.图7是本说明书一示例性实施例示出的国密tls/ssl通信协议握手过程。
41.图8是本说明书一示例性实施例示出的一种生成数字签名的装置示意图。
42.图9是本说明书一示例性实施例示出的一种验证数字签名的装置示意图。
43.图10是本说明书一示例性实施例示出的一种电子设备结构示意图。
具体实施方式
44.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
45.在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
46.应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
47.如前所述,基于本说明书的技术方案,签名方设备在生成数字签名和验签方设备在验证数字签名时,能够避免对杂凑值的冗余计算,相比于相关技术而言,能够明显提升生成数字签名和验签的效率,达到节约能源、库房空间及硬件成本的效果。
48.为了便于理解,对本说明书所涉及到的部分概念进行解释说明:
49.数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串也是对信息发送者发送信息真实性的有效证明。它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术来实现的用于鉴别数字信息的方法,可用来防抵赖、防篡改。一套数字签名通常定义两种互补运算,一个用于签名,另一个用于验证。数字签名算法由一个签名者对数据产生数字签名,并由一个验证者验证签名的可靠性。每个签名者有一个公钥和一个私钥,其中私钥用于产生签名,验证者用签名者的公钥验证签名。数字签名是非对称密钥加密技术与数字摘要技术的应用。在签名的生成过程前,要用密码杂凑函数对杂凑值和待签名对象进行压缩;在验证过程之前,要用密码杂凑函数对杂凑值和待验签对象进行压缩。
50.以sm2数字签名算法为例,由中华人民共和国密码行业标准(gm/t0009-2012)可知,sm2算法是sm2椭圆曲线公钥密码算法,它推荐使用256位素域上的椭圆曲线作为标准曲线,在相同安全程度下,椭圆曲线密码较其他公钥密码所需密钥规模小。sm2数字签名算法,密钥交换协议以及公钥加密算法都使用了国家密码管理局批准的sm3密码杂凑算法和随机数发生器,并根据中华人民共和国密码行业标准总则来选取有限域和椭圆曲线,并生成密钥对。sm2私钥是一个大于等于1且小于n-1的长度为256位的整数。sm2公钥是sm2椭圆曲线上的一个点,由横坐标和纵坐标两个分量表示,记为(x,y),简记为q,每个分量的长度256位。sm2数字签名算法需要使用sm3算法计算杂凑值。
51.sm3算法又称sm3密码杂凑算法、哈希算法或散列算法,sm3算法给出了杂凑函数算
法的计算方法和计算步骤,适用于商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成,可满足多种密码应用的安全需求。在sm2,sm9标准中使用。sm3算法对输入长度小于2的64次方的比特消息,经过填充和迭代压缩,生成长度256比特杂凑值,其中使用了异或,模,模加,移位,与,或,非运算,由填充,迭代过程,消息扩展和压缩函数构成。
52.签名证书又称数字证书或公钥证书,由证书认证机构(ca)签名的包含公开密钥拥有者信息、公开密钥、签发者信息、有效期以及扩展信息的一种数据结构。按类别可分为个人证书、机构证书和设备证书,按用途可分为签名证书和加密证书。签名证书指使用国密算法(sm2-sm3)的标准x509格式证书,需要将国密ca证书内置,ca证书包含了当前证书的公钥信息。内置后才可以支持签名证书校验。证书链的root ca是在握手时,通过server certificate下发的,可以通过server certificate的root ca对当前的客户端预置的国密公钥ca进行验证。
53.签名证书的作用是确保客户端接收到的服务器公钥不是伪造的,防止冒用公信平台服务器给客户端发公钥,客户端用该公钥进行数字签名验证通过后,客户端不知道服务器身份被冒用的情况发生。因此必须借助签名证书解决这类安全问题。
54.在后文实施例中,签名证书是特指用于生成数字签名或验证数字签名时取证书公钥的证书,如国密tls/ssl安全通信协议中的签名证书和tls1.3安全通信协议中的国密证书。
55.国密tls(transport layer security)/ssl(secure socket layer)、tls1.3安全通信协议均属于不同的加密通道规范。国密tls/ssl利用对称加密、公私钥不对称加密及其密钥交换算法、ca系统进行加密且可信任的信息传输。ssl由以前的网景公司开发,tls是ssl标准化后的产物。tls是指传输层安全,是更为安全的升级版ssl。ssl是指安全套接层,是一项标准技术,可确保互联网连接安全,保护两个系统之间发送的任何敏感数据,防止读取和修改任何传输信息,包括个人资料。两个系统可能是指服务器和客户端(例如,浏览器和购物网站),或两个服务器之间(例如,含个人身份信息或工资单信息的应用程序)。对网络安全研发技术领域的技术人员而言,国密tls/ssl和tls1.3在实际工作中被视为ssl大类下两个不同的模块。国密tls/ssl和tls1.3是ssl安全通信协议的不同版本,tls1.3属于最新版本。
56.签名/验签方设备即生成数字签名和验证数字签名的设备。包括客户端设备(如电脑、手机、平板)及服务器设备等。当然,只要是能够实现签名/验签功能,相关技术中的任何签名/验签模块均可以应用于本说明书的技术方案中,本说明书并不对此进行限制。
57.为了实现本说明书的技术方案,签名/验签方设备还需包含除签名/验签功能之外的其他功能,这些功能将在下文实施例的介绍中予以详细说明。因此,签名/验签设备还需要具备除签名/验签功能之外的其他功能模块。其中,签名/验签设备可以为同时具备相关功能模块的单台设备,即实施例所需的功能模块均内置于该签名/验签设备中。或者,该签名/验签设备可以为仅具备部分功能模块的单台设备与外置的其他功能模块或具备其他功能模块的其他设备组合而成。本说明书并不限制签名/验签设备的实际构成形式。
58.下面将结合实施例,以sm2数字签名算法和计算杂凑值的sm3密码杂凑算法为例,针对本说明书的技术方案进行介绍。
59.在一实施例中,生成数字签名的算法为sm2数字签名算法。所述sm2数字签名计算方法为:id是用户a的标识符,entl是id的长度,da是a的私钥,基点g=(xg,yg),n为基点g的阶,a的公钥pa=da
·
g=(xa,ya)。杂凑值z=sm3(entl||id||a||b||xg||yg||xa||ya),sm3是sm3算法。所述sm2数字签名算法生成数字签名的计算步骤为:
60.用户a把待签名消息m发给用户b,用户a执行如下步骤生成待签名消息m的数字签名:
61.1.设置m*=z||m,计算e=sm3(m*);
62.2.产生随机数k∈[1,n-1];
[0063]
3.计算椭圆曲线点g1=k
·
g=(x1,y1);
[0064]
4.计算r=(e+x1)modn,若r=0或r+k=n则返回2;
[0065]
5.计算s=(1+da)-1
·
(k-r
·
da)mod n,若s=0则返回2;
[0066]
6.以(r,s)作为对待签名消息m的数字签名。
[0067]
在sm2数字签名算法计算过程中,sm3算法计算杂凑值的方法为:z=sm3(entl||id||a||b||xg||yg||xa||ya),具体符号描述如下:
[0068]
z:杂凑值;
[0069]
id:用户身份标识;
[0070]
entl:id的比特长度,由2个字节表示;
[0071]
a和b:系统曲线参数;
[0072]
xg和yg:基点的x轴坐标和y轴坐标;
[0073]
xa和ya:签名证书公钥的x轴坐标和y轴坐标;
[0074]
||:字符串拼接符号;
[0075]
以上符号描述中,仅所述id值和所述签名证书公钥值xa和ya会因为外部条件变化而改变。
[0076]
图1是本说明书一示例性实施例提供的一种生成数字签名的方法的流程图。如图1所示,该方法可以包括以下步骤:
[0077]
步骤100,获取待签名对象和用于计算杂凑值的预设信息。
[0078]
本实施例可以应用于签名方设备,即由签名方设备执行本实施例的各个步骤。如前所述,签名方设备至少具备生成数字签名功能的签名模块。而为了实现本实施例的各个步骤,该复印设备还需具备用于实现其他功能的其他功能模块。下文将对部分实施例进行列举,并相应说明签名方设备所需实现的其他功能及其所需具备的其他功能模块。
[0079]
当然,由于本说明书的技术方案可能存在多种实施例,在不同实施例中签名方设备所需实现的具体功能可能存在差异,使得签名方设备并不一定需要同时具备上述的所有功能模块,本领域技术人员可以根据实施例所需来做出实际的增减或选择,本说明书并不对此进行限制。
[0080]
签名方设备可以具备下述功能:能够获取待签名对象和用于计算杂凑值的预设信息。其中,签名方设备可以通过相关技术中的任意方式获取待签名对象,比如可以是处理器生成的数字签名任务等,签名方设备可以获取任意形式的待签名对象,比如业务流量、消息等,本说明书并不对此进行限制。
[0081]
用于计算杂凑值的预设信息至少包括:用户身份标识id值、所述签名方设备使用
的签名证书公钥值xa和ya。在数字签名算法中,如果不指定用户身份标识id参数,该参数一般使用默认值。在无特殊约定的情况下,用户身份标识id的长度为16字节,其默认值从左至右依次为:0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38。所述签名方设备使用的签名证书公钥值xa和ya表示了椭圆曲线上公钥点x轴坐标和公钥点y轴坐标。
[0082]
步骤102,若所述签名方设备查询到根据所述用于计算杂凑值的预设信息生成的历史杂凑值,则基于所述历史杂凑值生成所述待签名对象对应的数字签名。
[0083]
所有用于计算杂凑值的预设信息与用于计算杂凑值的预设信息生成的历史杂凑值之间的关联数据对存储在设备本地或服务器。换言之,设备本地或服务器相关联地记录了所有用于计算杂凑值的预设信息,以及历史杂凑值。因此,设备本地或服务器上存储的上述关联数据对可以作为本说明书技术方案中查询的基础:如果设备本地或服务器获取到待签名对象和用于计算杂凑值的预设信息,并且查询到所述用于计算杂凑值的预设信息与某一历史杂凑值之间的关联数据对,那么该历史杂凑值可以直接复用。
[0084]
签名方设备或者签名方设备与服务器配合,得到用于计算杂凑值的预设信息与预先记录的历史杂凑值之间关联数据对的查询结果。下面对配合方式进行举例说明:
[0085]
在一实施例中,签名方设备可以将用于计算杂凑值的预设信息与用于计算杂凑值的预设信息生成的历史杂凑值之间的关联数据对存储在设备本地。如果设备本地获取到待签名对象和用于计算杂凑值的预设信息,并且查询到所述用于计算杂凑值的预设信息与某一历史杂凑值之间的关联数据对,那么该历史杂凑值可以直接复用。
[0086]
在一实施例中,签名方设备可以将用于计算杂凑值的预设信息上传服务器,并接收服务器根据用于计算杂凑值的预设信息、预先记录的历史杂凑值之间关联数据对的查询结果。如图2所示,签名方设备可以是电脑20、手机21等具有生成数字签名功能的设备。签名方设备上运行有实现数字签名功能的应用,如浏览器web应用、客户端应用程序等。此处仅是举例说明,本说明书实施例对此不做限制。
[0087]
签名方设备维护有对应服务器1的访问地址,签名方设备选取服务器1的访问地址,并通过与服务器1之间建立连接以实现交互,完成用于计算杂凑值的预设信息与历史杂凑值的关联数据对的查询和历史杂凑值的复用。
[0088]
在一实施例中,所述方法应用于分布式服务器,所述分布式服务器上设置有含多个数据子服务器的分布式数据库,用于接收数据处理请求。数据处理请求可以是计算机设备基于自身对分布式数据库中的数据处理需求生成的,如计算机设备需要对分布式数据库中某些数据进行查询、更新、删除或插入等。此处仅是举例说明,本说明书实施例对此不做限制。
[0089]
在上述实施例中,签名方设备需包含通信模块和处理模块。通信模块用于在签名方设备与服务器间建立通信连接,该通信连接可以基于有线网络或无线网络建立,并采用相关技术中任意通信协议实现,本说明书并不对此进行限制。处理模块用于查询用于计算杂凑值的预设信息、预先记录的历史杂凑值之间的关联数据对,并得到相应结果。该处理模块可以是通用处理器或者专用处理芯片等,本说明书并不对此进行限制。签名方设备30与服务器1之间的交互过程可以如图3所示:
[0090]
在步骤301中,签名方设备30获得数字签名任务。签名方设备可以通过相关技术中
的任意方式获取待签名对象,比如可以是处理器生成的数字签名任务等,本说明书并不对此进行限制。
[0091]
在步骤302中,签名方设备30获得待签名对象和用于计算杂凑值的预设信息。签名方设备30可以获取任意形式的待验签对象,比如业务流量、消息等,本说明书并不对此进行限制。用于计算杂凑值的预设信息包括:
[0092]
用户身份标识id值、系统曲线参数a和b、基点xg和yg、设备使用的签名证书公钥值xa和ya。其中,用户身份标识id值和设备使用的签名证书公钥值xa和ya会随外部条件变化而改变。
[0093]
在步骤303中,签名方设备30向服务器1发送用于计算杂凑值的预设信息。
[0094]
在步骤304中,服务器1查询是否存在用于计算杂凑值的预设信息对应的历史杂凑值。
[0095]
在步骤305中,服务器1返回查询结果信息给签名方设备30。
[0096]
在步骤306中,签名方设备30根据服务器1返回的查询结果信息继续数字签名过程。具体的,当查询结果信息为存在对应的历史杂凑值,则在数字签名过程中直接取用历史杂凑值,否则计算杂凑值。
[0097]
图4是本说明书一示例性实施例提供的一种验证数字签名的方法,该方法可以包括以下步骤:
[0098]
步骤400,获取待验签对象、数字签名和用于计算杂凑值的预设信息。
[0099]
步骤402,若所述验签方设备查询到根据所述用于计算杂凑值的预设信息生成的历史杂凑值,则基于所述历史杂凑值验证所述待验签对象的数字签名。
[0100]
本实施例可以应用于验签方设备本身或验签方和服务器,如前所述,验签方设备本身或服务器都可以相关联地记录所有用于计算杂凑值的预设信息,以及所述用于计算杂凑值的预设信息生成的历史杂凑值。因此,如果验签方设备本身或服务器接收到用于计算杂凑值的预设信息,并且查询到所述预设信息与某一历史杂凑值之间的关联数据对,那么该历史杂凑值可以直接复用。
[0101]
实际上,图4所示的实施例与图1所示的实施例相对应,两者的差异仅在于:图1从签名方设备的角度对技术方案进行描述,而图4从验签方设备的角度对技术方案进行描述,但两者并不存在本质差异。签名方设备同样可作为验签方设备。
[0102]
在一实施例中,验证数字签名的算法为sm2数字签名算法。所述sm2数字签名计算方法为:id是用户a的标识符,entl是id的长度,da是a的私钥,基点g=(xg,yg),n为基点g的阶,a的公钥pa=da
·
g=(xa,ya)。杂凑值z=sm3(entl||id||a||b||xg||yg||xa||ya),sm3是sm3算法。所述sm2数字签名算法验证数字签名合法性的计算步骤为:
[0103]
用户b接收到用户a发的消息m

和数字签名(r

,s

)和发送者用户a的公钥pa,用户b执行如下步骤验证数字签名合法性:
[0104]
1.检验r

∈[1,n-1]是否成立,若不成立则验证不通过;
[0105]
2.检验s

∈[1,n-1]是否成立,若不成立则验证不通过;
[0106]
3.设置m*=z||m


[0107]
4.计算e

=sm3(m*);
[0108]
5.计算t=(r

+s

)mod n,若t=0,则验证不通过;
[0109]
6.计算椭圆曲线点(x1

,y1

)=s

·
g+t
·
pa;
[0110]
7.计算v=(e

+x1

)mod n,检验v=r

是否成立,若成立则验证通过;
[0111]
否则验证不通过。
[0112]
sm3算法计算杂凑值的方法和符号描述同上文生成数字签名的算法实施例,不再赘述。在sm3算法计算过程中,仅id值和签名证书公钥值xa和ya会因为外部条件变化而改变。
[0113]
其他关于图4所示的实施例,可以参考图1-3所示的各个实施例,此处不再一一赘述。
[0114]
具体的,与图3所示实施例类似的,验签方设备50与服务器1之间的交互过程可以如图5所示:
[0115]
在步骤501中,验签方设备50获得验签任务。验签方设备可以通过相关技术中的任意方式获取待验签对象,比如可以是处理器生成的验证数字签名任务等,验签方设备可以获取任意形式的待验签对象,比如业务流量、消息等,本说明书并不对此进行限制。
[0116]
在步骤502中,验签方设备50获得待验签对象和用于计算杂凑值的预设信息。验签方设备50可以获取任意形式的待验签对象,比如业务流量、消息等,本说明书并不对此进行限制。用于计算杂凑值的预设信息包括:
[0117]
用户身份标识id值、系统曲线参数a和b、基点xg和yg、设备使用的签名证书公钥值xa和ya。其中,用户身份标识id值和设备使用的签名证书公钥值xa和ya会随外部条件变化而改变。
[0118]
在步骤503中,验签方设备50向服务器1发送用于计算杂凑值的预设信息。
[0119]
在步骤504中,服务器1查询是否存在用于计算杂凑值的预设信息对应的历史杂凑值。
[0120]
在步骤505中,服务器1返回查询结果信息给验签方设备50。
[0121]
在步骤506中,验签方设备50根据服务器1返回的查询结果信息继续数字签名过程。具体的,当查询结果信息为存在对应的历史杂凑值,则在数字签名过程中直接取用历史杂凑值,否则计算杂凑值。
[0122]
在一实施例中,所述方法应用于国密tls/ssl安全通信协议。
[0123]
ssl的英文全称是“secure sockets layer”,中文名为“安全套接层协议”。它是基于web应用的安全协议,指定了一种在应用程序协议和tcp/ip协议之间提供数据安全性分层的机制,为tcp/ip连接提供数据加密、服务器认证、消息完整性及可选客户机认证。ssl保障在internet上数据传输安全,利用数据加密技术确保数据在网络传输中不被截取。而tls(transport layer security)指传输层安全,是更安全的升级版ssl,用在两个通信应用程序之间提供保密性和数据完整性,该协议由两部分组成:tls记录协议和tls握手协议,tls协议目前被广泛使用。
[0124]
经国密化改造后,提出国密tls/ssl安全通信协议,为ssl安全通信协议不同版本。与标准ssl通信协议不同的是,国密tls/ssl安全通信协议包含sm2数字签名算法。在所述sm2数字签名算法步骤中,系统曲线参数和基点为定值;在服务端设备中签名证书一般都是设备配置好不动的,所以可以认为签名证书也是定值;entl为id的比特长度,entl随id变化而变化,如果id固定,那么entl也将固定。目前,现在绝大部分国密tls/ssl设备(包含openssl在内)使用的id,都是国密标准中出现的id“1234567812345678”。因此,杂凑值在绝
finished,以结束握手流程。
[0134]
其中,在第二阶段服务端认证中的服务端密钥交换消息server key exchange和第三阶段客户端认证中的客户端证书验证消息certificate verify会用到本方案生成数字签名方法,并在对端验证数字签名时,会用到本方案验证数字签名方法。当所述签名/验签方设备在完成生成数字签名/验证数字签名之后,继续国密tls/ssl握手流程。
[0135]
在一实施例中,用于tls1.3安全通信协议的加密套件tls_sm4_gcm_sm3和tls_sm4_ccm_sm3中。上述两个加密套件包含sm2数字签名算法和sm3数字摘要算法,可以应用本方案。
[0136]
在进行tls1.3安全通信协议前,签名/验签方设备首先需要配置签名证书,而证书部分是标准tls协议与国密ssl协议最大的区别,与国密tls/ssl安全通信协议不同的是,tls1.3安全通信协议对签名证书的配置不再有两张签名证书,只包含单张签名证书。签名证书配置方式有导入方式配置或命令行输入命令方式选择签名证书(如开源openssl)。其中,导入方式配置根据不同公司对网络安全产品配套软件的不同,软件界面略有差异,类比图6,不再赘述。
[0137]
tls1.3的用户身份标识id值和国密tls/ssl中的用户身份标识id值不同,在tls1.3中,除了客户端和服务端在证书验证消息certificate verify中验证对方的证书外,id值用的是tlsv1.3+gm+cipher+suite的ascii码,为定值。
[0138]
tls的握手流程和国密tls/ssl的握手流程不同,不同加密套件有不同细节区别,tls1.3握手协议主要流程分为以下三部分。
[0139]
1.密钥交换:选择tls协议版本和加密的算法,并且协商算法所需的参数。这段是明文传输的。2.服务器参数:建立其他握手协议参数,例如是否需要认证客户端,支持何种应用层协议等。3.认证:对服务器进行认证(包括可选的客户端认证)并且提供密钥确认和验证握手完整性功能。
[0140]
其中,第三部分认证阶段应用了本方案中的数字签名和验签方法,在这三个阶段完成后,就可以进行应用层数据传输。
[0141]
与前述数字签名生成方法的实施例相对应,本说明书还提供了一种生成数字签名的装置及其所应用的终端的实施例。
[0142]
请参考图8,图8是一示例性实施例示出的一种生成数字签名的装置的结构示意图。如图8所示,在软件实施方式中,该装置可以包括:
[0143]
接收单元801,用于获取待签名对象和用于计算杂凑值的预设信息;
[0144]
查找单元802,查找所述签名方设备记录,将是否有根据所述用于计算杂凑值的预设信息生成的历史杂凑值的查找结果传递给签名单元;
[0145]
签名单元803,若接收到查找单元结果为有,则基于所述历史杂凑值生成所述待签名对象对应的数字签名。
[0146]
与前述数字签名生成方法的实施例相对应,本说明书还提供了一种验证数字签名的装置及其所应用的终端的实施例。
[0147]
请参考图9,图9是一示例性实施例示出的一种验证数字签名的装置的结构示意图。如图9所示,在软件实施方式中,该装置可以包括:
[0148]
获取单元901,用于获取待验签对象、数字签名和用于计算杂凑值的预设信息;
[0149]
比对单元902,查找所述验签方设备记录,将是否有根据所述用于计算杂凑值的预设信息生成的历史杂凑值的查找结果传递给签名单元;
[0150]
验签单元903,若接收到查找单元结果为有,则基于所述历史杂凑值验证所述待签名对象对应的数字签名。
[0151]
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0152]
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0153]
本说明书还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本说明书提供的任一方法的步骤。图10是一示例性实施例中的一种电子设备的示意结构图。请参考图10,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成生成数字签名的装置或验证数字签名的装置。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
[0154]
本说明书还提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本说明书提供的生成数字签名的方法或验证数字签名的方法的步骤。
[0155]
具体的,适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如eprom、eeprom和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及cd rom和dvd-rom盘。
[0156]
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0157]
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
[0158]
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
[0159]
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明
书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

技术特征:
1.一种生成数字签名的方法,其特征在于,应用于签名方设备,所述方法包括:获取待签名对象和用于计算杂凑值的预设信息;若所述签名方设备查询到根据所述用于计算杂凑值的预设信息生成的历史杂凑值,则基于所述历史杂凑值生成所述待签名对象对应的数字签名。2.根据权利要求1所述的方法,其特征在于,所述用于计算杂凑值的预设信息至少包括:用户身份标识id值、所述签名方设备使用的签名证书公钥值x
a
和y
a
。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:若所述签名方设备没有查询到根据所述用于计算杂凑值的预设信息生成的历史杂凑值,则计算所述杂凑值并生成所述待签名对象对应的数字签名。4.根据权利要求2所述的方法,其特征在于,所述历史杂凑值在所述签名方设备配置所述签名证书时生成并储存。5.一种验证数字签名的方法,其特征在于,应用于验签方设备,所述方法包括:获取待验签对象、数字签名和用于计算杂凑值的预设信息;若所述验签方设备查询到根据所述用于计算杂凑值的预设信息生成的历史杂凑值,则基于所述历史杂凑值验证所述待验签对象的数字签名。6.根据权利要求5所述的方法,其特征在于,所述用于计算杂凑值的预设信息至少包括:用户身份标识id值、所述签名方设备使用的签名证书公钥值x
a
和y
a
。7.根据权利要求5所述的方法,其特征在于,所述方法还包括:若所述验签方设备没有记录根据所述用于计算杂凑值的预设信息生成的历史杂凑值,则计算所述杂凑值并验证所述待验签对象的数字签名。8.根据权利要求5所述的方法,其特征在于,所述历史杂凑值在签名方设备配置签名证书时生成并储存。9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至8中任一所述方法的步骤。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至8中任一所述方法的步骤。

技术总结
本说明书提供一种数字签名的生成和验证方法、装置、设备、存储介质,应用于签名方设备,所述方法包括:获取待签名对象和用于计算杂凑值的预设信息;若所述签名方设备查询到根据所述用于计算杂凑值的预设信息生成的历史杂凑值,则基于所述历史杂凑值生成所述待签名对象对应的数字签名。本说明书提供的技术方案提高了数字签名和验签方法的计算性能,减少了硬件投资成本,降低了对能源及机房空间的需求。降低了对能源及机房空间的需求。降低了对能源及机房空间的需求。


技术研发人员:尤圣德 孙艳杰 汪庆权
受保护的技术使用者:杭州迪普科技股份有限公司
技术研发日:2023.04.14
技术公布日:2023/8/5
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐