Modello di crittografia di .NET Framework.NET Framework Cryptography Model

.NET Framework fornisce le implementazioni di numerosi algoritmi di crittografia standard.The .NET Framework provides implementations of many standard cryptographic algorithms. Questi algoritmi sono facili da usare e le loro proprietà predefinite sono il più sicure possibile.These algorithms are easy to use and have the safest possible default properties. Inoltre, il modello di crittografia di .NET Framework di ereditarietà degli oggetti, progettazione tramite flusso e configurazione è estremamente estendibile.In addition, the .NET Framework cryptography model of object inheritance, stream design, and configuration is extremely extensible.

Ereditarietà degli oggettiObject Inheritance

Il sistema di sicurezza di .NET Framework implementa un modello estendibile di ereditarietà delle classi derivate.The .NET Framework security system implements an extensible pattern of derived class inheritance. La gerarchia è la seguente:The hierarchy is as follows:

Usando questo modello di classi derivate, è possibile aggiungere in modo semplice un nuovo algoritmo o una nuova implementazione di un algoritmo esistente.Using this pattern of derived classes, it is easy to add a new algorithm or a new implementation of an existing algorithm. Ad esempio, per creare un nuovo algoritmo a chiave pubblica, si eredita dalla classe AsymmetricAlgorithm.For example, to create a new public-key algorithm, you would inherit from the AsymmetricAlgorithm class. Per creare una nuova implementazione di un algoritmo specifico, è necessario creare una classe derivata non astratta di tale algoritmo.To create a new implementation of a specific algorithm, you would create a non-abstract derived class of that algorithm.

Modalità di implementazione degli algoritmi in .NET FrameworkHow Algorithms Are Implemented in the .NET Framework

Come esempio delle diverse implementazioni disponibili per un algoritmo, considerare gli algoritmi simmetrici.As an example of the different implementations available for an algorithm, consider symmetric algorithms. La base per tutti gli algoritmi simmetrici è l'oggetto SymmetricAlgorithm, ereditato dagli algoritmi seguenti:The base for all symmetric algorithms is SymmetricAlgorithm, which is inherited by the following algorithms:

  1. Aes

  2. DES

  3. RC2

  4. Rijndael

  5. TripleDES

L'oggetto Aes viene ereditato da due classi: AesCryptoServiceProvider e AesManaged.Aes is inherited by two classes: AesCryptoServiceProvider and AesManaged. La classe AesCryptoServiceProvider è un wrapper per l'implementazione dell'API di crittografia (CAPI, Cryptography API) Windows di Aes, mentre la classe AesManaged viene scritta interamente in codice gestito.The AesCryptoServiceProvider class is a wrapper around the Windows Cryptography API (CAPI) implementation of Aes, whereas the AesManaged class is written entirely in managed code. Vi è anche un terzo tipo di implementazione, Cryptography Next Generation (CNG), oltre alle implementazioni gestita e CAPI.There is also a third type of implementation, Cryptography Next Generation (CNG), in addition to the managed and CAPI implementations. Un esempio di algoritmo CNG è ECDiffieHellmanCng.An example of a CNG algorithm is ECDiffieHellmanCng. Gli algoritmi CNG sono disponibili in Windows Vista e versioni successive.CNG algorithms are available on Windows Vista and later.

È possibile scegliere l'implementazione più appropriata.You can choose which implementation is best for you. Le implementazioni gestite sono disponibili in tutte le piattaforme che supportano .NET Framework.The managed implementations are available on all platforms that support the .NET Framework. Le implementazioni CAPI sono disponibili nei sistemi operativi precedenti e non vengono più sviluppate.The CAPI implementations are available on older operating systems, and are no longer being developed. CNG è l'implementazione più recente, su cui si baseranno le nuove attività di sviluppo.CNG is the very latest implementation where new development will take place. Tuttavia, le implementazioni gestite non sono certificate da FIPS (Federal Information Processing Standards) e potrebbero essere più lente rispetto alle classi wrapper.However, the managed implementations are not certified by the Federal Information Processing Standards (FIPS), and may be slower than the wrapper classes.

Progettazione tramite flussoStream Design

Common Language Runtime usa una progettazione orientata al flusso per l'implementazione di algoritmi simmetrici e algoritmi hash.The common language runtime uses a stream-oriented design for implementing symmetric algorithms and hash algorithms. La base di questa progettazione è la classe CryptoStream, che deriva dalla classe Stream.The core of this design is the CryptoStream class, which derives from the Stream class. Gli oggetti di crittografia basati sul flusso supportano una singola interfaccia standard (CryptoStream) per la gestione della porzione di trasferimento di dati dell'oggetto.Stream-based cryptographic objects support a single standard interface (CryptoStream) for handling the data transfer portion of the object. Poiché tutti gli oggetti sono basati su un'interfaccia standard, è possibile concatenare più oggetti (ad esempio un oggetto hash seguito da un oggetto di crittografia) ed eseguire più operazioni sui dati senza che sia necessaria un'archiviazione intermedia.Because all the objects are built on a standard interface, you can chain together multiple objects (such as a hash object followed by an encryption object), and you can perform multiple operations on the data without needing any intermediate storage for it. Il modello di flusso consente inoltre di creare oggetti da oggetti più piccoli.The streaming model also enables you to build objects from smaller objects. Ad esempio, un algoritmo di crittografia e hash combinato può essere visto come un singolo oggetto flusso, anche se questo oggetto può essere costituito da un set di oggetti flusso.For example, a combined encryption and hash algorithm can be viewed as a single stream object, although this object might be built from a set of stream objects.

Configurazione della crittografiaCryptographic Configuration

La configurazione della crittografia consente di risolvere un'implementazione specifica di un algoritmo in un nome di algoritmo, garantendo estendibilità delle classi di crittografia .NET Framework.Cryptographic configuration lets you resolve a specific implementation of an algorithm to an algorithm name, allowing extensibility of the .NET Framework cryptography classes. È possibile aggiungere la propria implementazione hardware o software di un algoritmo e mappare l'implementazione al nome di algoritmo desiderato.You can add your own hardware or software implementation of an algorithm and map the implementation to the algorithm name of your choice. Se un algoritmo non è specificato nel file di configurazione, vengono usate le impostazioni predefinite.If an algorithm is not specified in the configuration file, the default settings are used. Per ulteriori informazioni sulla configurazione della crittografia, vedere configurazione delle classi di crittografia.For more information about cryptographic configuration, see Configuring Cryptography Classes.

Scelta di un algoritmoChoosing an Algorithm

È possibile scegliere un algoritmo per motivi diversi: ad esempio, per l'integrità dei dati, per la privacy dei dati o per generare una chiave.You can select an algorithm for different reasons: for example, for data integrity, for data privacy, or to generate a key. Gli algoritmi simmetrici e hash sono finalizzati alla protezione dei dati per motivi di integrità (proteggere da eventuali modifiche) o di privacy (impedire la visualizzazione).Symmetric and hash algorithms are intended for protecting data for either integrity reasons (protect from change) or privacy reasons (protect from viewing). Gli algoritmi hash vengono usati principalmente per l'integrità dei dati.Hash algorithms are used primarily for data integrity.

Ecco un elenco degli algoritmi consigliati in base all'applicazione:Here is a list of recommended algorithms by application:

Vedere ancheSee Also

Cryptographic ServicesCryptographic Services