Skip to content

About

Empirical experiments with naive SVP, CVP and LWE search to explore lattice-algorithm complexity.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

9 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

LatticesComplexity

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.

What is included

  • 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_generados used 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.

Empirical snapshot

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.

Project layout

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

Running the experiments

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.

  1. Import the repository and the ParteComun dependency project into Eclipse.
  2. Configure the Java 22 module path using the existing project metadata.
  3. Run tests.TestLattices to generate timing data and display the fitted curves.
  4. Open Lattices_1.0.3.ipynb to 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.

Why this project is useful

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.

Public-repository safety

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.

Author

Gabriel Vacaro Goytia — GitHub

About

Empirical experiments with naive SVP, CVP and LWE search to explore lattice-algorithm complexity.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages