如何对加密库进行基准测试?

时间:2011-03-23 17:29:53

标签: security encryption cryptography openssl benchmarking

对加密库进行基准测试有哪些好的测试?

我们应该使用哪个单位(时间,CPU周期......)来比较不同的加密库?

有没有工具,程序......?

任何想法,欢迎评论!

感谢您的投入!

4 个答案:

答案 0 :(得分:3)

我认为你的意思是性能基准。我会说时间和周期都是有效的基准,因为有些代码可能在不同的架构上执行不同(如果它们足够不同,可能会有很大不同)。

如果对你来说非常重要,我会自己做测试。您可以使用一些计时器(几乎所有语言都有一个),或者您可以使用一些探查器(几乎所有语言都有其中一种)来确定您在目标平台上寻找的算法的确切性能。

如果您正在查看一种算法与另一种算法,您可以查找其他人已经收集的数据,这将为您提供一个粗略的想法。例如,以下是Crypto ++的一些基准测试: http://www.cryptopp.com/benchmarks.html

请注意,它们使用MB /秒和周期/字节作为指标。我认为这些都是非常好的选择。

答案 1 :(得分:3)

在我之前有一些非常好的答案,但请记住,优化是通过timing attack泄漏密钥材料的一种非常好的方法(例如,请参阅how devastating it can be for AES)。如果攻击者有时间可以为您的操作计时,那么您可能不需要最快但最常用的时间库(并且可能是最常用的电源使用,如果有人可以监控您的可用时间)。 OpenSSL可以很好地掌握当前的攻击,不一定能说出其他库的相同内容。

答案 2 :(得分:2)

  

对加密库进行基准测试有哪些好的测试?

下面的答案是在Crypto ++的背景下。我现在还不知道其他图书馆,比如OpenSSL,Botan,BouncyCastle等。

Crypto ++库有一个内置的基准测试套件。

  

我们应该使用哪个单位(时间,CPU周期......)来比较不同的加密库?

通常以每字节周期来衡量性能。每字节周期取决于CPU频率。另一个相关指标是以MB / s为单位测量的吞吐量。它还取决于CPU频率。

  

有没有工具,程序......?

git clone https://github.com/weidai11/cryptopp.git
cd cryptopp
make static cryptest.exe

# 2.0 GHz (use KB=1024; not 1000)
make bench CRYPTOPP_CPU_SPEED=1.8626

make bench将创建一个名为benchmark.html的文件。

如果您想手动运行测试,那么:

./cryptest.exe b <time in seconds> <cpu speed in GHz>

它将输出不含<HEAD><BODY>标签的类似HTML的表格。您仍然可以在网络浏览器中查看它。

您还可以在Crypto++ Benchmarks查看Crypto ++基准页面。该信息已注明日期,并在我们的TODO清单上。

你还需要准确看起来正确的事情。例如,SSE4.2和ARMv8具有CRC32指令。每字节周期应从大约3或5 cpb(仅软件)到大约1或1.5 cpb(硬件加速)。它应该等同于在2 GHz左右运行的现代硬件上大约300或500 MB / s(仅限软件)的变化,大约为1.5 GB / s(硬件加速)。

其他技术,如SSE2和NEON,使用起来比较棘手。您应该看到理论上的每字节周期数和吞吐量,但您可能不知道它是什么。您可能需要联系算法的作者才能找到答案。例如,我们联系了BLAKE2的作者,了解我们的ARMv7 / ARMv8 NEON实现是否按预期执行,因为它在作者的主页上是missing benchmark results

我还发现GCC 4.6(及以上)和-O3可以在纯软件实现中发挥重要作用。这是因为GCC在-O3处大量矢量化,并且您可能会看到2x到2.5x的加速。例如,编译器可能会生成在-O2处以40 cpb运行的代码。在-O3,它可能以15或19 cpb运行。一个好的SSE2或NEON实现应该优于每个字节至少几个周期的纯软件实现。在同一示例中,SSE2或NEON实现可以在8到13 cpb运行。

还有像OpenBenchmarking.org这样的网站可以为您提供一些指标。

答案 3 :(得分:0)

除了上述评论之外,美国政府还有FIPS program你可能想看的。这不是完美的(通过长镜头)但它是一个开始 - 你可以在评估加密时了解他们正在研究的事情。

我还建议查看Computer Security Division of the NIST

另外,在附注中......回顾主人对Security Pitfalls in Cryptography主题的评论(Bruce Schneier)总是好的。另外:Security is harder than it looks