Skip to main content

Quantum-Proof NTRU Algorithm in Python

General Overview

This is a Python implementation of the NTRUEncrypt algorithm, which is a lattice-based public key encryption scheme that is believed to be resistant to attacks by quantum computers. The implementation is based on the NTRU Prime 4591 parameter set, which provides a security level of approximately 128 bits. The purpose of this implementation is to provide a quantum-proof encryption scheme that can be used to secure sensitive data.

Requirements

The implementation requires the following Python packages:

  • NumPy

To install these packages, you can use the following command:


pip install numpy sympy

You can install it with the reuirements too:


pip install -r requirements.txt

PyPi Usage

This project can be installed with pip for easy usage.

Installation

pip install pq-ntru

Usage


import pq_ntru



pq_ntru.generate_keys("key_filename", mode="moderate")

enc = pq_ntru.encrypt("key_filename", "message")

dec = pq_ntru.decrypt("key_filename", enc)

Other Usage

To use the implementation, you can import the ntru module and use the encrypt and decrypt functions to encrypt and decrypt messages, respectively.


git clone https://github.com/protdos/pq-ntru


import NTRU2



NTRU2.generate_keys("test", mode="moderate")

enc = NTRU2.encrypt("test", "hello world")

dec = NTRU2.decrypt("test", enc)

print("Decrypted message:", dec)

Implementation Details

The implementation is based on the NTRU Prime 4591 parameter set, which uses a polynomial ring with coefficients in the finite field Z/4591Z. The encryption and decryption algorithms use the NTRU lattice-based encryption scheme, which involves computing a polynomial that is close to a certain lattice point.

The implementation uses the following steps for encryption:

Convert the message to a polynomial with coefficients in the range [-1, 1].

Generate a random polynomial with coefficients in the range [-1, 1] and compute its inverse modulo a certain polynomial.

Compute the product of the message polynomial and the inverse polynomial modulo a certain polynomial, resulting in a new polynomial.

Add noise to the new polynomial to obtain the ciphertext polynomial.

The implementation uses the following steps for decryption:

Compute the product of the ciphertext polynomial and the private key polynomial modulo a certain polynomial, resulting in a new polynomial.

Recover the message polynomial by computing the inverse of the new polynomial modulo a certain polynomial.

Basic Info over NTRU

NTRUEncrypt is a public key cryptosystem that is based on the mathematical problem of finding a short vector in a lattice. It is believed to be resistant to attacks by quantum computers due to its use of lattice-based cryptography. The security of the system is based on the difficulty of finding short vectors in the lattice, which is a problem that is believed to be hard even for quantum computers.

NTRU was first proposed in 1996 by Hoffstein, Pipher, and Silverman. Since then, several variants of the algorithm have been proposed, including NTRUEncrypt and NTRU Signature. NTRUEncrypt is used for public key encryption, while NTRU Signature is used for digital signatures.

Benefits of NTRU

NTRUEncrypt has several benefits over other public key cryptosystems, including:

  • Resistance to attacks by quantum computers

  • High performance

  • Small key sizes

  • Low bandwidth requirements

  • Robustness against side-channel attacks

Conclusion

This implementation provides a quantum-proof encryption scheme that can be used to secure sensitive data. The NTRU algorithm is believed to be resistant to attacks by quantum computers and has several benefits over other public key cryptosystems. The implementation is based on the NTRU Prime 4591 parameter set and provides a security level of approximately 128 bits.

Metadata

Release files for pq-ntru 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pq-ntru 0.1.3
File Size Uploaded Provenance Actions
pq_ntru-0.1.3.tar.gz 13.5 kB Without provenance Details for pq_ntru-0.1.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pq-ntru 0.1.3
File Interpreter ABI Platform Actions
pq_ntru-0.1.3-py3-none-any.whl Python 3 none any Details for pq_ntru-0.1.3-py3-none-any.whl

Total release size: 27.6 kB

Release files / pq_ntru-0.1.3.tar.gz

Download URL pq_ntru-0.1.3.tar.gz
Size 13.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6dee1d9c3e1a8c014c5064ce2d471f4ee068a5b378c0fb8abf62bb46296be103
BLAKE2b-256 checksum
How to use checksums
252ded156bdef92b2b08c3e6613f364c27f33f360dcc8a0cd20fda50cecb2b64
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.7

Release files / pq_ntru-0.1.3-py3-none-any.whl

Download URL pq_ntru-0.1.3-py3-none-any.whl
Size 14.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
eb0cd810b8f767ce700b91d004e9ecd2159e88a023841f19bd4740d6c9325d9d
BLAKE2b-256 checksum
How to use checksums
8624b829ff7fe0845003b148e3bc644d39ecb2748bc5a2eae744b03bc60bc64a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.7

Security for pq-ntru 0.1.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page