/cryptobench

Benchmarking LWC algorithms

Primary LanguagePython

cryptobench

A project for benchmarking LWC algorithms.

NOTE: All the sub-directories contain the implementation files of crypto algorithms. The implementations are taken from the internet.

Instructions

# Setup cyclops on RPI.
$ ./run.sh

# Import the correct modules in benchmark.py on both the sender and the receiver side.
# On the receiver device execute:
$ python3 benchmark.py

# After running the script on receiver device, run the same script on the sender device.
# RECEIVER is the IP of receiver device.
# PLAINTEXT is the size of the random plaintext to generate.
$ RECEIVER='192.168.1.12' PLAINTEXT=1000 python3 benchmark.py

To-Do

  • Print only has encryption function, no decryption.
  • Abstract out benchmarking functionality from each algorithm
  • Fix Klein decryption
  • Camellia code is not in Python.
  • Klein only has encryption function, no decryption.
  • Rectangle code is not in Python.

Dependencies

  • pip install hwcounter

Notes

  • Compares 41 existing symmetric key lightweight cryptography (plain encryption) algorithms over 7 performance metrics (Block/Key size, Memory, Gate Area, Latency, Throughput, Power & Energy requirements along with hardware and soft- ware efficiency) as recommended by the NIST report for resource-constrained IoT devices.

References

SIMON and SPECK

Algorithm Implementation Source