Hi there ๐
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:
- 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.
- 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.
- Modular Prototyping: By having interchangeable layers in the implementations, researchers can easily switch between different implementations and progress towards thei final implementation quickly
- 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:
Checkout our 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.