# Does using a block cipher in CBC mode *twice* result in an all-or-nothing transform (AONT)?

Use a block cipher in CBC mode with a public or all-0 key. Twice. Wrapping the last block into (xor) the first on the second round.

Every block will depend on all previous and all successive blocks. Any corruption in any block will corrupt all the rest.

Will this result in an All-Or-Nothing Transform (AONT)?

• crypto.stackexchange.com/a/107992/18298 Sep 17, 2023 at 19:39
• That was me, but now i'm unsure because AONT literature is very sparse. Sep 17, 2023 at 19:44

The below is the first pass with the encryption of CBC where key $$k$$ is public or $$0$$ and $$nb$$ is the number of blocks. We keep the IV as random number

\begin{align} C_1 &= Enc_k(P_1 \oplus IV)\\ C_i &= Enc_k(P_i \oplus C_{i-1}),\;\; 1 < i \leq nb, \end{align}

Second encryption pass;

\begin{align} D_1 &= Enc_k(C_1 \oplus \color{red}{C_{nb}})\\ D_i &= Enc_k(C_i \oplus D_{i-1}),\;\; 1 < i \leq nb, \end{align}

Now, first decryption;

\begin{align} C_1 =& D_k(D_1) \oplus \color{red}{C_{nb}}\\ C_i =& D_k(D_i) \oplus D_{i-1},\;\; 1 < i < nb, \end{align}

Now, assume that we lost any of $$D_1, \dots D_{nb}$$. This mean that we cannot decrypt two $$C_i$$'s per loss.

What if we got only 3 consecutive $$D_i$$'s? Say; 4, 5, and 6

\begin{align} C_4 =& D_k(\color{red}{D_4}) \oplus D_{3}\\ \color{green}{C_5} =& D_k(\color{red}{D_5}) \oplus \color{red}{D_{4}}\\ \color{green}{C_6} =& D_k(\color{red}{D_6}) \oplus \color{red}{D_5}\\ \end{align}

This mean, if we get only consecutive 3 ciphertext blocks of the second decryption, namely from $$D_i$$s, we can decrypt 1 ciphertext block as;

\begin{align} P_6 =& D_k(\color{green}{C_6}) \oplus {\color{green}{C_5}}, \end{align}

So, the proposed method, twice encryption, is not an All-Or-Nothing Transform (AONT).

In CBC mode, two consecutive blocks can decrypt one, 3 consecutive can decrypt 2. This was the core.

If we consider deeper with this; we can see that we need $$nb$$ pass for CBC mode so that the loss of one ciphertext from the final layer will prevent all layers from decryption. In this way we can achieve AONT.

Consider the 10 layer encryption and see how the loss of one block spreads.