【发布时间】:2018-07-07 08:44:22
【问题描述】:
我正在尝试使用 openssl 在 ZedBoard 上对 AES 和 RSA 进行基准测试,并计算加密或解密一个数据块所需的时间。我能够使用 openssl speed 命令获得结果。但是,我对一些输出结果感到困惑,我希望有这方面经验的人能提供一些启示。
例如,在下面openssl speed -elapsed -evp aes-128-cbc 命令的输出中:
# openssl speed -elapsed -evp aes-128-cbc
You have chosen to measure elapsed time instead of user CPU time.
Doing aes-128-cbc for 3s on 16 size blocks: 3721379 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 64 size blocks: 1035700 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 268675 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 1024 size blocks: 67840 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 8192 size blocks: 8523 aes-128-cbc's in 3.00s
OpenSSL 1.0.2j 26 Sep 2016
built on: reproducible build, date unspecified
options:bn(64,32) rc4(ptr,char) des(idx,cisc,16,long) aes(partial) idea(int) bl
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
aes-128-cbc 19847.35k 22094.93k 22926.93k 23156.05k 23273.47k
在吞吐量结果的最后一行中,我了解到对于 16 字节的块大小,在 CBC 模式下运行 AES-128 1 秒将处理 19.85 MB 的数据。说加密一个数据块需要 0.806 μs 是否正确? ((16/19.85)*10^-6 秒)
其次,在使用 openssl speed 命令测试 RSA 速度时,它是否使用任何专用硬件(例如 ZedBoard 中用于对引导映像的分区进行签名并生成 RSA 密钥的 HSM)?或者有没有办法检查速度测试期间是否正在使用这个硬件模块?此外,RSA 的速度输出并没有提及签名输入消息的大小。它是根据PCKS#1 v2.1 标准根据密钥大小计算的吗? maxInputSize_inBytes
最后,使用 perf 工具(通过计算时钟周期数并计算执行)分析 RSA 实现是否与运行 openssl 速度测试相同?
我是这方面的初学者,如果我的问题过于幼稚,我深表歉意。提前致谢!
【问题讨论】:
标签: encryption openssl cryptography benchmarking execution-time