暗号利用モード

暗号利用モードとは、ブロック暗号を用いて、ブロック長よりも長いメッセージを暗号化するための方式です。ブロック暗号は固定長のデータを暗号化しますが、実際のメッセージは多くの場合、ブロック長よりも長いため、暗号利用モードが不可欠となります。暗号利用モードには、主に秘匿用と認証用の2種類があります。

秘匿用の暗号利用モード



秘匿用の暗号利用モードは、メッセージの内容を第三者から隠蔽することを目的とします。代表的なモードとして、ECB、CBC、CFB、OFB、CTRがあります。これらのうち、ECB、CBC、OFB、CFBは、FIPS、ANSI、ISO、JISなどの標準規格で規定されています。また、CTRモードは、AES(Advanced Encryption Standard)の制定時に追加されました。

ECB (Electronic Codebook) モード


ECBモードは、最も単純な暗号利用モードです。メッセージをブロックに分割し、各ブロックを独立して暗号化します。同じ鍵で同じ平文ブロックを暗号化すると、常に同じ暗号文ブロックが得られるため、パターンが可視化されてしまうという欠点があります。そのため、ECBモードは機密性の高い情報の暗号化には推奨されません。特に、ビットマップ画像のようなパターンが重要なデータには不向きです。

CBC (Cipher Block Chaining) モード


CBCモードは、1976年にIBMによって開発された、より安全なモードです。各平文ブロックを暗号化する前に、前の暗号文ブロックとのXOR演算を行います。これにより、同じ平文ブロックでも、前のブロックが異なれば異なる暗号文ブロックが生成されます。最初のブロックの暗号化には初期化ベクトル(IV)を使用します。CBCモードはECBモードの欠点を克服していますが、暗号化処理を並列化できないという制約があります。

CBCモードの暗号化と復号


暗号化:

Cᵢ = Eₖ(Pᵢ ⊕ Cᵢ₋₁), C₀ = IV

復号:

Pᵢ = Dₖ(Cᵢ) ⊕ Cᵢ₋₁, C₀ = IV

ここで、Cᵢはi番目の暗号文ブロック、Pᵢはi番目の平文ブロック、Eₖは鍵Kによる暗号化関数、Dₖは鍵Kによる復号関数、⊕はXOR演算、IVは初期化ベクトルを表します。

PCBC (Propagating Cipher Block Chaining) モード


PCBCモードはCBCモードの変形であり、各平文ブロックと前の平文ブロック、暗号文ブロックのXORを取ってから暗号化します。ケルベロス認証バージョン4などで使用されていますが、一般的な利用は少なくなっています。

PCBCモードの暗号化と復号

暗号化:

Cᵢ = Eₖ(Pᵢ ⊕ Pᵢ₋₁ ⊕ Cᵢ₋₁), P₀ ⊕ C₀ = IV

復号:

Pᵢ = Dₖ(Cᵢ) ⊕ Pᵢ₋₁ ⊕ Cᵢ₋₁, P₀ ⊕ C₀ = IV



CFB (Cipher Feedback) モード


CFBモードは、ブロック暗号ストリーム暗号のように扱うモードです。前の暗号文ブロックを暗号化し、その結果と平文ブロックのXORを取って暗号文を生成します。自己同期型ストリーム暗号として機能させるために、シフトレジスタを使用することが一般的です。

CFBモードの暗号化と復号

暗号化:

Cᵢ = Eₖ(Cᵢ₋₁) ⊕ Pᵢ, C₀ = IV

復号:

Pᵢ = Eₖ(Cᵢ₋₁) ⊕ Cᵢ, C₀ = IV


OFB (Output Feedback) モード


OFBモードもブロック暗号ストリーム暗号として扱うモードです。鍵ストリームを生成し、平文ブロックとのXOR演算を行います。暗号化と復号が同じ処理になるという特徴があります。OFBモードは、鍵ストリームの生成が以前のすべての操作に依存するため、並列化が困難です。

OFBモードの暗号化と復号

暗号化:

Cⱼ = Pⱼ ⊕ Oⱼ

復号:

Pⱼ = Cⱼ ⊕ Oⱼ


CTR (Counter) モード


CTRモードは、ブロック暗号を同期ストリーム暗号として使用します。カウンターと呼ばれる値を暗号化して鍵ストリームを生成し、平文とのXORを取って暗号文を生成します。CTRモードは並列処理が可能で、OFBモードのような短いサイクルの問題もありません。

認証用の暗号利用モード



認証用の暗号利用モードは、メッセージの完全性を保証し、改ざんを検出するために使用されます。代表的なモードとして、CCM、GCM、OCBがあります。

その他の暗号利用モード



上記以外にも、CTS、2DEM、ABC、IGE、F8@3GPPなど、さまざまな暗号利用モードが存在します。

規格



暗号利用モードに関する規格は、FIPS PUB-81、ANSI X3.106、ISO 8372:1987、ISO/IEC 10116、JIS X 5052:1990、JIS X 5053:1998、RFC 3610などで規定されています。

まとめ



暗号利用モードは、ブロック暗号の機能を拡張し、より柔軟で安全な暗号化を実現するための重要な要素です。それぞれのモードには特性があり、用途に応じて適切なモードを選択することが重要です。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。