Giter Club home page Giter Club logo

dhs-ltv's Introduction

DHS-LTV Encryption Library

The library provides a homomorphic encryption scheme by Doroz, Hu and Sunar (DHS), along with several applications. The details of the scheme can be seen in : http://v.wpi.edu/wp-content/uploads/Papers/Publications/ntruaes.pdf. Our scheme is a single key variant of Lopez-Alt, Tromer and Vaikuntanathan (LTV) Homomorphic Encryption. The original construction can be found in : https://eprint.iacr.org/2013/094.pdf.

Applications

Using the core homomorphic cryptosystem, we have built several applications. Examples include encrypted computation of cryptographic protocols such as AES, Prince Cipher, as well as more practical applications like PIR, Sorting Encrypted Data, Arithmetic over Encrypted Data and encrypted keyword search/completion. Sorting application is already available can be seen in applications folder, the other source codes will be avaliabe soon. All of these projects were developed for research purpose only, therefore although they provide maximum efficiency, some parts may lack a clean user interface for now. The "src" contains a more recent version of the library compared to the applications. The links for the mentioned applications:

  1. PIR :https://eprint.iacr.org/2014/232.pdf
  2. PRINCE :https://eprint.iacr.org/2014/233.pdf
  3. SORTING :https://eprint.iacr.org/2015/274.pdf
  4. AUTOCOMPLETE :https://eprint.iacr.org/2015/1194.pdf

Installation

This library uses NTL (v9.0.2 or later) with GMP support (with C++11 on). Tested on Linux environment. You can use the following commandline to compile the projects:

src: g++ main.cpp -o main -O3 fft_mult.cpp general.cpp ltv.cpp -lntl -lgmp

AES: g++ main.cpp -o main -O3 fft_mult.cpp fheaes.cpp general.cpp ltv.cpp -lntl -lgmp

PRINCE: g++ main.cpp -o main -O3 fft_mult.cpp fheprince.cpp general.cpp ltv.cpp -lntl -lgmp

FLaSH

We are currently working on a clean and more functional version of our library (FLaSH). We do not continue supporting the current library. For your implementations we advise you to use FLaSH. The FLaSH library can be accessed using the link: https://github.com/vernamlab/FLaSH.

dhs-ltv's People

Contributors

gizemscetin avatar jyun-neng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

dhs-ltv's Issues

Func_ComputeKeysRingRelinFFT problem

At line 424 in ltv.cpp file (src folder), f = ft*p + 1.
Not all coefficients in f are assigned ft[i]*p+1.
In fact, only f[0] is ft[0]*p+1.
Others, for example, f[1] is ft[1]*p.

modulus phi(x) problem

In the paper, the polynomial is defined in Z_p[x]/<x^n+1>.
But in this program, the polynomial modulus is not x^n+1.
I try to define Modulus_M = 16 (its cyclotomic polynomial is x^8+1), but it can not implement after "make". Because loop will not be false in ComputeFactorDegree function.
Is there any method to set modulus = x^n+1, or can I ignore ComputeFactorDegree function?

Gaussian Sampling

According to the paper, the polynomials sampled must be from an error distribution, like the Gaussian Distribution. But in this implementation, the random polynomial seems to be sampled from a uniform distribution. Can someone explain why it was done so, or am I missing something here?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.