Intel x86_64 におけるwolfSSLの性能 (その6)

wolfSSLの最近のリリースには、Intel x86_64プラットフォームを対象とした新しいアセンブリコードが含まれています。性能の大幅な向上を6つのブログシリーズでご紹介しています。今回はそのラストで、P-256曲線上の楕円曲線(EC)操作の性能について説明します。
楕円曲線暗号(ECC)は、RSA、DSA、DHなどのアルゴリズムを持つ有限体(FF)暗号に代わるものです。ECDHはDHの楕円曲線であり、ECDSAはRSAとDSAの楕円曲線です。 ECDSAとECDHは、対応するFFが 使用できる場所であればどこでも使用できます。 ECCには、操作を実行するために事前に定義された曲線が必要です。最も一般的に使用される曲線はP-256です。これは128ビット鍵長の暗号強度を持ち、TLS、IETFの証明書の技術仕様、NISTのFIPS 186-4などの多くの規格に含まれています。ブラウザとWebサーバーでは、DHよりECDHが好まれ、はるかに高速です。
wolfSSL 3.13以降では、P-256曲線を使ったECアルゴリズムの実装が完全に新しくなりました。秘密鍵操作は定数時間 での実行ができます。実装には、C言語対応、Intel x86_64とBMI2とADXの命令セットのアセンブリコードが含まれています。 また、約1/3のサイズのアセンブリコードのもの(より小さい事前計算テーブル)もあり、速度も高速です。
以下の2つのチャートは、古いwolfSSLコード、新しい小さな wolfSSLアセンブリコード、新しい高速なwolfSSLアセンブリコード、OpenSSLの相対的なパフォーマンスを、Ivy BridgeおよびSkylake CPU上の新しいwolfSSL C言語実装と比較して示しています。
OpenSSLでは、ECDHキー生成操作の速度を測定していません。新しいC言語での実装は、両方のCPU用の古い C / アセンブラー実装よりもはるかに高速です。アセンブリコードは、Cコードよりも何倍も優れています。これは、楕円曲線点のより大きな事前計算テーブルの使用が主な原因です。
OpenSSLコードは、一般的なx86_64コードを使用する新しい高速wolfSSLアセンブリコードより約10%遅く、BMI2およびADX命令を使用するx86_64のwolfSSLアセンブリコードよりも5%から35%遅いです。


参照:
ECDSA (Elliptic Curve Digital Signature Algorithm)
ECDH (Elliptic-curve Diffie–Hellman)
 
さらに詳しい情報は弊社問い合わせ窓口info@wolfssl.jpまでお問い合わせください。
原文: https://www.wolfssl.com/wolfssl-performance-intel-x86_64-part-6/
wolfSSLホーム:www.wolfssl.jp (English:www.wolfssl.com)