Přehled základní ochrany dat ASP.NET

Ochrana dat 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 data citlivá na zabezpečení. Windows poskytuje rozhraní API pro ochranu dat, ROZHRANÍ DPAPI, ale rozhraní WINDOWS DPAPI není určené pro použití ve webových aplikacích.

Zásobník ochrany dat ASP.NET Core je navržený tak, aby sloužil jako dlouhodobá náhrada <prvku machineKey> v ASP.NET 1.x - 4.x. Byla navržena tak, aby řešila řadu nedostatků starého kryptografického zásobníku a současně poskytovala předinstrukční řešení pro většinu případů použití, se kterými se moderní aplikace pravděpodobně setkávají.

Popis problému

Celkové prohlášení o problému může být stručně uvedeno v jedné větě: 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é jako "Potřebuji přes nedůvěryhodný klient provést zpáteční cestu důvěryhodného stavu".

Kanonický příklad je ověřovací cookie nebo nosný token. Server vygeneruje token "I am Groot a má oprávnění xyz" a předá ho klientovi. V určitém budoucím datu bude klient prezentovat tento token zpět na server, ale server potřebuje určitou jistotu, že klient token nezakřel. Prvním požadavkem je tedy pravost (integrita, manipulace).

Vzhledem k tomu, že trvalý stav server důvěřuje, předpokládáme, že tento stav může obsahovat informace specifické pro provozní prostředí. Může to být ve formě cesty k souboru, oprávnění, popisovače nebo jiného nepřímého odkazu nebo jiné části dat specifických pro server. Tyto informace by obecně neměly být zpřístupněny nedůvěryhodnému klientovi. Druhý požadavek: důvěrnost.

A konečně, protože moderní aplikace jsou součástí, je to, co jsme viděli, že jednotlivé komponenty budou chtít tento systém využívat bez ohledu na ostatní komponenty v systému. Pokud například komponenta nosných tokenů používá tento zásobník, měla by fungovat bez zásahu z mechanismu anti-CSRF, který může také používat stejný zásobník. Konečným požadavkem je tedy izolace.

Můžeme poskytnout další omezení, abychom omezili rozsah našich požadavků. Předpokládáme, že všechny služby provozované v rámci kryptografického systému jsou stejně důvěryhodné a že data nemusí být generována ani spotřebována mimo služby pod naší přímou kontrolou. Kromě toho vyžadujeme, aby operace byly co nejrychleji, protože každý požadavek na webovou službu může procházet kryptografickým systémem jednou nebo vícekrát. Díky tomu je symetrická kryptografie ideální pro náš scénář a asymetrickou kryptografii můžeme zlevnět až do doby, kdy je potřeba.

Filozofie návrhu

Začali jsme identifikací problémů se stávajícím zásobníkem. Jakmile jsme to měli, prozkoumali jsme krajinu stávajících řešení a dospěli jsme k závěru, že žádné existující řešení nemělo zcela možnosti, které jsme hledali. Pak jsme řešení zpracovali na základě několika hlavních principů.

  • Systém by měl nabízet jednoduchost konfigurace. V ideálním případě by systém byl nulová konfigurace a vývojáři by mohli začít fungovat. V situacích, kdy vývojáři potřebují nakonfigurovat určitý aspekt (například úložiště klíčů), je třeba vzít v úvahu, aby tyto konkrétní konfigurace byly jednoduché.

  • Nabízí jednoduché rozhraní API pro uživatele. Rozhraní API by měla být snadno použitelná správně a obtížně se používá nesprávně.

  • Vývojáři by se neměli učit klíčové principy správy. Systém by měl zpracovávat výběr algoritmu a životnost klíče jménem vývojáře. V ideálním případě by vývojář nikdy neměl mít přístup k surovinovým materiálům.

  • Klíče by měly být v klidovém stavu chráněné, pokud je to možné. Systém by měl zjistit vhodný výchozí mechanismus ochrany a automaticky ho použít.

S ohledem na tyto principy jsme vyvinuli jednoduchý, snadno použitelný zásobník ochrany dat.

Rozhraní API ASP.NET základní 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ě a mají odpovídajícím způsobem silné možnosti správy klíčů. To znamená, že vývojáři nezakázali používat rozhraní API ochrany dat ASP.NET Core pro dlouhodobou ochranu důvěrných dat.

Cílová skupina

Systém ochrany dat je rozdělený do pěti hlavních balíčků. Různé aspekty těchto rozhraní API cílí na tři hlavní cílové skupiny;

  1. Rozhraní API pro spotřebitele – Přehled cílí na vývojáře aplikací a architektur.

    Nechci se dozvědět, jak zásobník funguje nebo jak je nakonfigurovaný. Jednoduše chci provést nějakou operaci co nejjednodušším způsobem s vysokou pravděpodobností úspěšného použití rozhraní API."

  2. 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í."

  3. 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 by bylo omezeno na vzácné situace a zkušenosti vývojářů s podporou zabezpečení.

    "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 mé požadavky."

Rozložení balíčku

Zásobník ochrany dat se skládá z pěti balíčků.

Další prostředky