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