
書記が数学やるだけ#875 暗号利用モード
暗号利用モードについて代表的なものを取り上げる。
問題

説明
暗号利用モードとは,ブロック暗号を利用してブロック長よりも長いメッセージを暗号化するメカニズムであり,以下のようなものが提案されている。

ECBモード (Electronic Codebook Mode) は,もっとも単純な暗号利用モードで,メッセージはブロックに分割され,それぞれのブロックは独立して暗号化される。ECBモードの欠点は,同じ鍵を用いた場合には,同じ平文ブロックを暗号化した結果の暗号文ブロックが常に同じとなることである。このため,データのパターンを隠蔽することができない。

CBCモード (Cipher Block Chaining Mode) では、平文の各ブロックは前の暗号文とのXORを取ってから暗号化される。これにより,データのパターンを撹拌することができる。このモードの主な欠点は,1つのブロックが壊れると以降に影響を及ぼすことである。

CFBモード (Cipher Feedback Mode) は、CBCモードと類似しており,ブロック暗号を自己同期型のストリーム暗号として扱うものである。CFBモードでは,平文の欠落は最大でも1ブロック分に留まることとなる。しかし,CBCモードと同様に、平文における1ビットの変化であっても暗号文全体に及ぶため、暗号化処理の並列化は不可能である。

OFBモード (Output Feedback Mode) は、ブロック暗号を同期型のストリーム暗号として扱うもので,鍵ストリームを生成してこれと平文ブロックのXORを取ることで暗号文を得る。誤りの影響が少ないメリットがある反面,途中で鍵ストリームが漏れると解読されるといったデメリットがある。

CTRモード (Counter Mode) は,ブロック暗号を同期型のストリーム暗号として扱うもので,「カウンター」と呼ばれる値を暗号化することで鍵ストリームブロックを生成する。これにより並列処理が可能となるため高速であるが,カウンターの再利用による危険性もある。

解答
ECBモードは,各ブロックに対し暗号化を行うだけである。

CBCモードでは,前の出力と平文とのXORをとってから暗号化する。

CFBモードでは,前の出力を暗号化したものと平文とのXORをとって暗号化する。

OFBモードでは,前の暗号化したものをさらに暗号化し,平文とのXORをとる。

CTRモードでは,カウンタに暗号化を行い,平文とのXORをとる。

本記事のもくじはこちら: