【问题标题】:Interpreting openssl speed output for rsa with multi option使用多选项解释 rsa 的 openssl 速度输出
【发布时间】:2014-01-24 09:50:59
【问题描述】:

我正在尝试评估 CPU 性能。我有一个 Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz 并运行以下命令:openssl speed rsa -multi 12 2>&1 |tee openssl-log.txt 并得到以下输出:

                   sign   verify   sign/s   verify/s
rsa  512 bits 0.000008s 0.000001s 118050.6 1200000.0
rsa 1024 bits 0.000038s 0.000002s  26098.7 451567.0
rsa 2048 bits 0.000239s 0.000007s   4183.6 135606.3
rsa 4096 bits 0.001713s 0.000028s    583.7  35778.4

有人可以帮我理解输出吗?列签名和验证是什么意思?文档似乎没有解释太多: https://www.openssl.org/docs/apps/speed.html

提前谢谢你。

【问题讨论】:

    标签: linux performance openssl rsa


    【解决方案1】:

    速度测试的代码在<openssl>/apps/speed.c

    -multi 是多个并行基准测试的开关,而不是乘法(以消除所有混淆)。请参阅第 1145 行附近的 cmets:

    #ifndef NO_FORK
        BIO_printf(bio_err,"-multi n        run n benchmarks in parallel.\n");
    #endif
    

    列签名和验证是什么意思?

    签名并验证按照他们所说的去做。他们使用不同的 RSA 模数对签名操作和验证操作进行计时。

    Sign/s 和Verify/s 是Sign 和Verify 的倒置。即,1/0.000008s => 每秒 125,000 个符号。

    这是打印您所看到的报告的代码。它从第 2450 行开始:

    #ifndef OPENSSL_NO_RSA
        j=1;
        for (k=0; k<RSA_NUM; k++)
            {
            if (!rsa_doit[k]) continue;
            if (j && !mr)
                {
                printf("%18ssign    verify    sign/s verify/s\n"," ");
                j=0;
                }
            if(mr)
                fprintf(stdout,"+F2:%u:%u:%f:%f\n",
                    k,rsa_bits[k],rsa_results[k][0],
                    rsa_results[k][1]);
            else
                fprintf(stdout,"rsa %4u bits %8.6fs %8.6fs %8.1f %8.1f\n",
                    rsa_bits[k],rsa_results[k][0],rsa_results[k][1],
                    1.0/rsa_results[k][0],1.0/rsa_results[k][1]);
            }
    #endif
    

    查找执行签名和验证的代码留给读者作为练习;)


    拥有 Intel(R) Xeon(R) CPU E5-1650 v2 @ 3.50GHz

    只是自行车脱落,但如果您使用现代 GCC,请务必使用 configenable-ec_nistp_64_gcc_128。使用ec_nistp_64_gcc_128 会使某些操作(例如DH 操作)加快2 倍或4 倍。

    __uint128_t 需要一个现代的 GCC。 Configure 无法确定编译器自己是否支持 __uint128_t,因此它使 ec_nistp_64_gcc_128 处于禁用状态。

    【讨论】:

    • 被签名和验证的有效负载的大小肯定很重要吗?否则它不是吞吐量,而是一个无单位的数字,只能与自身的其他实例进行比较。为什么基准测试输出中指定的大小不像 sha*aes* 速度测试中指定的大小?
    • @theferrit32 有效载荷的大小只对摘要的计算很重要。速度测试仅包括应用于摘要的实际 RSA 操作,而不包括摘要的计算。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 2015-04-11
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多