qFALL - Rapid Prototyping of Lattice-based Cryptography
Meet qFALL đź‘‹
qFALL is a project for prototyping lattice-based cryptography that aims to improve the implementation workflow of lattice-based cryptography. To this end, it provides a theory-affine, high-level interface for mathematics and common algorithms in lattice-based constructions with representative runtime performance. qFALL enables researchers to rapidly assemble minimal working prototypes that are easily auditable, modifiable, and allow users to assess algorithmic trade-offs early in the development cycle. Furthermore, qFALL supports an incremental optimization workflow, allowing users to replace bottlenecks with optimized modules to evolve the codebase toward a fully optimized implementation.
📦 Structure of qFALL
This project is structured into three dedicated Rust crates, each serving a distinct purpose.
- To start working with qFALL, we recommend following our
.
- For a detailed breakdown of the architecture, design principles, and performance benchmarks, please read our
.
🎯 Intention Behind qFALL
qFALL is designed to tackle the following fundamental problems arising in prototype implementation:
- Gap between Theory and Practice: As lattice-based cryptography evolves, the gap between theoretical pseudocode and optimized implementation widens. qFALL bridges this by offering theory-affine interfaces and abstraction levels that are native to theoretical researchers while preserving efficiency utilizing FLINT – ensuring prototypes remain comprehensible, auditable, and extensible.
- Performance and Safety: Achieving practical execution speeds traditionally requires low-level languages that necessitate manual memory management, increasing code complexity and the risk of memory leaks. qFALL eliminates this risk by leveraging Rust’s compiler to guarantee a memory safety, removing the need for manual allocation while maintaining high efficiency.
- Accessibility and Tooling: Large-scale libraries often suffer from steep learning curves and fragmented tooling. qFALL mitigates this through an intuitive modular structure, self-descriptive naming, and extensive documentation accompanied by a hands-on tutorial. Furthermore, it leverages the Rust ecosystem to standardize and simplify benchmarking and profiling of algorithms.
- Sustainable Prototyping: Researchers usually face strict time constraints, leading to monolithic, “write-once” code. qFALL enables the rapid assembly of comprehensible, auditable, and extensible prototypes that serve as reusable resources to the community.
- Incremental Optimization Workflow: Moving from a minimal working prototype to an optimized implementation often requires starting over. qFALL enables a seamless evolution: developers can use Rust’s profiling tools to pinpoint bottlenecks, then leverage the modular architecture to swap in optimized algorithms step-by-step – maintaining a verifiable, working prototype throughout the process.
📣 Latest News
qFALL Goes Live: First Official Release
Paper on qFALL Released: Bridging the Theory-to-Practice Gap
Read all news Subscribe via RSS-Feed
🤝 Contribute
qFALL is an open-source project built by researchers for researchers. We encourage anyone to contribute, e.g., by adding missing features, optimizing algorithms, or reporting/resolving bugs. Your contributions help the community to build better prototypes, faster. For further details, please refer to our Contribution Guidelines.
📜 License 
This library is distributed under the Mozilla Public License Version 2.0. Permissions of this weak copyleft license are conditioned on making the source code of licensed files and modifications of those files available under the same license (or in certain cases, under one of the GNU licenses). Copyright and license notices must be preserved. Contributors provide an express grant of patent rights. However, a larger work using the licensed work may be distributed under different terms and without source code for files added to the larger work.