Modello di crittografia di .NET Framework

.NET Framework fornisce le implementazioni di molti algoritmi di crittografia standard. Essi sono semplici da utilizzare e hanno le proprietà predefinite più sicure possibile. Inoltre, il modello di crittografia dell'ereditarietà degli oggetti, la progettazione dei flussi e la configurazione di .NET Framework sono estremamente estendibili.

Ereditarietà degli oggetti

Il sistema di sicurezza di .NET Framework implementa un modello estendibile di ereditarietà delle classi derivate. La gerarchia è la seguente:

Utilizzando questo modello di classi derivate, è facile aggiungere un nuovo algoritmo o una nuova implementazione di un algoritmo esistente. Per creare ad esempio un nuovo algoritmo a chiave pubblica, si eredita dalla classe AsymmetricAlgorithm. Per creare una nuova implementazione di un algoritmo specifico, creare una classe derivata non astratta di tale algoritmo.

Modalità di implementazione degli algoritmi in .NET Framework

Come esempio delle diverse implementazioni disponibili per un algoritmo, considerare gli algoritmi simmetrici. La base per tutti gli algoritmi simmetrici è SymmetricAlgorithm, che viene ereditata dagli algoritmi seguenti:

  1. Aes

  2. DES

  3. RC2

  4. Rijndael

  5. TripleDES

Aes viene ereditato da due classi: AesCryptoServiceProvider e AesManaged. La classe AesCryptoServiceProvider è un wrapper dell'implementazione dell'API di crittografia (CAPI) di Windows di Aes, mentre la classe AesManaged è scritta interamente in codice gestito. È inoltre disponibile un terzo tipo di implementazione, Cryptography Next Generation (CNG), oltre all'implementazione CAPI e a quella gestita. Un esempio di un algoritmo CNG è ECDiffieHellmanCng. Gli algoritmi CNG sono disponibili in Windows Vista e versioni successive.

È possibile scegliere l'implementazione più adatta alle proprie esigenze. Le implementazioni gestite sono disponibili in tutte le piattaforme che supportano .NET Framework. Le implementazioni CAPI sono disponibili nei sistemi operativi meno recenti e non vengono più sviluppate. CNG è l'implementazione più recente in cui verranno eseguite le nuove attività di sviluppo. Tuttavia, le implementazioni gestite non sono certificate dagli standard FIPS (Federal Information Processing Standards) e possono essere più lente delle classi wrapper.

Progettazione del flusso

Common Language Runtime utilizza una progettazione orientata al flusso per l'implementazione di algoritmi simmetrici e algoritmi hash. Alla base di questa progettazione c'è la classe CryptoStream, derivata dalla classe Stream. Gli oggetti di crittografia basati sul flusso supportano tutti una singola interfaccia standard, CryptoStream, per la gestione della porzione di trasferimento dei dati dell'oggetto. Dal momento che tutti gli oggetti vengono compilati su un'interfaccia standard, è possibile concatenare insieme più oggetti, quali un oggetto hash seguito da un oggetto di crittografia, ed è possibile eseguire più operazioni sui dati senza la necessità di alcuna archiviazione intermedia. Il modello di flusso consente anche di compilare oggetti da oggetti più piccoli. Un algoritmo combinato di crittografia e hash, ad esempio, può essere visualizzato con un singolo oggetto flusso anche se questo oggetto può essere compilato da una serie di oggetti flusso.

Configurazione di crittografia

La configurazione di crittografia consente di risolvere un'implementazione specifica di un algoritmo in un nome di algoritmo, consentendo l'estendibilità delle classi di crittografia di .NET Framework. È possibile aggiungere la propria implementazione hardware o software di un algoritmo e associarla al nome di algoritmo scelto. Se un algoritmo non è specificato nel file di configurazione, verranno utilizzate le configurazioni predefinite. Per ulteriori informazioni sulla configurazione di crittografia, vedere Configurazione delle classi di crittografia.

Scelta di un algoritmo

È possibile selezionare un algoritmo per diversi motivi, ad esempio per l'integrità dei dati, per la privacy dei dati o per generare una chiave. Gli algoritmi simmetrici e gli algoritmi hash vengono utilizzati per la protezione dei dati sia per motivi di integrità, ovvero per proteggere dalle modifiche, che per motivi di privacy, ovvero per proteggere dalla visualizzazione. Gli algoritmi hash vengono utilizzati principalmente per l'integrità dei dati.

Di seguito è riportato un elenco degli algoritmi consigliati dall'applicazione:

Vedere anche

Concetti

Servizi di crittografia

Servizi di crittografia

Altre risorse

Attività di crittografia

Cronologia delle modifiche

Data

Cronologia

Motivo

Luglio 2010

Ampliamento dell'argomento.

Miglioramento delle informazioni.