Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/nucypher/nufhe

NuCypher fully homomorphic encryption (NuFHE) library implemented in Python
https://github.com/nucypher/nufhe

Last synced: about 2 months ago
JSON representation

NuCypher fully homomorphic encryption (NuFHE) library implemented in Python

Awesome Lists containing this project

README

        

# A GPU implementation of fully homomorphic encryption on torus

This library implements the fully homomorphic encryption algorithm from [`TFHE`](https://github.com/tfhe/tfhe) using CUDA and OpenCL. Unlike `TFHE`, where FFT is used internally to speed up polynomial multiplication, `nufhe` can use either FFT or purely integer NTT (DFT-like transform on a finite field). The latter is based on the arithmetic operations and NTT scheme from [`cuFHE`](https://github.com/vernamlab/cuFHE). Refer to the [project documentation](https://nufhe.readthedocs.io/en/latest/) for more details.

## Usage example
```python
import random
import nufhe

size = 32
bits1 = [random.choice([False, True]) for i in range(size)]
bits2 = [random.choice([False, True]) for i in range(size)]
reference = [not (b1 and b2) for b1, b2 in zip(bits1, bits2)]

ctx = nufhe.Context()
secret_key, cloud_key = ctx.make_key_pair()

ciphertext1 = ctx.encrypt(secret_key, bits1)
ciphertext2 = ctx.encrypt(secret_key, bits2)

vm = ctx.make_virtual_machine(cloud_key)
result = vm.gate_nand(ciphertext1, ciphertext2)
result_bits = ctx.decrypt(secret_key, result)

assert all(result_bits == reference)
```

## Performance


Platform
Library
Performance (ms/bit)


Binary Gate
MUX Gate


Single Core/Single GPU - FFT
TFHE (CPU)
13
26


nuFHE
0.13
0.22


Speedup
100.9
117.7


Single Core/Single GPU - NTT
cuFHE
0.35
N/A


nuFHE
0.35
0.67


Speedup
1.0
-