環境
OpenSSLのspeedコマンドで調査。
https://www.openssl.org/docs/man1.1.1/man1/openssl-speed.html
PCスペック
AMD Athlon Silver 3050U with Radeon Graphics 2.30 GHz
結果
RSAは、署名速度が遅く、検証速度が速い。
ECDSAは、署名速度が速く、検証速度が遅い。
そのため、TLSサーバー証明書を導入しているウェブサーバーでは、ECDSAのTLSサーバー証明書を導入することにより、ウェブサーバーのCPU、メモリ使用量の低減が図れる。
また、セキュリティ強度が112であるRSA 2048は、暗号鍵管理のガイドライン NIST Special Publication 800-57 Part 1 Revision 5において、2030/12/31までしか使用が許容されていない。
RSA
暗号アルゴリズム cryptographic algorithms | セキュリティ 強度 | 署名回数/秒 sign/s | 検証回数/秒 verify/s | 署名回数比較 | 検証回数比較 |
RSA 2048 bits | 112 | 926.2 | 29368.2 | ECDSA 256の1/25倍 | ECDSA 256の3倍 |
RSA 3072 bits | 128 | 300.9 | 14242.3 | ECDSA 256の1/77倍 | ECDSA 256の2倍 |
RSA 4096 bits | 128より大きく 192未満 | 128.3 | 8299.0 | ECDSA 384の1/5倍 | ECDSA 384の13倍 |
RSA 7360 bits | 192 | 14.9 | 2419.4 | ECDSA 384の1/40倍 | ECDSA 384の4倍 |
RSA 15360 bits | 256 | 2.8 | 634.1 | ECDSA 521の1/93倍 | ECDSA 521の2倍 |
ECC
暗号アルゴリズム cryptographic algorithms | セキュリティ 強度 | 署名回数/秒 sign/s | 検証回数/秒 verify/s | 署名回数比較 | 検証回数比較 |
ECDSA 256 bits | 128 | 23119.0 | 8774.7 | RSA 2048の25倍 RSA 3072の77倍 | RSA 2048の1/3倍 RSA 3072の1/2倍 |
ECDSA 384 bits | 192 | 586.7 | 642.4 | RSA 4096の5倍 RSA 7360の40倍 | RSA 4096の1/13倍 RSA 7360の1/4倍 |
ECDSA 521 bits | 256 | 259.7 | 310.7 | RSA 15360の93倍 | RSA 15360の1/2倍 |
コマンド実行結果
openssl speed rsa2048 rsa3072 rsa4096 rsa7680 rsa15360 ecdsap256 ecdsap384 ecdsap521
Doing 2048 bits private rsa's for 10s: 8727 2048 bits private RSA's in 9.42s
Doing 2048 bits public rsa's for 10s: 283128 2048 bits public RSA's in 9.64s
Doing 3072 bits private rsa's for 10s: 2614 3072 bits private RSA's in 8.69s
Doing 3072 bits public rsa's for 10s: 141755 3072 bits public RSA's in 9.95s
Doing 4096 bits private rsa's for 10s: 1269 4096 bits private RSA's in 9.89s
Doing 4096 bits public rsa's for 10s: 82601 4096 bits public RSA's in 9.95s
Doing 7680 bits private rsa's for 10s: 138 7680 bits private RSA's in 9.27s
Doing 7680 bits public rsa's for 10s: 23854 7680 bits public RSA's in 9.86s
Doing 15360 bits private rsa's for 10s: 26 15360 bits private RSA's in 9.25s
Doing 15360 bits public rsa's for 10s: 6143 15360 bits public RSA's in 9.69s
Doing 256 bits sign ecdsa's for 10s: 218186 256 bits ECDSA signs in 9.44s
Doing 256 bits verify ecdsa's for 10s: 83908 256 bits ECDSA verify in 9.56s
Doing 384 bits sign ecdsa's for 10s: 5097 384 bits ECDSA signs in 8.69s
Doing 384 bits verify ecdsa's for 10s: 5862 384 bits ECDSA verify in 9.13s
Doing 521 bits sign ecdsa's for 10s: 2333 521 bits ECDSA signs in 8.98s
Doing 521 bits verify ecdsa's for 10s: 2961 521 bits ECDSA verify in 9.53s
version: 3.0.1
built on: Wed Dec 15 14:25:21 2021 UTC
options: bn(64,64)
compiler: cl /Z7 /Fdossl_static.pdb /Gs0 /GF /Gy /MD /W3 /wd4090 /nologo /O2 -DL_ENDIAN -DOPENSSL_PIC -D_USING_V110_SDK71_ -D_WINSOCK_DEPRECATED_NO_WARNINGS -D_WIN32_WINNT=0x0502
CPUINFO: OPENSSL_ia32cap=0x7ed8320b078bffff:0x209c01a9
sign verify sign/s verify/s
rsa 2048 bits 0.001080s 0.000034s 926.2 29368.2
rsa 3072 bits 0.003323s 0.000070s 300.9 14242.3
rsa 4096 bits 0.007794s 0.000120s 128.3 8299.0
rsa 7680 bits 0.067142s 0.000413s 14.9 2419.4
rsa 15360 bits 0.355769s 0.001577s 2.8 634.1
sign verify sign/s verify/s
256 bits ecdsa (nistp256) 0.0000s 0.0001s 23119.0 8774.7
384 bits ecdsa (nistp384) 0.0017s 0.0016s 586.7 642.4
521 bits ecdsa (nistp521) 0.0039s 0.0032s 259.7 310.7