A Fully Homomorphic Encryption (FHE) library for bridging the gap between theory and practice with a focus on performance and accuracy
Project description
Welcome to Liberate.FHE!
Liberate.FHE is an open-source Fully Homomorphic Encryption (FHE) library for bridging the gap between theory and practice with a focus on performance and accuracy.
Liberate.FHE is designed to be user-friendly while delivering robust performance, high accuracy, and a comprehensive suite of convenient APIs for developing real-world privacy-preserving applications.
Liberate.FHE is a pure Python and CUDA implementation of FHE. So, Liberate.FHE supports multi-GPU operations natively.
The main idea behind the design decisions is that non-cryptographers can use the library; it should be easily hackable and integrated with more extensive software frameworks.
Additionally, several design decisions were made to maximize the usability of the developed software:
- Make the number of dependencies minimal.
- Make the software easily hackable.
- Set the usage of multiple GPUs as the default.
- Make the resulting library easily integrated with the pre-existing software, especially Artificial Intelligence (AI) related ones.
Key Features
- RNS-CKKS scheme is supported.
- Python is natively supported.
- Multiple GPU acceleration is supported.
- Multiparty FHE is supported.
Quick Start
from liberate import fhe
from liberate.fhe import presets
# Generate CKKS engine with preset parameters
grade = "silver" # logN=14
params = presets.params[grade]
engine = fhe.ckks_engine(**params, verbose=True)
# Generate Keys
sk = engine.create_secret_key()
pk = engine.create_public_key(sk)
evk = engine.create_evk(sk)
# Generate test data
m0 = engine.example(-1, 1)
m1 = engine.example(-10, 10)
# encode & encrypt data
ct0 = engine.encorypt(m0, pk)
ct1 = engine.encorypt(m1, pk, level=5)
# (a + b) * b - a
result = (m0 + m1) * m1 - m0
ct_add = engine.add(ct0, ct1) # auto leveling
ct_mult = engine.mult(ct1, ct_add, evk)
ct_result = engine.sub(ct_mult, ct0)
# decrypt & decode data
result_decrypted = engine.decrode(ct_result, sk)
If you would like a detailed explanation, please refer to the official documentation.
How to Install
Clone this repository
git clone https://github.com/Desilo/liberate-fhe.git
cd liberate-fhe
Install dependencies
poetry install
Run Cuda build Script.
python setup.py install
# poetry run python setup.py install
Build a python package
poetry build
Install Liberate.FHE library
pip install .
# poetry run python -m pip install .
Documentation
Please refer to Liberate.FHE for detailed installation instructions, examples, and documentation.
Citing Liberate.FHE
@Misc{Liberate_FHE,
title={{Liberate.FHE: A New FHE Library for Bridging the Gap between Theory and Practice with a Focus on Performance and Accuracy}},
author={DESILO},
year={2023},
note={\url{https://github.com/Desilo/liberate-fhe}},
}
License
- Liberate.FHE is available under the BSD 3-Clause Clear license. If you have any questions, please contact us at contact@desilo.ai.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file liberate_fhe-0.9.1.tar.gz
.
File metadata
- Download URL: liberate_fhe-0.9.1.tar.gz
- Upload date:
- Size: 97.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.2 Linux/5.15.0-86-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c370062e916b755c91f457fdde3fb1213f64ac021d76726a573afbe3f7a854f |
|
MD5 | e46af2e94705bfaaa1569bab2661f06f |
|
BLAKE2b-256 | 1668f613ff4014059968a9486b2a8aa199ea6a98f93b420500eb4bc813360ede |
File details
Details for the file liberate_fhe-0.9.1-cp311-cp311-manylinux_2_35_x86_64.whl
.
File metadata
- Download URL: liberate_fhe-0.9.1-cp311-cp311-manylinux_2_35_x86_64.whl
- Upload date:
- Size: 13.8 MB
- Tags: CPython 3.11, manylinux: glibc 2.35+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.2 Linux/5.15.0-86-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dedb1b7ed1c79c01a8ac1a9322ce45740dabb70ee1294fc17718536e3f15a7b5 |
|
MD5 | f3e6456f882485f08e5c7a2fb637da70 |
|
BLAKE2b-256 | 9b0f3ab543ac87d65a123f0fe807e8a1274464e14da0ae7723cc9caf65221aea |
File details
Details for the file liberate_fhe-0.9.1-cp310-cp310-manylinux_2_35_x86_64.whl
.
File metadata
- Download URL: liberate_fhe-0.9.1-cp310-cp310-manylinux_2_35_x86_64.whl
- Upload date:
- Size: 13.7 MB
- Tags: CPython 3.10, manylinux: glibc 2.35+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.2 Linux/5.15.0-86-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2a5fb872df991c01784bae78bddd12929c580281ba61b7a27fc4366d0fc49d33 |
|
MD5 | c4c11531736ba634aab6cb8fbd25c395 |
|
BLAKE2b-256 | 700a0ba91e4294933d77658ed45719da5b42d7b8b1ba32888946c1f59ccb540a |