「暗号技術入門 秘密の国のアリス」 (2) 第4章 ブロック暗号のモード

暗号技術入門 第3版

暗号技術入門 第3版

第4章 ブロック暗号のモード

DESやAESといったブロック暗号は固定長の平文しか暗号化できない。任意の長さの平文を暗号化するには、ブロック暗号を繰り返し使用する必要がある。この繰り返しをどう行うかをモードという。

ブロック暗号のモード

固定長の平文しか暗号化できない暗号方式をブロック暗号、そうでないものをストリーム暗号と呼ぶ。ブロック暗号を用いる際、ブロック長よりも長い平文を暗号化したいならブロック暗号を繰り返し適用する必要がある。このときに繰り返す方法であるモードは主に以下の5種類である。

  • ECB 電子符号表モード
  • CBC 暗号ブロック連鎖モード
  • CFB暗号フィードバックモード
  • OFB 出力フィードバックモード
  • CTR カウンタモード

ECBモード

ECBモードは、すべてのブロックを同じように暗号化する。平文をブロックに分割すると全く同じブロックができる場合、そのブロックは全く同じ暗号文ブロックになる。

このモードは、繰り返しパターンから解読につながりやすい、ブロックを入れ替えたり削除するだけで平文を操作できるなどの脆弱性があるので、使ってはいけない。

CBCモード

CBCモードでは、1つ前の暗号文ブロックと平文ブロックの内容を混ぜ合わせ(XOR)てから暗号化を行う。最初のブロックに対しては、初期化ベクトルという仮のビット列を使用する。

SSL/TLSではこのモードが使用されている。

CFBモード

1つ前の暗号文ブロックを暗号アルゴリズムの入力に戻す。

CFBモードの特長は、平文ブロックが直接暗号化されるわけではないということ。前の暗号文ブロックをさらに暗号化し、それとのXORをとっている。

OFBモード

暗号文アルゴリズムの出力を暗号アルゴリズムの入力へフィードバックする。このサイクルをまわして生成した鍵ストリームと平文ブロックのXORをとる。(前の暗号文ブロックではないことに注意!)CBC, CFBと違い、「前のブロック」が一切関連せず、また事前にXORするためのビット列を生成しておくことができるので、高速である。

CTRモード

CTRモードでは、ブロックをひとつ暗号化するごとに1インクリメントされるカウンタを暗号化し、鍵ストリームを作る。そして平文ブロックとXORをとる。