资质验证方法、装置、系统、设备和可读存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种资质验证方法、装置、系统、设备和可读存储介质。
背景技术
个人或者组织(作为申请方)为了使用某些服务,常常需要向审核方提供自己的某项资质的证明,例如个人为了贷款需要向金融机构证明自己有硕士学历、个人为了玩某个游戏需要游戏厂商证明自己年满18岁、个人为了租车需要向租车平台证明自己有驾照,企业为了在电商平台销售服饰需要向电商平台证明自己有销售服饰的资质等等。
现在的技术,主要通过个人或者企业作为申请方上传某些“证书”或者“资质文件”的信息,审核方进行人工或者机器对这些信息进行审核和校验,进而判断申请方是否具有真实的资质。
然而,现有技术因为需要提交某些资质文件提供审核,而这些资质文件中有大量非审核所需的信息,存在申请方隐私泄露的隐患。
发明内容
本发明实施例提供一种资质验证方法、装置、系统、设备和可读存储介质,降低了申请方信息泄露的风险。
根据本发明的第一方面,提供一种资质验证方法,包括:
获取资质验证请求,所述资质验证请求包括所述第一密钥以及目标验证项信息,其中,第一密钥为资质申请端生成的;
基于区块链合约,根据从资质发放端获取的第一资质信息,对所述第一密钥和从资质申请端获取的第二资质信息进行校验;
若确定所述校验通过,则基于区块链合约,根据所述目标验证项信息对所述第二资质信息进行验证。
可选地,所述第二资质信息为加密信息;
所述基于区块链合约,根据从资质发放端获取的第一资质信息,对所述第一密钥和从资质申请端获取的第二资质信息进行校验,包括:
基于区块链合约,以所述第一密钥对从资质申请端获取的第二资质信息进行解密,得到资质明文信息;
基于区块链合约,根据从资质发放端获取的第一资质信息,对所述资质明文信息进行校验。
可选地,所述第一资质信息包括资质发放端生成的资质明文信息的第一哈希值;
所述基于区块链合约,根据从资质发放端获取的第一资质信息,对所述资质明文信息进行校验,包括:
基于区块链合约,对所述资质明文信息哈希处理,得到第二哈希值;
基于区块链合约,判断所述第二哈希值与所述第一哈希值是否一致,若是,则确定校验通过,若否,则确定校验不通过。
可选地,所述资质验证请求还包括:所述资质发放端的公钥;
在所述获取资质验证请求之前,还包括:从资质发放端获取第一资质信息和所述第一资质信息对应的签名数据;
在所述基于区块链合约,判断所述第二哈希值与所述第一哈希值是否一致之前,还包括:基于区块链合约,以所述资质发放端的公钥,对所述第一资质信息对应的签名数据进行验签处理,得到验签通过的指示结果。
可选地,在所述基于区块链合约,以所述第一密钥对从资质申请端获取的第二资质信息进行解密,得到资质明文信息之前,还包括:
获取所述第一密钥的合法性审核信息;
基于区块链合约,根据所述合法性审核信息,确定所述第一密钥合法。
可选地,所述第一密钥指示了资质申请端预设的验证有效期;
所述获取所述第一密钥的合法性审核信息,包括:获取所述第一密钥指示的所述验证有效期;
所述基于区块链合约,根据所述合法性审核信息,确定所述第一密钥合法,包括:
获取从所述资质审核端接收到所述第一密钥的时间戳;
若所述时间戳在所述验证有效期之前,则基于区块链合约,确定所述第一密钥合法。
可选地,所述第一密钥指示了资质申请端预设的有效验证项信息;
在所述基于区块链合约,根据所述目标验证项信息对所述第二资质信息进行验证之前,还包括:
获取所述第一密钥指示的所述有效验证项信息;
基于区块链合约,根据所述有效验证项信息,确定所述目标验证项信息合法。
可选地,所述若确定所述校验通过,则基于区块链合约,根据所述目标验证项信息对所述第二资质信息进行验证,包括:
若确定所述校验通过,则基于区块链合约,根据所述目标验证项信息对所述资质明文信息进行验证。
可选地,在所述获取资质验证请求之前,还包括:
在从资质发放端获取到所述第一资质信息及所述第一资质信息对应的签名数据时,向所述资质发放端反馈区块链存储信息,以使得所述资质发放端将所述区块链存储信息发送给所述资质申请端;
接收资质申请端发送的包含所述区块链存储信息的资质查询请求;
响应所述资质查询请求,将所述区块链存储信息对应的所述第一资质信息以及所述第一资质信息对应的签名数据发送给所述资质申请端,以使得所述资质申请端进行信息验证。
根据本发明实施例的第二方面,提供一种资质验证方法,包括:
以第一密钥对从资质发放端获取的资质数据加密,得到第二资质信息,并将所述第二资质信息发送至区块链;
以资质审核端的公钥对所述第一密钥加密,得到第二密钥,并将包含所述第二密钥的资质证明信息发送至所述资质审核端,以使得所述资质审核端以私钥对所述第二密钥解密,得到所述第一密钥。
可选地,在所述以第一密钥对从资质发放端获取的资质数据加密之前,还包括:
根据当前时间戳确定验证有效期;
根据所述验证有效期,生成第一密钥,所述第一密钥包括所述验证有效期。
可选地,所述根据所述验证有效期,生成第一密钥,还包括:
获取有效验证项信息;
根据所述验证有效期和所述有效验证项信息,生成第一密钥,所述第一密钥包括所述验证有效期和所述有效验证项信息。
可选地,在所述以第一密钥对从资质发放端获取的资质数据加密,得到第二资质信息,并将所述第二资质信息发送至区块链之前,还包括:
从资质发放端接收所述资质数据;
在从所述资质发放端接收到区块链存储信息时,向所述区块链发送包含所述区块链存储信息的资质查询请求,其中,所述区块链存储信息是所述区块链发送给所述资质发放端的反馈信息;
从所述区块链获取第一资质信息以及所述第一资质信息对应的签名数据,其中,所述第一资质信息以及所述第一资质信息对应的签名数据是所述资质发放端发送给所述区块链的信息;
以所述资质发放端的公钥对所述第一资质信息对应的签名数据进行验签处理,得到验签通过的指示结果;
根据所述资质数据,对所述第一资质信息进行信息验证,得到验证通过的指示结果。
根据本发明实施例的第三方面,提供一种资质验证方法,包括:
从资质申请端获取包含第二密钥的资质证明信息,并以私钥对所述第二密钥解密,得到所述第一密钥;
向区块链发送资质验证请求,并获取所述区块链响应资质验证请求获得的验证结果,其中,所述资质验证请求包括所述第一密钥以及预设的目标验证项信息。
根据本发明实施例的第四方面,提供一种资质验证装置,包括:
接收模块,用于获取资质验证请求,所述资质验证请求包括第一密钥以及目标验证项信息;
处理模块,用于基于区块链合约,根据从资质发放端获取的第一资质信息,对所述第一密钥和从资质申请端获取的第二资质信息进行校验;
验证模块,用于若确定所述校验通过,则基于区块链合约,根据所述目标验证项信息对所述第二资质信息进行验证。
根据本发明实施例的第五方面,提供一种资质验证装置,包括:
第一处理模块,用于以第一密钥对从资质发放端获取的资质数据加密,得到第二资质信息,并将所述第二资质信息发送至区块链;
第二处理模块,用于以资质审核端的公钥对所述第一密钥加密,得到第二密钥,并将包含所述第二密钥的资质证明信息发送至所述资质审核端,以使得所述资质审核端以私钥对所述第二密钥解密,得到所述第一密钥。
根据本发明实施例的第六方面,提供一种资质验证装置,包括:
接收模块,用于从资质申请端获取包含第二密钥的资质证明信息,并以私钥对所述第二密钥解密,得到第一密钥;
审核模块,用于向区块链发送资质验证请求,并获取所述区块链响应资质验证请求获得的验证结果,其中,所述资质验证请求包括所述第一密钥以及预设的目标验证项信息。
根据本发明实施例的第七方面,提供一种资质验证系统,包括:
区块链,用于执行本发明实施例第一方面所述的资质验证方法;
资质申请端,用于执行本发明实施例第二方面所述的资质验证方法;
资质审核端,用于执行本发明实施例第三方面所述的资质验证方法;
以及,资质发放端。
根据本发明实施例的第八方面,提供一种电子设备,包括:存储器、处理器以及计算机程序,所述计算机程序存储在所述存储器中,所述处理器运行所述计算机程序执行本发明实施例第一方面或第二方面或第三方面所述的资质验证方法。
根据本发明实施例的第九方面,提供一种可读存储介质,包括:所述可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用于实现本发明实施例第一方面或第二方面或第三方面所述的资质验证方法。
本发明实施例提供一种资质验证方法、装置、系统、设备和可读存储介质,以资质申请端、资质发放端、资质审核端以及区块链构建资质验证系统,将资质发放端对资质申请端生成的资质信息存储在区块链中,资质申请端通过向资质审核端提供密钥来限定其可验证的有效验证项信息,资质审核端根据资质申请端提供的密钥调用区块链进行资质验证,降低了信息泄露风险,提高了资质信息的安全性,进而提高了资质验证的可靠性。
附图说明
图1是本发明实施例提供的一种资质验证系统示意图;
图2是本发明实施例提供的一种资质验证方法示意图;
图3是本发明实施例提供的一种资质数据发放过程的流程示意图;
图4是本发明实施例提供的一种资质申请端、资质审核端以及区块链之间的资质验证方法流程示意图;
图5是本发明实施例提供的一种区块链侧的资质验证装置结构示意图;
图6是本发明实施例提供的一种资质申请端侧的资质验证装置结构示意图;
图7是本发明实施例提供的一种资质审核端侧的资质验证装置结构示意图;
图8是本发明实施例提供的一种电子设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
应当理解,在本发明的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
应当理解,在本发明中,“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本发明中,“多个”是指两个或两个以上。“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。“包含A、B和C”、“包含A、B、C”是指A、B、C三者都包含,“包含A、B或C”是指包含A、B、C三者之一,“包含A、B和/或C”是指包含A、B、C三者中任1个或任2个或3个。
应当理解,在本发明中,“与A对应的B”、“与A相对应的B”、“A与B相对应”或者“B与A相对应”,表示B与A相关联,根据A可以确定B。根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其他信息确定B。A与B的匹配,是A与B的相似度大于或等于预设的阈值。
取决于语境,如在此所使用的“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
在各种场景中,个人或者组织作为用户都可能需要先资质审核方提供一些资质证明,例如个人为了贷款需要向金融机构证明自己有硕士学历,或者是个人为了玩某个游戏需要游戏厂商证明自己年满18岁,或者是个人为了租车需要向租车平台证明自己有驾照,或者是企业为了在电商平台销售服饰需要向电商平台证明自己有销售服饰的资质等等。在这些资质验证场景中,用户需要向例如上述金融机构、游戏厂商、租车平台或电商平台这些资质审核方提供自己的资质证明,然后由审核方对资质证明进行资质验证。
而这些资质文件中有大量非审核所需的信息,存在申请方隐私泄露的问题。比如个人为了证明自己年满18岁,向游戏厂商提供了身份证扫描件,实际上只需要身份证的出生日期即可证明,但是个人却同时把自己的性别、民族、住址等信息泄露了。比如个人为了证明自己有硕士学历,向租车平台提交了学位证书,虽然只有学位级别与资质有关,但学位证书却把个人的毕业院校、毕业时间等信息泄露了。企业为了证明自己有某种经营资质,但提交给电商平台的营业执照后却把注册资本、法人、地址等信息泄露了。
参见图1,是本发明实施例提供的一种资质验证系统示意图。为了降低信息泄露的风险,本申请以区块链100、资质申请端200、资质审核端300以及资质发放端400构建如图1所示的资质验证系统,将资质发放端400对资质申请端200生成的资质信息存储在区块链100中,资质申请端200通过向资质审核端300提供密钥来限定其可验证的有效验证项信息,资质审核端300根据资质申请端200提供的密钥调用区块链进行资质验证,降低了信息泄露风险,提高了资质信息的安全性,进而提高了资质验证的可靠性。
参见图2,是本发明实施例提供的一种资质验证方法示意图,图2所示方法的执行主体可以是软件和/或硬件装置,例如图1所示的区块链基于区块链预设的智能合约(以下称为基于区块链合约)执行下面各种操作,实现图2所示的过程。图2所示的方法包括步骤S101至步骤S103,具体如下:
S101,获取资质验证请求,所述资质验证请求包括所述第一密钥以及目标验证项信息,其中,第一密钥为资质申请端生成的。
在一些实施例中,可以是区块链从资质审核端获取资质验证请求。例如,用户通过资质申请端向资质审核端发送指示第一密钥的资质证明信息,资质审核端响应资质证明信息,调用区块链的智能合约对用户的资质进行验证。调用区块链的智能合约的方式,例如是资质审核端向区块链发送包括所述第一密钥以及目标验证项信息的资质验证请求。区块链响应资质验证请求,根据预设的智能合约对用户的资质执行验证操作。
其中,区块链在获取资质验证请求之前,还可以在资质发放端给资质申请端发放资质文件时,区块链从资质发放端获取用于对资质文件备份的第一资质信息,又可以在资质申请端给资质审核端发送资质验证请求之前,区块链从资质申请方获取用户提供的用于证明其资质的第二资质信息。
第一密钥是由资质申请端生成并发给资质审核端的,从而可以对审核方的合法性进行校验。例如第一密钥错误,表明审核方非法,区块链拒绝进行资质验证。
目标验证项信息例如是资质审核端期望要验证的资质项目。例如,游戏厂商作为资质审核端需要对用户是否年满18岁进行验证,则目标验证项信息可以为年龄项的数值是否大于或等于18。又例如,金融机构为资质审核端需要对用户是否具有硕士学历进行验证,则目标验证项信息可以为学历项的内容是否包含关键词“硕士”。
所述资质验证请求除了包含第一密钥以及目标验证项信息,还可以包含其他信息,例如包括资质申请端向资质审核端提供的第一资质信息的查询标识TXID1、第二资质信息的查询标识TXID2等,在此不做限定。
区块链在下面的步骤中,响应资质验证请求,结合预先存储的第一资质信息和第二资质信息,对用户的资质进行验证,验证过程是在区块链中通过执行依赖于区块链预设的智能合约的操作(以下简称为区块链合约操作)实现的,降低了申请方用户的信息被泄露的可能性。
S102,基于区块链合约,根据从资质发放端获取的第一资质信息,对所述第一密钥和从资质申请端获取的第二资质信息进行校验。
第一资质信息可以是预先从资质发放端获取的,并存储在区块链中的信息。第二资质信息可以是预先从资质申请端获取的,并存储在区块链中的信息。如果用从资质审核端获得的第一密钥能,能够将第二资质信息处理得到第一资质信息,那么表明第一密钥和第二资质信息都校验通过,两者都是正确信息,再以第二资质信息对用户的资质进行验证。
在一些实施例中,所述第二资质信息可以为加密信息。步骤S102(基于区块链合约,根据从资质发放端获取的第一资质信息,对所述第一密钥和从资质申请端获取的第二资质信息进行校验)可以是:先基于区块链合约,以所述第一密钥对从资质申请端获取的第二资质信息进行解密,得到资质明文信息;然后基于区块链合约,根据从资质发放端获取的第一资质信息,对所述资质明文信息进行校验。
假设第一密钥对第二资质信息解密失败,则表明第一密钥错误,可能被资质审核端篡改,则校验不通过,区块链可以拒绝继续执行资质验证步骤,在此基础上,还可以对资质审核端和/或资质审核端发送第一密钥错误的通知。假设第一密钥可以对第二资质信息进行解密,成功得到了资质明文信息,还需要基于区块链合约,对该资质明文信息进行校验,如果校验不通过,也表明解密失败,或者表明资质申请端上传区块链的第二资质信息有误,区块链也可以拒绝继续执行资质验证步骤,并在此基础上,还可以对资质审核端和/或资质审核端发送第一密钥错误的通知。
在一些实施例中,所述第一资质信息包括资质发放端生成的资质明文信息的第一哈希值。区块链基于区块链合约,根据从资质发放端获取的第一资质信息,对所述资质明文信息进行校验的过程,可以包括:首先区块链基于区块链合约,对所述资质明文信息哈希处理,得到第二哈希值;然后区块链基于区块链合约,判断所述第二哈希值与所述第一哈希值是否一致,若是,表明以第一密钥解密得到的信息为正确信息,则确定校验通过,若否,表明以第一密钥解密得到的信息为错误信息,则确定校验不通过。如果对资质明文信息的校验通过,表明对第一密钥和第二资质信息的校验都通过;反之,如果对资质明文信息的校验不通过,表明第一密钥和第二资质信息中的至少一个是存在问题的,区块链都不会继续执行下一步的验证。
在上述实施例的基础上,在一些实施例中,步骤S101(获取资质验证请求,所述资质验证请求包括所述第一密钥以及目标验证项信息,其中,所述第一密钥为资质申请端生成的)中获取的所述资质验证请求还可以包括:所述资质发放端的公钥。或者,区块链预存储有所述资质发放端的公钥。在步骤S101之前,还可以在包括:从资质发放端获取的第一资质信息和所述第一资质信息对应的签名数据。资质发放端在生成资质数据后,将资质数据发给资质申请端,将用于指示资质数据的第一资质信息发给区块链,同时,还给区块链发送了第一资质信息对应的签名数据。这个签名数据是资质发放端的签名数据,用于证明第一资质信息是自己生成的数据。在本实施例中,在所述基于区块链合约,判断所述第二哈希值与所述第一哈希值是否一致之前,还可以包括验签过程:区块链基于区块链合约,以所述资质发放端的公钥,对所述第一资质信息对应的签名数据进行验签处理,得到验签通过的指示结果。在比对之前先基于区块链合约,对区块链中预存储的第一资质信息进行验签,以保证第一资质信息的合法性。如果验签通过,表明第一资质信息是所述资质发放端生成的信息,区块链继续执行第二哈希值与第一哈希值的比对步骤。如果验签失败,表明第一资质信息可能不是所述资质发放端生成的信息,区块链无法保证预存储的第一资质信息是准确的,可以拒绝执行第二哈希值与第一哈希值的比对步骤。在验签失败的情况中,区块链可以向资质申请端、资质发放端、资质审核端中的至少一个发送验签失败通知。
S103,若确定所述校验通过,则基于区块链合约,根据所述目标验证项信息对所述第二资质信息进行验证。
如果确定步骤S102中对第一密钥和第二资质信息的校验结果指示校验通过,则至少表明资质审核端没有对第一密钥篡改,以及第二资质信息与资质发放端提供的信息一致,为准确的信息,那么区块链可以基于区块链合约,使用第二资质信息对用户的资质进行验证。在上述以第一密钥对第二资质信息解密得到资质明文信息的实施例的基础上,可以是:若确定所述校验通过,则基于区块链合约,根据所述目标验证项信息对所述资质明文信息进行验证。目标验证项信息指示了资质审核端期望对用户进行验证的项目,假如目标验证项信息指示为年龄项,则仅对第二资质信息中的年龄项进行验证。
可选地,区块链基于区块链合约,根据所述目标验证项信息对所述第二资质信息进行验证,得到验证结果,将验证结果发送至所述资质审核端。
本实施例提供了一种资质验证方法,通过获取资质验证请求,所述资质验证请求包括所述第一密钥以及目标验证项信息,其中,所述第一密钥为资质申请端生成的;基于区块链合约,根据从资质发放端获取的第一资质信息,对所述第一密钥和从资质申请端获取的第二资质信息进行校验;若确定所述校验通过,则基于区块链合约,根据所述目标验证项信息对所述第二资质信息进行验证,实现了在资质验证过程中对资质申请端、资质审核端提供信息的双向校验,并在验证后向资质审核端提供验证结果,降低了资质申请端信息泄露的风险。
在上述实施例中,在所述基于区块链合约,以所述第一密钥对从资质申请端获取的第二资质信息进行解密,得到资质明文信息之前,例如可以是在区块链接收到第一密钥时,还可以进行密钥合法性审核过程:
首先获取所述第一密钥的合法性审核信息;再基于区块链合约,根据所述合法性审核信息,确定所述第一密钥合法。
在一些实施例中,所述第一密钥指示了资质申请端预设的验证有效期。例如第一密钥为包含验证有效期、或者包含验证有效期的指示信息的报文数据,验证有效期指示了第一密钥的最晚有效时间。那么,所述获取所述第一密钥的合法性审核信息,可以包括:获取所述第一密钥指示的所述验证有效期。相应地,所述根据所述合法性审核信息,确定所述第一密钥合法,可以包括:获取从所述资质审核端接收到所述第一密钥的时间戳;若所述时间戳在所述验证有效期之前,则确定所述第一密钥合法。例如验证有效期为2018年11月10日24时,假如接收到第一密钥的时间戳为2018年11月23日24时,超过了验证有效期,表明该第一密钥已过期,为非法密钥,区块链拒绝继续执行验证。加入时间戳在所述验证有效期之前,表明第一密钥未过期,为合法密钥,则继续执行下一步方法步骤。通过对第一密钥的验证有效期进行审核,确保了使用密钥都是合法的,降低资质审核端长时间重复使用同一第一密钥验证用户的资质数据导致的信息泄露问题。
在上述各种实施例的基础上,在一些实施例中,所述第一密钥还指示了资质申请端预设的有效验证项信息。在所述根据所述目标验证项信息对所述第二资质信息进行验证之前,还可以进行目标验证项信息审核过程:
获取所述第一密钥指示的所述有效验证项信息;基于区块链合约,根据所述有效验证项信息,确定所述目标验证项信息合法。
例如第一密钥为还包含有效验证项信息、或者包含有效验证项信息的指示信息的报文数据。有效验证项信息可以是资质申请端允许资质审核端验证的数据项目。基于区块链合约,根据所述有效验证项信息,确定所述目标验证项信息合法的过程,可以是根据智能合约判断目标验证项信息是否有超出有效验证项信息的内容,若有,则判定目标验证项信息非法,若无,则判定目标验证项信息合法。例如,游戏厂商作为资质审核端需要对用户是否年满18岁进行验证,则有效验证项信息可以为年龄项,如果目标验证项信息包含有地址等信息,则可以确定目标验证项信息非法,拒绝继续执行验证,进而还可以向资质申请端发出警示信息。
可选地,目标验证项信息审核过程可以在所述确定所述第一密钥合法之后执行,从而以合法的第一密钥对目标验证项信息进行审核,提高审核的准确性。
在上述实施例的基础上,在区块链获取资质验证请求之前,还可以包括资质数据预存储过程。参见图3,是本发明实施例提供的一种资质数据发放过程的流程示意图。图3所示的过程包括步骤S201至S209,具体如下:
S201,资质发放端向资质申请端发送资质数据。
资质发放端还可以在发送资质数据的同时将签名数据发给资质申请端。
S202,资质发放端对资质数据进行哈希处理,生成第一资质信息,并对该第一资质信息生成签名数据。
S203,资质发放端向区块链发送第一资质信息及所述第一资质信息对应的签名数据。
S204,区块链向资质发放端反馈区块链存储信息。
区块链存储信息例如可以是用于获取完整第一资质信息的安全索引信息,或者是第一资质信息的查询标识TXID1和安全索引信息。区块链在响应安全索引信息的操作中,会反馈完整的第一资质信息。TXID1用于指示第一资质信息及所述第一资质信息对应的签名数据在区块链中的存储位置。但区块链仅接收到TXID1的情况下(没有接收到安全索引信息)不会反馈完整的第一资质信息。
S205,资质发放端向资质申请端发送所述区块链存储信息。
其中,所述区块链存储信息是所述区块链发送给所述资质发放端的反馈信息。资质申请端接收到区块链存储信息后,可以在区块链中查询相应的第一资质信息,与资质发放端发给自己的资质数据进行验证,已确定区块链上数据是否正确。
S206,资质申请端向所述区块链发送的包含所述区块链存储信息的资质查询请求。
S207,区块链响应所述资质查询请求,将所述区块链存储信息对应的所述第一资质信息以及所述第一资质信息对应的签名数据发送给所述资质申请端。
S208,资质申请端以所述资质发放端的公钥对所述第一资质信息对应的签名数据进行验签处理,得到验签通过的指示结果。
如果得到验签不通过的指示结果,表明区块链上存储的签名数据不是资质发放端的签名数据,资质申请端可以向用户发出签名非法的警示信息,进一步地,资质申请端还可以向资质发放端发送签名非法的通知信息。在得到验签通过的指示结果时,表明签名合法,则资质申请端继续下一步的验证。
S209,资质申请端根据所述资质数据,对所述第一资质信息进行信息验证,得到验证通过的指示结果。
第一资质信息例如是资质数据的哈希值,那么,资质申请端可以对自己存储的所述资质数据进行哈希处理,得到哈希值。然后用资质数据的哈希值于第一资质信息进行比对。如果比对一致,则表明区块链上存储的第一资质信息正确;如果比对不一致,则表明区块链上存储的第一资质信息错误,或者是自己存储的资质数据错误,则可以向资质发放端发出提示信息,要求资质发放端进行核实。
本实施例通过资质数据预存储过程中,资质发放端将第一资质信息存储入区块链,资质申请端对区块链中存储的第一资质信息进行信息验证,提高了区块链中第一资质信息的存储准确性和可靠性。
在上述各种实施例的基础上,下面对资质验证过程中资质申请端、资质审核端以及区块链之间的信号处理过程进行举例。参见图4,是本发明实施例提供的一种资质申请端、资质审核端以及区块链之间的资质验证方法流程示意图。图4所示的方法包括步骤S301至S310,具体如下:
S301,资质申请端以第一密钥对从资质发放端获取的资质数据加密,得到第二资质信息。
在一些实施例中,在步骤S301之前,还可以包括:根据当前时间戳确定验证有效期;根据所述验证有效期,生成第一密钥,所述第一密钥包括所述验证有效期。例如当前时间戳为2018年11月9日,资质验证时间预设为1天,那么可以确定所述验证有效期为2018年11月9日至2018年11月10日。
在所述根据所述验证有效期,生成第一密钥的过程中,还可以包括:获取有效验证项信息;根据所述验证有效期和所述有效验证项信息,生成第一密钥,所述第一密钥包括所述验证有效期和所述有效验证项信息。有效验证项信息可以是根据用户指示获得的,例如用户输入允许资质审核方可以验证的内容项目。有效验证项信息也可以是根据预设的对应关系获取的,例如对各类资质审核端预先设定对应的有效验证项信息。
S302,资质申请端向区块链发送所述第二资质信息。
资质申请端通过将第二资质信息发送至区块链,实现在资质验证过程中对第一密钥的校验。只有能解密第二资质信息的第一密钥才是合法的。
S303,区块链向资质申请端发送第二资质信息的查询标识。
第二资质信息的查询标识TXID2例如是对第二资质信息的存储位置的指示信息。第二资质信息的查询标识用于向资质申请端通知第二资质信息已存储。
S304,资质申请端以资质审核端的公钥对所述第一密钥加密,得到第二密钥。
以资质审核端的公钥对所述第一密钥加密,提高第一密钥在传输过程中的安全性,同时还实现了对资质审核端的验证。如果资质审核端不是资质申请端想要发送的,则无法成功解密得到第二密钥。
S305,资质申请端将包含所述第二密钥的资质证明信息发送至所述资质审核端。
其中,资质证明信息中还可以包含TXID2,以便资质审核端根据TXID2在区块链中查询资质证明信息对应的第二资质信息。资质证明信息中还可以包含TXID1,以便资质审核端根据TXID1在区块链中查询资质证明信息对应的第一资质信息。
S306,资质审核端以私钥对所述第二密钥解密,得到所述第一密钥。
S307,资质审核端向区块链发送资质验证请求,其中,所述资质验证请求包括所述第一密钥以及预设的目标验证项信息。
S308,区块链基于区块链合约,根据从资质发放端获取的第一资质信息,对所述第一密钥和从资质申请端获取的第二资质信息进行校验。
S309,区块链若确定所述校验通过,则基于区块链合约,根据所述目标验证项信息对所述第二资质信息进行验证。
S310,区块链将验证结果发送至所述资质审核端。
本实施例提供一种资质验证方法,以资质申请端、资质发放端、资质审核端以及区块链构建资质验证系统,将资质发放端对资质申请端生成的资质信息存储在区块链中,资质申请端通过向资质审核端提供密钥来限定其可验证的有效验证项信息,资质审核端根据资质申请端提供的密钥调用区块链进行资质验证,降低了信息泄露风险,提高了资质信息的安全性,进而提高了资质验证的可靠性。
参见图5,是本发明实施例提供的一种区块链侧的资质验证装置结构示意图。如图5所示的资质验证装置50可以是上述实施例中的区块链。所述资质验证装置,包括:
接收模块51,用于获取资质验证请求,所述资质验证请求包括所述第一密钥以及目标验证项信息;
处理模块52,用于基于区块链合约,根据从资质发放端获取的第一资质信息,对所述第一密钥和从资质申请端获取的第二资质信息进行校验;
验证模块53,用于若确定所述校验通过,则基于区块链合约,根据所述目标验证项信息对所述第二资质信息进行验证。
图5所示实施例的资质验证装置对应地可用于执行图2所示方法实施例中区块链执行的步骤,其实现原理和技术效果类似,此处不再赘述。
可选地,所述第二资质信息为加密信息。
所述处理模块52,用于:基于区块链合约,以所述第一密钥对从资质申请端获取的第二资质信息进行解密,得到资质明文信息;基于区块链合约,根据从资质发放端获取的第一资质信息,对所述资质明文信息进行校验。
可选地,所述第一资质信息包括资质发放端生成的资质明文信息的第一哈希值。
所述处理模块52,用于:基于区块链合约,对所述资质明文信息哈希处理,得到第二哈希值;基于区块链合约,判断所述第二哈希值与所述第一哈希值是否一致,若是,则确定校验通过,若否,则确定校验不通过。
可选地,所述资质验证请求还包括:所述资质发放端的公钥。
所述接收模块51,还用于:在所述获取资质验证请求之前,从资质发放端获取的第一资质信息和所述第一资质信息对应的签名数据。
所述处理模块52,还用于:在所述基于区块链合约,判断所述第二哈希值与所述第一哈希值是否一致之前,基于区块链合约,以所述资质发放端的公钥,对所述第一资质信息对应的签名数据进行验签处理,得到验签通过的指示结果。
可选地,所述处理模块52,还用于:在所述基于区块链合约,以所述第一密钥对从资质申请端获取的第二资质信息进行解密,得到资质明文信息之前,获取所述第一密钥的合法性审核信息;基于区块链合约,根据所述合法性审核信息,确定所述第一密钥合法。
可选地,所述第一密钥指示了资质申请端预设的验证有效期。
可选地,所述处理模块52,还用于:获取所述第一密钥指示的所述验证有效期;获取从所述资质审核端接收到所述第一密钥的时间戳;若所述时间戳在所述验证有效期之前,则基于区块链合约,确定所述第一密钥合法。
可选地,所述第一密钥指示了资质申请端预设的有效验证项信息。
可选地,所述处理模块52,还用于:在所述基于区块链合约,根据所述目标验证项信息对所述第二资质信息进行验证之前,获取所述第一密钥指示的所述有效验证项信息;基于区块链合约,根据所述有效验证项信息,确定所述目标验证项信息合法。
可选地,验证模块53,用于:若确定所述校验通过,则基于区块链合约,根据所述目标验证项信息对所述资质明文信息进行验证。
可选地,所述处理模块52,还用于:在所述获取资质验证请求之前,在从所述资质发放端获取到所述第一资质信息及所述第一资质信息对应的签名数据时,向所述资质发放端反馈区块链存储信息,以使得所述资质发放端将所述区块链存储信息发送给所述资质申请端;接收资质申请端发送的包含所述区块链存储信息的资质查询请求;响应所述资质查询请求,将所述区块链存储信息对应的所述第一资质信息以及所述第一资质信息对应的签名数据发送给所述资质申请端,以使得所述资质申请端进行信息验证。
参见图6,是本发明实施例提供的一种资质申请端侧的资质验证装置结构示意图。图6所示的资质验证装置60,包括:
第一处理模块61,用于以第一密钥对从资质发放端获取的资质数据加密,得到第二资质信息,并将所述第二资质信息发送至区块链;
第二处理模块62,用于以资质审核端的公钥对所述第一密钥加密,得到第二密钥,并将包含所述第二密钥的资质证明信息发送至所述资质审核端,以使得所述资质审核端以私钥对所述第二密钥解密,得到所述第一密钥。
可选地,第一处理模块61,还用于:在所述以第一密钥对从资质发放端获取的资质数据加密之前,根据当前时间戳确定验证有效期;根据所述验证有效期,生成第一密钥,所述第一密钥包括所述验证有效期。
可选地,第一处理模块61,还用于:获取有效验证项信息;根据所述验证有效期和所述有效验证项信息,生成第一密钥,所述第一密钥包括所述验证有效期和所述有效验证项信息。
可选地,第一处理模块61,还用于:在所述以第一密钥对从资质发放端获取的资质数据加密,得到第二资质信息,并将所述第二资质信息发送至区块链之前,从资质发放端接收所述资质数据;在从所述资质发放端接收到区块链存储信息时,向所述区块链发送包含所述区块链存储信息的资质查询请求,其中,所述区块链存储信息是所述区块链发送给所述资质发放端的反馈信息;从所述区块链获取第一资质信息以及所述第一资质信息对应的签名数据,其中,所述第一资质信息以及所述第一资质信息对应的签名数据是所述资质发放端发送给所述区块链的信息;以所述资质发放端的公钥对所述第一资质信息对应的签名数据进行验签处理,得到验签通过的指示结果;根据所述资质数据,对所述第一资质信息进行信息验证,得到验证通过的指示结果。
图6所示实施例的资质验证装置对应地可用于执行图3和图4所示方法实施例中资质申请端执行的步骤,其实现原理和技术效果类似,此处不再赘述。
参见图7,是本发明实施例提供的一种资质审核端侧的资质验证装置结构示意图。图7所示的资质验证装置70,包括:
接收模块71,用于从资质申请端获取包含第二密钥的资质证明信息,并以私钥对所述第二密钥解密,得到所述第一密钥;
审核模块72,用于向区块链发送资质验证请求,并获取所述区块链响应资质验证请求获得的验证结果,其中,所述资质验证请求包括所述第一密钥以及预设的目标验证项信息。
图7所示实施例的资质验证装置对应地可用于执行图3和图4所示方法实施例中资质审核端执行的步骤,其实现原理和技术效果类似,此处不再赘述。
参见图1,本发明提供一种资质验证系统,包括:
区块链100,用于执行上述各种实施例中区块链执行的资质验证方法;
资质申请端200,用于执行上述各种实施例中资质申请端执行的资质验证方法;
资质审核端300,用于执行上述各种实施例中资质审核端执行的资质验证方法;
以及,资质发放端400,用于执行上述各种实施例中资发放端执行的资质验证方法。
参见图8,是本发明实施例提供的一种电子设备的硬件结构示意图,该电子设备80包括:处理器81、存储器82和计算机程序;其中
存储器82,用于存储所述计算机程序,该存储器还可以是闪存(flash)。所述计算机程序例如是实现上述方法的应用程序、功能模块等。
处理器81,用于执行所述存储器存储的计算机程序,以实现上述方法中电子设备执行的各个步骤。具体可以参见前面方法实施例中的相关描述。
可选地,存储器82既可以是独立的,也可以跟处理器81集成在一起。
当所述存储器82是独立于处理器81之外的器件时,所述电子设备还可以包括:
总线83,用于连接所述存储器82和处理器81。
本发明还提供一种可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用于实现上述的各种实施方式提供的方法。
其中,可读存储介质可以是计算机存储介质,也可以是通信介质。通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。计算机存储介质可以是通用或专用计算机能够存取的任何可用介质。例如,可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(ApplicationSpecific Integrated Circuits,简称:ASIC)中。另外,该ASIC可以位于用户设备中。当然,处理器和可读存储介质也可以作为分立组件存在于通信设备中。可读存储介质可以是只读存储器(ROM)、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本发明还提供一种程序产品,该程序产品包括执行指令,该执行指令存储在可读存储介质中。设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得设备实施上述的各种实施方式提供的方法。
在上述电子设备的实施例中,应理解,处理器可以是中央处理单元(英文:CentralProcessing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:DigitalSignal Processor,简称:DSP)、专用集成电路(英文:Application Specific IntegratedCircuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。