Uport-为分布式网络设计的开放式身份系统

狂风中的少年 提交于 2019-12-02 11:54:15

一、背景介绍
目前的身份系统解决方案存在许多问题。
数字身份在各种服务提供商之间是分散的、孤立的,阻碍了整体性,导致用户需要重复注册和使用用户名和密码登录,这样的体验非常不好,更严重的是,这样的方式会导致很多不安全因素,用户在不同的网站或应用中使用相同的密码。当前数十亿台的网络设备依赖Google和Facebook提供身份服务,它们的集中式服务器极易成为黑客攻击的对象,因此这些身份提供商在管理或者技术上的漏洞将会对数字和物理基础设施造成灾难性后果。
密码学和区块链等去中心化技术为上述问题提供了非常有前景的解决方案。这些技术将身份的所有权从集中式服务推向个人控制,这通常被称为自主身份。这种方法将数据和计算去中心,并将它们推向边缘,它需要大量的努力来逐一攻击许多个人身份,这对黑客来说在经济上不太有价值。
然而,向普通用户引入新技术是非常困难的,像PGP这样的公钥加密工具已经存在了25年,但由于它们不够直观以及复杂的流程导致用户体验很差。
与基于区块链的系统进行交互需要可用的公钥私钥密码系统,到目前为止,密钥管理解决方案(通常称为“钱包”)很难用于非技术用户,但是,区块链本身可以通过充当去中心公钥基础设施(PKI)来帮助使公钥密码更加易用和安全。区块链可以被看作是一个去中心的认证机构(CA),可以维护身份到公钥的映射。智能合约还可以添加复杂的逻辑,有助于密钥的撤销和恢复,从而减轻最终用户的密钥管理负担。
二、产品定位
为分布式网络设计的开放式身份系统。

在这里插入图片描述

uPort建立在以太坊之上,是一个安全、易用的自主身份识别系统,致力于创建一个由用户控制的,基于区块链的数字身份,类似于一个社交媒体账户,这个基于区块链的账户可以应用于全网,此外,用户可以基于不同情况授予或废除对其信息的访问权。uPort将身份权归还给个人,其开放式身份系统允许用户在以太坊上注册自己的身份、发送和查询证书、签署交易以及安全地管理密钥和数据,Uport将数据存储在IPFS网络上。
技术架构概述
uPort技术由三个主要组件组成:智能合约、开发人员库和uPort移动应用程序。
uPort移动应用程序保存用户的密钥;以太坊智能合约构成了身份识别的核心,包含了让用户在移动设备丢失的情况下恢复其身份的逻辑;最后,开发人员库用于第三方应用程序开发人员将uPort集成到他们的应用程序当中。

在传统的公钥加密系统中,公钥表示身份。通过拥有控制公钥的私钥来确定身份的所有权。这种公钥/私钥模型加密身份系统中具有许多很好的特性,如:验证签名不需要太多基础设施 ,您只需要访问你的公钥。
这种传统模型当然也存在一些问题,如果您丢失了私钥(丢失、被盗或其他方式),您将失去身份。此外,没有额外的中心化的基础设施就不能直接撤销密钥,也不能将身份的控制权安全地转移给其他人。这些技术限制阻碍了先前对加密身份系统的尝试的应用。

uPort身份的核心是uPort标识符,一个20字节的十六进制字符串,充当全局唯一的永久化标识符。这个标识符被定义为以太坊智能合约-称之为代理合约的地址。代理合约可以转发交易,并且通过这种机制,身份与以太坊区块链上的其他智能合约进行交互。总之,uPort标识是一个非常简单的代理合约(Proxy contract),由可替换的控制器合约(Controller Contract)控制,该合同包含密钥恢复和访问控制逻辑,控制器合同又由智能手机上安全存储的密钥控制。

当用户想要与某个特定的应用程序智能合约(Application Contract)进行交互时,他们通过包含控制访问逻辑的控制器合约(Controller Contract)利用代理合约(Proxy contract)发送请求。代理合约然后将此请求转发给应用程序智能合约。该体系结构允许应用程序将代理合约地址视为交互实体。代理合约因此在用户的私钥(存储在他们的移动设备上)与应用程序智能合约之间充当了中间层。
在这里插入图片描述

将代理合约作为核心标识符的目的是允许用户在维护永久性标识符的同时替换其私钥。如果用户的uPort标识符是与其私钥相对应的公钥,那么如果他们失去保存私钥的设备,他们将失去对其标识符的控制权。
在设备丢失的情况下,控制器合约维护一个恢复委托列表,可以帮助uPort用户恢复其身份。这些委托可以是个人,比如选定的朋友和家庭成员,也可以是银行和信用合作社等机构,要让用户恢复其身份并将其连接到新设备需要仲裁委托。

在这里插入图片描述

我们也可以将uPort用于非区块链身份相关场景,这是通过使用注册合约将外部数据结构与uPort标识符进行加密绑定来实现的,注册合约(Registry contract)包含从uPort标识符到IPFS哈希的映射。IPFS是用于存储、链接和传输数据的去中心化系统。哈希保证数据结构的完整性,并且对标识符的加密绑定由控制访问智能合约,只有uPort代理被授权才能更新注册合约。
对应于IPFS哈希的数据结构可以包含配置文件信息(Profile data),如名称、头像等,它还可以包含诸如公钥之类的数据,以支持去中心的公钥基础设施,所使用的数据结构是JSON文件的集合。每个JSON文件都可以使用公钥进行数字签名以创建JSON Web令牌,这个令牌后续可以被用作链外证明。
证明是一个非常普遍的结构,它可以用作证明某个身份对另一身份的声明,可以是自签名证书,指出公钥属于特定身份。此外,证明可以用来提供双向链接到像Twitter这样的服务,允许用户利用他们现有的社交网络。
在这里插入图片描述

  1. uPort系统的主要组件
    (1)智能合约组件
    代理合约(Proxy contract)是一种最小的合约,用于转发请求,其地址是uPort身份的核心标识。

控制器合约(Controller Contract)维护对代理合约的访问控制,并允许附加功能。

在这里插入图片描述

恢复仲裁合约(Recory Contract)有助于在发生密钥丢失时恢复身份。

在这里插入图片描述

注册合约(Registry Contract)维护uPort标识符和与其关联的链外数据属性之间的加密绑定。

在这里插入图片描述

(2)数据组件
证明或凭证是包含配置文件属性和/或可验证的声明的已签名数据记录,存储在链外。
(3)开发人员组件
开发人员库允许uPort集成到去中心化应用程序或现有数字服务中。
(4)移动组件
移动应用程序将身份的私钥存储在智能手机的安全区域中,该私钥用于控制身份和签署证明。
(5)服务器组件
Chasqui - 消息服务器
在这里插入图片描述

Sensui - gas加注服务器
Infura RPC
Infura IPFS

三、使用场景及案例

在这里插入图片描述

uPort允许用户拥有和控制他们的个人身份、声誉、数据和数字资产,安全和有选择地向交易对手披露其数据,不使用密码访问数字服务,签署声明、交易和文件,控制和发送区块链上的价值,与去中心应用程序和智能合约交互和加密消息和数据。
uPort允许企业建立企业身份,便捷地接纳新客户和员工,建立客户操作流程,为员工建立安全的访问控制环境,减少摩擦,通过不保留敏感的客户信息来减少风险,增加合规性,维护供应商网络,特定权限建立具有特定角色的、行为者不可知的身份。
案例1 使用uPort身份验证的Netvote
Alice是瑞典Zug市的居民,并听说了新的Zug数字身份系统。她下载了uPort应用程序并创建了一个身份,在这一刻,uPort应用程序在她的手机上创建了一个唯一的私钥,并在以太坊网络上部署了两个智能合约,作为用户的身份中心。更具体地说,Alice的私钥管理控制器合同,如果她失去对她的电话的访问权限,则允许她恢复对她的身份的访问。控制器合同又控制她的身份代理合同或永久标识符。通过这种设置,Alice现在可以完全控制其身份及其所有相关数据,并且不会因丢失其私钥而失去访问权限。

在这里插入图片描述

大约2分钟时间,Alice在公共以太坊网络上创建了她的uPort ID,现在可以通过https://stadtzugid.zg.ch/访问Zug市的网站进行注册。在这里,她扫描QR码,首次与城市的身份互动。Zug市在公共以太坊网络上拥有自己的身份,允许其签署和验证数据。
访问Zug City的身份由城市职员管理,他使用自己的个人uPort身份授权具有特定的管理权限。整个集成的前端Web门户和用户管理系统由我们的本地开发合作伙伴ti&m建立,并由来自IFZ University的Mathias Bucher提供指导和咨询,拥有了解当地法律法规和文化的可靠的合作伙伴对于项目取得成功至关重要。
一旦Alice在城市网站上输入了她的出生日期和护照号码,她的请求就会以加密方式签名并作为新的验证请求发送到Zug市。她被要求访问该市的公民登记处,在14天内亲自核实她的详细信息。一旦确认,城市职员会向Alice发送经过城市身份签名的经过验证的证明,作为服务器端凭证。

在这里插入图片描述

Zug ID证明是一个JSON数据,包含她的验证信息,此数据不存储在区块链中,而是存储在她的设备上的脱链环境中。Alice的数据是不可以公开访问的,也不是与其他用户的数据一起存储在中央服务器上的,而是它能够选择她想要披露该信息的对象- 无论是城市、服务提供商还是其它的dapp。此外,她的护照号码、出生日期或其它敏感信息从未透露给扫描区块链的其他人。
Alice现在能够以无缝方式与Zug市的在线服务进行互动。她不需要使用帐户或密码登录,并且每次与她进行的互动时,Zug市都知道正在给她办理业务上业务的确切工作人员。每当她登陆城市的Web门户时,“请求者服务器”验证提供证明的身份与接收先前证明的身份相同。
(1)uPort ID解决方案的优点
基础设施要求低
由于Zug市依赖于以太坊网络,也无需维护复杂的用户凭据数据库。此外,由于使用了uPort的Gas服务器,它无需投资建立知识库,以便用户与以太坊区块链进行交互或购买自己的Gas。
降低安全风险
由于Zug市没有托管自己的服务器,而是将身份和证明的所有权分配给公民,因此不易受到网络攻击或数据窃取的影响。
符合GDPR标准
Zug市和任何想要使用此证明的人都完全符合GDPR标准。公司只是验证特定用例所需的最少信息量,这减少了服务提供商的责任,因为他们只保存他们使用的数据。
成本效益
与其他身份服务相比,uPort目前是免费的,因为它依赖于测试网络。一旦进入公共网络,天然气成本将在1美元至10美元之间。
可扩展
该用例中的证据是在链外发布并有选择地公开,这意味着链上交易或城市积压没有交易成本。
(2)后续发展
在上面的案例中,uPort正在传统的客户端 - 服务器模型中使用,增加了基于分布式区块链的身份的安全性,此证明也可以与任何其他服务提供商或分散应用程序(dapp)共享,例如Melon基金或Slock.it锁定以解锁自行车。Zug市想要试用的另一个用例是解锁电动自行车。在这里,像Slock.it这样的dapp可能是一个理想的集成合作伙伴,使用Zug城市验证作为任何公民自动解锁智能锁的推动者。

在这里插入图片描述

正在讨论的另一个用例是与本地税务门户网站的集成。在这里,uPort ID可用于在登录城市的税务门户时识别自己,提交纳税表并收到相应的票证或带时间戳的提交证明。

在这里插入图片描述

Alice可以在线提交所有税款,并使用她的uPort ID对提交进行数字签名!这些示例表明,许多服务提供商,dapps和政府机构可以使用这样的曾经发布的证明,并且可以大大降低入职和合规的成本。我们相信,这种新的认证经济可以从根本上改变现有的数字交易和信息共享标准。

  1. 案例2 使用uPort身份验证的Netvote
    Netvote正在与uPort整合,通过一种在投票时保持匿名和信任的方法来对选民进行身份验证。
    摘要

在这里插入图片描述

Netvote投票平台旨在与不同的身份解决方案集成。我们特别高兴与uPort整合,提供安全的匿名投票,以促进自我主权和权力下放。

选民登记
选举所有人(政府或实体)知道哪些选民可以投票给某一特定选举,传统上,这种知识通常以某种选民登记的形式被捕获。在诸如uPort的自我主权身份模型中,将向选民的设备发布凭证。

在这里插入图片描述

选民认证
一旦选民拥有投票所需的凭证(例如,Citizen Credential),他们就拥有了进行投票认证所需的一切。
选举注册商API将通过uPort QR码向选民请求公民凭证,选民将扫描QR并批准共享公民凭证以进行验证,然后,Election Registrar API将验证凭证并发布JWT。

在这里插入图片描述

投票JWT可以以用户设备上的QR或应用程序重定向的形式到达。JWT将包含以下内容:
范围:目标选民池智能合约的区块链地址
sub:uPort地址的HMAC,使用注册商API已知的秘密(这将成为选民ID,后来成为投票ID HMAC的一部分)
标准JWT字段(iat,exp,签名)
注意:选民ID被遮挡,因此如果观察到JWT内容,则无法轻易将其绑定回特定选民。它必须是确定性的,以便整个过程可以安全重复,因为区块链阻止了重复投票。在实际提交给区块链之前,选民ID本身再次通过HMAC隐藏。(这可以防止注册商将选民与投票联系起来)。HMAC秘密在选举结束时自动删除。
投票
如果使用Netvote App进行选举,选民现在打开Netvote App,扫描嵌入QR中的JWT,并加载选票。加载选票涉及阅读选民池选票元数据参考并直接从IPFS检索元数据。

在这里插入图片描述

应该注意的是,实际投票可以投射到任何符合Netvote API的客户端,包括我们的移动应用程序,其他应用程序或强化的投票设备。投票合规性和可访问性维度将根据选举的需要以及参与选举的组织或政府而有所不同。

在这里插入图片描述

一旦加载,选民可以通过Netvote验证器节点投票。选举登记处的公钥已预先配置为启用JWT的验证。只有来自相应选举登记处的JWT才能用于授权此次选举投票。
如果JWT有效,则Netvote验证器节点匿名并加密投票,然后将投票提交给区块链上的选民池智能合约。合同仅允许列入白名单的源地址,并通过将选民ID的确定性HMAC映射到存储的加密投票来在结构上避免重复投票。这个HMAC步骤对于消除重复是必要的,但也允许选民在掩盖区块链上的身份时进行修改(更改投票)。

四、产品演进路线

2018年10月25日 发布uPort库1.0
在过去的两年中,已有数千名开发人员使用uPort开发。我们聆听了他们的经验,并为以太坊和身份开发人员创建了一个全新的用户中心平台。在过去的几个月里,我们一直在努力工作,升级平台的各个方面,包括最近发布的基于标准的新身份架构和移动应用程序。这一切都是我们的使命之一,使uPort成为一个值得信赖,灵活,包容的身份解决方案,使人们能够控制他们的关系。通过uPort移动应用程序的最新版本,创建身份比以往更容易:免费、即时&无需与以太坊进行交互。

2018年9月26日 下一代uPort身份应用程序发布
经过6个月的努力,我们发布了一个新的uPort身份应用程序,其中包含完全重写的身份体系结构和新功能,例如:即时身份创建,更好的区块链隐私以及对新兴身份标准的支持。
我们的团队很高兴推出有史以来建立在公共区块链上的最先进和最私密的身份架构。我们的新架构已经大大简化。虽然仍然基于以太坊,但它现在只需要在一些有限的情况下进行区块链交互。
这为用户提供了几个主要好处:
• 即时身份创建
• 不再需要电话号码验证
• 所有身份都锚定在以太坊的主网上
• 每个应用程序自动创建以太坊主网帐户
• 改善隐私(例如,您的身份创建没有区块链记录)
自从我们在两年多前向开发人员发布我们的应用程序的第一个版本以来,我们逐步改进了基础以太坊智能合约,这标志着与我们原始架构的重大偏离。
我们的新架构基于我们提出的以太坊标准ERC1056。现在你必须做的就是创建一个以太坊密钥对,而不是在区块链上注册一个或多个智能合约。
由于不需要任何交易,严格来说,它是固定在区块链上而不是在区块链上创建的。
这个过程如此迅速和无缝,即使没有以太坊支持赌注或分片证明,也可以在一天内创建数百万个身份,这意味着我们最终可以支持非常大规模的应用程序,例如国家身份项目。

2018年8月22日 UPORT宣布推出3Box和以太坊概况
UPORT团队的成员一直在开发一种名为3BOX的新的分散式数据存储解决方案,它允许以太坊用户使用任何钱包上传和共享他们在dapps上的信息。3Box是web3的开源数据存储解决方案,允许最终用户在分散的Web上管理他们的公共和私人信息,数据存储在IPFS上并通过OrbitDB进行管理。OrbitDB和IPFS是功能强大可扩展的分布式数据库技术,在以太坊上的应用受到限制,因为当前的实现通常缺乏扩展使用的能力。Dapps通常使用注册表合同将IPFS或Orbit哈希映射到用户的以太网地址,需要为数据库的每次更新提供事务。由于对以太坊的写入是昂贵的,非即时的且无保证的,因此该模型在用户,dapps或以太坊网络的可用性和成本方面不能很好地扩展。
3Box为用户提供最新OrbitDB散列的索引服务,在以太坊上解决了这个问题。一个简单的API,供开发人员访问这些数据库并与之交互; 以及用于管理其个人资料的Web应用程序。用户现在可以立即免费更新(或允许dapps更新)他们的数据库,他们可以立即免费更新他们的数据库,他们可以在不同的dapps之间通过以太网网络公开分享他们的信息,同时限制某些信息的访问仅限于用户批准dapps。通过在一个易于查询的API端点聚合所有用户数据,3Box使开发人员可以轻松获取有关以太坊地址的信息 -  无论该数据是否存在于以太坊区块链或分布式网络上  - 并使用该信息他们提高了入职率和用户体验。

在这里插入图片描述

2017年12月 uPort + Gnosis Olympia
Gnosis是迄今为止在以太坊上构建的最成熟和令人兴奋的应用程序之一,我们非常高兴他们选择使用uPort为他们的第一个预测市场锦标赛奥林匹亚提供动力。Gnosis允许uPort用户注册并登录锦标赛平台(基本上验证一个用户逻辑的一个条目),并且还使用我们的区块链数据签名功能来处理锦标赛中的所有交易请求。这是两个非常重要的用例,有助于演示基于区块链的应用程序如何足够简单,即使是非技术用户也可以参与其中。

2017年11月 Zug首次正式公民身份证登记
在我们与Zug宣布试点计划几个月后,首次正式公民身份证登记在楚格政府办公室的现场观众面前进行。在2018年,计划使用这些基于以太坊的身份举行第一次简单的非政府投票活动。
2017年11月 Devcon3上的uPort演示

用户使用他们的uPort ID扫描QR码以验证他们的出勤情况并在他们的uPort移动钱包中接收验证。事实证明,这是一个简单但可扩展的用例,许多会议和活动都要求将其用于出勤证明,甚至是基于之前出勤的未来门票折扣等事项。

2017年7月 瑞士ZUG市的公民身份证
基于区块链的ID的一个重要里程碑:我们与Crypto Valley(瑞士楚格)的试点计划,在以太坊区块链上注册经过政府验证的公民身份证。该项目是与我们在TI&M的合作伙伴密切合作的结果,他们在开发试点和启动初始公民注册方面发挥了重要作用。这是一项具有里程碑意义的成就,可以证明分布式身份在促进政府与公民之间更大的信任和透明度方面的价值,以及扩大机构可以提供的服务的范围。

2017年6月 与巴西规划部门进行身份验证和文件签署

该计划与巴西规划部和微软进一步体现了基于区块链的身份对政府服务的价值。 巴西MoP利用uPort使政府ID能够通过区块链上传和签署文件。在这种情况下,我们演示了公开注册的标识符如何与私人政府区块链接口,这展示了以太坊提供的灵活性和适应性。

2017年5月 分散的身份基础

为了实现创建全球自我主权身份平台的目标,我们认识到需要存在基于区块链的身份提供者可以遵守的标准协议和应用。
为此,我们加入了Microsoft,Blockstack和区块链公司的核心组织,以建立分布式身份基金会(DIF)。在整个2017年,我们与该小组合作,建立了适用于区块链的基本身份标准,该小组现在由超过35个组织组成,有助于在全世界建立一个真正的自我主权身份系统。

2017年4月 创建MIND

为了响应以太网生态系统在众多网络中的快速增长,我们创建了MNID:多网络标识符。通过我们的开发,我们可以以编程方式提取地址使用的网络,以便用户可以安全地与各种基于以太坊的区块链进行交互而无需担心。

2017年3、4月 uPort AppManager
移动版alpha启动后不久,推出了uPort AppManager,使开发人员能够为其应用程序创建分散的身份。这允许dapps通过无缝交互(如推送通知)向用户标识自己并促进信任。

2017年1月 推出uPort Alpha
超过一万名用户测试了uPort应用程序的版本,以便将他们的身份注册到以太坊区块链。

蔡孟迪 Alex Cai
邮箱:caimengdi@caict.ac.cn
社交链接:https://twitter.com/alexcai35258487
手机:181 1007 6739
中国信息通信研究院 工业互联网与物联网研究所

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!