ICICLE v4 introduces support for lattice-based cryptography, enabling a new class of post-quantum and privacy-preserving applications. Lattices provide a strong foundation for post-quantum cryptography, support a range of cryptographic protocols, and lay the groundwork for advanced schemes such as fully homomorphic encryption (FHE).
Here are some of the protocols we’ve implemented so far using v4:
ML-KEM
ICICLE’s lattice upgrade enables post-quantum cryptography, starting with NIST FIPS203 standard, aka ML-KEM, now supported in C++, Rust, and Go, and paving the way for more to come. The CUDA code is fully open source and outperforms state of the art.
.png)
Labrador
Labrador has become an important tool in lattice cryptography, already seeing applications in tasks like post-quantum signature aggregation.
Labrador is a zkSNARK designed to produce almost constant size lattice-based zero-knowledge proofs. It is the first practical lattice-based zkSNARK. Since the protocol relies only on lattice assumptions, it is also post-quantum secure. By exploiting the stronger lattice based module SIS assumption, it is able to create proofs of approximately 50 kB across a wide range of practically relevant R1CS sizes. These are much smaller in comparison to the proofs generated by hash based PCP arguments.
Labrador can be defined for any ring Z_q where q ≈ 2^64, An advantageous choice is given by q= p1p2 where p1,p2 are 31-bit primes with high 2-adicity and efficient modular reductions. We chose p1 to be the prime of Baby Bear,and p2 the prime of Koala Bear, in what we are calling the Baby Koala ring.
We’ve implemented Labrador using ICICLE v4. Our version runs on both CPU and GPU. It’s fast, simple, and highly readable. This brings post-quantum proving closer to real-world use. Read the full article here.
.png)
Build your own Lattice cryptography
Our new lattice API is available in C++ and in Rust. For easy onboarding, we suggest starting with Rust. We wrote a detailed lattice dev docs including code examples for the new API.
Core Types
Zq
Rq
/Tq
— Polynomial ringsZq[X]/(Xⁿ + 1)
Rq
refers to the coefficient (standard) representation.Tq
refers to the evaluation (NTT-transformed) representation.- In ICICLE, both share a single unified trait.
We used the C++ API to implement our Labrador prover. The same API can be used for other lattice based provers such as Greyhound. For the LatticeFold family we are still missing Sumchecks over rings (stay tuned!).
Supported Operations
- Negacyclic Number-Theoretic Transforms (NTT)
For fast polynomial multiplication inTq
- Matrix Operations
Matrix multiplication and transpose - Vector Operations
Elementwise arithmetic, sum-reduction, scalar ops - Balanced Base Decomposition
Represent elements in base-b
with digits in(-b/2, b/2]
- Norm Computation
ℓ₂ and ℓ∞ norms with bound checking - Johnson–Lindenstrauss (JL) Projection
Randomized projection with reproducible seeds - Random Vector Sampling
Efficient, seedable generation of vectors overZq
orRq
- Challenge Sampling
Rejection sampling of polynomials satisfying operator norm bounds
ICICLE is designed for cryptographers. We encourage you to explore the new API and if you find something that’s missing for your protocol, or a bug, please let us know 🙌🏻.
Better Dev Experience
The real highlight of this version is actually not lattices but our new object-oriented API for field operations. This change makes ICICLE more intuitive to use across all supported languages.
The change includes a complete redesign of field operations from static methods to instance methods, method-chaining support, improved Rust trait design with standard operator overloading, and more!
Finally, in v4, the Program API has been moved from VecOps to a dedicated Program module for better organization and type safety.
To learn more about the conceptual changes and how to migrate from v3, please visit our Migration Guide.
What We've Always Aimed For
From day one, ICICLE has been built with flexibility in mind, a cryptographic engine designed to support more hardware, more languages, and more cryptographic primitives. v4 continues that vision with lattice-based cryptography, and we’re not stopping here. Expect ICICLE to keep growing, adapting, and powering the next generation of ZK and post-quantum applications.
Check out the full v4.0.0 release notes to learn more.