CN117131536A - 基于did的凭证数据隐私保护方法和装置、电子设备及存储介质 - Google Patents
基于did的凭证数据隐私保护方法和装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117131536A CN117131536A CN202310960815.3A CN202310960815A CN117131536A CN 117131536 A CN117131536 A CN 117131536A CN 202310960815 A CN202310960815 A CN 202310960815A CN 117131536 A CN117131536 A CN 117131536A
- Authority
- CN
- China
- Prior art keywords
- data
- privacy
- node
- user
- information
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000012795 verification Methods 0.000 claims abstract description 29
- 238000013475 authorization Methods 0.000 claims description 35
- 238000004422 calculation algorithm Methods 0.000 claims description 17
- 238000010276 construction Methods 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 2
- 150000003839 salts Chemical class 0.000 description 28
- 238000004364 calculation method Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 9
- 238000005070 sampling Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 238000003491 array Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
- G06F21/33—User authentication using certificates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种基于DID的凭证数据隐私保护方法和装置、电子设备及存储介质。本申请实施例的凭证数据隐私保护方法在最终生成的凭证数据中仅包含基于用户实际隐私信息创建的隐私数据树的节点数据而没有实际记载用户的真实隐私数据,使得在签发和授权的凭证数据中不再存储有用户的原始隐私信息,同时确保了验证方通过访问凭证数据中的隐私数据树的节点数据来进行所要求的用户身份的验证,大大提高了DID体系中流转的凭证数据中隐私信息的安全性。
Description
技术领域
本申请涉及网络技术领域,尤其涉及一种基于DID的凭证数据隐私保护方法和装置、电子设备及存储介质。
背景技术
随着互联网技术的发展,人们已经可以越来越多地通过互联网来进行生活和工作,并且因此也出现了各种基于互联网而建设的网站以向用户提供各种各样的服务。由于互联网的身份隐匿性,使得网站往往无法知晓访问或登录到其网站的用户的真实身份,并且因此也无法对于用户使用服务进行相应的规范和管理。为此,现有技术中已经提出了基于分布式数字身份认证(DID)的身份认证体系,其可以通过由发证方根据用户的隐私签发凭证数据,并由用户授权给验证方来访问的方式而使得用户可以仅将例如网站等的验证方所需的隐私信息提供给验证方。但是在这样的技术方案中,在凭证数据中实际上仍然存储有用户的隐私数据,因此在凭证数据的流转过程中仍然可能存在用户隐私数据泄露的风险,因此,需要一种基于DID的凭证数据隐私保护方案。
发明内容
本申请实施例提供一种基于DID的凭证数据隐私保护方法和装置、电子设备及存储介质,以解决现有技术中基于DID的身份认证体系中用户隐私数据存在泄露风险的缺陷。
为达到上述目的,本申请实施例提供了一种基于DID的凭证数据隐私保护方法,包括:
接收用户的凭证数据签发请求,其中,所述凭证数据签发请求包含有用户的DID标识以及所请求签发的第一隐私信息;
根据所述DID标识和所述第一隐私信息生成多个隐私数据组,其中所述多个隐私数据组包含与所述第一隐私信息直接关联的至少一个直接数据组以及根据所述第一隐私信息和所述直接数据组中的至少一个隐私数据生成的至少一个间接数据组;
根据所述隐私数据组构建第一隐私数据树,其中,所述隐私数据组中的每个隐私数据按照预定的顺序布置为分别对应于所述第一隐私数据树上最低一级的各叶子节点,并且从根节点到所述最低一级的叶子节点,每一级叶子节点中的各节点上的数据是在从根节点到最低一级的叶子节点的方向上位于等级比该级叶子节点低的节点中与其对应的两个节点的节点数据生成;
根据所述第一隐私数据树生成用户的签发凭证数据,其中所述签发凭证数据包含有签发所述签发凭证数据的发证方的DID标识、所述隐私数据树的生成信息以及所述发证方对所述签发凭证数据的证明信息。
本申请实施例还提供了一种基于DID的凭证数据隐私保护方法,所述方法包括:
接收验证方的访问请求;
根据验证方的访问请求,从多个签发凭证数据中确定与所述访问请求对应的签发凭证数据,其中,所述多个签发凭证数据是根据本申请实施例提供的基于DID的凭证数据隐私保护方法生成的;
根据所确定的签发凭证数据对应的所述第一隐私数据树生成授权凭证数据,其中,所述授权凭证数据包含有第一隐私数据树中与所述访问请求对应的叶子节点的位置信息、所述第一隐私数据树的根节点的节点信息以及接收所述访问请求的用户对所述签发凭证数据的证明信息;
将所述授权凭证数据发送给所述验证方。
本申请实施例还提供了一种基于DID的凭证数据隐私保护装置,包括:
签发请求接收模块,用于接收用户的凭证数据签发请求,其中,所述凭证数据签发请求包含有用户的DID标识以及所请求签发的第一隐私信息;
第一生成模块,用于根据所述DID标识和所述第一隐私信息生成多个隐私数据组,其中所述多个隐私数据组包含与所述第一隐私信息直接关联的至少一个直接数据组以及根据所述第一隐私信息和所述直接数据组中的至少一个隐私数据生成的至少一个间接数据组;
第一构建模块,用于根据所述隐私数据组构建第一隐私数据树,其中,所述隐私数据组中的每个隐私数据按照预定的顺序布置为分别对应于所述第一隐私数据树上最低一级的各叶子节点,并且从根节点到所述最低一级的叶子节点,每一级叶子节点中的各节点上的数据是在从根节点到最低一级的叶子节点的方向上位于等级比该级叶子节点低的节点中与其对应的两个节点的节点数据生成;
第二生成模块,用于根据所述隐私数据树生成用户的签发凭证数据,其中所述签发凭证数据包含有签发所述签发凭证数据的发证方的DID标识、所述隐私数据树的生成信息以及所述发证方对所述签发凭证数据的证明信息。
本申请实施例还提供了一种电子设备,包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,所述程序运行时执行本申请实施例提供的基于DID的凭证数据隐私保护方法。
本申请实施例还提供了一种计算机可读存储介质,其上存储有可被处理器执行的计算机程序,其中,该程序被处理器执行时实现如本申请实施例提供的基于DID的凭证数据隐私保护方法。
本申请实施例提供的基于DID的凭证数据隐私保护方法和装置、电子设备及存储介质,通过根据接收到的用户的凭证数据签发请求中包含的DID标识和所述第一隐私信息生成多个隐私数据组,并且多个隐私数据组包含与第一隐私信息直接关联的至少一个直接数据组以及根据第一隐私信息和直接数据组中的至少一个隐私数据生成的至少一个间接数据组;之后根据隐私数据组构建第一隐私数据树,隐私数据组中的每个隐私数据按照预定的顺序布置为分别对应于所述第一隐私数据树上最低一级的各叶子节点,并且从根节点到最低一级的叶子节点,每一级叶子节点中的各节点上的数据是在从根节点到最低一级的叶子节点的方向上位于等级比该级叶子节点低的节点中与其对应的两个节点的节点数据生成;最后根据隐私数据树生成用户的签发凭证数据,并且在签发凭证数据包含有签发该签发凭证数据的发证方的DID标识、隐私数据树的生成信息以及发证方对签发凭证数据的证明信息。因此,本申请实施例的凭证数据隐私保护方法在最终生成的凭证数据中仅包含基于用户实际隐私信息创建的隐私数据树的节点数据而没有实际记载用户的真实隐私数据,使得在签发和授权的凭证数据中不再存储有用户的原始隐私信息,同时确保了验证方通过访问凭证数据中的隐私数据树的节点数据来进行所要求的用户身份的验证,大大提高了DID体系中流转的凭证数据中隐私信息的安全性。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是示出了根据本申请实施例的基于DID的凭证数据隐私保护方案的应用场景示意图;
图2为本申请提供的基于DID的凭证数据隐私保护方法的实施例的流程图;
图3为本申请提供的基于DID的凭证数据隐私保护装置的结构示意图;
图4为本申请提供的电子设备实施例的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
实施例一
本申请实施例提供的方案可应用于任何具有数据查询和处理功能的数据系统。
随着互联网技术的发展,人们已经可以越来越多地通过互联网来进行生活和工作,并且因此也出现了各种基于互联网而建设的网站以向用户提供各种各样的服务。由于互联网的身份隐匿性,使得网站往往无法知晓访问或登录到其网站的用户的真实身份,并且因此也无法对于用户使用服务进行相应的规范和管理。为此,现有技术中已经提出了用户需要在访问或登录的网站中预先登记其身份信息,以便于网站可以在用户请求使用网站的服务时可以基于用户提交的身份信息来为用户提供服务。在这一过程中,用户需要将自己的身份信息的原始数据提供给网站并进而保存在网站的服务器中,但是这样的身份信息通常都是用户的隐私数据,因此,用户在使用不同网站提供的服务的同时,也不得不将自己的隐私数据存储在各个网站上,这大大增加了用户隐私暴露的风险。
对此,在现有技术中已经提出了基于DID(去中心化身份标识)的身份认证体系,该体系主要是针对上述现有的由各个网站管理用户的身份信息的存储方式而提出的。由于大部分不同的网站或平台的身份注册模块并不互通,因此当前大部分不同运营方的网站或平台一方面需要使用用户的真实身份信息来根据自己网站或平台的访问要求进行验证,另一方面由于相互之间不具有访问或甚至管理对方网站的身份数据的权限,而无法对于使用对方网站发行的身份标识的用户的身份进行验证,从而用户不得不将自己的实际隐私信息发送到各个网站以便于进行访问验证。
在现有的基于DID的身份认证体系中,用户可以向有能力对用户真实身份进行认证的发证方请求身份认证,并且发证方可以基于用户的认证请求来对用户所请求的身份信息进行核验并且在核验通过后可以向用户签发凭证数据,在该凭证数据中存储有验证方所需要的用户隐私数据,并且因此可以作为权威机构向用户签发的证明用户的特定身份信息的证明数据。例如,图1是示出了根据本申请实施例的基于DID的凭证数据隐私保护方案的应用场景的示意图。在图1中所示的场景中,用户可以在DID系统中通过使用用户节点来根据使用方的凭证获取请求或者根据自己的凭证需求来向发证方节点发送凭证签发请求,发证方节点可以是例如法律或公认可以对用户的一种或多种身份信息进行认证的部门或单位,并且因此发证方可以响应于接收到的用户通过用户节点发送过得认证请求,即请求签发认证凭证,来对用户的该请求中包含的指定的身份信息进行认证。例如,用户需要登录的网站需要了解用户的年龄,以确认用户的年龄是否达到了使用网站提供的服务的年龄值。因此,在DID系统中,用户的凭证数据就可以通过包含有传统上的用户的身份信息来供验证方访问以进行访问验证方的平台或网站的年龄认证的依据。
但是,在这样的DID体系中,用户虽然可以请求对自己的年龄具有法定或公认的认证效力的发证方来签发关于其当前年龄的凭证数据,但是发证方在根据用户的认证请求中包含的用户标识获取用户的出生日期信息或根据用户发送的身份信息来核对并确认用户的出生日期信息,并由此可以向用户签发关于其在指定日期的年龄的凭证数据,而用户在收到该凭证数据后可以在访问作为该凭证数据的使用方的网站1时,将该凭证数据出示给网站1,从而网站1可以根据该凭证数据确认用户在当前日期的年龄,并当用户的该年龄符合使用相关服务的规定时,可以向用户提供服务。因此,在发证方签发的这样的凭证数据中仍然记录有用户的真实的年龄信息,并且结合验证方的验证要求,例如当前的年份或日期等,可以直接或间接地推导获得用户的生日信息。而如果验证方需要验证的是用户的姓名、毕业学校等身份信息,则在签证方签发的该凭证数据中显然会直接包含这样的隐私信息。因此,在现有的基于DID的身份认证体系中,用户的隐私数据仍然会随着凭证数据的流转而被不同的验证方访问到,并且即使是存储时也存在着被恶意访问而泄露的风险,因此,现有的基于DID的身份认证体系在用户隐私保护方面仍然存在着一定的隐患。
对此,如图1中所示,在根据本申请实施例的基于DID的身份认证体系中,用户可以通过使用安装有根据本申请实施例的基于DID的凭证数据隐私保护方案的客户端的终端来登录到基于DID的身份认证体系中,并且验证方和发证方也可以类似地通过这样的终端来从各自的节点登录到DID系统中。在该情况下,如果用户在访问验证方所运营的网站时需要浏览例如对用户的年龄有特别要求的网页或请求相应的服务,验证方可以要求用户提供对于其身份信息进行认证的用户凭证,例如验证方可以要求用户提供其在访问验证方所运营的网站的日期时年龄已经达到或超过18岁或者要求用户提供其当前的具体年龄。因此,用户可以根据验证方的该要求,而向具有身份认证能力的发证方来请求其签发关于其在指定日期已经达到或超过18岁的凭证数据或者是记载有其当前年龄的凭证数据。
因此,发证方可以根据用户发送的凭证数据签发请求来在其数据库中查询用户的身份信息,例如其出生日期信息,并根据检索到的出生日期和用户在请求中指定的日期或者用户发送该请求时的系统时间来为用户生成该凭证数据。例如,在本申请实施例中,当验证方向用户发出验证年龄的验证请求时,例如,用户访问验证方的网站或访问其网站上的某些内容,验证方对这样的访问设置了对于访问者的年龄的限制,例如需要在访问时为18岁或超过18岁,用户可以向发证方发送年龄凭证数据的签发请求,在该签发请求中,用户可以在其中包含有其自己的用户ID,即DID标识以及请求发证方签发的隐私内容,例如已满18周岁或者当前的年龄。在接收到用户发送的该签发请求后,发证方可以首先获取用户的身份信息,例如,出生日期等信息。在现有技术的DID体系中,发证方是根据这样获取到的用户的身份信息来直接生成包含有用户的年龄数据的凭证数据,并发送给用户,以便于验证方访问凭证数据中的该年龄数据。而在本申请实施例中,发证方在获取到用户的身份信息之后,可以首先根据该身份信息中的出生日期来生成多个组隐私数据,即生成多个隐私数据组。例如,发证方可以通过以预定的采样范围或者根据用户的验证请求确定的采样范围来对出生日期所在的作用域进行采样来生成多个年龄数据组。例如,如果用户的出生日期为2000年1月1日,而验证方对用户的验证要求为18周岁,则可以从用户的出生之日起开始选择18年的年龄数据来建立一个18周岁的年龄数据组,并且还可以进一步基于这样建立的18周岁的年龄数据组来生成出生之前的一个数据组以及出生之后的一个数据组,从而覆盖年份的所有数值范围。具体地,在本申请实施例中,发证方可以首先建立一个从2000年到2018年的数组,其中包含有与用户的年龄逐年对应的各个年份,即[2000,2001,2002,……,2018],该数组中可以包含有18个数据,分别对应于用户从1岁到18岁的各个年份,然后基于该数组还可以进一步生成包含有用户出生之前的年份的数组以及用户在18岁之后的各个年份或预定间隔的年份的一个或多个数组。在生成了各个数组之后,可以根据这样生成的数组中的数据来构建用户的隐私数据树。例如,在本申请实施例中,可以使用默克尔树作为用户隐私数据树的形式。具体地,可以将如上生成的各个数组中的数值分别进行哈希计算来生成哈希值,并且将这样生成的哈希值作为隐私数据树的最低一级的节点数据,例如,可以将2000年之前的年份数组进行哈希计算并将其计算获得的哈希值作为隐私数据树的最低一级的第一个节点的节点数据,然后将2000年到2018年的数组中从2000年到2018年这18个年份的年份数据分别进行哈希计算并将分别获得的哈希值作为与基于2000年之前的年份数组获得的哈希值同一级的节点的第二至第19个节点的节点数据,最后可以将2018年之后的年份数组进行哈希计算获得的哈希值作为该一级的节点的第20个节点的节点数据。由此,可以构建了用户的年龄隐私数据树的最低一级的节点,在这些节点数据的基础上,可以进一步构建第二级节点。例如,在本申请实施例中,可以对于最低一级,即第一级的节点中的每两个相邻节点的节点数据进行哈希计算以将获得的哈希值作为第二级节点的节点数据。例如,可以对第一节点的节点数据,即2000年之前的年份数组进行哈希计算获得的哈希值,和第二节点的节点数据,即2001年年份数据进行哈希计算获得的哈希值,进行哈希计算来获得这两个节点的节点数据的哈希值,并将其作为第二级节点的第一个节点的节点数据,然后,可以对于第一级的第三个节点和第四个节点的节点数据,即,2002和2003年的年份数据进行哈希计算获得的哈希值,进行哈希计算,以将获得的哈希值作为第二级节点的第二个节点的节点数据,以此类推,最终可以基于第一级的20个节点的节点数据获得第二级的10个节点的节点数据。之后,可以以类似的方式,对于第二级的十个节点中每两个相邻的节点的节点数据进行哈希计算,以将获得的哈希值作为第三级的节点的节点数据。由此,最终可以获得该年龄隐私数据树的根节点的节点数据。由此可以完成了隐私数据树的构建,并且根据隐私数据树的构建可以知道的是,该隐私数据树中没有记载用户的实际年龄数据,但是每个节点的节点数据都是根据用户的年龄数据组的数据生成的,因此根据每个节点可以获得用户的各个年龄的数据,换言之,根据该隐私数据树中的各个节点的位置信息,就可以推导出对应的年份数据。
此外,在本申请实施例中,在构建隐私数据树时,还可以对于用户的年龄数据组的数据进行加盐处理,以进一步保护用户的年龄隐私。例如,可以首先生成或选择一个随机种子,并给予该种子生成与年龄数据组的数据数量相同数量的盐数据。例如,年龄数据组实际上包含有2000年之前的年龄数据、2001-2018年的各年份的年份数据以及2018年之后的年份数据这20个数据,因此可以基于种子数据生成20个盐数据,并且分别使用这20个盐数据和20个年份数据生成20个加盐年份数据,并且之后可以基于这样生成的20个加盐年份数据以上述方式生成隐私数据树的第一级的20个节点以及其他级别的节点直到最终的根节点。因此,以该方式,即使知道隐私数据树中的节点的位置信息和算法也无法直接获得年龄数据,而是需要获得对应的盐数据才能够推导获得用户的年份数据,从而进一步加强了用户隐私数据的安全性。
此外,在本申请实施例中,除了年龄数据之外,当用户请求签发与其他身份信息有关的凭证签发时,发证方还可以根据用户的身份信息来生成对应的身份数据组,例如,可以将用户的姓名、出生日期、住址以及身份证号中的一个或多个形成为一个或多个隐私数据组,即可以将用户的姓名的字符串放置在第一个数据组中作为该数据组中的隐私数据,将出生日期的日期值放置在第二个数据组中作为该数据组中的隐私数据,将住址的字符串放置在第三个数据组中作为该数据组中的隐私数据,并且将身份证号的数字放置在第四个数据组中作为该数据组中的隐私数据,从而形成四个数据组。当然,在本申请实施例中,也可以将一个或多个这样的身份数据放置在一个数据组中,例如,可以将姓名的字符串放置在第一个数据组中作为该数据组中的隐私数据,将出生日期的日期值和住址的字符串放置在第二个数据组中分别作为该数据组中的两个隐私数据,而将身份证号的数字放置在第三个数据组中分别作为该数据组中的隐私数据,从而形成三个数据组。
在获得了隐私数据组之后,可以基于如上生成的多个数据组中的数据来使用例如哈希算法生成各自的哈希值,并使用这样生成的哈希值作为对应的隐私数据树的最低一级,即第一级的各节点的节点数据。例如,基于姓名的数据组进行哈希计算来生成对应的哈希值并将其作为对应的身份信息数据树的第一级的第一个节点的节点数据,类似地,基于出生日期的数据组进行哈希计算来生成对应的哈希值并将其作为对应的身份信息数据树的第一级的第二个节点的节点数据,基于住址的数据组进行哈希计算来生成哈希值并将其作为对应的身份信息数据树的第一级的第三个节点的节点数据,基于身份证号的数据组进行哈希计算来生成对应的哈希值并将其作为对应的身份信息数据树的第一级的第四个节点的节点数据,之后可以与如上构建年龄数据树的方式类似地,基于第一级的第一个和第二节点的节点数据进行哈希计算来获得哈希值以作为第二级节点的第一个节点的节点数据,并基于第一级的第三个和第四个节点的节点数据进行哈希计算来获得哈希值以作为第二级节点的第二个节点的节点数据,并最终基于第二级节点的第一个节点和第二个节点的节点数据进行哈希计算来获得哈希值以作为身份信息数据树的根节点的节点数据。
此外,在本申请实施例中,还可以在如上构造数据组或基于如上构造的数据组构建隐私数据树时,在每个隐私数据都加上对应的数据索引来形成带索引的数据对。例如,在生成年龄数据组时,可以分别对于2000年之前的年份数据的数据组添加索引0,对于2001-2018年的年份数据组中的每个年份数据分别添加索引1-18,并对于2018年之后的年份数据的数据组添加索引19,从而形成带有索引的20个数据组,并基于这样的带索引的数据组来分别进行哈希计算以将获得的哈希值分别作为对应的第一级节点的各节点的节点数据。进一步地,也可以在获得了带有索引的数据组之后,使用基于随机种子生成的盐数据来先对于每个带索引的数据组的各数据进行加盐处理,以生成加盐数据,之后再对于每个加盐数据进行哈希计算来获得哈希值以作为对应的第一级节点的各节点的节点数据。
在生成了隐私数据树之后,发证方可以基于这样生成的隐私数据树而不是现有技术中直接使用用户的隐私数据来为用户签发凭证数据,即为用户生成凭证数据。例如,发证方可以使用发证方自己的私钥来对如上生成的隐私数据树的根节点数据进行签名,并将生成的签名数据以及对应的隐私数据树的生成方式,例如使用的哈希算法等放入凭证数据中。在使用盐数据对隐私数据进行加盐处理的情况下,发证方还可以进一步将生成盐数据所使用的种子数据也放入到对应的凭证数据中。特别地,发证方还可以在该凭证数据中进一步包括发证方对于其所签发的该凭证数据的证明字段。
发证方在响应于用户的凭证签发请求而为用户生成了凭证数据之后,可以将其发送给用户,并且用户可以根据验证方的验证要求来对验证方进行授权,以将发证方签发的凭证数据中内容授权给验证方来访问。例如,当验证方要求验证用户当前的年龄超过18岁时,用户可以基于发证方签发的凭证数据中的信息来进一步为验证方生成授权凭证数据。例如,用户可以基于接收到的验证方对于年龄的访问请求来从发证方签发的多个凭证数据中确定对应的年龄隐私数据树,并根据所确定的年龄隐私树中当前年份所在的位置来生成年龄结果,从而将该年龄结果在年龄隐私数据树中的索引以及凭证方生成对应的年龄隐私数据树的验证路径、根节点信息、发证方的DID标识以及发证方在签发凭证数据时生成的签名等信息中的一种或多种包含在为验证方生成的授权凭证数据中。因此,验证方在接收到用户发送的该授权凭证数据时,可以根据用户的DID标识来从区块链中获取用户的DID文档,其中可以记载有用户的公钥,从而根据该用户的公钥来对用户发送的授权凭证数据中的用户签名进行验证,以确定该授权凭证数据是由用户生成的。之后,验证方可以根据凭证数据中发证方的DID标识来进一步从区块链获得发证方的DID文档,以从其提取发证方的公钥,并验证用户在授权凭证数据中包含的发证方对于例如年龄隐私数据树的根节点的签名。在签名验证通过之后,验证方可以进一步对于该授权凭证数据中包含的年龄隐私数据树的对应年龄节点的节点信息和节点数据的验证,特别是在加盐处理的情况下,验证方还可以对于该授权凭证数据中包含的盐种子数据进行验证,从而当验证通过时,可以获得用户在生成该授权凭证时根据当前年份在年龄隐私数据树中确定的年龄结果,例如,2019>18,即表示在2019年用户的年龄大于18岁,从而验证方能够确认该用户符合访问其网站或平台的年龄要求。
因此,根据本申请实施例的隐私信息保护方案,通过根据接收到的用户的凭证数据签发请求中包含的DID标识和所述第一隐私信息生成多个隐私数据组,并且多个隐私数据组包含与第一隐私信息直接关联的至少一个直接数据组以及根据第一隐私信息和直接数据组中的至少一个隐私数据生成的至少一个间接数据组;之后根据隐私数据组构建第一隐私数据树,隐私数据组中的每个隐私数据按照预定的顺序布置为分别对应于所述第一隐私数据树上最低一级的各叶子节点,并且从根节点到最低一级的叶子节点,每一级叶子节点中的各节点上的数据是在从根节点到最低一级的叶子节点的方向上位于等级比该级叶子节点低的节点中与其对应的两个节点的节点数据生成;最后根据隐私数据树生成用户的签发凭证数据,并且在签发凭证数据包含有签发该签发凭证数据的发证方的DID标识、隐私数据树的生成信息以及发证方对签发凭证数据的证明信息。因此,本申请实施例的凭证数据隐私保护方法在最终生成的凭证数据中仅包含基于用户实际隐私信息创建的隐私数据树的节点数据而没有实际记载用户的真实隐私数据,使得在签发和授权的凭证数据中不再存储有用户的原始隐私信息,同时确保了验证方通过访问凭证数据中的隐私数据树的节点数据来进行所要求的用户身份的验证,大大提高了DID体系中流转的凭证数据中隐私信息的安全性。
上述实施例是对本申请实施例的技术原理和示例性的应用框架的说明,下面通过多个实施例来进一步对本申请实施例具体技术方案进行详细描述。
实施例二
图2为本申请提供的基于DID的凭证数据隐私保护方法的实施例的流程图,该方法的执行主体可以为具有数据处理能力的各种终端或服务器设备,也可以为集成在这些设备上的装置或芯片。如图2所示,该基于DID的凭证数据隐私保护方法包括如下步骤:
S201,接收用户的凭证数据签发请求。
在步骤S201中,可以由例如DID体系中的发证方节点来接收用户发送的凭证数据签发请求,在本申请实施例中,该凭证数据签发请求可以是用户在访问验证方的网站或平台时响应于验证方的访问或验证要求而生成的,或者也可以是用户在尚未访问验证方的网站或平台而自行确定想要预先生成的。在步骤S201中,用户的该凭证数据签发请求可以包含有用户的DID标识以及所请求签发的第一隐私信息,从而发证方可以根据用户的该凭证数据签发请求中包含的用户的DID标识来获取用户的与该第一隐私信息有关的数据以生成用户所请求的凭证数据。
S202,根据DID标识和第一隐私信息生成多个隐私数据组。
在步骤S202中,发证方可以根据在步骤S201中从用户接收到的凭证数据签发请求中的DID标识和第一隐私信息来生成与该用户的第一隐私信息有关的多个隐私数据组。例如,在本申请实施例中,发证方可以根据在步骤S201中接收到的用户的凭证数据签发请求中包含的用户的DID标识来获取用户的身份信息,以从其中提取与用户所请求的第一隐私信息有关的个人身份数据,或者在本申请实施例中,在步骤S202中,发证方也可以根据用户的该DID标识和所请求的第一隐私信息来直接获取与该DID标识对应的该用户的与该第一隐私信息有关的个人身份数据。例如已满18周岁或者当前的年龄。在接收到用户发送的该签发请求后,发证方可以首先获取用户的身份信息,例如,出生日期等信息。
在获取到了个人身份数据之后,即与用户所请求的第一隐私信息有关的身份数据后,发证方可以基于这样获取到的用户的身份数据来生成多个隐私数据组,在该多个隐私数据组中可以包含与发证方在步骤S201中接收到的用户所请求的第一隐私信息直接关联的至少一个直接数据组以及根据该第一隐私信息和直接数据组中的至少一个隐私数据生成的至少一个间接数据组。
例如,发证方在步骤S201中获取到用户的身份信息之后,可以在步骤S202中根据该身份信息中的出生日期来生成多个组隐私数据,即生成多个隐私数据组。例如,发证方可以通过以预定的采样范围或者根据用户的验证请求确定的采样范围来对出生日期所在的作用域进行采样来生成多个年龄数据组。例如,如果用户的出生日期为2000年1月1日,而验证方对用户的验证要求为18周岁,则可以从用户的出生之日起开始选择18年的年龄数据来建立一个18周岁的年龄数据组,并且还可以进一步基于这样建立的18周岁的年龄数据组来生成出生之前的一个数据组以及出生之后的一个数据组,从而覆盖年份的所有数值范围。具体地,在本申请实施例中,发证方可以首先建立一个从2000年到2018年的数组,其中包含有与用户的年龄逐年对应的各个年份,即[2000,2001,2002,……,2018],该数组中可以包含有18个数据,分别对应于用户从1岁到18岁的各个年份,然后基于该数组还可以进一步生成包含有用户出生之前的年份的数组以及用户在18岁之后的各个年份或预定间隔的年份的一个或多个数组。
此外,在本申请实施例中,除了年龄数据之外,当用户请求签发与其他身份信息有关的凭证签发时,发证方还可以在步骤S202中根据用户的身份信息来生成对应的身份数据组,例如,可以将用户的姓名、出生日期、住址以及身份证号中的一个或多个形成为一个或多个隐私数据组,即可以将用户的姓名的字符串放置在第一个数据组中作为该数据组中的隐私数据,将出生日期的日期值放置在第二个数据组中作为该数据组中的隐私数据,将住址的字符串放置在第三个数据组中作为该数据组中的隐私数据,并且将身份证号的数字放置在第四个数据组中作为该数据组中的隐私数据,从而形成四个数据组。当然,在本申请实施例中,也可以将一个或多个这样的身份数据放置在一个数据组中,例如,可以将姓名的字符串放置在第一个数据组中作为该数据组中的隐私数据,将出生日期的日期值和住址的字符串放置在第二个数据组中分别作为该数据组中的两个隐私数据,而将身份证号的数字放置在第三个数据组中分别作为该数据组中的隐私数据,从而形成三个数据组。
S203,根据隐私数据组构建第一隐私数据树。
在步骤S203中,发证方可以基于在步骤S202中生成的隐私数据组来构建第一隐私数据树。例如,在本申请实施例中,发证方可以基于步骤S202中生成的多个隐私数据组中的每个数据组或者每个数据组中的每个隐私数据来生成隐私数据树的第一级叶子节点的节点数据,从而构建该第一级的节点,而后可以基于该第一级,也就是最低一级的节点来继续向上构建上一级,例如第二级、第三级等等其他级的节点的节点数据,直到获得了最上一级,即根节点的节点数据。例如,在本申请实施例中,在步骤S203中可以将步骤S202中生成的隐私数据组中的每个隐私数据按照预定的顺序布置为分别对应于第一隐私数据树上最低一级的各叶子节点,并且从根节点到最低一级的叶子节点,每一级叶子节点中的各节点上的数据是在从根节点到最低一级的叶子节点的方向上位于等级比该级叶子节点低的节点中与其对应的两个节点的节点数据生成。
在步骤S203中,可以使用默克尔树作为用户隐私数据树的形式。例如可以将步骤S202中生成的每个数组或每个数组中的各数据分别进行哈希计算来生成哈希值,并且将这样生成的哈希值作为该第一隐私数据树的最低一级的节点数据,例如,在步骤S201中接收到的用户的签发请求中包含的第一隐私数据是年龄数据时,可以将2000年之前的年份数组进行哈希计算并将其计算获得的哈希值作为隐私数据树的最低一级的第一个节点的节点数据,然后将2000年到2018年的数组中从2000年到2018年这18个年份的年份数据分别进行哈希计算并将分别获得的哈希值作为与基于2000年之前的年份数组获得的哈希值同一级的节点的第二至第19个节点的节点数据,最后可以将2018年之后的年份数组进行哈希计算获得的哈希值作为该一级的节点的第20个节点的节点数据。由此,在步骤S203中获得了用户的年龄隐私数据树的最低一级的节点,在这些节点数据的基础上,可以进一步构建第二级节点。
例如,在步骤S203中,可以对于最低一级,即第一级的节点中的每两个相邻节点的节点数据进行哈希计算以将获得的哈希值作为第二级节点的节点数据。例如,在用户请求的第一隐私数据是年龄数据时,可以对已经生成的第一节点的节点数据,即2000年之前的年份数组进行哈希计算获得的哈希值,和第二节点的节点数据,即2001年年份数据进行哈希计算获得的哈希值,进行哈希计算来获得这两个节点的节点数据的哈希值,并将其作为第二级节点的第一个节点的节点数据,然后,可以对于第一级的第三个节点和第四个节点的节点数据,即,2002和2003年的年份数据进行哈希计算获得的哈希值,进行哈希计算,以将获得的哈希值作为第二级节点的第二个节点的节点数据,以此类推,最终可以基于第一级的20个节点的节点数据获得第二级的10个节点的节点数据。之后,可以以类似的方式,对于第二级的十个节点中每两个相邻的节点的节点数据进行哈希计算,以将获得的哈希值作为第三级的节点的节点数据。由此,在步骤S203中可以获得该年龄隐私数据树的根节点的节点数据。由此可以完成了隐私数据树的构建,并且根据隐私数据树的构建可以知道的是,该隐私数据树中没有记载用户的实际年龄数据,但是每个节点的节点数据都是根据用户的年龄数据组的数据生成的,因此根据每个节点可以获得用户的各个年龄的数据,换言之,根据该隐私数据树中的各个节点的位置信息,就可以推导出对应的年份数据。
此外,在步骤S203中构建隐私数据树时,还可以对于用户的年龄数据组的数据进行加盐处理,以进一步保护用户的年龄隐私。例如,可以首先生成或选择一个随机种子,并给予该种子生成与年龄数据组的数据数量相同数量的盐数据。例如,年龄数据组实际上包含有2000年之前的年龄数据、2001-2018年的各年份的年份数据以及2018年之后的年份数据这20个数据,因此可以基于种子数据生成20个盐数据,并且分别使用这20个盐数据和20个年份数据生成20个加盐年份数据,并且之后可以基于这样生成的20个加盐年份数据以上述方式生成隐私数据树的第一级的20个节点以及其他级别的节点直到最终的根节点。因此,以该方式,即使知道隐私数据树中的节点的位置信息和算法也无法直接获得年龄数据,而是需要获得对应的盐数据才能够推导获得用户的年份数据,从而进一步加强了用户隐私数据的安全性。
此外,在步骤S203中,可以基于步骤S202中生成的多个数据组中的数据来使用例如哈希算法生成步骤S202中生成的每个数据组或每个数据组中的各数据的哈希值,并使用这样生成的哈希值作为分别与各数据对应的隐私数据树的最低一级,即第一级的各节点的节点数据。例如,在步骤S201中接受到的用户所请求的第一隐私数据指示用户的身份信息时,在步骤S203中可以基于姓名的数据组进行哈希计算来生成对应的哈希值并将其作为对应的身份信息数据树的第一级的第一个节点的节点数据,类似地,也可以基于出生日期的数据组进行哈希计算来生成对应的哈希值并将其作为对应的身份信息数据树的第一级的第二个节点的节点数据,基于住址的数据组进行哈希计算来生成哈希值并将其作为对应的身份信息数据树的第一级的第三个节点的节点数据,基于身份证号的数据组进行哈希计算来生成对应的哈希值并将其作为对应的身份信息数据树的第一级的第四个节点的节点数据,之后可以与上述构建年龄数据树的方式类似地,基于第一级的第一个和第二节点的节点数据进行哈希计算来获得哈希值以作为第二级节点的第一个节点的节点数据,并基于第一级的第三个和第四个节点的节点数据进行哈希计算来获得哈希值以作为第二级节点的第二个节点的节点数据,并最终基于第二级节点的第一个节点和第二个节点的节点数据进行哈希计算来获得哈希值以作为身份信息数据树的根节点的节点数据。
S204,根据隐私数据树生成用户的签发凭证数据。
在步骤S204中,例如发证方可以根据步骤S203中生成的隐私数据树来为用户签发凭证数据,即生成签发凭证数据。例如,在本申请实施例中,签发凭证数据可以包含有签发签发凭证数据的发证方的DID标识、隐私数据树的生成信息以及发证方对签发凭证数据的证明信息。
在步骤S203生成了隐私数据树之后,发证方可以在步骤S204中基于这样生成的隐私数据树而不是现有技术中直接使用用户的隐私数据来为用户签发凭证数据,即为用户生成凭证数据。例如,发证方可以使用发证方自己的私钥来对如上生成的隐私数据树的根节点数据进行签名,并将生成的签名数据以及对应的隐私数据树的生成方式,例如使用的哈希算法等放入凭证数据中。在使用盐数据对隐私数据进行加盐处理的情况下,发证方还可以进一步将生成盐数据所使用的种子数据也放入到对应的凭证数据中。特别地,发证方还可以在步骤S204中生成该凭证数据中进一步包括发证方对于其所签发的该凭证数据的证明字段。
发证方在步骤S204响应于用户的凭证签发请求而为用户生成了凭证数据之后,可以在步骤S204中将其发送给用户,并且用户可以根据验证方的验证要求来对验证方进行授权,以将发证方签发的凭证数据中内容授权给验证方来访问。例如,当验证方要求验证用户当前的年龄超过18岁时,用户可以基于发证方签发的凭证数据中的信息来进一步为验证方生成授权凭证数据。例如,用户可以基于验证方对于年龄的访问请求来从发证方签发的多个凭证数据中确定对应的年龄隐私数据树,并基于所确定的年龄隐私树中当前年份所在的位置来生成年龄结果,从而将该年龄结果在年龄隐私数据树中的索引以及凭证方生成对应的年龄隐私数据树的验证路径、根节点信息、发证方的DID标识以及发证方在签发凭证数据时生成的签名等信息中的一种或多种包含在为验证方生成的授权凭证数据中,并且还可以进一步使用用户的私钥来对该授权凭证数据进行签名。因此,验证方在接收到用户发送的该授权凭证数据时,可以根据用户的DID标识来从区块链中获取用户的DID文档,其中可以记载有用户的公钥,从而根据该用户的公钥来对用户发送的授权凭证数据中的用户签名进行验证,以确定该授权凭证数据是由用户生成的。之后,验证方可以根据凭证数据中发证方的DID标识来进一步从区块链获得发证方的DID文档,以从其提取发证方的公钥,并验证用户在授权凭证数据中包含的发证方对于例如年龄隐私数据树的根节点的签名。在签名验证通过之后,验证方可以进一步对于该授权凭证数据中包含的年龄隐私数据树的对应年龄节点的节点信息和节点数据的验证,特别是在加盐处理的情况下,验证方还可以对于该授权凭证数据中包含的盐种子数据进行验证,从而当验证通过时,可以获得用户在生成该授权凭证时根据当前年份在年龄隐私数据树中确定的年龄结果,例如,2019>18,即表示在2019年用户的年龄大于18岁,从而验证方能够确认该用户符合访问其网站或平台的年龄要求。
因此,根据本申请实施例的基于DID的凭证数据隐私保护方法,通过根据接收到的用户的凭证数据签发请求中包含的DID标识和所述第一隐私信息生成多个隐私数据组,并且多个隐私数据组包含与第一隐私信息直接关联的至少一个直接数据组以及根据第一隐私信息和直接数据组中的至少一个隐私数据生成的至少一个间接数据组;之后根据隐私数据组构建第一隐私数据树,隐私数据组中的每个隐私数据按照预定的顺序布置为分别对应于所述第一隐私数据树上最低一级的各叶子节点,并且从根节点到最低一级的叶子节点,每一级叶子节点中的各节点上的数据是在从根节点到最低一级的叶子节点的方向上位于等级比该级叶子节点低的节点中与其对应的两个节点的节点数据生成;最后根据隐私数据树生成用户的签发凭证数据,并且在签发凭证数据包含有签发该签发凭证数据的发证方的DID标识、隐私数据树的生成信息以及发证方对签发凭证数据的证明信息。因此,本申请实施例的凭证数据隐私保护方法在最终生成的凭证数据中仅包含基于用户实际隐私信息创建的隐私数据树的节点数据而没有实际记载用户的真实隐私数据,使得在签发和授权的凭证数据中不再存储有用户的原始隐私信息,同时确保了验证方通过访问凭证数据中的隐私数据树的节点数据来进行所要求的用户身份的验证,大大提高了DID体系中流转的凭证数据中隐私信息的安全性。
实施例三
图3为本申请提供的基于DID的凭证数据隐私保护装置的结构示意图,该基于DID的凭证数据隐私保护装置可以用于实施例如参考图2描述的本申请实施例提供的基于DID的凭证数据隐私保护方法。该基于DID的凭证数据隐私保护装置可以包括:签发请求接收模块31、第一生成模块32、第一构建模块33和第二生成模块34。
签发请求接收模块31可以用于接收用户的凭证数据签发请求。
可以由例如DID体系中的发证方节点的签发请求接收模块31来接收用户发送的凭证数据签发请求,在本申请实施例中,该凭证数据签发请求可以是用户在访问验证方的网站或平台时响应于验证方的访问或验证要求而生成的,或者也可以是用户在尚未访问验证方的网站或平台而自行确定想要预先生成的。在本申请实施例中,用户的该凭证数据签发请求可以包含有用户的DID标识以及所请求签发的第一隐私信息,从而发证方可以根据用户的该凭证数据签发请求中包含的用户的DID标识来获取用户的与该第一隐私信息有关的数据以生成用户所请求的凭证数据。
第一生成模块32可以用于根据DID标识和第一隐私信息生成多个隐私数据组。
发证方节点处的第一生成模块32可以根据签发请求接收模块31从用户接收到的凭证数据签发请求中的DID标识和第一隐私信息来生成与该用户的第一隐私信息有关的多个隐私数据组。例如,在本申请实施例中,发证方可以根据签发请求接收模块31接收到的用户的凭证数据签发请求中包含的用户的DID标识来获取用户的身份信息,以从其中提取与用户所请求的第一隐私信息有关的个人身份数据,或者在本申请实施例中,发证方节点的第一生成模块32也可以根据用户的该DID标识和所请求的第一隐私信息来直接获取与该DID标识对应的该用户的与该第一隐私信息有关的个人身份数据。例如已满18周岁或者当前的年龄。在接收到用户发送的该签发请求后,发证方可以首先获取用户的身份信息,例如,出生日期等信息。
在获取到了个人身份数据之后,即与用户所请求的第一隐私信息有关的身份数据后,发证方可以基于这样获取到的用户的身份数据来生成多个隐私数据组,在该多个隐私数据组中可以包含与发证方在步骤S201中接收到的用户所请求的第一隐私信息直接关联的至少一个直接数据组以及根据该第一隐私信息和直接数据组中的至少一个隐私数据生成的至少一个间接数据组。
例如,发证方在步骤S201中获取到用户的身份信息之后,可以在步骤S202中根据该身份信息中的出生日期来生成多个组隐私数据,即生成多个隐私数据组。例如,发证方节点的第一生成模块32可以通过以预定的采样范围或者根据用户的验证请求确定的采样范围来对出生日期所在的作用域进行采样来生成多个年龄数据组。例如,如果用户的出生日期为2000年1月1日,而验证方对用户的验证要求为18周岁,则可以从用户的出生之日起开始选择18年的年龄数据来建立一个18周岁的年龄数据组,并且还可以进一步基于这样建立的18周岁的年龄数据组来生成出生之前的一个数据组以及出生之后的一个数据组,从而覆盖年份的所有数值范围。具体地,在本申请实施例中,发证方可以首先建立一个从2000年到2018年的数组,其中包含有与用户的年龄逐年对应的各个年份,即[2000,2001,2002,……,2018],该数组中可以包含有18个数据,分别对应于用户从1岁到18岁的各个年份,然后基于该数组还可以进一步生成包含有用户出生之前的年份的数组以及用户在18岁之后的各个年份或预定间隔的年份的一个或多个数组。
此外,在本申请实施例中,除了年龄数据之外,当用户请求签发与其他身份信息有关的凭证签发时,发证方的第一生成模块32可以根据用户的身份信息来生成对应的身份数据组,例如,可以将用户的姓名、出生日期、住址以及身份证号中的一个或多个形成为一个或多个隐私数据组,即可以将用户的姓名的字符串放置在第一个数据组中作为该数据组中的隐私数据,将出生日期的日期值放置在第二个数据组中作为该数据组中的隐私数据,将住址的字符串放置在第三个数据组中作为该数据组中的隐私数据,并且将身份证号的数字放置在第四个数据组中作为该数据组中的隐私数据,从而形成四个数据组。当然,在本申请实施例中,也可以将一个或多个这样的身份数据放置在一个数据组中,例如,可以将姓名的字符串放置在第一个数据组中作为该数据组中的隐私数据,将出生日期的日期值和住址的字符串放置在第二个数据组中分别作为该数据组中的两个隐私数据,而将身份证号的数字放置在第三个数据组中分别作为该数据组中的隐私数据,从而形成三个数据组。
第一构建模块33可以用于根据隐私数据组构建第一隐私数据树。
发证方节点的第一构建模块33可以基于第一生成模块32生成的隐私数据组来构建第一隐私数据树。例如,在本申请实施例中,发证方可以基于第一生成模块32生成的多个隐私数据组中的每个数据组或者每个数据组中的每个隐私数据来生成隐私数据树的第一级叶子节点的节点数据,从而构建该第一级的节点,而后可以基于该第一级,也就是最低一级的节点来继续向上构建上一级,例如第二级、第三级等等其他级的节点的节点数据,直到获得了最上一级,即根节点的节点数据。例如,在本申请实施例中,第一构建模块33可以将第一生成模块32生成的隐私数据组中的每个隐私数据按照预定的顺序布置为分别对应于第一隐私数据树上最低一级的各叶子节点,并且从根节点到最低一级的叶子节点,每一级叶子节点中的各节点上的数据是在从根节点到最低一级的叶子节点的方向上位于等级比该级叶子节点低的节点中与其对应的两个节点的节点数据生成。
第一构建模块33可以使用默克尔树作为用户隐私数据树的形式。例如可以将生成的每个数组或每个数组中的各数据分别进行哈希计算来生成哈希值,并且将这样生成的哈希值作为该第一隐私数据树的最低一级的节点数据,例如,签发请求接收模块31接收到的用户的签发请求中包含的第一隐私数据是年龄数据时,可以将2000年之前的年份数组进行哈希计算并将其计算获得的哈希值作为隐私数据树的最低一级的第一个节点的节点数据,然后将2000年到2018年的数组中从2000年到2018年这18个年份的年份数据分别进行哈希计算并将分别获得的哈希值作为与基于2000年之前的年份数组获得的哈希值同一级的节点的第二至第19个节点的节点数据,最后可以将2018年之后的年份数组进行哈希计算获得的哈希值作为该一级的节点的第20个节点的节点数据。由此,第一构建模块33获得了用户的年龄隐私数据树的最低一级的节点,在这些节点数据的基础上,可以进一步构建第二级节点。
例如,第一生成模块32可以对于最低一级,即第一级的节点中的每两个相邻节点的节点数据进行哈希计算以将获得的哈希值作为第二级节点的节点数据。例如,在用户请求的第一隐私数据是年龄数据时,可以对已经生成的第一节点的节点数据,即2000年之前的年份数组进行哈希计算获得的哈希值,和第二节点的节点数据,即2001年年份数据进行哈希计算获得的哈希值,进行哈希计算来获得这两个节点的节点数据的哈希值,并将其作为第二级节点的第一个节点的节点数据,然后,可以对于第一级的第三个节点和第四个节点的节点数据,即,2002和2003年的年份数据进行哈希计算获得的哈希值,进行哈希计算,以将获得的哈希值作为第二级节点的第二个节点的节点数据,以此类推,最终可以基于第一级的20个节点的节点数据获得第二级的10个节点的节点数据。之后,可以以类似的方式,对于第二级的十个节点中每两个相邻的节点的节点数据进行哈希计算,以将获得的哈希值作为第三级的节点的节点数据。由此,第一构建模块33可以获得该年龄隐私数据树的根节点的节点数据。由此可以完成了隐私数据树的构建,并且根据隐私数据树的构建可以知道的是,该隐私数据树中没有记载用户的实际年龄数据,但是每个节点的节点数据都是根据用户的年龄数据组的数据生成的,因此根据每个节点可以获得用户的各个年龄的数据,换言之,根据该隐私数据树中的各个节点的位置信息,就可以推导出对应的年份数据。
此外第一构建模块33构建隐私数据树时,还可以对于用户的年龄数据组的数据进行加盐处理,以进一步保护用户的年龄隐私。例如,可以首先生成或选择一个随机种子,并给予该种子生成与年龄数据组的数据数量相同数量的盐数据。例如,年龄数据组实际上包含有2000年之前的年龄数据、2001-2018年的各年份的年份数据以及2018年之后的年份数据这20个数据,因此可以基于种子数据生成20个盐数据,并且分别使用这20个盐数据和20个年份数据生成20个加盐年份数据,并且之后可以基于这样生成的20个加盐年份数据以上述方式生成隐私数据树的第一级的20个节点以及其他级别的节点直到最终的根节点。因此,以该方式,即使知道隐私数据树中的节点的位置信息和算法也无法直接获得年龄数据,而是需要获得对应的盐数据才能够推导获得用户的年份数据,从而进一步加强了用户隐私数据的安全性。
此外,第一构建模块33可以基于第一生成模块32生成的多个数据组中的数据来使用例如哈希算法生成第一生成模块32中生成的每个数据组或每个数据组中的各数据的哈希值,并使用这样生成的哈希值作为分别与各数据对应的隐私数据树的最低一级,即第一级的各节点的节点数据。例如,签发请求接收模块31受到的用户所请求的第一隐私数据指示用户的身份信息时,第一构建模块33可以基于姓名的数据组进行哈希计算来生成对应的哈希值并将其作为对应的身份信息数据树的第一级的第一个节点的节点数据,类似地,也可以基于出生日期的数据组进行哈希计算来生成对应的哈希值并将其作为对应的身份信息数据树的第一级的第二个节点的节点数据,基于住址的数据组进行哈希计算来生成哈希值并将其作为对应的身份信息数据树的第一级的第三个节点的节点数据,基于身份证号的数据组进行哈希计算来生成对应的哈希值并将其作为对应的身份信息数据树的第一级的第四个节点的节点数据,之后可以与上述构建年龄数据树的方式类似地,基于第一级的第一个和第二节点的节点数据进行哈希计算来获得哈希值以作为第二级节点的第一个节点的节点数据,并基于第一级的第三个和第四个节点的节点数据进行哈希计算来获得哈希值以作为第二级节点的第二个节点的节点数据,并最终基于第二级节点的第一个节点和第二个节点的节点数据进行哈希计算来获得哈希值以作为身份信息数据树的根节点的节点数据。
第二生成模块34,可以用于根据隐私数据树生成用户的签发凭证数据。
例如发证方的第二生成模块34可以根据第一构建模块33生成的隐私数据树来为用户签发凭证数据,即生成签发凭证数据。例如,在本申请实施例中,签发凭证数据可以包含有签发签发凭证数据的发证方的DID标识、隐私数据树的生成信息以及发证方对签发凭证数据的证明信息。
在第一构建模块33生成了隐私数据树之后,发证方可以在步骤S204中基于这样生成的隐私数据树而不是现有技术中直接使用用户的隐私数据来为用户签发凭证数据,即为用户生成凭证数据。例如,发证方可以使用发证方自己的私钥来对如上生成的隐私数据树的根节点数据进行签名,并将生成的签名数据以及对应的隐私数据树的生成方式,例如使用的哈希算法等放入凭证数据中。在使用盐数据对隐私数据进行加盐处理的情况下,发证方还可以进一步将生成盐数据所使用的种子数据也放入到对应的凭证数据中。特别地,发证方还可以在第二生成模块34生成该凭证数据中进一步包括发证方对于其所签发的该凭证数据的证明字段。
发证方在步骤S204响应于用户的凭证签发请求而为用户生成了凭证数据之后,可以在步骤S204中将其发送给用户,并且用户可以根据验证方的验证要求来对验证方进行授权,以将发证方签发的凭证数据中内容授权给验证方来访问。例如,当验证方要求验证用户当前的年龄超过18岁时,用户可以基于发证方签发的凭证数据中的信息来进一步为验证方生成授权凭证数据。例如,用户可以基于验证方发送的对于年龄的访问请求来从发证方签发的多个凭证数据中确定对应的年龄隐私数据树,并基于所确定的年龄隐私树中当前年份所在的位置来生成年龄结果,从而将该年龄结果在年龄隐私数据树中的索引以及凭证方生成对应的年龄隐私数据树的验证路径、根节点信息、发证方的DID标识以及发证方在签发凭证数据时生成的签名等信息中的一种或多种包含在为验证方生成的授权凭证数据中,并且用户可以进一步对于该授权凭证数据使用用户的私钥进行签名。因此,验证方在接收到用户发送的该授权凭证数据时,可以根据用户的DID标识来从区块链中获取用户的DID文档,其中可以记载有用户的公钥,从而根据该用户的公钥来对用户发送的授权凭证数据中的用户签名进行验证,以确定该授权凭证数据是由用户生成的。之后,验证方可以根据凭证数据中发证方的DID标识来进一步从区块链获得发证方的DID文档,以从其提取发证方的公钥,并验证用户在授权凭证数据中包含的发证方对于例如年龄隐私数据树的根节点的签名。在签名验证通过之后,验证方可以进一步对于该授权凭证数据中包含的年龄隐私数据树的对应年龄节点的节点信息和节点数据的验证,特别是在加盐处理的情况下,验证方还可以对于该授权凭证数据中包含的盐种子数据进行验证,从而当验证通过时,可以获得用户在生成该授权凭证时根据当前年份在年龄隐私数据树中确定的年龄结果,例如,2019>18,即表示在2019年用户的年龄大于18岁,从而验证方能够确认该用户符合访问其网站或平台的年龄要求。
因此,根据本申请实施例的基于DID的凭证数据隐私保护装置,通过根据接收到的用户的凭证数据签发请求中包含的DID标识和所述第一隐私信息生成多个隐私数据组,并且多个隐私数据组包含与第一隐私信息直接关联的至少一个直接数据组以及根据第一隐私信息和直接数据组中的至少一个隐私数据生成的至少一个间接数据组;之后根据隐私数据组构建第一隐私数据树,隐私数据组中的每个隐私数据按照预定的顺序布置为分别对应于所述第一隐私数据树上最低一级的各叶子节点,并且从根节点到最低一级的叶子节点,每一级叶子节点中的各节点上的数据是在从根节点到最低一级的叶子节点的方向上位于等级比该级叶子节点低的节点中与其对应的两个节点的节点数据生成;最后根据隐私数据树生成用户的签发凭证数据,并且在签发凭证数据包含有签发该签发凭证数据的发证方的DID标识、隐私数据树的生成信息以及发证方对签发凭证数据的证明信息。因此,本申请实施例的凭证数据隐私保护方法在最终生成的凭证数据中仅包含基于用户实际隐私信息创建的隐私数据树的节点数据而没有实际记载用户的真实隐私数据,使得在签发和授权的凭证数据中不再存储有用户的原始隐私信息,同时确保了验证方通过访问凭证数据中的隐私数据树的节点数据来进行所要求的用户身份的验证,大大提高了DID体系中流转的凭证数据中隐私信息的安全性。
实施例四
以上描述了基于DID的凭证数据隐私保护装置的内部功能和结构,其可实现为一种电子设备。图4为本申请提供的电子设备实施例的结构示意图。如图4所示,该电子设备包括存储器41和处理器42。
存储器41,用于存储程序。除上述程序之外,存储器41还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器41可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器42,不仅仅局限于处理器(CPU),还可能为图形处理器(GPU)、现场可编辑门阵列(FPGA)、嵌入式神经网络处理器(NPU)或人工智能(AI)芯片等处理芯片。处理器42,与存储器41耦合,执行存储器41所存储的程序,以执行上述实施例二的基于DID的凭证数据隐私保护方法。
进一步,如图4所示,电子设备还可以包括:通信组件43、电源组件44、音频组件45、显示器46等其它组件。图4中仅示意性给出部分组件,并不意味着电子设备只包括图4所示组件。
通信组件43被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi、3G、4G或5G,或它们的组合。在一个示例性实施例中,通信组件43经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件43还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
电源组件44,为电子设备的各种组件提供电力。电源组件44可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件45被配置为输出和/或输入音频信号。例如,音频组件45包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器41或经由通信组件43发送。在一些实施例中,音频组件45还包括一个扬声器,用于输出音频信号。
显示器46包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种基于DID的凭证数据隐私保护方法,其特征在于,包括:
接收用户的凭证数据签发请求,其中,所述凭证数据签发请求包含有用户的DID标识以及所请求签发的第一隐私信息;
根据所述DID标识和所述第一隐私信息生成多个隐私数据组,其中所述多个隐私数据组包含与所述第一隐私信息直接关联的至少一个直接数据组以及根据所述第一隐私信息和所述直接数据组中的至少一个隐私数据生成的至少一个间接数据组;
根据所述隐私数据组构建第一隐私数据树,其中,所述隐私数据组中的每个隐私数据按照预定的顺序布置为分别对应于所述第一隐私数据树上最低一级的各叶子节点,并且从根节点到所述最低一级的叶子节点,每一级叶子节点中的各节点上的数据是在从根节点到最低一级的叶子节点的方向上位于等级比该级叶子节点低的节点中与其对应的两个节点的节点数据生成;
根据所述第一隐私数据树生成用户的签发凭证数据,其中所述签发凭证数据包含有签发所述签发凭证数据的发证方的DID标识、所述隐私数据树的生成信息以及所述发证方对所述签发凭证数据的证明信息。
2.根据权利要求1所述的基于DID的凭证数据隐私保护方法,其特征在于,所述方法进一步包括:
根据所述用户的DID标识获取用户的第二隐私信息,其中所述第二隐私信息包含有分别表示用户的姓名、出生日期、住址以及身份标识的第二子隐私信息中的一种或多种;
根据所述第二隐私信息构建第二隐私数据树,其中,所述第二隐私数据树包括第二根节点每个第二子隐私信息分别布置为对应于所述第二隐私数据树上最低一级的各叶子节点,并且每一级叶子节点中的各节点上的数据是在从根节点到最低一级的叶子节点的方向上位于等级比该级叶子节点低的节点中与其对应的两个节点的节点数据生成的。
3.根据权利要求2所述的基于DID的凭证数据隐私保护方法,其特征在于,所述根据所述隐私数据组构建第一隐私数据树进一步包括:
基于第一种子数据和所述隐私数据组中的每个隐私数据,使用第一算法生成所述第一隐私数据树上的最低一级的各叶子节点;
基于每一级叶子节点中彼此相邻的两个或更多个叶子节点的节点数据,使用所述第一算法生成该一级叶子节点的上一级的对应叶子节点的节点数据,并且
所述签发凭证数据进一步包含所述第一种子数据、所述第一隐私数据树的根节点信息和所述第一算法的算法信息。
4.根据权利要求3所述的基于DID的凭证数据隐私保护方法,其特征在于,所述根据所述第二隐私信息构建第二隐私数据树进一步包括:
基于第二种子数据和所述第二子隐私数据,使用第二算法生成所述第二隐私数据树上的最低一级的各叶子节点;
基于每一级叶子节点中彼此相邻的两个或更多个叶子节点的节点数据,使用所述第一算法生成该一级叶子节点的上一级的对应叶子节点的节点数据,并且
所述签发凭证数据进一步包含所述第二种子数据、所述第二隐私数据树的根节点信息和所述第二算法的算法信息。
5.根据权利要求3所述的基于DID的凭证数据隐私保护方法,其特征在于,所述方法进一步包括:
使用所述发证方的私钥对所述第一隐私数据树的根节点信息进行加密处理,以生成加密根节点信息作为所述签发凭证数据中的所述第一隐私数据树的根节点信息。
6.根据权利要求4所述的基于DID的凭证数据隐私保护方法,其特征在于,所述方法进一步包括:
使用所述发证方的私钥对所述第二隐私数据树的根节点信息进行加密处理,以生成加密根节点信息作为所述签发凭证数据中的所述第二隐私数据树的根节点信息。
7.一种基于DID的凭证数据隐私保护方法,其特征在于,所述方法包括:
接收验证方的访问请求;
根据验证方的访问请求,从多个签发凭证数据中确定与所述访问请求对应的签发凭证数据,其中,所述多个签发凭证数据是根据权利要求1至4中的任一项所述的基于DID的凭证数据隐私保护方法生成的;
根据所确定的签发凭证数据对应的所述第一隐私数据树生成授权凭证数据,其中,所述授权凭证数据包含有第一隐私数据树中与所述访问请求对应的叶子节点的位置信息、所述第一隐私数据树的根节点的节点信息以及接收所述访问请求的用户对所述签发凭证数据的证明信息;
将所述授权凭证数据发送给所述验证方。
8.一种基于DID的凭证数据隐私保护装置,其特征在于,包括:
签发请求接收模块,用于接收用户的凭证数据签发请求,其中,所述凭证数据签发请求包含有用户的DID标识以及所请求签发的第一隐私信息;
第一生成模块,用于根据所述DID标识和所述第一隐私信息生成多个隐私数据组,其中所述多个隐私数据组包含与所述第一隐私信息直接关联的至少一个直接数据组以及根据所述第一隐私信息和所述直接数据组中的至少一个隐私数据生成的至少一个间接数据组;
第一构建模块,用于根据所述隐私数据组构建第一隐私数据树,其中,所述隐私数据组中的每个隐私数据按照预定的顺序布置为分别对应于所述第一隐私数据树上最低一级的各叶子节点,并且从根节点到所述最低一级的叶子节点,每一级叶子节点中的各节点上的数据是在从根节点到最低一级的叶子节点的方向上位于等级比该级叶子节点低的节点中与其对应的两个节点的节点数据生成;
第二生成模块,用于根据所述第一隐私数据树生成用户的签发凭证数据,其中所述签发凭证数据包含有签发所述签发凭证数据的发证方的DID标识、所述隐私数据树的生成信息以及所述发证方对所述签发凭证数据的证明信息。
9.一种电子设备,其特征在于,包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以执行如权利要求1-7中任一项所述的基于DID的凭证数据隐私保护方法。
10.一种计算机可读存储介质,其上存储有可被处理器执行的计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一项所述的基于DID的凭证数据隐私保护方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310960815.3A CN117131536A (zh) | 2023-08-01 | 2023-08-01 | 基于did的凭证数据隐私保护方法和装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310960815.3A CN117131536A (zh) | 2023-08-01 | 2023-08-01 | 基于did的凭证数据隐私保护方法和装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117131536A true CN117131536A (zh) | 2023-11-28 |
Family
ID=88861900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310960815.3A Pending CN117131536A (zh) | 2023-08-01 | 2023-08-01 | 基于did的凭证数据隐私保护方法和装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117131536A (zh) |
-
2023
- 2023-08-01 CN CN202310960815.3A patent/CN117131536A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11297064B2 (en) | Blockchain authentication via hard/soft token verification | |
US11018869B2 (en) | Blockchain-based digital identity management (DIM) system | |
CN108023894B (zh) | 基于区块链的签证信息系统及其处理方法 | |
US20230086806A1 (en) | Systems and methods for providing digital identity records to verify identities of users | |
US20190342096A1 (en) | Online identity and credential verification systems and methods protecting user data | |
US10348699B2 (en) | Identity binding systems and methods in a personal data store in an online trust system | |
JP6054457B2 (ja) | 制御された情報開示によるプライベート解析 | |
AU2017416533B2 (en) | Trustworthy data exchange using distributed databases | |
US20170093920A1 (en) | User authentication | |
US20060236369A1 (en) | Method, apparatus and system for enforcing access control policies using contextual attributes | |
CN111241555A (zh) | 模拟用户登录的访问方法、装置、计算机设备和存储介质 | |
KR20060032888A (ko) | 인터넷 통한 신원정보 관리 장치 및 이를 이용한 서비스제공방법 | |
KR101897085B1 (ko) | 실시간 패스워드를 생성하는 장치 및 방법 및 저장 매체 | |
CN106533681A (zh) | 一种支持部分出示的属性证明方法与系统 | |
CN115834051A (zh) | 基于did凭证数据的安全保存方法和装置、授权方法和装置、电子设备及存储介质 | |
CN113779637B (zh) | 一种属性数据处理方法、装置、设备以及介质 | |
CN115865445A (zh) | 基于did凭证数据的安全流转方法、did凭证数据系统及存储介质 | |
CN105743883B (zh) | 一种网络应用的身份属性获取方法及装置 | |
CN117131536A (zh) | 基于did的凭证数据隐私保护方法和装置、电子设备及存储介质 | |
JP7222436B2 (ja) | 保証制御方法、情報処理装置および保証制御プログラム | |
Hastings et al. | Considerations for identity management in public safety mobile networks | |
Agbede | Strong Electronic Identification: Survey & Scenario Planning | |
KR101307966B1 (ko) | 개인 정보 관리 시스템 | |
CN111355710B (zh) | 网络服务的数据请求方法及装置 | |
CN110851858B (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 |