首页 > 解决方案 > 哪个验证密钥用于 Indy 中的 Steward

问题描述

我正在阅读 Hyperledger Indy SDK 的入门文档

第 4 步通过管家完成新成员入职的过程。对于文档中概述的程序,我特别提出了三个广泛的疑问。

  1. 调用账本创建 NYM 交易是什么意思?不是吗,成对的 DID 应该存储在钱包中而不是公开的。

  2. Faber 在账本中查询 Steward 的哪个键,是 Stewards 的合法 DID 还是它为 Faber 创建的键。

  3. 对于存储在钱包中的私有 DID 的情况。像 Faber 这样的实体如何获得发送连接邀请的实体的加密密钥?

标签: hyperledgerblockchainidentityhyperledger-indy

解决方案


问题 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

  1. 我认为您指的是第10步:

Faber 通过调用 did.key_for_did 向账本询问 Steward 的 DID 的验证密钥。

因此,Faber 在这里从账本中读取 Steward 的 DID 及其关联的 verkey(公钥)。然后,Faber 使用此密钥对消息进行加密 - 除了 Steward(该 Verkey 的私有部分的持有者)之外,任何人都无法解密该消息。

问题 3

以下是通常建立连接的方式:

假设建立了一些安全通道,其中一方接收来自另一方的连接邀请。例如,您可以通过 HTTPS 获得邀请,或者只是通过银行员工向您展示包含银行连接邀请的 QR 码。邀请方在生成连接邀请消息时,生成与verkey成对的DID。这包含在邀请消息中,因此假设您通过任何方式安全地发送了此邀请,可以肯定地说您可以向邀请方发送加密消息。此时,您将为此连接生成成对的 DID 和 Verkey,并将此数据发送给邀请者。至此,您已经建立了安全连接,因为你们双方为会话安全地交换了彼此的成对 DID/Verkey。


推荐阅读