一种变色龙哈希分布式身份使用方法和系统与流程

文档序号:31047985发布日期:2022-08-06 05:56阅读:213来源:国知局

1.本发明涉及计算机技术领域,具体涉及一种变色龙哈希分布式身份使用方法和系统。


背景技术:

2.现有did(分布式身份)使用时,可验证凭证结构中的merkle树相关内容使得可验证凭证的数据结构显得较为复杂,因为merkle树中每个数据都和前后的其他数据有关联,如果可验证凭证进行选择性披露,必须同时提供非披露数据的哈希值以便验证方正确计算merkle树的树根并用于数字签名的验证,因此该方法验证数字签名时还需要额外计算merkle树的信息;在根据可验证凭证出示可验证表述时,由于merkle树相关内容严格控制了声明内容的顺序,现有可验证凭证结构无法实现对声明内容进行任意排列组合的功能,无法满足一些需要对可验证凭证更换声明顺序的场景的隐私保护需求,例如每个可验证凭证的验证者对声明的关注度是不同的,最优做法应该是每次验证前将声明按照对方的关注程度进行排序后再将排序后的声明发给对方,以便对方验证并比对声明信息,而目前的merkle树结构无法满足此功能。
3.另一方面,现有did使用时,可验证凭证结构中的merkle树相关内容使得可验证凭证的数据结构发生任何改变后均需要重新计算可验证凭证的数字签名及merkle树相关的内容,增大了可验证凭证颁发方的负荷。


技术实现要素:

4.本发明针对现有技术中的缺点,提供了一种变色龙哈希分布式身份使用方法和系统,具有降低可验证凭证颁发方工作量的优点,突破了现有可验证凭证结构无法实现对声明内容进行任意排列组合的功能的瓶颈。
5.为了解决上述技术问题,本发明通过下述技术方案得以解决:一种变色龙哈希分布式身份使用方法,包括以下步骤:使用变色龙哈希算法对分布式身份生成可验证凭证,并对所述可验证凭证进行可靠性验证;根据所述可验证凭证生成可验证表述,并验证所述可验证表述的可靠性;根据分布式身份持有者所提出的声明需求,重新生成可验证凭证,得到更改版可验证凭证,并验证所述更改版可验证凭证的可靠性。
6.可选地,使用变色龙哈希算法对分布式身份生成可验证凭证,包括以下步骤:获取分布式身份持有者所提供的若干个声明;计算分布式身份的普通哈希值和变色龙随机数,并根据所述普通哈希值和变色龙随机数计算第一变色龙哈希值;根据各个所述声明,计算各个所述声明对应的变色龙随机数;使用可验证凭证颁发者私钥对所述第一变色龙哈希值进行签名得到第一签名。
7.可选地,对所述可验证凭证进行可靠性验证,包括以下步骤:验证所述第一签名的有效性;根据各个所述声明,计算各个所述声明对应的第二变色龙哈希值;判断所述第二变色龙哈希值是否与第一变色龙哈希值相等,且所述第一签名有效,若是,则所述可验证凭证可靠,反之,则所述可验证凭证不可靠。
8.可选地,根据所述可验证凭证生成可验证表述,包括以下步骤:获取可验证表述的非签名数据,其中,所述非签名数据包括可验证表述元数据和一个或多个的可验证凭证;使用分布式身份持有者私钥对所述非签名数据进行签名得到第二签名。
9.可选地,验证所述可验证表述的可靠性,包括以下步骤:验证所述第一签名和第二签名的有效性;根据各个所述声明,计算各个所述声明对应的第二变色龙哈希值;判断所述第二变色龙哈希值是否与第一变色龙哈希值相等,且所述第一签名与第二签名均有效,若是,则所述可验证表述可靠,反之,则所述可验证表述不可靠。
10.可选地,所述声明需求包括增加声明、删减声明、声明内容修改或声明顺序修改中的任意一种。
11.一种变色龙哈希分布式身份使用系统,包括第一生成检验单元、第二生成检验单元和更新检验单元;所述第一生成检验单元用于使用变色龙哈希算法对分布式身份生成可验证凭证,并对所述可验证凭证进行可靠性验证;所述第二生成检验单元用于根据所述可验证凭证生成可验证表述,并验证所述可验证表述的可靠性;所述更新检验单元用于根据分布式身份持有者所提出的声明需求,重新生成可验证凭证,得到更改版可验证凭证,并验证所述更改版可验证凭证的可靠性。
12.可选地,所述第一生成检验单元包括第一生成单元,且所述第一生成单元包括获取单元、第一计算单元和第一签名单元;所述获取单元用于获取分布式身份持有者所提供的若干个声明;所述第一计算单元用于计算分布式身份的普通哈希值和变色龙随机数,并根据所述普通哈希值和变色龙随机数计算第一变色龙哈希值,并根据各个所述声明计算各个所述声明对应的变色龙随机数;所述第一签名单元用于使用可验证凭证颁发者私钥对所述第一变色龙哈希值进行签名得到第一签名。
13.可选地,所述第一生成检验单元还包括第一验证单元,且所述第一验证单元包括第一检验单元、第二计算单元和第一判定单元;所述第一检验单元用于验证所述第一签名的有效性;所述第二计算单元用于根据各个所述声明,计算各个所述声明对应的第二变色龙哈希值;所述第一判定单元用于判断所述第二变色龙哈希值是否与第一变色龙哈希值相等,且所述第一签名有效,若是,则所述可验证凭证可靠,反之,则所述可验证凭证不可靠。
14.可选地,所述第二生成检验单元包括第二生成单元,且所述第二生成单元包括数据获取单元和第三签名单元;所述数据获取单元用于获取可验证表述的非签名数据,其中,所述非签名数据包括可验证表述元数据和一个或多个的可验证凭证;所述第二签名单元用于使用分布式身份持有者私钥对所述非签名数据进行签名得到第二签名。
15.可选地,所述第二生成检验单元还包括第二验证单元,且所述第二验证单元包括第二检验单元、第三计算单元和第二判定单元;所述第二检验单元用于验证所述第一签名和第二签名的有效性;所述第三计算单元用于根据各个所述声明,计算各个所述声明对应的第二变色龙哈希值;所述第二判定单元用于判断所述第二变色龙哈希值是否与第一变色龙哈希值相等,且所述第一签名与第二签名均有效,若是,则所述可验证表述可靠,反之,则所述可验证表述不可靠。
16.采用本发明提供的技术方案,与现有技术相比,具有如下有益效果:1、本发明中的did使用时,改进后的可验证凭证结构去掉了merkle树相关的部分,增加了变色龙随机数,可验证凭证的数据结构变得简单,并且可以保证所有内容不可篡改;在根据可验证凭证出示可验证表述时,由于没有merkle树相关内容对声明内容顺序的严格控制,改进后的可验证凭证结构可以对声明内容进行任意取舍和任意排列组合,且仍能验证通过,满足did持有者对隐私保护的需求的同时满足更多应用场景下对声明重新排序的需求;2、本发明中的did使用时,因新增、删除、修改、交换声明条目而需要可验证凭证颁发方重新生成可验证凭证时,改进后的可验证凭证结构使得可验证凭证颁发方无需重新计算可验证凭证的数字签名及merkle树相关的内容,减轻了可验证凭证颁发方的负荷。
附图说明
17.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
18.图1为本实施例一提出的角色之间的关系图。
具体实施方式
19.下面结合实施例对本发明做进一步的详细说明,以下实施例是对本发明的解释而本发明并不局限于以下实施例。
20.实施例中的专有名词解释说明:did是一种特定格式的字符串,用来代表一个实体的数字身份。did的标识格式为:did:example:123456789abcdefghijk,其中,前缀did是固定的,表示这个字符串是一个did标识字符串;中间的example被称为did方法,就是用来表示这个did标识是用哪一套方案
(方法)来进行定义和操作的,did方法可以自定义;最后的长字符串部分是在该did方法下的唯一标识字符串。
21.did文档是一种对did身份进行存证的文档,一般是对did相关信息进行关联,尤其是建立did与其公钥的关联,然后把did标识作为key,把did文档作为value存储到区块链中,利用区块链不可篡改、共享数据的特点,使得did验证者能快速访问获取did持有者的公钥。
22.vc是verifiable claims 或 verifiable credentials的简称,可译为可验证声明或可验证凭证,是一个 did 给另一个 did 的某些属性做背书而发出的描述性声明,并附加自己的数字签名,用以证明这些属性的真实性,是一种对应于did应用场景的数字证书。
23.vp是verifiable presentation的简称,可译为可验证表述,是vc持有者向验证者表明自己身份的数据。一般情况下,可以直接出示vc全文,但是在某些情况下,出于隐私保护的需要,我们并不需要出示完整的vc内容,只希望选择性披露某些属性,此时可以在vp中对披露的vc属性以明文示出,对不披露的vc属性以哈希值示出,vp的接收方可以根据明文及哈希值的vc属性计算merkle树的根后进行数字签名的验证并得到通过。
24.本技术如有对did、did文档、vc、vp及相关概念及结构的描述不够详尽之处,可参考业界的did标准或实际实现方式。例如,2019年w3c(world wide web consortium)发布did的首个公开工作草案:“decentralized identifiers (dids) v1.0”。
25.实施例一如图1所示,一种变色龙哈希分布式身份使用方法,包括以下步骤:使用变色龙哈希算法对分布式身份生成可验证凭证,并对可验证凭证进行可靠性验证;具体地,使用变色龙哈希算法对分布式身份生成可验证凭证,包括以下步骤:获取分布式身份持有者所提供的若干个声明;计算分布式身份的普通哈希值和变色龙随机数,并根据普通哈希值和变色龙随机数计算第一变色龙哈希值;使用可验证凭证颁发者私钥对第一变色龙哈希值进行签名得到第一签名。
26.更进一步地,分布式身份持有者向可验证凭证生成者提交若干个声明,在本实施例中可将若干个声明记为claim1~claimn,而一个声明为一个信息条目,例如“姓名:xx”、“年龄:xx”、“住址:xx省xx市xx区xx路xx号”等均可以包含在声明中的信息条目中,可验证凭证声明的具体内容以及对应的证明可以记为{ claim1, r1;claim2, r2;
……
;claimi, ri ;
……
;claimn, rn },设定1≤i≤n,则ri的计算方式具体如下:首先将分布式身份作为变色龙消息,计算普通哈希值md=h(did),选择变色龙随机数为rd=h(metadata),其中metadata为可验证凭证的元数据,包含固定不变的信息,如did、发行目的、发行时间、有效期等。对md、rd进行变色龙哈希生成第一变色龙哈希值chd=ch(md,rd,pks),并使用可验证凭证颁发者私钥sks对第一变色龙哈希值chd进行签名得到第一签名sigd1,其中可验证凭证颁发者的公钥标记为pks,变色龙哈希使用的公钥为pks,使得私钥作为变色龙哈希的陷门密钥,然后计算新的变色龙消息claimi的普通哈希mci=h(claimi),可验证凭证颁发者利用sks、md、rd、mci求解变色龙随机数,得到mci对应的变色龙随机数为ri。根据变色龙哈希的特性,可验证凭证颁发者以外的任何成员均无法计算得到ri。
27.由此可见,可验证凭证结构中原有的merkle树相关内容使得可验证凭证的数据结构显得较为复杂,改进后的可验证凭证结构去掉了merkle树相关的部分,增加了变色龙随机数,可验证凭证的数据结构也变得更为简单。
28.可验证凭证生成后,由可验证凭证颁发者发送给分布式身份持有者,并对可验证凭证进行可靠性验证,具体包括以下步骤:验证第一签名的有效性;根据各个声明,计算各个声明对应的第二变色龙哈希值;判断第二变色龙哈希值是否与第一变色龙哈希值相等,且第一签名有效,若是,则可验证凭证可靠,反之,则可验证凭证不可靠。
29.进一步地,首先使用可验证凭证颁发者的公钥对第一签名进行验证,如若通过则表示可验证凭证颁发者对第一变色龙哈希值的签名有效,且分布式身份、元数据(metadata)均未被篡改,因为如果两者被篡改,将导致md或变色龙随机数rd发生变化,md或变色龙随机数rd的变化又将导致第一变色龙哈希值chd的变化,第一变色龙哈希值chd的变化将最终导致第一签名无法验证通过,即第一签名无效;反之,则可以得知分布式身份、metadata均未被篡改。
30.另一方面,还需要验证各个声明的变色龙哈希值,即第二变色龙哈希值ch(mci,ri,pks),具体地,验证ch(mci,ri,pks)是否等于chd,如相等,则说明mci均未被可验证凭证颁发者以外的成员修改,而可验证凭证颁发者被信任为不会随意对mci进行修改,因此分布式身份持有者信任mci,因为,如果mci被可验证凭证颁发者以外的成员篡改,由于可验证凭证颁发者以外的成员无法得到对应的ri,将导致第二变色龙哈希值ch(mci,ri,pks)发生变化,第二变色龙哈希值ch(mci,ri,pks)的变化将导致其无法等于第一变色龙哈希值chd;反之,可以得知mci未被可验证凭证颁发者以外的成员篡改。可验证凭证颁发者被信任为不会随意对mci进行修改的理由在于,可验证凭证颁发者一般为权威性机构,安全保障措施完备,其私钥一般得到更完善的保护,例如由多个管理员共同控制;另外,可验证凭证颁发者还存在更完善的审计机制。
31.待第一签名以及各个声明的变色龙哈希值全部验证步骤通过后,则分布式身份持有者信任整个可验证凭证,该可验证凭证可靠,同时,改进后的可验证凭证结构可以保证所有内容不可篡改。
32.验证完成可验证凭证后,分布式身份持有者可根据可验证凭证生成可验证表述,并验证可验证表述的可靠性;具体地,根据可验证凭证生成可验证表述,包括以下步骤:获取可验证表述的非签名数据,其中,非签名数据包括可验证表述元数据和一个或多个的可验证凭证;使用分布式身份持有者私钥对非签名数据进行签名得到第二签名。
33.对于分布式身份持有者而言,为保证身份信息的安全性,通常需要将一部分敏感信息进行隐藏,此时分布式持有者需要生成可验证表述,在本实施例中设定验证凭证声明的具体内容以及对应的证明可以记为{ claim1, r1;claim2, r2;
……
;claimi, ri },claimi以后的声明为敏感信息,此时需要使用分布式身份持有者私钥对非签名数据进行签名得到第二签名,从而使得根据可验证凭证出示可验证表述时,实现了敏感信息的隐藏,即,改进后的可验证凭证可以对声明内容进行任意取舍和任意排列组合,满足分布式身份持有者对隐私保护的需求。
34.同时,可验证表述也需要验证其可靠性,具体包括以下步骤:验证第一签名和第二签名的有效性;根据各个声明,计算各个声明对应的第二变色龙哈希值;判断第二变色龙哈
希值是否与第一变色龙哈希值相等,且第一签名与第二签名均有效,若是,则可验证表述可靠,反之,则可验证表述不可靠,需要说明的是,验证第二签名的有效性与验证第一签名的有效性的方法相同,在此不做重复赘述,除此之外,由于是对每条声明进行验证,因此即使分布式身份对可验证表述中的声明顺序进行任意排列组合,均能通过验证。
35.另一方面,在验证第二签名是否有效时,使用分布式身份持有者的公钥对第二签名进行验证,通过后表明分布式身份持有者对可验证表述的签名有效,且可验证表述各部分均未被篡改,因此分布式身份验证者可信任该可验证表述,并且上述全部验证通过后,分布式身份验证者信任整个可验证表述,并由此可知,在根据可验证凭证出示可验证表述时,改进后的可验证凭证结构对声明内容进行任意排列组合后仍能验证通过。
36.进一步地,分布式身份持有者在向可验证凭证颁发者提供声明时,会存在与上一次所提供的声明数量增加、数量减少、声明内容修改或声明顺序修改中的一种或多种情况,此时需根据分布式身份持有者所提出的声明需求,重新生成可验证凭证,得到更改版可验证凭证,并验证更改版可验证凭证的可靠性,其中,声明需求包括增加声明、删减声明、声明内容修改或声明顺序修改中的任意一种。
37.此时若声明需求为增加声明,则分布式身份持有者生成改进的可验证凭证,具体如下:{metadata
ꢀꢀ
// vc声明的具体内容
ꢀꢀ
claim1, r1
ꢀꢀ
claim2,r2
ꢀꢀ……ꢀꢀ
claimi, ri
ꢀꢀ
claim(i+1), r(i+1)
……ꢀꢀ
claimn, rn
ꢀꢀ
// 对本vc的数字签名
ꢀꢀ
proof};其中,根据claim(i+1)求得r(i+1)的方法与上述步骤相同,该可验证凭证在验证时的方法也与前述的可验证凭证方法相同,并且,现有技术中,由于可验证凭证结构中原有的merkle树相关内容,会使可验证凭证的数据结构发生任何改变后均需要重新计算可验证凭证的数字签名及merkle树相关的内容,增加了可验证凭证颁发者的负荷;而本实施例则可因新增声明条目而需要可验证凭证颁发者重新生成可验证凭证,改进后的可验证凭证结构仅需要可验证凭证颁发者计算该条目对应的变色龙随机数,无需重新计算可验证凭证的数字签名及merkle树相关的内容,减轻了可验证凭证颁发者的工作量。
38.若声明需求为删减声明,则分布式身份持有者生成改进的可验证凭证,具体如下:{metadata
ꢀꢀ
// vc声明的具体内容
ꢀꢀ
claim1, r1
ꢀꢀ
claim2,r2
ꢀꢀ……ꢀꢀ
claim(i-1),r(i-1)
ꢀꢀ
claim(i+1), r(i+1)
……ꢀꢀ
claimn, rn
ꢀꢀ
// 对本vc的数字签名
ꢀꢀ
proof};该可验证凭证在验证时的方法也与前述的可验证凭证方法相同,并且由本步骤可见:可验证凭证结构中原有的merkle树相关内容使得可验证凭证的数据结构发生任何改变后均需要重新计算可验证凭证的数字签名及merkle树相关的内容;因删除声明条目而需要分布式身份重新生成可验证凭证时,改进后的可验证凭证结构仅需要分布式身份直接删除该条目,无需重新计算可验证凭证的数字签名及merkle树相关的内容,减轻了分布式身份的负荷。
39.若声明需求为声明内容修改,即分布式身份持有者向分布式身份颁布者提出在可验证凭证中修改一个已有的声明:将claimi改为claimi’,则分布式身份持有者生成改进的可验证凭证,具体如下:{metadata
ꢀꢀ
// vc声明的具体内容
ꢀꢀ
claim1, r1
ꢀꢀ
claim2,r2
ꢀꢀ……ꢀꢀ
claimi’, ri
’……ꢀꢀ
claimn, rn
ꢀꢀ
// 对本vc的数字签名
ꢀꢀ
proof};其中,根据claimi’求得ri’的方法与上述步骤相同,该可验证凭证在验证时的方法也与前述的可验证凭证方法相同,并且由本步骤可见:可验证凭证结构中原有的merkle树相关内容使得可验证凭证的数据结构发生任何改变后均需要重新计算可验证凭证的数字签名及merkle树相关的内容;因修改声明条目而需要分布式身份重新生成可验证凭证时,改进后的可验证凭证结构仅需要分布式身份计算该条目对应的变色龙随机数,无需重新计算可验证凭证的数字签名及merkle树相关的内容,减轻了分布式身份的负荷。
40.若声明需求为声明顺序修改,即分布式身份持有者向分布式身份颁布者提出在可验证凭证中交换两个已有的声明的顺序:将claimi与claim(i+1),则分布式身份持有者生成改进的可验证凭证,具体如下:{metadata
ꢀꢀ
// vc声明的具体内容
ꢀꢀ
claim1, r1
ꢀꢀ
claim2, r2
ꢀꢀ……ꢀꢀ
claim(i+1), r(i+1)
ꢀꢀ
claimi,ri
……ꢀꢀ
claimn, rn
ꢀꢀ
// 对本vc的数字签名
ꢀꢀ
proof};该可验证凭证在验证时的方法也与前述的可验证凭证方法相同,并且由本步骤可见:可验证凭证结构中原有的merkle树相关内容使得可验证凭证的数据结构发生任何改变后均需要重新计算可验证凭证的数字签名及merkle树相关的内容;因交换声明条目的顺序而需要分布式身份重新生成可验证凭证时,改进后的可验证凭证结构仅需要分布式身份直接交换指定条目,无需重新计算可验证凭证的数字签名及merkle树相关的内容,减轻了分布式身份的负荷。
41.实施例二一种变色龙哈希分布式身份使用系统,包括第一生成检验单元、第二生成检验单元和更新检验单元;第一生成检验单元用于使用变色龙哈希算法对分布式身份生成可验证凭证,并对可验证凭证进行可靠性验证;其中,第一生成检验单元包括第一生成单元,且第一生成单元包括获取单元、第一计算单元和第一签名单元;获取单元用于获取分布式身份持有者所提供的若干个声明;第一计算单元用于计算分布式身份的普通哈希值和变色龙随机数,并根据普通哈希值和变色龙随机数计算第一变色龙哈希值,并根据各个所述声明计算各个所述声明对应的变色龙随机数;第一签名单元用于使用可验证凭证颁发者私钥对第一变色龙哈希值进行签名得到第一签名。
42.更进一步地,分布式身份持有者向可验证凭证生成者提交若干个声明,在本实施例中可将若干个声明记为claim1~claimn,而一个声明为一个信息条目,例如“姓名:xx”、“年龄:xx”、“住址:xx省xx市xx区xx路xx号”等均可以包含在声明中的信息条目中,可验证凭证声明的具体内容以及对应的证明可以记为{ claim1, r1;claim2, r2;
……
;claimi, ri ;
……
;claimn, rn },设定1≤i≤n,则ri的计算方式具体如下:首先将分布式身份作为变色龙消息,计算普通哈希值md=h(did),选择变色龙随机数为rd=h(metadata),进行变色龙哈希为第一变色龙哈希值chd=ch(md,rd,pks),并使用可验证凭证颁发者私钥sks对第一变色龙哈希值chd进行签名得到第一签名sigd1,其中可验证凭证颁发者的公钥标记为pks,变色龙哈希使用的公钥为pks,使得私钥作为变色龙哈希的陷门密钥,然后计算新的变色龙消息claimi的普通哈希mci=h(claimi),可验证凭证颁发者利用sks、md、rd、mci求解变色龙随机数,得到mci对应的变色龙随机数为ri。根据变色龙哈希的特性,可验证凭证颁发者以外的任何成员均无法计算得到ri。
43.由此可见,可验证凭证结构中原有的merkle树相关内容使得可验证凭证的数据结构显得较为复杂,改进后的可验证凭证结构去掉了merkle树相关的部分,增加了变色龙随机数,可验证凭证的数据结构也变得更为简单。
44.可验证凭证生成后,由可验证凭证颁发者发送给分布式身份持有者,并对可验证凭证进行可靠性验证,因此第一生成检验单元还包括第一验证单元,且第一验证单元包括
第一检验单元、第二计算单元和第一判定单元;第一检验单元用于验证第一签名的有效性;第二计算单元用于根据各个声明,计算各个声明对应的第二变色龙哈希值;第一判定单元用于判断第二变色龙哈希值是否与第一变色龙哈希值相等,且第一签名有效,若是,则可验证凭证可靠,反之,则可验证凭证不可靠。
45.进一步地,首先使用可验证凭证颁发者的公钥对第一签名进行验证,如若通过则表示可验证凭证颁发者对第一变色龙哈希值的签名有效,且分布式身份、元数据(metadata)均未被篡改,因为如果两者被篡改,将导致md或变色龙随机数rd发生变化,md或变色龙随机数rd的变化又将导致第一变色龙哈希值chd的变化,第一变色龙哈希值chd的变化将最终导致第一签名无法验证通过,即第一签名无效;反之,则可以得知分布式身份、metadata均未被篡改。
46.另一方面,还需要验证各个声明的变色龙哈希值,即第二变色龙哈希值ch(mci,ri,pks),具体地,验证ch(mci,ri,pks)是否等于chd,如相等,则说明mci均未被可验证凭证颁发者以外的成员修改,而可验证凭证颁发者被信任为不会随意对mci进行修改,因此分布式身份持有者信任mci,因为,如果mci被可验证凭证颁发者以外的成员篡改,由于可验证凭证颁发者以外的成员无法得到对应的ri,将导致第二变色龙哈希值ch(mci,ri,pks)发生变化,第二变色龙哈希值ch(mci,ri,pks)的变化将导致其无法等于第一变色龙哈希值chd;反之,可以得知mci未被可验证凭证颁发者以外的成员篡改。
47.待第一签名以及各个声明的变色龙哈希值全部验证步骤通过后,则分布式身份持有者信任整个可验证凭证,该可验证凭证可靠,同时,改进后的可验证凭证结构可以保证所有内容不可篡改。
48.验证完成可验证凭证后,第二生成检验单元根据可验证凭证生成可验证表述,并验证可验证表述的可靠性;其中,第二生成检验单元包括第二生成单元,且第二生成单元包括数据获取单元和第三签名单元;数据获取单元用于获取可验证表述的非签名数据,其中非签名数据包括可验证表述元数据和一个或多个的可验证凭证;第二签名单元用于使用分布式身份持有者私钥对非签名数据进行签名得到第二签名。
49.对于分布式身份持有者而言,为保证身份信息的安全性,通常需要将一部分敏感信息进行隐藏,此时分布式持有者需要生成可验证表述,在本实施例中设定验证凭证声明的具体内容以及对应的证明可以记为{ claim1, r1;claim2, r2;
……
;claimi, ri },claimi以后的声明为敏感信息,此时需要使用分布式身份持有者私钥对非签名数据进行签名得到第二签名,从而使得根据可验证凭证出示可验证表述时,实现了敏感信息的隐藏,即,改进后的可验证凭证可以对声明内容进行任意取舍和任意排列组合,满足分布式身份持有者对隐私保护的需求。
50.同时,可验证表述也需要验证其可靠性,因此第二生成检验单元还包括第二验证单元,且第二验证单元包括第二检验单元、第三计算单元和第二判定单元;第二检验单元用于验证第一签名和第二签名的有效性;第三计算单元用于根据各个声明,计算各个声明对应的第二变色龙哈希值;第二判定单元用于判断第二变色龙哈希值是否与第一变色龙哈希值相等,且第一签名与第二签名均有效,若是,则可验证表述可靠,反之,则可验证表述不可靠,需要说明的是,验证第二签名的有效性与验证第一签名的有效性的方法相同,在此不做重复赘述,除此之外,由于是对每条声明进行验证,因此即使分布式身份对可验证表述中的
声明顺序进行任意排列组合,均能通过验证。
51.另一方面,在验证第二签名是否有效时,使用分布式身份持有者的公钥对第二签名进行验证,通过后表明分布式身份持有者对可验证表述的签名有效,且可验证表述各部分均未被篡改,因此分布式身份验证者可信任该可验证表述,并且上述全部验证通过后,分布式身份验证者信任整个可验证表述,并由此可知,在根据可验证凭证出示可验证表述时,改进后的可验证凭证结构对声明内容进行任意排列组合后仍能验证通过。
52.进一步地,分布式身份持有者在向可验证凭证颁发者提供声明时,会存在与上一次所提供的声明数量增加、数量减少、声明内容修改或声明顺序修改中的一种或多种情况,此时需更新检验单元根据分布式身份持有者所提出的声明需求,重新生成可验证凭证,得到更改版可验证凭证,并验证更改版可验证凭证的可靠性,其中,声明需求包括增加声明、删减声明、声明内容修改或声明顺序修改中的任意一种。
53.此时若声明需求为增加声明,则分布式身份持有者生成改进的可验证凭证,具体如下:{metadata
ꢀꢀ
// vc声明的具体内容
ꢀꢀ
claim1, r1
ꢀꢀ
claim2,r2
ꢀꢀ……ꢀꢀ
claimi, ri
ꢀꢀ
claim(i+1), r(i+1)
……ꢀꢀ
claimn, rn
ꢀꢀ
// 对本vc的数字签名
ꢀꢀ
proof};其中,根据claim(i+1)求得r(i+1)的方法与上述步骤相同,该可验证凭证在验证时的方法也与前述的可验证凭证方法相同,并且,现有技术中,由于可验证凭证结构中原有的merkle树相关内容,会使可验证凭证的数据结构发生任何改变后均需要重新计算可验证凭证的数字签名及merkle树相关的内容,增加了可验证凭证颁发者的负荷;而本实施例则可因新增声明条目而需要可验证凭证颁发者重新生成可验证凭证,改进后的可验证凭证结构仅需要可验证凭证颁发者计算该条目对应的变色龙随机数,无需重新计算可验证凭证的数字签名及merkle树相关的内容,减轻了可验证凭证颁发者的工作量。
54.若声明需求为删减声明,则分布式身份持有者生成改进的可验证凭证,具体如下:{metadata
ꢀꢀ
// vc声明的具体内容
ꢀꢀ
claim1, r1
ꢀꢀ
claim2,r2
ꢀꢀ……ꢀꢀ
claim(i-1),r(i-1)
ꢀꢀ
claim(i+1), r(i+1)
……ꢀꢀ
claimn, rn
ꢀꢀ
// 对本vc的数字签名
ꢀꢀ
proof};该可验证凭证在验证时的方法也与前述的可验证凭证方法相同,并且由本步骤可见:可验证凭证结构中原有的merkle树相关内容使得可验证凭证的数据结构发生任何改变后均需要重新计算可验证凭证的数字签名及merkle树相关的内容;因删除声明条目而需要分布式身份重新生成可验证凭证时,改进后的可验证凭证结构仅需要分布式身份直接删除该条目,无需重新计算可验证凭证的数字签名及merkle树相关的内容,减轻了分布式身份的负荷。
55.若声明需求为声明内容修改,即分布式身份持有者向分布式身份颁布者提出在可验证凭证中修改一个已有的声明:将claimi改为claimi’,则分布式身份持有者生成改进的可验证凭证,具体如下:{metadata
ꢀꢀ
// vc声明的具体内容
ꢀꢀ
claim1, r1
ꢀꢀ
claim2,r2
ꢀꢀ……ꢀꢀ
claimi’, ri
’……ꢀꢀ
claimn, rn
ꢀꢀ
// 对本vc的数字签名
ꢀꢀ
proof};其中,根据claimi’求得ri’的方法与上述步骤相同,该可验证凭证在验证时的方法也与前述的可验证凭证方法相同,并且由本步骤可见:可验证凭证结构中原有的merkle树相关内容使得可验证凭证的数据结构发生任何改变后均需要重新计算可验证凭证的数字签名及merkle树相关的内容;因修改声明条目而需要分布式身份重新生成可验证凭证时,改进后的可验证凭证结构仅需要分布式身份计算该条目对应的变色龙随机数,无需重新计算可验证凭证的数字签名及merkle树相关的内容,减轻了分布式身份的负荷。
56.若声明需求为声明顺序修改,即分布式身份持有者向分布式身份颁布者提出在可验证凭证中交换两个已有的声明的顺序:将claimi与claim(i+1),则分布式身份持有者生成改进的可验证凭证,具体如下:{metadata
ꢀꢀ
// vc声明的具体内容
ꢀꢀ
claim1, r1
ꢀꢀ
claim2, r2
ꢀꢀ……ꢀꢀ
claim(i+1), r(i+1)
ꢀꢀ
claimi,ri
……ꢀꢀ
claimn, rn
ꢀꢀ
// 对本vc的数字签名
ꢀꢀ
proof};该可验证凭证在验证时的方法也与前述的可验证凭证方法相同,并且由本步骤可见:可验证凭证结构中原有的merkle树相关内容使得可验证凭证的数据结构发生任何改变后均需要重新计算可验证凭证的数字签名及merkle树相关的内容;因交换声明条目的顺序而需要分布式身份重新生成可验证凭证时,改进后的可验证凭证结构仅需要分布式身份直接交换指定条目,无需重新计算可验证凭证的数字签名及merkle树相关的内容,减轻了分布式身份的负荷。
57.描述于本技术实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
58.以上描述仅为本技术的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本技术中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本技术构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本技术中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1