Dernière mise à jour le 31 août 2004
Sur cette page
Objectifs
S'applique à
Résumé
Points à connaître
Créer une bibliothèque de classes Visual C#
Nom fort de l'assembly (facultatif)
Ressources supplémentaires
Objectifs
Ce module vous permet d'effectuer l'opération suivante :
S'applique à
Ce module s'applique aux produits et technologies suivants :
-
Microsoft® Windows® XP ou Windows 2000 Server (avec le Service Pack 3) et systèmes d'exploitation ultérieurs
-
Microsoft DPAPI (Data Protection Application Programming Interface)
-
Microsoft .NET Framework version 1.0 (avec le Service Pack 2) et versions ultérieures
-
Microsoft Visual C#® .NET
Résumé
Les applications Web doivent souvent stocker dans les fichiers de configuration d'application des données de sécurité sensibles, telles que les chaînes de connexion de base de données et des informations d'identification de compte de service. Pour des raisons de sécurité, ces éléments ne doivent jamais être stockés sous forme de texte brut. Ces informations doivent toujours être cryptées avant leur stockage.
Ce module explique comment créer une bibliothèque de classes gérées qui encapsule les appels vers DPAPI (Data Protection API) pour le cryptage et le décryptage de données à l'aide des magasins de clés d'ordinateurs ou d'utilisateurs. Cette bibliothèque peut ensuite être utilisée à partir d'autres applications gérées telles que les applications Web ASP.NET, les services Web et les applications Microsoft Enterprise Services.
Points à connaître
Avant d'utiliser ce module, vous devez tenir compte des points suivants :
-
Le système d'exploitation Windows 2000 et les systèmes d'exploitation ultérieurs fournissent l'API Win32® Data Protection (DPAPI) pour le cryptage et le décryptage des données.
-
L'interface DPAPI fait partie de l'interface Crypto API (Cryptography API) et est implémentée dans crypt32.dll. Elle est constituée de deux méthodes, CryptProtectData et CryptUnprotectData.
-
DPAPI est d'autant plus utile qu'elle permet de gommer le problème de gestion des clés inhérent aux applications qui font appel à la cryptographie. Bien que le cryptage garantisse la sécurité des données, vous devez effectuer des étapes supplémentaires pour garantir la sécurité de la clé. DPAPI utilise le mot de passe du compte d'utilisateur associé au code chargé d'appeler les fonctions DPAPI pour extraire la clé de cryptage. Par conséquent, c'est le système d'exploitation (et non l'application) qui gère la clé.
-
DPAPI peut fonctionner avec le magasin de l'ordinateur ou le magasin d'utilisateurs (qui nécessite un profil d'utilisateur chargé). DPAPI fait par défaut appel au magasin d'utilisateurs, même s'il est possible d'indiquer que le magasin de l'ordinateur peut être adopté en transmettant l'indicateur CRYPTPROTECT_LOCAL_MACHINE aux fonctions DPAPI.
-
La méthode du profil d'utilisateur permet de faire appel à une couche de sécurité supplémentaire, car elle limite à certaines personnes l'accès au secret. Seul l'utilisateur qui crypte les données peut les décrypter. Cependant, l'emploi du profil d'utilisateur nécessite un effort de développement supplémentaire lorsque l'interface DPAPI est exploitée à partir d'une application Web ASP.NET. Vous devrez en effet réaliser des opérations explicites pour charger et décharger les profils d'utilisateurs (ASP.NET ne charge pas automatiquement les profils d'utilisateurs).
-
La méthode du magasin de l'ordinateur est plus simple à développer, car elle ne nécessite pas de gestion des profils d'utilisateurs. Toutefois, à moins qu'un paramètre d'entropie supplémentaire ne soit défini, cette méthode est moins sûre car tous les utilisateurs de l'ordinateur peuvent décrypter les données (l'entropie est une valeur aléatoire conçue pour compliquer le déchiffrage du secret). L'utilisation d'un paramètre d'entropie supplémentaire présente toutefois un inconvénient. Ce paramètre doit en effet être stocké de manière sécurisée par l'application, ce qui complique la gestion de clés.
Remarque : si vous utilisez DPAPI avec le magasin de l'ordinateur, la chaîne cryptée est associée à un ordinateur particulier et vous devez par conséquent générer les données cryptées sur chaque ordinateur. Ne copiez pas les données cryptées sur plusieurs ordinateurs organisés en ferme ou en cluster.
Si vous utilisez DPAPI avec le magasin d'utilisateurs, vous pouvez décrypter les données sur tous les ordinateurs associés à un profil d'utilisateur itinérant.
Créer une bibliothèque de classes Visual C#
Cette procédure permet de créer une bibliothèque de classes Visual C# qui met à disposition des méthodes de cryptage et de décryptage. Les appels sont encapsulés vers les fonctions Win32 DPAPI.
Nom fort de l'assembly (facultatif)
Si la bibliothèque de classes DPAPI gérée doit être nommée par une application Microsoft Enterprise Services (avec un nom fort), alors la bibliothèque de classes DPAPI doit également posséder un nom fort. Cette procédure permet de créer un nom fort pour la bibliothèque de classes.
Si la bibliothèque de classes DPAPI gérée doit être directement nommée à partir d'une application Web ASP.NET (avec un nom fort), vous n'avez pas besoin d'effectuer cette procédure.
Ressources supplémentaires
Pour plus d'informations sur l'utilisation de la bibliothèque créée dans ce module, consultez les modules suivants :
-
« Procédure : Utiliser DPAPI (magasin de l'ordinateur) à partir de ASP.NET » dans ce guide.
-
« Procédure : Utiliser DPAPI (magasin d'utilisateurs) à partir de ASP.NET avec les services Microsoft Enterprise Services » dans ce guide.