Anemoi Permutation和Jive Compression模式:高效的ZK友好的哈希函数

1. 引言

Bouvier等人2022年论文《New Design Techniques for Efficient Arithmetization-Oriented Hash Functions:Anemoi Permutations and Jive Compression Mode》,开源代码见:

ZK证明系统中,要求哈希函数基于大素数域是计算友好的,如:

  • MiMC哈希函数
  • Rescue-Prime哈希函数
  • Poseidon哈希函数
  • Reinforced Concrete哈希函数
  • Griffin哈希函数

Anemoi:为新的ZK友好的哈希函数和压缩函数,其主要特性有:

  • 可高效与多种证明系统合作
  • 包含了针对特定应用的优化函数(如Merkle tree哈希以及通用哈希)
  • 性能优势明显:
    • 比R1CS约束中的Poseidon和Rescue-Prime哈希函数快2倍
    • 比Plonk约束中的高度优化的Poseidon哈希函数快28%~48%
    • 原生执行时,比Rescue-Prime哈希函数快2~3倍,具体取决于field size

2. 代码解析

https://github.com/anemoi-hash/anemoi-rust(Rust)中,当前支持的域有:

  • BLS12-377 basefield
  • BLS12-381 basefield
  • BN-254 basefield
  • ED_ON_BLS12-377 basefield (= BLS12-377 scalar field)
  • Jubjub basefield (= BLS12-381 scalar field)
  • Pallas basefield (= Vesta scalar field)
  • Vesta basefield (= Pallas scalar field)

对于以上每个域,实现了6种Anemoi sponge construction:

  • 1 column (2 cells) and rate 1
  • 2 columns (4 cells) and rate 3
  • 3 columns (6 cells) and rate 5
  • 4 columns (8 cells) and rate 7
  • 5 columns (10 cells) and rate 9
  • 6 columns (12 cells) and rate 11

在Intel i7-9750H CPU @ 2.60GHz 服务器上测试:

RUSTFLAGS="-C target-cpu=native" cargo bench --bench bls12_377 --bench vesta

基本性能为:

  • 2-to-1 compression
Field \ InstantiationAnemoi-2-1Anemoi-4-3Anemoi-6-5Anemoi-8-7Anemoi-10-9Anemoi-12-11
BLS12-377429.61 µs485.99 µs610.08 µs815.19 µs1.0179 ms1.2245 ms
Vesta129.48 µs176.58 µs243.45 µs292.13 µs406.56 µs440.80 µs
  • 10KB data hashing
Field \ InstantiationAnemoi-2-1Anemoi-4-3Anemoi-6-5Anemoi-8-7Anemoi-10-9Anemoi-12-11
BLS12-37785.369 ms35.937 ms30.141 ms28.519 ms26.151 ms24.766 ms
Vesta44.448 ms20.307 ms15.042 ms14.361 ms15.414 ms13.987 ms

与预期的一致,底层的素数域越大,哈希运算越慢。不要求algebraic group的FRI协议,可采用更小的域,使用Anemoi的效率将更高。
https://github.com/toposware/hash/tree/anemoi(Rust,基于Goldilocks域实现了state width为8,capacity为7的Anemoi哈希算法)中所实现的基于Goldilocks域 p = 2 64 − 2 32 + 1 p=2^{64}-2^{32}+1 p=264232+1 的Anemoi-8-7:

  • 当哈希10KB数据时,仅需要1.8249ms,比上面的BLS12-377和Vesta要快约15倍和7.8倍。
  • 当2-to-1 compression时,仅需3.9317us,比上面的BLS12-377和Vesta要快约207倍和74倍。

https://github.com/toposware/hash/tree/anemoi(Rust,基于Goldilocks域实现了state width为8,capacity为7的Anemoi哈希算法),除此之外,还基于Goldilocks域 p = 2 64 − 2 32 + 1 p=2^{64}-2^{32}+1 p=264232+1实现了:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值