I am currently reading through *Cryptography Engineering* and came across this definition of block cipher security:

> Definition 2 An attack on a block cipher is a non-generic method of
> distinguishing the block cipher from an ideal block cipher.

Reading further, I find myself struggling to understand what the authors mean by a "non-generic attack" (and, conversely, a "generic attack"), which may be explained by what they say near the end of the relevant section: 

> That's why nobody has been able to formalise a definition of generic
> attacks and block cipher security.

Would anyone like a shot at attempting a definition of a generic attack and of a non-generic attack, particularly with respect to block ciphers?