Awesome
TERMinator Suite
Data-Oblivious Benchmarks for Encrypted Data Computation
TERMinator suite offers benchmarks specifically tailored to encrypted computers, to enable comparisons across different architectures. Our benchmark suite, dubbed TERMinator, offers rich set of data-oblivious programs that can be ported as-is to the encrypted domain. The benchmarks are currently maintained by the Modern Microprocessors Architecture Lab at New York University Abu Dhabi as well as the Trustworthy Computing Group at University of Delaware.
Cite us!
Please use the following publication to cite the benchmarks:
D. Mouris, N. G. Tsoutsos and M. Maniatakos,
"TERMinator Suite: Benchmarking Privacy-Preserving Architectures."
IEEE Computer Architecture Letters, Volume: 17, Issue: 2, July-December 2018.
The publication describing the benchmarks can be accessed here and author's version here.
TERMinator Suite Benchmark Categories
-
Encoder Benchmarks: This class comprises three real-life cryptographic and hash applications (namely
Speck
,Simon
andJenkins
), which are demanding in terms of bitwise operations. -
Synthetic: In this class we have the
NQueens
andTak
algorithms, which evaluate the universality of the underlying abstract machine using recursion. -
Kernels: In this class we have the
Insertion Sort
,Set Intersection
,Deduplication (Union)
,Matrix Multiplication
,Primes (Sieve of Eratosthenes)
, andPermutations
, which evaluate essential loops that combine memory swaps and arithmetic operations. These kernels also have significance in privacy-sensitive real-life applications: for example, set intersection is used to evaluate collision courses of military satellites without revealing actual paths, while permutations is an important part of DNA sequencing. -
Microbenchmarks: In this class we have the
Factorial
,Fibonacci
andPrivate Information Retrieval
algorithms, which evaluate a single critical homomorphic operation of addition and multiplication in the underlying abstract machine.
List of TERMinator Suite Benchmarks
-
All benchmarks are available as
C/C++
sources (.c
files), as well asCEAL
sources (.sca
files).Synthetic Category
-
Encoder Benchmarks Category
-
Jenkins one-at-a-time Hash Function (link)
Kernels Category
-
Microbenchmarks Category
-
Other Algorithms
Installation steps & How to run a benchmark
Setup Cryptoleq & TERMinator Suite
To set up Cryptoleq and TERMinator Suite follow the steps here.
How to run a Benchmark
An example of how to run a benchmark is shown here.
CEAL
Security Parameter (lambda) & Public Key (PQ)
The security parameter (lambda) represents the bit size of the public encryption key (PQ) of the Paillier cryptosystem. The public key is the product of two prime numbers (P
and Q
), and each such prime has a bitsize between 64 and 512 bits. As the security parameter size increases, the overall performance of a benchmark is expected to decrease.
It is possible to change the security parameter of a benchmark by updating the .pragma PQ=
directive at the beginning of a CEAL
benchmark (.sca
file) with two prime numbers separated by a dot (.
). The following are of public keys ranging from 16 to 1024 bits.
.pragma PQ=239.251
.pragma PQ=63199.64567
.pragma PQ=4281167959.4271299633
.pragma PQ=18299379327617480707.18345258783657292909
.pragma PQ=338871469111127928412308213206819656391.338531414912581056934822037249894061881
.pragma PQ=115689526107095890311249333520175779978137070980169508677335528535095435701957.115509443392406915656501893779637949187966713758992043305916442498716409678501
.pragma PQ=13392849694255970315601419090152597688339809774933571293865724091737666496951381207429127235940384883608845778583380210687006370486238723021460371010217257.13403952390292880134486926689236901739298695038033079040680862117777593853851234125818128702776151240584166261477766002390185782669746209391687589482784501