Giter Site home page Giter Site logo

irskid5 / fhe_poly_eval Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 0.0 9.54 MB

Evaluation of three parallel polynomial evaluation algorithms written for CUDA in C++ (Horner's method, Dorn's method, and Estrin's algorithm).

C 77.08% C++ 21.58% Cuda 1.34%
fhe fully-homomorphic-encryption polynomial-evaluation polynomial seal cuda parallel estrin dorn horner

fhe_poly_eval's Introduction

Parallel Polynomial Evaluation Algorithms for Leveled Fully Homomorphic Encryption

Evaluation of three parallel polynomial evaluation algorithms written for CUDA in C++ (Horner's method, Dorn's method, and Estrin's algorithm).

Abstract

Computation in a Leveled Fully Homomorphic Encryption (LFHE) context is more inefficient than in a plaintext (PT) context. Latencies grow as operations on ciphertexts (CTs) grow, limiting the efficiency of larger computations like polynomial evaluations (PEs). In addition, the amount of successive CT multiplications is cryptographically bounded, limiting the maximum degree of polynomials that can be evaluated. As such, we explore three different polynomial evaluation algorithms for Leveled Fully Homomorphic Encryption (LFHE) with the following properties: algorithms are (1) parallelizable in a multicore environment to hide LFHE operation latency, and (2) strive to minimize CT-CT multiplicative depth to increase the amount of operations that can be applied afterwards and decrease the latency of operations. We show that Estrin’s algorithm is the best with high computational latencies, achieving a near linear speedup in execution time as the degree of polynomial grows. We show that Dorn’s algorithm becomes optimal as latencies approach plaintext levels.

Repository

This repository includes the main kernel.cu file. This file evaluates the execuion time of Dorn's and Estrin's algorithms running on parallel CUDA threads with respect to Horner's method running on a single CUDA thread. Latency is introduced to plaintext operations since Microsoft SEAL, at the time of writing this README and report, has not been implemented on CUDA so we cannot test the evaluation algorithms on CUDA with SEAL. For more information and results, please review report.pdf.

The files in ./common are from the CUDA toolkit samples and used as helpers.

Contributors

Vele Tosevski, M.A.Sc.

Faculty of Applied Science & Engineering, University of Toronto

[email protected]

fhe_poly_eval's People

Contributors

irskid5 avatar veletosevski avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

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.