mirror of
https://github.com/zama-ai/concrete.git
synced 2026-01-13 14:58:01 -05:00
=========
Parameter Curves
=========
This folder contains the code used to choose secure parameters using the Lattice-Estimator_. In particular, we use data obtained from calls to the lattice estimator to generate parameter curves of the form: ``sigma(n) = a * n + b`` which can then be used to choose a suitable error standard deviation `sigma` for a given LWE dimension n.
Usage
---------
To generate the raw data from the lattice estimator, use::
make generate-curves
by default, this script will generate parameter curves for {80, 112, 128, 192} bits of security, using ``log_2(q) = 64``.
To compare the current curves with the output of the lattice estimator, use::
make compare-curves
this will compare the four curves generated above against the output of the version of the lattice estimator found in /third_party.
To generate the associated cpp and rust code, use::
make generate-code
further advanced options can be found inside the Makefile.
Current curves
---------
Current versions of the curves can be found in the ``sage-object`` folder_. To view the raw data used to generate a curve, load one of the files contained in the director sage-object in Sagemath::
sage: X = load("128.sobj")
entries are tuples of the form: ``(n, log_2(q), log_2(sd), \lambda)``. We can view individual entries via::
sage: X["128"][0]
(2366, 64.0, 4.0, 128.51)
.. _Lattice-Estimator: https://github.com/malb/lattice-estimator
.. _folder: https://github.com/zama-ai/concrete/tree/main/tools/parameter-curves/sage-object