OpenSSLのパフォーマンス比較

提供: セキュリティ
2015年11月11日 (水) 01:05時点におけるDaemon (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

OpenSSL のパフォーマンスを比較してみました。

読み方

OpenSSL
おーぷん えすえすえる

概要

opensslには、ベンチマークのオプションが実装されています。openssl speed で実行できます。

openssl-0.9.8q と 1.0.2d, 1.0.1p, 1.0.0s, 0.9.8zg で sha 256 の比較

SHA-256 でテストしました。 openssl-0.9.8q は、FreeBSD 9.0-RELEASE にはじめから入っていたバイナリです。 openssl-1.0.2d 達は、自分でビルドしました。config のオプションは、zlib のみです。 自分でビルドした openssl は、以下のバージョンです。

  • openssl 1.0.2d
  • openssl 1.0.1p
  • openssl 1.0.0s
  • openssl 0.9.8zg

結論

1.0.2d のほうが 0.9.8qの1.79倍速い結果となりました。

openssl-1.0.2d > openssl-0.9.8q

openssl 0.9.8zg と openssl 1.0.0s は openssl 0.9.8q と同じぐらい遅く、1.0.1 以降は高速でした。

  • 速い
    • openssl 1.0.2d
    • openssl 1.0.1p
  • 遅い
    • openssl 1.0.0s
    • openssl 0.9.8zg

テスト環境

AMDのCPUの環境でテストを実施しました。

AMD Phenom(tm) II X4 980 Processor (4017.87-MHz K8-class CPU)

ベンチマーク openssl 0.9.8q

% openssl version
OpenSSL 0.9.8q 2 Dec 2010
% which openssl
/usr/bin/openssl
% openssl speed sha256
To get the most accurate results, try to run this
program when this computer is idle.
Doing sha256 for 3s on 16 size blocks: 5324850 sha256's in 3.00s
Doing sha256 for 3s on 64 size blocks: 3231766 sha256's in 3.00s
Doing sha256 for 3s on 256 size blocks: 1478358 sha256's in 3.00s
Doing sha256 for 3s on 1024 size blocks: 466211 sha256's in 3.00s
Doing sha256 for 3s on 8192 size blocks: 63113 sha256's in 3.00s
OpenSSL 0.9.8q 2 Dec 2010
built on: date not available
options:bn(64,64) md2(int) rc4(ptr,int) des(idx,cisc,16,int) aes(partial) blowfish(idx)
compiler: cc
available timing options: USE_TOD HZ=128 [sysconf value]
timing function used: getrusage
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
sha256           28375.34k    68923.07k   126113.99k   159083.83k   172285.95k

ベンチマーク openssl 1.0.2d

% env OPENSSL_CONF=$PWD/apps/openssl.cnf apps/openssl version
OpenSSL 1.0.2d 9 Jul 2015
% env OPENSSL_CONF=$PWD/apps/openssl.cnf apps/openssl speed sha256
Doing sha256 for 3s on 16 size blocks: 9568123 sha256's in 3.00s
Doing sha256 for 3s on 64 size blocks: 5501981 sha256's in 3.00s
Doing sha256 for 3s on 256 size blocks: 2399658 sha256's in 3.00s
Doing sha256 for 3s on 1024 size blocks: 740101 sha256's in 3.01s
Doing sha256 for 3s on 8192 size blocks: 99283 sha256's in 3.00s
OpenSSL 1.0.2d 9 Jul 2015
built on: reproducible build, date unspecified
options:bn(64,64) rc4(8x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx)
compiler: cc -I. -I.. -I../include  -DZLIB -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -DECP_NISTZ256_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
sha256           51029.99k   117375.59k   204770.82k   251964.98k   271108.78k

ベンチマーク openssl 1.0.1p

% env OPENSSL_CONF=$PWD/apps/openssl.cnf apps/openssl version
OpenSSL 1.0.1p 9 Jul 2015
% env OPENSSL_CONF=$PWD/apps/openssl.cnf apps/openssl speed sha256
Doing sha256 for 3s on 16 size blocks: 9351335 sha256's in 3.00s
Doing sha256 for 3s on 64 size blocks: 5351405 sha256's in 3.00s
Doing sha256 for 3s on 256 size blocks: 2322864 sha256's in 3.00s
Doing sha256 for 3s on 1024 size blocks: 713883 sha256's in 3.00s
Doing sha256 for 3s on 8192 size blocks: 95641 sha256's in 3.01s
OpenSSL 1.0.1p 9 Jul 2015
built on: Wed Nov 11 00:46:29 2015
options:bn(64,64) rc4(8x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx)
compiler: gcc -I. -I.. -I../include  -DZLIB -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -DL_ENDIAN -O3 -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
sha256           49873.79k   114163.31k   198217.73k   243672.06k   260485.34k

ベンチマーク openssl 1.0.0s

% env OPENSSL_CONF=$PWD/apps/openssl.cnf apps/openssl version
OpenSSL 1.0.0s 11 Jun 2015
% env OPENSSL_CONF=$PWD/apps/openssl.cnf apps/openssl speed sha256
Doing sha256 for 3s on 64 size blocks: 5156973 sha256's in 3.00s
Doing sha256 for 3s on 256 size blocks: 2249393 sha256's in 3.00s
Doing sha256 for 3s on 1024 size blocks: 693534 sha256's in 3.00s
Doing sha256 for 3s on 8192 size blocks: 93103 sha256's in 3.00s
OpenSSL 1.0.0s 11 Jun 2015
built on: Wed Nov 11 00:54:25 2015
options:bn(64,64) rc4(8x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx)
compiler: gcc -I. -I.. -I../include  -DZLIB -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -DL_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DWHIRLPOOL_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
sha256           48433.29k   110015.42k   191948.20k   236726.27k   254233.26k

ベンチマーク openssl 0.9.8zg

% env OPENSSL_CONF=$PWD/apps/openssl.cnf apps/openssl version
% env OPENSSL_CONF=$PWD/apps/openssl.cnf apps/openssl speed sha256
program when this computer is idle.
Doing sha256 for 3s on 16 size blocks: 5939600 sha256's in 3.00s
Doing sha256 for 3s on 64 size blocks: 3998215 sha256's in 3.00s
Doing sha256 for 3s on 256 size blocks: 1997856 sha256's in 3.00s
Doing sha256 for 3s on 1024 size blocks: 668304 sha256's in 3.00s
Doing sha256 for 3s on 8192 size blocks: 92625 sha256's in 3.00s
OpenSSL 0.9.8zg 11 Jun 2015
built on: Wed Nov 11 00:51:47 JST 2015
options:bn(64,64) md2(int) rc4(8x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx)
compiler: gcc -DZLIB -DOPENSSL_THREADS -pthread -D_THREAD_SAFE -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -DL_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM
available timing options: USE_TOD HZ=128 [sysconf value]
timing function used: getrusage
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
sha256           31660.44k    85268.91k   170430.82k   228043.36k   252846.50k

関連項目




スポンサーリンク