CTRモード|情報処理安全確保支援士試験 令和5年春期午前Ⅱ 問7

出典:令和5年春期 午前Ⅱ 問7 分野:セキュリティ / 情報セキュリティ
ブロック暗号の暗号利用モードの一つであるCTR(Counter)モードに関する記述のうち,適切なものはどれか。
  • ア:暗号化と復号の処理において,出力は,入力されたブロックと鍵ストリームとの排他的論理和である。
  • イ:暗号化の処理において,平文のデータ長がブロック長の倍数でないときにパディングが必要である。
  • ウ:ビット誤りがある暗号文を復号すると,ビット誤りのあるブロック全体と次のブロックの対応するビットが平文ではビット誤りになる。
  • エ:複数ブロックの暗号化の処理は並列に実行できないが,複数ブロックの復号の処理は並列に実行できる。
解説

ブロック暗号は、データを一定の長さのかたまりに分けて暗号化する方式です。たとえばAESでは、平文を決まったサイズのブロックごとに処理します。

ただし、実際のデータは長さがばらばらです。そのため、複数のブロックをどのようにつなげて暗号化するかを決める必要があります。この「暗号化の進め方」を暗号利用モードといいます。

たとえば「AES-128-CBC」と書かれている場合、AESという暗号方式を使い、鍵長は128ビット、暗号利用モードはCBCであることを表します。

モード 特徴
ECB 各ブロックをそのまま個別に暗号化する。パターンが残りやすいため非推奨
CBC 前の暗号文ブロックを使って、次のブロックを暗号化する
CFB 前の暗号文ブロックを暗号化し、その結果を平文と組み合わせる
OFB 暗号アルゴリズムの出力を使って、平文と組み合わせる
CTR 1ずつ増えるカウンター値を使って鍵ストリームを作り、平文と組み合わせる

CTRモードでは、カウンター値から作ったデータと平文を排他的論理和で組み合わせて暗号文を作ります。カウンターを使うため、各ブロックを独立して処理しやすい点が特徴です。

CTRモード

つまり暗号利用モードは、「ブロック暗号を複数のデータブロックにどう適用するか」を決めるルールです。

したがって、が適切です。

❌他選択肢が誤りの理由
イ:暗号化の処理において,平文のデータ長がブロック長の倍数でないときにパディングが必要である。
⇒CTRモードでは鍵ストリームと排他的論理和を取るため、平文の長さがブロック長の倍数でなくても処理できます。パディングは不要です。
ウ:ビット誤りがある暗号文を復号すると,ビット誤りのあるブロック全体と次のブロックの対応するビットが平文ではビット誤りになる。
⇒CTRモードでは、暗号文の1ビット誤りは、復号後の平文の対応する1ビットに影響します。ブロック全体や次のブロックには影響しません。
エ:複数ブロックの暗号化の処理は並列に実行できないが,複数ブロックの復号の処理は並列に実行できる。
⇒CTRモードでは、各ブロックのカウンタ値から鍵ストリームを独立に生成できるため、暗号化も復号も並列に実行できます。
TSUNAGARU-ADVICE

まず押さえたいこと

CTRモードは、カウンタ値を暗号化して鍵ストリームを作り、その鍵ストリームと平文又は暗号文を排他的論理和します。つまり、暗号化も復号もXORで処理する点が特徴です。

迷ったときの判断軸

CTRモードはブロック暗号をストリーム暗号のように使う方式なので、平文長がブロック長の倍数でなくてもパディングは不要です。また、各ブロックのカウンタ値を独立して処理できるため、暗号化も復号も並列処理しやすいと整理できます。

科目Bにつなげるために

科目Bでは、暗号利用モードごとの特徴を、誤り伝搬・パディング要否・並列処理の可否で比較することがあります。CTRモードは、カウンタから作った鍵ストリームをXORする方式として理解しておくと、CBCなど他のモードと切り分けやすくなります。