前语

每个人都有过答复“你是谁”这个问题的经历。最近一次被问到“你是谁”时,你是怎麽介绍自己的?是答复名字与职称?或是身份证字号?仍是某活动的报名序号?

当咱们在测验答复“你是谁”的时分,也正在界说咱们的身份。

身份会因情境不同而不同,有时是名字,有时是身份证字号,也有时是某个暂时编号。

什么是数位身份(Digital Identity)?

数位身份就是以数位形式体现与贮存的身份,自全球资讯网被发明以来,数位身份便跟著开端开展直到今日,网站域名、电子信箱、社群帐号等等都是数位身份的一种。

咱们的日常日子离不开数位身份的运用:上社群网站发文、订演唱会门票、上PTT看废文、用 GMail 联络公务、用线上课程进修、用云端硬碟备份材料等等。

简直能够说没有数位身份,就没有现代便当的日子。

自主身份呈现之前,数位身份的开展大致能够分为三个阶段:

  • 第一阶段:中心化身份(Centralized Identity)

数位身份第一次随著全球资讯网的盛行而有了大量的需求。

如漫山遍野般冒出来的各种网站显露了一个迫切的问题:要怎麽证明你正在浏览的网站是可信赖的?

一个直觉的思路是:咱们能够对可信赖的网站域名颁布凭据(Certificate),那么由谁来颁布?

因为颁布凭据的安排有必要是具有公信力的安排,因而凭据安排(Certificate Authority, CA)被设立,担任域名的审阅与凭据的颁布。

自1995年开展至今,凭据安排现在仍是Https的骨干。

可是,CA是中心化且阶层化的(Hierarchical):

根CA(Root CA)颁布凭据给次级CA,次级CA再颁布凭据给更次级的CA,更次级的CA能够颁布凭据给注册某域名的网站,具有凭据的域名则能够让用户信赖,运用户愿意于此域名注册身份。

在这样阶层化的架构下,一个用户的身份能够一直往上追朔到根CA,也就是说,根CA是身份的根基。

由此可知,这样的数位身份十分依靠可信的根凭据安排,且用户的身份彻底掌控于注册身份的域名具有者,跟着运用服务的增加,一个用户或许有必要一起在数十个服务注册身份,身份变得破碎而脆弱。

  • 第二阶段:联合身份(Federated Identity)

为了处理身份的破碎,一个直觉的思路是:让身份由数个安排组成的联盟一起办理,于联盟中任一个域名注册的身份都能够在联盟中通用,其间一个比如就是由昇阳(Sun)主导的自在联盟(Liberty Alliance, 2001)。

联合身份尽管略微处理在联盟之间身份破碎的问题,可是于联盟之外的身份仍然是破碎的,且身份仍由服务提供者掌控。

  • 第三阶段:以用户为中心的身份(User-Centric Identity)

这就是咱们现在所在的阶段:让不同服务、不同联盟的身份互通以及给予用户更多对身份的掌控,是此阶段的目标。

若要使某一服务的身份能够在多个服务之间通用,则各家服务需求一起拟定同一套规范以跨服务验证身份。

重视用户允许(User Consent)与互通性(Interoperability)的成果运用户成为了身份的中心。

用户能够自行决定是否要从一个服务分享自己的身份至另一个服务,防止数位身份的破碎。

例如Open ID(2005)/OAuth(2010)/FIDO (2013)这些开发者熟知的验证(Authentication)协议就是遵循此原则的产品。

尽管用户对身份具有更多掌控以及有更好的互通性,但用户关于中心化服务的依靠程度却更胜以往,导致服务商具有“乱用”用户隐私的权利,例如以广告营收为首要获利来历的企业,能够在不经用户同意下便运用或贩售用户资讯,用户隐私有遭到侵略的危险。

身份的价值与厚度来自社交行为与频繁的互动,在彻底抱负(例如非数位)的场景下,身份应当是一个整体,并能依据情境不同而揭穿不同资讯,正如同当我被询问“我是谁”时,我能够依照情境的不同给予不同的身份证明。

可是,咱们当今运用的数位身份既脆弱也无法表达身份的厚度。

那么要如何完成一个不受任何中心化服务掌控的身份呢?

这个问题的答案一直到最近才呈现 — 涣散式帐本就是完成自主身份的最后一块拼图。

什么是自主身份?

自主身份(Self-sovereign Identity)就是用户能够彻底掌控且于任何服务之间互通运用的数位身份。

自主身份与当今的数位身份不同 — 自主身份锚定于涣散式帐本,不被任何中心化服务掌控。

涣散式帐本使数位身份具有下列特性,且正是这些特性保证了数位身份的自主性:

  • 存在性(Existence)

中心化服务能够随时窜改数位身份的存在;涣散式帐本则使身份能以去中心化辨认符(DID)的形式锚定在其上且保护其不受篡改。

  • 掌控性(Control)

中心化服务能够彻底掌控数位身份;涣散式帐本运用数位签章,掌控私钥即掌控身份,且私钥由用户自行保管。

  • 存取性(Access)

中心化服务能够容易限制身份存取;涣散式帐本是仿制状态机,用户能够于任一节点随时存取身份。

  • 透明性(Transparency)

中心化服务多为闭源专案;涣散式帐本大多为开源专案,用户能够掌控软体运作的细节。

  • 继续性(Persistence)

中心化服务有服务中止的危险;涣散式帐本多由遭到经济激励的节点一起维护,不易中止服务。

自主身份的技能架构

Overview of Self-sovereign Identity

如何利用分布式帐本实现自主身份?

数位身份由辨认(Identifier)、验证机制(Authentication)、凭据(Credential)这三个要素组成。

自主身份除了这三个要素,还具有了第四个要素:私钥与材料办理机制(DKMS),这是因为自主身份运用数位签章而有办理私钥的需求。

自主身份并不是全新的发明 — 许多技能的思路基本上沿用了现有的规范,自主身份真实的壮举在于拟定一套通用规范:

去中心化辨认符(Decentralized Identifier, DID),使身份能够以同一规范锚定于不同涣散式帐本并且相互通用。

自主身份的四个要素之间具有如上图所示的关系,这些要素形成一个堆叠(Stack)的架构:

最底层的#1担任身份的锚定;

第二层的#2需求和底层的涣散式帐本互动及担任用户材料与私钥的贮存;

第三层的#3则需求运用第二层的材料以进行用户身份的验证;

成功完成验证后,最顶层的#4则能够发送各种凭据以标明用户的身份。

这种上层依靠基层且同层之间互通的架构相似TCP/IP的七层网路协议 — 各层具有各自的协议与规范,且各层之间的运作细节是笼统的。

哪些安排在推进自主身份?

因为自主身份需求一系列协议的紧密配合,因而自主身份的开展有赖于统一的规范与设计杰出的协议,这需求由业界组成的非营利安排一起推进与维护。

现在有许多非营利的安排都在自主身份范畴继续奉献,例如:

  • 重启信赖网路

(Rebooting Web of Trust, RWoT)

  • 全球资讯网协会的凭据社群组

(W3C Credential Community Group, W3C CCG)

  • 去中心化身份基金会

(Decentralized Identity Foundation, DIF)

  • 网际网路身份作业坊

(Internet Identity Workshop, IIW)

这些安排在近3年来都有十分丰硕的产出。

其间最活泼的应该就属RWoT:自2016年开端启动以来,RWoT发表超越40篇的论文、技能规范与开源程式码;RWoT孕育的技能规范也进一步提案给W3C或许IETF以进行规范化;

DID规范草稿有一大部分是奠根据RWoT的作业效果;甚至连“自主身份”这个词彙也是在RWoT被发明的。

完成自主身份的技能规范

那么自主身份架构中的各层是如何运作的?

1.去中心化辨认符(Decentralized Identifier, DID)

如何利用分布式帐本实现自主身份?

DID是自主身份技能架构中最底层、也是最关键的一层 — 它担任身份于涣散式帐本的写入/读取,其关于辨认符的格局以及解析办法都有明确的界说,下列简述几个重要的部分:

  • DID(Decentralized Identifier)

DID是一个由数字与英文字母组成的辨认符,其是唯一的且映射至一个位于某个帐本的DID文件。

DID由三个部分组成:格局(scheme)、DID办法(DID Method)以及DID办法特化字串(DID Method-specific String)。

DID办法将于下一点阐述;DID办法特化字串的产生办法则需于DID办法的规范中明确界说。

  • DID办法(DID Methods)

为位于DID中的一组字串,功能为区分每个DID 的解析办法 — 每一种帐本都有专属该帐本的 DID办法,且其对应位于该帐本之DID文件的创立/解析规则。

例如注册于以太坊的DID会是像 did:eth:12345 这样的形式,DID办法需求向W3C注册以被解析器辨识。

  • DID文件(DID Document)

涣散式帐本能够被想像成一个键值材料库(Key-value Database) — DID是键值,它所对应的内容就是写入涣散式帐本的DID文件(DID Document)。

DID文件包括:代表身份的公钥、验证协议、能与此身份互动的的服务终端等等。

  • DID解析器(DID Resolver)

协助更上层协议便于查询DID文件,解析器能够针对不同的DID办法进行解析,再将解析成果回来上层,上层协议不需求理会关于文件解析的细节。

DIF针对解析的需求开发了通用解析器(Universal Resolver),如此该解析器只需求部署一次,日后若有新的DID办法被注册,只需针对该办法进行扩大即可。

2. 去中心化私钥办理系统(Decentralized Key Management System, DKMS)

如何利用分布式帐本实现自主身份?

DKMS是用户运用自主身份的首要介面,除了与底层的DID连接之外,还需提供凭据的贮存、私钥的备份等等,任务相当多元。

规范上来说,DKMS能够再细分成三个子层:

  • DID层(DID Layer)

担任与更底层的涣散式帐本连结以执行DID查询。

  • 云端层(Cloud Layer)

担任贮存用户的个人材料供上层协议运用,例如可验证凭据。

  • 边缘层(Edge Layer)

担任办理私钥,一起也是让用户能够运用自主身份的去中心化应用程式(DApp)。

3.DID验证(DID Authentication)

如何利用分布式帐本实现自主身份?

现在仍尚未有任何准备成为通用规范的DID验证规范的提案,只需一份RWoT的文件深入探讨了验证流程。

DID验证的任务只需一个:就是让用户证明自己具有某身份 — 用户只需证明自己具有跟某个自主身份公钥匹配的私钥即可。

进行验证后便能使不同个体之间树立可信赖且更长久的通讯管道,以利更上层协议交流其他材料,例如可验证凭据。

现今存在许多行之有年的验证办法,例如 OAuth / OpenID 等等。

相似这些验证办法,DID验证也运用应战-回应循环(Challenge-response Cycle)进行验证:

验证者发出应战,身份具有者根据应战作出回应,验证者再检验回应是否有效。

至于应战的形式则没有明确的界说,不过咱们必定都有回应应战的经历— 咱们在登入某帐号前都有必要输入的帐号密码就是其间一种应战的办法。

4. 可验证凭据(Verifiable Credential, VC)

如何利用分布式帐本实现自主身份?

VC是自主身份架构中开展最早、也是最成熟的规范。

作为自主身份架构最顶层的协议,它只需一个目的:替代用户皮夹裡的所有证件。

VC是根据密码学的数位凭据,可在不同应用程式间通用,它让身份回归到最抱负的状态:身份是完整的且彻底受用户掌控的,用户能够依照情境的不同而揭穿不同的凭据。

因为所有自主身份都能发行与保存凭据,也就没有身份破碎的问题。

VC包括三个部分:

  • 断语(Claims)

为关于主体的一段陈述,表明[主体 — 性质 — 内容]之间的关係,例如:[小明 — 学生 — 有间校园]代表小明为有间校园的学生。

  • 凭据后设材料(Credential Metadata)

为有关凭据的其他资讯,例如类型、发行者、发行时间等等。

  • 证明(Proof)

为发行者对凭据内容的数位签章。

在运用VC揭穿身份时,要如何防止不会暴露过多的隐私?

可验证陈述(Verifiable Presentation)就是使用零常识证明(Zero-knowledge Proof)保护凭据的进阶规范,细节容笔者于日后令撰文剖析。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注