gpt4 book ai didi

hash - 为什么 `blake2_256` 在使用 decl_storage 时不能防止 StorageDoubleMap 中的 "first key pair"被破坏?

转载 作者:行者123 更新时间:2023-11-29 08:08:25 28 4
gpt4 key购买 nike

decl_storage!是一个“过程宏”,用于存储数据以使其在后续 block 中可用。

它说如果用户能够在 double_map 中设置第一个 key 对,那么我们就不能信任那个 key 对,所以我们必须使用加密哈希例如 blake2_256 以防止“所有存储项目的其他值被泄露”。

然后它继续说,如果用户能够在 double_map 中设置第二个 key 对,那么我们就不能信任那个 key 对,所以我们必须使用诸如 blake2_256 之类的加密哈希器来防止“存储中具有相同第一 key 的其他项目遭到破坏”。

关于第一对 key ,为什么说只是为了防止“所有存储项的其他值被泄露”blake2_256 不是也用于防止第一个 key 对本身 被泄露(而不仅仅是“其他值”)吗?

最佳答案

假设 module1.someValue 的哈希值是 0x12345678

module2.doubleMapValue.firstKey(value1) 的哈希是 0x1234

module2.doubleMapValue.secondKey(value2) 的哈希是 0x5678

这意味着 module2.doubleMapValue.fullKey(value1, value2)module1.someValue 具有相同的哈希值。即值存储在同一个地方。

如果用户能够控制 module2.doubleMapValue 的两个键并计算出 value1value2 的值,那么他们将能够覆盖 module1.someValue 的值并导致安全问题。

这就是为什么如果值由用户控制,则 double map 的 key1 的散列函数需要是密码散列器。否则,用户可能能够制作 value1,使其与所有其他模块的存储发生冲突,从而危及它们。

如果用户不控制 key2,double map 提供了清除所有带有 hash(key1) 前缀功能的键,也可能被劫持造成麻烦。

关于hash - 为什么 `blake2_256` 在使用 decl_storage 时不能防止 StorageDoubleMap 中的 "first key pair"被破坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56237091/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com