/CryptographicEstimators

This project gathers and standardize command line scripts to estimate the difficulty of solving hard mathematical problems related to cryptography.

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

CryptographicEstimators

Quality Gate Status Maintainability Rating Bugs Code Smells Security Rating Coverage

Introduction πŸŽ‰

This library provides bit security estimators and asymptotic complexity estimators for cryptographic problems. Some of the implemented estimators are:

  • Problem Estimators

    • Multivariate Quadratic
    • Binary Syndrome Decoding
    • Syndrome Decoding over Fq
    • Permuted Kernel
    • Permutation Equivalence
    • Linear Equivalence
    • MinRank
    • Regular Syndrome Decoding
  • Scheme Estimators

    • UOV

You can also access the estimators through this user friendly and installation-free web application.

Getting Started πŸš€

This project is meant to be run through a terminal or inside a docker container.


Pre-requisites βœ”οΈ

Local

You would need to have Sage installed in your machine. For this follow the instructions described here.

Docker

You would need to have Docker installed in your machine. For this follow the instructions described here.


Installation πŸ› 

Local

Once you've Sage installed you can go to this project folder and run make install in a terminal. This will install cryptographic_estimators library globally. If you encounter some permission error please try again adding sudo as a prefix.

Docker

If you don’t have sage installed in your machine you can start with our dockerized app. First you will need to have running the DockerDesktop app, then open a new terminal, go to the project folder and run make docker-build or if you have Apple Silicon M1 Chip make docker-build-m1.

Note: This process may take up to 15 or 20 minutes depending on your bandwith and computer capacity.


Running the project ✈️

Local

Open the Sage interpreter in a terminal and try importing the library as the following example.

sage: from cryptographic_estimators.SDEstimator import SDEstimator                                                                
sage: sd = SDEstimator(15,10,5)                                                                                                   
sage: sd.estimate() 

Docker

Open a terminal and execute make docker-run to start the container, then you can run sage as if it were in local

root@31d20617c222:/home/cryptographic_estimators# sage
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ SageMath version 9.0, Release Date: 2020-01-01                     β”‚
β”‚ Using Python 3.8.10. Type "help()" for help.                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
sage: from cryptographic_estimators.SDEstimator import SDEstimator                                                                                                                 
sage:  

Documentation πŸ“

You can either generate the documentation through docker via running make docker-doc open docs/build/html/index.html to view it, or you can find it online here

Additionally, we provide a User Guide here.


Contributing πŸ–ŠοΈ

The aim of this project is to be maintained by the community. We want you to help us grow this library, so please feel free to submit your pull request following the CONTRIBUTING.md document.


Contact πŸ–ŠοΈ

If you need any help about contributing to this project feel free to contact us at cryptographic_estimators at tii.ae