暗号技術の基礎と応用
AES(ブロック長16バイト)をCBCモードで使い、パディングにはPKCS#7方式を使う。PKCS#7方式では、足りないバイト数をnとして値がnのバイトをn個足し、平文の長さがちょうど16の倍数のときも、値が16のバイトを16個足す。96バイトの平文を暗号化したときの暗号文の長さ(IVは含めない)はどれか。
- A96バイト
- B112バイト
- C128バイト
答えと解説を見る
正解:B. 112バイト
96バイトは16バイトのちょうど6ブロックですが、PKCS#7方式では、割り切れるときも値16のバイトを16個並べた1ブロックを足します。そのため、平文は 96 + 16 = 112 バイト(7ブロック)になり、暗号文も112バイトです。割り切れるときにも足すのは、復号した側が最後のバイトの値を見て、いつでもパディングを取り除けるようにするためです。CTRモードやGCMのように鍵ストリームとXORするモードでは、パディングが要らず、暗号文は平文と同じ長さになります。
- A. パディングを足さないときの値です。PKCS#7方式では、ちょうど割り切れるときも1ブロック分のパディングを足します。
- B. 正しい。96 + 16 = 112 バイトです。
- C. 112バイトに、IVの16バイトも足した値です。