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:
Classe del tipo di algoritmi, ad esempio SymmetricAlgorithm, AsymmetricAlgorithm o HashAlgorithm. Questo livello è astratto.
Classe degli algoritmi che eredita da una classe del tipo di algoritmi, ad esempio Aes, RC2 o ECDiffieHellman. Questo livello è astratto.
Implementazione di una classe degli algoritmi che eredita da una classe degli algoritmi, ad esempio AesManaged, RC2CryptoServiceProvider o ECDiffieHellmanCng. Questo livello è implementato completamente.
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:
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:
Privacy dei dati:
Integrità dei dati:
Firma digitale:
Scambio delle chiavi:
Generazione di numeri casuali:
Generazione di una chiave da una password:
Vedere anche
Concetti
Altre risorse
Cronologia delle modifiche
Data |
Cronologia |
Motivo |
---|---|---|
Luglio 2010 |
Ampliamento dell'argomento. |
Miglioramento delle informazioni. |