分布式课堂| 有关于DID和PDID
当今时代,网络已经进入寻常百姓家,全球有近70%的人口在日常生活中使用互联网,各种丰富的互联网应用和服务通过计算机设备将数字生活与现实生活融合在一起。用户时时刻刻在短时间内可以与分布在全球各地不同的个人或企业进行互动,在互动的过程中,连接映射线下本体到线上并由计算机自动验证和处理的数字身份,其便捷性和重要性日益重要。本篇文章将讲述身份与数字身份的起源与变迁并详解以区块链与密码学技术为核心的新一代PlatON DID(去中心化身份)。
身份定义
说到身份,通常让人很快联想到,如:身份证、户口本、居住证、驾驶证等一系列能证明「你是你」的证明文件。当今社会下,如果没有身份则无法拥有银行账户、无法接受教育、无法获得社会福利,在相关政治活动中将直接被拒之门外。
在国际标准组织中,将身份定义为「与某一实体相关的属性集」,实体可以是人或机构。下面将分别从属性、关系、代理等角度对实体进行简要说明。
-
属性:实体的生理和社会属性,如:人的出生情况、教育情况、工作履历等;
-
关系:实体社会关系,如:所属国家、所属公司、亲戚朋友;
-
代理:受实体委托的代理律师、房产经纪人员;
身份则是由不同参与方的声明和可验证声明动态行为形成的。
-
声明:可以是个人或者机构对自己身份的声称或者主张,如:“我的名字是铁蛋,1997年6月18日生,中国人”。
-
证明:为声明提供证据的某种形式的文件。如:对于个人的护照、出生证等。
-
验证:第三方根据记录来确认声明是真实的。如:大学可以证明某人在学校学习过并获得了学位。
数字身份演进
当今时代,网络已经进入寻常百姓家,全球有近70%的人口在日常生活中使用互联网,各种丰富的互联网应用和服务通过计算机设备将数字生活与现实生活融合在一起。用户时时刻刻在短时间内可以与分布在全球各地不同的个人或企业进行互动,在互动的过程中,连接映射线下本体到线上并由计算机自动验证和处理的数字身份,其便捷性和重要性日益重要。
在网络诞生初期,底层协中并没有进行相关数字身份的设计,因此还诞生了一个著名的漫画「在互联网上,没人知道你是一条狗」,该漫画生动形象地描绘出在网络初期人们可以在网络上尽享放纵,匿名进行网上冲浪,享受着网络带来的快乐。
第一代数字身份
在互联网上,最早的数字身份就是大家比较熟悉的传统账号模式。在使用论坛、游戏、电商等各种应用与服务时,都需要在系统进行账号注册,然后通过该账号进行登录使用。在这个过程中,就是将自己的身份信息提供给了每个服务商,然后服务商为你提供ID,你使用了ID,所有的数据会记录在服务商的数据服务器上。在注册时,根据签署的协议,使用的ID和数据在法律上也归属服务提供商。
传统账号模式会带来一个问题,在网络中,每个应用服务都需要创建账号,管理越来越多的账号不仅繁琐,而且容易遗忘。
第二代数字身份
为了解决第一代数字身份多账号难管理的问题,第二代数字身份产生:「一键登录」。经过用户授权后,把用户的账号相关数据传给某一个登录的服务提供商的中心系统。市面上,普遍被接受的一键登录方式包含:微信登录、Facebook登录等。使用一键登录各种平台,使用非常方便,但同时,该种方式也暴露出一些问题:
隐私泄露:
使用一键登录会带来用户隐私数据泄露的风险。全球第一大社交平台Fackbook日活用户占世界人口1/5,许多用户使用Facebook进行登录外部服务器时,由于Facebook没有保护好用户的隐私数据,把用户各种各样的社交信息全部提供出去,导致仅在一年的时间内就泄露了8700万的用户信息。
第三代数字身份
不管是互联网传统的账号模式,还是一键登录模式,这两种数字身份,从技术和法律角度上看,都不属于用户自己,身份无法由自己掌控。如特朗普总统注册推特,名义上账号是属于特朗普,但是控制权还是在运营者手里。另外,账号上的隐私数据,也无法被用户自己掌控,很多时候用户个人隐私数据可能已经被掌控者泄露了。随着用户数据的泄露与滥用的痛点日益凸显,如何让用户在数字世界拥有并能自行控制的身份,同时数字身份信息能够安全存储并保护好隐私,成为日益强烈的需求和趋势。
通过分析,可以总结出,第一代数字身份和第二代数字身份主要存在的问题就是两个:
-
个人用户并不是真正意义上拥有自己的身份;
-
个人账号身份无法互通。
为了解决以上问题点,第三代数字身份诞生,去中心化身份(Decentralized IDentity,简称DID)。DID本质是指一套完全去中心化并允许个人或组织能够完全拥有对自己数字身份及数据的所有权、管理权和控制权的身份。即,用户的身份信息并不是存在某个机构的服务器或被某个机构掌控,而是分布在许多网络节点上,完全由用户自己掌控。
DID背景
直到区块链技术出现之前,DID的发展并不是那么迅速。区块链的出现,解决了DID最大的问题,借助于区块链技术的不可篡改、Hash的特性,让建立标识唯一、人皆可信,去中心化的身份系统得以实现。
现如今,相比于区块链技术的扩容、跨链、DeFi这些热门概念,DID在区块链领域的研究热度不算高。目前, 只有少数团队研究并推出了对应的DID项目。万维网联盟(W3C)主持开发的去中心化标识符标准正在成为去中心化身份(DID)技术实现标准,目前有PlatON、微软、ArcBlock、uPort、lifeID等企业或者项目提交了各自的DID协议方法。
在后续的介绍中,将以PlatON构建的PDID项目进行说明,其中会包含一些标准的DID规范信息。
Pldentity DID
PDID是用于构建以用户为中心的去中心化应用的工具和协议的集合,基于PlatON网络,将数字身份标识登记在网络上,保护用户隐私及数据的安全性。
去中心化身份标识(Decentralized Identifier,DID)是一种新类型的标识符,具有全局唯一性,高可用性可解析性和密码可验证性。DIDs通常与密码材料(如公钥)和服务端点相关联,以建立安全的通信信道。DIDs对于任何受益于自管理、密码可验证的标识符(如个人标识符、组织标识符和物联网场景标识符)的应用程序都很有用。例如:当前W3C可验证凭据的商业部署大量使用DIDs来标识人员、组织和事物,并实现许多安全和隐私保护保证。
PDID规范
说明:
前缀 did是固定的,标识这个字符串URL是一个did标识字符串。中间的pdid 标识使用了PlatON的一套体系方案 进行定义与操作。该方法自行定义,并注册到W3C官方网站中。最后的部分是该DID方法下的唯一标识字符串,此处是PlatON网络系统中的私钥对应的地址,用来表示用户的唯一地址。
PDID文档
PDID基础设施,使用PlatON网络系统进行数据承载,对于存储方式可以理解为简单的键值对存储,DID标识符是键, DID文档是值。
每个DID标识都对应着一个DID文档(DID Document),这个文档是一个 JSON格式的文本,主要包括以下信息:
-
DID标识符
-
一个密码材料的集合,如:公钥
-
一个密码协议的集合
-
一个服务端点的集合
-
时间戳
-
一个可选的JSON-LD签名,用来证明这个DID文档是合法的;
PDID文档示例:
{
"@context": "https://PIdentity.platon.com/did/v1",
"id": "did:pid:atp1s4u4p9j95lh72a2c0ttj48ntd58s45resjgtza",
"created": "2017-09-24T17:00:00Z",
"updated": "2018-09-24T02:41:00Z",
"status": "deactivation",
"publicKey": [{
"id": "did:pid:atp1s4u4p9j95lh72a2c0ttj48ntd58s45resjgtza#keys-2",
"type": "Secp256k1VerificationKey2018",
"controller": "did:pid:atp1s4u4p9j95lh72a2c0ttj48ntd58s45resjgtza",
"publicKeyHex": "02b97c30de767f084ce3080168ee293053ba33b235d7116a3263d29f1450936b71"
}],
"authentication": [
"did:pid:atp1s4u4p9j95lh72a2c0ttj48ntd58s45resjgtza#keys-1"
],
"service": [
{
"id": "did:pid:lax1s4u4p9j95lh72a2c0ttj48ntd58s45resjgtza#some-service",
"type": "SomeServiceType",
"serviceEndpint": "https://PIdentity.platon.com/some-service/v1"
}
],
}
在PDID中,将DID标识作为Key,DID文档作为Value存储在区块链中,利用区块链的不可篡改、共享数据访问的特点, 实现了快速地身份验证以及快速访问获取可信数据。
可验证凭证
可验证声明(Verifiable Claims)或可验证凭证(Verifiable Credentials),简称VC,是一个DID给另一个DID的某些属性做信用背书而发出的描述性声明,同时附加自己的数字签名,用来证明这些属性的真实性,可以理解为一种数字证书。在传统的PKI数字证书体系中需要CA来颁发,当然,在DID中也是分为颁发者、持有者、验证者,DID注册系统(区块链)。
DID中的活动关系图:
其中:
-
颁发者(Issure):证书的颁发机构,如公安机关作为颁发者颁发身份证、学校作为颁发者颁发毕业证书。
-
持有者(Holder):证书的持有人,如拿了身份证的普通公民,拿了毕业证的毕业生。
-
验证者(Verifier):证书的使用者,需要验证证书的人或者机构。如酒店入住查验身份证,酒店前台就是验证者。
-
DID注册系统(Verifiable Data Registry):存储了DID标识与DID文档的地方,通过DID标识可以查到对应的文档。
这里我们使用公安机关颁发身份证进行举例说明下。当公安机关颁发了身份证,该动作在DID中就是生成了一个VC,身份证就是VC,一个VC也是一个JSON格式的文本,里面主要包含了元数据、声明数据、证明数据等信息。
-
元数据:主要记录发行人、发行日期、声明的类型等信息;
-
声明:一个或多个关于主体的说明。如上述公安机关颁发的身份证(VC),声明中则包含:姓名、性别、出生日期、民族等信息;证明:一般为颁发者的数字签名,能保证此VC能够被验证,防止内容被篡改以及验证VC的颁发者;
VC示例:
{
"@content": "https://PIdentity.platon.com/credential/v1",
"id": "ca4ab2f56d106dac92e891b6f7fc4d9546fdf2eb94a364208fa65a9996b03ba0", // UUID
"type": ["VerifiableCredential", "AlumniCredential"], //凭证类型,用于声明凭证中应包含哪些数据
"issuer": "did:pid:ATP2423refddj95lh72a2c0tt2323e3e3dweweewew",
"issuanceDate": "2010-01-01T21:19:10Z",
"expirationDate": "2020-01-01T19:23:24Z",
"holder": "did:pid:lax1s4u4p9j95lh72a2c0ttj48ntd58s45resjgtza",
"version": "v1.0",
"claimMeta": {
"pctId": 110,
"currentStatus": "Revoked",
"statusReason": "Disciplinary action"
},
"claimData": {
"name": "张三",
"gender": "male",
"birth": "1989-06-06-18T21:19:10Z",
"address": "海口",
"MonthlySalary": 3000.00
},
"proof": {
"type": "RsaVerificationKey2018",
"created": "2016-06-18T21:19:10Z",
"verificationMethod": "did:pid:atp2423refddj95lh72a2c0tt2323e3e3dweweewew#keys-2",
"salt": {
"name": "122",
"gender": "342",
"birth": "err",
"address": "4545",
"MonthlySalary": "rgee"
},
"jws": "BavEll0/I1zpYw8XNi1bgVg/sCneO4Jugez8RwDg/+MCRVpjOboDoe4SxxKjkCOvKiCHGDvc4krqi6Z1n0UfqzxGfmatCu
}
可验证表达
可验证表达(Verifiable Presentation,简称 VP),是VC的持有者向验证者表明自己身份的数据。通常,持有者直接出示VC全数据可以达到证明效果。但是,在某些情况下,处于隐私保护的需要,持有者并不需要出示完整的VC内容, 只希望选择性披露某些属性或者不披露任何属性,只需要证明某个断言即可。
场景1:在进入一个高档写字楼时,需要进行信息登记姓名与证件号,但是VC还包含了民族、住址等信息。如果直接提供VC将会暴露其它数据,用户不希望暴露住址信息。这时候可以向保安提供VP数据,VP中选择性地披露证件号和姓名,其它的信息不披露。
场景2(断言):只有年满18周岁才能进入网吧,那么当一个消费者想去网吧时必须证明自己已经年满18周岁,但是直接出示身份证给工作人员又会暴露太多隐私信息,就算选择性披露生日属性,也会暴露消费者的出生日期。这种情况下就需要在VP中证明自己年满18岁,其它信息不进行披露,此种方式为断言证明。
VP格式为:
其中,
-
VP元数据:主要包含了版本、JSON对象的类型等信息。
-
VC集:需要对外展示的VC的内容,如果是选择性披露或者隐私保护的情形,可能就不包含VC了。
-
证明:持有者对本VP的签名信息。
VP示例:
{
"@context": ["https://pidentity.platon.com/presentation/v1"],
"type": ["VerifiablePresentation"],
"verifiableCredential": [
{
"@content": "https://PIdentity.platon.com/credential/v1",
"id": "ca4ab2f56d106dac92e891b6f7fc4d9546fdf2eb94a364208fa65a9996b03ba0",
"type": ["VerifiableCredential", "AlumniCredential"],
"issuer": "did:pid:lax2423refddj95lh72a2c0tt2323e3e3dweweewew",
"issuanceDate": "2010-01-01T21:19:10Z",
"expirationDate": "2020-01-01T19:23:24Z",
"holder": "did:pid:lax1s4u4p9j95lh72a2c0ttj48ntd58s45resjgtza",
"version": "v1.0",
"claimMeta": {
"pctId": 110,
"currentStatus": "Revoked",
"statusReason": "Disciplinary action"
},
"claimData": {
"name": "张三",
"gender": "male",
"birth": "1989-06-06-18T21:19:10Z",
"address": "海口",
"MonthlySalary": 3000.00
},
"revocation": {
"id": "did:pid:lax2423refddj95lh72a2c0tt2323e3e3dweweewew",
"type": "SimpleRevocationList2017"
},
"proof": {
"type": "RsaVerificationKey2018",
"created": "2016-06-18T21:19:10Z",
"verificationMethod": "did:pid:lax2423refddj95lh72a2c0tt2323e3e3dweweewew#keys-2",
"salt": {
"name": "122",
"gender": "342",
"birth": "err",
"address": "4545",
"MonthlySalary": "rgee"
},
"jws": "BavEll0/I1zpYw8XNi1bgVg/sCneO4Jugez8RwDg/+MCRVpjOboDoe4SxxKjkCOvKiCHGDvc4krqi6Z1n0Ufqz
}
],
"proof": [{
"type": "RsaVerificationKey2018",
"created": "2016-06-18T21:19:10Z",
"verificationMethod": "did:pid:lax1s4u4p9j95lh72a2c0ttj48ntd58s45resjgtza#keys-3",
"challenge": "598c63d6",
"jws": "JBMvvFAIC00nSGB6Tn0XKbbF9XrsaJZREWvR2aONYTQQxnyXirtXnlewJMBBn2h9hfcGZrvnC1b6PgWmukzFJ1IiH1
}
]
}
分析总结
DID的可验证、自我主权的数字身份新型标识能够让身份数据始终置于终端用户的控制之下,同时个人身份信息不存储在区块链上(仅将签名的哈希作为证据),让用户成为身份的唯一所有者,从而摆脱任何中心化注册服务、身份提供商或证书颁发机构的控制。为了保护隐私,DID通常使用零知识证明方法让生命信息尽可能减少披露。
DID技术实现的去中心化身份的体验和用途与传统数字身份截然不同。首先,每个实体不仅仅只有一个DID,而是依据身份场合需要的不同拥有无数不同的DID,每一个DID都给你一个单独的终生加密的私密渠道与其他个人、组织或事物交互沟通,因此能更好地选择身份来交流,更好地保护隐私,传统互联网中的「人肉」现象将不会再发生。PDID将不仅用来证明身份,而且可用来交换可验证的数字证书,每个DID都是直接登记在区块链或者分布式网络上,无需向中心化的注册机构申请。