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.
This collection will grow and be updated periodically. Below is a table representing the currently available measurements.
|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!