Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 2915|Odpoveď: 0

[Zdroj] ASP.NET Core (22) je založený na ochrane údajov IDataProtectionProvider

[Kopírovať odkaz]
Zverejnené 15. 8. 2023 10:21:16 | | | |
Požiadavky: Počas vývoja sa často môžete stretnúť s niektorými scenármi šifrovania a dešifrovania, napríklad autentifikácia e-mailu môže niesť zašifrovaný reťazec a keď používateľ klikne na odkaz a prejde do rozhrania, systém dokáže obsah reťazca normálne dešifrovať, čím sa realizuje funkcia overovania e-mailu.

Generovanie prvkov pomocou PowerShellu <machineKey>
https://www.itsvse.com/thread-10644-1-1.html

Šifrovanie dát pomocou ASP.NET machineKey
https://www.itsvse.com/thread-9535-1-1.html

ASP.NET Úloha machineKey a spôsob jeho použitia
https://www.itsvse.com/thread-2705-1-1.html

ASP.NET Core ponúka funkcie ochrany údajov:Prihlásenie na hypertextový odkaz je viditeľné.

Hlavný balík

Hlavné balíky zahrnuté v oblasti ochrany údajov sú nasledovné, ktoré sú podľa potreby uvedené:

  • Štandard Microsoft.AspNetCore.DataProtection.Abstractions. Pomenovanie komponentov na abstraktnej vrstve NET CORE. Zahŕňa hlavné rozhrania ako IDataProtectionProvider a IDataProtector.
  • Microsoft.AspNetCore.DataProtection, vrátane základných kryptografických operácií, správy kľúčov, konfigurácie a rozšíriteľnosti.
  • Rozšírenie Microsoft.AspNetCore.DataProtection.Extensions. Poskytuje továrenskú metódu na vytváranie inštancií a rozšírenie úložiska pre kľúče. Tento balík sa používa v ne-DI režime.
  • Microsoft.AspNetCore.DataProtection.SystemWeb implementuje <machineKey>kompatibilitu s mechanizmami šifrovania a dešifrovania v ASP.NET 4.x.
  • Microsoft.AspNetCore.Cryptography.KeyDerivation poskytuje implementáciu rutiny na hashovanie hesiel PBKDF2. Použi ho, keď potrebuješ použiť hash šifrovanie.


IDataProtectionProvider vs IDataProtector

IDataProtectionProvider je založený na modeli poskytovateľov od Microsoftu a používa sa na poskytovanie politík na vytváranie inštancií. Vytvorte objekt IDataProtector zavolaním metódy IDataProtectionProvider.CreateProtector(purpose).
IDataProtector je služba zodpovedná za šifrovanie a dešifrovanie, ktorá poskytuje najmä dva typy metód: protect a unprotection (každý typ má mnoho metód preťaženia a rozširovania). Jednoduché pochopenie je, že protect sa používa na šifrovanie a unprotect na dešifrovanie.
Parameter metódy Create v IDataProtectionProvider je reťazec, ktorý poskytuje izolačnú funkcionalitu. IDataProtectory vytvorené s nepriechodnými reťazcami budú mať odlišné výsledky šifrovania, aj keď šifrujú ten istý objekt. IDataProtector je tiež implicitný IDataProtectionProvider, ktorý poskytuje aj metódu CreateProtector(purpose). To znamená, že sa dá jednoducho implementovaťRežim aplikácie s viacerými nájomcami



Tu je niekoľko vecí, na ktoré treba myslieť:

Inštancie IDataProtectionProvider a IDataProtectorBezpečnosť závituCieľ.
Metóda unprotect spočíva v tom, že volajúcemu oznámiť, že dešifrovanie zlyhalo, vyhodením výnimky. Triedou výnimky je CryptographicException.

ASP.NET Core je jednoduchá na používanie v ochrane dát

Pridáva sa nové rozhranie na šifrovanie a dešifrovanie dát a kód je nasledovný:

Test je nasledovný:



IDataProtectionProvider je singleton vzor s nasledujúcim kódom:Prihlásenie na hypertextový odkaz je viditeľné.



Správa kľúčov

Ak je používateľský profil dostupný, kľúč zostáva zachovaný na%LOCALAPPDATA%\ASP.NET\DataProtection-Keyspriečinok. Ak je operačný systém Windows, kľúč je šifrovaný v pokoji pomocou DPAPI. Ako je uvedené nižšie:



Kľúčový život

V predvolenom nastavení je kľúčŽivotný cyklus trvá 90 dní。 Keď kľúč vyprší, aplikácia automaticky vygeneruje nový kľúč a nastaví nový kľúč ako aktívny. Pokiaľ deaktivované kľúče zostávajú v systéme, vaša aplikácia môže dešifrovať akékoľvek dáta chránené nimi. Pre viac informácií pozri správu kľúčov.Prihlásenie na hypertextový odkaz je viditeľné.

Predvolený algoritmus

Predvolené algoritmy ochrany záťaže používané sú AES-256-CBC (pre dôvernosť) a HMACSHA256 (pre autenticitu). 512-bitový hlavný kľúč, ktorý sa mení každých 90 dní, sa používa na odvodenie dvoch podkľúčov pre tieto algoritmy na základe každého užitočného zaťaženia.

ASP.NET poskytovateľ úložiska kľúčov v Core

Súborový systém: PersistKeysToFileSystem
Azure Storage: PersistKeysToAzureBlobStorage, čo vyžaduje referenciu: Azure.Extensions.AspNetCore.DataProtection.Blobs
Redis storage: PersistKeysToStackExchangeRedis, referencia potrebná: Microsoft.AspNetCore.DataProtection.StackExchangeRedis

Referencia:Prihlásenie na hypertextový odkaz je viditeľné.

Zhlukované a distribuované

Ak je serverový kľúč nekonzistentný, napríklad: šifrovanie servera A a dešifrovanie servera B, vyhodí sa výnimka (ako je znázornené na obrázku nižšie) a je potrebné nasadiť ten istý kľúč.



Nakonfigurujte rovnaký kľúč nasledovne:

Keď program beží, automaticky vygeneruje kľúčový súbor *.xml pod priečinkom publish_itsvse, udržiavajte tento súbor konzistentný na rôznych serveroch! Ako je uvedené nižšie:



ASP.NET Konfigurácia ochrany jadra

ASP.NET CORE poskytuje bohatú podporu API, zachovanie hesiel, konfiguráciu a funkcie prispôsobenia.

  • PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Azure cloud storage scenár.
  • PersistKeysToFileSystem。 Lokálna schéma ukladania súborového systému, ktorá zaznamenáva šifrovacie algoritmy, kľúče a závislosti.
  • ProtectKeysWith*。 Šifrovanie je zabezpečené rozšíreniami tejto metódy pomenovania. Napríklad ProtectKeysWithCertificate
  • SetDefaultKeyLifetime。 Nastavte životnosť kľúča predvolene na 90 dní.
  • SetApplicationName。 Nastavte názov aplikácie. Predvolene sú mechanizmy ochrany údajov úplne izolované od každej aplikácie. Zdieľanie kľúčov medzi aplikáciami je možné nastaviť rovnakým názvom aplikácie.
  • DisableAutomaticKeyGeneration。 Zabránite automatickému vráteniu kľúča. Často nechceme, aby sa menili heslá, alebo v klastrovej službe máme dedikovanú službu zodpovednú za vrátenie aktualizácií kľúčov a iné payloady potrebujú len získať heslo zo zdieľaného miesta.
  • UseCryptographicAlgorithms。 Použite vlastné šifrovacie a dešifrovacie algoritmy


Referencia:Prihlásenie na hypertextový odkaz je viditeľné.





Predchádzajúci:Použite PowerShell na generovanie prvku &lt;machineKey&gt;
Budúci:Porovnajte Tailscale, ZeroTier, WireGuard, OmniEdge a Ngrok pre geo-sieťové riešenia
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com