One of the most useful tools in the security toolkit is cryptography. Cryptography often plays a key role in the design and implementation of secure systems. However, often when we use cryptography in a practical setting, what we really think about is an abstract model of how cryptography ought to work. Unfortunately, reality is often messier than abstract models.
In this chapter, we present cautionary tales, discussing many areas where this gap has caused security problems.