Přehled základní ochrany dat ASP.NET
ASP.NET Core poskytuje kryptografické rozhraní API pro ochranu dat, včetně správy klíčů a obměny.
Webové aplikace často potřebují ukládat citlivá data. Rozhraní API pro ochranu dat Windows (DPAPI) není určené pro použití ve webových aplikacích.
Zásobník ochrany dat ASP.NET Core byl navržen tak, aby:
- Poskytuje integrované řešení pro většinu webových scénářů.
- Řeší řadu nedostatků předchozího šifrovacího systému.
- Slouží jako náhrada
<machineKey>
prvku v ASP.NET 1.x - 4.x.
Popis problému
Potřebuji zachovat důvěryhodné informace pro pozdější načtení, ale nedůvěřuji mechanismu trvalosti. Z webového hlediska to může být napsané, protože potřebuji přes nedůvěryhodného klienta zaokrouhlit důvěryhodný stav.
Ověření pravosti, integrity a manipulace je požadavek. Kanonický příklad je ověřovací cookie nebo nosný token. Server vygeneruje I am Groot a má token oprávnění xyz a odešle ho klientovi. Klient tento token prezentuje zpět na server, ale server potřebuje určitou jistotu, že klient token nezakřel.
Důvěrnost je požadavek. Vzhledem k tomu, že trvalý stav je serverem důvěryhodný, může tento stav obsahovat informace, které by neměly být zpřístupněny nedůvěryhodnému klientovi. Příklad:
- Cesta k souboru.
- Oprávnění.
- Popisovač nebo jiný nepřímý odkaz
- Některá data specifická pro server.
Izolace je požadavek. Vzhledem k tomu, že moderní aplikace jsou součástí, jednotlivé komponenty chtějí tento systém využívat bez ohledu na jiné součásti systému. Zvažte například komponentu nosné tokeny, která používá tento zásobník. Měl by fungovat bez jakéhokoli zásahu, například z mechanismu anti-CSRF, který používá také stejný zásobník.
Některé běžné předpoklady můžou zúžit rozsah požadavků:
- Všechny služby provozující v rámci kryptografického systému jsou stejně důvěryhodné.
- Data nemusí být generována ani spotřebována mimo naše přímé řízení.
- Operace musí být rychlé, protože každý požadavek na webovou službu může procházet kryptografickým systémem jednou nebo vícekrát. Požadavek na rychlost činí symetrickou kryptografii ideální. Asymetrická kryptografie se nepoužívá, dokud se nevyžaduje.
Filozofie návrhu
ASP.NET Základní ochrana dat je snadno použitelný zásobník ochrany dat. Vychází z následujících principů:
- Snadná konfigurace. Systém se snaží o nulovou konfiguraci. V situacích, kdy vývojáři potřebují nakonfigurovat konkrétní aspekt, například úložiště klíčů, nejsou tyto konkrétní konfigurace obtížné.
- Nabízí základní rozhraní API pro uživatele. Rozhraní API jsou přímočará, aby správně používala a špatně se používala.
- Vývojáři se nemusí učit klíčové principy správy. Systém zpracovává výběr algoritmu a životnost klíče jménem vývojáře. Vývojář nemá přístup k surovinovým materiálům.
- Klíče jsou chráněny rest co nejvíce. Systém zjistí vhodný výchozí ochranný mechanismus a automaticky ho použije.
Rozhraní API ochrany dat nejsou primárně určená pro neomezenou trvalost důvěrných datových částí. Další technologie, jako je Windows CNG DPAPI a Azure Rights Management , jsou vhodnější pro scénář neomezeného úložiště. Mají odpovídající silné možnosti správy klíčů. To znamená, že rozhraní API ASP.NET základní ochrany dat se dají použít k dlouhodobé ochraně důvěrných dat.
Cílová skupina
Systém ochrany dat poskytuje rozhraní API, která cílí na tři hlavní cílové skupiny:
Rozhraní API příjemců cílí na vývojáře aplikací a architektur.
Nechci se dozvědět, jak zásobník funguje nebo jak je nakonfigurovaný. Chci provést určitou operaci s vysokou pravděpodobností úspěšného použití rozhraní API.
Rozhraní API konfigurace cílí na vývojáře aplikací a správce systému.
Potřebuji říct systému ochrany dat, že moje prostředí vyžaduje jiné než výchozí cesty nebo nastavení.
Rozhraní API rozšiřitelnosti cílí na vývojáře, kteří mají na starosti implementaci vlastních zásad. Použití těchto rozhraní API je omezené na vzácné situace a vývojáře se zkušenostmi se zabezpečením.
Potřebuji nahradit celou komponentu v systému, protože mám skutečně jedinečné požadavky na chování. Jsem ochotný naučit se méně často používané části rozhraní API, aby se vytvořil modul plug-in, který splňuje moje požadavky.
Rozložení balíčku
Zásobník ochrany dat se skládá z pěti balíčků:
Microsoft.AspNetCore.DataProtection.Abstractions obsahuje:
- IDataProtectionProvider a IDataProtector rozhraní pro vytváření služeb ochrany dat.
- Užitečné rozšiřující metody pro práci s těmito typy. například IDataProtector.Protect
Pokud se systém ochrany dat vytvoří na jiném místě a používáte rozhraní API, použijte odkaz
Microsoft.AspNetCore.DataProtection.Abstractions
.Microsoft.AspNetCore.DataProtection obsahuje základní implementaci systému ochrany dat, včetně:
- Základní kryptografické operace
- Správa klíčů:
- Konfigurace a rozšiřitelnost
Chcete-li vytvořit instanci systému ochrany dat, odkaz na
Microsoft.AspNetCore.DataProtection
. Možná budete muset odkazovat na systém ochrany dat v následujících případech:- Přidáte ho do objektu IServiceCollection.
- Úprava nebo rozšíření jeho chování
Microsoft.AspNetCore.DataProtection.Extensions obsahuje další rozhraní API, která mohou vývojáři najít užitečné, ale nepatří do základního balíčku. Tento balíček například obsahuje:
- Metody továrny pro vytvoření instance systému ochrany dat pro ukládání klíčů do umístění v systému souborů bez injektáže závislostí. Viz třída DataProtectionProvider.
- Metody rozšíření pro omezení životnosti chráněných datových částí Viz třída ITimeLimitedDataProtector.
Microsoft.AspNetCore.DataProtection.SystemWeb je možné nainstalovat do existující aplikace ASP.NET 4.x a přesměrovat své
<machineKey>
operace tak, aby používaly nový zásobník ochrany dat ASP.NET Core. Další informace najdete v tématu Nahrazení ASP.NET machineKey v ASP.NET Core.Microsoft.AspNetCore.Cryptography.KeyDerivation poskytuje implementaci rutiny hash hesel PBKDF2 a lze ji používat systémy, které musí bezpečně zpracovávat uživatelská hesla. Další informace najdete v tématu Hesla hash v ASP.NET Core.
Další materiály
ASP.NET Core poskytuje kryptografické rozhraní API pro ochranu dat, včetně správy klíčů a obměny.
Webové aplikace často potřebují ukládat citlivá data. Rozhraní API pro ochranu dat Windows (DPAPI) není určené pro použití ve webových aplikacích.
Zásobník ochrany dat ASP.NET Core byl navržen tak, aby:
- Poskytuje integrované řešení pro většinu webových scénářů.
- Řeší řadu nedostatků předchozího šifrovacího systému.
- Slouží jako náhrada
<machineKey>
prvku v ASP.NET 1.x - 4.x.
Popis problému
Potřebuji zachovat důvěryhodné informace pro pozdější načtení, ale nedůvěřuji mechanismu trvalosti. Z webového hlediska to může být napsané, protože potřebuji přes nedůvěryhodného klienta zaokrouhlit důvěryhodný stav.
Ověření pravosti, integrity a manipulace je požadavek. Kanonický příklad je ověřovací cookie nebo nosný token. Server vygeneruje I am Groot a má token oprávnění xyz a odešle ho klientovi. Klient tento token prezentuje zpět na server, ale server potřebuje určitou jistotu, že klient token nezakřel.
Důvěrnost je požadavek. Vzhledem k tomu, že trvalý stav je serverem důvěryhodný, může tento stav obsahovat informace, které by neměly být zpřístupněny nedůvěryhodnému klientovi. Příklad:
- Cesta k souboru.
- Oprávnění.
- Popisovač nebo jiný nepřímý odkaz
- Některá data specifická pro server.
Izolace je požadavek. Vzhledem k tomu, že moderní aplikace jsou součástí, jednotlivé komponenty chtějí tento systém využívat bez ohledu na jiné součásti systému. Zvažte například komponentu nosné tokeny, která používá tento zásobník. Měl by fungovat bez jakéhokoli zásahu, například z mechanismu anti-CSRF, který používá také stejný zásobník.
Některé běžné předpoklady můžou zúžit rozsah požadavků:
- Všechny služby provozující v rámci kryptografického systému jsou stejně důvěryhodné.
- Data nemusí být generována ani spotřebována mimo naše přímé řízení.
- Operace musí být rychlé, protože každý požadavek na webovou službu může procházet kryptografickým systémem jednou nebo vícekrát. Požadavek na rychlost činí symetrickou kryptografii ideální. Asymetrická kryptografie se nepoužívá, dokud se nevyžaduje.
Filozofie návrhu
ASP.NET Základní ochrana dat je snadno použitelný zásobník ochrany dat. Vychází z následujících principů:
- Snadná konfigurace. Systém se snaží o nulovou konfiguraci. V situacích, kdy vývojáři potřebují nakonfigurovat konkrétní aspekt, například úložiště klíčů, nejsou tyto konkrétní konfigurace obtížné.
- Nabízí základní rozhraní API pro uživatele. Rozhraní API jsou přímočará, aby správně používala a špatně se používala.
- Vývojáři se nemusí učit klíčové principy správy. Systém zpracovává výběr algoritmu a životnost klíče jménem vývojáře. Vývojář nemá přístup k surovinovým materiálům.
- Klíče jsou chráněny rest co nejvíce. Systém zjistí vhodný výchozí ochranný mechanismus a automaticky ho použije.
Rozhraní API ochrany dat nejsou primárně určená pro neomezenou trvalost důvěrných datových částí. Další technologie, jako je Windows CNG DPAPI a Azure Rights Management , jsou vhodnější pro scénář neomezeného úložiště. Mají odpovídající silné možnosti správy klíčů. To znamená, že rozhraní API ASP.NET základní ochrany dat se dají použít k dlouhodobé ochraně důvěrných dat.
Cílová skupina
Systém ochrany dat poskytuje rozhraní API, která cílí na tři hlavní cílové skupiny:
Rozhraní API příjemců cílí na vývojáře aplikací a architektur.
Nechci se dozvědět, jak zásobník funguje nebo jak je nakonfigurovaný. Chci provést určitou operaci s vysokou pravděpodobností úspěšného použití rozhraní API.
Rozhraní API konfigurace cílí na vývojáře aplikací a správce systému.
Potřebuji říct systému ochrany dat, že moje prostředí vyžaduje jiné než výchozí cesty nebo nastavení.
Rozhraní API rozšiřitelnosti cílí na vývojáře, kteří mají na starosti implementaci vlastních zásad. Použití těchto rozhraní API je omezené na vzácné situace a vývojáře se zkušenostmi se zabezpečením.
Potřebuji nahradit celou komponentu v systému, protože mám skutečně jedinečné požadavky na chování. Jsem ochotný naučit se méně často používané části rozhraní API, aby se vytvořil modul plug-in, který splňuje moje požadavky.
Rozložení balíčku
Zásobník ochrany dat se skládá z pěti balíčků:
Microsoft.AspNetCore.DataProtection.Abstractions obsahuje:
- IDataProtectionProvider a IDataProtector rozhraní pro vytváření služeb ochrany dat.
- Užitečné rozšiřující metody pro práci s těmito typy. například IDataProtector.Protect
Pokud se systém ochrany dat vytvoří na jiném místě a používáte rozhraní API, použijte odkaz
Microsoft.AspNetCore.DataProtection.Abstractions
.Microsoft.AspNetCore.DataProtection obsahuje základní implementaci systému ochrany dat, včetně:
- Základní kryptografické operace
- Správa klíčů:
- Konfigurace a rozšiřitelnost
Chcete-li vytvořit instanci systému ochrany dat, odkaz na
Microsoft.AspNetCore.DataProtection
. Možná budete muset odkazovat na systém ochrany dat v následujících případech:- Přidáte ho do objektu IServiceCollection.
- Úprava nebo rozšíření jeho chování
Microsoft.AspNetCore.DataProtection.Extensions obsahuje další rozhraní API, která mohou vývojáři najít užitečné, ale nepatří do základního balíčku. Tento balíček například obsahuje:
- Metody továrny pro vytvoření instance systému ochrany dat pro ukládání klíčů do umístění v systému souborů bez injektáže závislostí. Viz třída DataProtectionProvider.
- Metody rozšíření pro omezení životnosti chráněných datových částí Viz třída ITimeLimitedDataProtector.
Microsoft.AspNetCore.DataProtection.SystemWeb je možné nainstalovat do existující aplikace ASP.NET 4.x a přesměrovat své
<machineKey>
operace tak, aby používaly nový zásobník ochrany dat ASP.NET Core. Další informace najdete v tématu Nahrazení ASP.NET machineKey v ASP.NET Core.Microsoft.AspNetCore.Cryptography.KeyDerivation poskytuje implementaci rutiny hash hesel PBKDF2 a lze ji používat systémy, které musí bezpečně zpracovávat uživatelská hesla. Další informace najdete v tématu Hesla hash v ASP.NET Core.