共同执笔:Shane Kelly
米国商务省标準化技术研究所(狈滨厂罢)がいくつかの耐量子コンピュータ暗号(PQC)アルゴリズムについてようやくリリースする最終仕様に関して、多くのことが言われていますが、1 つの重要な詳細が見落とされています。初期公开ドラフト(滨笔顿)と NIST がリリースした最終バージョンとの违いは何でしょうか。
NIST PQC アルゴリズムの技術的な側面を取り上げ、何が変化したのかを調べましょう。また、新しい標準を導入する際の複雑さについても説明します。
背景情報として、これまでの経緯を説明します。2017 年に、デジサートは(狈滨厂罢)と积极的に関わって、新しい暗号化标準の确立に取り组み始めました。この暗号化标準の目的は、量子コンピュータが従来の暗号化方式にもたらす胁威に対処することです。
デジサートは 2 つの点で関与しました。標準の開発プロセスへの貢献と、量子コンピュータがもたらす課題を研究者やメーカーと緊密に連携しながらより深く把握することにおいてです。
この過程においてデジサートは、業界リーダーや教育機関からなる多様なグループと連携して、これらの課題に正面から取り組んできました。デジサートのパートナーは、Thales 社(旧称 Gemalto 社)、Utimaco 社、Microsoft Research、ISARA Corporation、イリノイ大学アーバナ?シャンペーン校、ウォータールー大学などです。このコラボレーションのおかげで、耐量子コンピュータ暗号の理解と発展が进みました。こうしてデジサートは、新たに出现する技术的な胁威から未来を保护する上で最前线にいることができています。
2016 年に、NIST は を開始しました。これは、量子コンピュータが現在の公开键アルゴリズムを破る可能性があることを踏まえて、それに対処することを目的とした取り組みです。この取り組みから、候補となる 4 つのアルゴリズムが生み出されました。1 つは鍵カプセル化メカニズム(KEM)で、残りの 3 つは电子署名方式です。
2023 年 8 月 24 日に、NIST はこれらのうち 3 つのアルゴリズムについてをリリースし、ほぼ 1 年後の 2024 年 8 月 13 日にを公开しました。
コンペティションの过程において、选定された方式の名前は何度か変更されました。?
各アルゴリズムは、コンペティション全体を通じて一连の改订を経てきました。これは、バイト顺序の调整という小さな変更から、基盘となる格子构造に関する大きな変更まで多岐におよびます。更新が行われるたびに、暗号化コミュニティは最新バージョンに合わせて独自の実装を调整しました。
最终ドラフトのリリースも例外ではなく、各実装をもう一度更新する必要がありました。それがどのような作業であったか実感できるように、標準化された各アルゴリズムの 3 つの側面を IPD と最終バージョンの観点で比较しました。各仕様では、IPD と最終バージョンとの主要な违いを比较し、バージョンの相互运用性と、実装の変更の困难さを説明します。
主な违いは、公開値 ? とシークレットシード σ の生成方法にあります。改訂されたアプローチでは、各 ML-KEM バリアントに固有のパラメータ ? を組み込むドメインセパレータを使用して、これらの値が導出されます。パラメータ ? は ML-KEM バリアントごとに異なるため、生成プロセスにおける一意の識別子の役割を果たします。値 ? と σ は、ハッシュ関数 ? で生成されます。これらの値は以前、?(?????? _ ????)を呼び出すことで生成されていましたが、新しい方法では、?(?????? _ ????||?)を呼び出します。これにより、生成プロセスにバリアント固有パラメータ ? が含められます。
IPD 仕様に従う ML-KEM の一時バージョンの実装と、最终ドラフトに従う ML-KEM バージョンの実装との間に相互运用性の問題はありません。その理由として、公开键の一部として送信される値 ? が一定のままであること、カプセル化とカプセル解除の各プロセスが ? の計算方法とは無関係なことが挙げられます。しかし、ML-KEM の静的バージョンでは相互运用性の問題が生じる可能性があります。特に、IPD バージョンで生成した秘密鍵を、FIPS 検証済みの ML-KEM の最终ドラフトバージョンにロードする場合に起こり得ます。この問題の発生を防げるかどうかは、ML-KEM のペア一貫性テストをどの程度綿密に行っているかにかかっています。このようなシナリオは考えられますが、実際に起こる可能性は低いので、通常は無視できます。
変更の影响はほとんどありません。
HashML-DSA という新しい Hash then Sign 型バリアントが仕様に導入されました。ここで、Keygen 関数はそのままですが、新たな署名関数と検証関数の HashML-DSA.Sign(アルゴリズム 4)および HashML-DSA.Verify(アルゴリズム 5)が追加されました。また、この仕様では、個別のオブジェクト識別子(OID)を使用して ML-DSA と HashML-DSA を区別することも推奨しています。
さらに、署名関数と検証関数に、コンテキスト文字列という追加パラメータが导入されました。このコンテキスト文字列とその长さが、署名前にメッセージの先头に追加されます。署名の検証时の関数 HintBitUnpack(アルゴリズム 21、IPD の旧アルゴリズム 15)には、正しくないヒントをチェックする機能が追加されました。このチェックは、バッファオーバーランを防ぐために再導入されました。
身元確認機関のチャレンジ生成に関して修正が加えられました。コミットメントハッシュの最初の 256 ビットだけを使用するのではなく、コミットメントハッシュ全体が SampleInBall 関数に渡されるようになりました。ML-DSA-44 は、コミットメントハッシュの出力が 256 ビットであるため影響を受けませんが、ML-DSA-65 と ML-DSA-87 には影響があります。
また、公開値 ? とシークレットシード ?' および ? の生成に関して変更があります。これらの値はドメインセパレータを使って生成されるようになりました。このドメインセパレータは、各 ML-DSA バリアントに固有のパラメータ ? と ? を組み込みます。ハッシュ関数 ? により、?、?'、および ? を得られます。以前は、?(?????? _ ????)を呼び出すことでこれらの値を生成していましたが、現在は、?(?????? _ ????∣∣?∣∣?)を呼び出して生成します。
最后に、署名者のコミットメントの计算に使用される関数 ExpandMask に変更が加えられたようですが、2 つのアルゴリズム(アルゴリズム 34、IPD の旧アルゴリズム 28)を調査したところ、违いは見られませんでした。
署名のコンテキスト文字列パラメータの導入により、相互运用性が完全に損なわれることになります。このパラメータをユーザーに公開しないとしても、下位互換性が失われていることには変わりありません。結果として、現在も将来においても、HashML-DSA は ML-DSA と互換性がないことになりました。
ML-DSA と HashML-DSA をプロトコルレベルで統合するのはかなりの課題です。2 つのアルゴリズムは互換性がなく、また Hash then Sign 型操作に HashML-DSA を使用するようユーザーは義務付けられていないため、それらの违いはプロトコルレベルでの困難な問題の発生につながります。
HashSLH-DSA という Hash then Sign 型バリアントが仕様に導入されました。ここで、Keygen 関数はそのままですが、新たな署名関数と検証関数の hash_slh_sign(アルゴリズム 23)および hash_slh_verify(アルゴリズム 25)が追加されました。仕様では、SLH-DSA と HashSLH-DSA の間に存在するオブジェクト識別子(OID)の违いについては何も言及していません。コンテキスト文字列という追加パラメータが、署名関数と検証関数に追加されました。このコンテキスト文字列とその長さが、署名前にメッセージの先頭に追加されます。
署名のコンテキスト文字列が追加されたため、SLH-DSA への下位互換性はありません。今後についても、HashSLH-DSA と SLH-DSA の互換性は確保されません。
Hash then Sign 型バリアントの追加は、ML-DSA の Hash then Sign 型バージョンの場合と同様の課題を生み出します。ML-DSA に関連する課題が解決された時点で、その解決策は直接 SLH-DSA に適用されます。その他の変更の影响はほとんどありません。
Hash then Sign 型の署名と「純粋な」署名で採用されたドメイン区切りの署名という概念は、NIST の新しい方式であるため、慎重な考慮を要します。これにより、すべてのユーザーにとって最善の結果を得ることができます。
次に考虑すべきなのは、署名におけるコンテキスト文字列の扱い方です。业界基準の策定に向けて、暗号化コミュニティのエキスパートと协议を行えるかもしれません。このオプションが一般的に非公开になる可能性があり、その场合は、そのオプションを无视できます。
当社の暗号化システムにこれらの変更を実装するのは簡単なので、時間はかからないはずです。一方、テストベクターを作成して他の実装との互換性テストを実施するのは困難な課題となります。現時点では、比较対象とする他の実装が存在しないからです。
デジサートでは、当社のさまざまな製品に対して PQC 署名アルゴリズムを导入しており、逗阴馆? ONE PKI 管理プラットフォームでは、すでに 3 つのアルゴリズムをすべてサポートしています。逗阴馆? TrustCore SDK 開発者向けツールキットでは、ML-KEM/FIPS 203 に加え、PQC 署名のフルスイートをサポートしています。
耐量子コンピュータ暗号、暗号化、PKI などのトピックについて詳細をご希望ですか? 記事を見逃さないようにデジサートのブログを参照してください。