Until recently, symmetric encryption techniques were used to secure information transmitted on public networks. Traditional, symmetric cryptographic systems are based on the idea of a shared secret. In such a system, two parties that want to communicate securely first agree in advance on a single "secret key" that allows each party to both encrypt and decrypt messages.
Symmetric cryptography has several drawbacks. Exchanging secret keys is awkward in large networks. Furthermore, the distribution of secret keys requires both senders and recipients to trust, and, therefore, to be recognizable with, every person they communicate with firmly. Also, symmetric systems need a secure channel to deal out the "secret" keys in the first place. If there is certainly such a secure channel, why not use it to send the entire secret message?
In today's Web-based systems concerning many transitory and participant's interactions with strong cryptography necessities, such symmetric key-based systems are highly not practical as a means for approving upon the necessary secrets to begin communicating firmly. This problem, the key contract, or key allocation problem, is part of a larger problem that is middle to the modern understanding of cryptographic systems-the key management problem (described in greater feature later in the chapter). Together, they represent the primary challenge in designing efficient cryptography systems for current computing systems. Symmetric key encryption plays an important role in the SSL protocol, along with asymmetric public key encryption.