web-dev-qa-db-fra.com

Relation entre RSA, Diffie-Hellman Key Exchange, PKI et X.509?

Je m'embrouille avec RSA, Diffie-Hellman Key Exchange, PKI et X.509v3.

J'ai jeté un œil à l'algorithme mathématique de RSA, il ressemble à un algorithme de cryptage, non? Génération de clé publique et de clé privée, en utilisant pour le chiffrement et le déchiffrement ...

De plus, j'ai jeté un coup d'œil à l'algorithme mathématique de Diffie-Hellman, cela ressemble à un échange de clés, non? Chaque côté peut calculer la même clé en utilisant certains types d'algorithmes. Cela ne semble pas être un cryptage, non?

J'ai également jeté un œil à l'ICP, il y a quelque chose de nouveau qui est le CA et le certificat numérique. La clé publique et la clé privée sont également mentionnées.

Alors, quelle est la relation entre ces concepts? S'agit-il de 3 concepts séparés? Ou ils seront utilisés ensemble dans la réalité?

De plus, X.509 est-il la norme de PKI? L'ICP en soi n'est donc pas une norme?

Telles sont les questions que je confond depuis très longtemps. Merci à vous tous.

22
alcohol menthol

RSA est deux algorithmes, l'un pour le chiffrement asymétrique, l'autre pour les signatures numériques. Ils utilisent le même type de clés, ils partagent la même opération de base et ils sont tous deux appelés "RSA".

Diffie-Hellman est un algorithme d'échange de clés; vous pouvez le voir comme une sorte d'algorithme de chiffrement asymétrique où vous ne pouvez pas choisir ce que vous chiffrez. C'est très bien pour l'échange de clés, où vous voulez simplement obtenir un secret partagé essentiellement aléatoire entre deux personnes. Notez que la plupart des utilisations du chiffrement asymétrique RSA, dans la pratique, sont également des échanges de clés, par exemple en SSL/TLS: le client génère une valeur aléatoire, la chiffre avec la clé publique du serveur et l'envoie au serveur.

PKI est un concept. Il s'appuie sur la notion de certificat: un certificat est une affirmation de propriété de clé. Fondamentalement, un certificat est un objet qui contient une identité (un nom) et une clé publique, et l'objet est signé numériquement (par exemple avec RSA - l'algorithme de signature - ou ECDSA). Un certificat est validé en vérifiant cette signature. L'idée est que si je connais la clé publique de la personne qui a émis (signé) le certificat, je peux vérifier cette signature et ainsi avoir une certaine confiance dans le fait que la clé publique contenue dans le certificat appartient vraiment à l'entité désignée par le identité contenue dans le certificat.

Lorsque vous organisez les certificats de telle sorte qu'il existe une hiérarchie stricte, où les émetteurs de certificats sont appelés Autorités de certification et que vous vous émettez des certificats, avec une poignée d'autorités de certification supérieures appelées "Autorité de certification racine", alors cette structure globale est appelée Public Key Infrastructure, c'est-à-dire une PKI.

X.509 est une norme pour le format et le contenu des certificats. X.509 est plutôt ouvert quant aux algorithmes de signature qui seront utilisés pour signer les certificats, mais dans la pratique, 99% du temps, ce sera RSA.

34
Thomas Pornin