CN116896440B - 基于区块链的声明数据的验证方法和装置、设备和介质 - Google Patents

基于区块链的声明数据的验证方法和装置、设备和介质 Download PDF

Info

Publication number
CN116896440B
CN116896440B CN202311161567.2A CN202311161567A CN116896440B CN 116896440 B CN116896440 B CN 116896440B CN 202311161567 A CN202311161567 A CN 202311161567A CN 116896440 B CN116896440 B CN 116896440B
Authority
CN
China
Prior art keywords
data
target
merck
declaration data
declaration
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
CN202311161567.2A
Other languages
English (en)
Other versions
CN116896440A (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.)
China Academy of Information and Communications Technology CAICT
Original Assignee
China Academy of Information and Communications Technology CAICT
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 China Academy of Information and Communications Technology CAICT filed Critical China Academy of Information and Communications Technology CAICT
Priority to CN202311161567.2A priority Critical patent/CN116896440B/zh
Publication of CN116896440A publication Critical patent/CN116896440A/zh
Application granted granted Critical
Publication of CN116896440B publication Critical patent/CN116896440B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • 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/602Providing cryptographic facilities or services
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

本公开实施例公开了一种基于区块链的声明数据的验证方法和装置、设备和介质,其中,方法包括:持证方先获取待验证项目对应的目标声明数据,之后将目标声明数据的数据标识,以及包括目标声明数据、第一默克尔根和默克尔树信息的可验证表达发送至验证方,验证方基于数据标识确定目标声明数据是否为首次验证,并在确定非首次验证时,验证方通过验证中心对目标声明数据对应的目标哈希值和第一默克尔根的真实性的验证结果,确定目标声明数据是否真实,当确定是首次对目标数据验证时,验证方根据目标声明数据和默克尔树信息生成第二默克尔根,之后根据第一默克尔根和第二默克尔根的匹配结果,确定目标声明数据是否真实。

Description

基于区块链的声明数据的验证方法和装置、设备和介质
技术领域
本公开涉及身份认证技术领域和区块链技术领域,尤其是一种基于区块链的声明数据的验证方法和装置、设备和介质。
背景技术
自主管理数字身份是一种用户自己控制身份信息的身份管理机制,在该身份管理机制中,用户身份信息以声明数据的形式被记录在可验证声明中。用户可以通过向验证机构展示自己的可验证凭证,从而对自身的身份进行证明。目前,在利用可验证凭证证明用户身份真实性时,验证方往往需要对可验证凭证中的所有声明数据的真实性进行验证,这就需要验证方进行大量的验证运算,导致占用验证方大量的算力资源。
发明内容
为了解决上述问题,本公开实施例提供一种基于区块链的声明数据的验证方法和装置、设备和介质。
本公开实施例的一个方面,提供了一种基于区块链的声明数据的验证方法,包括:持证方从可验证凭证中获取待验证项目对应的目标声明数据;所述持证方向验证方发送可验证表达和所述目标声明数据的数据标识,其中,所述可验证表达包括:所述目标声明数据、所述可验证凭证的第一默克尔根和所述可验证凭证的默克尔树信息;所述验证方基于所述数据标识,确定所述目标声明数据是否首次验证;响应于所述目标声明数据非首次验证,所述验证方向验证中心发送所述目标声明数据对应的目标哈希值和所述第一默克尔根,其中,所述验证中心设置在区块链上;所述验证方根据所述验证中心反馈的针对所述目标哈希值和所述第一默克尔根的真实性的验证结果,确定所述目标声明数据是否真实;响应于所述目标声明数据为首次验证,所述验证方根据所述目标声明数据和所述默克尔树信息,生成第二默克尔根;所述验证方根据所述第一默克尔根和所述第二默克尔根的匹配结果,确定所述目标声明数据是否真实。
本公开实施例的另一个方面,提供了一种基于区块链的声明数据的验证装置,包括:第一获取模块,用于持证方从可验证凭证中获取待验证项目对应的目标声明数据;第一发送模块,用于所述持证方向验证方发送可验证表达和所述目标声明数据的数据标识,其中,所述可验证表达包括:所述目标声明数据、所述可验证凭证的第一默克尔根和所述可验证凭证的默克尔树信息;第一确定模块,用于所述验证方基于所述数据标识,确定所述目标声明数据是否首次验证;第二发送模块,用于响应于所述目标声明数据非首次验证,所述验证方向验证中心发送所述目标声明数据对应的目标哈希值和所述第一默克尔根,其中,所述验证中心设置在区块链上;第二确定模块,用于所述验证方根据所述验证中心反馈的针对所述目标哈希值和所述第一默克尔根的真实性的验证结果,确定所述目标声明数据是否真实;第一默克尔根生成模块,用于响应于所述目标声明数据为首次验证,所述验证方根据所述目标声明数据和所述默克尔树信息,生成第二默克尔根;第三确定模块,用于所述验证方根据所述第一默克尔根和所述第二默克尔根的匹配结果,确定所述目标声明数据是否真实。
本公开实施例的又一个方面,提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现基于区块链的声明数据的验证方法。
本公开实施例的再一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现基于区块链的声明数据的验证方法。
本公开提供了一种基于区块链的声明数据的验证方法和装置、设备和介质。在本公开实施例中,持证方先获取待验证项目对应的目标声明数据,之后将目标声明数据的数据标识,以及包括目标声明数据、第一默克尔根和默克尔树信息的可验证表达发送至验证方,验证方基于数据标识确定目标声明数据是否为首次验证,并在确定非首次验证时,验证方通过验证中心对目标声明数据对应的目标哈希值和第一默克尔根的真实性的验证结果,确定目标声明数据是否真实,当确定是首次对目标数据验证时,验证方根据目标声明数据和默克尔树信息生成第二默克尔根,之后根据第一默克尔根和第二默克尔根的匹配结果,确定目标声明数据是否真实。在本公开实施例中,通过确定验证项目对应的目标声明数据,使验证方仅对需要验证的声明数据进行验证即可,有效降低了验证方的验证运算数据量,大大提高验证效率。并且,在本公开实施例中验证方通过确定目标声明数据是否为首次验证,确定目标声明数据的验证方式,在目标声明数据非首次验证时,利用验证中心反馈的第一默克尔根和目标哈希值的真实性的验证结果,确定目标声明数据是否真实,由此在保证了对目标声明数据验证的准确性的同时,避免了验证方对同一目标声明数据进行重复验证,进一步节约了验证方的算力,提高了数据验证效率。另外,本公开实施例还在目标声明数据是首次验证时,通过匹配由目标声明数据和默克尔树信息得到的第二默克尔根与第一默克根,确定目标声明数据是否真实,由此保障了首次对目标声明数据验证的准确性。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同描述一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1是本公开一示例性实施例提供的基于区块链的声明数据的验证方法的流程示意图;
图2是本公开实施例中一示例性的可验证凭证的默克尔树的结构;
图3是本公开实施例中一示例性实施例提供的生成目标密文数据的流程示意图;
图4是本公开另一示例性实施例提供的基于区块链的声明数据的验证方法的流程示意图;
图5是本公开实施例中一示例性实施例提供的生成密文数据的流程示意图;
图6是本公开实施例中一示例性的加密参数生成流程的示意图;
图7是本公开实施例中一示例性的可验证凭证的示意图;
图8是本公开实施例中一示例性的签名可验证表达的示意图;
图9是本公开一个实施例中基于区块链的声明数据的验证装置的结构框图;
图10为本公开电子设备一个应用实施例的结构示意图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本公开实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本公开中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本公开实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
本公开实施例中:
区块链(Block Chain)是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证数据不可篡改和不可伪造的分布式账本。节点用于存储和运行区块链的数据。
自主管理身份机制主要由分布式数字身份标识(Decentralized Identifier,DID)、DID文档和可验证凭证(Verifiable Credential,VC),DID文档中包括持证方的公私密钥对中公钥(Public Key,PK)、验证方法等,该验证方法可以包括通过持证方的公私密钥对中的公钥,对利用持证方的公私密钥对中的私钥生成的签名的验证方法,DID文档可以存储在区块链中。
可验证凭证(Verifiable Credential,VC)是承载一定数据的数字凭证,可以为用户的身份信息、特征属性等提供证明。
可验证表达(Verifiable Presentation,VP)是持证方向验证方表明自己身份的数据。
默克尔树(Merkle tree)是一种数据结构,是以它的提出者默克尔命名,根据默克尔树的性质也可以称为哈希树,默克尔树是一种典型的二叉树。
图1是本公开一示例性实施例提供的基于区块链的声明数据的验证方法的流程示意图。本实施例可应用在电子设备上,如图1所示,包括如下步骤:
步骤S110,持证方从可验证凭证中获取待验证项目对应的目标声明数据。本实施例中,将可验证凭证中与待验证项目对应的声明数据称为目标声明数据。
其中,持证方(Holder)为可验证凭证的持有者,即可验证凭证可以为持证方的身份等提供证明。持证方例如可以包括但不限于:企业、个人、组织机构等。可验证凭证包括多条声明(Claims)数据,每条声明数据表示持证方的一条身份信息,例如,任一条身份信息可以为持证方的姓名、年龄、性别、学历、住址等中的任意一项,相应的,任一条声明数据可以为持证方的姓名、年龄、性别、学历、住址等中的任意一项。待验证项目可以根据需要验证身份的场景设置,例如,待验证项目可以为酒店住宿验证项目、博物馆参观验证项目、娱乐场所出入验证项目、乘车验证项目等。
在一个具体实现中,可以预先建立预设待验证项目与声明数据的对应关系,可以根据该对应关系确定待验证项目对应的目标声明数据。例如,在该对应关系中,娱乐场所出入验证项目(待验证项目)对应表示持证方的年龄的声明数据,当待验证项目为娱乐场所出入验证项目(待验证项目)时,表示持证方的年龄的声明数据则为目标声明数据。
步骤S120,持证方向验证方发送可验证表达和目标声明数据的数据标识。
其中,验证方(Verifier)用于对可验证凭证进行验证,验证方例如可以包括但不限于:企业、个人、组织机构等。可验证表达包括:目标声明数据、可验证凭证的第一默克尔根和可验证凭证的默克尔树信息。
数据标识(ID)用于唯一标识一个数据,目标声明数据的数据标识(ID)用于标识该目标声明数据,数据标识可以为任意形式的标识或自定义编码等。在一个具体实现中,持证方为可验证凭证的每条声明数据颁发一个数据标识。第一默克尔根(Merkle Root)可以是可验证凭证对应的默克尔树的根,即第一默克尔根可以是通过对可验证凭证中的各声明数据进行哈希计算得到的。
在一个具体实现中,可以预先设置用于生成可验证凭证的默克尔树的预设默克尔树生成规则,之后基于预设默克尔树生成规则,根据可验证凭证中的各声明数据,获得可验证凭证的默克尔树,并该可验证凭证的默克尔树的根作为第一默克尔根。
默克尔树信息包括用于生成可验证凭证的默克尔根的相关信息,例如,默克尔树信息可以包括:可验证凭证的各声明数据的默克尔索引号、目标声明数据的默克尔验证路径等。示例性的,持证方可以根据预设默克尔树生成规则,确定默克尔树信息。
步骤S130,验证方基于目标声明数据的数据标识,确定目标声明数据是否首次验证。
其中,验证方确定验证方是否存储有目标声明数据的数据标识,当存储有目标声明数据的数据标识时,确定验证方非首次验证目标声明数据;当未存储目标声明数据的数据标识时,确定验证方首次验证目标声明数据。
步骤S140,响应于目标声明数据非首次验证,验证方向验证中心发送目标声明数据对应的目标哈希值和第一默克尔根。
其中,验证中心设置在区块链上。该验证中心可以对目标哈希值和第一默克尔根的真实性进行验证,并将目标哈希值和第一默克尔根的真实性的验证结果反馈给验证方。目标哈希值是通过对目标声明数据进行哈希计算得到的。
示例性的,验证方对目标声明数据进行哈希计算,得到目标哈希值,并将目标哈希值和第一默克尔根发送至验证中心。当验证中心接收到的第一默克尔根和目标哈希值时,遍历验证中心存储的数据,分别确定是否存在与接收到的第一默克尔根和目标哈希值相同的默克尔根和哈希值,当确定存在与第一默克尔根相同的默克尔根时,则确定接收到的第一默克尔根真实,当确定存在与目标哈希值相同的哈希值时,则确定接收到的目标哈希值真实。
步骤S150,验证方根据验证中心反馈的针对目标哈希值和第一默克尔根的真实性的验证结果,确定目标声明数据是否真实。
其中,验证结果包括目标哈希值和第一默克尔根是否为真实的信息。
在一些可选实施方式中,当该验证结果指示目标哈希值和第一默克尔根均为真实时,则确定目标声明数据真实,当该验证结果指示目标哈希值和/或第一默克尔根不真实时,则确定目标声明数据不真实。
步骤S160,响应于目标声明数据为首次验证,验证方根据目标声明数据和默克尔树信息,生成第二默克尔根。
其中,验证方和持证方可以预先约定预设默克尔树生成规则,以使验证方和持证方可以根据相同的声明数据,计算得到相同的默克尔根。
在一些实施方式中,验证方根据目标声明数据和默克尔树信息,基于预设默克尔树生成规则,通过哈希算法,生成第二默克尔根。
需要说明的是,本公开实施例的步骤S140与步骤S160之间并无执行上的先后顺序。
步骤S170,验证方根据第一默克尔根和第二默克尔根的匹配结果,确定目标声明数据是否真实。
其中,该匹配结果包括第一默克尔根和第二默克尔根是否相同。
在一个实施方式中,当该匹配结果指示第一默克尔根和第二默克尔根相同时,则确定目标声明数据真实;当该匹配结果指示第一默克尔根和第二默克尔根不相同时,则确定目标声明数据不真实。
当确定目标声明数据为真实的后,验证方还可以存储目标声明数据的数据标识。
在本公开实施例中,通过确定验证项目对应的目标声明数据,使验证方仅对需要验证的声明数据进行验证即可,有效降低了验证方的验证运算数据量,大大提高验证效率。并且在本公开实施例中验证方通过确定目标声明数据是否为首次验证,确定目标声明数据的验证方式,在目标声明数据非首次验证时,利用验证中心反馈的第一默克尔根和目标哈希值的真实性的验证结果,确定目标声明数据是否真实,由此在保证了对目标声明数据验证的准确性的同时,避免了验证方对同一目标声明数据进行重复验证,进一步节约了验证方的算力,提高了数据验证效率,另外,本公开实施例还在目标声明数据是首次验证时,通过匹配由目标声明数据和默克尔树信息得到的第二默克尔根与第一默克根,确定目标声明数据是否真实,由此保障了首次对目标声明数据验证的准确性。
在一个可选的实施例中,本公开实施例中的默克尔树信息包括:加密数据、目标声明数据对应的默克尔索引号、目标声明数据对应的默克尔验证路径和目标密文数据,该加密数据包括可验证凭证中除目标声明数据以外的其他声明数据对应的密文数据。目标密文数据由对目标声明数据加密得到。
在本公开实施例中,持证方可以通过如下方式构建可验证表达。
在持证方,首先,给可验证凭证中的每一声明数据分配一个默克尔索引号,其中默克尔索引号可以从0开始。之后,持证方可以生成多个随机数,并将生成多个随机数分别作为加密参数(salt),给每条声明数据分配一个加密参数,以使每一声明数据对应一个加密参数,然后,根据预设默克尔树生成规则中的预设加密方式和各声明数据对应的加密参数,对各声明数据进行加密,得到各声明数据对应的密文数据,例如,将每个声明数据与该声明数据对应的加密参数拼接,得到各声明数据对应的初始密文数据,分别对各初始密文数据进行哈希计算,得到各初始密文的哈希值,将各初始密文的哈希值分别作为各声明数据的密文数据。根据预设默克尔树生成规则中的哈希计算顺序,按照各声明数据的默克尔索引号,构建可验证凭证的默克尔树。将该可验证凭证的默克尔树的根作为第一默克尔树根。
在构建可验证表达时,根据上述可验证凭证的默克尔树和预设默克尔树生成规则中的哈希计算顺序,获取目标声明数据对应的目标密文数据、默克尔索引号和默克尔验证路径,获取除目标声明数据以外的声明数据对应的密文数据,并将这些密文数据作为加密数据,获取第一默克尔树根。由加密数据、目标密文数据、目标声明数据对应的默克尔索引号和目标声明数据对应的默克尔验证路径构建默克尔树信息,由目标声明数据、第一默克尔树根和默克尔树信息构建可验证表达。
例如,图2是本公开一示例性的可验证凭证的默克尔树的结构。如图2所示,可验证凭证包括:声明数据1、声明数据2、声明数据3和声明数据4。预设加密方式可以包括加盐加密,即任意一个加密参数即为一个盐(Salt)。
声明数据1分别对应的默克尔索引号为0,对应的加密参数为盐1(Salt1);声明数据2分别对应的默克尔索引号为1,对应的加密参数为盐2(Salt2);声明数据3分别对应的默克尔索引号为2,对应的加密参数为盐3(Salt3);明数据4分别对应的默克尔索引号为3,对应的加密参数为盐4(Salt4);
将声明数据1和Salt1拼接之后进行哈希计算,得到哈希值1(Hash1),哈希值1即为声明数据1对应的密文数据;将声明数据2和Salt2拼接之后进行哈希计算,得到哈希值2(Hash2),哈希值2即为声明数据2对应的密文数据;将声明数据3和Salt3拼接之后进行哈希计算,得到哈希值3(Hash3),哈希值3即为声明数据3对应的密文数据;将声明数据4和Salt4拼接之后进行哈希计算,得到哈希值4(Hash4),即哈希值4为声明数据4对应的密文数据。
假设预设默克尔树生成规则中的预设哈希计算顺序为:默克尔索引号为0的声明数据的密文数据与默克尔索引号为1的声明数据的密文数据进行哈希计算,得到第一结果,默克尔索引号为2的声明数据的密文数据与默克尔索引号为3的声明数据的密文数据进行哈希计算,得到第二结果,第一结果与第二结果进行哈希计算,得到默克尔树的根。
此时,可验证凭证的默克尔树的构建方式为:哈希值1与哈希值2进行哈希计算,得到哈希值12(第一结果),哈希值3与哈希值4进行哈希计算,得到哈希值34(第二结果),哈希值12和哈希值34进行哈希计算,得到哈希值1234,即哈希值1234即为可验证凭证的默克尔树的根,将可验证凭证的默克尔树的根作为第一默克尔根。
假设声明数据3为目标声明数据,则哈希值3为目标密文数据,目标声明数据对应的默克索引号为2,对应的默克尔验证路径为[哈希值4,哈希值12],加密数据包括:哈希值1、哈希值2和哈希值4。
在一个可选的实施例中,步骤S160可以包括:验证方根据目标密文数据、加密数据、默克尔索引号和默克尔验证路径,生成第二默克尔根。
其中,持证方还可以将预设默克尔树生成规则中的预设哈希计算顺序同步给验证方。可以根据目标密文数据、加密数据、目标密文数据的默克尔索引号和默克尔验证路径,基于预设哈希计算顺序,利用哈希算法,生成第二默克尔根。
示例性的,还以上述图2对应的示例进行说明。声明数据3为目标声明数据,哈希值3为目标密文数据。具体得,根据声明数据3的默克尔索引号、默克尔验证路径和预设哈希计算顺序,将哈希值3与哈希值4进行哈希计算,得到哈希值34,将哈希值1与哈希值2进行哈希计算,得到哈希值12,将哈希值34与哈希值12进行哈希计算,得到第二默克尔根。
本公开实施例中,持证方将除目标声明数据以外的声明数据进行加密处理,得到加密数据,并由加密数据、目标声明数据对应的默克尔索引号、默克尔验证路径和加密参数构建默克尔树信息,由此即保证了验证方可以生成第二默克尔根,并通过第二默克尔根实现目标声明数据真实性的验证,又使在验证方仅展示需要验证的目标声明数据,避免了可验证凭证中其余的数据泄露所导致的持证方身份信息泄露的情况,由此提高了数据的隐私性。
图3是本公开实施例中一示例性实施例提供的生成目标密文数据的流程示意图。如图3所示,在一个可选的实施例中,在步骤S120之前还可以包括如下步骤:
步骤S210,持证方获取目标声明数据对应的加密参数。
在一些实施方式中,持证方可以生成随机数,该随机数为一串序列数,将该随机数作为目标声明数据对应的加密参数。
步骤S220,持证方基于加密参数对目标声明数据进行加密处理,获得目标密文数据。
在一个具体实现中,持证方可以将目标声明数据与其对应的加密参数进行拼接、相乘或相加等处理,并将处理结果作为初始密文数据,之后对初始密文数据进行加密,得到目标密文数据。其中,可以通过哈希算法、对称加密算法、非对称加密算法等实现对初始密文数据的加密。例如,可以对初始密文数据进行哈希计算,以实现对初始密文数据的加密,相应的,初始密文数据的哈希值即为目标密文数据。
图4是本公开另一示例性实施例提供的基于区块链的声明数据的验证方法的流程示意图。如图4所示,在步骤S110之前可以包括如下步骤:
步骤S310,发证方根据持证方发送的持证方的多条身份信息,获得持证方的多条声明数据。
其中,发证方(Issuer)用于生成和颁发可验证凭证。发证方可以为第三方权威机构、具有认证资质的企业或组织等。发证方可以根据持证方的每条身份信息生成一条与该身份信息对应的声明数据。例如,当身份信息为持证方年龄时,则验证方生成一条表示持证方年龄的声明数据。
在一种实施方式中,在发证方生成持证方的多条声明数据之前,持证方还向发证方发送用于验证持证方身份的验证信息,例如,该验证信息可以为持证方的身份证、学历证书、工作证明等,发证方对验证信息进行验证,并在验证通过后,根据持证方的多条身份信息,生成持证方的多条声明数据。
步骤S320,发证方获取多条声明数据中各声明数据分别对应的密文数据。
其中,发证方可以通过哈希算法、对称加密算法、非对称加密算法等实现对各声明数据的加密,以得到各声明数据分别对应的密文数据。
步骤S330,发证方根据各声明数据对应的密文数据,获得第一默克尔根。
其中,发证方可以预先设置预设默克尔树生成规则,之后根据各声明数据对应的密文数据和各声明数据对应的密文数据,获得第一默克尔根。其中的发证方获得第一默克尔根的方式与上述的构建可验证表达中获得第一默克尔根的方式相同,此处不再赘述。
步骤S340,发证方利用发证方的公私密钥对中私钥,对第一默克尔根签名,得到默克尔根签名信息。
其中,发证方的公私密钥对包括公钥和私钥。发证方的公私密钥对中私钥用于对数据或信息进行签名处理,发证方的公私密钥对中公钥用于对利用发证方的公私密钥对中私钥生成的签名进行验证。发证方可以利用国密(SM2或SM4)算法、对称加密算法或非对称加密算法等生成发证方的公私密钥对。
步骤S350,发证方根据第一默克尔根、默克尔根签名信息、发证方的公私密钥对中公钥和多条声明数据构建可验证凭证。
其中,可验证凭证包括:第一默克尔根、默克尔根签名信息、发证方的公私密钥对中公钥和多条声明数据。
在一个具体实现中,可验证凭证还可以包括:凭证元数据(Meta Data)、发证日期、失效日期、发证方签名等。其中的元数据又称中介数据、中继数据,其是为描述数据的数据,主要是描述数据属性的信息,凭证元数据可以用于描述可验证凭证中数据的属性等。发证方签名信息可以由发证方利用发证方的公私密钥对中私钥对可验证凭证中预设证明信息进行签名得到,该证明信息可以发证方的名称、组织机构代码等,或者,该证明信息可以由多条声明数据、凭证元数据、种子数据、第一默克尔根、默克尔根签名和发证方公私密钥对中公钥组成。
步骤S360,发证方向持证方发送持证方的可验证凭证。
在一个可选的实施例中,上述的步骤S320可以包括:发证方获取各声明数据分别对应的加密参数,并基于各声明数据分别对应的加密参数和各声明数据,确定各声明数据分别对应的密文数据。
其中,发证方可以先随机生成与声明数据相等数量的加密参数,或者,利用参数生成器生成与声明数据相等数量的加密参数,之后给每条声明数据分配一个加密参数,对于每一声明数据,利用分配给该条声明数据的加密参数混淆该条声明数据,得到初始密文数据,然后对该初始密文数据进行加密处理,得到该条声明数据对应的密文数据,相应的,可以获得各声明数据分别对应的密文数据。
图5是本公开实施例中一示例性实施例提供的生成密文数据的流程示意图。如图5所示,在一个可选的实施例中,上述的发证方获取各声明数据分别对应的加密参数,并基于所述各声明数据分别对应的加密参数和各声明数据,确定各声明数据分别对应的密文数据,可以包括如下步骤:
步骤S321,发证方获取种子数据。
其中,种子数据(Seed)可以为一串序列数。发证方可以生成随机数,该随机数可以为一串序列数,将该随机数据作为种子数据。
步骤S322,发证方根据该种子数据,基于预设加密参数生成规则,获得各声明数据分别的加密参数。
在一个具体实现中,按照各声明数据对应的默克尔索引号的排序,对各声明数据进行排序,以使各声明数据分别对应一个排序序号,其中的排序序号为从1开始正整数;例如,声明数据a、声明数据b和声明数据c分别对应的默克尔索引号为0,1,2,则相应的,声明数据a、声明数据b和声明数据c分别对应的排序序号为1,2,3。
假设种子数据为Salt0,即Seed= Salt0,利用种子数据和各声明数据对应的排序序号,根据式(1),得到各声明数据分别对应的加密参数,其中,n为自然数,Saltn+1表示排序序号为(n+1)的声明数据对应的加密参数,Saltn表示排序序号为n的声明数据对应的加密参数;
示例性的,还以上述图2对应的示例进行说明。图6是本公开实施例中一示例性的加密参数生成流程的示意图。参见图2和图6,声明数据1、声明数据2、声明数据3和声明数据4分别对应的默克尔索引号为0,1,2,3,相应的,声明数据1、声明数据2、声明数据3和声明数据4分别对应的排序序号为1,2,3,4。根据式(1),对种子数据进行哈希计算,得到声明数据1对应的加密参数Salt1,根据式(1),对Salt1进行哈希计算,得到声明数据2对应的加密参数Salt2,根据式(1),对Salt2进行哈希计算,得到声明数据3对应的加密参数Salt3,根据式(1),对Salt3进行哈希计算,得到声明数据4对应的加密参数Salt4
步骤S323,对于各声明数据,利用该声明数据对应的加密参数对该声明数据进行混淆,得到该声明数据的初始密文数据。
在一个具体实现中,将每条声明数据与该条声明数据对应的加密参数进行拼接,以实现对该条声明数据的混淆,并将拼接后的数据作为该条声明数据的初始密文数据。
步骤S324,分别对各声明数据的初始密文数据进行加密处理,得到各声明数据分别对应的密文数据。
在一个具体实现中,可以分别对各声明数据的初始密文数据进行哈希计算,以实现对各声明数据的初始密文数据的加密,相应的,每一声明数据的初始密文数据的哈希值,即为该声明数据对应的密文数据。
相应的,在该实施例中,步骤S350中,发证方根据种子数据、第一默克尔根、默克尔根签名信息、发证方的公私密钥对中公钥和多条声明数据构建可验证凭证。
其中,可验证凭证包括:第一默克尔根、默克尔根签名信息、发证方的公私密钥对中公钥、多条声明数据和种子数据。
示例性的,图7是本公开实施例中一示例性的可验证凭证的示意图。如图7所示,可验证凭证还可以包括:第一默克尔根、默克尔根签名信息、发证方的公私密钥对中公钥、m条声明数据、种子数据、凭证元数据和发证方签名。其中,m条声明数据、种子数据、第一默克尔根、默克尔根签名信息和发证方的公私密钥对中公钥可以作为可验证凭证的声明,m为大于等于1的正整数。
在一个可选的实施例中,在步骤S330之后可以包括:发证方确定各声明数据的哈希值,并向验证中心发送第一默克尔根和各声明数据的哈希值进行存证。
其中,发证方对每一声明数据进行哈希计算,得到每一声明数据的哈希值,之后将第一默克尔根和各声明数据的哈希值发送至验证中心。
在一个可选的实施例中,上述的步骤S120还包括:持证方利用持证方的公私密钥对中私钥对可验证表达进行签名处理,得到签名可验证表达,并将签名可验证表达和目标声明数据的数据标识发送至验证方。
其中,该签名可验证表达包括:持证方签名和可验证表达。可验证表达还包括:默克尔根签名信息和发证方的公私密钥对中公钥。在一个具体实现中,该可验证表达还可以包括凭证元数据。
持证方的公私密钥对包括公钥和私钥。持证方的公私密钥对中私钥用于对数据或信息进行签名处理,持证方的公私密钥对中公钥用于对利用持证方的公私密钥对中私钥生成的签名进行验证。持证方可以利用国密(SM2或SM4)算法、对称加密算法或非对称加密算法等生成持证方的公私密钥对。
在本公开实施例中,持证方可以通过如下方式构建签名可验证表达。
在持证方,可以从发证方获取可验证凭证的数据结构,该数据结构包括:各声明数据分别对应的默克尔索引号、各声明数据分别对应的排序序号、预设加密参数生成规则等。
还以上述图2对应的示例为例进行说明,假设声明数据3为目标声明数据,根据预设加密参数生成规则和种子数据,分别生成声明数据1、声明数据2、声明数据3和声明数据4分别对应加密参数Salt1、Salt2、Salt3和Salt4,之后对由Salt1和声明数据1拼接得到的初始密文数据进行哈希计算,得到声明数据1对应的密文数据,对由Salt2和声明数据2拼接得到的初始密文数据进行哈希计算,得到声明数据2对应的密文数据,对由Salt3和声明数据3拼接得到的初始密文数据进行哈希计算,得到声明数据3对应的密文数据,即目标密文数据,对由Salt4和声明数据4拼接得到的初始密文数据进行哈希计算,得到声明数据4对应的密文数据。由声明数据1对应的密文数据、声明数据2对应的密文数据和声明数据4对应的密文数据构建加密数据。从可验证凭证中获取第一默克尔根、默克尔根签名信息、发证方的公私密钥对中公钥和凭证元数据。根据数据结构确定声明数据3的默克尔验证路径([哈希值4,哈希值12])。从数据结构中获取声明数据3的默克尔索引号。
由声明数据3、目标密文数据、加密数据、第一默克尔根、声明数据3的默克尔索引号、声明数据3的默克尔验证路径([哈希值4,哈希值12])、默克尔根签名信息、发证方的公私密钥对中公钥和凭证元数据构建可验证表达,之前对持证方利用持证方的公私密钥对中私钥对可验证表达进行签名处理,得到签名可验证表达,该签名可验证表达包括:持证方签名和可验证表达。签名可验证凭证的形式可以参见图8所示,图8是本公开实施例中一示例性的签名可验证表达的示意图。其中,声明数据3、目标密文数据、声明数据3的默克尔索引号、声明数据3的默克尔验证路径、加密数据、第一默克尔根、默克尔根签名信息和发证方的公私密钥对中公钥可以作为可验证表达的声明。
相应的,在该实施例中,步骤S130之前可以包括:验证方利用持证方的公私密钥对中公钥对签名可验证表达中的持证方签名进行验证,利用发证方的公私密钥对中公钥对默克尔根签名信息进行验证;响应于持证方签名和默克尔根签名信息均通过验证,执行步骤S130的操作;响应于持证方签名和/或默克尔根签名信息未通过验证,确定目标声明数据不真实。
其中,持证方具有分布式数据身份标识(DID),以及该分布式数据身份标识对应的DID文档,该DID文档中存储有持证方的公私密钥对中公钥,该DID文档该可以存储在区块链中。
在一个具体实现中,验证方可以从持证方获取持证方的分布式数据身份标识,之后根据持证方的分布式数据身份标识,从区块链中查找该分布式数据身份标识对应的DID文档,并从DID文档中获取持证方的公私密钥对中公钥。之后,利用持有方的公私密钥对中公钥对签名可验证表达中的持有方签名进行验证,当验证通过,从可验证凭证中获取发证方的公私密钥对中公钥,并用发证方的公私密钥对中公钥对默克尔根签名信息进行验证,当验证通过,执行步骤S130的操作。
在一个可选的实施例中,在步骤S210可以包括:持证方根据种子数据,基于预设加密参数生成规则,获得目标声明数据对应的加密参数。
其中,持证方获取目标声明数据对应的加密参数的方式可以参见上述发证方获取声明数据对应的加密参数的相应实施方式,此处不再赘述。
图9是本公开一个实施例中基于区块链的声明数据的验证装置的结构框图。如图9所示,基于区块链的声明数据的验证装置包括:
第一获取模块400,用于持证方从可验证凭证中获取待验证项目对应的目标声明数据;
第一发送模块410,用于所述持证方向验证方发送可验证表达和所述目标声明数据的数据标识,其中,所述可验证表达包括:所述目标声明数据、所述可验证凭证的第一默克尔根和所述可验证凭证的默克尔树信息;
第一确定模块420,用于所述验证方基于所述数据标识,确定所述目标声明数据是否首次验证;
第二发送模块430,用于响应于所述目标声明数据非首次验证,所述验证方向验证中心发送所述目标声明数据对应的目标哈希值和所述第一默克尔根,其中,所述验证中心设置在区块链上;
第二确定模块440,用于所述验证方根据所述验证中心反馈的针对所述目标哈希值和所述第一默克尔根的真实性的验证结果,确定所述目标声明数据是否真实;
第一默克尔根生成模块450,用于响应于所述目标声明数据为首次验证,所述验证方根据所述目标声明数据和所述默克尔树信息,生成第二默克尔根;
第三确定模块460,用于所述验证方根据所述第一默克尔根和所述第二默克尔根的匹配结果,确定所述目标声明数据是否真实。
在一些可选示例中,本公开上述实施例中的所述默克尔树信息包括:加密数据、所述目标声明数据对应的默克尔索引号、默克尔验证路径和目标密文数据,所述加密数据包括所述可验证凭证中除所述目标声明数据以外的其他声明数据对应的密文数据;所述目标密文数据由对所述目标声明数据加密得到;
在一些可选示例中,本公开实施例中的第一默克尔根生成模块450具体用于:所述验证方根据所述目标密文数据、所述加密数据、所述默克尔索引号和所述默克尔验证路径,生成所述第二默克尔根。
在一些可选示例中,本公开上述实施例中的基于区块链的声明数据的验证装置,还包括:
第一加密参数生成模块,用于所述持证方获取所述目标声明数据对应的加密参数;
第一加密模块,用于所述持证方基于所述加密参数对所述目标声明数据进行加密处理,获得到目标密文数据。
在一些可选示例中,本公开上述实施例中的基于区块链的声明数据的验证装置,还包括:
声明数据生成模块,用于发证方根据对所述持证方发送的所述持证方的多条身份信息,获得所述持证方的多条声明数据;
第二加密模块,用于所述发证方获取所述多条声明数据中各声明数据分别对应的密文数据;
第二默克尔根生成模块,用于所述发证方根据所述各声明数据对应的密文数据,获得所述第一默克尔根;
签名模块,用于所述发证方利用所述发证方的公私密钥对中私钥,对所述第一默克尔根签名,得到默克尔根签名信息;
凭证生成模块,用于所述发证方根据所述第一默克尔根、所述默克尔根签名信息、所述发证方的公私密钥对中公钥和所述多条声明数据构建所述可验证凭证;
发送模块,用于所述发证方向所述持证方发送所述可验证凭证。
在一些可选示例中,本公开上述实施例中的第二加密模块具体用于:所述发证方获取所述各声明数据分别对应的加密参数,并基于所述各声明数据分别对应的加密参数和所述各声明数据,确定所述各声明数据分别对应的密文数据。
在一些可选示例中,本公开上述实施例中的所述发证方获取所述各声明数据分别对应的加密参数,并基于所述各声明数据分别对应的加密参数和所述各声明数据,确定所述各声明数据分别对应的密文数据,包括:所述发证方获取种子数据;所述发证方根据所述种子数据,基于预设加密参数生成规则,获得所述各声明数据分别的加密参数;对于所述各声明数据,利用所述声明数据对应的加密参数对所述声明数据进行混淆,得到所述声明数据的初始密文数据;分别对所述各声明数据的初始密文数据进行加密处理,得到所述各声明数据分别对应的密文数据。
在一些可选示例中,本公开上述实施例中的凭证生成模块具体用于所述发证方根据所述种子数据、所述第一默克尔根、所述默克尔根签名信息、所述发证方的公私密钥对中公钥和所述多条声明数据构建所述可验证凭证。
在一些可选示例中,本公开上述实施例中的基于区块链的声明数据的验证装置,还包括:
第三发送模块,用于所述发证方确定所述各声明数据的哈希值,并向所述验证中心发送所述第一默克尔根和所述各声明数据的哈希值进行存证。
在一些可选示例中,本公开实施例中的第一发送模块410具体用于所述持证方利用所述持证方的公私密钥对中私钥对所述可验证表达进行签名处理,得到签名可验证表达,并将所述签名可验证表达和所述目标声明数据的数据标识发送至所述验证方,其中,所述可验证表达还包括:所述默克尔根签名信息和所述发证方的公私密钥对中公钥。
在一些可选示例中,本公开上述实施例中的基于区块链的声明数据的验证装置,还包括:
签名验证模块,所述验证方利用所述持证方的公私密钥对中公钥对所述签名可验证表达中的持证方签名进行验证,利用所述发证方的公私密钥对中公钥对所述默克尔根签名信息进行验证;响应于所述持证方签名和所述默克尔根签名信息均通过验证,执行所述验证方基于所述数据标识,确定所述目标声明数据是否首次验证的操作。
在一些可选示例中,本公开上述实施例中的基于区块链的声明数据的验证装置,还包括:第二加密参数生成模块,用于所述持证方根据所述种子数据,基于所述预设加密参数生成规则,获得所述目标声明数据对应的加密参数。
在本公开的基于区块链的声明数据的验证装置中,上述公开的各种可选实施例、可选实施方式和可选示例,都可以根据需要进行灵活的选择和组合,从而实现相应的功能和效果,本公开不进行一一列举。
本公开的基于区块链的声明数据的验证装置与本公开上述各基于区块链的声明数据的验证方法的实施例之间相互对应,相关内容可以相互参考,此处不再赘述。
本公开的基于区块链的声明数据的验证装置示例性实施例对应的有益技术效果可以参见上述示例性方法部分的相应有益技术效果,此处不再赘述。
另外,本公开实施例还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现本公开上述任一实施例所述的基于区块链的声明数据的验证方法。
图10为本公开电子设备一个应用实施例的结构示意图。下面,参考图10来描述根据本公开实施例的电子设备。该电子设备可以是第一设备和第二设备中的任一个或两者、或与它们独立的单机设备,该单机设备可以与第一设备和第二设备进行通信,以从它们接收所采集到的输入信号。
如图10所示,电子设备包括一个或多个处理器和存储器。
处理器可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备中的其他组件以执行期望的功能。
存储器可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器可以运行所述程序指令,以实现上文所述的本公开的各个实施例的基于区块链的声明数据的验证方法以及/或者其他期望的功能。
在一个示例中,电子设备还可以包括:输入装置和输出装置,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
此外,该输入装置还可以包括例如键盘、鼠标等等。
该输出装置可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出设备可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图10中仅示出了该电子设备中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备还可以包括任何其他适当的组件。
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述部分中描述的根据本公开各种实施例的基于区块链的声明数据的验证方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述部分中描述的根据本公开各种实施例的基于区块链的声明数据的验证方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

Claims (12)

1.一种基于区块链的声明数据的验证方法,其特征在于,包括:
持证方从可验证凭证中获取待验证项目对应的目标声明数据;
所述持证方向验证方发送可验证表达和所述目标声明数据的数据标识,其中,所述可验证表达包括:所述目标声明数据、所述可验证凭证的第一默克尔根和所述可验证凭证的默克尔树信息;
所述验证方基于所述数据标识,确定所述目标声明数据是否首次验证;
响应于所述目标声明数据非首次验证,所述验证方向验证中心发送所述目标声明数据对应的目标哈希值和所述第一默克尔根,其中,所述验证中心设置在区块链上;
所述验证方根据所述验证中心反馈的针对所述目标哈希值和所述第一默克尔根的真实性的验证结果,确定所述目标声明数据是否真实;
响应于所述目标声明数据为首次验证,所述验证方根据所述目标声明数据和所述默克尔树信息,生成第二默克尔根;
所述验证方根据所述第一默克尔根和所述第二默克尔根的匹配结果,确定所述目标声明数据是否真实。
2.根据权利要求1所述的方法,其特征在于,所述默克尔树信息包括:加密数据、所述目标声明数据对应的默克尔索引号、默克尔验证路径和目标密文数据,所述加密数据包括所述可验证凭证中除所述目标声明数据以外的其他声明数据对应的密文数据;所述目标密文数据由对所述目标声明数据加密得到;
所述验证方根据所述目标声明数据和所述默克尔树信息,生成第二默克尔根,包括:
所述验证方根据所述目标密文数据、所述加密数据、所述默克尔索引号和所述默克尔验证路径,生成所述第二默克尔根。
3.根据权利要求2所述的方法,其特征在于,所述持证方向验证方发送可验证表达和所述目标声明数据的数据标识之前,还包括:
所述持证方获取所述目标声明数据对应的加密参数;
所述持证方基于所述加密参数对所述目标声明数据进行加密处理,获得所述目标密文数据。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述持证方从可验证凭证中获取与验证项目对应的目标声明数据之前,还包括:
发证方根据对所述持证方发送的所述持证方的多条身份信息,获得所述持证方的多条声明数据;
所述发证方获取所述多条声明数据中各声明数据分别对应的密文数据;
所述发证方根据所述各声明数据对应的密文数据,生成所述第一默克尔根;
所述发证方利用所述发证方的公私密钥对中私钥,对所述第一默克尔根签名,得到默克尔根签名信息;
所述发证方根据所述第一默克尔根、所述默克尔根签名信息、所述发证方的公私密钥对中公钥和所述多条声明数据构建所述可验证凭证;
所述发证方向所述持证方发送所述可验证凭证。
5.根据权利要求4所述的方法,其特征在于,所述发证方获取所述多条声明数据中各声明数据分别对应的密文数据,包括:
所述发证方获取所述各声明数据分别对应的加密参数,并基于所述各声明数据分别对应的加密参数和所述各声明数据,确定所述各声明数据分别对应的密文数据。
6.根据权利要求5所述的方法,其特征在于,所述发证方获取所述各声明数据分别对应的加密参数,并基于所述各声明数据分别对应的加密参数和所述各声明数据,确定所述各声明数据分别对应的密文数据,包括:
所述发证方获取种子数据;
所述发证方根据所述种子数据,基于预设加密参数生成规则,获得所述各声明数据分别的加密参数;
对于所述各声明数据,利用所述声明数据对应的加密参数对所述声明数据进行混淆,得到所述声明数据的初始密文数据;
分别对所述各声明数据的初始密文数据进行加密处理,得到所述各声明数据分别对应的密文数据;
所述发证方根据所述第一默克尔根、所述默克尔根签名信息、所述发证方的公私密钥对中公钥和所述多条声明数据构建所述可验证凭证,包括:
所述发证方根据所述种子数据、所述第一默克尔根、所述默克尔根签名信息、所述发证方的公私密钥对中公钥和所述多条声明数据构建所述可验证凭证。
7.根据权利要求4所述的方法,其特征在于,所述发证方根据所述各声明数据对应的密文数据,获得所述第一默克尔根之后,还包括:
所述发证方确定所述各声明数据的哈希值,并向所述验证中心发送所述第一默克尔根和所述各声明数据的哈希值进行存证。
8.根据权利要求4所述的方法,其特征在于,所述持证方向验证方发送可验证表达和所述目标声明数据的数据标识,包括:
所述持证方利用所述持证方的公私密钥对中私钥对所述可验证表达进行签名处理,得到签名可验证表达,并将所述签名可验证表达和所述目标声明数据的数据标识发送至所述验证方,其中,所述可验证表达还包括:所述默克尔根签名信息和所述发证方的公私密钥对中公钥;
所述验证方基于所述数据标识,确定所述目标声明数据是否首次验证之前,还包括:
所述验证方利用所述持证方的公私密钥对中公钥对所述签名可验证表达中的持证方签名进行验证,利用所述发证方的公私密钥对中公钥对所述默克尔根签名信息进行验证;
响应于所述持证方签名和所述默克尔根签名信息均通过验证,执行所述验证方基于所述数据标识,确定所述目标声明数据是否首次验证的操作。
9.根据权利要求3所述的方法,其特征在于,所述持证方获取所述目标声明数据对应的加密参数,包括:
所述持证方根据种子数据,基于预设加密参数生成规则,获得所述目标声明数据对应的加密参数。
10.一种基于区块链的声明数据的验证装置,其特征在于,包括:
第一获取模块,用于持证方从可验证凭证中获取待验证项目对应的目标声明数据;
第一发送模块,用于所述持证方向验证方发送可验证表达和所述目标声明数据的数据标识,其中,所述可验证表达包括:所述目标声明数据、所述可验证凭证的第一默克尔根和所述可验证凭证的默克尔树信息;
第一确定模块,用于所述验证方基于所述数据标识,确定所述目标声明数据是否首次验证;
第二发送模块,用于响应于所述目标声明数据非首次验证,所述验证方向验证中心发送所述目标声明数据对应的目标哈希值和所述第一默克尔根,其中,所述验证中心设置在区块链上;
第二确定模块,用于所述验证方根据所述验证中心反馈的针对所述目标哈希值和所述第一默克尔根的真实性的验证结果,确定所述目标声明数据是否真实;
第一默克尔根生成模块,用于响应于所述目标声明数据为首次验证,所述验证方根据所述目标声明数据和所述默克尔树信息,生成第二默克尔根;
第三确定模块,用于所述验证方根据所述第一默克尔根和所述第二默克尔根的匹配结果,确定所述目标声明数据是否真实。
11.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述存储器中存储的计算机程序,且所述计算机程序被执行时,实现上述权利要求1-9中任一所述的基于区块链的声明数据的验证方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时,实现上述权利要求1-9中任一所述的基于区块链的声明数据的验证方法。
CN202311161567.2A 2023-09-11 2023-09-11 基于区块链的声明数据的验证方法和装置、设备和介质 Active CN116896440B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311161567.2A CN116896440B (zh) 2023-09-11 2023-09-11 基于区块链的声明数据的验证方法和装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311161567.2A CN116896440B (zh) 2023-09-11 2023-09-11 基于区块链的声明数据的验证方法和装置、设备和介质

Publications (2)

Publication Number Publication Date
CN116896440A CN116896440A (zh) 2023-10-17
CN116896440B true CN116896440B (zh) 2023-11-10

Family

ID=88309795

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311161567.2A Active CN116896440B (zh) 2023-09-11 2023-09-11 基于区块链的声明数据的验证方法和装置、设备和介质

Country Status (1)

Country Link
CN (1) CN116896440B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021114872A1 (zh) * 2019-12-11 2021-06-17 支付宝(杭州)信息技术有限公司 一种基于可验证声明的业务处理方法、装置及设备
KR20220170773A (ko) * 2021-06-23 2022-12-30 포항공과대학교 산학협력단 동적 머클 트리 기반 메시지 스트림을 생성하는 장치, 메시지 스트리밍 방법 및 메시지 스트리밍 네트워크 시스템
CN116668165A (zh) * 2023-06-26 2023-08-29 云南财经大学 基于区块链的可信通信的交互方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021220278A1 (en) * 2020-04-27 2021-11-04 B.G. Negev Technologies And Applications Ltd., At Ben-Gurion University System and method for fast, post-quantum blockchain concensus generation and smart contracts execution

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021114872A1 (zh) * 2019-12-11 2021-06-17 支付宝(杭州)信息技术有限公司 一种基于可验证声明的业务处理方法、装置及设备
KR20220170773A (ko) * 2021-06-23 2022-12-30 포항공과대학교 산학협력단 동적 머클 트리 기반 메시지 스트림을 생성하는 장치, 메시지 스트리밍 방법 및 메시지 스트리밍 네트워크 시스템
CN116668165A (zh) * 2023-06-26 2023-08-29 云南财经大学 基于区块链的可信通信的交互方法

Also Published As

Publication number Publication date
CN116896440A (zh) 2023-10-17

Similar Documents

Publication Publication Date Title
JP7285840B2 (ja) プルーフ検証に基づいてオフ・チェーン・データを認証するシステム及び方法
US11184157B1 (en) Cryptographic key generation and deployment
US10846372B1 (en) Systems and methods for trustless proof of possession and transmission of secured data
EP4333357A2 (en) Hash function attacks
EP3725026A1 (en) Computer-implemented systems and methods for performing computational tasks across a group operating in a trust-less or dealer-free manner
US9219602B2 (en) Method and system for securely computing a base point in direct anonymous attestation
US20180183592A1 (en) Public key rollup for merkle tree signature scheme
US10887104B1 (en) Methods and systems for cryptographically secured decentralized testing
JP2021517389A (ja) 双線形写像アキュムレータに基づく認証のためのブロックチェーン実装方法及びシステム
JP7231630B2 (ja) ブラインド化された帰結選択のためのブロックチェーンで実装されるセキュリティー・システムおよび方法
US20230237437A1 (en) Apparatuses and methods for determining and processing dormant user data in a job resume immutable sequential listing
CN115203749A (zh) 一种基于区块链的数据交易方法和系统
CN114514550A (zh) 将请求分区成区块链的交易
CN116896440B (zh) 基于区块链的声明数据的验证方法和装置、设备和介质
CN116975936B (zh) 金融资质证明方法、金融资质验证方法
CN116405319B (zh) 基于区块链的碳金融凭证共享方法和装置、设备和介质
US11856095B2 (en) Apparatus and methods for validating user data by using cryptography
US11770263B1 (en) Systems and methods for enforcing cryptographically secure actions in public, non-permissioned blockchains using bifurcated self-executing programs comprising shared digital signature requirements
CN116975937B (zh) 匿名证明方法、匿名验证方法
CN117278213B (zh) 基于多项式承诺的方法、电子设备及可读存储介质
CN116975935B (zh) 数据比较方法、存储介质及电子设备
US20230318833A1 (en) Systems and methods for managing tokens
CN114153918A (zh) 一种节点确定方法、装置、电子设备及存储介质
CN117728959A (zh) 门限签名方法和装置、电子设备和存储介质
CN116488817A (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
GR01 Patent grant
GR01 Patent grant
CB03 Change of inventor or designer information

Inventor after: Zhang Yuwen

Inventor after: Chi Cheng

Inventor after: Liu Yang

Inventor after: Tian Juan

Inventor after: Yin Lingyuan

Inventor before: Zhang Yuwen

Inventor before: Chi Cheng

Inventor before: Liu Yang

Inventor before: Tian Juan

Inventor before: Yin Lingyuan

CB03 Change of inventor or designer information