共通鍵暗号(ブロック暗号)の暗号モードには、特徴が異なるものがいくつか存在しますが、その中でも今回はCTRモード(Counter Mode)について掘り下げて記事にしたいと思います。
まずは、簡単に各モードの特徴について比較した上で、CTRモードのメリット・デメリットをまとめます。
暗号モードの特徴一覧
モード | ランダム位置からの暗号化 | ランダム位置からの復号 | パディング要否 |
---|---|---|---|
ECB | 可能 | 可能 | 必要 |
CBC | 不可 | 可能 | 必要 |
CFB | 不可 | 可能 | 不要 |
OFB | 不可 | 不可 | 不要 |
CTR | 可能 | 可能 | 不要 |
- ランダム位置からの暗号化/復号というのは、任意のブロックに対して暗号化/復号できるかを表していて、これが可能な場合、暗号処理の並列化を行うことが出来ます。
- パディング要否というのは、平文がブロック長の倍数になっていない場合にパディングが必要かを表しています。
- CTRモードはスペック上最強に見える。
CTRモードについて
暗号化の仕組み
Wikipediaより
- Nonceとは使い捨ての乱数のこと(ノンス - Wikipedia)
- ブロックごとにCounterを1ずつインクリメントして使うのが一般的。
- ノンスの桁数は特に決まっていない。(と思われる。)カウンター値がループしてしまわないような桁数を選ぶ必要がある。
- ノンスの受け渡し方法については記載を見つけられなかったが、恐らく暗号文の送信側か受信側のどちらかが生成した乱数を、暗号化の度に受け渡して共有するのだと思われる。
特徴
現在ではCBCモードと同様によく使われるモードである。
メリット
- パディングが不要である。
- ブロックを任意の順番で暗号化/復号できる。(並列処理ができる)
- 復号する場合でも、暗号化アルゴリズムをそのまま利用するので、プログラムでの実装が簡単になる。
- ビット単位のエラーがある暗号文を復号した場合、平文の対応するビットのみがエラーになる。
デメリット
- 暗号文ブロックをビット反転すると、対応する平文ブロックがビット反転する。
効率性
- CTRモードは、ECBやCBCモードとほぼ同程度に効率的である。
参考元
暗号利用モード - Wikipedia
第4回暗号勉強会 ブロック暗号のモード - Google スライド
ブロック暗号の利用モード - Security Akademeia
ブロック暗号を使った秘匿を目的にした 利用モードの技術 ... - CRYPTREC
AESのCTRモード(TLSとDTLS用) - まどぎわBLOG
JCEでAES/CTRを試してみた - まどぎわBLOG
【暗号化】ブロック暗号のモードまとめ (比較表付き) - Qiita