Meet-in-the-middle attack: Difference between revisions

From Citizendium
Jump to navigation Jump to search
imported>Sandy Harris
No edit summary
imported>Sandy Harris
No edit summary
Line 2: Line 2:
A meet-in-the middle attack is a technique of [[cryptanalysis]] against a [[block cipher]]. The attacker must be able to calculate possible values of the same intermediate variable (the middle) in two ''independent'' ways, starting either from the input of the cipher ([[plaintext]]) or from the output ([[ciphertext]]). The attacker calculates some possible values each way and compares the results. It is a [[Cryptanalysis#Known_plaintext|known plaintext]] attack; the attacker must get or guess one block of plaintext for which he has the matching ciphertext.
A meet-in-the middle attack is a technique of [[cryptanalysis]] against a [[block cipher]]. The attacker must be able to calculate possible values of the same intermediate variable (the middle) in two ''independent'' ways, starting either from the input of the cipher ([[plaintext]]) or from the output ([[ciphertext]]). The attacker calculates some possible values each way and compares the results. It is a [[Cryptanalysis#Known_plaintext|known plaintext]] attack; the attacker must get or guess one block of plaintext for which he has the matching ciphertext.


Where it is applicable, this attack is devastating. The number of encryptions that must be tried is, in general, the square root of the number required for a [[brute force]] attack. For example, if brute force takes 2<sup>128</sup> steps and the cipher is vulnerable to meet-in-the-middle, then meet-in-the-middle will need only 2<sup>64</sup> steps. However, the attack is rarely applicable; it only works if the two calculations of the middle variable are independent. In most ciphers, they are not; the first and second halves of a block cipher use closely related keys, two groups of [[round key]]s derived from the same basic key by the same [[key schedule]].
Where it is applicable, this attack is devastating. The number of encryptions that must be tried is, in general, the square root of the number required for a [[brute force]] attack. For example, if brute force takes 2<sup>128</sup> steps and the cipher is vulnerable to meet-in-the-middle, then meet-in-the-middle will need only 2<sup>64</sup> steps. However, the attack is rarely applicable; it only works if the two calculations of the middle variable are independent. In most ciphers, they are not; the first and second halves of a block cipher use closely related keys, two groups of round keys derived from the same basic key by the same [[Block_cipher#Iterated_block_ciphers|key schedule]].


One case where the attack does apply is the construction where two block cipher encryptions are applied in succession with different keys in an attempt to gain greater security. It does not matter whether you use two different ciphers or apply the same cipher twice. The construction is vulnerable to a meet-in-the-middle attack either way; having two independent keys makes the attack possible. The security gain from this construction is negligible in all cases; two ciphers combined this way are not significantly stronger than one used alone.
One case where the attack does apply is the construction where two block cipher encryptions are applied in succession with different keys in an attempt to gain greater security. It does not matter whether you use two different ciphers or apply the same cipher twice. The construction is vulnerable to a meet-in-the-middle attack either way; having two independent keys makes the attack possible. The security gain from this construction is negligible in all cases; two ciphers combined this way are not significantly stronger than one used alone.
Line 8: Line 8:
This why [[triple DES]] rather than just double DES is used. Suppose you use DES twice expecting to obtain the security of a 112-bit key by combining two 56-bit DES keys. You do indeed obtain that if the attacker tries a [[brute force attack]] searching all possible combinations of keys. However, attackers cannot be expected to co-operate.
This why [[triple DES]] rather than just double DES is used. Suppose you use DES twice expecting to obtain the security of a 112-bit key by combining two 56-bit DES keys. You do indeed obtain that if the attacker tries a [[brute force attack]] searching all possible combinations of keys. However, attackers cannot be expected to co-operate.


Assuming the attacker can obtain or guess one block of plaintext for which he has the matching ciphertext, the meet-in-the-middle attack is a much better strategy for him. He runs a number of decryptions of the known ciphertext with possible 2nd-half keys, stores results in a table, then runs encryptions of the known plaintext using possible first-half keys and checking each output to see if it matches the table. On average, his total cost is 2<sup>57</sup> encrypt/decrypt operations. Against triple DES, a similar attack is possible but not practical; the cost is 2<sup>112</sup>.
Assuming the attacker can obtain or guess one block of plaintext for which he has the matching ciphertext, the meet-in-the-middle attack is a much better strategy for him. He runs a number of decryptions of the known ciphertext with possible second-half keys, stores results in a table, then runs encryptions of the known plaintext using possible first-half keys and checking each output to see if it matches the table. On average, his total cost is 2<sup>57</sup> encrypt/decrypt operations. Against triple DES, a similar attack is possible but not practical; the cost is 2<sup>112</sup>.


The math for showing the cost of this attack is straightforward. Assume the attack is applicable; we want to break a cipher with two independent parts, C1 and C2 and we have one block of known plaintext P and the matching ciphertext C. We do N encryptions of P with C1 and store the results in a table, then do N decryptions of C with C2 and check each of them to see if it matches a table entry. Total cost is 2N half-encryptions (C1 or C2), equivalent to N full encryptions (C1+C2). The number of key combinations tested, however, is N<sup>2</sup>. The attacker gets to choose N, constrained by the available space for tables. With enough space, he just sets N equal to 2<sup>keysize</sup> and breaks the cipher at a cost of 2*2<sup>keysize</sup> half-encryptions, for example 2<sup>57</sup> DES encryptions for double DES using 2<sup>53</sup> bytes for a bitmap table. With less space, he can make trade-offs between speed and space.
The math for showing the cost of this attack is straightforward. Assume the attack is applicable; we want to break a cipher with two independent parts, C1 and C2 and we have one block of known plaintext P and the matching ciphertext C. We do N encryptions of P with C1 and store the results in a table, then do N decryptions of C with C2 and check each of them to see if it matches a table entry. Total cost is 2N half-encryptions (C1 or C2), equivalent to N full encryptions (C1+C2). The number of key combinations tested, however, is N<sup>2</sup>. The attacker gets to choose N, constrained by the available space for tables. With enough space, he just sets N equal to 2<sup>keysize</sup> and breaks the cipher at a cost of 2*2<sup>keysize</sup> half-encryptions, for example 2<sup>57</sup> DES encryptions for double DES using 2<sup>53</sup> bytes for a bitmap table. With less space, he can make trade-offs between speed and space.

Revision as of 22:42, 21 August 2009

This article is developing and not approved.
Main Article
Discussion
Related Articles  [?]
Bibliography  [?]
External Links  [?]
Citable Version  [?]
 
This editable Main Article is under development and subject to a disclaimer.

A meet-in-the middle attack is a technique of cryptanalysis against a block cipher. The attacker must be able to calculate possible values of the same intermediate variable (the middle) in two independent ways, starting either from the input of the cipher (plaintext) or from the output (ciphertext). The attacker calculates some possible values each way and compares the results. It is a known plaintext attack; the attacker must get or guess one block of plaintext for which he has the matching ciphertext.

Where it is applicable, this attack is devastating. The number of encryptions that must be tried is, in general, the square root of the number required for a brute force attack. For example, if brute force takes 2128 steps and the cipher is vulnerable to meet-in-the-middle, then meet-in-the-middle will need only 264 steps. However, the attack is rarely applicable; it only works if the two calculations of the middle variable are independent. In most ciphers, they are not; the first and second halves of a block cipher use closely related keys, two groups of round keys derived from the same basic key by the same key schedule.

One case where the attack does apply is the construction where two block cipher encryptions are applied in succession with different keys in an attempt to gain greater security. It does not matter whether you use two different ciphers or apply the same cipher twice. The construction is vulnerable to a meet-in-the-middle attack either way; having two independent keys makes the attack possible. The security gain from this construction is negligible in all cases; two ciphers combined this way are not significantly stronger than one used alone.

This why triple DES rather than just double DES is used. Suppose you use DES twice expecting to obtain the security of a 112-bit key by combining two 56-bit DES keys. You do indeed obtain that if the attacker tries a brute force attack searching all possible combinations of keys. However, attackers cannot be expected to co-operate.

Assuming the attacker can obtain or guess one block of plaintext for which he has the matching ciphertext, the meet-in-the-middle attack is a much better strategy for him. He runs a number of decryptions of the known ciphertext with possible second-half keys, stores results in a table, then runs encryptions of the known plaintext using possible first-half keys and checking each output to see if it matches the table. On average, his total cost is 257 encrypt/decrypt operations. Against triple DES, a similar attack is possible but not practical; the cost is 2112.

The math for showing the cost of this attack is straightforward. Assume the attack is applicable; we want to break a cipher with two independent parts, C1 and C2 and we have one block of known plaintext P and the matching ciphertext C. We do N encryptions of P with C1 and store the results in a table, then do N decryptions of C with C2 and check each of them to see if it matches a table entry. Total cost is 2N half-encryptions (C1 or C2), equivalent to N full encryptions (C1+C2). The number of key combinations tested, however, is N2. The attacker gets to choose N, constrained by the available space for tables. With enough space, he just sets N equal to 2keysize and breaks the cipher at a cost of 2*2keysize half-encryptions, for example 257 DES encryptions for double DES using 253 bytes for a bitmap table. With less space, he can make trade-offs between speed and space.

The attack was first developed by Diffie and Hellman[1]. It has been improved since then; see for example [2]

References

  1. W. Diffie and M. E. Hellman (June 1977). "Exhaustive Cryptanalysis of the NBS Data Encryption Standard". Computer 10 (6): 74–84. DOI:10.1109/C-M.1977.217750. Research Blogging.
  2. Paul van Oorschot and Michael Wiener (1996). Improving Implementable Meet-in-the-Middle Attacks by Orders of Magnitude.