This is an extension of an ongoing research project on Arithmetic Circuit Homomorphic encryption (ACHE) which was implemented based on Fast Fully Homomorphic Encryption over the Torus (TFHE). This iteration focuses on integrating ASN.1 Basic Encoding Rule for the purpose of computing results of integer expressions up to 3 operands. The previous version of the project can be found here.
This project was shared at the Asia Conference on Computers and Communications (ACCC) 2020 with two papers published:
and
Multi-Precision Integer Arithmetic Processing Using Arithmetic Circuit Homomorphic Encryption
This system is configured and tested for Ubuntu 20.04 LTS
- Python3 and Pip3
$ sudo apt-get install python3 python3-pip
# Check python3 installation
$ which python3
> /usr/bin/python3
$ pip3 install asn1tools pycryptodomex
$ cd /
$ git clone --recurse-submodules --branch=master https://github.com/tfhe/tfhe.git
$ cd tfhe
$ mkdir build; cd build
$ ccmake ../src
# Press 'c' to configure, then 'g' to generate
$ make
$ make install
- Clone this repository
$ cd /
$ git clone https://github.com/kennethsoh/IE-ACHE.git
$ cd IE-ACHE
# Provide executable permissions if needed
$ chmod u+x */*
-
Repeat dependency installation and Step 1 minimally 4 times for 4 different machines: Client(1/2/3), Cloud, Keygen and Output.
-
Assign IP Addresses for machines as follows:
Cloud: 192.168.0.1
Client1: 192.168.0.21
Client2: 192.168.0.22
Client3: 192.168.0.23
Keygen: 192.168.0.3
Output: 192.168.0.4
-
Add the service files in 'Services' folder to
/etc/systemd/system/
. Edit the Users, WorkingDirectory and ExecStart values if necessary. Default values assume that this repository is installed at root (/) directory and root user is used. -
Recompile c files
$ python3 compile_c.py
> 9 files compiled
- Start the services on each machine
$ systemctl daemon-reload
$ systemctl enable MP MP2
$ systemctl start MP MP2
- Run ./process on all Client machines to generate values.txt
Output$ cd /IE-ACHE/Client{1..3}
Output$ ./process
- Run output_dynamic.py on Output machine
Output$ cd /IE-ACHE/Output
Output$ python3 output_dynamic.py