最近,新的哈希函数被发明。它们的主要目的是服务于零知识证明系统的需要。我说的是波塞冬-256,斯塔卡德-256等等。参见论文。
与现有的哈希函数(如Blake3或SHA3 )相比,这些散列函数的主要优点是什么?这些功能有何不同?
发布于 2020-05-15 11:12:01
让我们看看密码散列函数是如何在零知识证明系统中使用的一个例子。下面是用Zokrates工具箱编写的代码,它是使用零知识证明系统计算哈希的一个例子。首先编译程序说明。然后,我们将继续通过设置的算术电路的设置。然后我们导出验证器并计算证明。
import "hashes/sha256/512bitPacked" as sha256packed
def main(private field a, private field b, private field c, private field d) -> (field[2]):
h = sha256packed([a, b, c, d])
return h让我们还分析另一个代码示例,以构造一个Pedersen哈希,并使用Zokrates构造零知识证明。
import "hashes/pedersen/6bit" as pedersen
def main() -> (field):
field[6] e = [1, 1, 0, 0, 0, 0]
field[2] d = pedersen(e)
5483803361072598088157572477433311028290255512997784196805059543720485966024 == d[0]
8712718144085345152615259409576985937188455136179509057889474614313734076278 == d[1]
return 1正如我们在这两个例子中所看到的,在一个密码散列函数下证明一个预图像的知识,用一个大素数域上的电路来表示,是零知识证明系统中算术电路结构中计算费用最高的部分之一。因此,所有的追求发明咆哮和赤裸裸友好的密码散列函数受到了热烈的欢迎!
在这个问题中提到的文件声称比Pedersen Hash减少了每个消息位的约束数,这可能会改善ZKSNARK的多项式承诺的构造性能。同样,所提出的二进制哈希函数STARKAD在不久的将来将有助于基于ZKSTARK的系统的构建。
我们的散列函数Poseidon比Pedersen Hash在每条消息位上使用的约束少8倍,而我们的二进制散列函数Starkad比其他最近的设计有很大的优势。
https://crypto.stackexchange.com/questions/80690
复制相似问题