Repository navigation
Camera ready - #4
Merged
Merged
Camera ready #4
Conversation
- Import UniformMod from nd directly; it is no longer an attribute of NoiseDistribution, which made every --fit invocation fail - Split the duplicated LWE_NUM key into LWE_USVP_NUM and LWE_BDD_NUM so the uSVP numerical estimate is no longer overwritten by the BDD one
- Seed the randomised solvers so repeated runs agree - Register --s-std, --s-a, --s-b, --s-eta and --q with getopt; they were read but never accepted, making four distributions unreachable - Drop the unimplemented --file option - Label the log q columns correctly in --param logq --table
- Cap correction_logic at MAX_CORRECTION_CALLS - Use float() in delta_exact instead of Sage's RR(), which was never imported - Verify --param n candidates against the requested error distribution - Exit non-zero on failure
- Add lmfit to requirements.txt - Ignore output.csv, compiled_output.csv and debug_log.txt - Point docker-compose at directories that exist - Remove the --file examples from the README - Correct n_tables.txt to match Tables 7 and 9 - Renumber equation references in formulas.py to the JoC version
Maps each table of the paper to the commands that produce it, seeded for reproducibility. Replaces create_table.sh and the loose command lists.
Maps each regenerated CSV and column to the paper table it feeds.
A larger modulus is weaker, so the binding constraint is the attack tolerating the smallest one. Taking the maximum returned a modulus the other attack already broke: at lambda=110, n=512, ternary it gave 16, measuring 109 bits. Changes the output column of Tables 12, 16 and 20.
The files under tables/ predated 53ca0cc and matched neither the paper nor the code. Regenerated files are named after the tables they feed; comp_*.py now read those names.
Produced by regenerate_tables.sh at SEED=0. Tables 2, 3, 6, 7, 10 and 11 match the paper exactly; 4, 8, 9 and 13 differ in a few Estimator cells.
Re-run after the log q aggregation fix. Confirms that the ternary log q columns of Tables 12 and 16 are swapped in the paper.
Seeding the global random module once per process made a row's result depend on how many rows preceded it. Each call now derives its own generator from the base seed and its own arguments.
- Resolve the vendored estimator from __file__ rather than the working directory - Return [] from process_est; the previous ([], []) crashed export_to_csv - Remove the unused second copy of coreSVP_models - Document --seed, --q and the --s-* options; -v is not --verify - Replace a bare except in parse_logq and an uncaught ValueError in closest_power_of_2 - Remove test_estimator.py
66 tests pinning values printed in the paper, the per-call generators, the Section 6 examples, and the refitting of all 16 constant sets. Tests needing SageMath skip themselves when it is absent.
Three sites keyed a dict on each formula's output, so two formulas agreeing on the same number silently discarded one verdict. Candidates are now kept as pairs.
- Apply warnings-as-errors to the solver entry points rather than the whole process, which had imposed it on the Lattice Estimator - Reject fsolve roots at beta = 2*pi*e, where the residual vanishes for any standard deviation - Add cost_bits() so an infinite estimator cost no longer raises OverflowError Tables 2, 4, 12, 13, 16, 17 and 20 regenerate unchanged.
Replaces the dict literals in process_n_param and create_data_point, six branches each. build_row() raises on a repeated column, which is how the duplicated LWE_NUM key went unnoticed. Tables 2-12 and 20 regenerate unchanged.
No dict literals left, down from 26. Keeps the pre-correction snapshots in process_std_e_param, which are not aliases: the correction branch substitutes a failed solver's value before using them. Tables 12, 13, 16, 17 and 20 regenerate unchanged.
Matches the paper on both columns in 8 of 12 rows.
- Regenerate every tutorial's output; all of it predated master, and tutorial_stde had its uSVP and BDD columns swapped - Remove --file, ./examples/ and --verify, none of which exist - Document the real distribution options in tutorial_non_fhe - Fold modules.rst into api.rst and delete tutorial_ntru.rst, a duplicate - Remove the duplicate python: key from .readthedocs.yaml - Add a Reproducibility page Sphinx builds with no warnings, down from ten.
- overview.rst: what the tool computes and how the columns relate - limitations.rst: no dual or quantum attacks, the fitted range, the hybrid log q weakness, the broken --ntru - options.rst: all twenty command line options Rewrites introduction.rst as a landing page rather than a copy of the README, and splits the index into Getting started, Tutorials and Reference.
- Add pyproject.toml with a fastparams console script - Convert 18 intra-project imports to relative - Invoke as python3 -m fastparameterselection.estimate; the file can no longer be run by path - Use the vendored estimator when present, else a normally importable one SageMath still cannot be installed by pip; the README says so. Building needs setuptools >= 61, or the wheel is silently empty.
- Regenerate all four examples; they printed "Uniform (-1 0)" and two had wrong numbers - Fix --error "3.19", which exited with "Error distribution not supported" - Fix sage-python3, which is not a command - Unescape the log q separators in the Docker examples; docker-compose uses no shell, so parse_logq rejected them - Remove the duplicated "Common errors" section - Put installation before usage and add a section on what the tool does not cover
- Right align numeric columns so digits line up; text columns stay left - Use box-drawing characters on an interactive terminal, ASCII when the output is piped, so redirected results keep a stable plain-text form - Strip trailing whitespace from every row - Print the column legend after the table, one line per column, instead of a block above it that pushed the result off the screen
Installing from a copy loses the vendored Lattice Estimator, which is resolved relative to the package, so -v silently stops working. Recommend an editable install from a checkout instead. - Note that editable installs need setuptools >= 64, not 61, and that an older pip resolves its isolated build environment to the system setuptools, which builds an empty UNKNOWN wheel and exits 0 - Replace "python3 src/estimate.py" in the usage line; src/ no longer exists - Replace the --fit examples, which named a fit_formula.py that does not exist and a --dist option that is not the one the fit reads
- The tutorials and reference pages invoked the tool as python3 -m fastparameterselection.estimate; after a pip install the console script is available, so use it throughout - Keep the module form only in the example that shows running from a checkout without installing
- Import fit_formula inside the --fit branch; at module level it pulled in lmfit, which a SageMath install does not provide, so the container failed with ModuleNotFoundError before printing anything - Install lmfit in the image and correct the stale src/nd.py path in requirements.txt
- actions/checkout failed with EACCES inside the job-level container: the image runs as the unprivileged sage user while the runner owns its workspace as root, and running the container as root makes Sage ignore --python3 - Check out on the host and mount the tree read-only into a per-step container, copying it inside so writes land where the sage user has permission
- Run pytest with -v in both CI jobs, so a green run names the tests it ran - Add a script that regroups the regenerated CSVs by dimension and security level, and order the log q files the same way - Stop describing --ntru as broken; document it as an option instead
- They reproduce const.py here and in sagemath/sagemath:10.3, but land in a different minimum on the CI runner, about 1% low on the leading constant - Non-strict xfail, so a platform that does reproduce them still passes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.