wolfSSL SP Math All実装とTFM実装

これまでのブログでは従来実装である演算ライブラリとwolfCryptに新規に導入されたSP Math All実装をご紹介してきました。 前回のブログでは、従来実装であるInteger実装との改善比較を行いました。この比較結果は皆さんにとって、新SP Math All実装に乗り換えるのに十分な説得材料となったはずです。

加えて、今回は新たなSP Math All実装が従来のTFM実装に比べてどれ程高速になるのかを見ていきます。(SP Math Allライブラリは”–enable-sp-math-all=huge”コンフィギュアオプション指定で生成し、TFM実装は”–ensable-fasthugemath”オプションを指定して生成しました)

CPUアーキテクチャx64Aarch64
RSA 2048 署名32.05%44.69%
RSA 2048 署名検証21.30%31.01%
DH 2048 鍵生成10.90%16.31%
DH 2048 鍵合意6.56%16.27%
ECC P-256 鍵生成57.92%56.95%
ECC P-256 鍵合意54.38%55.90%
ECC P-256 署名53.95%49.95%
ECC P-256 署名検証41.35%47.73%

楕円曲線アルゴリズムでは常にCPUアーキテクチャによらず(x64でおおよそ50%、Aarch64でおおよそ100%の速度向上)高速です。RSAとDHではバラつきがみられますが、RSA署名では顕著に高速です。これは改良されたアセンブリコードを使った乗算とべき乗演算を使った結果です。

次はコードサイズの比較です。

x64アーキテクチャでのコードサイズ(バイト数)TFM
(#1)
SP Math All
(#2)
コードサイズ減少比率
(#2-#1)/#1 * 100
+RSA +DH +ECC490866136842-72.12%
+RSA +DH -ECC485785126410-73.98%
-RSA -DH +ECC485210136266-71.92%

TFMヒュージビルドは多倍長乗算にCombaの方法を取り入れていますが、一方SP Math Allは顕著に小さいカラツバ法の実装を取り入れています。これにより、コードサイズを抑えながら速度を向上できました。

SP Math All実装はTFM実装の全ての面で優れていることは明白です!

次回のブログではSP Math All実装とOpenSSLのパフォーマンス比較について紹介します。

シリーズ第一回:wolfSSLの新たな Multi-Precision 演算ライブラリ

シリーズ第二回目:wolfSSL SP Math All実装とInteger実装

ご質問は、info@wolfssl.jpまでお問い合わせください。テクニカルサポートについては、support@wolfssl.comにお問い合わせください。

原文:https://www.wolfssl.com/wolfssl-sp-math-tfm-implementations/