On investigations on finding AES keys given plaintext and ciphertext pairs.
More...
Go to the source code of this file.
Detailed Description
On investigations on finding AES keys given plaintext and ciphertext pairs.
 Todo:
 Breaking AES

What do we mean by "Breaking AES"?

We take the standard notion of "breaking" a symmetric block cipher, namely that if given a set of plaintext/ciphertext pairs, encrypted using the same key, can we then deduce the key faster than a brute force search?

The size of the set of plaintext/ciphertext pairs needed, and how much faster than brute force one can find the key are then matters of practicality.

Given a single plaintext/ciphertext pair, there may be multiple keys for which the AES algorithm maps that plaintext block to that ciphertext block given that key. Therefore, for the purposes of "breaking" AES in earnest, one may require providing multiple AES translations, each considering different plaintext/ciphertext pairs, but using the same key variables (see "Generate translation that allows multiple
plaintext/ciphertext pairs" in ComputerAlgebra/Cryptology/Lisp/Cryptanalysis/Rijndael/plans/Translations.hpp).

Therefore, experiments detailed within this plans file consider taking various AES SAT translations, setting all plaintext variables, all ciphertext variables (to the appropriate values given the plaintext and the AES algorithm) and then setting "n" key bits where "n" ranges from 1 to the total number of key bits (128 in most cases).

To "break" AES, the idea is obviously to leave all key variables unset.
Definition in file AESKeyDiscovery.hpp.