如何建立自我主权身份的数字货币钱包

当您注册Facebook帐户时,它是免费的。或者,是吗,真的吗?正如你可以在“ Facebook和剑桥Analytica丑闻,用简单的图解释 ”中所读到的那样,剑桥Analytica利用Facebook应用程序编程接口(API)中的漏洞收集了8700万Facebook用户的原始数据。

这是一个很高的价格在当今世界,中心化公司管理您的数字身份,而您无法控制它。如果这仍然是惯例,那么大规模的数据泄露将继续发生。

您需要拥有自己的主权身份,控制并决定您应该与其他实体共享的时间和数量。在本指南中,我将描述如何建立一个自我主权身份钱包。

当今中心化数字身份管理的局限性:

身份的概念有三个组成部分,如下:

  1. 声明:个人或企业声明身份声明。
  2. 证明:提供索赔证据的文件。
  3. 证明:第三方根据其记录验证声明是否正确。

然而,在当前的数字时代,管理这3个组件的难度越来越大。您将面临中心化数字身份管理的以下问题:

  1. 您从未真正拥有自己的身份,网站和应用程序拥有它们。
  2. 这个系统效率不高,除了欺诈和侵犯你的隐私的机会很高。
  3. 身份是在孤岛中管理的,随着数十亿访问互联网,去中心化的方法只会导致问题。
  4. 您的用户名和密码去中心化在数百个网站和应用程序中,以及您的个人信息
  5. 黑客利用弱密码和数据泄露来窃取您的身份信息。
  6. 管理您的数字身份的中心化公司拥有大量用户数据,是黑客的主要目标。他们保护您的数据的成本每天都在增加。
  7. 高调的数据泄露现在是常见的新闻,许多在线用户担心参与在线世界。从长远来看,这将产生不利影响

什么是自我“主权身份”?

“自我主权身份”(SSI)就是上述问题的答案。SSI具有以下特征:

  1. 你拥有并完全控制它。
  2. 另一个人或实体只有征得您的同意才能阅读。
  3. 没有您的同意,任何人都不能使用它。
  4. 它经过数学证明,因此无可靠,没有人可以拒绝您使用SSI提出的声明。
  5. SSI是永久性的,没有黑客可以摧毁它。
  6. 它便于携带,随身携带。

使用HYPERLEDGER INDY创建一个自我主权身份钱包

在本指南中,我将介绍使用Hyperledger Indy构建SSI钱包的过程。Indy是处于不同发展阶段的几个Hyperledger财团项目之一。

Hyperledger财团是IBM,思科,美国运通等主要的行业参与者,致力于开发企业区块链。

Indy是一个分布式分类账,专为去中心化身份而设计。该项目提供工具,库和可重用组件,以创建基于区块链的数字身份。

Evernym是一家专门从事数字身份空间的区块链公司,它创建了一个名为Sovrin的基于区块链的平台。它是一个创建去中心化数字身份的平台。Evernym已将他们的代码捐赠给Indy。

与INDY建立自我主权身份钱包:项目概述

我将使用示例项目解释该过程。在这个案例研究中,一个虚构的大学生从一个虚构的大学毕业,并申请一个虚构的公司的工作。

然后,她在银行申请汽车贷款。学生在申请工作时打算用她的大学成绩单作为她的教育证明。然后,她将使用她的工作细节证明自己的汽车贷款信誉。

就目前情况而言,她会发现这个过程缓慢,复杂并侵犯了她的隐私。她还会注意到这个过程是不安全的。阅读“Libindy入门”中的案例研究。在本指南中,我将多次引用命令和代码片段,因此,我们将其称为“参考案例研究”。

在案例研究中,学生的名字是Alice,她的学院的名字是Faber学院,公司是Acme Corp,银行的名字是Thrift bank。我们将在本指南中引用这些名称。此外,由于我想展示创建SSI钱包的过程,我将描述SDK中使用的命令而不是应用程序的屏幕。

爱丽丝与法贝尔大学的主权身份互动:

爱丽丝知道她的大学正在提供数字成绩单,并与学院进行如下互动:

  1. 她登录学院网站,点击“获取成绩单”索取成绩单。
  2. Faber学院使用Indy并且已经为她建立了SSI。稍后我将更详细地描述这个方面。
  3. 学院向Alice推荐了一个SSI应用程序,作为“Get transcript”工作流程的一部分,它会自动安装。
  4. 单击“获取脚本”时,Alice还会下载具有Indy连接请求的文件。这允许Alice连接到分布式账本中的另一方,在这种情况下是Faber学院。
  5. 当Alice启动应用程序时,它会询问她是否会接受与Faber大学的连接请求。

为FABER,ACME,THRIFT和政府设置信任锚凭证:

案例研究使用’Libindy’,即Hyperledger Indy的软件开发工具包(SDK)。Indy分布式分类帐存储“身份记录”,其中包含以下内容:

  1. 公钥;
  2. 服务端点;
  3. 凭证架构;
  4. 凭证定义。

每个身份记录都链接到一个唯一的“去中心化标识符”(DID),分布式分类帐在没有任何中心化权限的情况下解析它。身份所有者可以拥有多个DID。

案例研究使用两种类型的DID,也称为NYM,如下所示:

  1. Verinym:这是身份证所有者的合法身份。
  2. 假名:用于维护隐私的盲法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,只有连接中的两方知道,但没有其他人知道。“入职”是建立联系的过程。

实体需要执行以下操作:

  1. 在分类帐外建立联系人,例如通过电话,或填写网站上的表格;
  2. 管家创建一个新的DID并在钱包中存储一个实体;
  3. Steward将交易发送到分类账;
  4. Steward创建连接请求;
  5. 连接请求被发送到实体,例如Faber,并且Faber接受它;
  6. Faber现在在他们的钱包中创建一个新的DID记录,仅用于管家;
  7. 然后Faber创建连接响应;
  8. 然后他们要求分类账验证管理员的DID;
  9. Faber用Stewards的密钥匿名加密货币连接响应;
  10. 然后他们将它发送给管家,管家解密它;
  11. Steward通过比较哈希来验证Faber;
  12. 现在,管家将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将请求分为三类属性:

  1. 她将揭示价值的属性;
  2. 她不会透露价值的属性;
  3. 不需要验证的属性。

她已经拥有成绩单凭证,这为她提供了可验证属性的值。现在,她需要像申请成绩单时那样获得凭证架构和定义。她发送了她对工作申请证明请求的回复。

Acme现在收到她的申请,他们需要验证。他们还必须获取Alice提供的所有凭据的凭证架构和凭证定义,然后他们就可以验证她的应用程序了。

使用工作证明和大学成绩单的汽车贷款申请:

在我们探索区块链自我主权身份的项目中,我们现在将看到Alice申请汽车贷款,引用了与Acme公司合作的证据。为此,Alice需要申请Acme公司的工作证明。

该过程类似,她需要检查凭证架构和定义并申请职务证书凭证。Acme Corp.按照我之前描述的流程向她颁发了工作证书凭证,并且Alice将其存储在她的钱包中。

爱丽丝将向Thrift银行申请汽车贷款,他们需要查看她受雇的证明,并符合一定的薪资水平要求。因此,她首先通过他们的网站贷款申请屏幕建立了一个Indy连接。

在我们的例子中,Thrift Bank汽车贷款申请需要两类证明:

  1. 就业状况和工资水平,以证明贷款的资格;
  2. ‘了解您的客户’(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/

提示:投资有风险,入市需谨慎,本资讯不作为投资理财建议。请理性投资,切实提高风险防范意识;如有发现的违法犯罪线索,可积极向有关部门举报反映。
你可能还喜欢