This project was created as a part of the Applied Cryptography (CZ4010) course at Nanyang Technological University, Singapore. Through this project we have aimed to cover the following:
- The Learning With Errors Problem (LWE) and its use in Public Key Cryptography (PKC)
- The Ring Learning With Errors Problem (RLWE) and its use in Public Key Cryptography (PKC)
- Appropriate Parameters for LWE & RLWE cryptosystems
- The Arora Ge Algebric Attack
- Additional Applications of LWE/RLWE PKCs
This repo contains:
.
├── Learning_with_Errors.pdf # Final Presentation
├── LWE_PKC
│ ├── LWE_PKC.py # Module with PKC Implementation using LWE
│ ├── Slide_Example_LWE.ipynb # Step by Step implementation of LWE
│ └── LWE_Arora_Ge_Attack.ipynb # Step by Step implementation of Arora Ge Algebric Attack
├── RLWE_PKC
│ ├── RLWE_PKC.py # Module with PKC Implementation using RLWE
│ └── Slide_Example.ipynb # Step by Step implementation of RLWE
├── utils.py # Extra Modules to convert regular text into bitstreams
├── requirements.txt # Prerequisite packages used
├── environment.yml
├── .gitignore
└── README.md
The presentation can be viewed:
- Harsh Rao Dhanyamraju (HarshRaoD)
- Rahul George (RahulG1309)
- Create a new virtual environment
- Enter the same virtual environment
pip install -r requirements.txt
- You can then run
python RLWE_PKC/RLWE_PKC.py
- Intro to post quantum cryptography & learning with errors by Douglas Stebila
- Fully Homomorphic Encryption without Bootstrapping by Zvika Brakerski et al
- Key Recovery for LWE in Polynomial Time by Kim Laine et al
- The Learning with Errors Problem by Oded Regev
- Crypto Attacks by Joachim Vandersmissen
- The Learning with Errors Problem: Algorithms
- New Algorithms for Learning in Presence of Errors by Sanjeev Arora & Rong Ge