耐量子暗号Kyber実装のベンチマーク

wolfSSLでは、米国NISTによりFIPS 203としてドラフトが公開されたKyber(ML-KEM)を独自に実装しています。これはまだ標準として成立しておらず、我々もまだこの実装を公開していないのですが、現段階でのベンチマーク結果をお知らせします。

私たちが実装するKyberには、以下の特徴があります。

  1. wolfSSL、wolfBoot、curlなどの製品と完全に統合されます。
  2. 高度に最適化されたSP Mathライブラリを使用しており、今後さらなる最適化に取り組みます。
  3. 弊社の製品は多くのオープンソースパッケージと組み合わせてご利用いただけます。
    それらのアプリケーションにおいて、Kyber/ML-KEMも同様にお使いいただけるようになります。
  4. ベアメタルを含めてFreeRTOS、VxWorks、Integrity、Zephyr、ITRON、LynxOS など、弊社がサポートするさまざまなOS環境で動作します
  5. ARM、RISC-V、DSP、FPGA、Intelなど、当社がサポートするさまざまなチップ上で動作します

下のグラフは従来型と耐量子アルゴリズムの性能比較です。数値は1秒あたりの実行回数なので、棒が長いほうが処理速度が速いことを示します。

まずは、Apple M1 Proにおけるベンチマーク結果を示します。以下の環境で実行しました。

  • ハード:MacBook Pro 18,3(2021年モデル)
  • CPUクロック:3.09GHz
  • 使用コア数:1

続いて、ARM Cortex-M4におけるベンチマーク結果を示します。以下の環境で実行しました。

  • ハード:STM32 NUCLEO-F446ZE
  • システムクロック(HCLK):168 MHz
  • 使用コア数:1
  • wolfSSL Math Setting:Single Precision ASM Cortex-M3+ Math
  • 最適化フラグ:-Ofast

ベンチマークコードを参照されたい場合は、info@wolfssl.jp までお問い合わせください。

これらの結果をもとに、鍵交換に要す合計時間を以下の表にまとめました。
セキュリティの観点から見ると、Kyber512はSECP256R1のECDHEと同等と言えます。
Kyber/ML-KEMの実行効率が大変優れていることが分かります。

M1 ProCortex-M4
ECDHE SECP256R10.05326.719
Kyber512 (NIST Level 1)0.04015.218
Kyber768 (NIST Level 3)0.06424.537
Kyber1024 (NIST Level 5)0.09738.036
(単位:ミリ秒)

ぜひ他のアルゴリズムと比べてみてください。ECDHEとあまり変わらないように感じるかもしれませんが、これから説明する鍵交換の仕組みを考慮するとKyber/ML-KEMの方が優れていることが分かります。

ECDHEはNIKE(Non-Interactive Key Exchange)であるのに対し、KyberはKEM(Key Encapsulation Mechanism)であるため、TLS 1.3を使用する環境においては値を直接比較できません。

NIKEでは、サーバとクライアントの両方が鍵を生成し、その双方で鍵合意を行う必要があります。その一方、KEMではクライアントで鍵生成を1回、サーバでカプセル化、クライアントでカプセル化解除を実行します。すなわちNIKEでは共有秘密を実現するためにKEMの2倍の操作数が必要であり、公平に比較するためにはECDHEの処理に要す時間を2倍にすることが求められます。

Kyberの処理がいかに高速であるか、お分かりいただけましたでしょうか。将来の最適化によるさらなる高速化も期待できます。

ただし、Kyberはその仕組みから送信速度が遅いとこの利点を失ってしまう可能性があることに注意が必要です。

Kyberが各プロトコルでどのように利用できるのか、wolfSSLにおけるその他の耐量子暗号への取り組みなど、ご興味をお持ちの方はぜひ info@wolfssl.jp までお問い合わせください。

原文:
https://www.wolfssl.com/post-quantum-kyber-benchmarks-macos/
https://www.wolfssl.com/post-quantum-kyber-benchmarks-arm-cortex-m4/