This may sound like a stupid question but seriously how are private keys kept private?
If you're someone like Google you have some huge number of servers to which the public can establish secure connections.
The *.google.com
private key is required in establishing every one of those connections.
Servers are presumably reaching the end of their life all the time and being disposed of (leading to the potential risk of leakage at that point of anything on them).
Modern data centers require very small numbers of people yet companies like Google are so huge that there's still a significant number of people with physical access to the servers.
These servers sit behind firewalls and run highly secured OSes but both routers and OSes may suffer zero-day exploits.
So it's fairly obvious that private keys can't be stored on a per server basis or on OS images retrieved on boot up (even if encrypted) or on per server smart cards.
Presumably companies don't discuss this too openly but are there any good overviews of how things work?
Is there some hardened bunker somewhere where just the initial asymmetric key element of establishing every connection is handled?
Presumably actually you need such bunkers per data center - I guess you don't want to lose an entire data center due to a losing your link to a remote key handling site.
Even duplicating the key across data centers sounds highly risky considering the value of a key like that for *.google.com
.
Am I missing something that makes key handling like this not quite so hard as it sounds to someone trying to think it through from scratch?