Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
ASP.NET Core tillhandahåller ett kryptografiskt API för att skydda data, inklusive nyckelhantering och rotation.
Webbappar behöver ofta lagra känsliga data. Windows dataskydds-API (DPAPI) är inte avsett för användning i webbappar.
ASP.NET Core-dataskyddsstacken har utformats för att:
- Tillhandahålla en inbyggd lösning för de flesta webbscenarier.
- Åtgärda många av bristerna i det tidigare krypteringssystemet.
- Fungerar som ersättning för elementet
<machineKey>
i ASP.NET 1.x–4.x.
Problemuttryck
Jag behöver bevara betrodd information för senare hämtning, men jag litar inte på beständighetsmekanismen. In web terms, this might be written as I need to round-trip trusted state via an untrusted client.
Äkthet, integritet och manipulationssäkerhet är krav. The canonical example of this is an authentication cookie or bearer token. Servern genererar en jag är Groot och har xyz-behörigheter token och skickar den till klienten. Klienten presenterar denna token tillbaka till servern, men servern behöver någon form av försäkran om att klienten inte har förfalskat token.
Konfidentialitet är ett krav. Eftersom det beständiga tillståndet är betrott av servern kan det här tillståndet innehålla information som inte ska lämnas ut till en klient som inte är betrodd. Till exempel:
- En filväg.
- A permission.
- Ett handtag eller annan indirekt referens.
- Vissa serverspecifika data.
Isolering är ett krav. Eftersom moderna appar är komponentbaserade vill enskilda komponenter dra nytta av det här systemet utan hänsyn till andra komponenter i systemet. Anta till exempel att en ägartokenkomponent använder den här stacken. Den bör fungera utan interferens, till exempel från en anti-CSRF-mekanism som också använder samma stack.
Vissa vanliga antaganden kan begränsa kravens omfattning:
- Alla tjänster som körs inom kryptosystemet är lika betrodda.
- Data behöver inte genereras eller förbrukas utanför tjänsterna under vår direkta kontroll.
- Åtgärderna måste vara snabba eftersom varje begäran till webbtjänsten kan gå igenom kryptosystemet en eller flera gånger. Hastighetskravet gör symmetrisk kryptografi idealisk. Asymmetrisk kryptografi används inte förrän det krävs.
Designfilosofi
ASP.NET Core-dataskydd är en enkel att använda dataskyddsstack. Den baseras på följande principer:
- Enkelhet vid konfiguration. Systemet strävar efter nollkonfiguration. I situationer där utvecklare behöver konfigurera en specifik aspekt, till exempel nyckellagringsplatsen, är dessa specifika konfigurationer inte svåra.
- Erbjuda ett grundläggande api för konsumenter. API:erna är enkla att använda korrekt och svåra att använda felaktigt.
- Utvecklare behöver inte lära sig viktiga hanteringsprinciper. Systemet hanterar val av algoritm och nyckellivslängd åt utvecklaren. Utvecklaren har inte åtkomst till råmaterialet.
- Keys are protected at rest as much as possible. Systemet räknar ut en lämplig standardskyddsmekanism och tillämpar den automatiskt.
Dataskydds-API:erna är inte i första hand avsedda för obegränsad beständighet av konfidentiella nyttolaster. Andra tekniker, till exempel Windows CNG DPAPI och Azure Rights Management är mer lämpade för scenariot med obegränsad lagring. De har motsvarande starka funktioner för nyckelhantering. Med detta sagt kan api:erna för ASP.NET Core-dataskydd användas för långsiktigt skydd av konfidentiella data.
Audience
Dataskyddssystemet tillhandahåller API:er som riktar sig till tre huvudsakliga målgrupper:
konsument-API:er riktar sig till applikations- och ramverksutvecklare.
Jag vill inte lära mig mer om hur stacken fungerar eller hur den är konfigurerad. Jag vill bara utföra en åtgärd med hög sannolikhet för att lyckas använda API:erna.
API:erna för konfigurationen riktar sig till app-utvecklare och systemadministratörer.
måste jag meddela dataskyddssystemet att min miljö kräver icke-standardsökvägar eller inställningar.
API:erna för utökningsbarhet riktar sig till utvecklare som ansvarar för att implementera anpassad princip. Användningen av dessa API:er är begränsad till sällsynta situationer och utvecklare med säkerhetsupplevelse.
Jag måste ersätta en hel komponent i systemet eftersom jag har verkligt unika beteendekrav. Jag är villig att lära mig ovanligt använda delar av API-ytan för att skapa ett plugin-program som uppfyller mina krav.
Package layout
Dataskyddsstacken består av fem paket:
Microsoft.AspNetCore.DataProtection.Abstractions innehåller:
- IDataProtectionProvider och IDataProtector gränssnitt för att skapa dataskyddstjänster.
- Användbara tilläggsmetoder för att arbeta med dessa typer. for example, IDataProtector.Protect
Om dataskyddssystemet instansieras någon annanstans och du använder API:et refererar du till
Microsoft.AspNetCore.DataProtection.Abstractions
.Microsoft.AspNetCore.DataProtection innehåller kärnimplementeringen av dataskyddssystemet, inklusive:
- Grundläggande kryptografiska åtgärder.
- Key management.
- Konfiguration och utökningsbarhet.
Om du vill instansiera dataskyddssystemet refererar du till
Microsoft.AspNetCore.DataProtection
. Du kan behöva referera till dataskyddssystemet när:- Adding it to an IServiceCollection.
- Ändra eller utöka dess beteende.
Microsoft.AspNetCore.DataProtection.Extensions innehåller ytterligare API:er som utvecklare kan ha nytta av men som inte hör hemma i kärnpaketet. Det här paketet innehåller till exempel:
- Fabriksmetoder för att instansiera dataskyddssystemet så att nycklar lagras på en plats i filsystemet utan beroendeinjektion. See DataProtectionProvider.
- Tilläggsmetoder för att begränsa livslängden för skyddade nyttolaster. See ITimeLimitedDataProtector.
Microsoft.AspNetCore.DataProtection.SystemWeb kan installeras i en befintlig ASP.NET 4.x-app för att omdirigera dess
<machineKey>
åtgärder för att använda den nya ASP.NET Core-dataskyddsstacken. Mer information finns i Ersätt ASP.NET machineKey i ASP.NET Core.Microsoft.AspNetCore.Cryptography.KeyDerivation tillhandahåller en implementering av PBKDF2-lösenordshashningsrutinen och kan användas av system som måste hantera användarlösenord på ett säkert sätt. Mer information finns i Hash-lösenord i ASP.NET Core.
Ytterligare resurser
ASP.NET Core tillhandahåller ett kryptografiskt API för att skydda data, inklusive nyckelhantering och rotation.
Webbappar behöver ofta lagra känsliga data. Windows dataskydds-API (DPAPI) är inte avsett för användning i webbappar.
ASP.NET Core-dataskyddsstacken har utformats för att:
- Tillhandahålla en inbyggd lösning för de flesta webbscenarier.
- Åtgärda många av bristerna i det tidigare krypteringssystemet.
- Fungerar som ersättning för elementet
<machineKey>
i ASP.NET 1.x–4.x.
Problemuttryck
Jag behöver bevara betrodd information för senare hämtning, men jag litar inte på beständighetsmekanismen. In web terms, this might be written as I need to round-trip trusted state via an untrusted client.
Äkthet, integritet och manipulationssäkerhet är krav. The canonical example of this is an authentication cookie or bearer token. Servern genererar en jag är Groot och har xyz-behörigheter token och skickar den till klienten. Klienten presenterar denna token tillbaka till servern, men servern behöver någon form av försäkran om att klienten inte har förfalskat token.
Konfidentialitet är ett krav. Eftersom det beständiga tillståndet är betrott av servern kan det här tillståndet innehålla information som inte ska lämnas ut till en klient som inte är betrodd. Till exempel:
- En filväg.
- A permission.
- Ett handtag eller annan indirekt referens.
- Vissa serverspecifika data.
Isolering är ett krav. Eftersom moderna appar är komponentbaserade vill enskilda komponenter dra nytta av det här systemet utan hänsyn till andra komponenter i systemet. Anta till exempel att en ägartokenkomponent använder den här stacken. Den bör fungera utan interferens, till exempel från en anti-CSRF-mekanism som också använder samma stack.
Vissa vanliga antaganden kan begränsa kravens omfattning:
- Alla tjänster som körs inom kryptosystemet är lika betrodda.
- Data behöver inte genereras eller förbrukas utanför tjänsterna under vår direkta kontroll.
- Åtgärderna måste vara snabba eftersom varje begäran till webbtjänsten kan gå igenom kryptosystemet en eller flera gånger. Hastighetskravet gör symmetrisk kryptografi idealisk. Asymmetrisk kryptografi används inte förrän det krävs.
Designfilosofi
ASP.NET Core-dataskydd är en enkel att använda dataskyddsstack. Den baseras på följande principer:
- Enkelhet vid konfiguration. Systemet strävar efter nollkonfiguration. I situationer där utvecklare behöver konfigurera en specifik aspekt, till exempel nyckellagringsplatsen, är dessa specifika konfigurationer inte svåra.
- Erbjuda ett grundläggande api för konsumenter. API:erna är enkla att använda korrekt och svåra att använda felaktigt.
- Utvecklare behöver inte lära sig viktiga hanteringsprinciper. Systemet hanterar val av algoritm och nyckellivslängd åt utvecklaren. Utvecklaren har inte åtkomst till råmaterialet.
- Keys are protected at rest as much as possible. Systemet räknar ut en lämplig standardskyddsmekanism och tillämpar den automatiskt.
Dataskydds-API:erna är inte i första hand avsedda för obegränsad beständighet av konfidentiella nyttolaster. Andra tekniker, till exempel Windows CNG DPAPI och Azure Rights Management är mer lämpade för scenariot med obegränsad lagring. De har motsvarande starka funktioner för nyckelhantering. Med detta sagt kan api:erna för ASP.NET Core-dataskydd användas för långsiktigt skydd av konfidentiella data.
Audience
Dataskyddssystemet tillhandahåller API:er som riktar sig till tre huvudsakliga målgrupper:
konsument-API:er riktar sig till applikations- och ramverksutvecklare.
Jag vill inte lära mig mer om hur stacken fungerar eller hur den är konfigurerad. Jag vill bara utföra en åtgärd med hög sannolikhet för att lyckas använda API:erna.
API:erna för konfigurationen riktar sig till app-utvecklare och systemadministratörer.
måste jag meddela dataskyddssystemet att min miljö kräver icke-standardsökvägar eller inställningar.
API:erna för utökningsbarhet riktar sig till utvecklare som ansvarar för att implementera anpassad princip. Användningen av dessa API:er är begränsad till sällsynta situationer och utvecklare med säkerhetsupplevelse.
Jag måste ersätta en hel komponent i systemet eftersom jag har verkligt unika beteendekrav. Jag är villig att lära mig ovanligt använda delar av API-ytan för att skapa ett plugin-program som uppfyller mina krav.
Package layout
Dataskyddsstacken består av fem paket:
Microsoft.AspNetCore.DataProtection.Abstractions innehåller:
- IDataProtectionProvider och IDataProtector gränssnitt för att skapa dataskyddstjänster.
- Användbara tilläggsmetoder för att arbeta med dessa typer. for example, IDataProtector.Protect
Om dataskyddssystemet instansieras någon annanstans och du använder API:et refererar du till
Microsoft.AspNetCore.DataProtection.Abstractions
.Microsoft.AspNetCore.DataProtection innehåller kärnimplementeringen av dataskyddssystemet, inklusive:
- Grundläggande kryptografiska åtgärder.
- Key management.
- Konfiguration och utökningsbarhet.
Om du vill instansiera dataskyddssystemet refererar du till
Microsoft.AspNetCore.DataProtection
. Du kan behöva referera till dataskyddssystemet när:- Adding it to an IServiceCollection.
- Ändra eller utöka dess beteende.
Microsoft.AspNetCore.DataProtection.Extensions innehåller ytterligare API:er som utvecklare kan ha nytta av men som inte hör hemma i kärnpaketet. Det här paketet innehåller till exempel:
- Fabriksmetoder för att instansiera dataskyddssystemet så att nycklar lagras på en plats i filsystemet utan beroendeinjektion. See DataProtectionProvider.
- Tilläggsmetoder för att begränsa livslängden för skyddade nyttolaster. See ITimeLimitedDataProtector.
Microsoft.AspNetCore.DataProtection.SystemWeb kan installeras i en befintlig ASP.NET 4.x-app för att omdirigera dess
<machineKey>
åtgärder för att använda den nya ASP.NET Core-dataskyddsstacken. Mer information finns i Ersätt ASP.NET machineKey i ASP.NET Core.Microsoft.AspNetCore.Cryptography.KeyDerivation tillhandahåller en implementering av PBKDF2-lösenordshashningsrutinen och kan användas av system som måste hantera användarlösenord på ett säkert sätt. Mer information finns i Hash-lösenord i ASP.NET Core.
Ytterligare resurser
ASP.NET Core