These days I read Cryptography Engineering. I just started the part about block cipher modes, that’s where I learned about Nonces.

Using nonces with block ciphers is a good way to minimize the space taken by Initializations Vectors or IV. Instead of sending an additional block with the IV, you associate a number (counter) with each messages. The counter doesn’t necessarily need to be transmitted with each messages, it can be implicit: for example the first message could have 0 as nonce, the second 1, etc…

Then you encrypt the counter with the raw block cipher and use the result as the IV for the 1st block. Simple and elegant, I really like this crypto ‘trick’.

From I’ve read so far I highly recommend Cryptography Engineering. It’s a pleasure to read, and you might learn a thing or two.