用于区块链的凭证验证方法、管理方法以及签发方法与流程

文档序号:22256850发布日期:2020-09-18 13:49阅读:248来源:国知局
用于区块链的凭证验证方法、管理方法以及签发方法与流程

本发明涉及计算机技术领域,尤其涉及一种用于区块链的凭证验证方法、凭证管理方法以及凭证签发方法。



背景技术:

当今社会,用户信息安全越来越被重视,然而信息泄露的现象时有发生。目前互联网技术中常用用户凭证标识用户的身份和权限。

凭证申请节点向凭证签发节点申请凭证,凭证上往往承载凭证申请节点的用户数据,为了办理某些业务,凭证申请节点向凭证验证节点发送凭证,用于验证身份并使凭着验证者获取到所需的信息。但是,如果不做区分的将凭证提交给任何业务验证者,可能导致不必要的信息泄露。例如:去银行开户,银行作为凭证验证节点,需要验证用户的年龄是否大于18岁,但是并不关心用户性别,所以用户在提交凭证的时候可以不提交性别信息,只提交出生日期,这里的出生日期就是最小披露的信息,而用户将用户数据全部都提交给银行,产生了不必要的信息泄露的风险。如果针对每种业务去申请对应的凭证,又会极大地消耗资源(存储资源、请求凭证时耗费的资源)并给用户造成不便。



技术实现要素:

针对现有技术中的问题,本发明提供一种用于区块链的凭证验证方法、凭证管理方法以及凭证签发方法、相关装置、电子设备以及计算机可读存储介质,能够至少部分地解决现有技术中存在的问题。

为了实现上述目的,本发明采用如下技术方案:

第一方面,提供一种用于区块链的凭证验证方法,包括:

接收用户发送的凭证验证请求,该凭证验证请求包括:基于用户数据签发的用户凭证、该用户数据中用于业务处理的各属性的明文、该用户数据中其他各属性的哈希值;

对各明文分别进行哈希操作得到各明文的哈希值;

根据预定规则对各明文的哈希值与该其他各属性的哈希值进行聚合操作得到验证哈希字符串;

根据该用户凭证获取签发哈希字符串,并根据该签发哈希字符串和该验证哈希字符串得到验证结果。

进一步地,该根据该用户凭证获取签发哈希字符串,包括:

根据该用户凭证从区块链获取对应的签发节点的公钥;

利用该公钥解密该用户凭证得到该签发哈希字符串。

进一步地,用于区块链的凭证验证方法还包括:

在验证通过时利用用于业务处理的各属性的明文进行业务处理。

第二方面,提供一种用于区块链的凭证验证装置,包括:

凭证验证请求接收模块,接收用户发送的凭证验证请求,该凭证验证请求包括:基于用户数据签发的用户凭证、该用户数据中用于业务处理的各属性的明文、该用户数据中其他各属性的哈希值;

第一哈希运算模块,对各明文分别进行哈希操作得到各明文的哈希值;

第一字符串聚合模块,根据预定规则对各明文的哈希值与该其他各属性的哈希值进行聚合操作得到验证哈希字符串;

凭证解密模块,根据该用户凭证获取签发哈希字符串

凭证验证模块,根据该签发哈希字符串和该验证哈希字符串得到验证结果。

第三方面,提供一种用于区块链的凭证签发方法,包括:

接收用户发送的凭证签发请求,该凭证签发请求包括:用户数据;

对该用户数据中各属性的明文分别进行哈希操作得到各属性的哈希值;

将各属性的哈希值按预定规则进行聚合操作得到签发哈希字符串;

对该签发哈希字符串进行加密操作得到用户凭证,并将该用户凭证发送给该用户。

第四方面,提供一种用于区块链的凭证签发装置,包括:

凭证签发请求发送模块,接收用户发送的凭证签发请求,该凭证签发请求包括:用户数据;

第二哈希运算模块,对该用户数据中各属性的明文分别进行哈希操作得到各属性的哈希值;

第二字符串聚合模块,将各属性的哈希值按预定规则进行聚合操作得到签发哈希字符串;

凭证签发模块,对该签发哈希字符串进行加密操作得到用户凭证;

凭证反馈模块,将该用户凭证发送给该用户。

第五方面,提供一种用于区块链的凭证管理方法,包括:

获取用于业务处理的属性;

对用户数据中除用于业务处理的属性外的其他各属性的明文分别进行哈希操作得到对应的哈希值;

将基于用户数据签发的用户凭证、该用户数据中用于业务处理的各属性的明文、该用户数据中其他各属性的哈希值发送至凭证验证节点。

第六方面,提供一种用于区块链的凭证管理装置,包括:

业务处理属性获取模块,获取用于业务处理的属性

第三哈希运算模块,对用户数据中除用于业务处理的属性外的其他各属性的明文分别进行哈希操作得到对应的哈希值;

凭证验证请求发送模块,将基于用户数据签发的用户凭证、该用户数据中用于业务处理的各属性的明文、该用户数据中其他各属性的哈希值发送至凭证验证节点。

第七方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现上述的用于区块链的凭证验证方法或上述的用于区块链的凭证签发方法或上述的用于区块链的凭证管理方法的步骤。

第八方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的用于区块链的凭证验证方法或上述的用于区块链的凭证签发方法或上述的用于区块链的凭证管理方法的步骤。

本发明提供一种用于区块链的凭证验证方法、凭证管理方法以及凭证签发方法、相关装置、电子设备以及计算机可读存储介质,该用于区块链的凭证验证方法包括:接收用户发送的凭证验证请求,该凭证验证请求包括:基于用户数据签发的用户凭证、该用户数据中用于业务处理的各属性的明文、该用户数据中其他各属性的哈希值;对各明文分别进行哈希操作得到各明文的哈希值;根据预定规则对各明文的哈希值与该其他各属性的哈希值进行聚合操作得到验证哈希字符串;根据该用户凭证获取签发哈希字符串,并根据该签发哈希字符串和该验证哈希字符串得到验证结果。通过只将用于业务处理的属性的明文发送给凭证验证节点,凭证验证节点通过用户凭证、用于业务处理的属性的明文、用户数据中其他各属性的哈希值对用户凭证进行验证,并在验证通过后利用用于业务处理的属性的明文进行业务处理,而用户数据中其他各属性的明文凭证验证节点并不知晓,由此能够有区分的将凭证中的信息提交给业务验证者,实现信息的最小披露,防止不必要的信息泄露,而且也不需要针对每种业务去申请对应的凭证,减少消耗资源,方便用户使用。

为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。

附图说明

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

图1为实施本发明提供的方法的系统架构示意图;

图2是本发明实施例中的用于区块链的凭证验证方法的流程示意图一;

图3是本发明实施例中的用于区块链的凭证验证方法的流程示意图二;

图4是本发明实施例中的用于区块链的凭证验证方法的流程示意图三;

图5是本发明实施例中的用于区块链的凭证验证方法的流程示意图四;

图6示出了本发明实施例中的凭证签发过程;

图7示出了本发明实施例中的凭证验证过程;

图8示出了本发明实施例中的工作原理;

图9是本发明实施例中的用于区块链的凭证验证装置的结构框图;

图10是本发明实施例中的用于区块链的凭证签发方法的流程示意图;

图11是本发明实施例中的用于区块链的凭证签发装置的结构框图;

图12是本发明实施例中的用于区块链的凭证管理方法的流程示意图一;

图13是本发明实施例中的用于区块链的凭证管理方法的流程示意图二;

图14是本发明实施例中的用于区块链的凭证管理装置的结构框图;

图15为本发明实施例电子设备的结构图。

具体实施方式

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

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

在实现本发明的过程中,申请人发现如下相关技术:

人们在物理世界中会用身份证、驾驶证、护照等标识自己的身份,而在虚拟的网络世界中,用户则需要注册各种各样的账号,不同的应用会分配给用户一个id来标识用户。

在网络世界中,经常会使用一些第三方来登录某个应用。比如常用的微信授权登录、google授权登录、facebook授权登录等。用户使用这些第三方登录的诉求是减少账号的产生,用户只要有很少的几个账号就可以访问任意的应用了,不需要记住过多的账号和密码,但同时,第三方登录在给人们打开方便之门时,隐私也已经在到处流窜了,比如当用户拿着同一个账号在不同的应用之间切换的时候,用户的数据也在这些应用之间流动了,数据是用户的吗?答案是否定的,用户的数据属于那些应用背后的公司。用户今天想买一块儿手表,明天用户就能在别的地方看到手表的广告。用户信息可能已经是赤裸裸的了,只是取决于别人想不想挖掘。

去中心化身份标识(decentralizedidentifier,did)是w3c小组提出的一份关于去中心化身份的草案,试图达到保护用户数据隐私、用户自己控制信息、可信数据交换等一系列问题。本发明可以看成是该标准的一种丰富后的实现方案。did是为了保护用户的隐私而生的。首先did一定是基于区块链的,用户的凭证不应该属于某个集中式的服务,它不应该属于任何人,只属于用户,区块链技术为这个目标的实现提供了很好的基础,用户的凭证分散在全球的任意节点上,而且只有用户自己能够管理他的凭证。

did不需要向任何人申请,不会有任何第三方持有用户的did,用户的did只有用户自己能持有,用户持有的did能够通过一些算法证明是其自身身份。

现有数字身份认证系统架构虽然可以有效的解决数据孤岛、可信数据交换等问题,但是,没有考虑最小信息披露相关事宜,凭证申请者(或称凭证申请节点、凭证申请机构或用户)为了办理某些项业务,而向凭证签发者(或称凭证签发节点、凭证签发机构)申请凭证。如果不做区分的将凭证提交给任何业务验证方(或称凭证验证节点或凭证验证机构),可能导致严重的信息泄露。如果针对每种业务去申请对应的凭证,又会极大地消耗资源并给用户造成不便。

为至少部分解决现有技术中的上述技术问题,本发明实施例提供了一种用于区块链的凭证验证方法,通过只将用于业务处理的属性的明文发送给凭证验证节点,凭证验证节点通过用户凭证、用于业务处理的属性的明文、用户数据中其他各属性的哈希值对用户凭证进行验证,并在验证通过后利用用于业务处理的属性的明文进行业务处理,而用户数据中其他各属性的明文凭证验证节点并不知晓,由此能够有区分的将凭证中的信息提交给业务验证者,实现信息的最小披露,防止不必要的信息泄露,而且也不需要针对每种业务去申请对应的凭证,减少消耗资源,方便用户使用。

其中,凭证签发是指给凭证一个有效性权限,即证明该凭证有效。

图1为实施本发明提供的方法的系统架构示意图,如图1所示,区块链上设有多个节点,区块链上的各节点既可以签发凭证,也可以验证凭证,也可以申请凭证,即所有节点可以是凭证签发节点,同时也可是凭证验证节点或者凭证申请节点。首先,各节点需要注册成为区块链上成员,注册时为其分配公私钥对。私钥用于凭证的签发或数据加密,由节点自己保管;公钥存储在区块链上,用于其他节点验证签名,可以通过节点id检索到公钥。

用户也需要注册才能使用节点进行业务,虽然普通用户不是区块链(或联盟链)上的成员,也需要为其分配公私钥对。因此,可通过设置访问区块链节点实现服务,比如设计一个“代理”为普通用户服务,主要服务包括:为用户注册区块链上的身份、申请凭证、提交凭证验证申请等。

凭证生成流程用于将凭证的所有内容hash加密之后签名,凭证最小信息验证流程用于验证凭证的真伪。

值得说明的是,调用凭证生成流程的机构,会用自己的私钥为凭证签名,其对应公钥存在区块链上,可以通过机构唯一id在区块链查询到;调用凭证最小信息验证流程的机构首先通过机构唯一id在区块链查询到凭证生成机构的公钥,然后用其公钥验证凭证的签名。

如果有用户向签发机构申请凭证,签发机构则调用凭证生成流程对凭证(即用户数据)的每一个属性的明文(也可称为原值)分别哈希,将所有的hash<属性>聚合成一个聚合hash值后,用其私钥生成签名,最后签发机构将凭证、生成凭证所基于的原始用户数据颁发给用户。

用户提交凭证进行凭证验证的时候,用与凭证生成流程相同的属性哈希规则,对不需要披露的属性(即用户数据中其他各属性,也可称为业务处理不必要的属性)进行哈希运算,然后将哈希后的属性值、待验证凭证、需要披露的属性(即用于业务处理的属性,也称称为业务处理必要的属性,具体为用户数据中除用户数据中其他各属性外的其他属性)发给验证机构。

本领域技术人员可以理解的是,针对不同验证机构(也可称为业务处理机构,比如银行),其对应的用于业务处理的属性可根据机构的需要而不同。

如果用户向验证机构提交凭证验证,验证机构则调用凭证最小信息验证流程。首先,用与凭证生成时相同的属性哈希规则,对需要披露的属性的明文进行哈希运算;其次,用与凭证生成流程相同聚合规则生成聚合hash值;然后,通过签发者的机构id,在区块链上检索到其公钥,用公钥对凭证的签名进行解密;最后,比对自身生成的hash值,与解密得到hash值是否一致,从而判断凭证的真伪。

其中,凭证签发节点、凭证申请节点以及凭证验证节点的所有针对区块链的操作都是通过智能合约完成,包括:注册、注册时分配公私钥对、各种区块链上的信息查询、保存信息至区块链等。

图2是本发明实施例中的用于区块链的凭证验证方法的流程示意图一;如图2所示,该用于区块链的凭证验证方法可以由区块链上任一节点执行,并将执行该步骤的节点称为凭证验证节点,该方法具体可以包括以下内容:

步骤s100:接收用户发送的凭证验证请求,该凭证验证请求包括:基于用户数据签发的用户凭证、该用户数据中用于业务处理的各属性的明文、该用户数据中其他各属性的哈希值。

其中,用户凭证由凭证签发节点将用户随凭证签发请求发送的用户数据所包含的多个属性的明文分别哈希、按预定规则聚合、签名后得到,用户数据中其他各属性的哈希值由用户对其他各属性的明文分别进行哈希运算得到;另外,用户数据包括多个属性(也可以称为字段),由用于业务处理的属性和其他各属性组成。

值得说明的是,哈希运算无法逆运算,因此,用户数据中其他各属性的明文不会被凭证验证节点获知,以此,减少了信息披露。

步骤s200:对各明文分别进行哈希操作得到各明文的哈希值;

具体地,用与凭证生成流程相同的属性哈希规则对用于业务处理的属性的明文进行哈希运算得到对应的哈希值;

步骤s300:根据预定规则对各明文的哈希值与该其他各属性的哈希值进行聚合操作得到验证哈希字符串

其中,聚合时所采用的预定规则以及签发、申请、验证的规则等可预先通过智能合约的形式发送至各个区块链节点。

举例来说,假设用户数据包括的属性有姓名、性别、年龄、职业、学历、婚姻状况,用于业务处理的属性为姓名、年龄、学历,用户数据中其他各属性为性别、职业、婚姻状况,预定规则可为按预设顺序拼接,也可以是预设的算法进行处理等,比如按照姓名、性别、年龄、职业、学历、婚姻状况的顺序进行拼接。此时,获取姓名值、年龄值、学历值、性别哈希值、职业哈希值、婚姻状况哈希值,对姓名值、年龄值、学历值进行哈希运算,将计算得到的姓名哈希值、获取的性别哈希值、计算得到的年龄哈希值、获取的职业哈希值、计算得到的学历哈希值、获取的婚姻状况哈希值进行拼接,得到验证哈希字符串。

步骤s400:根据该用户凭证获取签发哈希字符串,并根据该签发哈希字符串和该验证哈希字符串得到验证结果;

其中,签发哈希字符串由凭证签发节点将用户随凭证签发请求发送的用户数据所包含的多个属性的明文分别哈希、按预定规则聚合得到,承载在所述用户凭证上,需要利用凭证签发节点的公钥对用户凭证进行解密(也可称为验证)得到。

当验证哈希字符串和签发哈希字符串比对结果一致时,验证通过,如果比对结果不一致,则验证不通过,向用户发送验证不通过的消息,并拒绝用户进行业务处理。

通过采用上述技术方案,只将用于业务处理的属性的明文发送给凭证验证节点,凭证验证节点通过用户凭证、用于业务处理的属性的明文、用户数据中其他各属性的哈希值对用户凭证进行验证,并在验证通过后利用用于业务处理的属性的明文进行业务处理,而用户数据中其他各属性的明文凭证验证节点并不知晓,由此能够有区分的将凭证中的信息提交给业务验证者,实现信息的最小披露,防止不必要的信息泄露,而且也不需要针对每种业务去申请对应的凭证,减少消耗资源,方便用户使用。

在一个可选的实施例中,参见图3,该用于区块链的凭证验证方法还可以包括:

步骤s10:向用户发送用于业务处理的属性。

其中,凭证验证节点作为业务执行端,比如银行,需要将用于业务处理的属性发送至用户,以便用户可需要进行业务时将用于业务处理的属性的明文发送至凭证验证节点,以便顺利实现业务处理。

在一个进一步地实施例中,该用于区块链的凭证验证方法在向用户发送用于业务处理的属性之前,还可以包括:获取用户发送的业务请求;

其中,基于用户的业务请求触发,向用户发送用于业务处理的属性。

在另一个进一步地实施例中,该步骤s10可以为定时或者基于预设触发条件的触发而向用户发送用于业务处理的属性。

在一个可选的实施例中,参见图4,该用于区块链的凭证验证方法还可以包括:

步骤s410:根据该用户凭证从区块链获取对应的签发节点的公钥;

其中,用户凭证上记载有凭证签发节点的id,凭证签发节点的公钥存在区块链上,可以通过节点唯一id在区块链查询到;凭证验证节点首先通过节点唯一id在区块链查询到凭证签发节点的公钥,然后用其公钥验证凭证的签名,或者说用公钥解密用户凭证。

步骤s420:利用该公钥解密该用户凭证得到该签发哈希字符串。

值得说明的是,由于凭证签发节点签发的哈希字符串经过凭证签发节点基于私钥加密,因此,在获取签发哈希字符串时,需要利用其对应的公钥进行解密后方可获取。

在一个可选的实施例中,参见图5,该用于区块链的凭证验证方法还可以包括:

步骤s500:在验证通过时利用该用于业务处理的属性的明文进行业务处理。

具体地,在验证通过时,利用凭证验证请求中的数据进行业务处理,实现了验证数据与业务处理基础数据的结合,降低了业务处理的复杂度,提高了资源利用效率。

本发明实施例将最小信息披露方案运用到基于区块链(如联盟链)的数字身份认证系统架构中,能保证用户正常办理业务的前提下,披露最少个人隐私信息给验证者,尽可能的保护用户隐私,减轻信息泄露的风险。本发明实施例基于区块链数据无法篡改的特性,使得凭证签发和验证过程变得方便且可信,用户可以针对不同的业务场景,将不同的属性披露给对方,本发明构建在区块链之上,利用区块链了的优点,达到了去中心化的目的,天然就是一种dapps(去中心化应用)。

为了使本领域技术人员更好地理解本申请,下面举例对本申请中的方法进行详细说明:

参见图6,凭证生成或称凭证签发的过程如下:

1.接收用户发送的凭证签发请求,凭证签发请求包括用户数据,用户数据具有三个属性,即属性1、属性2和属性3;

2.对用户数据中的每个属性的明文进行哈希运算生成一个对应的hash值。

3.将每个属性的hash值以某种形式聚合起来形成一个字符串hash(相当于整个凭证的hash)。

4.使用privatekey对第3步的字符串hash进行签名,得到签名的值signature。

其中,凭证生成流程针对用户数据中的属性做哈希运算,而不是对整个数据做一次哈希,通过细化哈希对象使得后续验证凭证信息的时候也能细化验证对象。当凭证最小信息验证流程需要验证凭证信息真伪时,只需要按照同样的流程生成一个聚合的hash值,然后比较两个聚合后的hash值,即可判断凭证的真伪。

下面参照图7,对本发明中涉及的凭证最小信息验证流程进行详细的说明。

用户选择需要披露的属性集合(可以是一个或者几个属性,这个例子中是属性2),需要披露的属性提供原文,其他属性提供hash值,验证过程如下:

1.提取用户披露的属性(即用于业务处理的属性),对用户披露的属性分别计算hash(这个例子中是属性2;

2.计算出hash<属性2>,然后得到一个包含所有字段hash值的凭证结构。

3.对这个凭证结构中的每个字段的hash值以某种形式聚合起来形成一个字符串hash。

4.使用凭证的signature和颁发者的publickey进行解密,得到一个签名的计算值。

5.比较凭证的signature与签名的计算值,看是否相等,确认这个凭证的合法性。

其中,凭证最小信息验证流程只需要验证需要的信息即可,并不需要验证凭证的所有用户数据,从而极大的保护了用户的隐私。用户提交给凭证最小信息验证流程的数据只有“属性2”是没有加密过的原始信息,其他内容对于验证方始终都是不可见的,而凭证最小信息验证流程只需要按照和凭证生成流程相同的“聚合hash”生成规则生成聚合hash值,即可验证凭证真伪。在整个验证过程中,对验证方可视的始终只看到了“属性2”。

下面参见图8,对本发明的凭证签发和验证进行详细的说明:

1.用户、凭证签发者、凭证验证者都注册成区块链上的成员,注册时为每一个成员分配id和公私钥对,这些信息存储在区块链上;

2.用户向凭证签发者申请个人信息凭证;

3.凭证签发者将用户的不同属性信息分别hash,然后将这些hash值聚合成一个hash值。签发者用私钥对聚合后的hash签名。签发者将原始用户信息、签名作为一个数字凭证发送给用户;

4.用户将原始数据中不必要的信息属性哈希,将哈希后的信息、凭证签发者的签名、凭证签发者的id发送给凭证验证者;

5.凭证验证者将用户数据所有属性哈希,并聚合成一个hash值。

6.凭证验证者通过凭证签发者的id,在区块链上查询到凭证签发者的公钥。

7.凭证验证者用凭证签发者的公钥解密凭证签发者的签名;

8.凭证验证者核对步骤5和步骤7的值是否一致,如果一致,则说明凭证真是有效。

基于同一发明构思,本申请实施例还提供了一种用于区块链的凭证验证装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于用于区块链的凭证验证装置解决问题的原理与上述方法相似,因此用于区块链的凭证验证装置的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图9是本发明实施例中的用于区块链的凭证验证装置的结构框图。如图9所示,该用于区块链的凭证验证装置具体包括:凭证验证请求接收模块100、第一哈希运算模块200、第一字符串聚合模块300、凭证解密模块400以及凭证验证模块500。

凭证验证请求接收模块100接收用户发送的凭证验证请求,该凭证验证请求包括:基于用户数据签发的用户凭证、该用户数据中用于业务处理的各属性的明文、该用户数据中其他各属性的哈希值;

第一哈希运算模块200对各明文分别进行哈希操作得到各明文的哈希值;

第一字符串聚合模块300根据预定规则对各明文的哈希值与该其他各属性的哈希值进行聚合操作得到验证哈希字符串;

凭证解密模块400根据该用户凭证获取签发哈希字符串

凭证验证模块500根据该签发哈希字符串和该验证哈希字符串得到验证结果。

通过采用上述技术方案,只将用于业务处理的属性的明文发送给凭证验证节点,凭证验证节点通过用户凭证、用于业务处理的属性的明文、用户数据中其他各属性的哈希值对用户凭证进行验证,并在验证通过后利用用于业务处理的属性的明文进行业务处理,而用户数据中其他各属性的明文凭证验证节点并不知晓,由此能够有区分的将凭证中的信息提交给业务验证者,实现信息的最小披露,防止不必要的信息泄露,而且也不需要针对每种业务去申请对应的凭证,减少消耗资源,方便用户使用。

本发明实施例还提供了一种用于区块链的凭证签发方法,参见图10,该用于区块链的凭证签发方法可以由区块链上任一节点执行,并将执行该步骤的节点称为凭证签发节点,具体可以包括以下内容:

步骤s1000:接收用户发送的凭证签发请求,该凭证签发请求包括:用户数据;

具体地,用户数据由用于业务处理的属性以及用户数据中其他各属性组成,比如姓名、性别、年龄、职业、学历、婚姻状况等。

步骤s2000:对该用户数据中各属性的明文分别进行哈希操作得到各属性的哈希值;

其中,基于凭证签发节点的权威性,在签发凭证时,可将用户数据所包含的多个属性的明文均发送至凭证签发节点进行哈希。

步骤s3000:将各属性的哈希值按预设规则进行聚合操作得到签发哈希字符串;

其中,预定规则可为按预设顺序进行拼接,也可以是按预设的算法进行处理等,比如按照姓名、性别、年龄、职业、学历、婚姻状况的顺序将姓名哈希值、性别哈希值、年龄哈希值、职业哈希值、学历哈希值、婚姻状况哈希值进行拼接,得到签发哈希字符串。

步骤s4000:对该签发哈希字符串进行加密操作得到用户凭证,并将该用户凭证发送给该用户。

其中,利用凭证签发节点的私钥对该签发哈希字符串进行加密操作(也可称为签名)得到用户凭证

值得说明的是,凭证签发节点在将签发后的用户凭证反馈给凭证申请节点的同时,也将得到该用户凭证所依据的用户数据捆绑发送给凭证申请节点,以防后续使用的用户数据与凭证签发时所依据的用户数据不同造成的凭证验证失败等问题。

通过采用上述技术方案,在签发凭证时,针对凭证中的各个属性分别做哈希运算,而不是对整个凭证做一次哈希,通过细化哈希对象使得后续验证凭证信息时也能细化验证对象,即:将凭证拆分成不同的属性组成,然后对所有这些属性分别哈希运算,然后将这些属性的hash<属性>整合成一个聚合的hash值。当需要验证凭证信息真伪时,只需要按照同样的流程生成一个聚合的hash值,然后比较两个聚合后的hash值,即可判断凭证的真伪,实现凭证验证过程的最小信息披露。

在一个可选的实施例中,该用于区块链的凭证签发方法还可以包括:生成公私钥对并将公钥发布到区块链上。

具体地,可基于rsa加密算法生成公私钥对。

基于同一发明构思,本申请实施例还提供了一种用于区块链的凭证签发装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于用于区块链的凭证签发装置解决问题的原理与上述方法相似,因此用于区块链的凭证签发装置的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图11是本发明实施例中的用于区块链的凭证签发装置的结构框图。如图11所示,该用于区块链的凭证签发装置具体包括:凭证签发请求发送模块1000、第二哈希运算模块2000、第二字符串聚合模块3000、凭证签发模块4000以及凭证反馈模块5000。

凭证签发请求发送模块1000接收用户发送的凭证签发请求,该凭证签发请求包括:用户数据;

第二哈希运算模块2000对该用户数据中各属性的明文分别进行哈希操作得到各属性的哈希值;

第二字符串聚合模块3000将各属性的哈希值按预设规则进行聚合操作得到签发哈希字符串;

凭证签发模块4000对该签发哈希字符串进行加密操作得到用户凭证;

凭证反馈模块5000将该用户凭证发送给该用户。

通过采用上述技术方案,在签发凭证时,针对凭证中的各个属性分别做哈希运算,而不是对整个凭证做一次哈希,通过细化哈希对象使得后续验证凭证信息时也能细化验证对象,即:将凭证拆分成不同的属性组成,然后对所有这些属性分别哈希运算,然后将这些属性的hash<属性>整合成一个聚合的hash值。当需要验证凭证信息真伪时,只需要按照同样的流程生成一个聚合的hash值,然后比较两个聚合后的hash值,即可判断凭证的真伪,实现凭证验证过程的最小信息披露。

本发明实施例还提供一种用于区块链的凭证管理方法,参见图12,该可以由区块链上任一节点执行,并将执行该步骤的节点称为凭证申请节点,具体可以包括以下内容:

步骤s1:获取用于业务处理的属性;

具体地,用于业务处理的属性由凭证验证节点发送。本领域技术人员可以理解的是,不同凭证验证节点可以发送不同的用于业务处理的属性,其中,用于业务处理的属性可以是一个,也可以是多个,具体根据凭证验证节点的需求决定,本发明实施例对此不作限制。

其中,用户数据中除凭证验证节点发送的用于业务处理的属性外,其他属性为用户数据中其他各属性。

步骤s2:对用户数据中除用于业务处理的属性外的其他各属性的明文分别进行哈希操作得到对应的哈希值;

具体地,用与凭证生成流程相同的属性哈希规则对用户数据中其他各属性的明文进行哈希运算得到用户数据中其他各属性的哈希值;

其中,用户数据由用于业务处理的属性以及用户数据中其他各属性组成,比如姓名、性别、年龄、职业、学历、婚姻状况等。另外,该用户数据是签发凭证时所依据的用户数据。

值得说明的是,用户数据中的属性是否为用于业务处理的属性,由业务处理节点(即凭证验证节点)决定,本领域技术人员可以理解的是,不同的业务处理节点对属性是否必要的需求是不同的。在业务申请节点想要进行某一业务时,获取执行该业务的业务处理节点反馈的用于业务处理的属性,用户数据中除用于业务处理的属性之外的属性为用户数据中其他各属性。

步骤s3:将基于用户数据签发的用户凭证、该用户数据中用于业务处理的各属性的明文、该用户数据中其他各属性的哈希值发送至凭证验证节点,以便凭证验证节点进行验证和/或业务处理。

举例来说,假设用户数据包括的属性有姓名、性别、年龄、职业、学历、婚姻状况,用于业务处理的属性为姓名、年龄、学历,用户数据中其他各属性为性别、职业、婚姻状况,预定规则为按照姓名、性别、年龄、职业、学历、婚姻状况的顺序进行聚合,此时,对性别值、职业值、婚姻状况值进行哈希运算,将用户凭证、姓名值、年龄值、学历计算值以及计算得到的性别哈希值、职业哈希值、婚姻状况哈希值发送至凭证验证节点,凭证验证节点对姓名值、年龄值、学历值进行哈希运算,将计算得到的姓名哈希值、获取的性别哈希值、计算得到的年龄哈希值、获取的职业哈希值、计算得到的学历哈希值、获取的婚姻状况哈希值进行聚合,得到验证哈希字符串,与根据凭证签发节点的公钥对用户凭证进行解密后得到的签发哈希字符串进行比对,基于比对的一致性实现凭证验证。

通过采用上述技术方案,只将用于业务处理的属性的明文发送给凭证验证节点,凭证验证节点通过用户凭证、用于业务处理的属性的明文、用户数据中其他各属性的哈希值对用户凭证进行验证,并在验证通过后利用用于业务处理的属性的明文进行业务处理,而用户数据中其他各属性的明文凭证验证节点并不知晓,由此能够有区分的将凭证中的信息提交给业务验证者,实现信息的最小披露,防止不必要的信息泄露,而且也不需要针对每种业务去申请对应的凭证,减少消耗资源,方便用户使用。

在一个可选的实施例中,参见图13,该用于区块链的凭证管理方法还可以包括:

步骤s4:向凭证签发节点发送凭证签发请求,所述凭证签发请求包括用户数据,以便所述凭证签发节点将所述用户数据所包含的多个属性的明文分别哈希、按预定规则聚合、加密、签名后得到用户凭证;

值得说明的是,为防止数据泄密,凭证签发请求是以加密的方式传输至凭证签发节点。

步骤s5:获取所述凭证签发节点反馈的所述用户凭证。

其中,凭证签发节点反馈用户凭证时会一并反馈签发该用户凭证所依据的用户数据,为了保持数据统一性,可将用户凭证以及对应的用户数据捆绑。

基于同一发明构思,本申请实施例还提供了一种用于区块链的凭证管理装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于用于区块链的凭证管理装置解决问题的原理与上述方法相似,因此用于区块链的凭证管理装置的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图14是本发明实施例中的用于区块链的凭证管理装置的结构框图。如图14所示,该用于区块链的凭证管理装置可以包括:业务处理属性获取模块1、第三哈希运算模块2以及凭证验证请求发送模块3。

业务处理属性获取模块1获取用于业务处理的属性

第三哈希运算模块2对用户数据中除用于业务处理的属性外的其他各属性的明文分别进行哈希操作得到对应的哈希值;

凭证验证请求发送模块3将基于用户数据签发的用户凭证、该用户数据中用于业务处理的各属性的明文、该用户数据中其他各属性的哈希值发送至凭证验证节点。

通过采用上述技术方案,只将用于业务处理的属性的明文发送给凭证验证节点,凭证验证节点通过用户凭证、用于业务处理的属性的明文、用户数据中其他各属性的哈希值对用户凭证进行验证,并在验证通过后利用用于业务处理的属性的明文进行业务处理,而用户数据中其他各属性的明文凭证验证节点并不知晓,由此能够有区分的将凭证中的信息提交给业务验证者,实现信息的最小披露,防止不必要的信息泄露,而且也不需要针对每种业务去申请对应的凭证,减少消耗资源,方便用户使用。

为了使本领域技术人员更好地理解本发明,下面举例对凭证签发、凭证验证的整个过程进行说明:

(1)区块链上的各节点在区块链上注册,验证身份,生成公私钥并将私钥自己存储,公钥发布到区块链上;

(2)凭证申请节点在需要签发凭证时向凭证签发节点发送凭证签发请求,凭证签发请求包括用户数据;

(3)凭证签发节点对用户数据所包含的多个属性的明文分别进行哈希运算得到各属性的哈希值;

(4)凭证签发节点将各属性的哈希值按预定规则聚合得到签发哈希字符串;

(5)凭证签发节点利用私钥对所述签发哈希字符串加密后签名得到用户凭证,并将所述用户凭证反馈给所述凭证申请节点;

(6)凭证申请节点获取所述凭证签发节点反馈的所述用户凭证以及生成所述用户凭证所依据的用户数据。

(7)凭证申请节点在需要进行业务时触发业务请求;

(8)凭证验证节点响应业务请求,向凭证申请节点反馈该用于业务处理的属性;

(9)凭证申请节点根据该用于业务处理的属性得到用户数据中其他各属性;

(10)凭证申请节点对用户数据中用户数据中其他各属性的明文进行哈希运算得到用户数据中其他各属性的哈希值;

(11)凭证申请节点将用户凭证、用户数据中用于业务处理的属性的明文、用户数据中其他各属性的哈希值发送至凭证验证节点。

(12)凭证验证节点获取凭证申请节点发送的用户凭证、用于业务处理的属性的明文、用户数据中其他各属性的哈希值;

(13)凭证验证节点对所述用于业务处理的属性的明文进行哈希运算得到必要属性哈希值;

(14)凭证验证节点将所述必要属性哈希值和所述用户数据中其他各属性的哈希值按所述预定规则聚合后得到验证哈希字符串;

(15)凭证验证节点根据所述用户凭证从区块链获取并存储所述凭证签发节点发布到所述区块链上的公钥;

(16)凭证验证节点利用公钥解密所述用户凭证得到签发哈希字符串;

(17)凭证验证节点比对所述验证哈希字符串和所述签发哈希字符串得到验证结果,并在验证通过时利用所述用于业务处理的属性的明文进行业务处理。

上述实施例阐明的装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为电子设备,具体的,电子设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

在一个典型的实例中电子设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的用于区块链的凭证验证方法或用于区块链的凭证签发方法或用于区块链的凭证管理方法的步骤。

下面参考图15,其示出了适于用来实现本申请实施例的电子设备600的结构示意图。

如图15所示,电子设备600包括中央处理单元(cpu)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分608加载到随机访问存储器(ram))603中的程序而执行各种适当的工作和处理。在ram603中,还存储有系统600操作所需的各种程序和数据。cpu601、rom602、以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。

以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。

特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的用于区块链的凭证验证方法或用于区块链的凭证签发方法或用于区块链的凭证管理方法的步骤。

从上述描述可知,本发明实施例提供的计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的用于区块链的凭证验证方法或用于区块链的凭证签发方法或用于区块链的凭证管理方法的步骤。

在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1