Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 2915|Odpověď: 0

[Zdroj] ASP.NET Core (22) je založen na ochraně dat IDataProtectionProvider

[Kopírovat odkaz]
Zveřejněno 15.08.2023 10:21:16 | | | |
Požadavky: Během vývoje se často setkáváte se scénáři šifrování a dešifrování, například autentizace e-mailu může nést zašifrovaný řetězec, a když uživatel klikne na odkaz pro přechod do rozhraní, systém může obsah řetězce normálně dešifrovat, čímž se realizuje funkce ověřování e-mailu.

Generování prvků pomocí PowerShellu <machineKey>
https://www.itsvse.com/thread-10644-1-1.html

Šifrování dat pomocí ASP.NET machineKey
https://www.itsvse.com/thread-9535-1-1.html

ASP.NET Role machineKey a jak jej používat
https://www.itsvse.com/thread-2705-1-1.html

ASP.NET Core nabízí funkce ochrany dat:Přihlášení k hypertextovému odkazu je viditelné.

Hlavní balíček

Hlavní balíčky zahrnuté v ochraně osobních údajů jsou následující, které jsou podle potřeby uvedeny:

  • standard Microsoft.AspNetCore.DataProtection.Abstractions. Pojmenování komponentních balíčků abstraktní vrstvy NET CORE. Zahrnuje hlavní rozhraní jako IDataProtectionProvider a IDataProtector.
  • Microsoft.AspNetCore.DataProtection, včetně základních kryptografických operací, správy klíčů, konfigurace a rozšiřitelnosti.
  • Rozšíření Microsoft.AspNetCore.DataProtection.Extensions. Poskytuje tovární metodu pro vytváření instancí a metodu rozšíření úložiště pro klíče. Tento balíček se používá v režimu bez DI.
  • Microsoft.AspNetCore.DataProtection.SystemWeb implementuje <machineKey>kompatibilitu s mechanismy šifrování a dešifrování ve ASP.NET 4.x.
  • Microsoft.AspNetCore.Cryptography.KeyDerivation poskytuje implementaci rutiny pro hashování hesel PBKDF2. Používejte ho, když potřebujete použít hash šifrování.


IDataProtectionProvider vs IDataProtector

IDataProtectionProvider je založen na modelu Microsoft Provider a slouží k poskytování politik pro vytváření instancí. Vytvořte objekt IDataProtector voláním metody IDataProtectionProvider.CreateProtector(purpose).
IDataProtector je služba odpovědná za šifrování a dešifrování, která nabízí především dva typy metod: protect a unprotect (každý typ má mnoho metod přetížení a rozšiřování). Jednoduché pochopení je, že protect se používá pro šifrování a unprotect pro dešifrování.
Parametr metody Create v IDataProtectionProvider je řetězec, který poskytuje izolační funkce. IDataProtectory vytvořené s neprůchodnými řetězci dosáhnou různých výsledků šifrování, i když šifrují stejný objekt. IDataProtector je také implicitní IDataProtectionProvider, který také poskytuje metodu CreateProtector(purpose). To znamená, že jej lze snadno implementovatRežim aplikace s více nájemci



Zde je několik věcí, na které je dobré myslet:

Instance IDataProtectionProvider a IDataProtectorBezpečnost závituCíl.
Metoda unprotect spočívá v informování volajícího, že dešifrování selhalo, vyhozením výjimky. Třídou výjimek je CryptographicException.

ASP.NET Core je jednoduchá na používání ochrany dat

Je přidáno nové rozhraní pro šifrování a dešifrování dat a kód je následující:

Test je následující:



IDataProtectionProvider je singleton vzor s následujícím kódem:Přihlášení k hypertextovému odkazu je viditelné.



Správa klíčů

Pokud je uživatelský profil dostupný, klíč zůstává na%LOCALAPPDATA%\ASP.NET\DataProtection-Keyssložka. Pokud je operačním systémem Windows, klíč je v klidu zašifrován pomocí DPAPI. Jak je uvedeno níže:



Klíčový život

Ve výchozím nastavení je klíčŽivotní cyklus trvá 90 dní。 Když klíč vyprší, aplikace automaticky vygeneruje nový klíč a nastaví nový klíč jako aktivní klíč. Pokud deaktivované klíče zůstávají v systému, vaše aplikace může dešifrovat jakákoli data chráněná těmito klíči. Pro více informací viz správa klíčů.Přihlášení k hypertextovému odkazu je viditelné.

Výchozí algoritmus

Výchozí algoritmy ochrany zátěže používané jsou AES-256-CBC (pro důvěrnost) a HMACSHA256 (pro autentičnost). 512bitový hlavní klíč, který se mění každých 90 dní, se používá k odvození dvou podklíčů pro tyto algoritmy na základě každého payloadu.

ASP.NET poskytovatel úložiště klíčů v Core

Souborový systém: PersistKeysToFileSystem
Azure Storage: PersistKeysToAzureBlobStorage, což vyžaduje reference: Azure.Extensions.AspNetCore.DataProtection.Blobs
Redis storage: PersistKeysToStackExchangeRedis, reference required: Microsoft.AspNetCore.DataProtection.StackExchangeRedis

Odkaz:Přihlášení k hypertextovému odkazu je viditelné.

Shluk a distribuce

Pokud je serverový klíč nekonzistentní, například: šifrování serveru A a dešifrování serveru B, bude vyhozena výjimka (jak je znázorněno na obrázku níže) a je třeba nasadit stejný klíč.



Nakonfigurujte stejný klíč následovně:

Jakmile program běží, automaticky vygeneruje klíčový soubor *.xml pod složkou publish_itsvse, udržujte tento soubor konzistentní na různých serverech! Jak je uvedeno níže:



ASP.NET Konfigurace ochrany jádra

ASP.NET CORE nabízí bohatou podporu API, uchovávání hesel, konfiguraci a možnosti přizpůsobení.

  • PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Azure cloud storage scénář.
  • PersistKeysToFileSystem。 Lokální systém ukládání souborů, který zaznamenává šifrovací algoritmy, klíče a závislosti.
  • ProtectKeysWith*。 Šifrování je zajištěno rozšířením této metody pojmenování. Například ProtectKeysWithCertificate
  • SetDefaultKeyLifetime。 Nastav životnost klíče ve výchozím nastavení na 90 dní.
  • SetApplicationName。 Nastavte název aplikace. Ve výchozím nastavení jsou mechanismy ochrany dat naprosto izolované od každé aplikace. Sdílení klíčů mezi aplikacemi lze dosáhnout nastavením stejného názvu aplikace.
  • DisableAutomaticKeyGeneration。 Zabránit automatickému vrácení klíče. Často nechceme, aby se hesla měnila, nebo v clusterové službě máme dedikovanou službu zodpovědnou za návrat k aktualizaci klíčů, zatímco ostatní payloady potřebují jen získat heslo ze sdíleného místa.
  • UseCryptographicAlgorithms。 Použijte vlastní šifrovací a dešifrovací algoritmy


Odkaz:Přihlášení k hypertextovému odkazu je viditelné.





Předchozí:Použijte PowerShell k vygenerování prvku &lt;machineKey&gt;
Další:Porovnejte Tailscale, ZeroTier, WireGuard, OmniEdge a Ngrok pro geosíťová řešení
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com