Exporter (0) Imprimer
Développer tout

Cryptographie, clés et certificats

Dernière mise à jour le 31 août 2004
Sur cette page

Objectifs Objectifs
S'applique à S'applique à
Clés et certificats Clés et certificats
Certificats numériques X.509 Certificats numériques X.509
Magasins de certificats Magasins de certificats
Cryptographie Cryptographie
Choix techniques Choix techniques
Cryptographie dans .NET Cryptographie dans .NET
Résumé Résumé

Objectifs

Ce module vous permet d'effectuer les opérations suivantes :

  • découvrir les principaux concepts liés à la cryptographie, aux clés et aux certificats ;

  • effectuer des recherches dans l'espace de noms System.Security.Cryptography.

S'applique à

Ce module s'applique aux produits et technologies suivants :

  • Windows Server 2000 SP3

  • Microsoft .NET Framework SP2

  • Microsoft SQL Server 2000 SP2

Clés et certificats

Le cryptage asymétrique utilise une paire de clés publique/privée. Les données cryptées à l'aide de la clé privée peuvent être décryptées uniquement avec la clé publique correspondante et inversement.

Les clés publiques sont généralement disponibles (comme leur nom l'indique). En revanche, une clé privée reste réservée à une personne particulière. Le mécanisme de distribution par lequel sont acheminées les clés publiques jusqu'aux utilisateurs est un certificat. Les certificats sont normalement signés par une Autorité de certification (AC), afin de vérifier que la clé publique provient du sujet déclarant avoir envoyé la clé publique. L'Autorité de certification est une entité de confiance reconnue mutuellement.

L'implémentation classique d'une certification numérique nécessite un processus de signature de certificat. Ce processus est illustré dans la figure 1.

Processus de certification numérique

Figure 1
Processus de certification numérique

Les opérations se déroulent de la façon suivante (voir Figure 1) :

  1. Alice envoie à une Autorité de certification une demande de certificat signée contenant son nom, sa clé publique et, éventuellement, des informations supplémentaires.

  2. L'Autorité de certification crée un message à partir de la demande d'Alice. L'Autorité de certification signe ce message de sa clé privée, en créant une signature distincte. L'Autorité de certification renvoie le message et la signature à Alice. La combinaison du message et de la signature forme le certificat d'Alice.

  3. Alice envoie son certificat à Bernard pour lui accorder un accès à sa clé publique.

  4. Bernard vérifie la signature du certificat, à l'aide de la clé publique de l'Autorité de certification. Si la signature est valide, il accepte la clé publique dans le certificat en tant que clé publique d'Alice.

Comme avec toutes les signatures numériques, tout destinataire disposant d'un accès à la clé publique de l'Autorité de certification peut déterminer si une Autorité de certification donnée a signé le certificat. Ce processus ne nécessite aucun accès à des informations secrètes. Dans le scénario précédent, nous considérions que Bernard disposait d'un accès à la clé publique de l'Autorité de certification. Bernard dispose d'un accès à cette clé s'il possède une copie du certificat de l'Autorité de certification qui contient cette clé publique.

Certificats numériques X.509

Les certificats numériques X.509 renferment non seulement un nom et une clé publique d'utilisateur, mais également d'autres informations sur l'utilisateur. Ces certificats jouent un rôle important dans la procédure numérique d'approbation. Ils permettent à l'Autorité de certification d'attribuer au destinataire d'un certificat un moyen d'approuver non seulement la clé publique du sujet du certificat, mais également les autres informations concernant celui-ci. Ces informations comprennent notamment une adresse de messagerie, une autorisation pour signer des documents d'une certaine valeur ou encore l'autorisation de devenir une Autorité de certification et de signer d'autres certificats.

Les certificats X.509, ainsi que de nombreux autres certificats, sont assortis d'une limite de validité dans le temps. Un certificat peut arriver à expiration et ne plus être valide. Une Autorité de certification peut révoquer un certificat pour différentes raisons. Pour gérer les révocations, l'Autorité de certification maintient et distribue une liste de certificats révoqués nommée Liste de révocation de certificats. Les utilisateurs réseau accèdent à cette liste pour déterminer la validité des certificats.

Magasins de certificats

Les certificats sont stockés dans des emplacements sûrs appelés magasins de certificats. Un magasin de certificats peut contenir des certificats, des listes de révocation de certificats et des listes de certificats de confiance. Chaque utilisateur dispose d'un magasin personnel (nommé « Mon Magasin de certificats ») où sont stockés ses certificats. Mon Magasin de certificats peut être implémenté de manière physique à plusieurs emplacements, y compris dans le Registre, sur un ordinateur local ou distant, un fichier du disque, une base de données, un service d'annuaire, un périphérique intelligent, etc.

Même si tous les certificats peuvent être stockés dans Mon Magasin de certificats, ce magasin doit être réservé aux certificats personnels de l'utilisateur (certificats utilisés pour la signature et le décryptage des messages de cet utilisateur).

En plus de Mon Magasin de certificats, Windows gère également les magasins de certificats suivants :

  • AC et RACINE. Ce magasin contient les certificats d'autorités de certification approuvées par l'utilisateur pour envoyer des certificats à des tiers. Un ensemble d'autorités de certification de confiance est fourni avec le système d'exploitation et d'autres peuvent être ajoutés par des administrateurs.

  • Autre. Ce magasin contient les certificats d'autres personnes avec lesquelles l'utilisateur échange des messages signés.

CryptoAPI fournit des fonctions de gestion de certificats. Ces API sont uniquement accessibles au moyen d'un code non géré. En outre, CAPICOM est une API COM pour CryptoAPI, accessible par l'intermédiaire de COM Interop.

Informations supplémentaires

Pour plus d'informations, consultez la section « Cryptography, CryptoAPI, and CAPICOM » (en anglais) sur MSDN (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/security/Security/cryptography_cryptoapi_and_capicom.asp).

Cryptographie

La cryptographie permet de bénéficier des éléments suivants :

  • Confidentialité. La confidentialité permet de garantir le caractère privé des données. Elle est généralement liée au cryptage. Les algorithmes de cryptage (qui font appel à des clés de cryptage) sont utilisés pour convertir du texte brut en texte chiffré. À l'inverse, les algorithmes de décryptage permettent de convertir ce texte chiffré en texte brut. Les algorithmes de cryptage symétrique utilisent une clé identique pour le cryptage et le décryptage, tandis que les algorithmes asymétriques utilisent une paire de clés publique/privée.

  • Intégrité des données. L'intégrité des données permet de garantir la protection des données contre toute modification accidentelle ou délibérée (malintentionnée). L'intégrité est généralement assurée par les codes ou les hachages d'authentification de message. Une valeur de hachage est une valeur numérique de longueur fixe provenant d'une séquence de données. Les valeurs de hachage servent à vérifier l'intégrité des données envoyées par l'intermédiaire de canaux non sécurisés. La valeur de hachage des données reçues est comparée avec celle des données envoyées pour déterminer si ces données ont été modifiées.

  • Authentification. L'authentification permet de garantir que les données proviennent d'une personne tierce précise. Elle est assurée à l'aide de certificats numériques. Les signatures numériques sont généralement appliquées aux valeurs de hachage, car leur taille est nettement moins importante que celle des données source qu'elles représentent.

Choix techniques

  • Utilisez un hachage si vous avez besoin d'un moyen de vérifier que les données n'ont pas été modifiées lors du transit.

  • Utilisez un hachage par clé pour prouver qu'une entité connaît le secret sans avoir à s'échanger continuellement ce secret, ou comme moyen de défense contre l'interception lors du transit en utilisant un hachage simple.

  • Utilisez le cryptage pour masquer des données lorsqu'elles sont envoyées à travers un moyen non sécurisé, ou bien quand les données deviennent persistantes.

  • Utilisez un certificat pour vérifier qu'il s'agit bien de la personne qui se déclare propriétaire de la clé publique.

  • Utilisez le cryptage symétrique pour accélérer le processus et lorsque les deux parties partagent la clé par avance.

  • Utilisez le cryptage asymétrique lorsque vous voulez échanger des données en toute sécurité via un moyen non sécurisé.

  • Utilisez une signature numérique pour utiliser l'authentification et la non-répudiation.

  • Faites appel à une valeur salt (nombre aléatoire généré de manière cryptée) pour vous défendre contre les attaques de dictionnaire.

Cryptographie dans .NET

L'espace de noms System.Security.Cryptography fournit des services de cryptage : codage et décodage sécurisés des données, hachage, création de nombres aléatoires et authentification de messages.

L'environnement .NET Framework fournit des implémentations de nombreux algorithmes de cryptographie standard. Ceux-ci peuvent être aisément étendus grâce à la hiérarchie d'héritage parfaitement définie, constituée de classes abstraites qui définissent les types d'algorithme de base (algorithmes symétriques, asymétriques et de hachage), ainsi que les classes d'algorithme.

Tableau 1 : Algorithmes pour lesquels l'environnement .NET Framework fournit des classes d'implémentation « prêtes à l'emploi ».

Algorithmes symétriques

Algorithmes asymétriques

Algorithmes de hachage

DES (Data Encryption Standard)

DSA (Digital Signature Algorithm)

HMAC SHA1 (Code d'authentification défini à partir du hachage à l'aide de l'algorithme de hachage SHA1)

TripleDES (Triple Data Encryption Standard)

RSA

MAC Triple DES (Code d'authentification de messages utilisant Triple DES)

Rijndael

 

MD5

RC2

 

SHA1, SHA256, SHA384, SHA512 (Algorithme de hachage sécurisé qui utilise différentes tailles de hachage)

Prise en charge de l'algorithme symétrique

L'environnement .NET offre les classes d'implémentation suivantes pour fournir des algorithmes de cryptage de clé secrète, et symétrique :

  • DESCryptoServiceProvider

  • RC2CryptoServiceProvider

  • RijndaelManaged

  • TripleDESCryptoServiceProvider

Remarque : les classes se terminant par « CryptoServiceProvider » sont des wrappers qui utilisent les services sous-jacents du fournisseur de services cryptographiques (CSP, cryptographic service provider) ; les classes qui finissent par « Managed » sont implémentées avec un code géré.

La figure 2 illustre la hiérarchie d'héritage adoptée par .NET Framework. La classe de base du type d'algorithme (par exemple, SymmetricAlgorithm) est abstraite. Un ensemble de classes d'algorithme abstraites provient de la classe de base de type abstrait. Les classes d'implémentation d'algorithme fournissent des implémentations concrètes de l'algorithme sélectionné : DES, Triple-DES, Rijndael et RC2, par exemple.

Hiérarchie d'héritage de classe cryptographique symétrique

Figure 2
Hiérarchie d'héritage de classe cryptographique symétrique

Prise en charge de l'algorithme asymétrique

L'environnement .NET fournit les algorithmes de cryptage (clé publique/privée) asymétrique suivants au moyen de la classe de base abstraite (System.Security.Crytography.AsymmetricAlgorithm) :

  • DSACryptoServiceProvider

  • RSACryptoServiceProvider

Ceux-ci servent à signer numériquement et à crypter les données. La figure 3 illustre la hiérarchie d'héritage.

Hiérarchie d'héritage de classe cryptographique asymétrique

Figure 3
Hiérarchie d'héritage de classe cryptographique asymétrique

Prise en charge de l'algorithme de hachage

L'environnement .NET fournit les algorithmes de hachage suivants :

  • SHA1, SHA256, SHA384, SHA512

  • MD5

  • HMACSHA (algorithme de hachage par clé)

  • MACTripleDES (algorithme de hachage par clé)

La figure 4 illustre la hiérarchie d'héritage pour les classes d'algorithme de hachage.

Hiérarchie d'héritage de classe cryptographique de hachage

Figure 4
Hiérarchie d'héritage de classe cryptographique de hachage

Résumé

La cryptographie constitue une technologie importante pour la construction d'applications Web sécurisées. Dans le cadre de cette annexe, nous avons abordé certains aspects essentiels des certificats et de la cryptographie. Nous avons présenté certaines des classes exposées par l'espace de noms System.Security.Cryptography, qui facilitent l'intégration des solutions de sécurité cryptées dans vos applications .NET.

Pour plus d'informations sur la cryptographie dans .NET Framework, recherchez la page intitulée « .NET Framework Cryptography Model » (en anglais) sur MSDN

Afficher:
© 2014 Microsoft