暗号化フレームワークは、SPARC T シリーズシステムに暗号化メカニズムを提供し、これらのサーバーのために一部のメカニズムを最適化します。保存されたデータと移動中のデータのために、AES-CBC、AES-CFB128、ARCFOUR の 3 つの暗号化メカニズムが最適化されます。DES 暗号化メカニズムは OpenSSL 用に最適化されており、任意精度演算 (bignum) を最適化することによって、RSA と DSA も最適化されます。その他の最適化には、ハンドシェークや移動中のデータのための小さなパケットのパフォーマンスが含まれます。
SPARC T4 マイクロプロセッサ以降では、暗号化機能を実行するための新しい命令がハードウェアで直接使用できます。命令には特権が不要です。したがって、プログラムはカーネル環境、root 権限、またはその他の特別な設定なしで命令を使用できます。暗号化が直接ハードウェア上で実行されるため、暗号化用に個別の処理ユニットを備えた SPARC プロセッサを使用するシステムと比べて、暗号化操作が高速になります。
次の比較では、暗号化を最適化した SPARC T3 システムと SPARC T4 システム間のデータフローの相違点を示します。
図 2 SPARC T システム間のデータフローの比較
次の表は、特定の Oracle Solaris リリースと組み合わせた場合の SPARC T マイクロプロセッサユニットの暗号化機能の詳細な比較を示しています。
|
T4 暗号化命令には次のものが含まれます。
aes_kexpand0、aes_kexpand1、aes_kexpand2
これらの命令は、鍵拡張を実行します。128 ビット、192 ビット、または 256 ビットのユーザー指定の鍵を、暗号化および復号化中に内部で使用される鍵スケジュールに展開します。aes_kexpand2 命令は AES-256 専用です。それ以外の 2 つの aes_kexpand 命令は、AES-128、AES-192、AES-256 の 3 つの鍵の長さすべてに使用されます。
aes_eround01、aes_eround23、aes_eround01_l, aes_eround_23_l
これらの命令は、AES 暗号化ラウンドまたは変換に使用されます。FIPS 197 の AES 標準に従って、使用するラウンドの数 (10、12、14 など) は AES 鍵の長さに応じて変化しますが、この理由は、大きい鍵を使用すると、より堅牢な暗号化には、多くの計算が必要になる可能性があるためです。
aes_dround01、aes_dround23、aes_dround01_l、aes_dround_23_l
これらの命令は、暗号化と同様の方法で、AES 復号化ラウンドに使用されます。
DES/DES-3、Kasumi、Camellia、Montgomery 平方根 (RSA Bignum 用)、および CRC32c チェックサム用の命令
MD5、SHA1、および SHA2 ダイジェスト命令
SPARC T4 ハードウェア暗号化命令は、Oracle Solaris 11 を実行する SPARC T4 システムで使用可能で、システムの T4 マイクロプロセッサの組み込み T4 エンジンにより自動的に使用されます。これらの命令は OpenSSL アップストリームコードに組み込まれています。したがって、OpenSSL 1.0.1e がパッチとともに提供され、これらの命令を使用できます。
T4 命令の詳細は、次の記事を参照してください。
「SPARC T4 OpenSSL Engine」 (https://blogs.oracle.com/DanX/entry/sparc_t4_openssl_engine)
T4 最適化が使用されているかどうかを確認するには、isainfo コマンドを使用します。sparcv9 および aes が出力に含まれている場合は、システムが最適化を使用していることを示します。
$ isainfo -v 64-bit sparcv9 applications crc32c cbcond pause mont mpmul sha512 sha256 sha1 md5 camellia kasumi des aes ima hpc vis3 fmaf asi_blk_init vis2 vis popc
システムで実行されている OpenSSL のバージョンを確認するには、端末ウィンドウで openssl version と入力します。出力は、次のようになります。
OpenSSL 1.0.2j 26 Sep 2016
SPARC T4 最適化を備えた OpenSSL をシステムがサポートしているかどうかを確認するには、次のように libcrypto.so ライブラリを確認します。
# nm /lib/libcrypto.so.1.0.0 | grep des_t4 [5239] | 504192| 300|FUNC |GLOB |3 |12 |des_t4_cbc_decrypt [5653] | 503872| 300|FUNC |GLOB |3 |12 |des_t4_cbc_encrypt [4384] | 505024| 508|FUNC |GLOB |3 |12 |des_t4_ede3_cbc_decrypt [2963] | 504512| 508|FUNC |GLOB |3 |12 |des_t4_ede3_cbc_encrypt [4111] | 503712| 156|FUNC |GLOB |3 |12 |des_t4_key_expand
コマンドで出力が生成されない場合、システムは OpenSSL の SPARC T4 最適化をサポートしていません。