数字身份:在数字空间,如何安全地证明你是你
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 去中心化身份标识

去中心化身份标识(Decentralized Identifiers,DIDs)是一种新型的可验证的“自我主权式”的身份标识符,该标识符在全球范围内是唯一的,一个去中心化唯一身份标识(Decentralized Identifier,DID)通常和加密相关的内容(如公钥、服务端点)关联,以建立安全的通信通道。它能够被完全掌控在DID拥有者手上,独立于任何中心化的注册机构、身份提供者或者证书颁发机构。其对于那些需要进行自我管理、可以用密码验证的身份(如个人标识符、组织标识符)及物联网场景都非常有用。目前W3C正在进行DIDs的标准化工作。

从表面看,DID只是一种新型的全局唯一标识符。但是从更深层次来讲,DID是去中心化数字身份和公钥基础设施(PKI)全新层的核心组件,这是一种去中心化公钥基础设施(DPKI)。

1.2.1 去中心化身份标识的格式规范

2016年,Christopher Allen建议DID的基本格式可以遵循URN格式规范,以适用于多个区块链,DID格式规范的开发人员采纳了这个建议。

URN格式规范如图1-2-1所示。

图1-2-1 URN格式规范

DID和URN的关键区别在于,在DID格式中,URN的命名空间(Namespace)部分改为DID方法(DID Method),用来标记特定的DID方法。DID格式规范如图1-2-2所示。

图1-2-2 DID格式规范

注意:DID方法(DID Method,将在下文进一步解释)指定了DID如何与特定的区块链进行交互,DID格式规范必须定义特定标识符的格式和生成方式;并且DID中的身份标识字符串(见图1-2-2中的DID Method Specific String)必须是唯一的。

1.2.2 去中心化身份标识的文档规范

可以将DID基础设施看作一个全球化的Key-Value数据库,这个数据库可以是一个兼容所有DID的区块链、分布式账本或去中心化网络。在这个虚拟的数据库中,Key是DID,Value是DID文档。DID文档用来描述与身份实体进行密码可验证交互所需要的公钥、身份验证协议、服务端点等。

DID文档是一个有效的JSON-LD对象,使用了DID格式规范中定义的DID上下文(DID Context,属性名的RDF词汇表),它包括以下六个组件(都是可选的):

(1)DID本身,所以DID文档是完全自描述的。

(2)一组加密相关信息,如公钥可以用来进行身份验证或与DID实体进行交互。

(3)一组加密协议(用于与DID实体进行交互的加密协议),如身份验证和功能委托。

(4)一组服务端点,描述了在哪里及如何与DID实体进行交互。

(5)审核时间戳。

(6)JSON-LD签名,在需要验证DID文档的完整性时可以使用。

1.2.3 去中心化身份标识的方法规范

DID和DID文档可以适用于任何能够将唯一的密钥对应解析出一个唯一值的区块链、分布式账本或其他去中心化网络。而DID方法的作用就是定义如何在特定的区块链或“目标系统”上创建、解析与管理DID和DID文档。DID方法规范至少需要为指定目标系统定义以下操作。

(1)创建。一些DID方法可能直接通过密钥对来生成DID,而其他一些DID方法可能通过区块链上的交易或智能合约的地址来生成DID。

(2)读取。DID读取有三种方式,一是将DID文档直接存储在区块链上;二是通过DID解析器,根据区块链记录中的属性来动态构建DID文档;三是在区块链上存储指向DID文档的指针,而对应的DID文档存储在IPFS或STORJ等其他去中心化存储网络中。

(3)更新。从安全的角度来看,更新操作是最关键的,因为对DID文档的控制代表了对认证身份实体所必需的公钥或证明的控制。而对DID文档更新权限的验证只能在目标区块链中执行,因此DID方法规范必须准确定义如何对一切更新操作进行身份验证和授权。

(4)删除。区块链上的DID实体是不可篡改的,因此从传统的数据库意义上讲,它们永远都无法被“删除”。但是,可以从密码学意义上吊销它们。DID方法规范必须定义什么情况代表DID实体被吊销了,如将DID文档置空可以代表其被吊销。

所有已知的DID方法规范列表可参考“https://w3c-ccg.github.io/did-method-registry/”。

1.2.4 去中心化身份标识的隐私设计

隐私是所有身份管理解决方案的重要组成部分,对使用公有链的全球身份系统而言,这一点尤为重要。而DID体系结构在底层进行了隐私设计,通过以下方法进行部署,可以实现强大的隐私保护技术。

(1)成对的匿名DID。尽管DID可以作为公开的公共标识符,也可以作为基于一对关系发布的私有标识符。一个身份实体可以拥有成千上万个成对的DID,这些DID没有身份实体的同意无法被关联起来,但是可以像通讯录一样轻松地被管理。

(2)链下私有数据。在公有链上存储任何隐私信息(哪怕是哈希值)都是非常危险的,原因有两点。首先,在与多方共享数据时,加密数据或哈希数据就成为全局的关联点;其次,如果最终加密算法被破解了(如量子计算),那么隐私数据就会被永远公开存储在不可篡改的公有链中。因此,最好的方式是进行私有数据链下存储,并通过点对点的方式进行加密传输。

(3)选择性披露。DID使去中心化PKI(DPKI)成为可能,这使得个人能够通过以下两种方式更好地管理个人数据。首先,这可以让数据通过加密数字凭证的方式进行共享;其次,这些凭证可以通过零知识证明来最小化暴露信息。例如,你可以证明自己已经超过一定年龄,而无须透漏确切的出生日期。