|
|
Publisert på 15.08.2023 10:21:16
|
|
|
|

Krav: Under utviklingsprosessen kan du ofte støte på noen krypterings- og dekrypteringsscenarier, for eksempel kan e-postautentisering bære en kryptert streng, og når brukeren klikker på lenken for å hoppe til grensesnittet, kan systemet dekryptere strengens innhold som normalt, og dermed realisere e-postautentiseringsfunksjonen.
ASP.NET Core tilbyr funksjoner for databeskyttelse:Innloggingen med hyperkoblingen er synlig.
Hovedpakke
Hovedpakkene som er involvert i databeskyttelse er som følger, som refereres til etter behov:
- Microsoft.AspNetCore.DataProtection.Abstractions-standarden. Navngivning av NET CORE-abstraksjonslagets komponentpakke. Den inkluderer viktige grensesnitttjenester som IDataProtectionProvider og IDataProtector.
- Microsoft.AspNetCore.DataProtection, inkludert kjerne-kryptografiske operasjoner, nøkkelhåndtering, konfigurasjon og utvidelse.
- Microsoft.AspNetCore.DataProtection.Extensions-utvidelse. Gir en fabrikkmetode for å lage instanser og en lagringsutvidelsesmetode for nøkler. Denne pakken brukes i ikke-DI-modus.
- Microsoft.AspNetCore.DataProtection.SystemWeb implementerer <machineKey>kompatibilitet med krypterings- og dekrypteringsmekanismene i ASP.NET 4.x.
- Microsoft.AspNetCore.Cryptography.KeyDerivation tilbyr en implementering av PBKDF2-passordhashingrutinen. Bruk det når du trenger hash-kryptering.
IDataProtectionProvider vs IDataProtector
IDataProtectionProvider er basert på Microsofts Provider-modell og brukes til å gi retningslinjer for opprettelse av instanser. Opprett et IDataProtector-objekt ved å kalle IDataProtectionProvider.CreateProtector(purpose)-metoden. IDataProtector er en tjeneste ansvarlig for kryptering og dekryptering, som hovedsakelig tilbyr to typer metoder: beskytte og avbeskytte (hver type har mange overbelastnings- og utvidelsesmetoder). Enkel forståelse er at protect brukes til kryptering og unprotect brukes til dekryptering. IDataProtectionProviders Create-metodeparameteren er en streng som gir isolasjonsfunksjonalitet. IDataProtectors laget med ikke-passerbare strenger vil få ulike krypteringsresultater selv om de krypterer det samme objektet. IDataProtector er også en implisitt IDataProtectionProvider, som også tilbyr CreateProtector(purpose)-metoden. Dette betyr at det enkelt kan implementeresMulti-tenant applikasjonsmodus。
Her er noen ting å huske på:
IDataProtectionProvider- og IDataProtector-instanserGjengesikringMål. Unprotect-metoden er å informere kalleren om at dekrypteringen feilet ved å kaste et unntak. Unntaksklassen er CryptographicException.
ASP.NET Core er enkel å bruke databeskyttelse
Et nytt grensesnitt legges til for å kryptere og dekryptere data, og koden er som følger:
Testen er som følger:
IDataProtectionProvider er et singleton-mønster med følgende kode:Innloggingen med hyperkoblingen er synlig.
Nøkkelhåndtering
Hvis brukerprofilen er tilgjengelig, beholdes nøkkelen til%LOCALAPPDATA%\ASP.NET\DataProtection-Keysmappe. Hvis operativsystemet er Windows, krypteres nøkkelen i hvile ved hjelp av DPAPI. Som vist nedenfor:
Nøkkelliv
Som standard er nøkkelenLivssyklusen er 90 dager。 Når nøkkelen utløper, genererer applikasjonen automatisk en ny nøkkel og setter den nye nøkkelen som den aktive nøkkelen. Så lenge de deaktiverte nøklene forblir på systemet, kan applikasjonen din dekryptere all data som er beskyttet av dem. For mer informasjon, se Nøkkelhåndtering.Innloggingen med hyperkoblingen er synlig.
Standardalgoritme
Standard lastbeskyttelsesalgoritmer som brukes er AES-256-CBC (for konfidensialitet) og HMACSHA256 (for autentisitet). Den 512-bits hovednøkkelen, som endres hver 90. dag, brukes til å utlede to undernøkler for disse algoritmene basert på hver nyttelast.
ASP.NET nøkkellagringsleverandør i Core
Filsystem: PersistKeysToFileSystem Azure Storage: PersistKeysToAzureBlobStorage, som krever referanse: Azure.Extensions.AspNetCore.DataProtection.Blobs Redis-lagring: PersistKeysToStackExchangeRedis, referanse kreves: Microsoft.AspNetCore.DataProtection.StackExchangeRedis
Referanse:Innloggingen med hyperkoblingen er synlig.
Klynget og distribuert
Hvis servernøkkelen er inkonsistent, for eksempel: server A-kryptering og server B-dekryptering, vil et unntak bli kastet (som vist i figuren nedenfor), og samme nøkkel må distribueres.
Konfigurer samme nøkkel som følger:
Når programmet kjører, genererer det automatisk en key-*.xml key-fil under publish_itsvse-mappen, hold denne filen konsistent på forskjellige servere! Som vist nedenfor:
ASP.NET Kjernebeskyttelseskonfigurasjon
ASP.NET CORE tilbyr rik API-støtte, passordpersistens, konfigurasjon og tilpasningsfunksjoner.
- PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Azure cloud storage-scenario.
- PersistKeysToFileSystem。 Lokalt filsystemlagringssystem som registrerer krypteringsalgoritmer, nøkler og avhengigheter.
- ProtectKeysWith*。 Kryptering gis gjennom utvidelser av denne navnemetoden. For eksempel ProtectKeysWithCertificate
- SetDefaultKeyLifetime。 Sett nøkkelens levetid til 90 dager som standard.
- SetApplicationName。 Sett navnet på appen. Som standard er databeskyttelsesmekanismer fullstendig isolert fra hver applikasjon. Nøkkeldeling mellom apper kan oppnås ved å sette samme appnavn.
- DisableAutomaticKeyGeneration。 Forhindre at nøkkelen automatisk rulles tilbake. Mange ganger ønsker vi egentlig ikke at passord skal endres eller i en klyngetjeneste, vi har en dedikert tjeneste som er ansvarlig for tilbakerulling av nøkkeloppdateringer, og andre laster trenger bare å hente det fra et delt sted.
- UseCryptographicAlgorithms。 Bruk tilpassede krypterings- og dekrypteringsalgoritmer
Referanse:Innloggingen med hyperkoblingen er synlig.
|
Foregående:Bruk PowerShell for å generere elementet <machineKey>Neste:Sammenlign Tailscale, ZeroTier, WireGuard, OmniEdge og Ngrok for geo-nettverksløsninger
|