PHE and PPE schemes
A collection of various Partially Homomorphic Encryption (PHE) schemes and Property-Preserving Encryption (PPE) schemes.
In some cases multiple implementations of the same encryption scheme are provided.
Currently the library contains implementations of:
- AES
- AES – using the tiny-AES repo
- AES-SSL – using the openSSL implementation
- FNR (ref repo)
- FNR - using tiny-AES internally
- FNR-SSL - using openSSL
- ElGamal
- Paillier
In some cases multiple encryption/decryption implementations are explored.
- For all versions of ElGamal and Paillier, we implement
encrypt_pre
versions of encryption which assumes a random value has been pre-computed. - For all versions of ElGamal and Paillier, we implement
encrypt_packed
anddecrypt_packed
versions of encryption and decryption respectively which packs multiple plaintext values into a single ciphertext. - For all versions of Paillier we also implement the
g = n + 1
optimization and the decryption based on the Chinese Remainder Theoremdecrypt_crt
. - For the
BN
andGMP
versions of ElGamal and Paillier, support for negative numbers is added. The BigDigits library does not support negative numbers.
Please note these are Proof Of Concept implementations.