The qFALL project aims to improve the implementation structure when developing lattice-based cryptography. As part of this, the library suite describes a toolkit for lattice-based cryptography developed in Rust. The libraries use FLINT, adapted and modified to support idiomatic Rust behavior with a focus on usability. Our mission is to guide researchers with the development of post-quantum cryptographic schemes.

Our intentions

We solve the following fundamental challenges that arise with implementing complex lattice schemes:

  1. Gap between Theory and Code: We provide research-close notation and abstraction levels that are native to researchers, while ensuring memory safety through Rust and preserving efficiency through FLINT.
  2. Performance and Safety: Memory leaks are common when developing crytographic constructions, and often go unnoticed until an error occurs. With Rustโ€™s memory management, these concerns can be eliminated. We mapped FLINTโ€™s functions to Rust and incorporated them such that they are safe and the optimised functions can be used without concerns for accidental leaks.
  3. Modular Prototyping: By having interchangeable layers in the implementations, researchers can easily switch between different implementations and progress towards thei final implementation quickly
  4. Ideal Process of Implementing: Researchers rarely find the additional time to implement a prototype, if they have no use for it later. In our ideal imagination, prototyping becomes very quickly using the building blocks from our library suite, and for the final implementation, all parts that were coded using our library suite are removed step-by-step with application-specific optimisations. By making these stepwise changes, the model can be consistently checked during the development and correctness can be ensured.

Our Libraries

The qFALL project is structured into three dedicated Rust crates, each serving a distinct purpose:

Crate ย  Core Function Example Content
qFALL-math githubcrates.iodocs.rsbuild The Mathematical Foundation Arbitrary-precision arithmetic for integers, quotient rings over integers, and polynomial rings.
qFALL-tools githubcrates.iodocs.rsbuild Cryptographic Building Blocks High-level primitives like Gadget Trapdoors, short basis generation, and the abstracted behavior such as PSFs.
qFALL-schemes githubcrates.iodocs.rsbuild Explicit Cryptographic Schemes Implementations of lattice-based schemes, like signatures and encryption schemes.

Checkout our Tutorial tutorial

We provide a markdownbook to help you get started with our project. We highly advise to follow along the tutorial to get to know our project and explore its features.

Using our Library for Lectures

Our library can be used to get a deeper understanding of cryptographic constructions, schemes and also parameter choices. We have provided a small list of tasks that can easily be completed with our libraries. These are just a starting point, if you have designed further tasks, feel free to share them with us and we will add them to our list of possible tasks.