|
|
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.
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 <machineKey>Další:Porovnejte Tailscale, ZeroTier, WireGuard, OmniEdge a Ngrok pro geosíťová řešení
|