@golang library for developing zk-SNARKs and fast cryptography @Consensys

Joined April 2021
gnark retweeted
Finally after 18 mos, my PR to gnark got merged: BLS12-381 G2 signature verification circuit implementation. My original PR was github.com/Consensys/gnark/p… Then @ikubjas developed more codes based on it and it became github.com/Consensys/gnark/p…, merged four days ago. Glad to contribute.
gnark retweeted
🌟 Exciting news! Linea is participating in the House of ZK’s Ethproofs Summit on June 10th! Join us for insightful talks from @DeclanFox14, Head of Linea, and @alexand_belling, Principal of Cryptography Research. Don’t miss out on this opportunity to dive deep into the world of zero-knowledge proofs, limitless provers, and more! Sign up here: lu.ma/hozkethproofs
gnark has also been extensively audited. Go see audit reports github.com/consensys/gnark?t… (with @LeastAuthority, @OpenZeppelin, @zksecurityXYZ, @ConsensysAudits). NB! gnark is provided as is and we do not make any guarantees on the safety and reliability.
6
- small field implementations (BabyBear and KoalaBear) - improved KZG MPC setup primitives - shplonk and fflonk primitives - more examples (Sudoku, recursive proving, input hashing for efficient recursion) - non-native multivariate evaluation (thanks @ikubjas)
- updated ICICLE GPU prover backend for Groth16 over BN254 (thanks @jeremyfelder). Hopefully soon also PLONK and other curves! - emulated and native pairing check optimizations (now almost 2x faster!). Thanks @YoussefElHousn3 - faster ARM proving using assembly. Thanks @zkgbo!
1
1
We have released gnark version v0.12.0. See the highlights below: - fixed security advisory github.com/Consensys/gnark/s… which caused OOM during keys deserialization for crafted inputs. Thanks @Pat_Ventuzelo for reporting. - optimized logderivative argument (thanks @mmkostrzewa)
1
2
7
Dedicated circuit fuzzer for @gnark_team 👇👇👇
It has been exciting to work together with @ConsensysAudits to improve the @gnark_team coverage. They have now publicly launched the Rio fuzzer, see the announcement: linea.mirror.xyz/CQIdkJv8NcS… See the list of found issues github.com/Consensys/gnark/i… 👇
1
6
See the full list of public gnark audits at github.com/consensys/gnark?t… Follow us here and on Github for more announcements!
1
We have similar commitment construction for PLONK backend also. But for PLONK we already randomized individual commitments and malleability is prevented through PLONK verification equations.
1
1
To confirm - these issues were only theoretically relevant for the Groth16 proving backend in non-standard usage. PLONK was and is safe!
1
1
In our fix, when commitment is used, we add a dummy constraint during the circuit compilation time which is then randomized by the prover at proving time. This approach allows us to keep the existing G16 verification equations with minimal prover overhead.
1
1
However, in practical circuits the search space explodes quickly to sizes which makes the brute-force approach infeasible. As an example - even doing one non-native multiplication in circuit would already mitigate the attack.
1
1
When the search space for the committed witness elements is small, this leads to allowing an attacker to enumerate all values to see which lead to expected commitment value.
1
1
The second issue about the ZK-ness of the commitment arises as we didn't blind the commitment as the blinding would have prevented directly checking the G16 verification equations.
1
1
To really fix the issue for the proof system, we instead use less efficient batching method which prevents the malleability of the individual commitments.
1
1
Instead, if in circuit we need multiple commitments, we batch all commitment calls to a single backend commitment through the multicommit package. gnark's standard gadgets all rely on the multicommit feature.
1
1