ここで、2011年にPhil Rogawayが正式な分析を行いました。セクション1.6では、私がここに書き写した要約を示し、自分自身を太字で強調します(せっかちな場合は、CTRモードを使用することをお勧めしますが、メッセージの整合性と暗号化の比較については、以下の段落をお読みになることをお勧めします)。
これらのほとんどはIVをランダムにする必要があることに注意してください。これは予測不可能であるため、暗号化セキュリティで生成する必要があります。ただし、一部には「ノンス」のみが必要であり、そのプロパティを要求せず、再利用しないことのみが必要です。したがって、ナンスに依存する設計は、ノンスに依存する設計よりもエラーが発生しにくい(そして、私を信じて、CBCが適切なIV選択で実装されていない多くのケースを見てきました)。したがって、Rogawayが「IVがnonceの場合、機密性は達成されない」と言っている場合は、太字を追加したことがわかります。つまり、IVを暗号的に安全(予測不可能)に選択した場合、問題はありません。しかし、そうしないと、優れたセキュリティ特性が失われます。 これらのモードでIVを再利用しないでください。
また、メッセージの整合性と暗号化の違いを理解することも重要です。暗号化はデータを隠しますが、攻撃者は暗号化されたデータを変更できる可能性があり、メッセージの整合性を確認しないと、結果がソフトウェアに受け入れられる可能性があります。開発者は「しかし、変更されたデータは復号化後にガベージとして返されます」と言いますが、優れたセキュリティエンジニアは、そのガベージがソフトウェアに悪影響を与える可能性を見つけ、その分析を実際の攻撃に変えます。暗号化が使用された多くのケースを見てきましたが、メッセージの完全性は暗号化よりも本当に必要でした。必要なものを理解します。
GCMは暗号化とメッセージの整合性の両方を備えていますが、非常に壊れやすい設計であると言う必要があります。IVを再利用すると、ねじ込まれます-攻撃者はキーを回復できます。他のデザインは壊れにくいので、私は実際に私が実際に見た貧しい暗号化コードの量に基づいてGCMを勧めることを恐れています。
メッセージの整合性と暗号化の両方が必要な場合は、2つのアルゴリズムを組み合わせることができます。通常、CBCとHMACが使用されますが、CBCに縛られる理由はありません。知っておくべき重要なことは、最初に暗号化し、次に暗号化されたコンテンツにMACを適用することです。また、IVはMAC計算の一部である必要があります。
IPの問題を認識していません。
ロガウェイ教授からの良いものに:
暗号モードをブロックし、メッセージの整合性は暗号化しない
ECB:ブロック暗号。モードは、nビットの各部分を個別に暗号化することにより、nビットの倍数であるメッセージを暗号化します。セキュリティのプロパティは弱く、ブロックの位置と時間の両方でブロックの等価性がリークします。かなりのレガシーな価値があり、他のスキームのビルディングブロックとして価値がありますが、モード自体は一般的に望ましいセキュリティ目標を達成しないため、十分に注意して使用する必要があります。ECBは「汎用」の機密保持モードと見なされるべきではありません。
CBC:IVベースの暗号化スキーム。このモードは確率論的暗号化スキームとして安全であり、ランダムIVを想定して、ランダムビットと区別がつかないようにします。IVが単なるnonceである場合や、標準で誤って提案されているように、スキームで使用されているのと同じ鍵で暗号化されたnonceである場合、機密性は達成されません。暗号文は非常に順応性があります。暗号文攻撃(CCA)のセキュリティは選択されていません。多くのパディング方法の正しいパディングオラクルが存在する場合、機密性は失われます。暗号化は本質的にシリアルであるため非効率的です。広く使用されているこのモードのプライバシーのみのセキュリティプロパティは、頻繁に誤用されます。CBC-MACアルゴリズムのビルディングブロックとして使用できます。CTRモードに勝る重要な利点は特定できません。
CFB:IVベースの暗号化スキーム。このモードは確率論的暗号化スキームとして安全であり、ランダムなIVを想定して、ランダムなビットと区別がつかないようにします。IVが予測可能である場合、またはスキームで使用されているのと同じキーで暗号化されたナンスによって機密性が作成されている場合は、標準で誤って行われているように、機密性は達成されません。暗号文は順応性があります。CCAセキュリティーはありません。暗号化は本質的にシリアルであるため非効率的です。スキームは、パラメーターs、1≤s≤nに依存します。通常はs = 1またはs = 8です。sビットのみを処理するために1つのブロック暗号呼び出しを必要とするのは非効率的です。このモードは、興味深い「自己同期」プロパティを実現します。暗号文に任意の数のsビット文字を挿入または削除しても、正しい解読が一時的に中断されるだけです。
OFB:IVベースの暗号化スキーム。このモードは確率論的暗号化スキームとして安全であり、ランダムIVを想定して、ランダムビットと区別がつかないようにします。IVがナンスの場合、機密性は達成されませんが、IVの固定シーケンス(カウンターなど)は正常に機能します。暗号文は非常に順応性があります。CCAセキュリティーはありません。暗号化と復号化は、本質的にシリアルであるため効率が悪い。任意のビット長の文字列をネイティブに暗号化します(パディングは不要)。CTRモードに勝る重要な利点は特定できません。
CTR:IVベースの暗号化スキーム。このモードでは、ナンスIVを想定したランダムビットと区別がつきません。安全なnonceベースのスキームとして、このモードはランダムIVを伴う確率的暗号化スキームとしても使用できます。nonceが暗号化または復号化で再利用される場合、プライバシーの完全な失敗。多くの場合、モードの並列化可能性により、他の機密性モードよりも、一部の設定でははるかに高速になります。認証された暗号化スキームのための重要なビルディングブロック。全体として、通常、プライバシーのみの暗号化を実現するための最良かつ最新の方法です。
XTS:IVベースの暗号化スキーム。このモードは、調整可能なブロック暗号(強力なPRPとして安全)を各nビットチャンクに適用することで機能します。nで割り切れない長さのメッセージの場合、最後の2つのブロックは特別に扱われます。このモードを使用できるのは、ブロック構造のストレージデバイス上のデータを暗号化する場合のみです。基礎となるPRPの幅が狭いことと、最終ブロックの断片の扱いが悪いことが問題です。(ワイドブロック)PRPセキュアブロック暗号よりも効率的ですが、望ましくありません。
MAC(メッセージの整合性はあるが暗号化は不可)
ALG1–6:MACのコレクション。すべてCBC-MACに基づいています。スキームが多すぎます。VIL PRFとして証明できるほど安全であるもの、FIL PRFとして証明されるもの、証明可能なセキュリティを持たないものもあります。一部のスキームでは、有害な攻撃を認めています。一部のモードには日付が付いています。鍵の分離は、それを備えているモードでは不十分です。まとめて採用するべきではありませんが、「最良の」スキームを選択的に選択することは可能です。CMACを支持して、これらのモードをどれも採用しないことも問題ありません。一部のISO 9797-1 MACは、特に銀行業務で広く標準化され使用されています。標準の改訂版(ISO / IEC FDIS 9797-1:2010)がまもなくリリースされます[93]。
CMAC:CBC-MACに基づくMAC。モードは(VIL)PRFとして(誕生日の境界まで)証明できるほど安全です(基礎となるブロック暗号が優れたPRPであると想定)。CBCMACベースのスキームでは、本質的に最小限のオーバーヘッド。一部のアプリケーションドメインでは本質的にシリアルな性質の問題があり、64ビットブロック暗号で使用すると、時々再キーイングが必要になります。MACのISO 9797-1コレクションよりもクリーンです。
HMAC:ブロック暗号ではなく暗号ハッシュ関数に基づくMAC(ほとんどの暗号ハッシュ関数自体はブロック暗号に基づいています)。メカニズムは、好ましい仮定からではないが、強力な証明可能なセキュリティ限界を享受します。文献に密接に関連する複数のバリアントは、何が知られているのかを理解することを複雑にします。有害な攻撃は提案されていません。広く標準化され使用されています。
GMAC:GCMの特殊なケースであるnonceベースのMAC。GCMの良い特徴と悪い特徴の多くを継承します。ただし、MACではnonce要件は不要であり、ここではほとんどメリットがありません。タグが64ビット以下に切り捨てられ、復号化の範囲が監視および削減されていない場合の実用的な攻撃。nonce-reuseの完全な失敗。とにかくGCMが採用されている場合、使用は暗黙的です。個別の標準化にはお勧めしません。
認証された暗号化(暗号化とメッセージの整合性の両方)
CCM:CTRモードの暗号化と生のCBC-MACを組み合わせたnonceベースのAEADスキーム。本質的にシリアルであり、状況によっては速度が制限されます。基盤となるブロック暗号が優れたPRPであると想定して、十分に安全であることが証明されています。明らかに仕事をしている不合理な建設。GCMよりも実装が簡単です。nonceベースのMACとして使用できます。広く標準化され使用されています。
GCM:CTRモードの暗号化とGF(2128)ベースのユニバーサルハッシュ関数を組み合わせたノンスベースのAEADスキーム。一部の実装環境に適した効率特性。最小限のタグの切り捨てを想定した、証明可能な安全な結果。大幅なタグの切り捨てが存在する場合の攻撃と証明可能なセキュリティの限界。GMACと呼ばれるnonceベースのMACとして使用できます。96ビット以外のノンスを許可する疑わしい選択。nonceを96ビットに、タグを少なくとも96ビットに制限することをお勧めします。広く標準化され使用されています。