【问题标题】:How to recalculate private data hash from Hyperledger Fabric如何从 Hyperledger Fabric 重新计算私有数据哈希
【发布时间】:2019-10-01 09:14:41
【问题描述】:

我需要重新计算私有数据的哈希值以证明数据的完整性。当使用私有数据集合时,私有数据存储在 SideDBs 中,并且根据文档对分类帐上的数据进行哈希处理。基本上这个问题分为两个子问题:

  • 如何访问私有数据的哈希?
  • 使用哪种方法重新计算保存在分类帐上的哈希?

提前致谢。

我使用带有私有数据的 Hyperledger Fabric v1.4.2。我按照弹珠的例子。

我希望能够计算私有数据散列并验证它是否与账本中保存的散列相对应。

【问题讨论】:

  • 嗨,我遇到了同样的问题。你设法让它在你身边工作吗?

标签: hash hyperledger-fabric hyperledger


【解决方案1】:

要获取 SHA256 哈希(使用 Fabric 1.4.x 合约 API),请使用:

let pdHashBytes = await ctx.stub.getPrivateDataHash(collectionA, readKey);
let actual_hash = pdHashBytes.toString('hex');

您可以计算写在 Ubuntu 上的私有数据,如下所示。

echo -n "{\"name\":\"Joe\",\"quantity\":999}" |shasum -a 256

并验证它们是否匹配。这就是使用私有数据方法和验证模式的机制。现在让我们添加有关盐渍机制的信息,如本文其他地方所述。

对于私有数据的大多数用途,您很可能会使用随机盐,这样私有数据就不会在许可的区块链网络中(在协议方之间)受到暴力攻击。 salt 在与私有数据相同的瞬态字段中传递。并且(稍后),在重新计算私有数据哈希时,它需要包含在私有数据本身中。见https://hyperledger-fabric.readthedocs.io/en/release-1.4/private-data-arch.html#protecting-private-data-content

【讨论】:

  • 只是一个评论。应该小心 JSON 有效负载。人们经常创建一个对象并将其转换为 JSON 字符串,例如使用 Node.js 中的 JSON.stringify 将其写入分类帐。但是,其中许多函数不保证最终字符串中属性的顺序。最后,对于同一个对象,可能会得到不同的字符串,因此可能会得到不同的哈希值(一个是手动计算的,一个是在账本中计算的)。
【解决方案2】:

不要使用它,私有数据是安全漏洞。

令我惊讶的是,之前没有人提到过这一点,所以我想我最好在造成更多损失之前指出这一点。

私有数据背后的逻辑很简单,它将数据放在本地嵌入式数据存储中,并将该数据的散列放在区块链上。

问题在于加密散列不是一种加密机制,任何人使用相同的散列算法(也非常标准化)散列的相同数据将始终得到相同的散列!这正是哈希函数的设计目的,这也是我们在数字签名中使用哈希以允许任何人验证签名数据的原因。

然而,这也意味着任何人都可以通过字典攻击“解密”散列背后的数据。

散列很便宜,普通笔记本 CPU 内核上每个散列的成本约为 3 微秒,基本上我可以在一小时内在单个笔记本 CPU 内核上创建 10 亿个候选散列,并将它们与 Hyperledger Fabric 上的散列进行比较分布式账本技术。

我只是在谈论在我的笔记本电脑上使用单核,甚至不是我笔记本电脑 50% 的功率

为什么危险?因为如果攻击者连接到区块链系统,攻击者知道被散列的数据范围(等等,交易ID,项目名称,银行名称,地址,手机号码),因此您可以轻松创建字典攻击来获取散列后的真实数据。

向每个要散列的数据添加盐怎么样?嗯,这是 Hyperledger Fabric 没有做的一件事。

为他们辩护,Hyperledger 没有实施盐,因为很难将盐传递给交易对手。您不能使用 DLT 传递盐值,因为攻击者会看到它,因此您必须与对方创建另一个 P2P 连接。如果您需要与所有交易对手建立联系,那么首先使用区块链有什么意义?

真可怕,这么多人都在使用这个安全整体。

【讨论】:

  • 感谢您的回复。我知道这可能很危险,但这是为了学习。
猜你喜欢
  • 2021-12-15
  • 2018-12-28
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
  • 2018-08-19
  • 1970-01-01
相关资源
最近更新 更多