Rejoignez Keyfactor à la RSA Conference™ 2024 | du 6 au 9 mai | En savoir plus

  • Accueil
  • Blog
  • PKI Guide d'introduction pour les ingénieurs Software

PKI Guide d'introduction pour les ingénieurs Software

PKI

En tant que vice-président du développement de Software à Keyfactor, il m'incombe de discuter avec les candidats et les ingénieurs nouvellement embauchés qui rejoignent les rangs de notre équipe en pleine croissance (petite astuce : vous pouvez toujours consulter notre site pour les postes à pourvoir). Mais je ne suis pas là pour vous vendre Keyfactor, je suis là pour vous parler de la partie la plus difficile de mon travail - et ce n'est pas le développement de software . Le plus grand défi consiste à comprendre les concepts de base de l'infrastructure à clé publique (PKI).

La cryptographie, et en particulier PKI, est un domaine vaste et incroyablement complexe. Certains technologues y consacrent toute leur carrière. En tant que tel, il n'est pas attendu (ni même possible) qu'un ingénieur de software connaisse bien ces concepts, mais une compréhension de base peut s'avérer très utile.

Que vous travailliez directement avec PKI ou non, tous les ingénieurs de software s'appuient sur la cryptographie tout au long du processus de construction et de publication. Si vous travaillez avec PKI ou si vous développez des solutions cryptographiques, il est particulièrement important de comprendre non seulement les outils et les applications que vous utilisez pour créer et exécuter software, mais aussi les technologies qui vous sont probablement moins familières.

J'ai créé l'introduction suivante pour donner aux ingénieurs de software une idée des sujets importants couramment rencontrés dans le processus de développement. Cette liste et ses descriptions sont brèves, et c'est intentionnel. Il s'agit d'un guide de démarrage rapide qui vous aidera à vous orienter dans le monde complexe, mais passionnant et en pleine expansion de PKI et de la cryptographie.

Cryptographie

Quels sont les principaux objectifs de la cryptographie ?

  • Confidentialité : protège la confidentialité (ou le secret) des données.
  • Intégrité : garantit que les données ou le code n'ont pas été altérés.
  • Authentification : vérification de l'identité/authenticité d'un utilisateur, d'un appareil ou d'une application.

 

Quels sont les différents types de cryptographie ?

  • Chiffrement symétrique : utilise la même clé cryptographique pour chiffrer et déchiffrer les données. L'avantage est que les processus peuvent crypter et décrypter efficacement de grandes quantités de données, puisqu'ils utilisent une seule clé et des algorithmes relativement simples (par exemple DES, 3DES, AES). Le problème est que toutes les parties concernées doivent échanger la clé utilisée pour crypter et décrypter les données, ce qui peut entraîner des insécurités évidentes.
  • Cryptage asymétrique : il utilise non pas une clé, mais une paire de clés différentes, mais mathématiquement liées : une clé privée et une clé publique. La clé publique utilisée pour crypter les données est accessible à tous, tandis que la clé privée n'est conservée que par l'utilisateur ou la machine qui a généré la paire de clés, et est utilisée pour le décryptage. Cela signifie que vous n'avez pas à vous soucier du partage des clés publiques sur l'internet.
    Les algorithmes asymétriques sont beaucoup plus complexes et donc plus sûrs (par exemple RSA, ECC, Diffie-Hellman). Toutefois, cela signifie également qu'ils sont plus lents que le cryptage symétrique et qu'ils nécessitent une plus grande puissance de traitement.

 

Comment les cryptographies symétrique et asymétrique sont-elles utilisées ensemble ?

Un scénario courant est celui de TLS, un protocole utilisé pour crypter les communications sur un réseau. Au cours d'une poignée de main TLS , les clés asymétriques authentifient d'abord la connexion entre le client (clé publique) et le serveur (clé privée). À ce stade, des clés symétriques, appelées "clés de session", sont utilisées pour crypter les communications. Chaque nouvelle session commence par une nouvelle poignée de main TLS et de nouvelles clés de session.

Qu'est-ce qu'un hachage ?

Un hachage est un algorithme à sens unique qui convertit une valeur en une autre, masquant les données d'origine par un résultat mathématique - appelé "condensé". Le hachage est couramment utilisé pour s'assurer que les données n'ont pas été modifiées depuis la création du hachage. Les algorithmes les plus courants sont MD5, SHA-1 et SHA-2.

Qu'est-ce qu'une signature numérique ?

Une signature numérique vérifie l'authenticité d'un message, d'un fichier ou d'un exécutable à l'aide d'un identifiant numérique unique (et d'une clé de signature). Par exemple, la clé privée d'un utilisateur peut être utilisée pour signer numériquement un document et vérifier l'identité de l'expéditeur. L'utilisateur ne peut alors pas nier qu'il a signé le document, ce que l'on appelle la non-répudiation.

Infrastructure à clé publique

Qu'est-ce que l'infrastructure à clé publique (PKI) ?

L'infrastructure à clé publique (PKI) est un ensemble de personnes, de systèmes, de politiques et de procédures qui soutiennent la distribution et l'utilisation de clés publiques et de certificats numériques. Les organisations mettent en œuvre une PKI pour permettre l'utilisation du cryptage, de l'authentification et des signatures numériques pour diverses applications.

Qu'est-ce qu'un certificat numérique ?

Un certificat numérique, également appelé certificat de clé publique, est un document électronique utilisé pour lier une clé publique à son propriétaire. Un certificat est un identifiant unique pour les utilisateurs, les appareils, les applications et les services, qui comprend des informations sur l'identité et les autorisations de son propriétaire, telles que :

  • Numéro de série du certificat
  • Nom de l'émetteur du certificat
  • Clé publique
  • Algorithmes pris en charge
  • Période de validité du certificat

 

Quelles sont les propriétés d'un certificat numérique ?

Propriétés importantes/couramment utilisées

  • Thumbprint (empreinte) : Un hachage du certificat - l'empreinte est utilisée comme identifiant unique pour le certificat.
  • Sujet : Nom distinctif (DN) du certificat (contient des champs tels que CN, O, OU, etc.)
  • Émetteur : l'entité qui a délivré le certificat.
  • Nom alternatif du sujet (SAN) : Extension contenant des informations supplémentaires sur le sujet (désormais requise par Google Chrome).
  • Utilisation de la clé : Définit ce pour quoi le certificat peut être utilisé, y compris la signature numérique, le chiffrement de la clé, la signature du certificat, la signature de la CRL et la non-répudiation.
  • Enhanced Key Usage : Extension supplémentaire pour une définition plus précise de l'utilisation des clés, y compris IPSec, TLS web server authentication, TLS web client authentication, et digital signature.
  • Version : La version du certificat X.509 (il existe actuellement 3 versions)
  • Valide de/à : Période pendant laquelle le certificat est considéré comme valide
  • Points de distribution des LCR : L'emplacement de la liste de révocation des certificats (CRL) associée au certificat.

 

Autres propriétés communes

  • Numéro de série : nombre entier attribué au certificat par l'autorité de certification.
  • Algorithme de signature : L'algorithme cryptographique utilisé par l'autorité de certification pour signer le certificat.
  • Clé publique : Clé publique utilisée par le certificat pour l'usage auquel il est destiné
  • Subject Key Identifier : Permet d'identifier les certificats qui contiennent une clé publique particulière (provenant de la RSC).

 

Qu'est-ce qu'une autorité de certification (AC) ?

Une autorité de certification (AC) est une entité de confiance qui émet des certificats numériques.

Qu'est-ce qu'un certificat racine ?

Au cœur de PKI se trouve un certificat racine et la clé privée qui lui est associée. Il est utilisé pour signer tous les certificats émis par l'autorité de certification de plus haut niveau (racine). Un certificat racine de confiance est un certificat dont la confiance est implicite.

Qu'est-ce qu'un certificat d'entité finale ?

Tout certificat qui ne peut être utilisé pour signer d'autres certificats. Par exemple, les certificats de serveur et de client SSL/TLS , les certificats de signature de code et les certificats qualifiés sont tous des certificats d'entité finale.

Qu'est-ce qu'une liste de révocation de certificats (CRL) ?

Une liste de révocation de certificats (CRL) est une liste de certificats numériques qui ont été révoqués par l'autorité de certification émettrice avant la date d'expiration prévue. Il s'agit essentiellement d'une liste noire qui permet aux utilisateurs, aux appareils ou aux applications de vérifier si un certificat est valide et digne de confiance. La CRL est publiée à un endroit, appelé point de distribution de la CRL (CDP), accessible à toutes les entités qui ont besoin de vérifier l'état de la révocation.

Qu'est-ce que le protocole d'état des certificats en ligne (OCSP) ?

Le problème est que les LCR nécessitent le téléchargement d'une liste de tous les certificats et la vérification de leur statut de révocation. L'OCSP est une alternative à l'utilisation des CRL. Au lieu de devoir télécharger la liste complète des certificats révoqués, il suffit de soumettre une demande au serveur de l'autorité de certification pour obtenir l'état actuel du certificat.

En quoi l'OCSP diffère-t-il de la CRL ?

Une réponse OCSP contient moins de données qu'une CRL classique, ce qui réduit la charge sur les ressources du réseau et du client. Elle contient également moins de données à analyser, de sorte que les bibliothèques côté client peuvent être moins complexes.

Quelles sont les lacunes de l'OCSP ?

L'un des problèmes de l'OCSP est qu'il exige beaucoup de ressources de la part d'une autorité de certification dans les environnements à fort volume. Il peut également compromettre la confidentialité des utilisateurs et réduire les performances de navigation. Il est également problématique que le répondeur OCSP ne puisse pas communiquer avec l'autorité de certification associée pour quelque raison que ce soit.

Qu'est-ce que l'agrafage OCSP ?

L'agrafage OCSP résout certains de ces problèmes. Le serveur HTTPS interroge régulièrement le serveur OCSP pour connaître l'état de révocation de son (ses) certificat(s) et envoie la réponse avec le certificat au client au cours de la poignée de main TLS . Les réponses ne peuvent pas être falsifiées, puisqu'elles doivent être signées par l'autorité de certification associée.

Qu'est-ce qu'un fournisseur de services cryptographiques (FSC) ?

Une CSP est une CryptoAPI utilisée pour créer, stocker et accéder à des clés cryptographiques, qui peuvent être symétriques ou asymétriques. Les CSP sont essentiels à la mise en œuvre sécurisée de la fonctionnalité cryptographique pour de nombreuses applications, notamment les services de certificats Active Directory (ADCS) et l'API d'enrôlement des certificats.

Qu'est-ce qu'un fournisseur de services de stockage de clés (KSP) ?

Une KSP est la prochaine génération de CSP, basée sur Cryptography API : Next Generation (CNG). Il peut être utilisé pour créer, supprimer, exporter et stocker des clés pour des cas d'utilisation tels que le chiffrement asymétrique et la signature.

Que sont les normes de cryptographie à clé publique (PKCS) ?

En cryptographie, PKCS est un ensemble de normes largement acceptées, définies et publiées par RSA Security LLC pour promouvoir l'utilisation de techniques de cryptographie standard. Parmi ces normes, on peut citer

  • PKCS 7 : Cryptographic Message Syntax (CMS) est la norme spécifique utilisée pour la génération de certificats numériques par un PKI. Elle sert également de base à la norme S/MIME.
  • PKCS 10 : la norme Cryptographic Signing Request (CSR) est le format des messages envoyés à l'autorité de certification (CA) pour demander un certificat numérique.
  • PKCS 11 : l'interface de jeton cryptographique, également connue sous le nom de Cryptoki, est une API utilisée pour créer et manipuler des jetons cryptographiques, des modules de sécurité hardware (HSM) et des cartes à puce.
  • PKCS 12 : définit un format de fichier utilisé pour stocker les clés privées avec leurs certificats de clé publique. PFX est l'implémentation de cette norme par Microsoft.

 

Découvrez comment PKI s'intègre dans DevOps dans notre dernier eBook : Comment activer DevSecOps avec l'automatisation du cycle de vie des certificats.