数字身份
国际电子技术委员会将“身份”定义为“一组与实体关联的属性”。这里的实体不仅仅是人,对于机器或者物体都可以是实体,甚至网络中虚拟的东西也可以是实体并拥有身份。随着互联网的出现和普及,传统的身份有了另外一种表现形式,即数字身份。一般认为,数字身份的演进经历了以下四个阶段:
(1)中心化身份:中心化身份是由单一的权威机构进行管理和控制的,现在互联网上的大多数身份还是中心化身份,比如ICANN管理的域名与IP地址分配,以及PKI(Public Key Infrastructure)系统中的CA(Certificate Authority)证书机构管理的数字证书。中心化身份系统的本质就是,中央集权化的权威机构掌握着身份数据,个人并不是真正意义上拥有自己的身份且身份在不同应用中无法互通。
(2)联盟身份:联盟身份的出现解决了中心化身份中身份数据零碎混乱的弊端,此种身份是有多个机构或者联盟进行管理和控制的,用户的身份数据具备了一定程度的可移植性,例如允许用户登录某个网站时,可以使用其他网站的账户信息,类似于QQ、微信或者微博的跨平台登录。
(3)以用户为中心的身份:在联盟身份提出后,身份系统就开始走向去中心化了。期间也有很多去中心化的标准、方案出现,比如OpenID。这种以用户为中心的身份将重点集中在去中心化上,通过授权和许可进行身份数据的共享。
(4)自我主权身份:自我主权身份才是真正意义上的去中心化的、完全由个人所拥有和控制的身份。该身份不止是人,包括组织,甚至未来也包括物品。这些人或者组织、物品不简单依靠于原先中心化权威机构,无法被拿走或者删除,而且是终身携带的身份。
分布式身份标识(DID)
(一)分布式数字身份标识符
分布式数字身份标识符是一种去中心化的可验证的数字标识符,具有分布式、自主可控、跨链复用等特点。它是由字符串组成的标识符,用来代表一个数字身份,不需要中央注册机构就可以实现全球唯一性。通常,一个实体可以拥有多个身份,每个身份被分配唯一的DID值,以及与之关联的非对称密钥,实体可自主完成DID的注册、解析、更新或者撤销操作。不同的身份之间没有关联信息,从而有效地避免了所有者身份信息的归集。DID本质上是一个全球唯一的地址标识符URL,在W3C的DID标准化文档中,将DID标识符的规范格式定义为:
前缀did是固定的,表示这个字符串是一个did标识字符串。中间的example被称为DID方法,就是用来表示这个DID标识是用哪一套方案(方法)来进行定义和操作的。这个DID方法我们可以自定义,并且注册到W3C的网站中。最后面的部分是在该DID方法下的唯一标识字符串。
在应用过程中,DID标识将具体解析为写有与用户身份关联的属性信息的DID文档,这个文档就是一个JSON字符串,与DID标识符形成键值对,描述的是与被识别对象进行密码验证交互所必须的DID主体标识、公钥、验证协议、服务端点等,例如下图是W3C官方提供的一个具体的DID文档示例:
我们一般是把DID标识作为Key,把DID文档作为Value存储到区块链中,利用区块链不可篡改、共享数据访问的特点,实现在验证身份时能快速访问获取可信数据。
(二)数字身份凭证(声明集合)
数字身份凭证(声明集合)是指与身份关联的属性信息,往往是个人或机构对自己身份的声称和主张。声明可以由身份所有者自己发出也可以由发行人发出,其中由发行人发出的为可验证声明(Verifiable Credential,简称VC)。可验证声明VC是一个 DID 给另一个 DID 的某些属性做背书而发出的描述性声明,并附加自己的数字签名,用以证明这些属性的真实性,可以认为是一种数字证书。下图为VC的基本组成结构示意图,其包括:(1)VC元数据,主要就是发行人、发行日期、声明的类型等信息。(2)声明,一个或者多个关于主体的说明。比如身份证作为公安机关颁发给我的VC,在声明中会包含:姓名、性别、出生日期、民族、住址等信息。(3)证明,通常就是颁发者的数字签名,保证了本VC能够被验证,防止VC内容被篡改以及验证VC的颁发者。它通过提供该种规范来描述实体所具有的某些属性,来实现基于证据的信任。DID持有者可以通过可验证声明VC,向其他实体(个人、组织、具体事物等)证明自己的某些属性是可信的。可验证声明VC可以表示现实事物所具有的相同信息。数字签名等技术的加入,使得可验证的凭证比其物理对等物更不易被篡改,也更值得信任。可验证的声明可以快速地传输,这使得它们在尝试建立距离上的信任时比物理对等物更方便。第三方根据他们的记录来确认声明是真实的。例如,一所大学可以证明某人在那里学习并获得了学位。来自权威的证明,要比能够伪造的证明更有说服力。
为了增强隐私保护,规范还定义了可验证表述(verifiable presentation),用于证明实体在特定场景下的身份角色属性。可验证表述是一种防篡改的描述,它来自一个或多个可验证凭证,并由披露这些凭证的主体用密码签名。无论是直接使用可验证凭证,还是从可验证凭证中获得的数据构造身份证明, DID 身份证明都将以可验证表述(verifiable Presentation)的方式进行出示。下图为VP的基本组成结构示意图,其通常包括:(1)VP元数据,主要包含了版本,本JSON对象的类型等信息。(2)VC列表,要对外展示的VC的内容,如果是选择性披露或者隐私保护的情形,可能就不包含任何VC。(3)证明,主要就是持有者对本VP的签名信息。
(三)DID认证过程
公钥基础设施(Public Key Infrastructure,简称PKI),其主要功能是绑定证书持有者的身份和相关的密钥对(通过为公钥及相关的用户身份信息签发数字证书),为用户提供方便的证书申请、证书作废、证书获取、证书状态查询的途径,并利用数字证书及相关的各种服务(证书发布,黑名单发布,时间戳服务等)实现通信中各实体的身份认证、完整性、抗抵赖性和保密性。下图为一个PKI系统的层级示意图。一个典型的PKI系统包括PKI策略、软硬件系统、证书机构CA、注册机构RA、证书发布系统和PKI应用等。其中PKI安全策略建立和定义了一个组织信息安全方面的指导方针,同时也定义了密码系统使用的处理方法和原则,它包括一个组织怎样处理密钥和有价值的信息,根据风险的级别定义安全控制的级别。证书机构CA是PKI的信任基础,它管理公钥的整个生命周期,其作用包括:发放证书、规定证书的有效期和通过发布证书废除列表(CRL)确保必要时可以废除证书。注册机构RA提供用户和CA之间的一个接口,它获取并认证用户的身份,向CA提出证书请求,它主要完成收集用户信息和确认用户身份的功能。证书发布系统负责证书的发放,如可以通过用户自己,或是通过目录服务器发放,目录服务器可以是一个组织中现存的,也可以是PKI方案中提供的。
传统的PKI数字证书体系需要CA来颁发,而在DID中也是分为颁发者、持有者、验证者、DID注册系统(也就是区块链),它们的具体关系如图4.2.7所示。DID认证过程中的主要角色有:
(1)颁发者Issuer: 颁发者是拥有用户数据并能开具VC的实体,也即证书的颁发机构,比如身份证就是公安机关作为颁发者,毕业证书就是大学作为颁发者。
(2)持有者Holder: 持有者是证书的持有人,它向颁发者请求、收到和持有VC,向验证者出示VC。开具的VC可以自我保存,方便以后再次使用,例如保存在钱包里。
(3)验证者Verifier:验证者是在我们使用证书时查看我们证书的人或者机构,它通过接受VC并进行验证,由此可以提供给出示VC者某种类型的服务。比如我们入住酒店,前台要验证我们的身份证,那么酒店前台就是验证者;再比如我们入职新公司时需要提供大学毕业证书,新公司HR就是验证者。
(4)标识符注册机构Verifiable Data Registry:标识符注册机构是我们存储了DID标识和DID文档的地方,它维护DIDs的数据库如某条区块链、分布式账本,通过DID标识可以在数据库中查询到对应的DID文档。之所以需有标识符注册机构,是因为验证者要验证VC,也要验证用户。验证VC用VC和发VC的Issuer,验证用户用DID和存DID的数据库。
相对于传统的基于PKI的身份体系,基于区块链建立的DID数字身份系统具有保证数据真实可信、保护用户隐私安全、可移植性强等特征。其优势在于:(1)去中心化:基于区块链,避免了身份数据被单一的中心化权威机构所控制。(2)身份自主可控:基于DPKI (分布式公钥基础设施),每个用户的身份不是由可信第三方控制,而是由其所有者控制,个人能自主管理自己的身份。(3)可信的数据交换:身份相关数据锚定在区块链上,认证的过程不需要依赖于提供身份的应用方。
DID认证的应用场景
(一)数据共享
当前,不同机构间存在着大量用户数据流通的需求。然而,由于各个机构之间通常难以组建有效的信任合作机制,因此,各机构间难以将各自保管的用户数据安全可信地授权共享给其他机构。通过分布式数字身份DID解决方案,可帮助机构间进行可信数据授权及共享,使得各机构可基于全面的数据为用户提供更高质量的服务。数据共享过程中的参与方为:用户、数据持有机构、数据使用机构、身份证明机构。其具体流程为:
(1)在身份证明机构、数据持有机构、数据使用机构间搭建区块链网络,机构作为节点接入并注册DID。
(2)由身份证明机构为用户生成DID。
(3)用户授权数据使用机构使用自己的数据。
(4)数据使用机构生成授权凭证(Credential),标明授权对象、数据属主、有效期、授权内容等属性,并使用机构私钥进行签名;数据使用机构可选择将授权凭证生成摘要并写入区块链,达到增信目的。
(5)数据使用机构出示授权凭证给数据持有机构。
(6)数据持有机构通过凭证验证(Verify)接口,验证授权凭证。
(7)验证通过,数据持有机构将数据发送给数据使用机构。
(二)物联网标识
实际应用中IOT也可以与DID进行紧密结合,例如我们给每个IOT设备都分配其独一无二的DID,基于物联网+区块链+DID构建:商品溯源、车联网、智能制造、智慧城市等应用场景。
以制造业中的制造机器为例,每个机器都有一个DID,该DID是由机器的制造商生成并赋予每台机器的,当机器运转时会产生大量的生产数据,该机器会将数据签名,将非敏感生产数据、签名结果和DID上链。机器的制造商可以根据链上数据得知机器的运行情况,便于更好的售后保养服务。当企业需要贷款时,银行可以根据区块链上的生产数据,并结合机器制造商的背书,判断企业的生产经营情况,评估贷款风险。再以高价值商品的物联网防伪溯源为例,当每个商品被制造出来时,商家就为其IOT设备生产私钥并创建唯一的DID。因为私钥无法复制导出,所以只有在区块链上登记了DID的商品才是正品。而且商品的DID可以映射对应的非同质化通证,以数字化的形式表现商品的流转过程。