ポスト量子暗号化アルゴリズム Kyber の実装における脆弱性

量子コンピュータ上でブルートフォースに強い暗号アルゴリズムの競争で優勝したKyber暗号アルゴリズムの実装において、暗号解読時の操作時間を計測することでサイドチャネル攻撃により秘密鍵を再作成できる脆弱性が発見された。攻撃者が提供した暗号文。この問題は、CRYSTALS-Kyber KEM キーのカプセル化メカニズムのリファレンス実装と、Signal メッセンジャーで使用される pqcrypto ライブラリを含む多くのサードパーティの Kyber 対応暗号化ライブラリの両方に影響します。

コード名「KyberSlash」と名付けられたこの脆弱性の本質は、メッセージをデコードするプロセスでの除算演算「t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;」の使用にあります。ここで、被除数にはタイプ「double」の秘密の値「t」が含まれており、除数はよく知られている公開値 KYBER_Q です。問題は、除算演算の時間が一定ではなく、環境が異なると、除算に実行される CPU サイクル数が入力データに依存することです。したがって、演算時間の変化に基づいて、除算で使用されるデータの性質を把握することができます。

暗号化の分野で著名な専門家であるダニエル J. バーンスタインは、攻撃が実際に実行できることを証明する実用的なデモンストレーションを準備することができました。実施された 2 つの実験のうち 512 つでは、Raspberry Pi 768 ボード上でコードを実行する際に、データのデコード時間の測定に基づいて Kyber-1024 秘密キーを完全に再作成することができました。この方法は、Kyber-XNUMX キーおよび Kyber-XNUMX キーにも適用できます。攻撃を成功させるには、攻撃者が指定した暗号文が同じ鍵ペアで処理され、操作の実行時間を正確に測定できる必要があります。

別のリーク (KyberSlash2) が一部のライブラリで確認されています。これも、除算を実行する際の秘密の値の使用が原因で発生します。最初のオプションとの違いは、復号化時ではなく、暗号化段階 (poly_compress 関数および Polyvec_compress 関数内) での呼び出しにあります。ただし、XNUMX 番目のオプションは、暗号文の出力が機密であるとみなされる再暗号化操作で手順が使用される場合にのみ、攻撃に役立つ可能性があります。

この脆弱性はライブラリですでに修正されています。

  • zig/lib/std/crypto/kyber_d00.zig (22 月 XNUMX 日)、
  • pq-crystals/kyber/ref (30 月 XNUMX 日)、
  • シンボリックソフト/kyber-k2so (19 月 XNUMX 日)、
  • クラウドフレア/サークル (8 月 XNUMX 日)、
  • aws/aws-lc/crypto/kyber (4 月 XNUMX 日)、
  • liboqs/src/kem/kyber (8 月 XNUMX 日)。

当初はこの脆弱性の影響を受けなかったライブラリ:

  • ボーリングSSL/暗号化/カイバー、
  • filippo.io/mlkem768、
  • formosa-crypto/libjade/tree/main/src/crypto_kem、
  • kyber/common/amd64/avx2、
  • formosa-crypto/libjade/tree/main/src/crypto_kem/kyber/common/amd64/ref、
  • pq-crystals/kyber/avx2、
  • pqclean/crypto_kem/kyber*/avx2。

この脆弱性はライブラリにパッチが適用されていないままです。

  • antontutoveanu/crystals-kyber-javascript,
  • アーガイル-ソフトウェア/カイバー、
  • debian/src/liboqs/unstable/src/kem/kyber、
  • kudelskisecurity/クリスタルゴー、
  • mupq/pqm4/crypto_kem/kyber* (20 月 1 日、脆弱性の XNUMX つのバージョンのみが修正されました)、
  • PQClean/PQClean/crypto_kem/kyber*/aarch64、
  • PQClean/PQClean/crypto_kem/kyber*/clean、
  • randombit/botan (20月1日、脆弱性XNUMX件のみ修正)、
  • Rustpq/pqcrypto/pqcrypto-kyber (5 月 XNUMX 日に libsignal に修正が追加されましたが、pqcrypto-kyber 自体の脆弱性はまだ修正されていません)。

出所: オープンネット.ru

コメントを追加します