My last post talked about cryptography, its motivation and its primitive techniques. In this post, we shall learn about modern security techniques and how they keep us secure. We will touch upon the mathematical basis behind modern cryptography, talk about symmetric key cryptography and talk about a technique for exchanging secrets out in the open known as the Diffie-Hellman key exchange. To start off the discussion, I would like you to consider the following situation. Alice is a diplomat in a foreign country and has some sensitive information that she would like to communicate to Bob, her superior. The only means of communication available to Alice is a phone line that she and Bob knows is constantly being monitored and eves dropped on. How could Alice and Bob communicate a message in a secure manner starting from this state? We saw in the last post how, with some pre-decided shared secret (such as a codebook when using a substitution cipher), one could attempt to obscure a message and make it hard (but not too hard) to guess. More curiously, starting with no secret state between the two parties, is it possible to establish a secret codebook? In other words, sharing no secrets beforehand, is it possible to begin sharing a secret?