この章では、ブロック暗号の様々な動作モードについて説明します。 これらは一般的なブロック暗号の手続き上の規則です。 興味深いことに、異なるモードは、基礎となるブロック暗号の安全性を高める異なる特性を達成する結果となる。
ブロック暗号は、固定サイズのデータブロックを処理する。 通常、メッセージのサイズはブロックサイズより大きい。 したがって、長いメッセージは一連の連続したメッセージブロックに分割され、暗号はこれらのブロックに対して一度に1つずつ操作する。
電子コードブック(ECB)モード
このモードは一連の連続したリスト化メッセージブロックを処理するのに最も簡単な方法である。
操作
-
ユーザーは平文の最初のブロックを取り、それをキーで暗号化し、暗号文の最初のブロックを生成する。
-
彼は次に平文の2番目のブロックを取り、同じ鍵で同じ処理を行い、以下同様です。
ECBモードは決定論的で、つまり平文ブロックP1、P2、…、Pmを同じ鍵で2回暗号化すると、出力の暗号文ブロックは同じになる。
実際、与えられた鍵に対して技術的に、すべての可能な平文ブロックに対する暗号文のコードブックを作成することが可能だ。 暗号化は、必要な平文を探し、対応する暗号文を選択することだけを必要とします。 したがって、この操作はコードブックのコードワードの割り当てに似ているため、ECB(Electronic Codebook mode of operation)という正式な名称が与えられました。 1961>
Analysis of ECB Mode
現実には、どんなアプリケーションデータにも、推測可能な情報が部分的に含まれているのが普通である。 例えば、給与の額面が推測できる。 ECBの暗号文は、平文が予測可能な範囲であれば、攻撃者が試行錯誤で平文を推測することができます。 一般に、決定論的な暗号は使いたくないので、ECBモードはほとんどのアプリケーションで使うべきではない。
Cipher Block Chaining (CBC) Mode
CBCモードの動作は暗号文生成にメッセージ依存性を提供し、システムを非決定論的にする。
Operation
CBCモードの動作は以下の図解の通りである。
-
トップレジスタにnビット初期化ベクトル(IV)をロードする。
-
トップレジスタのデータ値にnビット平文ブロックをXORする。
-
キーKの基礎ブロック暗号でXOR演算の結果を暗号化する。
-
暗号文ブロックをトップレジスタに送り、すべての平文ブロックが処理されるまで動作を続ける。
-
復号のために、IVデータは復号された最初の暗号文ブロックとXOR処理される。 最初の暗号文ブロックは、次の暗号文ブロックの復号化のためにIVを置き換えるレジスタにも入力されます。
CBCモードの分析
CBCモードでは、現在の平文ブロックが前の暗号文ブロックに加えられ、結果が鍵で暗号化されます。 したがって、復号化は逆のプロセスであり、現在の暗号文を復号化し、その結果に以前の暗号文ブロックを追加します。
ECBに対するCBCの利点は、IVを変更すると、同一のメッセージに対して異なる暗号文になることです。 欠点としては、連鎖効果により、送信時のエラーが復号時にさらにいくつかのブロックに伝搬されることが挙げられます。 このモードでは、各暗号文ブロックは、次の平文ブロックを暗号化するために暗号化プロセスに「フィードバック」される。 例えば、本システムでは、メッセージブロックは、1<2623>s<2623>nのsビットサイズである。CFBモードでは、初期ランダムnビット入力ブロックとして、初期化ベクトル(IV)を必要とする。 IVは秘密である必要はない。 動作ステップは以下の通り。 –
-
IVをトップレジスタにロードする。
-
トップレジスタのデータ値を鍵Kで基本ブロック暗号化する。
-
暗号化の出力から上位ビット(左ビット)のみをs数個とり、sビット平文メッセージブロックとXORして暗号文ブロックに変換する。
-
すでに存在するデータを左にシフトして暗号文ブロックをトップレジスタに送り、すべての平文ブロックが処理されるまで操作を続ける。
CFB モードの分析
CFB モードは ECB モードと大きく異なり、与えられた平文ブロックに対応する暗号文はその平文ブロックと鍵だけではなく、前の暗号文ブロックに依存する。 言い換えれば、暗号文ブロックはメッセージに依存する。
CFB は非常に奇妙な特徴を持っている。 このモードでは、ユーザはブロック暗号の暗号化処理だけを用いて暗号文を復号化する。 基礎となるブロック暗号の復号アルゴリズムは決して使用されない。
どうやら、CFBモードはブロック暗号を一種のストリーム暗号に変換しているようである。 暗号化アルゴリズムをキーストリーム生成器として使用し、キーストリームを生成してボトムレジスタに配置する。 ブロック暗号をストリーム暗号に変換することで、CFBモードはブロック暗号の有利な特性を保持しながら、ストリーム暗号の有利な特性のいくつかを提供する。
その反面、ブロックの変更により送信エラーが伝搬します。
出力フィードバック(OFB)モード
これは、基礎となるブロック暗号からの連続した出力ブロックをそれにフィードバックさせるものです。 これらのフィードバックブロックは、CFBモードの場合と同様に、鍵ストリーム生成器として機能する暗号化アルゴリズムに供給するビット列を提供します。 OFBモードでは、最初のランダムなnビット入力ブロックとしてIVが必要です。 IVは秘密である必要はない。
動作は次の図に描かれている。 –
カウンター(CTR)モード
これはCFBモードのフィードバックなしのカウンターベースのバージョンと考えることができる。 このモードでは、送信者と受信者の両方が信頼できるカウンターにアクセスする必要があり、暗号文ブロックが交換されるたびに新しい共有値が計算される。 この共有カウンタは必ずしも秘密の値ではありませんが、課題は、双方がカウンタを同期させておく必要があることです。
動作
CTRモードでの暗号化と復号の両方を以下の図に示しています。 操作手順は以下の通りである。 –
-
トップレジスタにカウンタの初期値をロードする。 CFB(およびCBC)モードではIVと同じ役割を果たします。
-
カウンタの内容をキーで暗号化し、その結果をボトムレジスタに置きます。
-
最初の平文ブロックP1を取り出し、ボトムレジスタの内容にこれをXORします。 この結果はC1である。 受信機にC1を送信し、カウンタを更新します。 カウンターの更新は、CFBモードでの暗号文のフィードバックを置き換えます。
-
最後の平文ブロックが暗号化されるまで、この方法を続けます。 暗号文ブロックは暗号化された内容の出力であるカウンタ値とXORされる。 各暗号文ブロックの復号後、カウンタは暗号化の場合と同様に更新されます。
Analysis of Counter Mode
これはメッセージ依存性がなく、したがって暗号文ブロックは以前の平文ブロックに依存しない。 これは、CTRモードが実際にはブロック暗号を使用してキーストリームを生成し、それをXOR関数で暗号化するためである。 言い換えれば、CTRモードはブロック暗号をストリーム暗号に変換するものでもあります。
CTRモードの重大な欠点は、送信側と受信側に同期カウンタが必要であることです。 同期がとれないと平文が正しく復元できない。
しかし、CTRモードはCFBモードの長所をほとんどすべて持っている。 さらに、送信エラーを全く伝搬しない。