Empirical experiments with classical lattice-algorithm implementations and a small LWE search prototype.
The project explores how the measured cost of naive SVP, CVP and LWE approaches changes as the lattice dimension grows. It was created as an educational research project around lattice-based and post-quantum cryptography.
Scope: this repository contains an educational prototype and empirical observations. The measurements are not a security proof, a production cryptographic implementation, or a benchmark of modern lattice-cryptanalysis libraries.
- SVP — exhaustive search for a short non-zero vector among generated lattice points.
- CVP — exhaustive search for the lattice point nearest to a target vector.
- LWE — sample generation with bounded integer noise and naive candidate search.
- Notebook — exploratory analysis in
Lattices_1.0.3.ipynb. - Recorded measurements — small CSV-like files under
LatticesComplexity/ficheros_generadosused by the plotting utilities.
The implementation intentionally favours readability over cryptographic sophistication: orthogonal bases, bounded coefficient enumeration and brute-force candidate evaluation make the growth in search space easy to observe.
The committed measurement files contain nanosecond timings from the original experiments:
| Algorithm | Dimensions recorded | Largest recorded sample |
|---|---|---|
| SVP | 1–3 | 8,242,545 ns |
| CVP | 1–5 | 2,555,000 ns |
| LWE | 1–5 | 957,880 ns |
These values are historical samples, not reproducible performance guarantees. The experiment parameters, JVM, operating system and dependency versions influence the results.
LatticesComplexity/
├── src/Algorithms/ # lattice helpers and naive SVP/CVP/LWE algorithms
├── src/tests/ # experiment runner and curve-fitting entry points
├── ficheros_generados/ # recorded timing data
└── src/module-info.java # Java module declaration
Lattices_1.0.3.ipynb # exploratory notebook and plots
The project is currently maintained as an Eclipse Java project and targets Java 22. It depends on the shared partecomun teaching/visualisation module used by the experiment runner.
- Import the repository and the
ParteComundependency project into Eclipse. - Configure the Java 22 module path using the existing project metadata.
- Run
tests.TestLatticesto generate timing data and display the fitted curves. - Open
Lattices_1.0.3.ipynbto inspect the exploratory analysis.
The generated LWE experiment uses bounded exhaustive search. Increase the dimension or coefficient range carefully: the number of lattice points grows exponentially.
This small project demonstrates:
- translating mathematical problem definitions into executable algorithms;
- separating reusable lattice operations from algorithm-specific search;
- collecting timing data and fitting empirical growth curves;
- communicating the difference between an educational experiment and a cryptographic security claim.
This repository contains no credentials, API keys, private keys, certificates, registry references or deployment configuration. All samples and generated measurements are local, synthetic experiment data.
Gabriel Vacaro Goytia — GitHub