Skip to content
NuCypher fully homomorphic encryption (NuFHE) library implemented in Python
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci
doc lwe: add `LweSampleArray.__setitem__()` May 17, 2019
examples examples: add a multi-threading multi-gpu usage example Jan 27, 2019
nufhe lwe: add `LweSampleArray.__setitem__()` May 17, 2019
test lwe: add `LweSampleArray.__setitem__()` May 17, 2019
.bumpversion.cfg Bump version: 0.0.1 → 0.0.2 Feb 14, 2019
.gitignore gitignore: add some exceptions for generated files Aug 18, 2018
LICENSE.md Change license: MIT -> GPLv3 Aug 15, 2018
MANIFEST.in Make sure setup.py picks up all the necessary files when building a p… Aug 17, 2018
README.md Add a high-level API (a context + a virtual machine) hiding Reikna de… Dec 19, 2018
setup.py lwe: add `LweSampleArray.__setitem__()` May 17, 2019

README.md

A GPU implementation of fully homomorphic encryption on torus

This library implements the fully homomorphic encryption algorithm from 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. Refer to the project documentation for more details.

Usage example

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 -
You can’t perform that action at this time.