Today I was reading notes about cryptography and I came across a problem that exists in Symmetric Key encryption, which is how to share the secret key across the network.

1st Method :

  1. Make use of the trusted KDC (Key Distribution Center)

  2. Encrypt the key using Public Key technique and exchange the key (e.g., SSL)

My question is which technique is prove to be more effective? Why has SSL implemented method 2? Is it because it's more secure?

3 Answers 3


KDC is suitable for smaller infrastructures where you place explicit trust into each person or node doing encryption. Each time Alice wants to encrypt a message to Bob, she has to ask KDC for a temporary key to use for encryption. The KDC will also need to provide that temporary key to Bob so he can decrypt the message. You don't want to just give Alice Bob's encryption key, as then she would be able to read all encrypted messages sent to Bob (the nature of symmetric encryption is such that the same key both encrypts and decrypts the message).

As you can imagine, this does not scale beyond local infrastructures, nor is very fault-tolerant. If the Internet relied on KDCs in order to do encryption, it would be easy for attackers to DoS them and kill all commerce on the web -- or at least make it unreliable enough not to bother. This is why browsers went with Public Key cryptography and a framework of mutually trusted certificate authorities (CAs). This has its own set of trade-offs. One, you have to trust that the CAs know what they are doing -- a trust they have repeatedly violated. Two, PKI relies on the hope that we'll never find a fast way to factor the product of two very large prime numbers -- a problem not present in symmetric cryptography. If the likes of Grigory Perelman one day find a way to quickly solve that problem, anyone will be able to obtain the private decryption key from the public encryption key. If that happens, we'll be all in big trouble and will have to come up with some other way for two untrusted parties to exchange encryption keys.

So, to answer your question -- cryptographically, KDCs and symmetric keys are stronger than asymmetric public-private keys, as there is no danger that one day some crazy mathematician will find a way to quickly factor products of large primes. On the other hand, KDCs have inherent problems with key distribution, reliability and ongoing trust that can't be easily solved and therefore KDCs are not suitable beyond local installations where such trust is easy to assure.


A key distribution centre is a central system which distributes the keys to the user. Its central nature implies that:

  • Everybody talks to the KDC, so the KDC is easily overwhelmed in big networks.
  • The KDC has the power to betray everybody in the system.

As such, a KDC does not scale well, and requires an existing, online infrastructure. On the other hand, SSL uses asymmetric cryptography and public key distribution with certificates; even there, there are entities who can betray many people (the certification authorities) but at least they can operate offline, which avoids scalability issues and makes them easier to protect against external subversion.

Thus, SSL uses asymmetric cryptography because it is easier to apply generically (especially worldwide), and also easier to keep secure.


A typical operation with a KDC involves a request from a user to use some service. The KDC will use cryptographic techniques to authenticate requesting users as themselves. It will also check whether an individual user has the right to access the service requested. If the authenticated user meets all prescribed conditions, the KDC can issue a ticket permitting access. KDCs mostly operate with symmetric encryption. In most (but not all) cases the KDC shares a key with each of all the other parties. The KDC produces a ticket based on a server key. The client receives the ticket and submits it to the appropriate server. The server can verify the submitted ticket and grant access to the user submitting it. Security systems using KDCs include Kerberos. (Actually, Kerberos partitions KDC functionality between two different agents: the AS (Authentication Server) and the TGS (Ticket Granting Service).)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .