Overzicht van ASP.NET Core Data Protection
ASP.NET Core biedt een cryptografische API voor het beveiligen van gegevens, waaronder sleutelbeheer en rotatie.
Web-apps moeten vaak gevoelige gegevens opslaan. De Windows-gegevensbeschermings-API (DPAPI-) is niet bedoeld voor gebruik in web-apps.
De ASP.NET Core-gegevensbeveiligingsstack is ontworpen voor:
- Een ingebouwde oplossing bieden voor de meeste webscenario's.
- Los veel van de tekortkomingen van het vorige versleutelingssysteem op.
- Dienen als vervanging voor het
<machineKey>
-element in ASP.NET 1.x - 4.x.
Probleemverklaring
Ik moet vertrouwde informatie behouden voor later ophalen, maar ik vertrouw het persistentiemechanisme niet. In webtermen kan dit worden geschreven als ik de vertrouwde status heen en weer moet sturen via een niet-vertrouwde client.
Authenticiteit, integriteit en controle op manipulatie is een vereiste. Het canonieke voorbeeld hiervan is een verificatie-cookie of bearer-token. De server genereert een "I am Groot" en heeft xyz-machtigingen token en verzendt het naar de client. De client presenteert dat token terug naar de server, maar de server heeft een soort zekerheid nodig dat de client het token niet heeft vervalst.
Vertrouwelijkheid is een vereiste. Omdat de persistente status wordt vertrouwd door de server, kan deze status informatie bevatten die niet mag worden bekendgemaakt aan een niet-vertrouwde client. Bijvoorbeeld:
- Een bestandspad.
- Een machtiging.
- Een handvat of andere indirecte verwijzing.
- Sommige serverspecifieke gegevens.
Isolatie is een vereiste. Omdat moderne apps zijn geïntegreerd, willen afzonderlijke onderdelen gebruikmaken van dit systeem, zonder rekening te houden met andere onderdelen in het systeem. Denk bijvoorbeeld aan een bearer-tokenonderdeel met behulp van deze stack. Het moet werken zonder interferentie, bijvoorbeeld van een anti-CSRF-mechanisme dat ook dezelfde stack gebruikt.
Enkele veelvoorkomende veronderstellingen kunnen het bereik van vereisten beperken:
- Alle services die binnen het cryptosysteem werken, worden even vertrouwd.
- De gegevens hoeven niet te worden gegenereerd of verbruikt buiten de services onder onze directe controle.
- Bewerkingen moeten snel zijn omdat elke aanvraag voor de webservice een of meer keren via het cryptosysteem kan gaan. De snelheidsvereiste maakt symmetrische cryptografie ideaal. Asymmetrische cryptografie wordt pas gebruikt als deze is vereist.
Ontwerpfilosofie
ASP.NET Core-gegevensbeveiliging is een eenvoudig te gebruiken gegevensbeveiligingsstack. Deze is gebaseerd op de volgende principes:
- Eenvoudig configuratie. Het systeem streeft naar nulconfiguratie. In situaties waarin ontwikkelaars een specifiek aspect moeten configureren, zoals de sleutelopslagplaats, zijn deze specifieke configuraties niet moeilijk.
- Bied een eenvoudige, consumentgerichte API aan. De API's zijn gemakkelijk correct te gebruiken en moeilijk verkeerd te gebruiken.
- Ontwikkelaars hoeven geen belangrijke principes voor beheer te leren. Het systeem verwerkt algoritmeselectie en sleutellevensduur namens de ontwikkelaar. De ontwikkelaar heeft geen toegang tot de grondstof.
- Sleutels worden zoveel mogelijk beveiligd in rust. Het systeem bepaalt een geschikt standaardbeveiligingsmechanisme en past dit automatisch toe.
De API's voor gegevensbeveiliging zijn niet voornamelijk bedoeld voor onbepaalde persistentie van vertrouwelijke nettoladingen. Andere technologieën, zoals Windows CNG DPAPI- en Azure Rights Management-, zijn geschikter voor het scenario van onbeperkte opslag. Ze hebben overeenkomstig sterke mogelijkheden voor sleutelbeheer. Dat gezegd hebbende, kunnen de ASP.NET Core-API's voor gegevensbescherming worden gebruikt voor langetermijnbeveiliging van vertrouwelijke gegevens.
Audiëntie
Het systeem voor gegevensbeveiliging biedt API's die gericht zijn op drie hoofddoelgroepen:
De consumenten-API's richten zich op applicatie- en frameworkontwikkelaars.
Ik wil niet weten hoe de stack werkt of over hoe deze is geconfigureerd. Ik wil alleen een bewerking uitvoeren met een hoge waarschijnlijkheid van het gebruik van de API's.
De configuratie-API's zijn gericht op appontwikkelaars en systeembeheerders.
Ik moet het systeem voor gegevensbescherming vertellen dat er niet-standaard paden of instellingen voor mijn omgeving vereist zijn.
De API's voor uitbreidbaarheid zijn gericht op ontwikkelaars die verantwoordelijk zijn voor het implementeren van aangepast beleid. Het gebruik van deze API's is beperkt tot zeldzame situaties en ontwikkelaars met beveiligingservaring.
Ik moet een volledig onderdeel in het systeem vervangen omdat ik echt unieke gedragsvereisten heb. Ik ben bereid om ongebruikelijk gebruikte onderdelen van het API-oppervlak te leren om een invoegtoepassing te bouwen die voldoet aan mijn vereisten.
Pakketindeling
De gegevensbeveiligingsstack bestaat uit vijf pakketten:
Microsoft.AspNetCore.DataProtection.Abstractions bevat:
- IDataProtectionProvider en IDataProtector interfaces voor het creëren van diensten voor gegevensbescherming.
- Handige uitbreidingsmethoden voor het werken met deze typen. bijvoorbeeld IDataProtector.Protect
Als het systeem voor gegevensbeveiliging ergens anders wordt geïnstantieerd en u de API gebruikt, raadpleegt u
Microsoft.AspNetCore.DataProtection.Abstractions
.Microsoft.AspNetCore.DataProtection de kern-implementatie van het systeem voor gegevensbeveiliging bevat, waaronder:
- Basiscryptografiebewerkingen.
- Sleutelbeheer.
- Configuratie en uitbreidbaarheid.
Raadpleeg
Microsoft.AspNetCore.DataProtection
om het systeem voor gegevensbeveiliging te instantiëren. Mogelijk moet u verwijzen naar het systeem voor gegevensbeveiliging wanneer:- Toevoegen aan een IServiceCollection.
- Het gedrag ervan wijzigen of uitbreiden.
Microsoft.AspNetCore.DataProtection.Extensions extra API's bevat die ontwikkelaars nuttig kunnen vinden, maar die niet behoren tot het kernpakket. Dit pakket bevat bijvoorbeeld:
- Factory-methoden om het systeem voor gegevensbeveiliging te instantiëren om sleutels op een locatie op het bestandssysteem op te slaan zonder afhankelijkheidsinjectie. Zie DataProtectionProvider.
- Extensiemethoden voor het beperken van de levensduur van beveiligde gegevens. Zie ITimeLimitedDataProtector.
Microsoft.AspNetCore.DataProtection.SystemWeb kan worden geïnstalleerd in een bestaande ASP.NET 4.x-app om de
<machineKey>
bewerkingen om te leiden voor het gebruik van de nieuwe ASP.NET Core-gegevensbeveiligingsstack. Zie De ASP.NET machineKey vervangen in ASP.NET Corevoor meer informatie.Microsoft.AspNetCore.Cryptography.KeyDerivation biedt een implementatie van de PBKDF2-wachtwoordhashroutine en kan worden gebruikt door systemen die gebruikerswachtwoorden veilig moeten afhandelen. Zie Hash-wachtwoorden in ASP.NET Corevoor meer informatie.
Aanvullende informatiebronnen
ASP.NET Core biedt een cryptografische API voor het beveiligen van gegevens, waaronder sleutelbeheer en rotatie.
Web-apps moeten vaak gevoelige gegevens opslaan. De Windows-gegevensbeschermings-API (DPAPI-) is niet bedoeld voor gebruik in web-apps.
De ASP.NET Core-gegevensbeveiligingsstack is ontworpen voor:
- Een ingebouwde oplossing bieden voor de meeste webscenario's.
- Los veel van de tekortkomingen van het vorige versleutelingssysteem op.
- Dienen als vervanging voor het
<machineKey>
-element in ASP.NET 1.x - 4.x.
Probleemverklaring
Ik moet vertrouwde informatie behouden voor later ophalen, maar ik vertrouw het persistentiemechanisme niet. In webtermen kan dit worden geschreven als ik de vertrouwde status moet rondsturen via een niet-vertrouwde client.
Authenticiteit, integriteit en controle op manipulatie is een vereiste. Het canonieke voorbeeld hiervan is een verificatie-cookie of bearer-token. De server genereert een I am Groot en beschikt over xyz-machtigingen-token en stuurt het naar de client. De client presenteert dat token terug naar de server, maar de server heeft een soort zekerheid nodig dat de client het token niet heeft vervalst.
Vertrouwelijkheid is een vereiste. Omdat de persistente status wordt vertrouwd door de server, kan deze status informatie bevatten die niet mag worden bekendgemaakt aan een niet-vertrouwde client. Bijvoorbeeld:
- Een bestandspad.
- Een machtiging.
- Een handvat of andere indirecte verwijzing.
- Sommige serverspecifieke gegevens.
Isolatie is een vereiste. Omdat moderne apps zijn geïntegreerd, willen afzonderlijke onderdelen gebruikmaken van dit systeem, zonder rekening te houden met andere onderdelen in het systeem. Denk bijvoorbeeld aan een bearer-tokenonderdeel met behulp van deze stack. Het moet werken zonder interferentie, bijvoorbeeld door een anti-CSRF-mechanisme dat gebruikmaakt van dezelfde stack.
Enkele veelvoorkomende veronderstellingen kunnen het bereik van vereisten beperken:
- Alle services die binnen het cryptosysteem werken, worden even vertrouwd.
- De gegevens hoeven niet te worden gegenereerd of verbruikt buiten de services onder onze directe controle.
- Bewerkingen moeten snel zijn omdat elke aanvraag voor de webservice een of meer keren via het cryptosysteem kan gaan. De snelheidsvereiste maakt symmetrische cryptografie ideaal. Asymmetrische cryptografie wordt pas gebruikt als deze is vereist.
Ontwerpfilosofie
ASP.NET Core-gegevensbeveiliging is een eenvoudig te gebruiken gegevensbeveiligingsstack. Deze is gebaseerd op de volgende principes:
- Eenvoudig configuratie. Het systeem streeft naar nulconfiguratie. In situaties waarin ontwikkelaars een specifiek aspect moeten configureren, zoals de sleutelopslagplaats, zijn deze specifieke configuraties niet moeilijk.
- Bied een eenvoudige, consumentgerichte API aan. De API's zijn eenvoudig om correct te gebruiken en moeilijk om ze verkeerd te gebruiken.
- Ontwikkelaars hoeven geen belangrijke principes voor beheer te leren. Het systeem verwerkt algoritmeselectie en sleutellevensduur namens de ontwikkelaar. De ontwikkelaar heeft geen toegang tot de grondstof.
- Sleutels worden zoveel mogelijk beveiligd in rust. Het systeem bepaalt een geschikt standaardbeveiligingsmechanisme en past dit automatisch toe.
De API's voor gegevensbeveiliging zijn niet voornamelijk bedoeld voor onbepaalde persistentie van vertrouwelijke nettoladingen. Andere technologieën, zoals Windows CNG DPAPI- en Azure Rights Management-, zijn geschikter voor het scenario van onbeperkte opslag. Ze hebben overeenkomstig sterke mogelijkheden voor sleutelbeheer. Dat gezegd hebbende, kunnen de ASP.NET Core-API's voor gegevensbescherming worden gebruikt voor langetermijnbeveiliging van vertrouwelijke gegevens.
Audiëntie
Het systeem voor gegevensbeveiliging biedt API's die gericht zijn op drie hoofddoelgroepen:
De consumenten-API's richten zich op applicatie- en frameworkontwikkelaars.
Ik wil niet weten hoe de stack werkt of over hoe deze is geconfigureerd. Ik wil alleen een bewerking uitvoeren met een hoge waarschijnlijkheid van het gebruik van de API's.
De configuratie-API's richten zich op appontwikkelaars en systeembeheerders.
Ik moet het gegevensbeveiligingssysteem vertellen dat mijn omgeving niet-standaardpaden of -instellingen vereist.
De API's voor uitbreidbaarheid zijn gericht op ontwikkelaars die verantwoordelijk zijn voor het implementeren van aangepast beleid. Het gebruik van deze API's is beperkt tot zeldzame situaties en ontwikkelaars met beveiligingservaring.
Ik moet een volledig onderdeel in het systeem vervangen omdat ik echt unieke gedragsvereisten heb. Ik ben bereid om ongebruikelijk gebruikte onderdelen van het API-oppervlak te leren om een invoegtoepassing te bouwen die voldoet aan mijn vereisten.
Pakketindeling
De gegevensbeveiligingsstack bestaat uit vijf pakketten:
Microsoft.AspNetCore.DataProtection.Abstractions bevat:
- IDataProtectionProvider en IDataProtector interfaces om diensten voor gegevensbescherming te creëren.
- Handige uitbreidingsmethoden voor het werken met deze typen. bijvoorbeeld IDataProtector.Protect
Als het systeem voor gegevensbeveiliging ergens anders wordt geïnstantieerd en u de API gebruikt, raadpleegt u
Microsoft.AspNetCore.DataProtection.Abstractions
.Microsoft.AspNetCore.DataProtection de kern-implementatie van het systeem voor gegevensbeveiliging bevat, waaronder:
- Basiscryptografiebewerkingen.
- Sleutelbeheer.
- Configuratie en uitbreidbaarheid.
Raadpleeg
Microsoft.AspNetCore.DataProtection
om het systeem voor gegevensbeveiliging te instantiëren. Mogelijk moet u verwijzen naar het systeem voor gegevensbeveiliging wanneer:- Toevoegen aan IServiceCollection.
- Het gedrag ervan wijzigen of uitbreiden.
Microsoft.AspNetCore.DataProtection.Extensions extra API's bevat die ontwikkelaars nuttig kunnen vinden, maar die niet behoren tot het kernpakket. Dit pakket bevat bijvoorbeeld:
- Factory-methoden om het systeem voor gegevensbeveiliging te instantiëren om sleutels op een locatie op het bestandssysteem op te slaan zonder afhankelijkheidsinjectie. Zie DataProtectionProvider.
- Extensiemethoden voor het beperken van de levensduur van beveiligde gegevenspakketten. Zie ITimeLimitedDataProtector.
Microsoft.AspNetCore.DataProtection.SystemWeb kan worden geïnstalleerd in een bestaande ASP.NET 4.x-app om de
<machineKey>
bewerkingen om te leiden voor het gebruik van de nieuwe ASP.NET Core-gegevensbeveiligingsstack. Zie De ASP.NET machineKey vervangen in ASP.NET Corevoor meer informatie.Microsoft.AspNetCore.Cryptography.KeyDerivation biedt een implementatie van de PBKDF2-wachtwoordhashroutine en kan worden gebruikt door systemen die gebruikerswachtwoorden veilig moeten afhandelen. Zie Hash-wachtwoorden in ASP.NET Corevoor meer informatie.