|
|
Publié sur 15/08/2023 10:21:16
|
|
|
|

Exigences : Au cours du processus de développement, vous pouvez souvent rencontrer certains scénarios de chiffrement et de déchiffrement, par exemple, l’authentification des e-mails peut transporter une chaîne chiffrée, et lorsque l’utilisateur clique sur le lien pour accéder à l’interface, le système peut déchiffrer normalement le contenu de la chaîne, réalisant ainsi la fonction d’authentification des e-mails.
ASP.NET Core propose des fonctionnalités de protection des données :La connexion hyperlientérée est visible.
Package principal
Les principaux paquets impliqués dans la protection des données sont les suivants, référencés selon les besoins :
- Microsoft.AspNetCore.DataProtection.Abstractions standard. Dénomination des paquets composants de la couche d’abstraction NET Core. Il inclut les principaux services d’interface tels qu’IDataProtectionProvider et IDataProtector.
- Microsoft.AspNetCore.DataProtection, incluant les opérations cryptographiques principales, la gestion des clés, la configuration et l’extensibilité.
- Extension Microsoft.AspNetCore.DataProtection.Extensions. Fournit une méthode d’usine pour créer des instances et une méthode d’extension de stockage pour les clés. Ce package est utilisé en mode non-DI.
- Microsoft.AspNetCore.DataProtection.SystemWeb implémente <machineKey>la compatibilité avec les mécanismes de chiffrement et de déchiffrement de ASP.NET 4.x.
- Microsoft.AspNetCore.Cryptography.KeyDerivation fournit une implémentation de la routine de hachage des mots de passe PBKDF2. Utilisez-le quand vous avez besoin d’utiliser le chiffrement par hachage.
IDataProtectionProvider vs IDataProtector
IDataProtectionProvider est basé sur le modèle Provider de Microsoft et sert à fournir des politiques de création d’instances. Créez un objet IDataProtector en appelant la méthode IDataProtectionProvider.CreateProtector(purpose). IDataProtector est un service responsable du chiffrement et du déchiffrement, qui propose principalement deux types de méthodes : protect et unprotect (chaque type comporte de nombreuses méthodes de surcharge et d’extension). On comprend simplement que protect est utilisé pour le chiffrement et unprotect pour le déchiffrement. Le paramètre Create de la méthode IDataProtectionProvider est une chaîne qui fournit une fonctionnalité d’isolation. Les IDataProtectors créés avec des chaînes non passables obtiendront des résultats de chiffrement différents même s’ils chiffrent le même objet. IDataProtector lui-même est également un IDataProtectionProvider implicite, qui fournit également la méthode CreateProtector(purpose). Cela signifie qu’il peut être facilement mis en œuvreMode application multi-locataire。
Voici quelques points à garder en tête :
Instances IDataProtectionProvider et IDataProtectorSécurité du filetageCible. La méthode unprotect consiste à informer l’appelant que le déchiffrement a échoué en lançant une exception. La classe d’exception est CryptographicException.
ASP.NET Core est une protection des données simple à utiliser
Une nouvelle interface est ajoutée pour chiffrer et déchiffrer les données, et le code est le suivant :
Le test est le suivant :
IDataProtectionProvider est un modèle unique avec le code suivant :La connexion hyperlientérée est visible.
Gestion clé
Si le profil utilisateur est disponible, la clé est conservée pour%LOCALAPPDATA %\ASP.NET\DataProtection-Keysdossier. Si le système d’exploitation est Windows, la clé est chiffrée au repos à l’aide de DPAPI. Comme montré ci-dessous :
Vie clé
Par défaut, la cléLe cycle de vie est de 90 jours。 Lorsque la clé expire, l’application génère automatiquement une nouvelle clé et définit la nouvelle clé comme clé active. Tant que les clés désactivées restent sur le système, votre application peut déchiffrer toutes les données protégées par elles. Pour plus d’informations, voir Gestion des clés.La connexion hyperlientérée est visible.
Algorithme par défaut
Les algorithmes de protection de charge par défaut utilisés sont AES-256-CBC (pour la confidentialité) et HMACSHA256 (pour l’authenticité). La clé maîtresse de 512 bits, qui change tous les 90 jours, est utilisée pour dériver deux sous-clés pour ces algorithmes en fonction de chaque charge utile.
ASP.NET fournisseur de stockage clé dans Core
Système de fichiers : PersistKeysToFileSystem Azure Storage : PersistKeysToAzureBlobStorage, qui nécessite référence : Azure.Extensions.AspNetCore.DataProtection.Blobs Stockage Redis : PersistKeysToStackExchangeRedis, référence requise : Microsoft.AspNetCore.DataProtection.StackExchangeRedis
Référence:La connexion hyperlientérée est visible.
Clusteré et distribué
Si la clé serveur est incohérente, par exemple : chiffrement du serveur A et déchiffrement du serveur B, une exception sera lancée (comme montré dans la figure ci-dessous), et la même clé devra être déployée.
Configurez la même clé comme suit :
Une fois le programme en cours d’exécution, il génère automatiquement un fichier clé *.xml sous le dossier publish_itsvse, gardez ce fichier cohérent sous différents serveurs ! Comme montré ci-dessous :
ASP.NET Configuration de la protection du cœur
ASP.NET CORE offre un support API riche, la persistance des mots de passe, la configuration et des fonctions de personnalisation.
- PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Scénario de stockage cloud Azure.
- PersistKeysToFileSystem。 Système de stockage local de systèmes de fichiers qui enregistre les algorithmes de chiffrement, les clés et les dépendances.
- ProtectKeysWith*。 Le chiffrement est assuré par des extensions de cette méthode de nommage. Par exemple, ProtectKeysWithCertificate
- SetDefaultKeyLifetime。 Réglez la durée de vie de la clé à 90 jours par défaut.
- SetApplicationName。 Définissez le nom de l’application. Par défaut, les mécanismes de protection des données sont absolument isolés de chaque application. Le partage de clés entre applications peut être réalisé en définissant le même nom d’application.
- DisableAutomaticKeyGeneration。 Empêcher la clé d’être automatiquement annulée. Souvent, nous ne voulons pas vraiment que les mots de passe changent ou, dans un service de cluster, nous avons un service dédié responsable du retour en arrière des mises à jour clés, et les autres charges utiles doivent simplement les récupérer depuis un espace partagé.
- UseCryptographicAlgorithms。 Utilisez des algorithmes personnalisés de chiffrement et de déchiffrement
Référence:La connexion hyperlientérée est visible.
|
Précédent:Utilisez PowerShell pour générer l’élément <machineKey>Prochain:Comparez Tailscale, ZeroTier, WireGuard, OmniEdge et Ngrok pour des solutions de géo-réseautage
|