1

If I were to create a website I would then naturally generate a public-private key pair. The public key is published and the private key is kept private on the server. If the website has not a lot of traffic I would probably use this key pair for all communication.

I could imagine that a large company like Google would create a key pair for all communication from/to the USA and use a different key pair (simultaneously) for all communication from/to France, etc.

Do large companies use multiple public-private key pairs and if so, for what reason?

4 Answers 4

3

Websites use x509 certificates which uses public key cryptography (public private keypairs).

Even small companies have many different certificates, and many different public private key pairs. The idea is if one system is compromised and a private key is exposed, you wouldn't want to risk traffic on another system.

Think of it this way. Would a multinational company use the same lock with the same key on all their doors at all their facilities? No way! They have a different lock on every door.

There's so much to this topic, certificates, CAs, trust chains, etc. You may want to read up on how certificates and TLS works.

Companies will also use public key cryptography for logging onto computers, their email, and a myriad of other things.

3

Of course organisations use lots of different keys. Typically a separate key for each service, so each website, ssh server, backup server (and maybe client) etc would have its own key pair. Each employee might have one or more personal keys too, eg email encryption, ssh identity, disk encryption. And yes, key management can be a significant problem too, especially at corporate level. It can be fun even at personal level...

Extracting the private key from one system to use for something else is not a good idea, even assuming it's posssible. The private key has to be kept private so you genarally don't want copies elsewhere. Why would you even want to sign emails with your web TLS key? Keys take seconds to generate and the whole point of public key cryptography is each service and person has their own keys so you can authenticate who/what you're communicating with as well as keeping message content private. And of course the key is just one part of the certificate that goes into an identity eg email certs would have your email address, a server cert would have hostnames. They would each have extra info like usage, validity, signatures too.

The fact that I might have dozens of sites or services under example.com is nothing to do with reusing keys - that's down to the names on each individual certificate and the convenience of using DNS names which groups things together.

1

Yes, virtually every company uses many keys. The primary reason is to improve security, but there are business operational reasons for requiring this as well.

NIST has produced some very good documentation on security and security policies and practices. SP 800-57, section 5.2, Key Usage, has this recommendation:

In general, a single key shall be used for only one purpose (e.g., encryption, integrity authentication, key wrapping, random bit generation, or digital signatures). There are several reasons for this:

  1. The use of the same key for two different cryptographic processes may weaken the security provided by one or both of the processes.

  2. Limiting the use of a key limits the damage that could be done if the key is compromised.

  3. Some uses of keys interfere with each other. For example, consider a key pair used for both key transport and digital signatures. In this case, the private key is used as both a private key-transport key to decrypt the encrypted keys and as a private signature key to apply digital signatures. It may be necessary to retain the private key-transport key beyond the cryptoperiod of the corresponding public key-transport key in order to decrypt the encrypted keys needed to access encrypted data. On the other hand, the private signature key shall be destroyed at the expiration of its cryptoperiod to prevent its compromise (see Section 5.3.6). In this example, the longevity requirements for the private key-transport key and the private digital-signature key contradict each other.

A big business problem solved is that separate keys allow independent changes. If I use the same key for my email and web servers, they’re locked together. When my web server team needs to change their web server key, they can’t change it unless they can get the email team to change theirs at the same time. Getting teams to cooperate is not a technical problem, but it certainly can be a real-world people problem. This is a simplistic example, but the problems caused by shared keys are real. When there’s no business or technical reason to share a key, they shouldn’t be shared.

0

Adding to the other answers.

For a given domain, usually the same x509 certificate (and therefore same public/private keypair) is served to all clients, regardless of where traffic is coming from or how much traffic the website receives.

For example if you visit google.com, your browser will receive a certificate with the following fields (among others):

  • Serial Number: 0119f2b7106bbe6c
  • Subject: CN=*.google.com
  • Subject Alternative Name:

    DNS Name=*.google.com
    DNS Name=*.android.com
    DNS Name=*.appengine.google.com
    DNS Name=*.cloud.google.com
    DNS Name=*.g.co
    DNS Name=*.gcp.gvt2.com
    DNS Name=*.ggpht.cn
    DNS Name=*.google-analytics.com
    DNS Name=*.google.ca
    DNS Name=*.google.cl
    DNS Name=*.google.co.in
    DNS Name=*.google.co.jp
    DNS Name=*.google.co.uk
    DNS Name=*.google.com.ar
    DNS Name=*.google.com.au
    DNS Name=*.google.com.br
    DNS Name=*.google.com.co
    DNS Name=*.google.com.mx
    DNS Name=*.google.com.tr
    DNS Name=*.google.com.vn
    DNS Name=*.google.de
    DNS Name=*.google.es
    DNS Name=*.google.fr
    DNS Name=*.google.hu
    DNS Name=*.google.it
    DNS Name=*.google.nl
    DNS Name=*.google.pl
    DNS Name=*.google.pt
    DNS Name=*.googleadapis.com
    DNS Name=*.googleapis.cn
    DNS Name=*.googlecommerce.com
    DNS Name=*.googlevideo.com
    DNS Name=*.gstatic.cn
    DNS Name=*.gstatic.com
    DNS Name=*.gstaticcnapps.cn
    DNS Name=*.gvt1.com
    DNS Name=*.gvt2.com
    DNS Name=*.metric.gstatic.com
    DNS Name=*.urchin.com
    DNS Name=*.url.google.com
    DNS Name=*.youtube-nocookie.com
    DNS Name=*.youtube.com
    DNS Name=*.youtubeeducation.com
    DNS Name=*.youtubekids.com
    DNS Name=*.yt.be
    DNS Name=*.ytimg.com
    DNS Name=android.clients.google.com
    DNS Name=android.com
    DNS Name=developer.android.google.cn
    DNS Name=developers.android.google.cn
    DNS Name=g.co
    DNS Name=ggpht.cn
    DNS Name=goo.gl
    DNS Name=google-analytics.com
    DNS Name=google.com
    DNS Name=googlecommerce.com
    DNS Name=source.android.google.cn
    DNS Name=urchin.com
    DNS Name=www.goo.gl
    DNS Name=youtu.be
    DNS Name=youtube.com
    DNS Name=youtubeeducation.com
    DNS Name=youtubekids.com
    DNS Name=yt.be
    

As you can see in this case the exact same certificate can even be used with different domains. I can confirm that both www.google.com and www.youtube.com currently serve the same certificate (Serial number: 0119f2b7106bbe6c).

www.google.cn serves a different certificate though, maybe for security reasons.

You must log in to answer this question.

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