Cipher Text Stealing (CTS) モード

CTS モード

CTS processing is the same with CBC except
  the last two blocks.
図 1: CTS モード

ブロック暗号の利用モードの一つで、 平文の長さがブロック長よりも長い場合に適用可能。 CBC モードを元にして、最後の 2 ブロックに細工をすることで、 平文の長さと暗号文の長さが同じになるように工夫されている。 面白いことを考える人がいるもんだ。

昔 RFC 2040 を元に描いた CTS モードの図に、 ちょっと色を付けてみた (図 1)。 念のため、RFC 2040 には間違っている部分があって errata がでてるので注意。

OpenSSL で AES-CTS

AES-CTS が必要だったので、 OpenSSL の AES_encrypt, AES_decrypt, AES_cbc_encrypt を使って、 AES_cts_encrypt を作ってみた。

aes_cts_openssl-20051128.c