本文来自公众号:远望资本iVision,原文标题:《你如何证明你是你自己?DID去中心化身份的意义》,题图来自:视觉中国
身份管理(ID)是计算机技术基础设施的组成部分,但是因为其简单而且无处不在,因此经常被大家理解为想当然的存在而被忽略。就像生活中我们一出生就默认有了身份一样。但是,一旦我们丢失了ID之后或者像《谍影重重》电影里面的主人公被政府剥夺身份后,就会发现我们寸步难行。
正像现实世界里面ID是生活的基础组成部分,ID技术也是计算机的基础设施。我们打开电脑的时候,第一步就是要输入用户名和密码登陆系统,我们访问任何网站的时候,大部份的操作需要输入用户名和密码。
人类社会进入文明社会以来,这世界上的大多国家都建立了完整的身份管理系统。国内用身份证或者驾照或者社会保险号,国际旅行用护照。互联网大概遵循了同样的发展道路:
从1996年的“在互联网网上没有人知道对方是条狗”的匿名时代,发展到了2004年Facebook成立后的实名社交时代。互联网也从一种信息获取手段发展到了电子商务和电子政务等重要工作效率手段。
可以预测到,区块链也会从现在完全匿名的状态,在未来一个周期发展到由DID去中心化身份(Decentralized Identity)支持的实名阶段。区块链至今缺乏对用户身份的支持,因此被过度的金融化而无法进入实用场景。而且,正如互联网的发展,网络平台效应在由用户控制的共享情况下产生的效用,要远远高于完全被公司控制(如Facebook)或者完全公有被政府控制(如道路)的机制。
当然,ID不仅仅包括人,还包括各种主体,比如:公司有营业执照和D-U-N-S®代码,手机有mac地址,我们可以统一将这些称为主体(subject)。
因此我们使用ID这个术语的时候,我们应该小心,有些人认为权威机构颁发的才叫ID,有些人认为任何一个机构都可以颁发由自己认证的ID。本文讨论的DID用的广泛意义的ID,比如用户自主生成的公密钥对就可以作为ID。
事实上,任何一个用户已经在使用DID,因为用户进入加密世界的第一步就是生成钱包,在比特币链上,你的比特币地址就是一个你的DID(比特币的设计并不友好,因为每一次交易都变更地址为了保护隐私);在以太坊上,每个用户都拥有一个以公钥为地址的DID。不管广义还是狭义的ID,ID都必须在一定范围(namespace)内保证唯一性,而且生成ID的意义一般绑定一定的使用环境(context)。
DID是人类历史上第一次给予了subject自己证明是自己的一个技术。
DID基于密码学技术自我生成一对公密钥,公钥作为自己的ID,密钥作为自己控制对应公钥的证明。为了关联自己的其他中心化的身份,如果发行主体提供VC服务,就可以非常简单的通过验证签名VC来关联;如果发行主体不提供,则subject可以声明(claim)拥有某个中心化ID或者链下身份,然后通过第三方验证(attestation)服务来关联。
我们小结一下,DID的特征和术语:
ID代表的主体(subject)可以是人,公司或者任何一个物体;
ID在一个范围(namespace)内必须是唯一的;
ID一定有一个发行方(issuer或者传统IAM中称为Identity Provider),DID的发行方是subject自己;
issuer需要为第三方(verifier或者传统IAM中Relying Party)提供查询和验证服务,DID的验证由加密算法的数学公式提供;
一个声明(claim或者statement或者assertion)包括自我声明或者第三方声明,需要提供对应的验证(verify或者attest)机制;这种验证机制有时候是确定性的,比如一个人声明他拥有1个比特币,可以通过验证他是否控制一个超过一个比特币的地址验证;验证机制有时候是概率性的,比如一个人声明他拥有Java编程能力,这个声明需要以前的同事背书,虽然拥有编程能力的熟练程度是一个概率;
身份天生具有场景特征,人们在不同的场景使用不同的身份(persona);而职能(role)定义了一个属性(attributes)集合,代表了一类用户经过认证(authenticate)后被赋予不同的权利范围(ACL)。
由于DID和VC的技术基于加密算法,这给零知识证明的应用提供了空间。当用户需要验证年龄需要出示自己身份证的时候,不再需要担心验证者顺便看到了自己的家庭住址;当用户需要证明自己的资产满足某个条件对时候不需要让对方知道准确的资产总额。
本文来自公众号:远望资本iVision