hyperledger - 哪个验证密钥用于 Indy 中的 Steward
问题描述
我正在阅读 Hyperledger Indy SDK 的入门文档。
第 4 步通过管家完成新成员入职的过程。对于文档中概述的程序,我特别提出了三个广泛的疑问。
调用账本创建 NYM 交易是什么意思?不是吗,成对的 DID 应该存储在钱包中而不是公开的。
Faber 在账本中查询 Steward 的哪个键,是 Stewards 的合法 DID 还是它为 Faber 创建的键。
对于存储在钱包中的私有 DID 的情况。像 Faber 这样的实体如何获得发送连接邀请的实体的加密密钥?
解决方案
问题 1
您的困惑是正义的,您指出的内容现在也使我感到困惑。我求助于 Indy 社区并了解到演练教程的这一部分有点过时了。引用 Hyperledger Indy 的 RocketChat 频道的 Stephen Curran 的话:
成对的 DID 概念还不够充实,因此代码中的所有 DID 都被写入分类帐。
详细说明公共和成对的 DID:
NYM Transaction 写入一个带有关联 Verkey(密钥对的公共部分)的 DID。但是,您必须区分公共 DID 和成对 DID。
Public DID - 是您在此处发布以供所有人知道的标识符。如果你是一个机构,你希望有这样的标识符。然后人们/他们的设备可以使用它来建立与机构的初始安全连接。
Pairwise DID - 是识别您与某人建立的安全通道的 DID。例如,如果您使用他们的公共 DID 联系了一个机构,他们会生成成对的 DID(密钥对和 DID 标识符)用于与您交谈。您还将生成成对 DID 以识别与它们的连接(并使用与成对 DID 关联的密钥加密通信)
问题2
- 我认为您指的是第10步:
Faber 通过调用 did.key_for_did 向账本询问 Steward 的 DID 的验证密钥。
因此,Faber 在这里从账本中读取 Steward 的 DID 及其关联的 verkey(公钥)。然后,Faber 使用此密钥对消息进行加密 - 除了 Steward(该 Verkey 的私有部分的持有者)之外,任何人都无法解密该消息。
问题 3
以下是通常建立连接的方式:
假设建立了一些安全通道,其中一方接收来自另一方的连接邀请。例如,您可以通过 HTTPS 获得邀请,或者只是通过银行员工向您展示包含银行连接邀请的 QR 码。邀请方在生成连接邀请消息时,生成与verkey成对的DID。这包含在邀请消息中,因此假设您通过任何方式安全地发送了此邀请,可以肯定地说您可以向邀请方发送加密消息。此时,您将为此连接生成成对的 DID 和 Verkey,并将此数据发送给邀请者。至此,您已经建立了安全连接,因为你们双方为会话安全地交换了彼此的成对 DID/Verkey。
推荐阅读
- reactjs - 如何使用 Next.js 循环获取数组并显示结果
- python - 在python中将构造函数添加到类ordered_dict
- python-3.x - 转换为二进制时出现空格问题
- android - 无法测量底部导航栏的高度
- python - 如何通过从S3导入文件来动态计算火花数据框每一列中非空值的百分比?
- r - as.POSIXct.numeric(time1, tz = tz) 中的错误:必须提供“原点”
- google-apps-script - 如何将变量从 .gs 文件发送到 .html 文件
- apache-spark - 在 SPARK 中将多列合并为单列
- android - Android FCM 通知第一次无法在后台工作
- python - CVLIB - 如何在原始图像中添加模糊的子面?