Coder Social home page Coder Social logo

mryue1120 / pyfhel Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ibarrond/pyfhel

0.0 0.0 0.0 10.05 MB

PYthon For Homomorphic Encryption Libraries, perform encrypted computations such as sum, mult, scalar product or matrix multiplication in Python, with NumPy compatibility. Uses SEAL/HElib/PALISADE as backends, implemented using Cython.

Home Page: https://ibarrond.github.io/Pyfhel

License: GNU General Public License v3.0

Python 50.06% C 0.03% C++ 49.91%

pyfhel's Introduction

Pyfhel [v2.0.1]

Build Status Documentation Status PyPI version Maintenance GitHub issues Python 3 License: GPL v3

PYthon For Homomorphic Encryption Libraries.

Note: If you have written any code using Pyfhel, please share it! (feel free to send me a message, I'll credit you for it). This repo is lacking demos, examples and tests. Besides, if you want to join/contribute to develop this library, just write me!

  • Status: ALPHA.

  • Description: Allows ADDITION, SUBSTRACTION, MULTIPLICATION, SCALAR PRODUCT and binary operations (AND, OR, NOT, XOR) over encrypted vectors|scalars of integers|binaries. This library acts as optimized Python API for the most advanced C++ HE libraries.

  • Language: Python (3.4+) & Cython on top of C++17. (REQUIRED: Python must have been compiled with C++17: g++>=6 | clang++>=5.0, Visual Studio 2017.).

  • Docs: For now, only the API is documented [link]. Examples are soon to follow.

  • Dependencies: There are three possible backends, all of them HE libraries in C++:

    1. SEAL (no external dependencies). Version 2 of Pyfhel is currently only supporting SEAL.
    2. HElib (depends on GMP & NTL)
    3. PALISADE (no external dependencies)

Summary

PYthon For Hmomorphic Encryption Libraries, Pyfhel implements functionalities of multiple Homomorphic Encryption libraries such as addition, multiplication, exponentiation or scalar product in Python. Pyfhel uses a syntax similar to normal arithmetics (+,-,*). This library is useful both for simple Homomorphic Encryption Demos as well as for complex problems such as Machine Learning algorithms.

Pyfhel is built on top of Afhel, an Abstraction Hmomorphic Encryption Libraries in C++. Afhel serves as common API for all three backends. Additionally, this project contains a large series of Demos & Tests for HElib|SEAL, Afhel & Pyfhel.

Last but not least, we include Makefiles to compile and install HElib, SEAL and Afhel as shared libraries in Ubuntu, which can then be linked to other C++ programs using the tags -lhelib, -lseal and -lafhel.

Install & Uninstall

This project has been uploaded to PyPI. In order to install it from source (WARNING! it takes several minutes to compile, be patient!), run:

   > pip install Pyfhel

Locally, you can clone this repository and install it by running:

   > pip install .

To uninstall, just run:

   > pip uninstall Pyfhel

Alternatively, and only for Ubuntu OS, after cloning you can install and compile all libraries as shared (.so) using the Makefiles on this project. To do so, run inside the Pyfhel directory:

   > ./configure		# Just puts all makefiles in their correct directories
   > make
   > sudo make install

You can also install just SEAL and Afhel. Just run make SEAL|Afhel in the Pyfhel directory and make install inside Pyfhel/Afhel or Pyfhel/SEAL directory respectively. Makefiles also have clean and uninstall commands, as well as make sourceFileName_x command to compile and link a source file (.cpp) with them.

Development notice

After changing Cython files they need to be compiled before re-installing Pyfhel. To do so run:

    > python setup.py build --CYTHONIZE

Project contents

  • Pyfhel/ contains the source code for Pyfhel, Afhel, SEAL, PALISADE & HElib.

  • docs/ outdated documentation of the project:

    • Doc.md: Outdated Essential documentation of the project.
    • Doc_API.md: Outdated comprehensive list of all classes & methods available in Pyfhel.
    • Helib/: Up to date docs and images explaining this otherwise undocumented library.
  • Pyfhel/Demos_Tests, a collection of Demos and Tests. Outdated as of today. Check the test.py!

  • Pyfhel/.Makefiles/Makefile_HElib, a makefile to compile and install HElib as a dynamic library (-lhelib).

  • Pyfhel/.Makefiles/Makefile_SEAL, a makefile to compile and install SEAL as a dynamic library (-lseal).

Authors & Acknowledgements

  • Authors: Alberto Ibarrondo @ibarrond with Laurent Gomez (SAP) in collaboration with EURECOM (Melek Onen).
  • Latest release: 03/08/2018

This library was created originally for the project "Privacy for Big Data Analytics" in EURECOM. The SW is based on HElib by Shai Halevi, with touches from HEIDE by Grant Frame, and performance improvements thanks to analysis of addition by Matheus S.H. Cruz. In compliance with their respective Licenses, I name all of them in this section. This project could not be possible without them. For any legal disclaimer, please contact the owner of this repository. Also, the same type of license (GNU GPLv3) applies to Afhel & Pyfhel, as mandated.

Legal disclaimer

Pyfhel can be used, modified, copied in any way you see fit. This project is Open Source under the GNU GPLv3 License (LICENSE file), therefore developers that use Pyfhel MUST comply with the following:

  1. Acknowledge and mention the original authors of Pyfhel in any derived development, that is, Ibarrondo, Laurent (SAP) and Onen (EURECOM).

  2. Offer the exact same License, allowing legal permission to copy, distribute and/or modify any SW using Pyfhel. Hence, any software using Pyfhel must remain Open Source.

pyfhel's People

Contributors

alexgadai avatar ibarrond avatar marcwil avatar pyup-bot avatar remyauda avatar severos avatar tanu17 avatar tdonovic 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.