Crypto throughput/performance measurements
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
README.md
measure_arm_rpi3_1.md
measure_x86_1.md
measure_x86_64_1.md

README.md

Crypto Measurements

It's happened many times in my career, including as recent as circa late 2016. I hear an engineer say:

"We chose MD5 for data digesting because it's the fastest."

Erg. Not only is MD5 insecure, but even the legacy notion of it being the fastest hashing algorithm is suspect given how the latest CPUs include feature sets which, when combined with newer 64-bit algorithm designs, simply challenge everything we once knew about crypto performance.

So this is a collection of various crypto algorithm benchmarks collected on different platforms, to help confirm or debunk various cryptographic throughput/performance understandings.

The goal to collect this data is look at:

  • How the latest optimized algorithms perform on modern hardware systems with advantageous CPU instructions/feature sets
  • Challenge the "legacy status quo" regarding strong algorithms being slower than weaker algorithms
  • Make informed choices on the best-fit algorithm for applications exclusively on a specific platform vs. balanced choice for a mixed cross-platform ecosystem
  • Provide measurable comparisons to illustrate the additional cost (if any!) in choosing stronger cryptographic implementations for products (like IoT) looking to maintain a survivable, strong security posture for many (5-10) years

A few non-goals:

  • Not attempting to necessarily find the fastest cryptography library or implementation; in fact, it caters more to relative comparisons amongst different choices within a single library/collection
  • Not attempting to use results from narrow-purpose benchmark tools like SUPERCOP; instead prefering measurements taken from practical cryptographic libraries/implementations that real-world applications would typically use

In a perfect world

Hopefully, with the right data (this data!), software and device producers will make better informed choices towards stronger/future-proof security. We need to stop using decade old crypto in stuff that must last the next decade; instead, consider the incremental costs to push choices as far forward in the security spectrum as possible.

Available measurements

This collection will grow and be updated periodically. Below is a table representing the currently available measurements.

File name CPU Bits Platform
measure_x86_64_1.md Intel Haswell w/ AES-NI 64 AWS EC2 c4.large
measure_x86_1.md Intel Haswell w/ AES-NI 32 (compiled) AWS EC2 c4.large
measure_arm_rpi3_1.md Broadcom ARM Cortex-A53 32 Raspberry Pi 3

Have measurements to contribute? Like to contribute a hardware platform to use for ongoing benchmarks? Contact me!