CBC および ANSI INCITS 106

ANSI INCITS 106 は、暗号化のための 4 つの操作方式を定義しています。 これらのモードの 1 つである暗号化ブロック・チェーン (CBC) は、複数のブロックに対して暗号化を実行する基本方式を定義します。 非暗号化テキスト・データ・ストリング (ブロック・サイズの倍数でなければならない) は、一連のブロックとして処理されます。 ブロックの処理による暗号化の結果は、次のブロックと排他的論理和がとられます。 暗号化の結果の最終ブロックは、出力チェーニング・ベクトル (OCV) として定義されます。 ICSF は、出力チェーニング・ベクトル値を chaining_vector パラメーターに格納します。

初期チェーニング・ベクトルは、8 つの入力バイトの最初のグループと排他的論理和がとられます。

要約を以下に示します。
  • 入力チェーニング・ベクトル (ICV) が必要です。
  • text_length が正確に 8 バイトの倍数でない場合、要求は失敗します。
  • 非暗号化テキストには埋め込みは行われません。例えば、出力テキストの長さは増加しません。

ICSF は、暗号化テキスト・スチーリングと呼ばれる、CBC モードの拡張機能を提供します。 これにより、ブロック・サイズの倍数でないテキスト長も許可されます。 これは特定の方法で最後の 2 つのブロックを操作することで実現します。 最後から 1 つ前のブロックは通常の方法で暗号化されますが、一部のビットは「流用」され、最後の (部分) ブロックに追加されます。 これらのビットは、最終ブロックを暗号化解除することでリカバリーできます。 現在この拡張機能は、NIST に対して、2007 年 5 月 6 日付の「Proposal To Extend CBC Mode By "Ciphertext Stealing" 」により提案しています。