A biclique attack is a variant of the meet-in-the-middle (MITM) method of cryptanalysis. It utilizes a biclique structure to extend the number of possibly attacked rounds by the MITM attack. Since biclique cryptanalysis is based on MITM attacks, it is applicable to both block ciphers and (iterated) hash-functions. Biclique attacks are known for having weakened both full AES[1] and full IDEA,[2] though only with slight advantage over brute force. It has also been applied to the KASUMI cipher and preimage resistance of the Skein-512 and SHA-2 hash functions.[3]
The biclique attack is still the best publicly known single-key attack on AES. The computational complexity of the attack is
2126.1
2189.7
2254.4
As the computational complexity of the attack is
2126.1
The original MITM attack was first suggested by Diffie and Hellman in 1977, when they discussed the cryptanalytic properties of DES.[4] They argued that the key-size was too small, and that reapplying DES multiple times with different keys could be a solution to the key-size; however, they advised against using double-DES and suggested triple-DES as a minimum, due to MITM attacks (MITM attacks can easily be applied to double-DES to reduce the security from
256*2
2*256
Since Diffie and Hellman suggested MITM attacks, many variations have emerged that are useful in situations, where the basic MITM attack is inapplicable. The biclique attack variant was first suggested by Dmitry Khovratovich, Rechberger and Savelieva for use with hash-function cryptanalysis.[5] However, it was Bogdanov, Khovratovich and Rechberger who showed how to apply the concept of bicliques to the secret-key setting including block-cipher cryptanalysis, when they published their attack on AES. Prior to this, MITM attacks on AES and many other block ciphers had received little attention, mostly due to the need for independent key bits between the two 'MITM subciphers' in order to facilitate the MITM attack — something that is hard to achieve with many modern key schedules, such as that of AES.
For a general explanation of what a biclique structure is, see the article for bicliques.
In a MITM attack, the keybits
K1
K2
Simply put: The more rounds you attack, the larger subciphers you will have. The larger subciphers you have, the fewer independent key-bits between the subciphers you will have to bruteforce independently. Of course, the actual number of independent key-bits in each subcipher depends on the diffusion properties of the key-schedule.
The way the biclique helps with tackling the above, is that it allows one to, for instance, attack 7 rounds of AES using MITM attacks, and then by utilizing a biclique structure of length 3 (i.e. it covers 3 rounds of the cipher), you can map the intermediate state at the start of round 7 to the end of the last round, e.g. 10 (if it is AES128), thus attacking the full number of rounds of the cipher, even if it was not possible to attack that amount of rounds with a basic MITM attack.
The meaning of the biclique is thus to build a structure effectively, which can map an intermediate value at the end of the MITM attack to the ciphertext at the end. Which ciphertext the intermediate state gets mapped to at the end, of course depends on the key used for the encryption. The key used to map the state to the ciphertext in the biclique, is based on the keybits bruteforced in the first and second subcipher of the MITM attack.
The essence of biclique attacks is thus, besides the MITM attack, to be able to build a biclique structure effectively, that depending on the keybits
K1
K2
Get
2d
2d
22d
(This method was suggested by Bogdanov, Khovratovich and Rechberger in their paper: Biclique Cryptanalysis of the Full AES)
Preliminary:
Remember that the function of the biclique is to map the intermediate values,
S
C
K[i,j]
\foralli,j:Sj\xrightarrow[f]{K[i,j]}Ci
Procedure:
Step one: An intermediate state(
S0
C0
K[0,0]
S0\xrightarrow[f]{K[0,0]}Co
f
Step two: Two sets of related keys of size
2d
f
K | |
0\xrightarrow[f]{\Delta | |
i}\Delta |
i
f
\nablaj
K | |
\xrightarrow[f]{\nabla | |
j}0 |
\Deltai
\nablaj
\Deltai
K | |
\Delta | |
i |
\nablaj
K | |
\nabla | |
J |
Step three: Since the trails do not share any non-linear components (such as S-boxes), the trails can be combined to get:
K | |
0\xrightarrow[f]{\Delta | |
i}\Delta |
i ⊕ \nablaj
K | |
\xrightarrow[f]{\nabla | |
j}0 |
=\nablaj
K | |
\xrightarrow[f]{\Delta | |
i |
⊕
K | |
\nabla | |
j}\Delta |
i
(S0,C0,K[0,0])
S0,C0
K[0,0]
0\xrightarrow[f]{0}0
\Delta0=0,\nabla0=0
K | |
\Delta | |
0 |
=0
S0 ⊕ \nablaj\xrightarrow[f]{K[0,0] ⊕
K | |
\Delta | |
i |
⊕
K | |
\nabla | |
j}C |
0 ⊕ \Deltai
Step four: It is trivial to see that:
Sj=S0 ⊕ \nablaj
K[i,j]=K[0,0] ⊕
K | |
\Delta | |
i |
⊕
K | |
\nabla | |
j |
Ci=C0 ⊕ \Deltai
Sj\xrightarrow[f]{K[i,j]}Ci
\foralli,j:Sj\xrightarrow[f]{K[i,j]}Ci
It is thus possible to create a biclique of size
22d
22d
2d
2d
22d
2*2d
\Deltai
\nablaj
f
\Deltai ≠ \nablaj
i+j>0
K[i,j]
This way is how the biclique is constructed in the leading biclique attack on AES. There are some practical limitations in constructing bicliques with this technique. The longer the biclique is, the more rounds the differential trails has to cover. The diffusion properties of the cipher, thus plays a crucial role in the effectiveness of constructing the biclique.
Bogdanov, Khovratovich and Rechberger also describe another way to construct the biclique, called 'Interleaving Related-Key Differential Trails' in the article: "Biclique Cryptanalysis of the Full AES".
Step one: The attacker groups all possible keys into key-subsets of size
22d
d
K[i,j]
2d x 2d
f
g
E=f\circg
2d
K[i,0]
K[0,j]
K[i,j]
Step two: The attacker builds a biclique for each group of
22d
2d
Sj
2d
Ci
22d
K[i,0]
K[0,j]
Step three: The attacker takes the
2d
Ci
Pi
Step four: The attacker chooses an internal state,
Sj
Pi
f
g
Step five: Whenever a key-candidate is found that matches
Sj
Pi
The following example is based on the biclique attack on AES from the paper "Biclique Cryptanalysis of the Full AES".
The descriptions in the example uses the same terminology that the authors of the attack used (i.e. for variable names, etc).
For simplicity it is the attack on the AES128 variant that is covered below.
The attack consists of a 7-round MITM attack with the biclique covering the last 3 rounds.
The key-space is partitioned into
2112
216
2112
K[0,0]
\begin{bmatrix} -&-&-&0\\ 0&-&-&-\\ -&-&-&-\\ -&-&-&- \end{bmatrix}
2112
216
i
j
\begin{bmatrix} -&-&i&i\\ j&-&j&-\\ -&-&-&-\\ -&-&-&- \end{bmatrix}
28K[i,0]
28K[0,j]
216
K[i,j]
216
2112
\Deltai
K[i,0]
\nablaj
K[0,j]
When the bicliques are created, the MITM attack can almost begin. Before doing the MITM attack, the
2d
Pi\xrightarrow[]{K[i,0]}\xrightarrow[vi]{}
2d
\xleftarrow[vj]{}\xleftarrow[]{K[0,j]}Sj
K[i,0]
K[0,j]
Now the MITM attack can be carried out. In order to test a key
K[i,j]
Pi\xrightarrow[]{K[i,0]}\xrightarrow[vi]{}
Pi\xrightarrow[]{K[i,j]}\xrightarrow[vi]{}
Sj
\xleftarrow[vj]{}
Pi
\xrightarrow[vi]{}
When the intermediate values match, a key-candidate
K[i,j]
Pi
Sj
This attack lowers the computational complexity of AES128 to
2126.18
288
28