CN112380573B - 一种块链式账本中的数字签名方法、装置及设备 - Google Patents

一种块链式账本中的数字签名方法、装置及设备 Download PDF

Info

Publication number
CN112380573B
CN112380573B CN201910689267.9A CN201910689267A CN112380573B CN 112380573 B CN112380573 B CN 112380573B CN 201910689267 A CN201910689267 A CN 201910689267A CN 112380573 B CN112380573 B CN 112380573B
Authority
CN
China
Prior art keywords
block
digital signature
data
data block
signature
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910689267.9A
Other languages
English (en)
Other versions
CN112380573A (zh
Inventor
杨新颖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ant Chain Technology Co ltd
Original Assignee
Advanced New Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced New Technologies Co Ltd filed Critical Advanced New Technologies Co Ltd
Priority to CN201910689267.9A priority Critical patent/CN112380573B/zh
Publication of CN112380573A publication Critical patent/CN112380573A/zh
Application granted granted Critical
Publication of CN112380573B publication Critical patent/CN112380573B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/12Accounting

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Technology Law (AREA)
  • Strategic Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

公开了一种块链式账本中的数字签名方法、装置及设备。通过在创建块链式账本时就写入账本的签名方式,或者,通过在配置文件中对账本的签名方式进行指定,数据库服务端可以每当账本中的数据块到达签名锚点时,即获取该账本的用于指示数字签名类型参数的参数值,进而确定出签名所需要的信息和签名方,让签名方进行数字签名,并返回相应的数字签名。

Description

一种块链式账本中的数字签名方法、装置及设备
技术领域
本说明书实施例涉及信息技术领域,尤其涉及一种块链式账本中的数字签名方法、装置及设备。
背景技术
在以中心化的块链式账本存储数据时,经常会需要用户、平台或者其它独立第三方对账本进行数字签名,数字签名存在较多的种类,对账本进行签名也需要耗费较多系统资源。在实际应用中,根据实际场景,可能用户并不需要所有类型的数字签名。例如,在账本仅仅是用户个人账本时,就无需用户自身的签名。
基于此,需要一种更灵活的块链式账本中的数字签名方案。
发明内容
本申请实施例的目的是提供一种更灵活的块链式账本中的数字签名方案。
为解决上述技术问题,本申请实施例是这样实现的:
一种块链式账本中的数字签名方法,所述方法包括:
检测账本中的数据块的数量,当数据块的数量到达签名锚点值时,确定待签名的数据块;
获取关于账本的数字签名类型参数的参数值,所述参数值用于指示所述账本中的数据块所需要包含的数字签名的类型,所述数字签名的类型包括用户数字签名、平台数字签名或者授时证书签名;
根据所述参数值确定签名方,以及,确定对待签名的数据块进行签名时所需要的签名信息,发送所述签名信息至所确定的签名方,以便所述签名方进行数字签名,其中,所述签名信息至少包含所述待签名的数据块的起始块高、结束块高;
接收由所述签名方所返回的对于所述待签名的数据块的数字签名。
对应的,本说明书实施例还提供一种块链式账本中的数字签名装置,所述装置包括:
检测模块,检测账本中的数据块的数量,当数据块的数量到达签名锚点值时,确定待签名的数据块;
获取模块,获取关于账本的数字签名类型参数的参数值,所述参数值用于指示所述账本中的数据块所需要包含的数字签名的类型,所述数字签名的类型包括用户数字签名、平台数字签名或者授时证书签名;
确定模块,根据所述参数值确定签名方,以及,确定对待签名的数据块进行签名时所需要的签名信息,发送所述签名信息至所确定的签名方,以便所述签名方进行数字签名,其中,所述签名信息至少包含所述待签名的数据块的起始块高、结束块高;
签名接收模块,接收由所述签名方所返回的对于所述待签名的数据块的数字签名。
通过在创建块链式账本时就写入账本的签名方式,或者,通过在配置文件中对账本的签名方式进行指定,数据库服务端可以每当账本中的数据块到达签名锚点时,即获取该账本的用于指示数字签名类型参数的参数值,进而确定出签名所需要的信息和签名方,让签名方进行数字签名,并返回相应的数字签名,实现根据用户需要对于锚点前数据块的灵活签名。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本说明书实施例所提供的一种生成块链式账本的流程示意图;
图2为本说明书实施例所提供的一种伪链的示意图;
图3为本说明书实施例所提供的生成授时证书的一种流程示意图;
图4为本说明书实施例所提供的一种授时证书的结构示意图;
图5为本说明书实施例所提供的一种块链式账本中的数字签名方法的流程示意图;
图6是本说明书实施例提供的一种块链式账本中的数字签名装置的结构示意图;
图7是用于配置本说明书实施例方法的一种设备的结构示意图。
具体实施方式
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
首先对本说明书实施例中所涉及的中心化下的块链式的账本予以说明。在中心化的数据库服务提供方,块链式的账本通过如下方式生成,如图1所示,图1为本说明书实施例所提供的一种生成块链式账本的流程示意图,包括:
S101,接收待存储的数据记录,确定各数据记录的哈希值。
此处的待存储的数据记录,可以是客户端个人用户的各种消费记录,也可以是应用服务器基于用户的指令,在执行业务逻辑时产生的业务结果、中间状态以及操作记录等等。具体的业务场景可以包括消费记录、审计日志、供应链条、政府监管记录、医疗记录等等。
S103,当达到预设的成块条件时,确定待写入数据块中的各数据记录,生成包含数据块的哈希值和数据记录的第N个数据块。
所述预设的成块条件包括:待存储的数据记录数量达到数量阈值,例如,每接收到一千条数据记录时,生成一个新数据块,将一千条数据记录写入块中;或者,距离上一次成块时刻的时间间隔达到时间阈值,例如,每隔5分钟,生成一个新数据块,将在这5分钟内接收到的数据记录写入块中。
此处的N指的是数据块的序号,换言之,在本说明书实施例中,数据块是以块链的形式,基于成块时间的顺序先后排列,具有很强的时序特征。其中,数据块的块高基于成块时间的先后顺序单调递增。块高可以是序号,此时第N个数据块的块高即为N;块高也可以其它方式生成,例如,将数据块的成块时间对称加密转换为单调递增的大整型数据作为块高。
当N=1时,即此时的数据块为为初始数据块。初始数据块的哈希值和块高基于预设方式给定。例如,初始数据块中不包含数据记录,哈希值则为任一给定的哈希值,块高blknum=0;又例如,初始数据块的生成触发条件与其它数据块的触发条件一致,但是初始数据块的哈希值由对初始数据块中的所有内容取哈希确定。
当N>1时,由于前一数据块的内容和哈希值已经确定,则此时,可以基于前一数据块(即第N-1个数据块)的哈希值生成当前数据块(第N个数据块)的哈希值,例如,一种可行的方式为,确定每一条将要写入第N个块中的数据记录的哈希值,按照在块中的排列顺序,生成一个默克尔树,将默克尔树的根哈希值和前一数据块的哈希值拼接在一起,再次采用哈希算法,生成当前块的哈希值。又例如,还可以按照块中数据记录的顺序进行拼接并取哈希得到整体数据记录的哈希值,拼接前一数据块的哈希值和整体数据记录的哈希值,并对拼接得到的字串进行哈希运算,生成数据块的哈希值。
用户在上传数据成功后,即可以得到对应的数据记录的哈希值以及所处的数据块的哈希值,并保存,并且可以基于该哈希值发起完整性验证。具体的验证方式即为在数据库中重新计算数据记录自身的哈希值以及所处的数据块的哈希值,与本地所保存的进行对比。
上述方式生成的数据块,可以包括块头和块体两个部分。块体中可以用于存储数据记录的明文,或者数据记录的哈希值等等;块头中可以用于存储有关本数据块的元数据,例如,账本的版本号,前一数据块的哈希值,自身数据块中的数据记录所组成的默克尔树的根哈希值,自身数据块的哈希值,用于记录数据记录的被操作状态的状态数组等等。
通过前述的数据块的生成方式,每一个数据块通过哈希值确定,数据块的哈希值由数据块中的数据记录的内容、顺序以及前一数据块的哈希值决定。用户可以随时基于数据块的哈希值发起验证,对于数据块中任何内容(包括对于数据块中数据记录内容或者顺序的修改)的修改都会造成在验证时计算得到的数据块的哈希值和数据块生成时的哈希值不一致,而导致验证失败,从而实现了中心化下的不可篡改。
在对于块链式的账本进行验证时,一般而言,即指定一段数据块进行连续的完整性验证,或者从初始数据块开始进行连续的完整性验证。验证的方式即为获取前一数据块的哈希值,并采用与生成数据块的哈希值时的同样算法,根据自身的数据记录和前一数据块的哈希值,重新计算一遍自身数据块的哈希值,并与之前所保存的数据块的哈希值进行一致性对比。
通过上述方式生成的账本,可以是是单人账本,只有一个用户具有操作权限(包括查询、验证,添加等等),也可以是一个联合账本,多个用户具有操作权限。各用户和平台(即数据库服务端所处的服务平台)可以对账本进行用户数字签名,例如,用户A对块高0至1000的数据块进行用户数字签名,表征这部分数据块已经通过了用户A的完整性验证。或者,对高0至900的数据块进行平台数字签名,表征这部分数据块已经通过了数据库服务端的完整性验证。数字签名的方式即为对于验证结果(验证结果中至少应该包含本次验证的数据块的起始块高、结束块高,由数据块的哈希值所组成的默克尔树的根哈希值以及验证结果)进行私钥加密,生成相应的数字签名文件,并保存于数据库服务端中。
同时,在上述方式中,仍然有可能用户和服务方联合起来对于部分数据块进行了伪造,重新生成一条相关的伪链,从而形成一个与原账本部分相同的新的账本,以躲避相关的审计和验证。如图2所示,图2为本说明书实施例所提供的一种伪链的示意图。在生成伪链的过程中,数据块的成块方式和前述的成块方式相同。
在该示意图中,在账本已经记录了很多数据块之后,业务方认为第1000个数据块中的数据记录有问题,因此,为了不暴露该问题,其和数据库服务方联合起来,从第1000个数据块开始对数据块进行了替换,重新生成一个新的第1000个数据块,接在第999个数据块之后,形成一条与原账本部分相同的伪链,以躲避验证和审计,而在外部第三方而言并不能识别出伪链和真链。
因此,在本说明书实施例中还可以对账本进行授时认证,以防止用户和服务端联合提供伪链躲避审计,如图3所示,图3为本说明书实施例所提供的生成授时证书的一种流程示意图,包括如下步骤:
S301,确定需要进行授时认证的目标账本,所述目标账本中至少包含一个数据块,或者多个块高连续的数据块。
如前所述,在所述链式账本中,除初始数据块以外,每一数据块中包含至少一条数据记录,每一数据块中包含由前一数据块的哈希值和自身所包含的数据记录确定的自身数据块的哈希值,数据块的块高基于成块时间的先后顺序单调递增。
具体而言,服务方首先从已经生成并存储的数据块中确定出需要进行授时认证的一段账本,其中至少应该包含一个数据块,或者多个块高连续的数据块。确定的方式可以基于用户操作进行指定,例如,用户发起授时指令,指令中包含需要进行授时认证的起始块高和块数量;将所述部分账本作为目标账本。
目标账户也可以是无需用户指定,服务方基于预设的业务逻辑自动进行。例如,从最细粒度上,可以每一个数据块都去申请授时。在这种方式下,部分账本的默克尔树的根哈希即为该数据块的块哈希值,该方式可以最大程度的对账本(即各数据块)进行真实性的保护。由于数据块的出块频率较高,这种方式无论对于授时中心,还是对于服务方而言,成本开销都会比较大。
一种可选的方式为,设置一定的授时预设条件,当满足一定的授时预设条件时,发起授时请求。在新生成的数据块都认为是待授时认证的数据块时,所述的授时预设条件可以是:待授时认证的数据块达到数量阈值,或者,距离上一次授时认证的时间间隔已经到达时间阈值。
S303,按照所述目标账本中数据块的块高的顺序,生成对应于所述目标账本的默克尔树,基于各数据块的块哈希确定所述默克尔树的根哈希。
由于链式账本的前后依存性,此处生成的默克尔树只需按照各数据块的顺序进行生成即可。具体的根哈希的计算方式即为常规的计算方式,此处不再赘述。
S305,将所述默克尔树的根哈希作为目标账本的根哈希,将所述根哈希和数据块的相关信息发送至时间公正机构,其中,所述数据块的相关信息包括起始块高和结束块高。
时间公正机构可以是诸如国家授时中心,或者国家授时中心所授权的相应授时机构。时间公正机构接收到上述信息,即给出一个可信时间戳,并且对可信时间戳进行数字签名认证,生成一个包含可信时间戳和数字签名的授时证书,其中授时证书中还可以包含上述数据块的相关信息,数字签名的方式为常规的私钥加密、公钥解密即可。如图4所示,图4为本说明书实施例所提供的一种授时证书的结构示意图。
S307,接收时间公正机构所返回的对应于所述目标账本的授时证书,其中,所述授时证书中包括所述目标账本的起始块高、结束块高、可信时间戳和所述目标账本的根哈希。
从而,数据库服务方可以接收到一连串的包含时间公正机构签名的可信授时证书,每一个授时证书中包含一个可信时间戳,且对应于一段账本。一个授时证书可以证明其对应的部分账本是在该可信时间戳之前生成的。通过授时证书中的相关信息可以明确的知道是哪部分账本。数据库服务方可以对一系列的授时证书进行相应的管理,以及验证。例如,数据库服务方可以对每个授时证书进行顺序编号。建立一个关于授时证书的数据库或者索引。在数据库或者索引中包含有起始数据块高、结束数据块高、授时证书对应的部分账本的根哈希值和授时证书编号的对应关系表。
综上所述,在本说明书实施例中,可以提供有多种数字签名的方式来保障账本中数据的真实和完整性,各方面的用户以及权威第三方都可以参与数字签名中。用户可以事先通过输入参数值的方式来事先确定需要哪些数字签名。
具体而言,在创建初始数据块时,可以用初始数据块记载有关创建账本的元数据。例如,服务端可以通过接收用户的创建账本的创建指令的方式,创建用户账本。创建指令中就可以包含有数字签名类型参数的参数值,用以指定本账本所需要的签名。当然,创建指令中还可以包含有其它参数,例如,管理员ID、账本创建时间、账本名称等等。
例如,使用字符串“QM”表征数字签名类型参数,“QM=ROLE”即为需要用户数字签名,“QM=LEDGER”为平台数字签名,“QM=TIME”为需要授时证书签名。数据库服务端可以在创建账本时,即根据用户的指令,将具体的参数值记录至初始数据块中
在创建账本时,即可以将所述数字签名类型参数写入所创建的账本的初始数据块的块头中,同时,生成包含所述创建指令的数据记录,将所述数据记录写入所述初始数据块的块体中。日后可以随时从初始数据块中查询得到用户是如何创建该账本的。
同时,在创建账本时,还可以生成所述账本的签名配置文件,签名配置文件中的参数值即为创建指令中的参数值,所述签名配置文件用于配置所述账本的数字签名类型参数的参数值。换言之,在初始设定了参数值以后,用户还可以通过更改配置文件来实现对于数字签名类型的更改。
例如,用户可以向数据库服务端发起指令“PROOF”来更改账本的签名类型。例如,用户输入指令PROOF(ALL,1000),将配置文件中的参数值修改为“ALL”,表示对于前1000个数据块,需要所有类型的数据签名;或者,用户输入指令“PROOF(1,ROLE)”,将配置文件中的参数值修改为(1,ROLE),表示需要1种类型的数字签名,即“ROLE”所表征的用户数字签名;或者,用户输入指令“PROOF(2,LEDGER,TIME)”,将配置文件中的参数值修改为(2,LEDGER,TIME),表示需要2种类型的数字签名,即“LEDGER”所表征的平台数字签名,和,“TIME”所表征的用授时证书签名。
若用户没有对参数值进行指定或者配置,则可以默认用户需要所有类型的数字签名,将参数值设定为“QM=ALL”并写入账本。
在实际应用中,一些账本可能并不需要这么完整的数字签名,例如,一些账本不需要进行日后的审计,那么就没有必要进行授时证书签名;一些完全信任中心化的数据库服务端的账本可以无需平台数字签名等等。基于用户的实际需要提供相应的数字签名方式,一方面可以降低系统开销,另一方面可以避免用户的繁琐操作。
基于此,本说明书实施例提供一种块链式账本中的数字签名方法,如图5所示,图5为本说明书实施例所提供的一种块链式账本中的数字签名方法的流程示意图,所述方法包括:
S501,检测账本中的数据块的数量,当数据块的数量到达签名锚点值时,确定待签名的数据块。
数据库服务端可以定期对已经生成的账本中的数据块进行遍历式的巡检,从而可以明确的知道每个账本中已经包含有多少数据块。例如,在块高为自然数时,一种检测方式为检测每个账本的块高即可。
签名锚点值可以是在各账本中相同,也可以在各账本中不同,例如,用户可以预先设置自身账本的签名锚点值。在用户没有设置的情形下,签名锚点值可以是一个默认值,例如,签名锚点值为差值为1000的构成的等差数列:1000,2000,3000,……,即每1000个数据块进行一次签名。签名锚点值是一个动态变化的。例如,上次的签名锚点值是1000,本次的签名锚点值可以是3000。
假设上一次的签名锚点值是1000,如果本次检测时发现,新生成了500个数据块,即块高达到了1500,则可以知道,数据块的数量没有到达签名锚点值2000;
假设上一次的签名锚点值是1000,如果本次检测时发现,新生成了500个数据块,即块高达到了5500,则可以知道,达到了本次的的签名锚点值5000;
待签名的数据块为一段连续的数据块,其中,最前一个数据块的块高即为上次进行签名时的最后一个数据块的块高+1(或者,可以认为是上次的签名锚点值+1),最后一个数据块的块高即为本次签名锚点值。
S503,获取关于账本的数字签名类型参数的参数值。
如前所述,数字签名存在多种类型,因此,可以通过数字签名类型参数来表征数字签名,参数的具体参数值用于指示所述账本中的数据块所需要包含的数字签名的类型,所述数字签名的类型包括用户数字签名、平台数字签名或者授时证书签名。
如前所述,一个账本所需要的数字签名类型已经通过参数值被写入了账本的初始数据块中,或者,被写入了该账本的签名配置文件中。因此,可以从初始数据块的块头中或者从签名配置文件中获取具体的参数值。在二者不同的情形下,以签名配置文件中的参数值为准。
S505,根据所述参数值确定签名方,以及,确定对待签名的数据块进行签名时所需要的签名信息,发送所述签名信息至所确定的签名方。
在参数值为“ROLE”时,签名方即为该账本所有的管理员用户,即,对于账本中的完整性验证需要所有的管理员用户一致通过;
在参数值为“LEDGER”时,签名方即为提供账本服务的数据库服务端(即平台方),对于账本的完整性验证需要平台方提供数字签名;
在参数值为“TIME”时,签名方即为前述的提供授时证书签名的时间公证机构。
需要说明的是,上述示例性说明给出了具体的参数值,但在实际应用中,参数值是可以根据实际需要自行设定的,这并不构成对本方案的限定。以及,参数值和签名方的对应关系可以在数据库服务端中预先设置即可。
此外,数字签名类型参数的参数值可以是多个,例如,“QM=(2,LEDGER,TIME)”,由此得到的签名方也包含对应的多个,即LEDGER所对应的平台方和TIME所对应的时间公正机构;以及,根据参数值“ROLE”在确定用户时,同样可以对应于多个用户,例如,该账本中的多名管理员用户。
在需要用户数字签名或者平台数字签名时,进行签名时所需要的签名信息可以有多种形式,例如,一种形式可以是包括:待签名的数据块的全部块头和块体。这种方式下,用户进行完整性验证时可以进行充分的完整性验证。
具体而言,用户可以对数据记录进行抽查,计算任一数据块中的数据记录的哈希值,与本地预先保存的数据记录的哈希值进行对比;或者,验证任一数据块中的数据记录所组成的默克尔树的根哈希值与块头中所保存的根哈希值的一致性;或者,针对任一数据块,根据自身的数据记录和前一数据块的哈希值,重新计算一遍自身数据块的哈希值,并与之前所保存在块头中的该数据块的哈希值进行一致性对比。这种方式下用户对于账本的验证最为完整,需要传输块体,而块体所包含的数据量较大,需要占用的带宽资源较多,用户进行验证时所需要的计算资源也较多。
另一种形式即为:不发送块体信息,只发送待签名的数据块的起始块高和结束块高。具体而言,用户可以根据预存用户本地的块头信息,根据起始块高和结束块高,验证各数据块的哈希值。若用户本地没有预存块头信息,数据库服务端可以发送块头信息至用户。
如前所述,在需要时间公正机构进行授时证书签名时,签名信息则是包括目标账本(即待签名的账本)的起始块高、结束块高和所述目标账本的根哈希。
S507,接收由所述签名方所返回的对于所述待签名的数据块的数字签名。
用户方和平台方所返回的即为用户数字签名和平台数字签名,时间公正机构所返回的即为授时证书签名。
在本次数字签名结束之后,可以该账本的已签名块高至,将其推进为本次签名时所确定的最后一个数据块的块高,以便下次检测签名锚点值是进行进一步地数字签名。
通过在创建块链式账本时就写入账本的签名方式,或者,通过在配置文件中对账本的签名方式进行指定,数据库服务端可以每当账本中的数据块到达签名锚点值时,即获取该账本的用于指示数字签名类型参数的参数值,进而确定出签名所需要的信息和签名方,让签名方进行数字签名,并返回相应的数字签名,实现根据用户需要对于锚点前数据块的灵活签名。
对应的,本说明书实施例还提供一种块链式账本中的数字签名装置,如图6所示,图6是本说明书实施例提供的一种块链式账本中的数字签名装置的结构示意图,包括:
检测模块601,检测账本中的数据块的数量,当数据块的数量到达签名锚点值时,确定待签名的数据块;
获取模块603,获取关于账本的数字签名类型参数的参数值,所述参数值用于指示所述账本中的数据块所需要包含的数字签名的类型,所述数字签名的类型包括用户数字签名、平台数字签名或者授时证书签名;
确定模块605,根据所述参数值确定签名方,以及,确定对待签名的数据块进行签名时所需要的签名信息,发送所述签名信息至所确定的签名方,以便所述签名方进行数字签名,其中,所述签名信息至少包含所述待签名的数据块的起始块高、结束块高;
签名接收模块607,接收由所述签名方所返回的对于所述待签名的数据块的数字签名。
进一步地,在确定待签名的数据块之前,所述装置还包括:指令接收模块609,接收用户所发送的用于创建账本的创建指令,所述创建指令中包含有数字签名类型参数的参数值;写入模块611,将所述数字签名类型参数写入所创建的账本的初始数据块的块头中;以及,生成包含所述创建指令的数据记录,将所述数据记录写入所述初始数据块的块体中;配置文件生成模块613,生成所述账本的签名配置文件,所述签名配置文件用于配置所述账本的数字签名类型参数的参数值。
进一步地,所述获取模块603,从所述账本的签名配置文件中获取所述数字签名类型参数的参数值;或者从所述账本中的初始数据块中获取所述数字签名类型参数的参数值。
进一步地,所述装置还包括数据块生成模块615,接收待存储的数据记录,确定各数据记录的哈希值;当达到预设的成块条件时,确定待写入数据块中的各数据记录,生成包含数据块的哈希值和数据记录的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各数据记录的哈希值,确定所述各数据记录所组成的默克尔树的根哈希,将所述数据记录写入数据块的块体中,将所述根哈希写入数据块的块头中,其中,数据块的块高基于成块时间的先后顺序单调递增。
进一步地,在所述装置中,所述预设的成块条件包括:待存储的数据记录数量达到数量阈值;或者,距离上一次成块时刻的时间间隔达到时间阈值。
进一步地,所述获取模块603获取所述数字签名类型参数的一个或者多个参数值;相应的,所述确定模块605,分别确定所述一个或者多个参数值所对应的签名方。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图5所示的数字签名方法。
图7示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图5所示的数字签名方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。

Claims (13)

1.一种块链式账本中的数字签名方法,所述方法包括:
检测账本中的数据块的数量,当数据块的数量到达签名锚点值时,确定待签名的数据块;
获取关于账本的数字签名类型参数的参数值,所述参数值用于指示所述账本中的数据块所需要包含的数字签名的类型,所述数字签名的类型包括用户数字签名、平台数字签名或者授时证书签名;
根据所述参数值确定签名方,以及,确定对待签名的数据块进行签名时所需要的签名信息,发送所述签名信息至所确定的签名方,以便所述签名方进行数字签名,其中,所述签名信息至少包含所述待签名的数据块的起始块高、结束块高;
接收由所述签名方所返回的对于所述待签名的数据块的数字签名。
2.如权利要求1所述的方法,在确定待签名的数据块之前,所述方法还包括:
接收用户所发送的用于创建账本的创建指令,所述创建指令中包含有数字签名类型参数的参数值;
将所述数字签名类型参数写入所创建的账本的初始数据块的块头中;以及,生成包含所述创建指令的数据记录,将所述数据记录写入所述初始数据块的块体中;
生成所述账本的签名配置文件,所述签名配置文件用于配置所述账本的数字签名类型参数的参数值。
3.如权利要求2所述的方法,获取关于账本的数字签名类型参数的参数值,包括:
从所述账本的签名配置文件中获取所述数字签名类型参数的参数值;或者
从所述账本中的初始数据块中获取所述数字签名类型参数的参数值。
4.如权利要求1所述的方法,所述块链式账本中的数据块通过如下方式生成:
接收待存储的数据记录,确定各数据记录的哈希值;
当达到预设的成块条件时,确定待写入数据块中的各数据记录,生成包含数据块的哈希值和数据记录的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各数据记录的哈希值,确定所述各数据记录所组成的默克尔树的根哈希,将所述数据记录写入数据块的块体中,将所述根哈希写入数据块的块头中,其中,数据块的块高基于成块时间的先后顺序单调递增。
5.如权利要求4所述的方法,所述预设的成块条件包括:
待存储的数据记录数量达到数量阈值;或者,距离上一次成块时刻的时间间隔达到时间阈值。
6.如权利要求1所述的方法,获取关于账本的数字签名类型参数的参数值,包括:
获取所述数字签名类型参数的一个或者多个参数值;相应的,
根据所述参数值确定签名方,包括:分别确定所述一个或者多个参数值所对应的签名方。
7.一种块链式账本中的数字签名装置,所述装置包括:
检测模块,检测账本中的数据块的数量,当数据块的数量到达签名锚点值时,确定待签名的数据块;
获取模块,获取关于账本的数字签名类型参数的参数值,所述参数值用于指示所述账本中的数据块所需要包含的数字签名的类型,所述数字签名的类型包括用户数字签名、平台数字签名或者授时证书签名;
确定模块,根据所述参数值确定签名方,以及,确定对待签名的数据块进行签名时所需要的签名信息,发送所述签名信息至所确定的签名方,以便所述签名方进行数字签名,其中,所述签名信息至少包含所述待签名的数据块的起始块高、结束块高;
签名接收模块,接收由所述签名方所返回的对于所述待签名的数据块的数字签名。
8.如权利要求7所述的装置,在确定待签名的数据块之前,所述装置还包括:
指令接收模块,接收用户所发送的用于创建账本的创建指令,所述创建指令中包含有数字签名类型参数的参数值;
写入模块,将所述数字签名类型参数写入所创建的账本的初始数据块的块头中;以及,生成包含所述创建指令的数据记录,将所述数据记录写入所述初始数据块的块体中;
配置文件生成模块,生成所述账本的签名配置文件,所述签名配置文件用于配置所述账本的数字签名类型参数的参数值。
9.如权利要求8所述的装置,所述获取模块,从所述账本的签名配置文件中获取所述数字签名类型参数的参数值;或者
从所述账本中的初始数据块中获取所述数字签名类型参数的参数值。
10.如权利要求7所述的装置,还包括数据块生成模块,接收待存储的数据记录,确定各数据记录的哈希值;当达到预设的成块条件时,确定待写入数据块中的各数据记录,生成包含数据块的哈希值和数据记录的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各数据记录的哈希值,确定所述各数据记录所组成的默克尔树的根哈希,将所述数据记录写入数据块的块体中,将所述根哈希写入数据块的块头中,其中,数据块的块高基于成块时间的先后顺序单调递增。
11.如权利要求10所述的装置,所述预设的成块条件包括:待存储的数据记录数量达到数量阈值;或者,距离上一次成块时刻的时间间隔达到时间阈值。
12.如权利要求7所述的装置,所述获取模块获取所述数字签名类型参数的一个或者多个参数值;相应的,所述确定模块,分别确定所述一个或者多个参数值所对应的签名方。
13.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求1至6任一项所述的方法。
CN201910689267.9A 2019-07-29 2019-07-29 一种块链式账本中的数字签名方法、装置及设备 Active CN112380573B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910689267.9A CN112380573B (zh) 2019-07-29 2019-07-29 一种块链式账本中的数字签名方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910689267.9A CN112380573B (zh) 2019-07-29 2019-07-29 一种块链式账本中的数字签名方法、装置及设备

Publications (2)

Publication Number Publication Date
CN112380573A CN112380573A (zh) 2021-02-19
CN112380573B true CN112380573B (zh) 2024-05-14

Family

ID=74585933

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910689267.9A Active CN112380573B (zh) 2019-07-29 2019-07-29 一种块链式账本中的数字签名方法、装置及设备

Country Status (1)

Country Link
CN (1) CN112380573B (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107395358A (zh) * 2017-06-30 2017-11-24 上海策赢网络科技有限公司 信息请求及提供方法和装置、存储介质和设备
WO2018032377A1 (zh) * 2016-08-13 2018-02-22 深圳市樊溪电子有限公司 一种用于区块链的只读安全文件存储系统及其方法
CN108009810A (zh) * 2017-12-27 2018-05-08 光载无限(北京)科技有限公司 一种可信数字资产交易方法
WO2018119892A1 (zh) * 2016-12-29 2018-07-05 深圳前海达闼云端智能科技有限公司 软件应用程序发布和验证的方法及装置
CN108964905A (zh) * 2018-07-18 2018-12-07 胡祥义 一种安全高效的区块链实现方法
CN109118223A (zh) * 2018-08-21 2019-01-01 上海点融信息科技有限责任公司 用于在区块链中管理电子数据的方法、装置及介质
CN109951290A (zh) * 2019-01-31 2019-06-28 阿里巴巴集团控股有限公司 一种链式账本的授时认证方法、装置及设备
CN110009349A (zh) * 2019-03-26 2019-07-12 阿里巴巴集团控股有限公司 区块链中生成和验证可链接环签名的方法及装置
CN110008743A (zh) * 2019-03-26 2019-07-12 阿里巴巴集团控股有限公司 一种块链式账本中的数据属性标识方法、装置及设备
CN110019373A (zh) * 2019-01-31 2019-07-16 阿里巴巴集团控股有限公司 一种基于哈希值的数据查询方法、装置及设备
CN110048851A (zh) * 2019-03-26 2019-07-23 阿里巴巴集团控股有限公司 区块链中生成和验证多层可链接环签名的方法及装置
CN110046281A (zh) * 2019-01-31 2019-07-23 阿里巴巴集团控股有限公司 一种数据添加方法、装置及设备
CN110061843A (zh) * 2019-01-31 2019-07-26 阿里巴巴集团控股有限公司 一种链式账本中的块高创建方法、装置及设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180152442A1 (en) * 2003-12-22 2018-05-31 Guardtime Ip Holdings Limited Blockchain-supported, hash tree-based digital signature infrastructure
GB2573666A (en) * 2016-12-23 2019-11-13 Walmart Apollo Llc Verifying authenticity of computer readable information using the blockchain

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018032377A1 (zh) * 2016-08-13 2018-02-22 深圳市樊溪电子有限公司 一种用于区块链的只读安全文件存储系统及其方法
WO2018119892A1 (zh) * 2016-12-29 2018-07-05 深圳前海达闼云端智能科技有限公司 软件应用程序发布和验证的方法及装置
CN107395358A (zh) * 2017-06-30 2017-11-24 上海策赢网络科技有限公司 信息请求及提供方法和装置、存储介质和设备
CN108009810A (zh) * 2017-12-27 2018-05-08 光载无限(北京)科技有限公司 一种可信数字资产交易方法
CN108964905A (zh) * 2018-07-18 2018-12-07 胡祥义 一种安全高效的区块链实现方法
CN109118223A (zh) * 2018-08-21 2019-01-01 上海点融信息科技有限责任公司 用于在区块链中管理电子数据的方法、装置及介质
CN109951290A (zh) * 2019-01-31 2019-06-28 阿里巴巴集团控股有限公司 一种链式账本的授时认证方法、装置及设备
CN110019373A (zh) * 2019-01-31 2019-07-16 阿里巴巴集团控股有限公司 一种基于哈希值的数据查询方法、装置及设备
CN110046281A (zh) * 2019-01-31 2019-07-23 阿里巴巴集团控股有限公司 一种数据添加方法、装置及设备
CN110061843A (zh) * 2019-01-31 2019-07-26 阿里巴巴集团控股有限公司 一种链式账本中的块高创建方法、装置及设备
CN110009349A (zh) * 2019-03-26 2019-07-12 阿里巴巴集团控股有限公司 区块链中生成和验证可链接环签名的方法及装置
CN110008743A (zh) * 2019-03-26 2019-07-12 阿里巴巴集团控股有限公司 一种块链式账本中的数据属性标识方法、装置及设备
CN110048851A (zh) * 2019-03-26 2019-07-23 阿里巴巴集团控股有限公司 区块链中生成和验证多层可链接环签名的方法及装置

Also Published As

Publication number Publication date
CN112380573A (zh) 2021-02-19

Similar Documents

Publication Publication Date Title
TWI727594B (zh) 塊鏈式帳本中的簽名驗證方法、系統、裝置及設備
CN110457898B (zh) 基于可信执行环境的操作记录存储方法、装置及设备
CN110190963B (zh) 一种针对授时证书生成请求的监控方法、装置及设备
US11283622B2 (en) Signature verification for a blockchain ledger
CN113726751B (zh) 一种块链式账本中的权重管理方法、装置及设备
WO2020199710A1 (zh) 一种账本的验证方法、装置及设备
CN112487492B (zh) 数据验证方法、系统及设备
CN110162523B (zh) 数据存储方法、系统、装置及设备
CN110334153B (zh) 块链式账本中的授权方法、系统、装置及设备
US10778452B2 (en) Blockchain ledger authentication
CN110266494B (zh) 一种块链式账本中的授时认证方法、装置及设备
CN112487084B (zh) 一种块链式账本的授时认证方法、装置及设备
CN114039733B (zh) 一种针对联盟链的存证业务转移方法、装置及设备
US10790968B2 (en) Ledger verification method and apparatus, and device
CN110474775B (zh) 一种块链式账本中的用户创建方法、装置及设备
US10979233B2 (en) Monitoring time certificate generation requests
CN112380573B (zh) 一种块链式账本中的数字签名方法、装置及设备
CN111292082B (zh) 一种块链式账本中的公钥管理方法、装置及设备
CN111444193B (zh) 一种块链式账本中的权重分配方法、装置及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40045513

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240924

Address after: Guohao Times City # 20-01, 128 Meizhi Road, Singapore

Patentee after: Ant Chain Technology Co.,Ltd.

Country or region after: Singapore

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Patentee before: Innovative advanced technology Co.,Ltd.

Country or region before: Cayman Islands

TR01 Transfer of patent right