Cryptography-block-cipher-modes-of-operation

提供:Dev Guides
移動先:案内検索

ブロック暗号操作モード

この章では、ブロック暗号のさまざまな動作モードについて説明します。 これらは、汎用ブロック暗号の手続き規則です。 興味深いことに、さまざまなモードにより、さまざまなプロパティが実現され、基盤となるブロック暗号のセキュリティが強化されます。

ブロック暗号は、固定サイズのデータ​​ブロックを処理します。 通常、メッセージのサイズはブロックサイズよりも大きくなります。 したがって、長いメッセージは一連の連続したメッセージブロックに分割され、暗号はこれらのブロックに対して1つずつ動作します。

電子コードブック(ECB)モード

このモードは、連続してリストされた一連のメッセージブロックを処理する最も簡単な方法です。

操作

  • ユーザーはプレーンテキストの最初のブロックを取得し、キーで暗号化して暗号テキストの最初のブロックを生成します。
  • 次に、彼はプレーンテキストの2番目のブロックを取得し、同じキーなどを使用して同じプロセスに従います。

ECBモードは*決定論的*です。つまり、プレーンテキストブロックP1、P2、…、Pmが同じキーで2回暗号化される場合、出力暗号テキストブロックは同じになります。

実際、特定のキーに対して、技術的には、可能なすべてのプレーンテキストブロックの暗号テキストのコードブックを作成できます。 暗号化では、必要なプレーンテキストのみを検索し、対応する暗号文を選択する必要があります。 したがって、操作はコードブック内のコードワードの割り当てに類似しており、したがって公式名-電子コードブック操作モード(ECB)を取得します。 次のように示されています-

ECBモード

ECBモードの分析

実際には、アプリケーションデータには通常、推測可能な部分的な情報が含まれています。 たとえば、給与の範囲を推測できます。 ECBからの暗号文により、平文メッセージが予測可能な範囲内にある場合、攻撃者は試行錯誤によって平文を推測できます。

たとえば、ECBモードからの暗号文が給与数値を暗号化することがわかっている場合、少数の試行により攻撃者が数値を回復できます。 一般に、決定論的暗号を使用することは望まないため、ほとんどのアプリケーションではECBモードを使用しないでください。

暗号ブロック連鎖(CBC)モード

CBC操作モードは、暗号文を生成するためのメッセージ依存性を提供し、システムを非決定的にします。

操作

CBCモードの動作を次の図に示します。 手順は次のとおりです-

  • 最上位レジスタにnビットの初期化ベクトル(IV)をロードします。
  • 最上位レジスタのデータ値とnビットのプレーンテキストブロックをXORします。
  • キーKを使用して、基礎となるブロック暗号でXOR操作の結果を暗号化します。
  • 暗号文ブロックを最上位レジスタに送り、すべての平文ブロックが処理されるまで操作を続けます。
  • 復号化の場合、IVデータは、最初に暗号化解除された暗号文ブロックとXORされます。 最初の暗号文ブロックは、次の暗号文ブロックを復号化するためのIVを置換するレジスタにも送られます。

CBCモード

CBCモードの分析

CBCモードでは、現在の平文ブロックが前の暗号文ブロックに追加され、結果がキーで暗号化されます。 したがって、復号化は逆のプロセスであり、現在の暗号文を復号化し、その結果に以前の暗号文ブロックを追加することを伴います。

ECBに対するCBCの利点は、IVを変更すると、同一のメッセージに対して異なる暗号文が作成されることです。 欠点の側面では、チェーン効果のため、復号化中に伝送エラーがさらにいくつかのブロックに伝播されます。

CBCモードは、よく知られたデータ発信元認証メカニズムの基礎を形成することに言及する価値があります。 したがって、対称暗号化とデータ発信元認証の両方を必要とするアプリケーションには利点があります。

暗号フィードバック(CFB)モード

このモードでは、各暗号文ブロックは次の平文ブロックを暗号化するために暗号化プロセスに「フィードバック」されます。

操作

CFBモードの動作を次の図に示します。 たとえば、現在のシステムでは、メッセージブロックのサイズは「s」ビットで、1 <s <nです。 CFBモードでは、初期ランダムnビット入力ブロックとして初期化ベクトル(IV)が必要です。 IVは秘密である必要はありません。 操作の手順は次のとおりです-

  • トップレジスタにIVをロードします。
  • キーKを使用して、基礎となるブロック暗号でトップレジスタのデータ値を暗号化します。
  • 暗号化プロセスの出力の「s」個の最上位ビット(左ビット)のみを取り、「s」ビットのプレーンテキストメッセージブロックとXORして、暗号文ブロックを生成します。
  • 既に存在するデータを左にシフトすることにより、暗号文ブロックを最上位レジスタに送り、すべての平文ブロックが処理されるまで操作を続けます。
  • 基本的に、前の暗号文ブロックはキーで暗号化され、結果は現在の平文ブロックとXORされます。
  • 復号化についても同様の手順に従います。 事前に決定されたIVは、復号化の開始時に最初にロードされます。

CFBモード

CFBモードの分析

CFBモードはECBモードとは大きく異なります。特定のプレーンテキストブロックに対応する暗号文は、そのプレーンテキストブロックとキーだけでなく、以前の暗号文ブロックにも依存します。 つまり、暗号文ブロックはメッセージに依存しています。

CFBには非常に奇妙な機能があります。 このモードでは、ユーザーはブロック暗号の暗号化プロセスのみを使用して暗号文を復号化します。 基礎となるブロック暗号の復号化アルゴリズムは使用されません。

明らかに、CFBモードはブロック暗号をストリーム暗号のタイプに変換しています。 暗号化アルゴリズムは、最下位レジスタに配置されるキーストリームを生成するキーストリームジェネレータとして使用されます。 このキーストリームは、ストリーム暗号の場合のようにプレーンテキストとXORされます。

ブロック暗号をストリーム暗号に変換することにより、CFBモードはブロック暗号の有利な特性を保持しながら、ストリーム暗号の有利な特性の一部を提供します。

反対に、ブロックの変更により伝送エラーが伝播します。

出力フィードバック(OFB)モード

基礎となるブロック暗号から連続する出力ブロックをフィードバックします。 これらのフィードバックブロックは、CFBモードの場合のようにキーストリームジェネレーターとして機能する暗号化アルゴリズムに供給するビット列を提供します。

生成されたキーストリームは、プレーンテキストブロックとXORされます。 OFBモードでは、初期ランダムnビット入力ブロックとしてIVが必要です。 IVは秘密である必要はありません。

操作は、次の図に示されています-

OFBモード

カウンター(CTR)モード

フィードバックなしのCFBモードのカウンターベースバージョンと見なすことができます。 このモードでは、送信者と受信者の両方が信頼できるカウンターにアクセスする必要があります。このカウンターは、暗号文ブロックが交換されるたびに新しい共有値を計算します。 この共有カウンターは必ずしも秘密の値ではありませんが、両方の側でカウンターの同期を維持する必要があるという課題があります。

操作

次の図に、CTRモードでの暗号化と復号化の両方を示します。 操作の手順は次のとおりです-

  • 一番上のレジスタに初期カウンタ値をロードすることは、送信者と受信者の両方で同じです。 CFB(およびCBC)モードのIVと同じ役割を果たします。
  • キーを使用してカウンタの内容を暗号化し、結果を最下位レジスタに配置します。
  • 最初のプレーンテキストブロックP1を取得し、これをボトムレジスタの内容とXORします。 この結果はC1です。 C1を受信者に送信し、カウンターを更新します。 カウンターの更新は、CFBモードの暗号テキストフィードバックを置き換えます。
  • 最後の平文ブロックが暗号化されるまで、この方法で続けます。
  • 復号化は逆のプロセスです。 暗号文ブロックは、カウンター値の暗号化されたコンテンツの出力とXORされます。 暗号化の場合と同様に、各暗号文ブロックカウンターの復号化後に更新されます。

CTRモード

カウンターモードの分析

メッセージに依存関係がないため、暗号文ブロックは以前の平文ブロックに依存しません。

CFBモードと同様に、CTRモードにはブロック暗号の復号化プロセスは含まれません。 これは、CTRモードが実際にブロック暗号を使用してキーストリームを生成し、XOR機能を使用して暗号化されているためです。 つまり、CTRモードでは、ブロック暗号もストリーム暗号に変換されます。

CTRモードの重大な欠点は、送信側と受信側に同期カウンタが必要なことです。 同期が失われると、プレーンテキストが正しく復元されなくなります。

ただし、CTRモードにはCFBモードのほぼすべての利点があります。 また、伝送エラーをまったく伝播しません。