JOE'S BLOG

好记性不如烂键盘

0%

浅谈分布式身份

分布式系统

分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统是一个很大的话题,这里仅仅简单介绍下基本概念。

单节点已经无法满足日益增长的计算和存储需求,所以才有了现在各式各样的分布式系统。分布式要解决的问题跟单机系统要解决的问题一样,但由于分布式系统是有多个节点组成,分布在网络的各个节点上,从而引入了单机系统不存在的问题,为了解决这些问题又会引入了各种协议、机制等等。区块链就是一个典型的分布式系统,区块链是由分布式架构与分布式存储、块链式数据结构、点对点网络、共识算法、密码学算法、博弈论、智能合约等多种信息技术共同组成的整体解决方案。

身份

国际电子技术委员会将“身份”定义为“一组与实体关联的属性”。这里的实体不仅仅是人,对于机器或者物体都可以是实体,甚至网络中虚拟的东西也可以是实体并拥有身份。

随着互联网的出现,人们越来越多的交流都是在互联网进行,从事一切的交流活动都需要一个身份作为基础,这个身份在互联网上就是数字身份。人们日常使用的QQ、微信、电话、短信等等都是基于数字身份进行。这里的数字身份不仅仅可以指自然人,各种设备、机构组织、虚拟网络都可以拥有数字身份。数字身份的发展经历了四个阶段,分别是:中心化身份、联盟身份、以用户为中心的身份以及自我主权身份。

  • 中心化身份是由单一的权威机构进行管理和控制的,现在互联网上的大多数身份还是中心化身份。
  • 联盟身份的出现解决了中心化身份中身份数据零碎混乱的弊端,此种身份是有多个机构或者联盟进行管理和控制的,用户的身份数据具备了一定程度的可移植性,例如允许用户登录某个网站时, 可以使用其他网站的账户信息,类似于 QQ、微信或者微博的跨平台登录。
  • 以用户为中心的身份则将重点集中在去中心化上,通过授权和许可进行身份数据的共享,例如OpenID。
  • 自我主权身份才是真正意义上的去中心化的、完全由个人所拥有和控制的身份。

分布式身份

根据 W3C 的定义,分布式标识符(DID)是一种新型可
验证的 “自主权”数宇身份标识符,通过它能够操作可验证的、分布式的数字身份一一个DID可以标识任何主体(如人、组织、事物、数据模型、抽象实体等)。新的标识符旨在使
DID 的主体能够证明对它的控制,并且它的获取不依赖于任何集中式注册表、身份服务商或证书颁发机构。

目标

分布式数字身份的最终目标是使得网络上进行交互的任意双方可以相互信任。通过在分布式网络中根植凭证发行者的公共可解析DID和公共秘钥,凭证验证人得以验证发行者的数字签名,从而构建了基于非对称的加密信任。

技术原理

一般来说,当前所有 DID 系统的技术栈都是自下而上的结构,最底层是网络协议(一般为 TCP/IP),往上一层是区块链或分布式账本,再往上一层是 DID 协议,最上层是应用软件(DApp、App 等应用程序)。

分布式账本

按照 W3C 的定义,分布式账本是一种在网络成员之间共享、复制和同步数据的数据库。按中国人民银行的规范定义,分布式账本指可以在多个站点、不同地理位置或者多个机构组成的网络里实现共同治理及分享的资产数据库。分布式账本技术是密码算法、共识机制、点对点通信协议、分布式存储等多种核心技术体系高度融合形成的一种基础架构与计算范式。

区块链技术的分布式特性和共识算法使其成为当前分布式账本的主流技术。使用区块链技术能避免身份数据被单一的中心化机构所控制,账本是分发给网络中的所有成员节点,所有交易都记录在由哈希算法链接的区块链中。

DID

DID是一个由3个部分组成的统一资源描述符(URI):

  1. 固定格式的前缀Scheme: “did:”。
  2. DID方法的标识符DID Method
  3. 由DID方法和进行规范生成的、全球唯一的标识符。

DID DOC

DID文档由一组属性组成,包含了与DID相关的元数据。它们描述了与 DID 主体有关的验证方法(如公钥)和服务。DID文档根据特定语法进行序列化。DID本身也是语法中”id” 属性的值。DID 文档中的属性可以通过特定的操作进行更新,这些操作由具体的DID方法(DID Method )说明和实现。
DID文档是一组描述DID 主体的数据,也包含公钥和生物识别等机制,使得 DID 主体可以用来验证自身并证明自身与此DID相关联。DID文档还可以包含描述主体的其他属性或声明。

以下是一个DID文档样例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"@context": [
"https://www.w3.org/ns/did/v1",
"https://w3id.org/security/suites/ed25519-2020/v1"
]
"id": "did:example:123456789abcdefghi",
"authentication": [{
// used to authenticate as did:...fghi
"id": "did:example:123456789abcdefghi#keys-1",
"type": "Ed25519VerificationKey2020",
"controller": "did:example:123456789abcdefghi",
"publicKeyMultibase": "zH3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV"
}]
}

DKMS

去中心化密钥管理系统 (Decentralized Key Management System,DKMS)是一种新的分布式的密钥管理方法,使用没有集中管控机构的区块链和分布式账本技术对密钥进行管理。与传统公钥基础设施 PKI不同,DKMS 不依赖于 CA机构对公钥进行认证。在DKMS 中,所有参与者的初始“信任根”是支持分布式标识符DID这一新形式的根身份记录的分布式账本。

可验证凭证

(Verifiable Claims 或 Verifiable Credentials,本文接下去都简称VC)是一个 DID 给另一个 DID 的某些属性做背书而发出的描述性声明,并附加自己的数字签名,用以证明这些属性的真实性,可以认为是一种数字证书。可以理解为我们日常使用的身份证。

下图是可验证凭证的基本结构:

  • VC元数据,主要就是发行人、发行日期、声明的类型等信息。
  • 声明,一个或者多个关于主体的说明。比如身份证作为公安机关颁发给我的VC,在声明中会包含:姓名、性别、出生日期、民族、住址等信息。
  • 证明,通常就是颁发者的数字签名,保证了本VC能够被验证,防止VC内容被篡改以及验证VC的颁发者。

点对点通信协议

DID之间的消息传递遵循DIDComm协议,不依赖于第三方即可进行安全通信。其使用了DPKI技术,类似于现在使用的一些端到端加密系统,比如Signal、Telegram。DIDComm保证了不同DID实体间通信的安全性、隐私保护、互操作性和可扩展性。

技术应用场景

  • 身份认证: 这是DID最基本的应用,解决各种场景下身份验证问题。
  • 无密码登录: 当我们注册或登录各种应用时,只需使用手机或电脑安全芯片中保存的DID信息完成与应用DID的双向认证,整个过程服务器并不知道用户口令,而且也无法获取除DID文档外的任何信息,从而保证了用户隐私。
  • 数字版权保护: 利用区块链不可篡改性以及数字身份的自主可控性,将版权、合同、赛事记录等信息存储在区块链的分布式网络中,永久有效,无法篡改。引入公证处、版权局、知名高校作为版权存证联盟链的存证和监督节点,从而完成版权保护。
  • 供应链金融: 通过DID技术建立企业信用传导,提高企业信用评估审核效率,降低融资服务成本和银行放贷风险。
  • 物联网: 物联网设备间本身就是一个大型的分布式网络,利用DID技术帮助物联网设备产生的数据得到更加规范的管理和保护,在数据流转中可验证,并且无法篡改。

后记

分布式身份的内容,这里仅仅浅谈下,了解下大概情况。关于分布式身份、区块链的内容不仅于此,有机会我们再细细的浅谈:)

References