web-dev-qa-db-fra.com

Comment les clés privées sont-elles gardées privées?

Cela peut sembler une question stupide, mais comment les clés privées sont-elles gardées privées?

Si vous êtes quelqu'un comme Google, vous disposez d'un grand nombre de serveurs auxquels le public peut établir des connexions sécurisées.

Le *.google.com une clé privée est requise pour établir chacune de ces connexions.

Les serveurs atteignent vraisemblablement la fin de leur vie tout le temps et sont éliminés (ce qui entraîne un risque potentiel de fuite à ce stade de quoi que ce soit sur eux).

Les centres de données modernes nécessitent un très petit nombre de personnes, mais les entreprises comme Google sont si énormes qu'il y a toujours un nombre important de personnes ayant un accès physique aux serveurs.

Ces serveurs sont assis derrière des pare-feu et exécutent des systèmes d'exploitation hautement sécurisés, mais les routeurs et les systèmes d'exploitation peuvent subir des exploits du jour zéro.

Il est donc assez évident que les clés privées ne peuvent pas être stockées par serveur ou sur des images de système d'exploitation récupérées au démarrage (même si elles sont cryptées) ou sur des cartes à puce par serveur.

Vraisemblablement, les entreprises n'en discutent pas trop ouvertement, mais existe-t-il de bonnes vues d'ensemble de la façon dont les choses fonctionnent?

Existe-t-il un bunker renforcé quelque part où est géré l'élément clé asymétrique initial pour établir chaque connexion?

Vraisemblablement, vous avez réellement besoin de ces bunkers par centre de données - je suppose que vous ne voulez pas perdre un centre de données complet en raison de la perte de votre lien vers un site de manipulation de clés à distance.

Même la duplication de la clé entre les centres de données semble très risquée compte tenu de la valeur d'une clé comme celle-ci pour *.google.com.

Suis-je en train de manquer quelque chose qui rend la manipulation des touches comme celle-ci pas si difficile que cela puisse paraître à quelqu'un qui essaie de réfléchir à partir de zéro?

96
George Hawkins

Premièrement, le chiffrement se termine souvent sur le périmètre par une infrastructure dédiée au déchargement du déchiffrement SSL. Il est beaucoup plus facile à gérer lorsque vous ne maintenez un niveau élevé de sécurité des clés que pour un petit groupe (proportionnellement) de serveurs dédiés à ce rôle. Le reste de vos serveurs d'applications classiques peut fonctionner comme d'habitude sans se soucier de la manipulation de ces clés.

Deuxièmement, leurs clés seraient presque certainement stockées via un Hardware Security Module (HSM). Ce sont des périphériques matériels dédiés avec un processeur conçu pour maintenir la sécurité et être efficace pour effectuer la cryptographie.

Enfin, Google a son propre certificat CA intermédiaire qu'il peut utiliser pour signer ses propres certificats feuilles. Cela leur permet d'utiliser des certificats dont l'expiration est beaucoup plus courte que la normale, ce qui réduit quelque peu le risque de compromission d'une clé. La clé CA réelle peut être conservée sous clé dans un bunker à air et accessible uniquement lorsqu'elle doit signer un certificat de feuille à court terme.

En se souvenant également qu'une autorité de certification n'a pas besoin de la clé privée feuille pour signer un certificat, elle peut générer une clé privée qui ne laisse jamais un HSM sur site dans un centre de données distant, puis envoyer la clé publique/CSR à l'autorité de certification pour signature. Ils peuvent même générer une clé privée unique pour chaque périphérique HSM, de sorte qu'une clé n'a jamais à quitter le périphérique qui l'a générée.

Par exemple, voici un écran d'impression d'un certificat Google actuel:

enter image description here

Vous remarquerez que le certificat n'est valable que 3 mois, ce qui est nettement plus court que la plupart.


Edit: Google décrit en fait leurs politiques en détail ici .

Dans l'ICP de Google, un abonné est une personne ou une organisation capable d'utiliser et autorisée à utiliser la clé privée qui correspond à la clé publique répertoriée dans un certificat

...

Les serveurs Google Internet Authority sont situés à l'intérieur d'une armoire ou d'une cage verrouillée dans une salle de serveurs verrouillée. L'accès à la salle des serveurs est contrôlé par des lecteurs de badges. Les clés privées de Google Internet Authority sont stockées dans des modules de sécurité matériels qui sont FIPS 140-2 Level 2 that sont physiquement inviolables et inviolables.

...

Les paires de clés d'abonné sont générées (i) par l'abonné par un logiciel fourni par son appareil/système d'exploitation, ou (ii) par un membre autorisé des informations de Google Équipe de sécurité.

...

Les abonnés fournissent leur clé publique à Google pour la certification via une demande de signature de certificat PKCS # 10. La méthode de transfert préférée pour l'envoi de ces informations est HTTP sur SSL (Secure Sockets Layer).

Fondamentalement, c'est exactement comment fonctionne une autorité de certification régulière, sauf que tout est effectué en interne au sein de Google.

81
thexacre