Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 2915|Risposta: 0

[Fonte] ASP.NET Core (22) si basa sulla protezione dei dati IDataProtectionProvider

[Copiato link]
Pubblicato su 15/08/2023 10:21:16 | | | |
Requisiti: Durante il processo di sviluppo, spesso si possono incontrare alcuni scenari di crittografia e decrittografia, ad esempio, l'autenticazione via email può portare una stringa criptata e, quando l'utente clicca sul link per accedere all'interfaccia, il sistema può decifrare normalmente il contenuto della stringa, realizzando così la funzione di autenticazione email.

Generare elementi usando PowerShell <machineKey>
https://www.itsvse.com/thread-10644-1-1.html

Crittografia dati con ASP.NET machineKey
https://www.itsvse.com/thread-9535-1-1.html

ASP.NET Il ruolo della MachineKey e come utilizzarla
https://www.itsvse.com/thread-2705-1-1.html

ASP.NET Core offre funzionalità di protezione dei dati:Il login del link ipertestuale è visibile.

Pacchetto principale

I principali pacchetti coinvolti nella Protezione dei Dati sono i seguenti, che vengono consultati secondo necessità:

  • Microsoft.AspNetCore.DataProtection.Abstractions standard. Denominazione dei pacchetti dei componenti del livello di astrazione NET Core. Include importanti servizi di interfaccia come IDataProtectionProvider e IDataProtector.
  • Microsoft.AspNetCore.DataProtection, inclusi le operazioni crittografiche principali, la gestione delle chiavi, la configurazione e l'estensibilità.
  • Microsoft.AspNetCore.DataProtection.Extensions estensione. Fornisce un metodo di fabbrica per creare istanze e un metodo di estensione di memoria per le chiavi. Questo pacchetto viene utilizzato in modalità non-DI.
  • Microsoft.AspNetCore.DataProtection.SystemWeb <machineKey>implementa la compatibilità con i meccanismi di crittografia e decrittografia presenti ASP.NET 4.x.
  • Microsoft.AspNetCore.Cryptography.KeyDerivation fornisce un'implementazione della routine di hashing delle password PBKDF2. Usalo quando hai bisogno di crittografia hash.


IDataProtectionProvider vs IDataProtector

IDataProtectionProvider si basa sul modello Provider di Microsoft ed è utilizzato per fornire politiche per la creazione di istanze. Crea un oggetto IDataProtector chiamando il metodo IDataProtectionProvider.CreateProtector(purpose).
IDataProtector è un servizio responsabile della crittografia e della decrittazione, che fornisce principalmente due tipi di metodi: protect e unprotect (ogni tipo ha molti metodi di sovraccarico ed estensione). La comprensione semplice è che protect viene usato per la crittografia e unprotect per la decrittazione.
Il parametro Create method di IDataProtectionProvider è una stringa che fornisce funzionalità di isolamento. IDataProtectors creati con stringhe non passabili otterranno risultati di crittografia diversi anche se criptano lo stesso oggetto. IDataProtector stesso è anche un IDataProtectionProvider implicito, che fornisce anche il metodo CreateProtector(purpose). Questo significa che può essere facilmente implementatoModalità applicazione multi-tenant



Ecco alcune cose da tenere a mente:

Istanze IDataProtectionProvider e IDataProtectorSicurezza della filettaturaBersaglio.
Il metodo unprotect consiste nel informare il chiamante che la decrittazione è fallita lanciando un'eccezione. La classe eccezione è CryptographicException.

ASP.NET Core è semplice da usare protezione dei dati

Viene aggiunta una nuova interfaccia per criptare e decriptare i dati, e il codice è il seguente:

Il test è il seguente:



IDataProtectionProvider è un modello singleton con il seguente codice:Il login del link ipertestuale è visibile.



Gestione delle chiavi

Se il profilo utente è disponibile, la chiave viene mantenuta per%LOCALAPPDATA%\ASP.NET\DataProtection-Keyscartella. Se il sistema operativo è Windows, la chiave viene crittografata a riposo usando DPAPI. Come mostrato di seguito:



Vita chiave

Per impostazione predefinita, la chiaveIl ciclo di vita è di 90 giorni。 Quando la chiave scade, l'applicazione genera automaticamente una nuova chiave e imposta la nuova chiave come chiave attiva. Finché le chiavi disattivate rimangono nel sistema, la tua applicazione può decriptare qualsiasi dato da esse protetto. Per maggiori informazioni, vedi Gestione delle chiavi.Il login del link ipertestuale è visibile.

Algoritmo predefinito

Gli algoritmi predefiniti di protezione del carico utilizzati sono AES-256-CBC (per la riservatezza) e HMACSHA256 (per l'autenticità). La chiave principale a 512 bit, che cambia ogni 90 giorni, viene utilizzata per derivare due sottochiavi per questi algoritmi basate su ciascun payload.

ASP.NET provider di storage chiave in Core

File System: PersistKeysToFileSystem
Azure Storage: PersistKeysToAzureBlobStorage, che richiede reference: Azure.Extensions.AspNetCore.DataProtection.Blobs
Archiviazione Redis: PersistKeysToStackExchangeRedis, riferimento richiesto: Microsoft.AspNetCore.DataProtection.StackExchangeRedis

Riferimento:Il login del link ipertestuale è visibile.

Clusterizzato e distribuito

Se la chiave del server è inconsistente, ad esempio: crittografia del server A e decrittografia del server B, verrà lanciata un'eccezione (come mostrato nella figura sotto) e la stessa chiave deve essere distribuita.



Configura la stessa chiave come segue:

Una volta che il programma è in esecuzione, genera automaticamente un file chiave *.xml sotto la cartella publish_itsvse, mantieni questo file coerente su server diversi! Come mostrato di seguito:



ASP.NET Configurazione della protezione del nucleo

ASP.NET CORE offre un ricco supporto API, persistenza delle password, configurazione e funzioni di personalizzazione.

  • PersistKeysToAzureBlobStorage、ProtectKeysWithAzureKeyVault。 Scenario di archiviazione cloud Azure.
  • PersistKeysToFileSystem。 Schema di archiviazione locale del file system che registra algoritmi di cifratura, chiavi e dipendenze.
  • ProtectKeysWith*。 La crittografia è fornita tramite estensioni di questo metodo di denominazione. Ad esempio, ProtectKeysWithCertificate
  • SetDefaultKeyLifetime。 Imposta la vita della chiave a 90 giorni di default.
  • SetApplicationName。 Imposta il nome dell'app. Di default, i meccanismi di protezione dei dati sono assolutamente isolati da ciascuna applicazione. La condivisione delle chiavi tra app può essere ottenuta impostando lo stesso nome dell'app.
  • DisableAutomaticKeyGeneration。 Impedire che il tasto venga automaticamente riportato indietro. Molte volte non vogliamo che le password cambino o, in un servizio del cluster, abbiamo un servizio dedicato responsabile del rollback degli aggiornamenti chiavi, e gli altri payload devono semplicemente ottenerlo da un luogo condiviso.
  • UseCryptographicAlgorithms。 Utilizzare algoritmi personalizzati di crittografia e decrittazione


Riferimento:Il login del link ipertestuale è visibile.





Precedente:Usa PowerShell per generare l'elemento &lt;machineKey&gt;
Prossimo:Confronta Tailscale, ZeroTier, WireGuard, OmniEdge e Ngrok per soluzioni di geo-networking
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com