一种移动平台分布式数字身份认证方法、装置及介质

未命名 10-19 阅读:146 评论:0


1.本发明涉及数字认证技术领域,尤其涉及一种移动平台分布式数字身份认证方法、装置及介质。


背景技术:

2.随着智能手机和互联网的普及,个人的身份信息开始走向数字化和信息化,用户通过传统的账号密码登录到各个平台或软件上,参与到不同的活动中。但是在传统的身份认证方式中,互联网服务提供者需要不同程度的收集用户数据,这其中一部分服务商或出于主观恶意或受自身能力限制,造成了用户数据与用户隐私的泄漏。另一个方面,传统身份认证效率低下,维度单一。各个服务提供商或认证机构间互为数据孤岛,难以打通认证的壁垒。这导致了用户需要同一个信息反复在不同的地方重复认证,用户很难重用已有的认证信息。同时,用户的认证信息都是零散碎片化的,无法完整地反映用户的身份特质。信息的碎片化也导致了个人无法有效地管理自己的身份信息。近年来分布式数字身份的出现,有效的解决了上述问题。分布式数字身份通过可信的第三方为用户作背书,在保证数字身份信息的可信的同时,提升了身份认证的效率。而且用户可以将身份信息存储在本地,能够直接管理自己的隐私数据,避免了自身隐私泄露的问题。另一方面,分布式数字身份利用区块链技术存储关键数据,保障数据的不可篡改和安全。
3.随着智能手机的普及,移动设备已经成为接入互联网最重要的设备类型,用户通过一台移动设备就可以参与各种各样的活动。但是现有的分布式数字身份认证技术较少考虑这一点,要么一个系统只能完成单一场景的身份认证功能,泛用性不足;要么延续了传统数字身份认证的流程,将用户视作一个笼统的概念,忽视了移动平台对于身份认证的海量需求和自身特性。另外,智能手机受限于自身的算力、功耗不足,难以提供完善的安全保护,尤其是在安卓系统上,开放的接口容易成为隐私保护的漏洞,加大了隐私保护的难度,这使得本地的恶意软件可以窃取完整的vc数据从而读取到用户的隐私信息。
4.还有,在身份认证的过程中,用户会向验证方发送自己的数字身份信息,现有的方案大多是用户向可信的验证方直接共享自己的可验证凭证(vc)数据。但是vc数据存储了用户完整的用户信息,包括了一部分隐私内容。在多数场景下,提供完整的vc数据是多余的,甚至会泄露一些不必要的隐私信息。在分布式数字身份认证体系的整个流程中采用了大量国际相关的加密算法,例如区块链系统中采用的rsa、ecc算法,在可验证声明(vp)的生成过程中采用的sha256算法,这些国际密码算法在安全性和性能上都不如国家密码局推出的国密算法,容易造成用户信息泄露的问题。


技术实现要素:

5.为至少一定程度上解决现有技术中存在的技术问题之一,本发明的目的在于提供一种移动平台分布式数字身份认证方法、装置及介质。
6.本发明所采用的技术方案是:
7.一种移动平台分布式数字身份认证方法,包括初始化阶段、身份信息生成阶段以及身份信息验证阶段;
8.在初始化阶段中,移动客户端、发证方和验证方均按照预设的格式生成did文档,从而接入到区块链系统中;发证方向区块链系统提供它的可信证明,并注册发证资质;其中,生成的did文档均保存到区块链系统中,以确保did文档的安全和不可篡改;
9.在身份信息生成阶段中,用户通过移动客户端请求数字身份信息并生成凭证,该过程包括申请可验证凭证和选择性披露两个步骤;
10.在身份信息验证阶段中,用户通过移动客户端向验证方提供自己的数字凭证;验证方从可验证声明或可验证凭证中读取发证方标识,并根据该标识向区块链系统进行验证,请求获取对应的公钥;如果该标识记录正确,区块链系统会提供发证方对应的公钥;验证方接收到公钥后,利用公钥对用户提交的数字凭证进行签名验证,若验证通过,判定证书可信,为移动客户端提供服务。
11.进一步地,所述did文档用于记录用户可公开的信息,包括:did标识、版本号、创建时间、更新时间、公钥详细信息、附加信息、服务列表、文档证明,这些信息都以json字符串的形式存储在区块链系统中,并向所有用户公开。
12.进一步地,所述申请可验证凭证步骤,包括:
13.用户根据需要服务类型的不同,向不同的发证方申请相应的凭证;
14.区块链系统接收到请求之后,查询相关组织信息,如果该组织不存在,或者是请求有误,则拒绝本次请求,让用户重新发起正确的请求;如果查询到该组织已经注册自己的发证资质了,则将请求转发给相应的发证方;
15.发证方接收到请求之后,将包含用户身份信息的数据打包,并对数据进行数字签名,将这部分数据以及对应的签名打包生成可验证凭证,再发送给用户。
16.进一步地,所述选择性披露步骤,包括:
17.用户接收到可验证凭证后,决定是否需要选择性披露;如果需要选择性披露,则选取可验证凭证中的部分身份信息,并利用默克尔树生成信息的签名内容,形成可验证声明。
18.进一步地,所述利用默克尔树生成信息的签名内容,形成可验证声明,包括:
19.获取用户选择披露的属性,根据用户提供的参数生成对应属性的默尔克路径;
20.当验证方收到用户出示的可验证声明时,对其中的属性进行验证,以确保其完整性和未被篡改:验证方按照验证可验证凭证的流程,首先检查文档中所有的摘要签名是否被篡改,其次验证每个出示属性的哈希值以及从该哈希值所在的叶子节点到根节点的路径上所有的哈希值是否与根哈希值相匹配;当所有的属性默克尔路径都验证通过时,可验证声明验证结束,验证方提供响应服务。
21.进一步地,所述移动平台分布式数字身份认证方法还包括对区块链和身份信息中的加密和解密流程进行改造的步骤:
22.在选择性披露的过程中,改造可验证声明生成过程中的加密流程,利用国密sm3算法来完成数据摘要,以提高基于属性的默克尔树的安全性。
23.进一步地,所述移动平台分布式数字身份认证方法通过引入安卓虚拟化框架,为移动客户端构造可信的执行环境,以保障在移动客户端的可验证凭证数据不被窃取,以及可验证声明数据的生成过程不被恶意攻击。
24.进一步地,所述安卓虚拟化框架,包括:
25.在移动客户端上运行的程序包含两个部分:在主机安卓操作系统上运行的主机部分,以及在受保护的虚拟机内的microdroid上运行的应用部分;
26.其中,在安卓端上运行的应用部分包括两个部分,第一部分是用户前端程序,该程序用来实现用户交互的图形化界面,使得用户通过图形化界面与系统进行交互;第二部分是作为用户授权功能的接口,用户发起创建did、申请组织凭证、生成可验证声明的请求;
27.在虚拟机上运行的应用部分负责完成安全任务:程序首先接收用户授权接口发送的请求,并对用户输入的数据和请求进行验证,验证通过后完成相应的任务;这部分程序的功能包括实现可验证凭证数据的安全读写、可验证声明数据的生成,以及在可验证声明数据生成过程中的数据摘要、数据加密。
28.本发明所采用的另一技术方案是:
29.一种移动平台分布式数字身份认证装置,包括:
30.至少一个处理器;
31.至少一个存储器,用于存储至少一个程序;
32.当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如上所述方法。
33.本发明所采用的另一技术方案是:
34.一种计算机可读存储介质,其中存储有处理器可执行的程序,所述处理器可执行的程序在由处理器执行时用于执行如上所述方法。
35.本发明的有益效果具体如下:
36.(1)本发明考虑了数字身份信息保存在移动客户端的场景,提出了一套针对移动平台的分布式数字身份认证流程,用户可以通过向不同的发证方申请不同的数字身份凭证,以及一个身份凭证多处复用的机制,实现一个数字身份认证系统通用多个场景的效果。用户的数字身份信息存储在自己的移动设备中,降低了信息的泄露风险。
37.(2)本发明考虑了安卓手机下本地客户端的安全性问题,引入了安卓虚拟化框架(avf),通过将客户端软件布置在安全的avf环境中,将软件使用环境与外界隔离开来,只对外开放固定的端口,避免了恶意软件攻击和窃取用户隐私,提升了本地客户端的安全性。
38.(3)本发明考虑了身份信息在不同场景下需求不同的问题,采用了基于属性的选择性披露方法,用户可以根据使用场景的不同,选择性地提供部分身份信息。选择性披露方法避免了互联网提供商窃取与服务无关的隐私信息,降低了用户隐私泄露的风险。
39.(4)本发明考虑了当前分布式数字身份体系中,密码学技术自主化程度较低的问题,对区块链和身份信息中的加密和解密流程进行改造,采用国密算法替换原有的国际加密算法和摘要算法,减少对国外相关技术的依赖程度,提升整体的安全性。
附图说明
40.为了更清楚地说明本发明实施例或者现有技术中的技术方案,下面对本发明实施例或者现有技术中的相关技术方案附图作以下介绍,应当理解的是,下面介绍中的附图仅仅为了方便清晰表述本发明的技术方案中的部分实施例,对于本领域的技术人员而言,在无需付出创造性劳动的前提下,还可以根据这些附图获取到其他附图。
41.图1是本发明实施例中基于区块链的移动平台分布式数字身份认证方法的流程图;
42.图2是本发明实施例中移动客户端整体架构示意图;
43.图3是本发明实施例中pvm安全编译实现原理图;
44.图4是本发明实施例中默克尔树示意图;
45.图5是本发明实施例中csp的sw实现方式功能函数图;
46.图6是本发明实施例中ca涉及国密改造的功能图;
47.图7是区块链数据结构图。
具体实施方式
48.下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。对于以下实施例中的步骤编号,其仅为了便于阐述说明而设置,对步骤之间的顺序不做任何限定,实施例中的各步骤的执行顺序均可根据本领域技术人员的理解来进行适应性调整。
49.在本发明的描述中,需要理解的是,涉及到方位描述,例如上、下、前、后、左、右等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
50.在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
51.此外,在本发明的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
52.本发明的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
53.术语解释:
54.区块链(blockchain):区块链是一个分布式账本,是一种通过去中心化、去信任的方式集体维护一个可靠数据库的技术方案。从数据的角度来看,区块链是一种几乎不可能被更改的分布式数据库。这里的“分布式”不仅体现为数据的分布式存储,也体现为数据的分布式记录;从技术的角度来看区块链并不是一种单一的技术,而是多种技术整合的结果。如图7是区块链的数据结构示意图,区块链在开始记录的时候会有第一个区块产生,称为创世区块,之后的区块产生都会通过“前一个区块的散列(hash)”与前一个区块链连接,每一个区块都可以包含一定量的交易内容。
55.智能合约(smart contract):一个智能合约是一套以数字形式定义的承诺(promises),包括合约参与方可以在上面执行这些承诺的协议。在区块链中,智能合约只是
一些运行在电脑(或其他节点)的区块链网络的特定代码,一旦节点执行了这个代码,合约就会更新交易信息。
56.物联网(internet of things):互联网基础上的延伸和扩展的网络,利用各种信息传感设备和互联网实现物物相连的网络。即通过利用射频识别、感应器、定位系统等信息传感设备,按照约定的协议把任何物品与互联网相连并进行信息交换和通信,实现对物品的识别、定位、监控和管理。典型的物联网架构由设备,传感器,执行器,物联网集线器,物联网网关和云服务提供商组成。物联网设备是具有感知和收集可在连接网络上传输的数据以进行存储或进一步处理的能力的设备。
57.国密算法(shangyong mima):国密算法是由我国自主创新研发的一套数据加密处理算法,分为sm1、sm2、sm3以及sm4,适合应用于物联网等领域,完成身份认证和数据加解密过程。随着相关产业上升到国家安全高度,在相关产业应用国产加密算法的需求越来越迫切。应用国密算法能很好地保证相关安全性,并且摆脱对国外技术的过度依赖,促进形成我国的一套相关体系结构框架,将国密算法应用于区块链能有效帮助我国形成自主可控安全的区块链体系结构。
58.分布式数字身份(decentralized identifiers):分布式数字身份包括:分布式数字身份标识符和数字身份凭证(声明集合)两部分。分布式数字身份标识符是由字符串组成的标识符,用来代表一个数字身份,不需要中央注册机构就可以实现全球唯一性。相对于传统的基于公钥基础设施(pki)的身份体系,did数字身份系统具有保证数据真实可信、保护用户隐私安全、可移植性强等特点。
59.安卓虚拟化框架(android virtualization framework):简称为avf,是安卓系统中的一种虚拟化技术,它允许在同一台物理设备上同时运行多个独立的安卓实例。在安卓13中,avf被进一步改进用于提供安全服务,它能提供安全且私密的执行环境来执行代码,非常适合以安全为导向的用例,这些用例需要比android应用沙盒提供的安全系数更高、甚至经过正式验证的隔离保证。
60.针对于目前分布式数字身份认证体系仍缺乏一套针对移动平台的通用认证流程的问题,本发明提出一整套基于区块链的移动平台分布式数字身份认证方案,在该方案中,用户可以通过申请不同可信发证方的凭证,与多种不同的互联网服务提供商进行交互,实现“一个身份,多个场景通用”的便捷场景。而且针对智能手机的安全防护能力不足的问题,本发明引入了安卓13推出的基于安全的avf技术,将涉及用户隐私的功能与普通应用隔离开来,确保用户隐私数据不被篡改和窃取。另一方面,为了降低身份信息在多个场景使用时的数据泄露风险,本发明采用基于属性的选择性披露,使得用户可以针对不同的场景,选择性地提供部分身份信息,并且这部分信息也能够经过验证。最后,针对当前分布式数字身份认证的密码技术自主化程度不足的问题,本发明对方案中设计加密的内容均进行了国密改造,利用国密算法替换了国际密码算法,将包括数字身份生成以及区块链的交易过程中涉及加解密的流程,均采用国密算法进行计算,提高了方案整体的安全性。
61.以下结合附图及具体实施例对本技术的基于区块链的移动平台分布式数字身份认证方法进行详细解释说明。
62.(一)分布式数字身份认证流程
63.本技术实现的基于区块链的移动平台分布式数字身份认证流程分为三个阶段,分
别为初始化阶段,身份信息生成阶段,身份信息验证阶段。所涉及的角色共有4个,分别为移动客户端,区块链系统,发证方,验证方,这些角色与流程中对应的概念关系表如表1所示:
64.表1角色对应
[0065][0066]
其中移动客户端也就是代表用户的角色,在本方案中,用户可以向不同的互联网服务提供商提供自己的身份信息,从而完成不同的功能,如购物、娱乐、获取咨询等功能。区块链系统作为远程服务器为移动客户端和验证方提供了交互的功能,并且利用区块链记录关键数据,保证关键信息的不可篡改。发证方则是作为可信的背书方,利用自己的信用为所有用户(包括普通用户和互联网服务提供商)提供背书,向他们颁发可验证凭证。验证方作为互联网服务提供商,可以验证普通用户提交的可验证声明从而确认用户身份,为他们提供服务。在整个过程中,用户的身份信息均采用了分布式数字身份进行验证,有效的保障了用户信息的隐私和安全性,并且提升了身份认证的有效性。在初步了解所分阶段的具体内容与参与角色的职能之后,接下来进一步介绍如图1所示的分布式数字身份认证流程。
[0067]
阶段1:初始化阶段。在初始化阶段中,移动客户端、发证方和验证方均会按照系统规定的格式生成did文档,从而接入到系统中。除此之外,发证方还需要向系统提供它的可信证明,并注册发证资质。在初始化的过程中,生成的did文档均会保存到区块链系统中,确保did文档的安全和不可篡改。
[0068]
每一个参与本系统的用户,包括普通用户和互联网服务提供商,都拥有一个以上的did标识和唯一对应的did文档,did文档中记录用户可公开的信息,包括:did标识、版本号、创建时间、更新时间、公钥详细信息、附加信息、服务列表、文档证明等,这些信息都以json字符串的形式存储在区块链中,向所有用户公开。did文档的属性如表2所示。
[0069]
表2did文档类属性
[0070]
字段类型是否允许为空说明idstring否did标识versioninteger否版本号createdstring否创建时间updatedstring否更新时间publickeylist否公钥列表authenticationstring否认证公钥recoverystring否恢复公钥servicelist是服务列表
proofobject否文档证明typestring否文档类型
[0071]
用户创建did时,需要提供相关的参数,这部分参数会成为did的一部分内容。例如该用户需要填写自己是普通用户还是互联网服务提供商、是否添加自定义信息等。这个工作可以在客户端完成,填写完成后则会发送至区块链系统中,统一生成did文档并存储在区块链上。用户无需自主管理did文档,只需要保存did标识,在需要使用did文档时通过区块链查询接口查询即可。
[0072]
阶段2:生成阶段。生成阶段主要是用户请求数字身份信息并生成凭证的过程。主要分为:申请可验证凭证和选择性披露两个步骤。
[0073]
1)步骤1:申请可验证凭证(vc)。用户根据需要服务类型的不同,可以向不同的发证方申请相应的凭证。区块链服务器接收到请求之后,会查询相关组织信息,如果该组织不存在,或者是请求有误,则会拒绝本次请求,让用户重新发起正确的请求;如果查询到该组织已经注册自己的发证资质了,则将请求转发给相应的发证方。发证方接收到请求之后,将包含用户身份信息的数据打包,并对数据进行数字签名,将这部分数据以及对应的签名打包生成vc,再发送给用户。
[0074]
可验证凭证(verifiable credentials,简称vc)是数字身份验证的一种机制,通过发证方自身的信用,可以证明个人、组织或设备的某些属性或声明。每个vc都由一个did颁发,并包含证书的元数据和数字签名,以确保数据的完整性和真实性。vc的持有人可以选择与他们信任的实体共享这些凭证,以验证他们的身份或授权某些行为。vc中记录用户相关属性,包括凭证发证人、可信属性实体、证明人、凭证编号等,vc成员属性如表3所示:
[0075]
表3可验证凭证类属性
[0076]
字段类型是否允许为空说明idstring否vc标识typestring否凭证格式issuerstring否发证方issuancedatestring否凭证颁发时间expirationdatestring否凭证过期时间credentialsubjectobject否可信属性proofobject否文档证明
[0077]
2)步骤2:选择性披露。用户接收到可验证凭证(vc)后,可以决定是否需要选择性披露。如果需要的话,则选取vc中的部分身份信息,并利用默克尔树生成信息的签名内容,形成可验证声明(vp)。关于选择性披露的具体流程以及实现原理,在本实施例的第(三)部分详细介绍。
[0078]
阶段3:验证阶段。在验证阶段中,用户向验证方提供自己的数字凭证。验证方从vp(或vc)中读取发证方标识,并根据该标识向区块链系统进行验证,请求获取对应的公钥。如果该标识记录正确,区块链系统会提供发证方对应的公钥。验证方接收到公钥之后,就可以利用公钥对用户提交的凭证进行签名验证,验证通过则说明证书可信,可以为其提供服务。
[0079]
(二)移动端可信环境实现
[0080]
1.移动端的整体架构
[0081]
为了解决现有分布式数字身份认证方案中,客户端的安全防护能力不足的问题,本发明引入了安全的安卓虚拟化框架技术(avf),为移动客户端构造可信的执行环境,保障在移动客户端的vc数据不被窃取,以及vp数据的生成过程不被恶意攻击。系统的架构如图2所示。
[0082]
在移动客户端上运行的程序包含两个部分:在主机安卓操作系统上运行的主机部分,以及在pvm(受保护的虚拟机)内的microdroid上运行的应用部分。
[0083]
在安卓端上运行的应用部分包括两个部分,第一个是用户前端程序,该程序用来实现用户交互的图形化界面,使得用户可以通过图形化界面与系统进行交互。第二个则是作为用户授权功能的接口,用户可以通过图形化界面发起创建did、申请组织凭证、生成可验证声明的请求,值得注意的是,在安卓端运行的程序只是发起请求的接口,具体的实现过程是由pvm内的程序完成。总的来说,安卓端的程序属于非机密的逻辑业务,只负责发起请求,并向用户展示最终的结果。
[0084]
在pvm上运行的应用部分负责完成安全任务。程序首先接收用户授权接口发送的请求,并对用户输入的数据和请求进行验证,验证通过后完成相应的任务。这部分程序的功能包括实现vc数据的安全读写、vp数据的生成,以及在vp数据生成过程中的数据摘要、数据加密等。
[0085]
2.主机应用和pvm的通信实现
[0086]
上述我们介绍了移动端的整体架构,我们将程序进行了拆分隔离,在安卓端运行的程序我们称之为主机应用,主机应用的程序都属于非机密业务逻辑,这部分程序只负责数据的展示,功能的发起。而在pvm中运行的则是核心的机密逻辑,包括一系列和隐私相关的vc、vp内容的生成和加密。
[0087]
为了启动应用的pvm部分并与其通信,主机应用会创建一个pvm,并在pvm内的库中运行原生共享库。该库实现binder服务,应用的主机部分使用该服务与应用在pvm内的部分进行通信。
[0088]
实现主机应用和pvm程序通信的流程如下:
[0089]
1)设置配置文件:我们需要在vm_config.json文件中声明包含针对pvm的操作系统和共享库的条目,包括了运行pvm内的操作系统microdroid以及启动器microdroid_launcher。
[0090]
2)实现binder服务:我们需要在共享库中实现binder服务,在我们自定义的binder类中实现对所需内容的监听,包括对用户发起创建did请求、发起生成vp请求等一系列内容的监听。例如当用户点击创建did程序时,binder能够自动获取本次事件,并将该请求发送到虚拟机中,完成通信的任务。
[0091]
3)创建应用代码:这部分主要是用于实现主机应用的功能,包括了准备配置文件、前端图形化界面实现、向虚拟机加载(或创建)句柄以及运行虚拟机的代码。
[0092]
4)与应用的虚拟机部分通信:我们需要注册对应的回调程序,以便binder服务在虚拟机中时收到通知。回调的作用是当虚拟机内的程序完成时,例如当vp数据生成时,虚拟机可以连接到binder服务器,然后使用自定义aidl接口与服务器通信。
[0093]
3.pvm安全编译的实现
[0094]
pvm运行的流程如下图3所示,主线程更新之后,运行在pvm的程序会先于普通程序
运行,这保证了普通程序无法提前运行从而发动对pvm程序的攻击,下面我们将以用户生成vp为例,介绍如何利用pvm机制保障客户端的信息安全。
[0095]
1)输入管理:当我们在pvm上运行生成vp相关的程序时,需要通过pvm自带的“启动时验证”,pvm规定了编译服务仅运行经过验证的代码。因此,代码可以决定仅接受满足特定条件的输入。程序仅接受许可名单中指定了其名称和fs-verity摘要的输入文件。为了完成vp生成的功能,我们会在运行前指定输入的数据为用户的vc数据,以及用户选择的部分属性列表。
[0096]
而且由于虚拟机中的任何公开api都是攻击面,系统会假定所有输入文件和参数都来自不受信任的客户端,且在处理之前必须经过验证和审查。在使用fs-verity算法之前,必须先验证输入文件的内容。为使输入的vc数据可在虚拟机中使用,vc数据的根哈希必须在构成虚拟机dice配置文件的容器(apk)中提供。有了受信任的根哈希,攻击者就无法在不会被检测到的情况下篡改输入文件。
[0097]
2)输出管理:同样的输出数据的完整性也是安全防护的重点,pvm会在虚拟机中维护输出文件的完整性。即使输出文件存储在android上,其生成期间的完整性也会使用相同的fs-verity树格式进行维护,但可以进行动态更新。最终输出文件可以使用根哈希进行标识,此文件将在虚拟机中被隔离。虚拟机中的服务通过签名来保护输出文件。
[0098]
3)密钥管理:虚拟机的密钥是通过虚拟机的dice配置文件生成的,该配置文件由装载到虚拟机的apex和apk以及其他虚拟机参数(例如可调试性)定义。为了确定公钥并非来自未知虚拟机,android会启动虚拟机以确定密钥是否正确。每次apex更新后,虚拟机都会在前期启动时启动。
[0099]
4)编译管理:pvm保证了如实编译经过验证的vc数据并单独生成vp;其它不受android信任的客户端无法以任何其他方式更改最终的vp数据,除非使整个vp生成的编译过程失败(此时系统会回退到启动时编译)。只有当整个编译期间没有错误时,虚拟机中的编译服务才会生成签名。系统可以从虚拟机中检索公钥以进行签名验证。
[0100]
(三)属性选择性披露
[0101]
在分布式数字身份认证体系中,用户可以向验证方提供完整的vc凭证来验证自己的身份,但是完整的vc凭证通常包括用户在该领域的所有属性,例如一个完整的用户信息可能包括了个人的姓名、身份证号、家庭住址、家庭关系、联系方式、银行卡号甚至可能包括了个人的生物信息,如指纹信息、脸部特征信息等,这部分信息作为涉及隐私的内容,没有必要在所有场景都向验证方提供。例如一个购物过程、软件登录过程,往往我们只需要提供一部分信息即可完成相应的功能。
[0102]
出于隐私保护的需求,本系统针对可验证凭证中的属性选择性披露,实现基于默克尔树方案的可验证声明(verifiable presentation,简称vp)。用户可根据实际需求自主决定是否基于所拥有的vc凭证进一步生成vp。与vc相比,vp在每个验证属性中增加了数据索引、属性名以及对应的默克尔路径,验证属性格式如表4所示:
[0103]
表4可验证表达类属性
[0104]
字段类型是否允许为空说明dataindexinteger否属性索引attributestring否属性值
merklepathlist否默尔克路径
[0105]
默克尔树(merkle tree)在区块链应用中用于验证交易的完整性和一致性,基于此特性,在身份认证中默克尔树可以用于验证用户vc文档中原始属性值是否遭受篡改。基于用户属性生成的默克尔树如图4所示,用户每个属性都是一个叶子节点,通过哈希函数计算出其哈希值,然后与相邻的属性的哈希值一起进行哈希计算,直到最终计算出一个根哈希值。这个根哈希值就是该默克尔树的根节点,也是vp文档中的默克尔根。
[0106]
如果用户拥有的属性总数是奇数个,例如用户拥有姓名、年龄和手机号这三个属性,系统将会自动复制最后一个属性以确保属性总数为偶数,以便生成默尔克树。
[0107]
在获取了属性的默克尔树之后,需要继续生成每个属性叶子节点的默克尔路径。默克尔路径是指从叶子节点到根节点路径上的哈希值序列,用于验证特定数据块是否属于默克尔树中。通过验证数据块和默克尔树中的哈希值序列,可以有效地检查数据是否被篡改或损坏。本发明使用sm3国密算法作为哈希运算,输出为一个固定长度的摘要值(256位)。
[0108]
同时,针对单向哈希易于被暴力破解方法进行攻击,算法采用了加盐增加了攻击者对算法的破解难度。假设某用户的民族属性为汉族,即使该属性进行哈希,作者也能够通过穷举所有的民族进行哈希来获取真实属性。对此,算法采用用户did标识的后六位作为随机盐与原属性连接,然后再使用sm3算法进行哈希运算,最终得到该属性的哈希值。通过加盐方法,能有效避免字典攻击、暴力破解、彩虹表等攻击方法,使得用户的隐私更加安全可控。
[0109]
从图4可以看出,默克尔树是一棵完全二叉树,根据完全二叉树的性质,默克尔树中的所有节点总数等于两倍叶子节点数减一。在发证方给用户颁发可验证凭证时,系统会根据用户属性调用算法1生成本次可验证凭证的默克尔树,并记录下默克尔树的根哈希值。为了保证数据完整性和一致性,发证方会利用私钥对默尔克根进行摘要签名,防止默克尔根被恶意篡改。
[0110]
生成vp时,用户需自主选择披露的属性,系统根据用户提供的参数生成对应属性的默尔克路径。当验证方收到用户出示的vp时,需要对其中的属性进行验证,以确保其完整性和未被篡改。验证方需要按照验证vc的流程,首先检查文档中所有的摘要签名是否被篡改,其次验证每个出示属性的哈希值以及从该哈希值所在的叶子节点到根节点的路径上所有的哈希值是否与根哈希值相匹配。当所有的属性默克尔路径都验证通过时,vp验证结束,验证方可提供响应服务。
[0111]
(四)国密改造
[0112]
针对现有分布式数字身份认证体系中存在的密码学自主不足的问题,我们对整个方案进行了国密改造,利用国密算法替换原本的国际密码算法。在选择性披露的过程中,我们改造了vp生成过程中的加密流程,利用国密sm3算法对完成数据摘要,提高了基于属性的默克尔树的安全性。除此之外,在整个分布式数字身份认证的流程中,还存在着非常多使用国际密码算法的场景。我们总结了现有方案中使用国际密码的场景,如表5所示。从表中可以看到在区块链中也有非常多涉及加解密的流程,为了提升整个流程的安全性,我们对区块链也进行国密改造。
[0113]
表5涉及加密的场景以及使用的算法
[0114][0115]
按照结构功能划分,我们将区块链的改造分成了两个部分,一是构建区块链主链中的国密模块,二是对构建证书颁发机构的国密模块。
[0116]
1.主链中的国密模块
[0117]
在主链部分中,需要构建密码服务提供商模块;增加x.509与tls的国密支持;以及在底层的区块交易、节点设置、数据传输过程中适配对应的国密算法;其中,密码服务提供商模块是重中之重。为了增加国密函数的可拓展性,将设计的国密sm2,sm3,sm4算法单独列举出来,并增加x.509与tls扩展包,对外提供统一的调用接口。区块链主链只需要调用加密包提供的接口,而不需要关心加密包中的加密过程。并且在未来扩展时只需要在加密包中修改对应的算法库,就可以完成不同的算法加密。
[0118]
1)密码服务提供商中的国密模块
[0119]
密码服务提供商(cryptographic service provider)以下简称csp,是整个链码中的密码服务提供商,它提供了sw软实现与pkcs11硬实现两种方法,由于硬件实现的成本过高,基于软件算法的实现是更好的选择。
[0120]
sw是国际标准加密的软实现插件,包含ecdsa算法、rsa算法、aes算法和sha哈希摘要算法。依据功能对sw中提供的函数进行分类,分类结果如图5所示。
[0121]
在各个功能之中,sw把ecdsa、rsa、aes、sha中的各种函数对应到各种分类中。本发明根据功能的需求,将上述密码算法进行替换,在上述的功能模块中实现了基于国密算法的加密接口。
[0122]
2)x.509国密扩展
[0123]
x.509是密码学里公钥证书的格式标准,在区块链中也以x.509作为标准规定了证书的格式。证书签名首先是由rsa与sha结合或ecdsa与sha结合,即对证书的信息先使用hash函数压缩固定长度,再使用ca私钥加密,为了实现国密扩展,需要增加sm3来进行哈希,sm4来进行签名。
[0124]
在x.509证书模块中,需要对签名算法与证书解析中加解密流程进行国密改造,首先需要添加sm3,sm4实现方式供其调用,修改证书的算法oid为国密的版本1.2.156.10197.1.501;在x.509的签名环节中,增加sm3,sm4结合的签名方式,在extension函数中,添加对于国密证书形式的oid的解析,防止在实际运行中,国密证书与原本的系统不兼容,造成运行出错。
[0125]
3)tls国密扩展
[0126]
tls即安全传输协议,tls协议中,规定了客户端与服务端之间的通信协议,保障通信时的数据安全。在通信过程中,系统使用x.509来进行身份的验证,使用rsa或ecdsa来进
行数字签名。因此需要增加case*sm2 publickey与privatekey进入存放公钥的函数x509pair()与私钥的函数中,parseprivatekey()函数中,并将原本的x.509证书更换为经过国密扩展的x.509证书。
[0127]
2.证书颁发机构的国密模块
[0128]
证书颁发机构(certification authority)以下简称ca,ca中实现了一整套pki公钥基础设施,可以用来生成msp中所需的全部证书。图6概括了ca与加解密相关的功能。
[0129]
主要包括下面几个功能:
[0130]
(1)负责区块链网络中的所有实体的身份管理,包括身份的注册与注销。
[0131]
(2)负责证书的管理,包括注册证书与交易证书的发放与注销
[0132]
(3)服务端基于客户端命令行和api的交互方式
[0133]
ca通过client与server两个模块完成上述功能,这部分程序存放在cmd文件夹与lib文件夹中,其中,cmd模块是提供client与server的服务,lib模块是两者的实现功能模块。对应的,我们在cmd模块中,修改client的config配置和getcert获取证书,修改server的配置,增加国密tls的扩展。
[0134]
在lib模块中,增加x.509证书与tls的国密扩展,让用户在申请证书的流程中,获取国密证书,建立国密tls通信,其次,在用户申请注册的过程中,使用国密sm2算法对其身份进行验证,并验证其证书是否为ca所发。从而完成ca模块的国密改造。
[0135]
主链和ca两个模块中的国密替换完成后,区块链系统能够根据智能合约设置的触发条件,自动调用国密接口完成身份验证、数字签名、数据加密传输等一系列设计加密的过程,对隐私数据进行加密之后再上链存储,从而保障了数据的隐私性和安全性。
[0136]
本实施例还提供一种移动平台分布式数字身份认证装置,包括:
[0137]
至少一个处理器;
[0138]
至少一个存储器,用于存储至少一个程序;
[0139]
当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现如图1所示方法。
[0140]
本实施例的一种移动平台分布式数字身份认证装置,可执行本发明方法实施例所提供的一种移动平台分布式数字身份认证方法,可执行方法实施例的任意组合实施步骤,具备该方法相应的功能和有益效果。
[0141]
本技术实施例还公开了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存介质中。计算机设备的处理器可以从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行图1所示的方法。
[0142]
本实施例还提供了一种存储介质,存储有可执行本发明方法实施例所提供的一种移动平台分布式数字身份认证方法的指令或程序,当运行该指令或程序时,可执行方法实施例的任意组合实施步骤,具备该方法相应的功能和有益效果。
[0143]
在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或所述方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不
限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。
[0144]
此外,虽然在功能性模块的背景下描述了本发明,但应当理解的是,除非另有相反说明,所述的功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。
[0145]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0146]
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
[0147]
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0148]
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
[0149]
在本说明书的上述描述中,参考术语“一个实施方式/实施例”、“另一实施方式/实施例”或“某些实施方式/实施例”等的描述意指结合实施方式或示例描述的具体特征、结
构、材料或者特点包含于本发明的至少一个实施方式或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施方式或示例中以合适的方式结合。
[0150]
尽管已经示出和描述了本发明的实施方式,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施方式进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
[0151]
以上是对本发明的较佳实施进行了具体说明,但本发明并不限于上述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本技术权利要求所限定的范围内。

技术特征:
1.一种移动平台分布式数字身份认证方法,其特征在于,包括初始化阶段、身份信息生成阶段以及身份信息验证阶段;在初始化阶段中,移动客户端、发证方和验证方均按照预设的格式生成did文档,从而接入到区块链系统中;发证方向区块链系统提供它的可信证明,并注册发证资质;其中,生成的did文档均保存到区块链系统中;在身份信息生成阶段中,用户通过移动客户端请求数字身份信息并生成凭证,该过程包括申请可验证凭证和选择性披露两个步骤;在身份信息验证阶段中,用户通过移动客户端向验证方提供自己的数字凭证;验证方从可验证声明或可验证凭证中读取发证方标识,并根据该标识向区块链系统进行验证,请求获取对应的公钥;如果该标识记录正确,区块链系统会提供发证方对应的公钥;验证方接收到公钥后,利用公钥对用户提交的数字凭证进行签名验证,若验证通过,判定证书可信,为移动客户端提供服务。2.根据权利要求1所述的一种移动平台分布式数字身份认证方法,其特征在于,所述did文档用于记录用户可公开的信息,包括:did标识、版本号、创建时间、更新时间、公钥详细信息、附加信息、服务列表、文档证明,这些信息都以json字符串的形式存储在区块链系统中,并向所有用户公开。3.根据权利要求1所述的一种移动平台分布式数字身份认证方法,其特征在于,所述申请可验证凭证步骤,包括:用户根据需要服务类型的不同,向不同的发证方申请相应的凭证;区块链系统接收到请求之后,查询相关组织信息,如果该组织不存在,或者是请求有误,则拒绝本次请求,让用户重新发起正确的请求;如果查询到该组织已经注册自己的发证资质了,则将请求转发给相应的发证方;发证方接收到请求之后,将包含用户身份信息的数据打包,并对数据进行数字签名,将这部分数据以及对应的签名打包生成可验证凭证,再发送给用户。4.根据权利要求1所述的一种移动平台分布式数字身份认证方法,其特征在于,所述选择性披露步骤,包括:用户接收到可验证凭证后,决定是否需要选择性披露;如果需要选择性披露,则选取可验证凭证中的部分身份信息,并利用默克尔树生成信息的签名内容,形成可验证声明。5.根据权利要求4所述的一种移动平台分布式数字身份认证方法,其特征在于,所述利用默克尔树生成信息的签名内容,形成可验证声明,包括:获取用户选择披露的属性,根据用户提供的参数生成对应属性的默尔克路径;当验证方收到用户出示的可验证声明时,对其中的属性进行验证,以确保其完整性和未被篡改:验证方按照验证可验证凭证的流程,首先检查文档中所有的摘要签名是否被篡改,其次验证每个出示属性的哈希值以及从该哈希值所在的叶子节点到根节点的路径上所有的哈希值是否与根哈希值相匹配;当所有的属性默克尔路径都验证通过时,可验证声明验证结束,验证方提供响应服务。6.根据权利要求4所述的一种移动平台分布式数字身份认证方法,其特征在于,所述移动平台分布式数字身份认证方法还包括对区块链和身份信息中的加密和解密流程进行改造的步骤:
在选择性披露的过程中,改造可验证声明生成过程中的加密流程,利用国密sm3算法来完成数据摘要,以提高基于属性的默克尔树的安全性。7.根据权利要求1所述的一种移动平台分布式数字身份认证方法,其特征在于,所述移动平台分布式数字身份认证方法通过引入安卓虚拟化框架,为移动客户端构造可信的执行环境,以保障在移动客户端的可验证凭证数据不被窃取,以及可验证声明数据的生成过程不被恶意攻击。8.根据权利要求7所述的一种移动平台分布式数字身份认证方法,其特征在于,所述安卓虚拟化框架,包括:在移动客户端上运行的程序包含两个部分:在主机安卓操作系统上运行的主机部分,以及在受保护的虚拟机内的microdroid上运行的应用部分;其中,在安卓端上运行的应用部分包括两个部分,第一部分是用户前端程序,该程序用来实现用户交互的图形化界面,使得用户通过图形化界面与系统进行交互;第二部分是作为用户授权功能的接口,用户发起创建did、申请组织凭证、生成可验证声明的请求;在虚拟机上运行的应用部分负责完成安全任务:程序首先接收用户授权接口发送的请求,并对用户输入的数据和请求进行验证,验证通过后完成相应的任务;这部分程序的功能包括实现可验证凭证数据的安全读写、可验证声明数据的生成,以及在可验证声明数据生成过程中的数据摘要、数据加密。9.一种移动平台分布式数字身份认证装置,其特征在于,包括:至少一个处理器;至少一个存储器,用于存储至少一个程序;当所述至少一个程序被所述至少一个处理器执行,使得所述至少一个处理器实现权利要求1-8任一项所述方法。10.一种计算机可读存储介质,其中存储有处理器可执行的程序,其特征在于,所述处理器可执行的程序在由处理器执行时用于执行如权利要求1-8任一项所述方法。

技术总结
本发明公开了一种移动平台分布式数字身份认证方法、装置及介质,属于数字认证技术领域。其中方法包括初始化阶段、身份信息生成阶段以及身份信息验证阶段;在身份信息验证阶段中,用户向验证方提供自己的数字凭证;验证方读取发证方标识,并根据该标识向区块链系统进行验证,请求获取对应的公钥;验证方接收到公钥后,利用公钥对用户提交的数字凭证进行签名验证,若验证通过,判定证书可信,为移动客户端提供服务。本发明考虑了数字身份信息保存在移动客户端的场景,用户可以通过向不同的发证方申请不同的数字身份凭证,实现一个数字身份认证系统通用多个场景的效果;用户的数字身份信息存储在自己的移动设备中,降低了信息的泄露风险。风险。风险。


技术研发人员:高英 张培浩 苏思捷 邓淋戈
受保护的技术使用者:华南理工大学
技术研发日:2023.07.04
技术公布日:2023/10/15
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐