|
|
Geplaatst op 15-08-2023 10:21:16
|
|
|
|

Vereisten: Tijdens het ontwikkelproces kunt u vaak enkele encryptie- en decryptiescenario's tegenkomen, bijvoorbeeld kan e-mailauthenticatie een versleutelde string dragen, en wanneer de gebruiker op de link klikt om naar de interface te springen, kan het systeem de inhoud van de string normaal ontsleutelen en zo de e-mailauthenticatiefunctie realiseren.
ASP.NET Core biedt gegevensbeschermingsfuncties:De hyperlink-login is zichtbaar.
Hoofdpakket
De belangrijkste pakketten die bij gegevensbescherming betrokken zijn, zijn als volgt, die indien nodig worden verwezen:
- Microsoft.AspNetCore.DataProtection.Abstractions standaard. NET CORE-componentenbenaming van abstractielaag-pakketten. Het omvat belangrijke interfacediensten zoals IDataProtectionProvider en IDataProtector.
- Microsoft.AspNetCore.DataProtection, inclusief kern cryptografische operaties, sleutelbeheer, configuratie en uitbreidbaarheid.
- Microsoft.AspNetCore.DataProtection.Extensions extensie. Biedt een fabrieksmethode voor het creëren van instanties en een opslagextensiemethode voor sleutels. Dit pakket wordt gebruikt in niet-DI-modus.
- Microsoft.AspNetCore.DataProtection.SystemWeb <machineKey>implementeert compatibiliteit met de encryptie- en ontsleutelingsmechanismen in ASP.NET 4.x.
- Microsoft.AspNetCore.Cryptography.KeyDerivation biedt een implementatie van de PBKDF2 wachtwoord-hashingroutine. Gebruik het wanneer je hash-encryptie nodig hebt.
IDataProtectionProvider vs IDataProtector
IDataProtectionProvider is gebaseerd op het Provider-model van Microsoft en wordt gebruikt om beleidsregels te bieden voor het aanmaken van instanties. Maak een IDataProtector-object aan door de IDataProtectionProvider.CreateProtector(purpose)-methode aan te roepen. IDataProtector is een dienst die verantwoordelijk is voor encryptie en encryptie, die voornamelijk twee soorten methoden biedt: beschermen en ontbeschermen (elk type kent veel overbelasting- en uitbreidingsmethoden). Eenvoudige opvatting is dat protect wordt gebruikt voor encryptie en unprotect voor decryptie. De parameter de Create-methode van IDataProtectionProvider is een string die isolatiefunctionaliteit biedt. IDataProtectors die zijn gemaakt met niet-passable strings krijgen verschillende encryptieresultaten, zelfs als ze hetzelfde object versleutelen. IDataProtector zelf is ook een impliciete IDataProtectionProvider, die ook de CreateProtector(purpose)-methode biedt. Dit betekent dat het eenvoudig geïmplementeerd kan wordenMulti-tenant applicatiemodus。
Hier zijn een paar dingen om in gedachten te houden:
IDataProtectionProvider- en IDataProtector-instantiesSchroefdraadveiligheidDoel. De unprotect-methode is om de aanroeper te informeren dat de ontsleuteling is mislukt door een uitzondering te gooien. De uitzonderingsklasse is CryptographicException.
ASP.NET Core is eenvoudig te gebruiken gegevensbescherming
Er wordt een nieuwe interface toegevoegd om data te versleutelen en te ontsleutelen, en de code is als volgt:
De test is als volgt:
IDataProtectionProvider is een singleton-patroon met de volgende code:De hyperlink-login is zichtbaar.
Sleutelbeheer
Als het gebruikersprofiel beschikbaar is, wordt de sleutel behouden om%LOCALAPPDATA%\ASP.NET\DataProtection-Keysmap. Als het besturingssysteem Windows is, wordt de sleutel in rust versleuteld met DPAPI. Zoals hieronder getoond:
Belangrijke leven
Standaard is de sleutelDe levenscyclus is 90 dagen。 Wanneer de sleutel verloopt, genereert de applicatie automatisch een nieuwe sleutel en stelt deze in als de actieve sleutel. Zolang de gedeactiveerde sleutels op het systeem blijven, kan je applicatie alle door hen beschermde gegevens ontsleutelen. Voor meer informatie, zie Key Management.De hyperlink-login is zichtbaar.
Standaardalgoritme
De standaard belastingbeschermingsalgoritmen zijn AES-256-CBC (voor vertrouwelijkheid) en HMACSHA256 (voor authenticiteit). De 512-bits hoofdsleutel, die elke 90 dagen verandert, wordt gebruikt om twee subsleutels voor deze algoritmen af te leiden op basis van elke payload.
ASP.NET sleutelopslagprovider in Core
Bestandssysteem: PersistKeysToFileSystem Azure Storage: PersistKeysToAzureBlobStorage, wat referentie: Azure.Extensions.AspNetCore.DataProtection.Blobs vereist Redis opslag: PersistKeysToStackExchangeRedis, referentie vereist: Microsoft.AspNetCore.DataProtection.StackExchangeRedis
Referentie:De hyperlink-login is zichtbaar.
Geclusterd en verspreid
Als de serversleutel inconsistent is, bijvoorbeeld: server A-encryptie en server B-decryptie, wordt een uitzondering gegooid (zoals weergegeven in de onderstaande figuur), en moet dezelfde sleutel worden ingezet.
Configureer dezelfde sleutel als volgt:
Zodra het programma draait, genereert het automatisch een key-*.xml key-bestand onder de map publish_itsvse, houd dit bestand consistent op verschillende servers! Zoals hieronder getoond:
ASP.NET Kernbeschermingsconfiguratie
ASP.NET CORE biedt uitgebreide API-ondersteuning, wachtwoordpersistentie, configuratie en aanpassingsmogelijkheden.
- PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Azure cloud storage scenario.
- PersistKeysToFileSystem。 Lokaal bestandssysteemopslagschema dat encryptie-algoritmen, sleutels en afhankelijkheden registreert.
- ProtectKeysWith*。 Versleuteling wordt mogelijk gemaakt via uitbreidingen van deze naamgevingsmethode. Bijvoorbeeld, ProtectKeysWithCertificate
- SetDefaultKeyLifetime。 Stel standaard de levensduur van de sleutel in op 90 dagen.
- SetApplicationName。 Stel de app-naam in. Standaard zijn gegevensbeschermingsmechanismen volledig geïsoleerd van elke applicatie. Sleuteldeling tussen apps kan worden bereikt door dezelfde appnaam in te stellen.
- DisableAutomaticKeyGeneration。 Voorkom dat de sleutel automatisch wordt teruggerold. Vaak willen we eigenlijk niet dat wachtwoorden veranderen of in een clusterservice zitten, we hebben een speciale dienst die verantwoordelijk is voor het terugrollen van sleutelupdates, en andere payloads hoeven het gewoon van een gedeelde plek te halen.
- UseCryptographicAlgorithms。 Gebruik aangepaste encryptie- en decryptie-algoritmen
Referentie:De hyperlink-login is zichtbaar.
|
Vorig:Gebruik PowerShell om het element <machineKey> te genererenVolgend:Vergelijk Tailscale, ZeroTier, WireGuard, OmniEdge en Ngrok voor geo-netwerkoplossingen
|