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

wolfSSLの最近のリリースには、Intel x86_64プラットフォームを対象とした新しいアセンブリコードが含まれています。この記事では、RSAとDiffie-Hellman(DH)のパフォーマンスについて説明します。
RSAは、証明書に最も一般的に使用される公開鍵アルゴリズムです。 TLSハンドシェイクを実行すると、サーバーは取得済みのメッセージのハッシュに署名し、クライアントは証明書チェーン内の証明書の署名を検証し、証明書の公開鍵を持つメッセージのハッシュを検証します。署名と検証は、ハンドシェイクで最も時間のかかる操作です。
DHはハンドシェイクの中で選択される鍵交換 アルゴリズムでしたが、楕円曲線暗号が同じセキュリティレベルでかなり高速であるため、だんだん使われなくなってきています。鍵交換は、TLSハンドシェイクで2番目に時間がかかる操作です。
wolfSSL 3.13以降では、特定の鍵サイズ(2048ビットと3072ビット)を対象としたRSAとDHを全く新しく実装し直しました。この実装で秘密鍵操作に関して定数時間で行うことができるようになりました。また、この実装にはインテルx86_64、BMI2およびADX拡張を対象とするCおよびアセンブリコードが含まれます。新しいコードは、古いコードよりも大幅に優れており、古いCPUではOpenSSLとほぼ同じ速度で、新しいCPUでは少し速くなります。
以下の2つのチャートは、古いwolfSSLコード、新しいwolfSSLアセンブリコード、OpenSSLの相対的なパフォーマンスを、Ivy BridgeおよびSkylake CPU上の新しいwolfSSL C実装と比較して示しています。(注: OpenSSL では、DH操作の速度を測定していません。)
新しいC言語による実装は、古いC言語/アセンブラのwolfSSLコードに比べどちらのCPUでも高速です。 x86_64のアセンブリコードは、x86_64では23%から46%、BMI2およびADXでは92%および144%、Cコードよりも速くなりました。 OpenSSLコードは、wolfSSLアセンブリコードとほぼ同じ速度です。


 
参照
RSA (Wikipedia)
Diffie-Hellman (Wikipedia)
さらに詳しい情報は弊社問い合わせ窓口info@wolfssl.jpまでお問い合わせください。
原文: https://www.wolfssl.com/wolfssl-performance-intel-x86_64-part-5/
wolfSSLホーム:www.wolfssl.jp (English:www.wolfssl.com)