微软 DID是一套基于 Azure云服务的分布式数字身份技术架构和基础功能,让解决方案实施商可方便的在不同区块链上实现分布式数字身份整体解决方案。微软是 DIF联盟的重要成员,以标准的开源技术、协议和参考实现为主要目标。
微软 DID的技术架构包括区块链 BAAS服务、注册 DID的 Layer2方法 ION、隐私数据管理模块 Identity Hub,均以 API的形式为开发者提供服务,ION和Identity Hub还提供了开源软件。在未实现的计划中,还包括手机端的身份管理模块。
通过区块链 BAAS服务向不同区块链注册分布式数字身份标识,可以成为广泛使用的中间层,实现 DIF的互联互通目标。
ION方法是 SideTree协议基于比特币网络的实现,用于解决向公有链注册 DID存在的效率低下问题。
Identity Hub为开发者提供了管理用户隐私数据的基础模块。
1.分布式账本
微软 DID的基础设施不依赖于特定的分布式账本。与 Azure区块链服务的设计思想一脉相承,微软 DID依托于 Azure云服务支持多种分布式账本协议,并且注册了基于该分布式账本的 DID操作方法,对开发者隐藏分布式账本的接入细节,提供 Restful API接口。
目前微软 DID支持以下两个 DID操作方法:
Ion-test:注册到比特币测试网络
test:注册到微软数据库同时正在开发对以下三个分布式账本的支持:
比特币正式网络
通过 uport的 DID方法,注册到以太坊
通过 Sovrin的 DID方法,注册到 Sovrin网络
在 DID注册和查询过程中,为解决公链效率低下的问题,微软和 DIF联盟的几个成员发起了 SideTree协议,构建了 L1层公链和 L2层 DID操作的分层架构:
L2层保存了 DID操作的源数据并推送到 IPFS网络,汇聚尽可能多的 DID操作后锚定到 L1层;
L2层的每个“节点”各自与 L1层同步,获取 Sidetree锚定交易后,拉取DID操作源数据。
2.基于 DID的交互 &可验证凭证应用
微软 DID中未提供完整的 DID交互和可验证凭证应用软件,由开发者根据自己需求进行设计。微软 DID主要为开发者提供了 Identity Hub模块,它的目标是为用户存储和管理隐私数据,以增强数据表达能力的“语义数据模型”实现。在DIF的认可下,已发布了第一版开源代码。
与传统的数据存储解决方案相比,Identity Hub具有去中心化的特性:
标准化接口:Hub的实现厂商需要满足标准化的数据存取接口,包括为每个用户的 Hub注册 DID,不同用户的 Hub通过 DID标识符进行互操作。
开源:通过开源代码,鼓励开发者运营自己的 Hub。
Identity Hub支持与用户通过 DID进行点对点的安全通信,遵循 DIDAuth的相互认证和加密传输。
3.微软的DID方案
微软的DID方案可以拆解为三个部分:Sidetree、ION、以及DID,它们分别对应协议层、网络层和应用层,三者属于逐级向上建构的关系。其中ION既是网络层的名称,也是微软这一DID方案的项目名称。我们来进一步解析一下三个部件的特性:
Sidetree
作为协议层,它可以被部署在比特币以及以太坊网络上,据其官方Medium介绍,之后该协议或可被部署于更多种类的区块链网络上。
需要注意的是,目前的微软DID方案中,Sidetree作为协议层,仅被部署在比特币的测试网上,预计接下来的几个月中可能会部署在比特币主网上。
Sidetree的核心功能有如下三项:
- Sidetree 核心(Sidetree Core)
观测来自目标区块链(就当前的状况而言,这是代指比特币区块链)的传入事务(incoming trasactions), 抓取其观测到的、所有的DID操作(operations),进而验证每一个DID的状态。
- 内容可寻址存储协议( Content Addressable Storage Protocol)
这一功能类似于IPFS,它将数据在链下存储以减少链上的负担,并允许跨节点的事务传播(transaction propagation across nodes)。
- 区块链/账本适配器 (Blockchain/Ledger Adapter)
向底层区块链读取和写入DID操作的代码。
ION
微软对ION做出了如下的定义:
ION是一个基于Sidetree协议的开源网络,可以通过将操作写入安全且不可变的区块链(如比特币)来巩固和维护对DID的所有权。
当介绍ION的特性时,其指出ION在具有全球可扩展性的(globally scalable)的同时,还“保有比特币区块链去中心化的特性“( “while inheriting and preserving the attributes of decentralization present in the Bitcoin blockchain.” )。
需要指出的是,作为Layer 2,ION不受限于一层的比特币区块链的吞吐量限制。据悉,其上的TPS是”成千上万“的("tens of thousands of operations" per second)。
此外,ION还涉及一些需要付费的事项。当ION的节点想要将事务锚定到比特币区块链(anchoring transactions to the Bitcoin blockchain)时,他们需要付费。
一般来说,这一部分费用会被转嫁至终端用户那里。据微软去中心化身份事务的高级副总丹尼尔.布什(Daniel Buchner)测算,一项包含3万个操作的事务,每个用户需要付出的手续费为0.0003美元。
丹尼尔进一步补充道,未来微软可能使用自己的节点来运行ION,这样就可以给终端用户免除这部分费用了。而包括Casa、Equnix、Learning Machine、Civic、Cloudflare等公司,也都对运营ION节点表示了兴趣。
DID
Decentralized IDentity去中心化身份,简称DID,相对于传统的基于PKI的身份体系,基于区块链建立的DID数字身份系统具有保证数据真实可信、保护用户隐私安全、可移植性强等特征,其优势在于:
- 去中心化:基于区块链,避免了身份数据被单一的中心化权威机构所控制。
- 身份自主可控:基于DPKI (分布式公钥基础设施),每个用户的身份不是由可信第三方控制,而是由其所有者控制,个人能自主管理自己的身份。
- 可信的数据交换:身份相关数据锚定在区块链上,认证的过程不需要依赖于提供身份的应用方。
要理解DID,不妨将其一分为二:
- 唯一标识符。( a unique identifier)
- 相关的DID文档。(an associated DID Document)
前者充当着后者的标签,后者则包含诸如DID可以授权什么,以及在哪些服务中,DID可以被使用等信息。需要注意的是,DID文档中不直接包含任何个人信息(姓名、地址、电话等)。
DID标识:
DID标识是一个特定格式的字符串,用来代表一个实体的数字身份,这里的实体可以是人、机、物。DID标识的格式为:
前缀did:是固定的,表示这个字符串是一个did标识字符串。
中间的example被称为DID方法,就是用来表示这个DID标识是用哪一套方案(方法)来进行定义和操作的。这个DID方法我们可以自定义,并且注册到W3C的网站(https://w3c.github.io/did-spec-registries/#did-methods)中。
最后面的部分是在该DID方法下的唯一标识字符串。比如我们做了一个DID系统,我们把方法就起名叫cid吧,想把中国公民的身份证信息都DID化,那么我的DID标识就是:
did:cid:5111**************5
这里我们就使用身份证号码作为cid这个DID方法下的唯一标识。
DID文档:
每一个DID标识都会对应一个DID文档(DID Document)。这个文档就是一个JSON字符串,里面一般会包含如下信息:
- DID主题
DID标识符本身,也就是DID文档所描述的该DID。由于DID的全局唯一特性,因此在DID文档中只能有一个DID。
- 公钥
公钥用于数字签名及其他加密操作,这些操作是实现身份验证以及与服务端点建立安全通信等目的的基础。如果 DID 文档中不存在公钥,则必须假定密钥已被撤销或无效,同时必须包含或引用密钥的撤销信息(例如,撤销列表)。
- 身份验证
身份验证的过程是 DID 主题通过加密方式来证明它们与 DID 相关联的过程。
- 授权
授权意味着他人代表 DID 主题执行操作,例如当密钥丢失的时候,可以授权他人更新 DID 文档来协助恢复密钥。
- 服务端点
除了发布身份验证和授权机制之外,DID 文档的另一个主要目的是为主题发现服务端点。服务端点可以表示主题希望公告的任何类型的服务,包括用于进一步发现、身份验证、授权或交互的去中心化身份管理服务。
- 时间戳
文档创建时间和更新时间
以上信息并不是必须有,不过一般我们建议包含。我们来看一个具体的DID文档示例:
{
"@context": "https://w3id.org/did/v1",
"id": "did:example:123456789abcdefghi",
"authentication": [{
// 本DID文档对应的DID标识
"id": "did:example:123456789abcdefghi#keys-1",
"type": "RsaVerificationKey2018",
"controller": "did:example:123456789abcdefghi",
//本DID对应的公钥信息
"publicKeyPem": "-----BEGIN PUBLIC KEY...END PUBLIC KEY-----\r\n"
}],
"service": [{
// 获取本DID对应的VC的服务接口
"id":"did:example:123456789abcdefghi#vcs",
"type": "VerifiableCredentialService",
"serviceEndpoint": "https://example.com/vc/"
}]
}
个人觉得DID文档中最重要的就是公钥信息,这是我们接下来要进行VC和VP验证的基础。
我们一般是把DID标识作为Key,把DID文档作为Value存储到区块链中,利用区块链不可篡改、共享数据访问的特点,实现接下来在验证身份时能快速访问获取可信数据。
Sidetree、ION、DID这三项功能组合后的方案又如何发挥作用呢?不妨以具体的场景来理解:
以微信为例,目前用户使用各类互联网服务,往往都会直接选择微信的第三方登录/注册,以统一身份,免除逐个平台账号登录/注册的麻烦。
但这里的隐含问题是,微信可以对你的头像、ID、昵称等信息保有所有权,最近的案例是用户使用微信注册&登录“飞聊”后,相关的信息被申明为“微信所有”,不得在其他平台使用。更严重的的情况可能是,微信或许会关停你的账号,这可能使你所用用类似方法注册的服务都无法使用。
DID引入后,情况可能会转变为,微信可以关停你的账号,但是你的ID、昵称、头像等信息依然可以使用,依靠这些信息的其他平台服务也一样可以继续使用。换言之,身份信息的控制权被转交到了用户手中。
目前 , 微软这一项目已经开源运作,相关代码也已经公开在了Github上。文章来源:https://www.toymoban.com/news/detail-500175.html
https://github.com/decentralized-identity/ionhttps://github.com/decentralized-identity/ion
据Cointelegraph,微软对这一DID方案颇有野心,准备将其推向数十亿人口与设备(Specifically, the company aims to create an ecosystem where “billions of people and countless devices),但其面临着不少现实的阻力。文章来源地址https://www.toymoban.com/news/detail-500175.html
到了这里,关于分布式数字身份项目——微软DID的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!