All Projects → intel → he-toolkit

intel / he-toolkit

Licence: Apache-2.0 License
The Intel Homomorphic Encryption (HE) toolkit is the primordial vehicle for the continuous distribution of the Intel HE technological innovation to users. The toolkit has been designed with usability in mind and to make it easier for users to evaluate and deploy homomorphic encryption technology on the Intel platforms.

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
Jupyter Notebook
11667 projects
shell
77523 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to he-toolkit

Helib
HElib is an open-source software library that implements homomorphic encryption. It supports the BGV scheme with bootstrapping and the Approximate Number CKKS scheme. HElib also includes optimizations for efficient homomorphic evaluation, focusing on effective use of ciphertext packing techniques and on the Gentry-Halevi-Smart optimizations.
Stars: ✭ 2,749 (+6772.5%)
Mutual labels:  cryptography, privacy-enhancing-technologies
Seal
Microsoft SEAL is an easy-to-use and powerful homomorphic encryption library.
Stars: ✭ 2,424 (+5960%)
Mutual labels:  cryptography, homomorphic-encryption
WeDPR-Lab-Java-SDK
Java SDK of WeDPR-Lab-Core; WeDPR即时可用场景式隐私保护高效解决方案核心算法组件通用Java SDK
Stars: ✭ 18 (-55%)
Mutual labels:  cryptography, homomorphic-encryption
awesome-secure-computation
Awesome list for cryptographic secure computation paper. This repo includes *Lattice*, *DifferentialPrivacy*, *MPC* and also a comprehensive summary for top conferences.
Stars: ✭ 125 (+212.5%)
Mutual labels:  homomorphic-encryption, privacy-enhancing-technologies
nlp-qrmine
🔦 Qualitative Research support tools in Python
Stars: ✭ 28 (-30%)
Mutual labels:  research-tool
threshold-signatures
Threshold Signature Scheme for ECDSA
Stars: ✭ 79 (+97.5%)
Mutual labels:  homomorphic-encryption
Windows-On-Reins
Wor is a Powershell script to harden, debloat, optimize, enhance privacy, avoid fingerprinting and improve performance on Windows 10 and 11.
Stars: ✭ 170 (+325%)
Mutual labels:  privacy-enhancing-technologies
libVES.c
VESvault End-to-End Encryption API: Encrypt Everything Without Fear of Losing the Key
Stars: ✭ 28 (-30%)
Mutual labels:  encryption-algorithms
kyber-k2so
Go implementation of the Kyber (version 3) post-quantum IND-CCA2 KEM.
Stars: ✭ 23 (-42.5%)
Mutual labels:  cryptography
PrivacyRaven
Privacy Testing for Deep Learning
Stars: ✭ 111 (+177.5%)
Mutual labels:  privacy-enhancing-technologies
ecelgamal
Additive homomorphic EC-ElGamal
Stars: ✭ 19 (-52.5%)
Mutual labels:  homomorphic-encryption
ceu-cloud-class
This is the repo for the Data Engineering 3 - Cloud and Big Data Computing course delivered at the Central European University ceu.edu
Stars: ✭ 15 (-62.5%)
Mutual labels:  encryption-algorithms
MixEth
MixEth: efficient, trustless coin mixing service for Ethereum
Stars: ✭ 49 (+22.5%)
Mutual labels:  privacy-enhancing-technologies
swarm-learning
A simplified library for decentralized, privacy preserving machine learning
Stars: ✭ 142 (+255%)
Mutual labels:  privacy-enhancing-technologies
gotts
A blockchain for non-collateralized stable-coins, follow MimbleWimble protocol but with explicit amount.
Stars: ✭ 48 (+20%)
Mutual labels:  cryptography
Junet.jl
Julia package for network research
Stars: ✭ 37 (-7.5%)
Mutual labels:  research-tool
Android-Apps-Downloader
📱 A tool to download android apps from Google Play Store and Xiaomi App Store (the famous Chinese Store).
Stars: ✭ 16 (-60%)
Mutual labels:  research-tool
ReBench
Execute and document benchmarks reproducibly.
Stars: ✭ 48 (+20%)
Mutual labels:  research-tool
autohosts
Automate hosts file updates on Linux and MacOS. Block Firefox telemetry, Google snooping and web trackers at the root.
Stars: ✭ 69 (+72.5%)
Mutual labels:  privacy-enhancing-technologies
eacirc
Automatic problem solver based on circuit-like representation and genetic programming
Stars: ✭ 13 (-67.5%)
Mutual labels:  research-tool

Intel Homomorphic Encryption Toolkit

The Intel Homomorphic Encryption (HE) toolkit is designed to make it fast and easy to evaluate homomorphic encryption technology on Intel® Processors using libraries, such as Intel HE Acceleration Library, optimized to take advantage of the newest Intel hardware features. Additionally, the Intel HE-Toolkit is a great starting point for people new to homomorphic encryption, offering sample kernels showing multiple examples of how the libraries can be used to implement common mathematical operations using Microsoft SEAL, PALISADE, or HElib. In addition, there are example applications which demonstrate how HE technology can be used to create secure applications.

Contents

Dependencies

The toolkit has been tested on Ubuntu 20.04

Must have dependencies include:

cmake >= 3.13
git
pthread
patchelf
m4
g++ >= 10.0 or clang >= 10.0
python >= 3.5
virtualenv

Dependencies required per library include:

autoconf (PALISADE)
gmp >= 6.2.1 (HElib)
NTL >= 11.5.1 (HElib)

Instructions

There are currently two methods for building the toolkit project.

Docker Build (Recommended)

The recommended method is to use the Docker build and installation which builds the toolkit in its entirety including all HE libraries in a self-contained docker container running Ubuntu 20.04. See here for a detailed description on the usage and components of this build.

Native Build

Alternatively, one can build the toolkit natively using the following commands

export HE_SAMPLES=$(pwd)/he-samples
cd $HE_SAMPLES
cmake -S . -B build
cmake --build build -j

This will build the toolkit project with the default settings. The toolkit will download and build all three HE libraries automatically with Intel HE Acceleration Library enabled.

Note: You will be responsible for installing all of the required dependencies.

It is possible to pass additional options, for example:

 -DENABLE_PALISADE=ON
 -DENABLE_SEAL=ON
 -DENABLE_HELIB=OFF

to enable/disable building of certain HE libraries. The following table contains the current CMake options, default values are in bold.

CMake options Values Comments
ENABLE_PALISADE ON/OFF Enable PALISADE
ENABLE_SEAL ON/OFF Enable SEAL
ENABLE_HELIB ON/OFF Enable HElib
ENABLE_INTEL_HEXL ON/OFF Enable Intel HE Acceleration Library
ENABLE_ADDRESS_SANITIZER ON/OFF Compiles and link with Address Sanitizer
ENABLE_THREAD_SANITIZER ON/OFF Compiles and link with Thread Sanitizer
ENABLE_UB_SANITIZER ON/OFF Compiles and link with Undefined Behaviour Sanitizer
SEAL_PREBUILT ON/OFF Use a pre-built installation of SEAL
PALISADE_PREBUILT ON/OFF Use a pre-built installation of PALISADE
HELIB_PREBUILT ON/OFF Use a pre-built installation of HElib

Note: If using a pre-built library then you may need to use the option -D<SEAL|PALISADE|HELIB>_HINT_DIR=<path-to-installation> if you have installed them in a non-default location.

Note: If opting to use HElib with HEXL enabled, the user must have a pre-installed version of HEXL due to HElib currently only supports linking to a pre-installed HEXL. See here for more details.

Kernels

Located in he-samples is a collection of software components built on Microsoft SEAL and PALISADE comprising sample kernels for operations performed homomorphically and example applications. The HE Samples are designed to enable quicker evaluation of HE on Intel platforms, serve as a learning tool for how to implement operations in different HE libraries, and provide examples of how these operations can be used to build applications based on HE technology for different use cases.

Sample kernels

The sample kernels are for complex HE operations, requiring multiple API calls such as Matrix Multiplication and Vector Dot Product. See the README for instructions.

Test sample kernels

The unit tests are a selection of unit tests meant for verifying the accuracy of the various sample kernels included in this project. See the README for more information.

Examples

The examples directory includes example applications built using HE technology. The primary purpose of these examples is to serve as a showcase of different use cases which can be implemented using HE. Moreover, these can be used as learning references and starting points for further development. The toolkit currently includes the following examples listed below.

Secure Query

The secure query example shows how it is possible to implement a key-value database using HE. This allows a client to perform lookups of values in the database without exposing the query to the server hosting the database and optionally the key-value pairs in the database as well. The secure query example is implemented using the SEAL BFV scheme. See the README for more details and instructions on how to run this program.

Logistic Regression

The transposed logistic regression example presents a scalable and fast method of logistic regression inference in HE. Using the SEAL CKKS scheme, the example will encrypt the model (bias and weight) and takes batches of encrypted data samples to perform the inference all within the HE domain. See the README for usage information.

Private Set Intersection

The Private Set Intersection (PSI) example computes the intersection of two given sets. The program computes a hash value for each entry of both the client and the server sets, then using the HElib BGV scheme, it encrypts the client set and computes the intersection, returning all the encrypted elements that are common to both sets. See the README for usage information.

Contributing

At this time, Intel HE Toolkit does not accept external contributions. We encourage feedback and suggestions via GitHub Issues as well as via GitHub Discussions.

For Intel developers, ensure the pre-commit config is active prior to contributing, i.e. run

pre-commit install
pre-commit run --all-files

and make sure all pre-commit checks pass.

NOTE: Please ensure you are using clang-format version >= 10

Contributors

The Intel contributors to this project, sorted by last name, are

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].