Cipher Block Chainingとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > Cipher Block Chainingの意味・解説 

暗号利用モード

(Cipher Block Chaining から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/10/21 19:47 UTC 版)

暗号利用モード(あんごうりようモード、Block cipher modes of operation)とは、ブロック暗号を利用して、ブロック長よりも長いメッセージを暗号化するメカニズムのことである。

ECBモード(単純なブロック暗号の利用法)では、ある鍵で同一の平文を暗号化すると、同一の暗号文になる。したがって、長いメッセージ(画像データなど)のある部分が他の部分と同じであるかどうかが、暗号文の比較によって判断できてしまうので、他のモードが必要となった。

暗号利用モードには、秘匿用の利用モードと、認証用の利用モードとがある。

秘匿用の利用モード

秘匿用として多くの暗号利用モードが定義されており、これらのうち、ECB, CBC, OFB, CFBの4つは、FIPS, ANSIのほか、ISOJISで規格化されている。またCTRは、AES制定の際に追加されたモードである。

代表的な暗号利用モードを以下に示す。以下の説明で、

ECBモードの欠点は、同じ鍵を用いた場合には、同じ平文ブロックを暗号化した結果の暗号文ブロックが常に同じとなることである。このため、データのパターンを隠蔽することができない。メッセージの機密性の保持には向かず、暗号化プロトコルにおける使用は推奨されない。同じ入力に対して常に同じ出力を返すことから、ECBモードは反射攻撃に対しても脆弱である。

ECBモードにおいてデータのパターンがどの程度残されるかを、ビットマップ画像の暗号化を用いて説明する。各々のピクセルの色情報を暗号化しても、暗号化処理後の画像にはピクセルごとの色情報のパターンが残留している。

元画像
ECBモードでの暗号化
ECBモード以外での暗号化
右の画像は、CBC、CTRなどECBモード以外での暗号化における結果の例である。ランダムなノイズのように見えることが安全に暗号化されていることを必ずしも意味しないことには注意する必要がある。

Cipher Block Chaining (CBC)

CBC
Cipher Block Chaining
暗号化処理の並列化: 不可
復号処理の並列化:
Random Read:

CBCモード (Cipher Block Chaining Mode) は、1976年にIBMによって開発された[1]。CBCモードでは、平文の各ブロックは前の暗号文とのXORを取ってから暗号化される。すなわち、各々の暗号文ブロックはそれ以前のすべての平文ブロックに依存することとなる。メッセージごとのユニーク性を確保するため、最初のブロックの暗号化には初期化ベクトルが用いられる。

暗号化

CBCモードは、最も広く用いられている暗号利用モードであり、ECBモードの欠点を補うものである。このモードの主な欠点は、各ブロックの暗号化にその前のブロックの暗号化の結果を使用することから暗号化処理を並列化することができないことと、暗号文ブロックのサイズの整数倍となるようメッセージをパディングする必要があることである。後者の例の一つが、Ciphertext stealing英語版と呼ばれるものである。CBCモードの暗号化においては、平文あるいは初期化ベクトルが1ビットでも変化すると、それ以降の暗号文すべてが変化することとなる。

不正な初期化ベクトルを用いて復号した場合、復号後の平文の最初のブロックは正しい結果とはならないが、それ以降のブロックは正しく復号される。これは、隣接する2つの暗号文ブロックから平文を回復することが可能なためである。これにより、CBCモードの復号処理は並列化が可能となる。CBCモードの復号においては、暗号文が1ビット変化した場合、その位置に対応するブロック全体および次のブロックにおける対応するビットの復号結果に影響を及ぼすが、それ以外のブロックには影響を及ぼさない。

Propagating Cipher Block Chaining (PCBC)

PCBC
Propagating Cipher Block Chaining
暗号化処理の並列化: 不可
復号処理の並列化: 不可
Random Read: 不可

PCBCモード (Propagating Cipher Block Chaining Mode[2] あるいは Plaintext Cipher Block Chaining mode[3]) は、CBCモードの変法である。

暗号化

PCBCモードはケルベロス認証のバージョン4およびWASTE英語版において用いられているが、あまり一般的ではない。PCBCモードでは隣接する2つの暗号文ブロックを入れ替えたとしてもそれ以降のブロックの復号に影響しない[4]。このため、ケルベロス認証のバージョン5ではPCBCモードは採用されていない。

Cipher Feedback (CFB)

CFB
Cipher Feedback
暗号化処理の並列化: 不可
復号処理の並列化:
Random Read:

CFBモード (Cipher Feedback Mode) は、CBCモードと類似しており、ブロック暗号を自己同期型のストリーム暗号として扱うものである。CFBモードの操作はCBCモードとよく似ており、特に復号処理はCBCモードでの復号処理をほぼそのまま逆転させたものとなる。

暗号化

上に示したもっとも単純なCFBモードでは、CBCモードのような自己同期型とはなっていない。1バイト、1ビットでも欠けた場合にはそれ以降の復号は不可能となる。そのような欠落の後も同期を続けるためには、1バイト、1ビットを同時に暗号化する必要がある。ブロック暗号の入力にシフトレジスタを組み合わせることで、CFBモードは自己同期型で利用することが可能となる。

CFBモードを任意のxの整数倍の欠落に対しても同期を維持することが可能な自己同期型のストリーム暗号として利用するためには、ブロックサイズと初期化ベクトルのサイズでシフトレジスタを初期化する必要がある。これはブロック暗号によって暗号化され、暗号化結果の上位xビットは平文のxビットとのXORを取られ、これがxビットの暗号文となる。これらxビットの出力はシフトレジスタにシフトされ、次のxビットの平文の処理に用いられる。復号も同様であり、初期化ベクトルから始まり、復号、復号結果の上位xビットと暗号文のxビットのXORによりxビットの平文となり、これが次のxビットの暗号文の処理に用いられる。このような処理はCFB-8あるいはCFB-1として知られている(シフト量の大きさによる)[5]

まとめると次のようになる。ここで、Si は i 番目のシフトレジスタの状態、a << x は x ビットだけシフトした a、head(a, x) は a の上位 x ビット、n は初期化ベクトルのビット数である。

暗号化

各々の操作はそれ以前のすべての操作に依存していることから、暗号化、復号ともに処理の並列化は不可能である。しかし、平文あるいは暗号文は各操作の最後のXORにのみ用いられることから、ブロック暗号による操作を先行して処理しておき、XORのみを最後に連続して行うことは可能である。

入力として0が連続する文字列を定数としてCBCモードを使用することでOFBモードの鍵ストリームを生成することができる。これは、CBCモード向けの高速なハードウェア実装をOFBモードに流用することが可能であることを意味する。

CFBモードのようにブロックの一部をフィードバックに用いた場合、OFBモードにおける平均サイクル長は

その他

  • CTS (Ciphertext stealing英語版)
  • 2DEM (2D Encryption Mode)
  • ABC (Accumulated Block Chaining)
  • IGE (Infinite Garble Extension)
  • F8@3GPP カテゴリ
カテゴリ

Cipher Block Chaining (CBC)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/06/04 04:43 UTC 版)

暗号利用モード」の記事における「Cipher Block Chaining (CBC)」の解説

CBCモード (Cipher Block Chaining Mode) は、1976年IBMによって開発された。CBCモードでは、平文の各ブロックは前の暗号文とのXOR取ってから暗号化される。すなわち、各々暗号文ブロックそれ以前すべての平文ブロック依存することとなる。メッセージごとのユニーク性を確保するため、最初ブロック暗号化には初期化ベクトル用いられる暗号化 C i = E K ( P iC i − 1 ) , C 0 = I V {\displaystyle C_{i}=E_{K}(P_{i}\oplus C_{i-1}),C_{0}=IV} 復号 P i = D K ( C i ) ⊕ C i − 1 , C 0 = I V {\displaystyle P_{i}=D_{K}(C_{i})\oplus C_{i-1},C_{0}=IV} CBCモードは、最も広く用いられている暗号利用モードであり、ECBモード欠点を補うものである。このモード主な欠点は、各ブロック暗号化にその前のブロック暗号化結果使用することから暗号化処理を並列化することができないことと、暗号文ブロックサイズ整数倍となるようメッセージパディングする必要があることである。後者例の一つが、Ciphertext stealing英語版)と呼ばれるのであるCBCモード暗号化においては平文あるいは初期化ベクトル1ビットでも変化すると、それ以降暗号文すべてが変化することとなる。 不正な初期化ベクトル用いて復号した場合復号後の平文最初ブロック正し結果とはならないが、それ以降ブロック正しく復号される。これは、隣接する2つ暗号文ブロックか平文回復することが可能なためである。これにより、CBCモード復号処理は並列化が可能となる。CBCモード復号においては暗号文1ビット変化した場合、その位置対応するブロック全体および次のブロックにおける対応するビット復号結果影響を及ぼすが、それ以外ブロックには影響及ぼさない

※この「Cipher Block Chaining (CBC)」の解説は、「暗号利用モード」の解説の一部です。
「Cipher Block Chaining (CBC)」を含む「暗号利用モード」の記事については、「暗号利用モード」の概要を参照ください。

ウィキペディア小見出し辞書の「Cipher Block Chaining」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Cipher Block Chaining」の関連用語






6
14% |||||




10
10% |||||

Cipher Block Chainingのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Cipher Block Chainingのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの暗号利用モード (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaの暗号利用モード (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS