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)?


1 Answer 1


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}

enter image description here

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.

enter image description here


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.