【问题标题】:Why ECDSA sign with P-256(​NIST Curve P-256/​ SHA-256) curve is very much faster than other eliptical curves?为什么带有 P-256(​NIST Curve P-256/​SHA-256) 曲线的 ECDSA 符号比其他椭圆曲线快得多?
【发布时间】:2022-08-07 08:00:29
【问题描述】:

我一直在使用openssl speed 应用程序为 ecdsap256(nistp256) 运行一些基准测试并得到以下结果。

./openssl speed -elapsed ecdsa

OpenSSL 1.1.1n  15 Mar 2022
built on: Fri Jul 29 08:48:14 2022 UTC
options:bn(64,64) rc4(16x,int) des(int) aes(partial) idea(int) blowfish(ptr) 
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DZLIB -DNDEBUG
                              sign    verify    sign/s verify/s
 160 bits ecdsa (secp160r1)   0.0002s   0.0002s   4916.7   4923.6
 192 bits ecdsa (nistp192)   0.0003s   0.0002s   3936.7   4184.7
 224 bits ecdsa (nistp224)   0.0004s   0.0003s   2672.5   2960.2
 256 bits ecdsa (nistp256)   0.0000s   0.0001s  42865.3  13915.1
 384 bits ecdsa (nistp384)   0.0010s   0.0008s   1027.2   1281.3
 521 bits ecdsa (nistp521)   0.0022s   0.0017s    444.8    582.7
 163 bits ecdsa (nistk163)   0.0003s   0.0005s   3938.3   1969.7
 233 bits ecdsa (nistk233)   0.0004s   0.0007s   2825.4   1428.3
 283 bits ecdsa (nistk283)   0.0006s   0.0012s   1680.2    851.9
 409 bits ecdsa (nistk409)   0.0010s   0.0019s    998.3    523.9
 571 bits ecdsa (nistk571)   0.0022s   0.0042s    462.3    239.6
 163 bits ecdsa (nistb163)   0.0003s   0.0005s   3677.1   1862.8
 233 bits ecdsa (nistb233)   0.0004s   0.0007s   2699.5   1343.3
 283 bits ecdsa (nistb283)   0.0006s   0.0012s   1570.0    805.3
 409 bits ecdsa (nistb409)   0.0011s   0.0020s    942.2    495.5
 571 bits ecdsa (nistb571)   0.0023s   0.0045s    432.2    224.7

平台

Operating Sytem: Ubuntu 16.04 LTS
Memory: 15.4 GiB
Processor: Intel® Core™ i7-7500U CPU @ 2.70GHz × 4 

谁能解释 nistp256 速度与其他曲线之间存在巨大差异的原因?

这是测试 ECDSA 签名算法的 CPU 性能的正确方法吗?

    标签: openssl ubuntu-16.04 ecdsa


    【解决方案1】:

    这条曲线,作为一个命名曲线,有一个特殊的专用实现,他们已经优化了它,只是因为它很常用。大多数其他曲线都经过更一般的 EC 例程。

    https://github.com/openssl/openssl/tree/master/crypto/ec

    目前看起来 secp256r1、secp521r1、secp224r1 和 curve25519 是特例。

    【讨论】:

      猜你喜欢
      • 2019-08-15
      • 2019-02-12
      • 2020-09-17
      • 2022-01-18
      • 2022-08-16
      • 2016-07-19
      • 1970-01-01
      • 2021-08-05
      • 2019-05-06
      相关资源
      最近更新 更多