The previous chapters introduced block ciphers and several techniques for attacking them based solely on compromising the underlying mathematics. However, not all ciphers let their security rest solely on the difficulty of computing certain mathematical operations, such as discrete logarithms and factoring; often ciphers are designed with some of the discussed techniques, such as substitution-permutation networks, Feistel structures, and shift registers.
In the following sections, I discuss various general techniques that can be used to attack ciphers of these types.
Here's a quick review of the various forms of attacks possible:
Ciphertext-Only Attack — This method presumes the minimum amount of information for cryptanalysis: that we have intercepted an encrypted communication, and we wish to discover the plaintext and, if possible, the key.
All modern cryptosystems are designed with at least this attack in mind: if a ciphertext-only attack were not feasible, that would mean that the messages are sent over uncompromisable channels, so there would be no need for the encryption!
Known-Plaintext Attack — A known-plaintext attack dictates that we have obtained a ciphertext and know the associated plaintext with it, and we wish to derive the key. A known-plaintext attack is still often reasonable.
Probable Plaintext Attack — This is a more reasonable, but less useful case of the known-plaintext attack in which certain plaintexts are more likely to ...