Skip to content

momalab/TERMinatorSuite

Repository files navigation

TERMinator Suite License MIT

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 and Jenkins), which are demanding in terms of bitwise operations.

  • Synthetic: In this class we have the NQueens and Tak 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), and Permutations, 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 and Private 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 as CEAL sources (.sca files).

    Synthetic Category

  1. N-Queens (link)

  2. Tak function (link)

    Encoder Benchmarks Category

  3. Speck (cipher) (link)

  4. Simon (cipher) (link)

  5. Jenkins one-at-a-time Hash Function (link)

    Kernels Category

  6. Insertion-sort (link)

  7. Private Set Intersection (link)

  8. Data Deduplication Algorithm (link)

  9. Permutations (link)

  10. Sieve of Eratosthenes (link)

  11. Matrix Multiplication (link)

    Microbenchmarks Category

  12. Private Information Retrieval (link)

  13. Factorial (link)

  14. Fibonacci (link)

    Other Algorithms

  15. Number Occurrences

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