如何建立自我主权身份的数字货币钱包
当您注册Facebook帐户时,它是免费的。或者,是吗,真的吗?正如你可以在“ Facebook和剑桥Analytica丑闻,用简单的图解释 ”中所读到的那样,剑桥Analytica利用Facebook应用程序编程接口(API)中的漏洞收集了8700万Facebook用户的原始数据。
这是一个很高的价格在当今世界,中心化公司管理您的数字身份,而您无法控制它。如果这仍然是惯例,那么大规模的数据泄露将继续发生。
您需要拥有自己的主权身份,控制并决定您应该与其他实体共享的时间和数量。在本指南中,我将描述如何建立一个自我主权身份钱包。
当今中心化数字身份管理的局限性:
身份的概念有三个组成部分,如下:
- 声明:个人或企业声明身份声明。
- 证明:提供索赔证据的文件。
- 证明:第三方根据其记录验证声明是否正确。
然而,在当前的数字时代,管理这3个组件的难度越来越大。您将面临中心化数字身份管理的以下问题:
- 您从未真正拥有自己的身份,网站和应用程序拥有它们。
- 这个系统效率不高,除了欺诈和侵犯你的隐私的机会很高。
- 身份是在孤岛中管理的,随着数十亿访问互联网,去中心化的方法只会导致问题。
- 您的用户名和密码去中心化在数百个网站和应用程序中,以及您的个人信息
- 黑客利用弱密码和数据泄露来窃取您的身份信息。
- 管理您的数字身份的中心化公司拥有大量用户数据,是黑客的主要目标。他们保护您的数据的成本每天都在增加。
- 高调的数据泄露现在是常见的新闻,许多在线用户担心参与在线世界。从长远来看,这将产生不利影响
什么是自我“主权身份”?
“自我主权身份”(SSI)就是上述问题的答案。SSI具有以下特征:
- 你拥有并完全控制它。
- 另一个人或实体只有征得您的同意才能阅读。
- 没有您的同意,任何人都不能使用它。
- 它经过数学证明,因此无可靠,没有人可以拒绝您使用SSI提出的声明。
- SSI是永久性的,没有黑客可以摧毁它。
- 它便于携带,随身携带。
使用HYPERLEDGER INDY创建一个自我主权身份钱包
在本指南中,我将介绍使用Hyperledger Indy构建SSI钱包的过程。Indy是处于不同发展阶段的几个Hyperledger财团项目之一。
Hyperledger财团是IBM,思科,美国运通等主要的行业参与者,致力于开发企业区块链。
Indy是一个分布式分类账,专为去中心化身份而设计。该项目提供工具,库和可重用组件,以创建基于区块链的数字身份。
Evernym是一家专门从事数字身份空间的区块链公司,它创建了一个名为Sovrin的基于区块链的平台。它是一个创建去中心化数字身份的平台。Evernym已将他们的代码捐赠给Indy。
与INDY建立自我主权身份钱包:项目概述
我将使用示例项目解释该过程。在这个案例研究中,一个虚构的大学生从一个虚构的大学毕业,并申请一个虚构的公司的工作。
然后,她在银行申请汽车贷款。学生在申请工作时打算用她的大学成绩单作为她的教育证明。然后,她将使用她的工作细节证明自己的汽车贷款信誉。
就目前情况而言,她会发现这个过程缓慢,复杂并侵犯了她的隐私。她还会注意到这个过程是不安全的。阅读“Libindy入门”中的案例研究。在本指南中,我将多次引用命令和代码片段,因此,我们将其称为“参考案例研究”。
在案例研究中,学生的名字是Alice,她的学院的名字是Faber学院,公司是Acme Corp,银行的名字是Thrift bank。我们将在本指南中引用这些名称。此外,由于我想展示创建SSI钱包的过程,我将描述SDK中使用的命令而不是应用程序的屏幕。
爱丽丝与法贝尔大学的主权身份互动:
爱丽丝知道她的大学正在提供数字成绩单,并与学院进行如下互动:
- 她登录学院网站,点击“获取成绩单”索取成绩单。
- Faber学院使用Indy并且已经为她建立了SSI。稍后我将更详细地描述这个方面。
- 学院向Alice推荐了一个SSI应用程序,作为“Get transcript”工作流程的一部分,它会自动安装。
- 单击“获取脚本”时,Alice还会下载具有Indy连接请求的文件。这允许Alice连接到分布式账本中的另一方,在这种情况下是Faber学院。
- 当Alice启动应用程序时,它会询问她是否会接受与Faber大学的连接请求。
为FABER,ACME,THRIFT和政府设置信任锚凭证:
案例研究使用’Libindy’,即Hyperledger Indy的软件开发工具包(SDK)。Indy分布式分类帐存储“身份记录”,其中包含以下内容:
- 公钥;
- 服务端点;
- 凭证架构;
- 凭证定义。
每个身份记录都链接到一个唯一的“去中心化标识符”(DID),分布式分类帐在没有任何中心化权限的情况下解析它。身份所有者可以拥有多个DID。
案例研究使用两种类型的DID,也称为NYM,如下所示:
- Verinym:这是身份证所有者的合法身份。
- 假名:用于维护隐私的盲法ID。
Indy分类帐是公开许可的,如果您想发布DID,您需要成为它的“信任锚”。这表示分类帐已经知道信任锚的辅助角色。
在我们的示例中,已经设置了“管家”角色,并且不同的实体需要联系管理员。
连接到INDY节点矿池:
自我主权身份钱包开发的下一步是连接到Indy节点矿池。收到适当的角色后,需要连接到节点矿池以读取分类帐或写入分类帐。
首先需要使用’genesis transactions’设置矿池配置。矿池配置具有一对矿池配置名称和JSON。JSON文件具有包含genesis事务列表的文件的路径,您需要使此路径正确。
您可以使用“create pool”和“open pool”命令创建命名矿池配置并连接到它。
获得STEWARDS’VERINYM的所有权:
为了使您能够轻松学习,在此示例项目中,分类帐已经存储了一些管家Verinyms。您还可以使用种子值为这些NYM生成密钥。使用这些可以恢复这些DID的签名值,并获得DID所有权。
Libindy使您可以创建钱包,您可以在其中存储DID,密钥等。您需要使用’create wallet’命令创建一个命名钱包,并使用’open wallet’命令打开它。
您现在可以通过发出“创建并存储我的DID”命令来创建DID并将其存储在钱包中。
STEWARD ONBOARDS不同的实体:
创建基于区块链的自我主权身份钱包的下一步是实体的入职。Faber,Acme,Thrift和政府现在需要与管家建立个人联系。
每个连接都是一对DID,只有连接中的两方知道,但没有其他人知道。“入职”是建立联系的过程。
实体需要执行以下操作:
- 在分类帐外建立联系人,例如通过电话,或填写网站上的表格;
- 管家创建一个新的DID并在钱包中存储一个实体;
- Steward将交易发送到分类账;
- Steward创建连接请求;
- 连接请求被发送到实体,例如Faber,并且Faber接受它;
- Faber现在在他们的钱包中创建一个新的DID记录,仅用于管家;
- 然后Faber创建连接响应;
- 然后他们要求分类账验证管理员的DID;
- Faber用Stewards的密钥匿名加密货币连接响应;
- 然后他们将它发送给管家,管家解密它;
- Steward通过比较哈希来验证Faber;
- 现在,管家将Faber的DID的NYM交易发送到分类账。
Faber现在与管家联系在一起。其他实体需要遵循相同的流程。
设置凭证架构和凭证定义:
这是一个基本逻辑示意图结构,用于指定凭据可以拥有的属性列表。如果属性发生更改,则无法更新现有架构,因此需要创建新架构。
任何信任锚都可以在分类帐中创建和保存凭证模式。他们通过发出’create schema’命令来完成它。
当发行者签署凭证时,他们使用凭证定义中定义的密钥,并且必须满足凭证模式。与模式一样,您也无法更改凭据定义。如果需要更改密钥,则需要创建凭据定义。
任何信任锚都可以创建凭证定义。
在我们的示例中,Fabre需要创建脚本凭证模式并为其发布凭证定义。此外,Acme需要创建作业证书凭证模式。
爱丽丝从FABER学院获得她的成绩单:
大学成绩单是一种证书,并且有一些关于学生身份的信息。在我们的示例项目中,Alice需要获取此凭据,Faber学院需要向她发放。
Faber学院与Alice建立了联系,并为她提供了一份证书,向她发出成绩单。你可以理解,Faber学院是这个证书的可信发行人,而Alice需要它来证明她的教育声明。他们需要进行通信,并且他们在Indy中的消息使用经过身份验证的加密货币方案进行加密。
由于凭证符合凭证模式,Alice可以在分布式分类帐中查看凭证的通用属性。
但是,她需要创建一个主秘密来接收她自己的成绩单。主密钥组合来自多个凭证的数据,并且对于实体是唯一的。Alice使用参考案例研究中指定的命令创建主密钥并将其存储在钱包中。
但是,Alice正在请求具有特定凭据定义的凭证,并且她也需要该凭证来请求她的成绩单。她结合了这个和她的主要秘密,并请求她的成绩单。
Faber college为Alice的成绩单为每个属性创建原始值和编码值,然后将成绩单发送给Alice。爱丽丝收到了它并存放在她的钱包里。
使用成绩单凭证的工作申请:
在我们使用区块链探索自我主权身份的项目的下一阶段,Alice正在申请Acme公司的工作。她访问他们的网站并点击工作申请链接,结果,Indy连接请求被下载到浏览器。Alice使用我上面描述的相同过程建立连接。
Alice现在必须回复Acme的工作申请证明请求。在此示例中,请求具有一些可验证的属性,例如学位和毕业状态。它还有一些不需要验证,如名字和电话号码。
Alice将请求分为三类属性:
- 她将揭示价值的属性;
- 她不会透露价值的属性;
- 不需要验证的属性。
她已经拥有成绩单凭证,这为她提供了可验证属性的值。现在,她需要像申请成绩单时那样获得凭证架构和定义。她发送了她对工作申请证明请求的回复。
Acme现在收到她的申请,他们需要验证。他们还必须获取Alice提供的所有凭据的凭证架构和凭证定义,然后他们就可以验证她的应用程序了。
使用工作证明和大学成绩单的汽车贷款申请:
在我们探索区块链自我主权身份的项目中,我们现在将看到Alice申请汽车贷款,引用了与Acme公司合作的证据。为此,Alice需要申请Acme公司的工作证明。
该过程类似,她需要检查凭证架构和定义并申请职务证书凭证。Acme Corp.按照我之前描述的流程向她颁发了工作证书凭证,并且Alice将其存储在她的钱包中。
爱丽丝将向Thrift银行申请汽车贷款,他们需要查看她受雇的证明,并符合一定的薪资水平要求。因此,她首先通过他们的网站贷款申请屏幕建立了一个Indy连接。
在我们的例子中,Thrift Bank汽车贷款申请需要两类证明:
- 就业状况和工资水平,以证明贷款的资格;
- ‘了解您的客户’(KYC)。
Alice将她的凭证信息分离到她的钱包中,并首先将就业证明发送给Thrift Bank,以证明她的资格。在银行验证她的资格后,她发送了她的KYC证书。对于KYC证明,Alice使用她的大学成绩单。
Alice在向Acme公司证明其学历时使用了她所使用的过程。
这样就完成了创建自我主权身份钱包的示例项目。
创建区块链自我主权身份钱包的成本:
我提到的示例项目只有少数功能和有限数量的实体。您的自我主权身份钱包开发项目可能会更复杂,您的成本将根据您所在地区的人力成本而有所不同。
Blockchain是一项新技术,Hyperledger Indy也是一项新技术。虽然您的团队中可能已经有UI / UX开发人员和测试人员,但区块链开发人员需要付出高昂的代价,因为这是一种利基技能。考虑获得专业帮助。
原文:https://www.devteam.space/blog/how-to-build-a-self-sovereign-identity-wallet/