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

wolfSSLの最近のリリースには、Intel x86_64プラットフォームを対象とした新しいアセンブリコードが含まれています。大きなパフォーマンスの向上について、6つのシリーズ記事でご紹介します。今回はその4つ目でCurve25519とEd25519のパフォーマンスについて説明します。
Curve25519は、モンゴメリ型楕円曲線のパラメータのセットであり、128ビットのセキュリティを持ちます。 鍵交換に使用され、標準に多く含まれていることとその速度により、一般的になっています。アルゴリズムは TLS v1.3の一部として含まれており、NISTはSP 800-186の一部として検討しています。 Ed25519は、Twisted Edwardsカーブのパラメータセットであり、Curve25519と数学的に関連し、同じセキュリティ特性を持ちます。TLS v1.3の一部として 追加された高速のTwisted Edwards曲線上に、新しい署名方式が設計されました。 Ed25519によるEdDSAを使用してデジタル証明書を記述するドラフト仕様が作成されました。
TLSハンドシェイクでは、前方秘匿性を確実にするために、鍵交換操作を常に実行する必要があります。しかし鍵交換操作をすると、ハンドシェイク中の処理時間がかなり長くなります。そのためCurve25519のパフォーマンス向上は、1秒あたりに作成できるTLS接続の増加につながります。
旧バージョンのwolfSSLには、アルゴリズムをC言語で実装していました。 Cコードは非常に高速でしたが、新しいアセンブリコードの方が断然高速です。一般的なIntel x86_64 CPUと、BMI2とADX(Broadwell以降のCPU)を搭載したCPU用のアセンブリコードがあります。
以下の2つのチャートは、Ivy BridgeとSkylake CPUのC実装と比較して、wolfSSLとOpenSSLの相対的なパフォーマンスを示しています。 Ivy Bridge CPUでは、新しいアセンブリコードはCコードよりも20%〜60%優れており、測定可能だったOpenSSLの鍵合意のオペレーションよりも優れています。 Skylake CPUでは、アセンブリコードが60%から86%高速です。 OpenSSLコードはこのCPU用に最適化されておらず低速なことがわかります。
さらに詳しい情報は弊社問い合わせ窓口info@wolfssl.jpまでお問い合わせください。


参照:
Curve25519: high-speed elliptic-curve cryptography
Ed25519
原文: https://www.wolfssl.com/wolfssl-performance-intel-x86_64-part-4/
wolfSSLホーム:www.wolfssl.jp (English:www.wolfssl.com)