To exchange an authenticated and confidential message, the client and the server each
need a set of cryptographic secrets. However, to create these secrets, one pre-master
secret must be established between the two parties. SSL defines several key-exchange
methods to establish this pre-master secret.