暗号化・復号,ディジタル署名,認証などの暗号認証機能を利用する場合,一般に暗号処理や認証処理が無い場合に比べて処理時間が増加します.実際の運用を始める際,暗号認証処理にかかる時間を評価しておく必要があります.この時間は,利用するアルゴリズムや対象データの大きさなどに依存します.
一般的には,処理性能の高い(処理時間の短い)順に,
ダイジェスト(ハッシュ関数)> 共通鍵暗号 >> 公開鍵暗号
になります.また,同じアルゴリズムならば鍵長の長い程,処理時間は掛かるようになります.
一般に,暗号認証機能の処理時間に影響を与える要因には次のようなものがあります.
OpenSSL ライブラリにおける主要な暗号認証機能の処理性能を実測した例を紹介します.
Algoritm | Block Size (bits) | ||
256 | 1024 | 8192 | |
MD5 | 413,694 | 615,286 | 737,323 |
HMAC(MD5) | 371,110 | 603,888 | 731,523 |
SHA-1 | 451,629 | 664,626 | 797,463 |
SHA-256 | 271,008 | 341,089 | 370,302 |
SHA-512 | 313,271 | 455,683 | 512,063 |
SHA-512 が SHA-256 より処理性能が高いのは,SHA-512 が64ビット単位の処理であり,32ビット単位の処理の SHA-256 より,64ビットマシン環境では有利であるためです.
Algoritm | Block Size (bits) | ||
256 | 1024 | 8192 | |
DES | 79,787 | 79,747 | 80,724 |
DES-EDE3 | 29,840 | 29,892 | 29,930 |
AES-128 | 150,505 | 154,104 | 153,192 |
AES-192 | 127,617 | 127,824 | 128,371 |
AES-256 | 109,176 | 109,507 | 110,059 |
Camellia-128 | 186,611 | 190,688 | 194,538 |
Camellia-192 | 138,812 | 144,551 | 145,923 |
Camellia-256 | 136,721 | 144,494 | 143,739 |
Algorithm | Key Length (bits) | Sign | Verify |
DSA | 512 | 0.060 | 0.048 |
1024 | 0.110 | 0.112 | |
2048 | 0.305 | 0.356 | |
RSA | 512 | 0.053 | 0.004 |
1024 | 0.140 | 0.010 | |
2048 | 0.920 | 0.029 | |
4096 | 6.477 | 0.105 | |
ECDSA | 160 | 0.067 | 0.249 |
192 | 0.076 | 0.298 | |
224 | 0.100 | 0.403 | |
256 | 0.045 | 0.110 | |
384 | 0.215 | 0.921 | |
521 | 0.444 | 1.941 |
Java 環境での暗号処理性能の測定に関しては,性能測定プログラムのサンプルソースが以下にあります.
→ 暗号プログラム (Java言語版)