
ブロック暗号化
ブロック暗号化とは、データ攪拌部と鍵生成部を利用し、平文をブロックに分けて暗号するデータを暗号方法です。
ブロック暗号化の種類
電子符号表モード(ECB、Electric CodeBook mode)
電子符号表モードとは、平文で暗号化したものを暗号文ブロックとして扱います。
各平文ブロックを暗号文ブロックに変換するため、大きな対応表が必要になります。同じ平文ブロックが同じ暗号文ブロックに変換されるため変換ルールがわかりやすく、いくつかモードがある中で最も機密性の低いモードであり、利用すべきではありません。暗号文ブロックの一部が改変されていても、正常に復号するため、完全性に対しても脆弱です。

暗号ブロック連鎖モード(CBC、Cipher Block Chaining mode)
暗号ブロック連鎖モードとは、1つ前の暗号文ブロックと平文ブロックのXORを行います。
同じ平文ブロックでも前の暗号化ブロックを参照しているため、異なる暗号化ブロックが生成されます。
ある暗号ブロックが破損した場合、破損したブロック以降は解読不可能になります。

暗号フィードバックモード(CFB、Cipher-FeedBack mode)
暗号フィールドバックモードとは、1つ前の暗号文ブロックを暗号化の入力を戻します。
平文ブロックをXORにより暗号化ブロックを生成しますが、使い捨てパッドのように解読不可能ではありません。疑似乱数生成器により、暗号アルゴリズムが生成するビット列(鍵ストリーム)を生成します。CFBでは鍵ストリームに相当するものを連続する暗号化によって達成します。つまり、ブロック暗号を使ってストリーム暗号を作っているとの解釈も可能です。
CFBには再生攻撃(replay attack)の脆弱性があります。正常な暗号文の連続する暗号化ブロックを、CFBで生成された任意の暗号化ブロックに差し替えた場合、差し替えた初めのブロック以降はすべて正常に復号されます。つまり、復号した際の内容を差し替えることが可能です。

出力フィードバックモード(OFB、Output-FeedBack mode)
出力フィールドバックモードとは、暗号化の出力を暗号化の入力にフィードバックします。
鍵ストリーム生成とXORによる暗号化作業を並行して進められます。

カウンタモード(CTR、CounTeR mode)
カウンタモードとは、1つずつ増加するカウンタを暗号化の入力とします。
1ブロックずつ増加するカウンタを暗号化の入力とします。OFBモードでは暗号化の出力を入力にフィードバックしていますが、CTRモードではカウンタの値が暗号化の入力となります。
