Skip to content

lericemautech/Q-SECURE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 

Repository files navigation

Q-SECURE: Quantum-Secure Protocol

Python Git SymPy NumPy Anaconda

Implementation of multi-party computation (MPC), a quantum-resistant cryptographic algorithm, with custom client-server software to securely compute the product of N massive matrices.
Refer to System Design for further details.

Requirements

Tip

If you have trouble deciding between Anaconda and Miniconda, please refer to the table below:

Anaconda Miniconda
New to conda and/or Python Familiar with conda and/or Python
Not familiar with using terminal and prefer GUI Comfortable using terminal
Like the convenience of having Python and 1,500+ scientific packages automatically installed at once Want fast access to Python and the conda commands and plan to sort out the other programs later
Have the time and space (a few minutes and 3 GB) Don't have the time or space to install 1,500+ packages
Don't want to individually install each package Don't mind individually installing each package

Typing out entire Conda commands can sometimes be tedious, so I wrote a shell script (conda_shortcuts.sh on GitHub Gist) to define shortcuts for commonly used Conda commands.

Example: Delete/remove a conda environment named test_env
  • Shortcut command
    rmenv test_env
    
  • Manually typing out the entire command
    conda env remove -n test_env && rm -rf $(conda info --base)/envs/test_env

The shortcut has 80.8% fewer characters!

Usage

  1. Verify that conda is installed
    conda --version
  2. Ensure conda is up to date
    conda update conda
  3. Enter the the directory where you want the repository (Q-SECURE) to be cloned
    • UNIX
      cd ~/path/to/directory
    • Windows
      cd C:\path\to\directory
  4. Clone the repository, then enter its directory
    git clone https://github.com/lericemautech/Q-SECURE.git && cd Q-SECURE
  5. Create a conda virtual environment from environment.yml
    conda env create -f environment.yml
  6. Activate the virtual environment (q-secure_env)
    conda activate q-secure_env
  7. Confirm that the virtual environment (q-secure_env) is active
    • If active, the virtual environment's name should be in parentheses () or brackets [] before your command prompt, e.g.
      (q-secure_env) $
      
    • If necessary, see which environments are available and/or currently active (active environment denoted with asterisk (*))
      conda info --envs
      OR
      conda env list
  8. Run the 1st, 2nd, and 3rd servers within Q-SECURE directory
    python -m project.test.TestServer1
    python -m project.test.TestServer2
    python -m project.test.TestServer3
  9. Run the client within Q-SECURE directory
    python -m project.src.Client
  10. Press CTRL + C in the terminal running each server to disconnect

System Design

  1. Split each of N massive matrices into submatrices
  2. Homomorphically encrypt the submatrices and disperse evenly among M Internet of Things (IoT) devices
  3. M IoT devices calculate the product of N homomorphically encrypted submatrices and send the result back upon completion
  4. Received submatrices (i.e. results) are decrypted and concatenated into a single matrix, which is the final result
MPC System Design

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages