これまでのブログでは従来実装である演算ライブラリとwolfCryptに新規に導入されたSP Math All実装をご紹介してきました。 前回のブログでは、従来実装であるInteger実装との改善比較を行いました。この比較結果は皆さんにとって、新SP Math All実装に乗り換えるのに十分な説得材料となったはずです。
加えて、今回は新たなSP Math All実装が従来のTFM実装に比べてどれ程高速になるのかを見ていきます。(SP Math Allライブラリは”–enable-sp-math-all=huge”コンフィギュアオプション指定で生成し、TFM実装は”–ensable-fasthugemath”オプションを指定して生成しました)
CPUアーキテクチャ | x64 | Aarch64 |
---|---|---|
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 +ECC | 490866 | 136842 | -72.12% |
+RSA +DH -ECC | 485785 | 126410 | -73.98% |
-RSA -DH +ECC | 485210 | 136266 | -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/