|
|
Publicerad på 2023-08-15 10:21:16
|
|
|
|

Krav: Under utvecklingsprocessen kan du ofta stöta på vissa krypterings- och dekrypteringsscenarier, till exempel kan e-postautentisering bära en krypterad sträng, och när användaren klickar på länken för att hoppa till gränssnittet kan systemet dekryptera strängens innehåll normalt och därmed realisera e-postautentiseringsfunktionen.
ASP.NET Core erbjuder dataskyddsfunktioner:Inloggningen med hyperlänken är synlig.
Huvudpaket
De huvudsakliga paketen som ingår i dataskydd är följande, som refereras vid behov:
- Microsoft.AspNetCore.DataProtection.Abstractions-standarden. Namngivning av NET CORE-abstraktionslagerskomponentpaket. Den inkluderar stora gränssnittstjänster såsom IDataProtectionProvider och IDataProtector.
- Microsoft.AspNetCore.DataProtection, inklusive kärnkryptografiska operationer, nyckelhantering, konfiguration och utbyggbarhet.
- Microsoft.AspNetCore.DataProtection.Extensions-tillägget. Tillhandahåller en fabriksmetod för att skapa instanser och en lagringstilläggsmetod för nycklar. Detta paket används i icke-DI-läge.
- Microsoft.AspNetCore.DataProtection.SystemWeb implementerar <machineKey>kompatibilitet med krypterings- och dekrypteringsmekanismerna i ASP.NET 4.x.
- Microsoft.AspNetCore.Cryptography.KeyDerivation tillhandahåller en implementation av PBKDF2:s lösenordshashningsrutin. Använd det när du behöver använda hashkryptering.
IDataProtectionProvider vs IDataProtector
IDataProtectionProvider baseras på Microsofts Provider-modell och används för att tillhandahålla policyer för att skapa instanser. Skapa ett IDataProtector-objekt genom att anropa metoden IDataProtectionProvider.CreateProtector(purpose). IDataProtector är en tjänst som ansvarar för kryptering och dekryptering, och tillhandahåller huvudsakligen två typer av metoder: skydda och avskydda (varje typ har många överbelastnings- och utvidgningsmetoder). En enkel förståelse är att protect används för kryptering och unprotect används för dekryptering. IDataProtectionProviders metodparameter Create är en sträng som tillhandahåller isoleringsfunktionalitet. IDataProtectors skapade med icke-passabla strängar ger olika krypteringsresultat även om de krypterar samma objekt. IDataProtector är också en implicit IDataProtectionProvider, som även tillhandahåller metoden CreateProtector(purpose). Detta innebär att det enkelt kan implementerasMulti-tenant applikationsläge。
Här är några saker att tänka på:
IDataProtectionProvider- och IDataProtector-instanserGängsäkerhetMål. Avskyddsmetoden är att informera anroparen om att dekrypteringen misslyckades genom att kasta ett undantag. Undantagsklassen är CryptographicException.
ASP.NET Core är enkelt att använda dataskydd
Ett nytt gränssnitt läggs till för att kryptera och dekryptera data, och koden är följande:
Testet är följande:
IDataProtectionProvider är ett singleton-mönster med följande kod:Inloggningen med hyperlänken är synlig.
Nyckelhantering
Om användarprofilen är tillgänglig behålls nyckeln till%LOCALAPPDATA%\ASP.NET\DataProtection-Keysmapp. Om operativsystemet är Windows krypteras nyckeln i vila med hjälp av DPAPI. Som visas nedan:
Nyckelliv
Som standard är nyckelnLivscykeln är 90 dagar。 När nyckeln går ut genererar applikationen automatiskt en ny nyckel och sätter den nya som den aktiva nyckeln. Så länge de avaktiverade nycklarna finns kvar på systemet kan din applikation dekryptera all data som skyddas av dem. För mer information, se Nyckelhantering.Inloggningen med hyperlänken är synlig.
Standardalgoritm
De standardalgoritmer som används för belastningsskydd är AES-256-CBC (för sekretess) och HMACSHA256 (för äkthet). Den 512-bitars huvudnyckeln, som ändras var 90:e dag, används för att härleda två delnycklar för dessa algoritmer baserat på varje nyttolast.
ASP.NET nyckellagringsleverantör i Core
Filsystem: PersistKeysToFileSystem Azure Storage: PersistKeysToAzureBlobStorage, som kräver referens: Azure.Extensions.AspNetCore.DataProtection.Blobs Redis lagring: PersistKeysToStackExchangeRedis, referens krävs: Microsoft.AspNetCore.DataProtection.StackExchangeRedis
Hänvisning:Inloggningen med hyperlänken är synlig.
Klustrade och distribuerade
Om servernyckeln är inkonsekvent, till exempel: server A-kryptering och server B-dekryptering, kommer ett undantag att kastas (som visas i figuren nedan) och samma nyckel måste distribueras.
Konfigurera samma nyckel enligt följande:
När programmet körs genererar det automatiskt en key-*.xml key-fil under mappen publish_itsvse, håll denna fil konsekvent på olika servrar! Som visas nedan:
ASP.NET Kärnskyddskonfiguration
ASP.NET CORE erbjuder omfattande API-stöd, lösenordspersistens, konfiguration och anpassningsfunktioner.
- PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Azure cloud storage scenario.
- PersistKeysToFileSystem。 Lokalt filsystemlagringsschema som registrerar krypteringsalgoritmer, nycklar och beroenden.
- ProtectKeysWith*。 Kryptering tillhandahålls genom utvidgningar av denna namngivningsmetod. Till exempel ProtectKeysWithCertificate
- SetDefaultKeyLifetime。 Ställ in nyckelns livslängd till 90 dagar som standard.
- SetApplicationName。 Ställ in appens namn. Som standard är dataskyddsmekanismer helt isolerade från varje applikation. Nyckeldelning mellan appar kan uppnås genom att ställa in samma appnamn.
- DisableAutomaticKeyGeneration。 Förhindra att nyckeln rullas tillbaka automatiskt. Ofta vill vi egentligen inte att lösenord ska ändras eller hamna i en klustertjänst, vi har en dedikerad tjänst som ansvarar för återställning av nyckeluppdateringar, och andra payloads behöver bara hämta det från en delad plats.
- UseCryptographicAlgorithms。 Använd anpassade krypterings- och dekrypteringsalgoritmer
Hänvisning:Inloggningen med hyperlänken är synlig.
|
Föregående:Använd PowerShell för att generera elementet <machineKey>Nästa:Jämför Tailscale, ZeroTier, WireGuard, OmniEdge och Ngrok för geonätverkslösningar
|