ブロック暗号動作モード


Block_cipher_mode_of_operation

「動作モード」は「操作方法」に手口を。
暗号化では、操作のブロック暗号モードは、使用するアルゴリズムでブロック暗号を提供するために、情報セキュリティなどの機密性や信頼性を。ブロック暗号自体は、ブロックと呼ばれる1つの固定長ビットグループの安全な暗号変換(暗号化または復号化)にのみ適しています。操作モードは、暗号の単一ブロック操作を繰り返し適用して、ブロックよりも大きい量のデータを安全に変換する方法を説明します。
ほとんどのモードでは、暗号化操作ごとに、初期化ベクトル(IV)と呼ばれることが多い一意のバイナリシーケンスが必要です。IVは繰り返しがなく、一部のモードではランダムである必要が初期化ベクトルは、同じ平文が同じキーで独立して複数回暗号化されている場合でも、別個の暗号文が生成されるようにするために使用されます。ブロック暗号は複数のブロックサイズで動作できる場合がありますが、変換中、ブロックサイズは常に固定されています。ブロック暗号モードはブロック全体で動作し、データの最後の部分が現在のブロックサイズよりも小さい場合は、完全なブロックにパディングする必要がただし、ブロック暗号をストリーム暗号として効果的に使用するため、パディングを必要としないモードが
歴史的に、暗号化モードは、データ変更のさまざまなシナリオでのエラー伝播プロパティに関して広く研究されてきました。その後の開発では、整合性保護を完全に別個の暗号化目標と見なしていました。操作のいくつかの近代的なモードが結合機密性と信頼性を効率的に、そしてとして知られている認証された暗号化モードが

コンテンツ
1 歴史と標準化
2 初期化ベクトル(IV)
3 パディング
4 コモンモード
4.1 追加データ(AEAD)モードを使用した認証済み暗号化
4.1.1 ガロア/カウンター(GCM)
4.1.2 暗号ブロック連鎖メッセージ認証コード(CCM)を使用したカウンター
4.1.3 合成初期化ベクトル(SIV)
4.1.4 AES-GCM-SIV
4.2 機密性のみのモード
4.2.1 電子コードブック(ECB)
4.2.2 暗号ブロック連鎖(CBC)
4.2.2.1 例
4.2.2.2 暗号ブロック連鎖(PCBC)の伝播
4.2.3 暗号フィードバック(CFB)
4.2.3.1 フルブロックCFB
4.2.3.2 CFB-1、CFB-8、CFB-64、CFB-128など。
4.2.3.3 他のモードと比較したCFB
4.2.4 出力フィードバック(OFB)
4.2.5 カウンター(CTR)
5 エラーの伝播
6 その他のモードおよびその他の暗号化プリミティブ
7 も参照してください
8 参考文献

歴史と標準化
最も初期の動作モードであるECB、CBC、OFB、およびCFB(すべてについては以下を参照)は1981年にさかのぼり、FIPS 81、DES動作モードで指定されました。2001年には、米国国立標準技術研究所(NIST)は含めることにより、操作の承認モードのリストを改訂AESをブロック暗号として、およびにCTRモードを追加SP800-38A、動作のブロック暗号モードのための推薦。最後に、2010年1月、NISTはSP800-38EにXTS-AESを追加しました。これは、ブロック暗号操作モードの推奨事項:ストレージデバイスの機密保持のためのXTS-AESモードです。NISTによって承認されていない他の機密モードが存在します。たとえば、CTSは暗号文を盗むモードであり、多くの一般的な暗号化ライブラリで利用できます。
ブロック暗号モードECB、CBC、OFB、CFB、CTR、およびXTSは機密性を提供しますが、偶発的な変更や悪意のある改ざんからは保護しません。変更または改ざんは、CBC-MACなどの個別のメッセージ認証コードまたはデジタル署名を使用して検出できます。暗号化コミュニティは、専用の整合性保証の必要性を認識し、NISTはHMAC、CMAC、およびGMACで対応しました。HMACはとして2002年に承認されたFIPS 198、鍵付きハッシュメッセージ認証コード(HMAC) 、CMACは、下の2005年にリリースされたSP800-38B、ブロック暗号動作モードのための推薦:認証のためのCMACモード、およびGMACは、 2007年に正式にされました下SP800-38D、ガロア/カウンタモード(GCM)とGMAC:操作のブロック暗号モードのための推薦。
暗号化コミュニティは、機密性モードと信頼性モードを合成(結合)することは困難であり、エラーが発生しやすい可能性があることを観察しました。したがって、彼らは機密性とデータ整合性を単一の暗号化プリミティブ(暗号化アルゴリズム)に組み合わせたモードを提供し始めました。これらの組み合わされたモードは、認証付き暗号化、AEまたは「認証」と呼ばれます。AEモードの例は、CCM(SP800-38C)、GCM(SP800-38D)、CWC、EAX、IAPM、およびOCBです。
動作モードは、国内および国際的に認められた多くの標準化団体によって定義されています。注目すべき標準化団体には、NIST、ISO(ISO / IEC 10116 を使用)、IEC、IEEE、ANSI、およびIETFが含まれます。

初期化ベクトル(IV)
初期化ベクトル
初期化ベクトル(IV)または開始変数(SV)は、暗号化をランダム化するためにいくつかのモードで使用されるビットのブロックであり、同じ平文が複数回暗号化されている場合でも、キーの再生成が遅くなります。
初期化ベクトルにはキーとは異なるセキュリティ要件があるため、通常、IVは秘密である必要はありません。ほとんどのブロック暗号モードでは、初期化ベクトルが同じキーで再利用されないことが重要です。つまり、暗号ナンスである必要が多くのブロック暗号モードには、IVがランダムまたは疑似ランダムでなければならないなど、より強い要件が一部のブロック暗号には、暗号化を生成しないすべてゼロのIVなど、特定の初期化ベクトルに特定の問題があります(一部のキーに対して)。
SP800-38Aなど、関連する仕様の特定のブロック暗号モードに関連するIV要件を確認することをお勧めします。
CBCおよびCFBの場合、IVを再利用すると、プレーンテキストの最初のブロック、および2つのメッセージで共有される共通のプレフィックスに関する情報がリークされます。
OFBおよびCTRの場合、IVを再利用すると、キービットストリームが再利用され、セキュリティが損なわれます。これは、両方のモードが平文とXORされたビットストリームを効果的に作成し、このビットストリームがキーとIVのみに依存しているために見られます。
CBCモードでは、暗号化時にIVが予測不能(ランダムまたは疑似ランダム)である必要が特に、メッセージの最後の暗号文ブロックを次のメッセージのIVとして再利用する(以前の)一般的な方法は安全ではありません(たとえば、この方法はSSL 2.0で使用されていました)。攻撃者は、次の平文が指定される前にIV(または暗号文の前のブロック)を知っている場合、以前に同じキーで暗号化されたブロックの平文についての推測を確認できます(これはTLS CBC IV攻撃として知られています) 。
一部のキーでは、すべてゼロの初期化ベクトルがいくつかのブロック暗号モード(CFB-8、OFB-8)を生成して、内部状態をすべてゼロでスタックさせる場合がCFB-8の場合、すべてゼロのIVとすべてゼロのプレーンテキストにより、1/256のキーが暗号化を生成せず、プレーンテキストは暗号文として返されます。 OFB-8の場合、すべてゼロの初期化ベクトルを使用すると、1/256のキーの暗号化は生成されません。 OFB-8暗号化は、影響を受けるキーに対して暗号化されていないプレーンテキストを返します。
一部のモード(AES-SIVやAES-GCM-SIVなど)は、よりノンスの誤用に強いように構築されています。つまり、ランダム性の生成に障害があるか、攻撃者の制御下にあるシナリオに対して耐性が
Synthetic Initialization Vector(SIV)は、入力(追加データとプレーンテキスト)でS2Vと呼ばれる疑似ランダム関数(PRF)構造を実行することにより、内部IVを合成し、外部データがIVを直接制御するのを防ぎます。外部ナンス/ IVは、追加のデータフィールドとしてS2Vに入力できます。
AES-GCM-SIVは、入力(追加データとプレーンテキスト)でPOLYVAL Galoisモードの認証を実行し、続いてAES操作を実行することにより、内部IVを合成します。

パディング
パディング(暗号化)
ブロック暗号は、固定の単位で動作するサイズ(として知られているブロックサイズ)が、メッセージは長さがさまざまです。そのため、一部のモード(つまり、ECBおよびCBC)では、暗号化の前に最後のブロックをパディングする必要がいくつかのパディングスキームが存在します。最も簡単な方法は、プレーンテキストにnullバイトを追加して、その長さをブロックサイズの倍数にすることですが、プレーンテキストの元の長さを復元できるように注意する必要がたとえば、平文が最後を除いてnullバイトを含まないCスタイルの文字列である場合、これは簡単です。やや複雑で、元であるDESの単一のものを追加することである方法、ビットを十分にゼロに続いて、ビットブロックを記入します。メッセージがブロック境界で終了する場合、パディングブロック全体が追加されます。最も洗練されているのは、暗号文の盗用や残差ブロックの終了などのCBC固有のスキームです。これらは、追加の複雑さを犠牲にして、余分な暗号文を発生させません。SchneierとFergusonは、2つの可能性を提案しています。どちらも単純です。値128(16進数80)のバイトを追加し、最後のブロックを埋めるために必要な数のゼロバイトを追加するか、最後のブロックにすべて値nのnバイトを埋め込みます。
CFB、OFB、およびCTRモードは、ブロック暗号の出力とプレーンテキストをXORすることによって機能するため、長さがブロックサイズの倍数ではないメッセージを処理するための特別な手段を必要としません。平文の最後の部分ブロックは、最後のキーストリームブロックの最初の数バイトとXORされ、最後の部分平文ブロックと同じサイズの最終暗号文ブロックを生成します。ストリーム暗号のこの特性により、暗号化された暗号文データを元の平文データと同じサイズにする必要があるアプリケーションや、パディングバイトを追加するのが不便なストリーミング形式でデータを送信するアプリケーションに適しています。

コモンモード

追加データ(AEAD)モードを使用した認証済み暗号化
認証付き暗号化
秘密と認証を単一の暗号化プリミティブに組み合わせるために、いくつかの操作モードが設計されています。このようなモードの例としては、拡張暗号ブロック連鎖(XCBC)、 整合性対応暗号ブロック連鎖(IACBC)、整合性対応並列化可能モード(IAPM)、 OCB、EAX、CWC、CCM、およびGCM。認証付き暗号化モードは、シングルパスモードまたはダブルパスモードに分類されます。OCBモードなど、一部のシングルパス認証付き暗号化アルゴリズムは特許によって妨げられていますが、その他のアルゴリズムは、そのような妨害を回避する方法で特別に設計およびリリースされています。
さらに、一部のモードでは、暗号化されていない関連データの認証も可能であり、これらはAEAD(関連データを使用した認証済み暗号化)スキームと呼ばれます。たとえば、EAXモードはダブルパスAEADスキームですが、OCBモードはシングルパスです。

ガロア/カウンター(GCM) GCM ガロア/カウンター
並列化可能な暗号化
はい
並列化可能な復号化
はい
ランダム読み取りアクセス
はい
ガロア/カウンターモード(GCM)は、よく知られているカウンターモードの暗号化と新しいガロア認証モードを組み合わせたものです。重要な機能は、認証に使用されるガロア体の乗算の並列計算の容易さです。この機能により、暗号化アルゴリズムよりも高いスループットが可能になります。
GCMは、ブロックサイズが128ビットのブロック暗号用に定義されています。ガロアメッセージ認証コード(GMAC)は、増分メッセージ認証コードを形成できるGCMの認証専用バリアントです。GCMとGMACはどちらも、任意の長さの初期化ベクトルを受け入れることができます。GCMは並列処理を最大限に活用でき、GCMを実装すると、命令パイプラインまたはハードウェアパイプラインを効率的に使用できます。CBC動作モードでは、パイプラインストールが発生し、効率とパフォーマンスが低下します。
CTRと同様に、ブロックには順番に番号が付けられ、このブロック番号がIVと組み合わされ、ブロック暗号E(通常はAES)で暗号化されます。次に、この暗号化の結果が平文とXORされて、暗号文が生成されます。すべてのカウンタモードと同様に、これは本質的にストリーム暗号であるため、暗号化されるストリームごとに異なるIVを使用することが不可欠です。
GCM
暗号文ブロックは多項式の係数と見なされ、有限体演算を使用して、キーに依存する点Hで評価されます。次に、結果が暗号化され、データの整合性を検証するために使用できる認証タグが生成されます。暗号化されたテキストには、IV、暗号文、および認証タグが含まれます。

暗号ブロック連鎖メッセージ認証コード(CCM)を使用したカウンター
暗号ブロック連鎖メッセージ認証コードを備えたカウンター(CBC-MACを備えたカウンター; CCM)は、認証と機密性の両方を提供するように設計された認証済み暗号化アルゴリズムです。CCMモードは、ブロック長が128ビットのブロック暗号に対してのみ定義されます。

合成初期化ベクトル(SIV)
合成初期化ベクトル(SIV)は、誤用に強いブロック暗号モードです。
SIVは、疑似乱数関数S2Vを使用して内部IVを合成します。S2Vは、CMACに基づくキー付きハッシュであり、関数への入力は次のとおりです。
追加の認証済みデータ(ゼロ、1つ、または複数のAADフィールドがサポートされています)
平文
認証キー(K 1)。
SIVは、暗号化キー(K 2)でキー設定されたAES-CTRを使用して、S2V出力とプレーンテキストを暗号化します。
SIVは、外部のノンスベースの認証済み暗号化をサポートできます。この場合、認証済みデータフィールドの1つがこの目的で使用されます。RFC5297 は、相互運用性の目的で、最後に認証されたデータフィールドを外部ナンスとして使用する必要があることを指定しています。
二つの鍵、認証鍵Kの使用により1と暗号化キーのK 2、SIV AEAD-バリアントのためのスキームを命名することは、いくつかの混乱につながる可能性があり、たとえば、AEAD_AES_SIV_CMAC_256は、AES-256ではなく2つのAES-128キーを持つAES-SIVを参照します。

AES-GCM-SIV
AES-GCM-SIVは、Advanced Encryption Standardの動作モードであり、Galois / counterモードと同様のパフォーマンスを提供するだけでなく、暗号ナンスを再利用した場合の誤用に対する耐性も備えています。構造はRFC8452で定義されています。
AES-GCM-SIVは内部IVを合成します。POLYVAL Galoisハッシュ関数を使用して、追加の認証済みデータとプレーンテキストのハッシュを取得します。次に、ハッシュはAESキーで暗号化され、認証タグおよびAES-CTR初期化ベクトルとして使用されます。
AES-GCM-SIVは、非常によく似た名前のアルゴリズムGCM-SIVを改良したもので、いくつかの非常に小さな変更(AES-CTRの初期化方法など)がありますが、セキュリティに実用的なメリットが 2つの50のみ2の有意な制限と比較して、同じキーを持つメッセージ32 GCM-SIVで許されたメッセージを表示します。」

機密性のみのモード
多くの動作モードが定義されています。これらのいくつかを以下に説明します。暗号モードの目的は、ECBの弱点の説明に示されているように、暗号化されたデータに存在するパターンをマスクすることです。
異なる暗号モードは、暗号ブロックまたは他のグローバルに決定論的な変数からの出力を後続の暗号ブロックにカスケードすることによってパターンをマスクします。リストされたモードの入力は、次の表に要約されています。
モードの概要モード 数式
暗号文
電子コードブック(ECB)
Y i = F(PlainText i、Key) Y i 暗号ブロック連鎖(CBC)
Y i = PlainText i XOR Ciphertext i −1
F(Y、キー); 暗号文0 = IV
CBCの伝播(PCBC)
Y i = PlainText i XOR(Ciphertext i -1 XOR PlainText i -1)
F(Y、キー); 暗号文0 = IV
暗号フィードバック(CFB)
Y i =暗号文i −1
平文XORF(Y、Key); 暗号文0 = IV
出力フィードバック(OFB)
Y i = F(Y i −1、キー); Y 0 = F(IV、キー)
平文XORY i
カウンター(CTR)
Y i = F(IV + g(i)、キー); IV = token()
平文XORY i
注:g(i)は決定論的関数であり、多くの場合恒等関数です。

電子コードブック(ECB) ECB 電子コードブック
並列化可能な暗号化
はい
並列化可能な復号化
はい
ランダム読み取りアクセス
はい
最も単純な暗号化モードは、電子コードブック(ECB)モードです(従来の物理コードブックにちなんで名付けられました)。メッセージはブロックに分割され、各ブロックは個別に暗号化されます。
ECB encryption.svg
ECB decryption.svg
この方法の欠点は、拡散がないことです。ECBは、同一の平文ブロックを同一の暗号文ブロックに暗号化するため、データパターンを適切に隠蔽しません。ECBは、暗号化プロトコルでの使用は推奨され
ECBモードを使用して均一な色の広い領域を使用するビットマップ画像を暗号化すると、ECBが平文のデータパターンを暗号文に残すことができる程度の顕著な例を見ることができます。個々のピクセルの色は暗号化されていますが、元の同じ色のピクセルのパターンが暗号化されたバージョンのままであるため、画像全体が識別される場合が
image
  元の画像
image
  ECBモードを使用して暗号化
image
  ECB以外のモードでは、疑似ランダム性が発生します
3番目の画像は、CBC、CTR、またはその他のより安全なモードで暗号化された画像がどのように表示されるかを示しています。ランダムノイズと区別できません。3番目の画像がランダムに表示されるからといって、画像が安全に暗号化されているとは限らないことに注意して「ランダムに見える」出力を生成する、多くの種類の安全でない暗号化が開発されています。
ECBモードでは、各ブロックがまったく同じ方法で復号化されるため、整合性保護のないプロトコルがリプレイ攻撃の影響を受けやすくなります。

暗号ブロック連鎖(CBC) CBC 暗号ブロック連鎖
並列化可能な暗号化
番号
並列化可能な復号化
はい
ランダム読み取りアクセス
はい
Ehrsam、Meyer、Smith、およびTuchmanは、1976年に暗号ブロック連鎖(CBC)動作モードを発明しました。 CBCモードでは、平文の各ブロックは、暗号化される前に前の暗号文ブロックとXORされます。このように、各暗号文ブロックは、その時点までに処理されたすべての平文ブロックに依存します。各メッセージを一意にするには、最初のブロックで初期化ベクトルを使用する必要が
Cipher block chaining (CBC) mode encryption
  Cipher block chaining (CBC) mode decryption
  最初のブロックのインデックスが1の場合、CBC暗号化の数式は次のようになります。 私= E K(( 私
⊕ 私− 1
)。 {C_ {i} = E_ {K}(P_ {i} oplus C_ {i-1})、}
0 = I
V {C_ {0} = IV、}
  一方、CBC復号化の数式は 私= K(( 私 )。 ⊕ 私 − 1 {P_ {i} = D_ {K}(C_ {i}) oplus C_ {i-1}、}
0 = I
V {C_ {0} = IV。}

 


CBC example with a toy 2-bit cipher
CBC example with a toy 2-bit cipher
CBCは、最も一般的に使用されている操作モードです。その主な欠点は、暗号化がシーケンシャルである(つまり、並列化できない)ことと、メッセージを暗号ブロックサイズの倍数にパディングする必要があることです。この最後の問題を処理する1つの方法は、暗号文の盗用と呼ばれる方法を使用することです。平文または初期化ベクトル(IV)の1ビットの変更は、後続のすべての暗号文ブロックに影響することに注意して
誤ったIVで復号化すると、平文の最初のブロックが破損しますが、後続の平文ブロックは正しくなります。これは、各ブロックが平文ではなく前のブロックの暗号文とXORされているため、現在のブロックを復号化するためのIVとして使用する前に、前のブロックを復号化する必要がないためです。これは、平文ブロックが暗号文の2つの隣接するブロックから回復できることを意味します。結果として、復号化を並列化できます。暗号文を1ビット変更すると、対応する平文のブロックが完全に破損し、次の平文のブロックの対応するビットが反転しますが、残りのブロックはそのまま残ることに注意してこの特殊性は、POODLEなどのさまざまなパディングオラクル攻撃で悪用されます。
明示的な初期化ベクトルは、平文の前に単一のランダムブロックを追加することにより、このプロパティを利用します。IVを復号化ルーチンに通信する必要がないことを除いて、暗号化は通常どおりに実行されます。IV復号化が何を使用する場合でも、ランダムブロックのみが「破損」します。安全に破棄でき、残りの復号化は元の平文です。

暗号ブロック連鎖(PCBC)の伝播 PCBC 暗号ブロック連鎖の伝播
並列化可能な暗号化
番号
並列化可能な復号化
番号
ランダム読み取りアクセス
番号
伝搬暗号ブロック連鎖または平文の暗号ブロック連鎖モードが小さい復号場合無限に伝播する暗号文の変化、ならびに暗号せるように設計されました。PCBCモードでは、平文の各ブロックは、暗号化される前に、前の平文ブロックと前の暗号文ブロックの両方とXORされます。CBCモードと同様に、初期化ベクトルは最初のブロックで使用されます。
Propagating cipher block chaining (PCBC) mode encryption
  Propagating cipher block chaining (PCBC) mode decryption
  暗号化および復号化アルゴリズムは次のとおりです。 私= E K(( 私
⊕ 私− 1
⊕ 私− 1 )。 、 0
⊕ 0= I
V {C_ {i} = E_ {K}(P_ {i} oplus P_ {i-1} oplus C_ {i-1})、P_ {0} oplus C_ {0} = IV、}

  私= K(( 私 )。 ⊕ 私− 1
⊕ 私− 1 、 0 ⊕ 0= I
V {P_ {i} = D_ {K}(C_ {i}) oplus P_ {i-1} oplus C_ {i-1}、P_ {0} oplus C_ {0} = IV。}
  PCBCは、Kerberos v4およびWASTEで最も顕著に使用されますが、それ以外の場合は一般的ではありません。PCBCモードで暗号化されたメッセージで、2つの隣接する暗号文ブロックが交換された場合、これは後続のブロックの復号化に影響を与えません。このため、PCBCはKerberosv5では使用されません。
暗号フィードバック(CFB)編集

フルブロックCFB CFB 暗号フィードバック
並列化可能な暗号化
番号
並列化可能な復号化
はい
ランダム読み取りアクセス
はい
最も単純な形式の暗号フィードバック(CFB)モードは、ブロック暗号の出力全体を使用します。このバリエーションでは、CBCと非常によく似ており、ブロック暗号を自己同期ストリーム暗号にします。このバリエーションのCFB復号化は、逆に実行されるCBC暗号化とほぼ同じです。 私 = {{IV私 = 0 E K(( 私− 1 )。 ⊕ I それ以外は 私= E K(( 私− 1 )。 ⊕ I {{ begin {aligned} C_ {i}&= { begin {cases} { text {IV}}、&i = 0 \ E_ {K}(C_ {i-1}) oplus P_ { i}、&{ text {otherwise}} end {cases}} \ P_ {i}&= E_ {K}(C_ {i-1}) oplus C_ {i}、 end {aligned}} }
  CFB encryption.svg
CFB decryption.svg

CFB-1、CFB-8、CFB-64、CFB-128など。
NIST SP800-38Aは、ビット幅でCFBを定義します。 CFBモードには、1≤s≤bとなる、sで表される整数パラメーターも必要です。以下のCFBモードの仕様では、各平文セグメント(Pj)と暗号文セグメント(Cj)はsビットで構成されています。sの値は、モードの名前に組み込まれることがたとえば、1ビットCFBモード、8ビットCFBモード、64ビットCFBモード、または128ビットCFBモードです。
これらのモードは、基礎となるブロック暗号の出力を切り捨てます。I 0 =
IV {I_ {0} = { text {IV}}。}

 I 私 =(( (( 私I − 1
≪ )。+ 私 )。 モッド
2 、
{I_ {i} = { big(}(I_ {i-1} ll s)+ C_ {i} { big)} { bmod {2}} ^ {b}、}

  私 = MSB (( E K (( 私I − 1 )。 )。
⊕ I {C_ {i} = operatorname {MSB} _ {s} { big(} E_ {K}(I_ {i-1}){ big)} oplus P_ {i}、}

  私 = MSB (( E K (( 私I − 1 )。 )。
⊕ I {P_ {i} = operatorname {MSB} _ {s} { big(} E_ {K}(I_ {i-1}){ big)} oplus C_ {i}、}
  CFB-1は、自己同期し、暗号文の損失に対して回復力があると見なされます。「1ビットCFBモードを使用する場合、同期は挿入または削除されたビットの後にb + 1の位置に自動的に復元されます。CFBモードのsの他の値、およびこの推奨事項の他の機密性モードの場合、同期外部から復元する必要が」(NIST SP800-38A)。つまり、AESのような128ビット幅のブロック暗号での1ビットの損失は、有効なビットを発行する前に129の無効なビットをレンダリングします。
CFBは、指定されたもの以外の特別な場合にも自己同期する場合がたとえば、基盤となる128ビットブロック暗号を使用したCFB-128の1ビット変更は、2ブロック後に再同期します。(ただし、CFB-128などはビット損失を適切に処理しません。1ビット損失が発生すると、復号化機能と暗号化機能の整合性が失われます)

他のモードと比較したCFB
CBCモードと同様に、平文の変更は暗号文で永久に伝播し、暗号化を並列化することはできません。また、CBCと同様に、復号化を並列化できます。
CFB、OFB、およびCTRには、CBCモードに比べて2つの利点がブロック暗号は暗号化方向でのみ使用され、メッセージを暗号ブロックサイズの倍数にパディングする必要はありません(ただし、暗号文の盗用はパディングを不要にするCBCモード)。

出力フィードバック(OFB) OFB 出力フィードバック
並列化可能な暗号化
番号
並列化可能な復号化
番号
ランダム読み取りアクセス
番号
出力フィードバック(OFB)モードは、同期にブロック暗号を行うストリーム暗号。キーストリームブロックを生成し、それをプレーンテキストブロックとXORして、暗号文を取得します。他のストリーム暗号と同様に、暗号文のビットを反転すると、同じ場所の平文に反転したビットが生成されます。このプロパティにより、暗号化の前に適用された場合でも、多くのエラー訂正コードが正常に機能します。
XOR演算の対称性により、暗号化と復号化はまったく同じです。 = ⊕
O 、
{C_ {j} = P_ {j} oplus O_ {j}、}

  = ⊕
O 、
{P_ {j} = C_ {j} oplus O_ {j}、}
  O =E K(( I )。 {O_ {j} = E_ {K}(I_ {j})、}
  I =
O −
1 {I_ {j} = O_ {j-1}、}

 I 0 =
IV {I_ {0} = { text {IV}}。}
  OFB encryption.svg
OFB decryption.svg
各出力フィードバックブロック暗号操作は、以前のすべての操作に依存しているため、並行して実行することはできません。ただし、平文または暗号文は最終XORにのみ使用されるため、ブロック暗号操作を事前に実行して、平文または暗号文が使用可能になったら最終ステップを並行して実行できます。
入力としてゼロの定数文字列を使用するCBCモードを使用することにより、OFBモードのキーストリームを取得することができます。これにより、OFBモード暗号化にCBCモードの高速ハードウェア実装を使用できるため、便利な場合が
CFBモードのようなフィードバックが2倍に平均サイクル長を減少するように、部分ブロックとOFBモードを使用して32以上。DaviesとParkinによって提案され、実験結果によって実証された数学的モデルは、完全なフィードバックによってのみ、取得可能な最大値に近い平均サイクル長を達成できることを示しました。このため、切り捨てられたフィードバックのサポートはOFBの仕様から削除されました。

カウンター(CTR)
クリック率
カウンター
並列化可能な暗号化
はい
並列化可能な復号化
はい
ランダム読み取りアクセス
はい
注:CTRモード(CM)は、整数カウンターモード(ICM)および
セグメント化整数カウンター(SIC)モードとも呼ばれ OFBと同様に、カウンターモードはブロック暗号をストリーム暗号に変換します。「カウンター」の連続する値を暗号化することにより、次のキーストリームブロックを生成します。カウンターは、長時間繰り返されないことが保証されているシーケンスを生成する任意の関数にすることができますが、実際の1つずつインクリメントするカウンターが最も単純で最も人気が単純な決定論的入力関数の使用法は、以前は物議を醸していました。批評家は、「暗号システムを既知の体系的な入力に故意にさらすことは、不必要なリスクを表す」と主張しました。ただし、今日、CTRモードは広く受け入れられており、問題は基礎となるブロック暗号の弱点と見なされます。これは、入力の構造的偏りに関係なく安全であることが期待されます。 CBCとともに、CTRモードは、ニールスファーガソンとブルースシュナイアーが推奨する2つのブロック暗号モードの1つです。
CTRモードは、1979年にホイットフィールドディフィーとマーティンヘルマンによって導入されました。
CTRモードにはOFBと同様の特性がありますが、復号化中にランダムアクセスプロパティを使用することもできます。CTRモードは、ブロックを並列に暗号化できるマルチプロセッサマシンでの操作に最適です。さらに、OFBに影響を与える可能性のある短いサイクルの問題に悩まされることはありません。
IV / nonceがランダムである場合、任意の可逆演算(連結、加算、またはXOR)を使用してそれらをカウンターと組み合わせて、暗号化用の実際の一意のカウンターブロックを生成できます。非ランダムナンス(パケットカウンターなど)の場合、ナンスとカウンターを連結する必要があります(たとえば、128ビットカウンターブロックの上位64ビットにナンスを格納し、下位64ビットにカウンターを格納します)。 。ナンスとカウンターを単一の値に単純に追加またはXORすると、攻撃者がIVカウンターのペア全体を操作して衝突を引き起こす可能性があるため、多くの場合、選択平文攻撃のセキュリティが破られます。攻撃者がIV-カウンターペアとプレーンテキストを制御すると、既知のプレーンテキストとの暗号文のXORは、同じIV-カウンターペアを共有する他のブロックの暗号文とXORすると、そのブロックを復号化する値を生成します。
この図のナンスは、他の図の初期化ベクトル(IV)と同等であることに注意してただし、オフセット/位置情報が破損している場合、バイトオフセットに依存しているため、そのようなデータを部分的に回復することは不可能です。
CTR encryption 2.svg
CTR decryption 2.svg

エラーの伝播
「エラー伝播」プロパティは、ビットエラー時に復号化がどのように動作するか、つまり、1つのビットのエラーが異なる復号化されたビットにどのようにカスケードされるかを示します。
伝送エラーにより、ビットエラーがランダムに発生する場合が
攻撃では意図的にビットエラーが発生する可能性が
ストリーム暗号モード(OFB、CTRなど)での特定のビットエラーは、意図された特定のビットにのみ影響を及ぼします。(CBCなど)などのより複雑なモードでの特定のビットエラー:適応的選択暗号文攻撃は、多くの異なる特定のビットエラーをインテリジェントに組み合わせて、暗号モードを破壊する可能性がでパディングオラクル攻撃、CBCは、エラー応答に基づいて暗号化秘密を推測による攻撃で復号することができます。パディングOracle攻撃バリアント「CBC-R」(CBCリバース)により、攻撃者は有効なメッセージを作成できます。
最新の認証付き暗号化(AEAD)またはMAC-Then-Encryptの順序でチェーンされたメッセージ認証コードを使用するプロトコルの場合、ビットエラーは復号化を完全に中止し、復号化機能に対して特定のビットエラーを生成してはなりません。つまり、復号化が成功した場合、ビットエラーは発生しないはずです。そのようなエラー伝播は、従来の機密性のみのモードよりも現代の暗号モードではそれほど重要ではありません。
モード
Cでのビットエラーの影響I
IVのビットエラーの影響 ECB ランダムP内のエラービットI
適用できない CBC ランダムP内のエラービットI Pにおける特定のビットエラーI + 1
Cの解読の特定のビット誤り1 CFB P内の特定のビットエラー私ランダムPの中のエラービットI + 1
ランダムは、Cの復号化におけるエラービット1 OFB P内の特定のビットエラーI
ランダムは、Cの復号化におけるエラービット1、C 2、C、…、n個
クリック率
P内の特定のビットエラーI
該当なし(j番目のカウンターブロックT jのビットエラーにより、C jの復号化でランダムビットエラーが発生します)(出典:SP800-38A表D.2:復号化に対するビットエラーの影響の要約)
たとえば、送信された暗号文の1ブロックエラーは、ECBモード暗号化の再構築された平文で1ブロックエラーになりますが、CBCモードでは、このようなエラーは2ブロックに影響します。ランダムエラー(ラインノイズなど)が発生した場合にこのような復元力が望ましいと感じる人もいれば、エラー訂正によって攻撃者がメッセージを悪意を持って改ざんする可能性が高まると主張する人もいます。
ただし、適切な整合性保護が使用されている場合、このようなエラーは(高い確率で)メッセージ全体が拒否される結果になります。ランダムエラーへの耐性が望ましい場合は、送信前にエラー訂正コードを暗号文に適用する必要が

その他のモードおよびその他の暗号化プリミティブ
ブロック暗号の操作モードはさらに多く提案されています。いくつかは受け入れられ、完全に説明され(標準化されていても)、使用されています。その他は安全でないことが判明しているため、絶対に使用しないでさらに、機密性、信頼性、認証付き暗号化に分類されないものもたとえば、キーフィードバックモードやDavies-Meyerハッシュなどです。
NISTは、でブロック暗号のために提案されたモードのリストを維持モードの開発を。
ディスク暗号化では、多くの場合、アプリケーション用に特別に設計された特別な目的のモードが使用されます。調整可能なナローブロック暗号化モード(LRW、XEX、およびXTS)とワイドブロック暗号化モード(CMCおよびEME)は、ディスクのセクターを安全に暗号化するように設計されています(ディスク暗号化理論を参照)。
多くのモードは初期化ベクトル(IV)を使用しますが、モードによっては、1回だけ使用される(ナンス)、公開前に予測できないなどの要件がCTR、GCMで同じキーを使用してIVを再利用するまたはOFBモードでは、同じキーストリームが2つ以上のプレーンテキストとXORされ、ストリームが明らかに誤用され、セキュリティが壊滅的に失われます。NISTキーラップアルゴリズムやSIV(RFC 5297)AEADモードなどの決定論的認証付き暗号化モードは、入力としてIVを必要とせず、特定のプレーンテキストとキーに対して毎回同じ暗号文と認証タグを返します。AES-GCM-SIVなどの他のIV誤用防止モードは、IV入力の恩恵を受けます。たとえば、同じIVを複数回使用しても壊滅的に失敗することなく、1つのキーで安全に暗号化できる最大量のデータが得られます。
ブロック暗号は、他の暗号化プロトコルでも使用できます。これらは通常、ここで説明するブロックモードと同様の動作モードで使用されます。すべてのプロトコルと同様に、暗号的に安全であるためには、これらの動作モードを正しく設計するように注意する必要が
ブロック暗号を使用して暗号化ハッシュ関数を構築するスキームがいくつかこのようないくつかの方法の説明については、一方向圧縮関数を参照して
暗号的に安全な疑似乱数ジェネレーター(CSPRNG)は、ブロック暗号を使用して構築することもできます。
メッセージ認証コード(MAC)は、多くの場合、ブロック暗号から構築されます。CBC-MAC、OMAC、PMACがその例です。

も参照してください
ディスク暗号化
メッセージ認証コード
認証付き暗号化
一方向圧縮機能

参考文献
^ NISTコンピュータセキュリティ部門(CSD)のセキュリティテクノロジーグループ(STG)(2013)。「ブロック暗号モード」。暗号化ツールキット。NIST。
^ ファーガソン、N。; シュナイアー、B。; 河野徹(2010)。暗号工学:設計原理と実用化。インディアナポリス:ワイリー出版社の頁63、64。ISBN  978-0-470-47424-2。
^ NISTコンピュータセキュリティ部門(CSD)のセキュリティテクノロジーグループ(STG)(2013)。「提案されたモード」。暗号化ツールキット。NIST。
^ アルフレッドJ.メネゼス; Paul C. van Oorschot; スコットA.ヴァンストーン(1996)。応用暗号化ハンドブック。CRCプレス。PP。  228-233。ISBN  0-8493-8523-7。
^ “”ISO / IEC 10116:2006 –情報技術–セキュリティ技術–nビットブロック暗号の動作モード””。ISO規格カタログ。2006年。2012年3月17日にオリジナルからアーカイブ。
^ コンラッド、エリック; ミセナール、セス; フェルドマン、ジョシュア(2017-01-01)、コンラッド、エリック; ミセナール、セス; Feldman、Joshua(eds。)、”Chapter 3-Domain 3:Security Engineering”、11hHourCISSP®(Third Edition)、Syngress、pp。47–93、doi:10.1016 / b978-0-12-811248-9.00003- 6、ISBN
 978-0-12-811248-9、
^ NISTコンピュータセキュリティ部門(CSD)のセキュリティテクノロジーグループ(STG)(2013)。「現在のモード」。暗号化ツールキット。NIST。
^ 「ストリーム暗号の再利用:グラフィックの例」。CryptosmithLLC。
^ B.メラー(2004年5月20日)、SSL / TLSでのCBC暗号の組み合わせのセキュリティ:問題点と対策、アーカイブされた6月30日に元から、2012
^ Tervoort、トム。「Zerologon:Netlogon暗号化(CVE-2020-1472)を破壊することによる認証されていないドメインコントローラーの侵害」。セキュラ。
^ ブラウフィッシュ。「NetlogonCFB8は有害であると見なされました。OFB8も」。
^ Gligor、Virgil D .; Donescu、Pompiliu(2002)。松井正明(編)。高速暗号化と認証:XCBC暗号化とXECB認証モード(PDF)。Fast Software Encryption2001。コンピュータサイエンスの講義ノート。2355。ベルリン:スプリンガー。pp。92–108。土井:10.1007 / 3-540-45473-X_8。ISBN  978-3-540-43869-4。
^ Jutla、Charanjit S.。ほぼ無料のメッセージ整合性を備えた暗号化モード(PDF)。Eurocrypt2001。コンピュータサイエンスの講義ノート。2045。スプリンガー。土井:10.1007 / 3-540-44987-6_32。
^ ドウォーキン、モリス。ブロック暗号操作モードの推奨事項:認証と機密性のためのCCMモード(PDF)(テクニカルレポート)。NIST特別刊行物。NIST。土井:10.6028 /NIST.SP.800-38C。800-38C。
^ ホワイティング、D。; Housley、R。; ファーガソン、N。。CBC-MAC(CCM)を使用したカウンター。IETF。土井:10.17487 / RFC3610。RFC 3610。
^ ハーキンス、ダン。「AdvancedEncryptionStandard(AES)を使用した合成初期化ベクトル(SIV)認証付き暗号化」。
^ Gueron、S。。AES-GCM-SIV:ノンスの誤用に強い認証付き暗号化。IETF。土井:10.17487 / RFC8452。RFC 8452 。
^ ゲロン、シェイ; ラングレー、アダム; リンデル、イェフダ「AES-GCM-SIV:仕様と分析」。Cryptology ePrintArchive。レポート(2017/168)。
^ 「ブロック暗号操作モードの推奨事項」(PDF)。NIST.gov。NIST。NS。9. 2017年3月29日のオリジナルからアーカイブ(PDF)。
^ メネゼス、アルフレッドJ。; van Oorschot、Paul C。; ヴァンストーン、スコットA.(2018)。応用暗号化ハンドブック。NS。228。
^ ダム、ケネスW。; リン、ハーバートS.(1996)。情報社会の保護における暗号化の役割。NS。132。
^ シュナイアー、ブルース(2015)。応用暗号化:Cのプロトコル、アルゴリズム、ソースコード。NS。208。
^ William F. Ehrsam、Carl HW Meyer、John L. Smith、Walter L. Tuchman、「ブロックチェーンによるメッセージ検証と送信エラー検出」、米国特許4074066、1976年。
^ 「トランスポート層セキュリティ(TLS)プロトコルバージョン1.1」。NS。20.アーカイブ元の2015年1月7日に。
^ 「暗号化に関するFAQ:Frage 84:カウンターモードとPCBCモードとは何ですか?」。www.iks-jena.de。
^ カウフマン、C。; Perlman、R。; Speciner、M。(2002)。ネットワークセキュリティ(第2版)。ニュージャージー州アッパーサドルリバー:プレンティスホール。NS。319. ISBN
 0130460192。
^ コール、J。(1990)。「ネットワーク認証のためのKerberosでの暗号化の使用」(PDF)。議事録、Crypto’89。ベルリン:スプリンガー。ISBN  0387973176。2009年6月12日にオリジナル (PDF)からアーカイブされました。
^ (NIST)、著者:Morris Dworkin(2001)。「SP800-38A、ブロック暗号操作モードの推奨事項:方法と手法」(PDF)。csrc.nist.gov。土井:10.6028 /NIST.SP.800-38A。2017年8月28日のオリジナルからアーカイブ(PDF)。
^ Davies、DW; パーキン、GIP(1983)。「出力フィードバック暗号化におけるキーストリームの平均サイクルサイズ」。暗号学の進歩、CRYPTO82の議事録。ニューヨーク:プレナムプレス。pp。263–282。ISBN
 0306413663。
^ Jueneman、Robert R.(1983)。「出力フィードバックモードの特定の側面の分析」。暗号学の進歩、CRYPTO82の議事録。ニューヨーク:プレナムプレス。pp。99–127。ISBN
 0306413663。
^ Lipmaa、Helger; ワグナー、デビッド; ロガウェイ、フィリップ(2000)。「AES動作モードに関するNISTへのコメント:CTRモード暗号化」(PDF)。2015-02-26のオリジナルからアーカイブ(PDF)。
^ ファーガソン、ニールス; シュナイアー、ブルース; 河野忠義(2010)。暗号工学。NS。71。
^ 「基本的なブロック暗号モード」。www.quadibloc.com。
^ 「暗号化I」。コーセラ。
^ 「モード開発–ブロック暗号技術–CSRC」。米国商務省国立標準技術研究所情報技術研究所コンピュータセキュリティ部門。 “