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.
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!
- Verify that conda is installed
conda --version
- Ensure conda is up to date
conda update conda
- 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
- UNIX
- Clone the repository, then enter its directory
git clone https://github.com/lericemautech/Q-SECURE.git && cd Q-SECURE
- Create a conda virtual environment from
environment.yml
conda env create -f environment.yml
- Activate the virtual environment (
q-secure_env
)conda activate q-secure_env
- 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 (*))
OR
conda info --envs
conda env list
- If active, the virtual environment's name should be in parentheses () or brackets [] before your command prompt, e.g.
- Run the 1st, 2nd, and 3rd servers within
Q-SECURE
directorypython -m project.test.TestServer1 python -m project.test.TestServer2 python -m project.test.TestServer3
- Run the client within
Q-SECURE
directorypython -m project.src.Client
- Press
CTRL + C
in the terminal running each server to disconnect
- Split each of
N
massive matrices into submatrices - Homomorphically encrypt the submatrices and disperse evenly among
M
Internet of Things (IoT) devices M
IoT devices calculate the product ofN
homomorphically encrypted submatrices and send the result back upon completion- Received submatrices (i.e. results) are decrypted and concatenated into a single matrix, which is the final result