I sometimes see, in discussions of symmetric ciphers, reference to the 'key agility' of a particular algorithm. It seems to be related to the difficulty of switching encryption keys, but I don't understand more than that. Can anyone give a good explanation of 'key agility' and some contexts in which it is important?
My own symmetric cipher also has this property. Here's what I can say about the general meaning of it:
Note that if you have either an extreme of 1 or 2 you can live with just one. If preprocessing takes a long time but the generated key schedule is small you can simply do it once and store it with the key. If preprocessing is very cheap but the state is very large you can do it on-the-fly.
To give an example of the key agility of my own cipher, here's why:
As for why it's important, an example would be a busy HTTPS server. It has to handle many connections at once, and (if everything is done right) each connection has it's own associated keys. Being able to use many keys at once, and preferably to generate and use keys on the fly (ephemeral keys) is a huge bonus in performance and security.