2010-10-29 9 views
5

Ho lavorato per rendere conforme la nostra applicazione .NET FIPS e ho scoperto che le classi di crittografia Managed (come AESManaged) non sono conformi a FIPS. Ho letto diversi altri articoli e domande su quali classi sono conformi, come ad esempio When will C# AES algorithm be FIPS compliant? e http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/e0b4493f-6e20-4b75-a118-6b6e5d26a2a6. Sembra che le classi CryptoServiceProvider siano compatibili con FIPS, ma le classi gestite no.Perché le classi di crittografia "Managed" .NET non sono consentite se il criterio di conformità FIPS di Windows è abilitato?

Mi chiedo se qualcuno può spiegare la differenza tra le classi CryptoServiceProvider e le classi Managed? E se qualcuno può spiegare perché le classi CryptoServiceProvider sono FIPS compatibili, ma le classi Gestite non lo sono, quindi posso spiegare al mio capo perché devo riscrivere i nostri metodi di crittografia. Sono fondamentalmente diversi sotto il cofano? Oppure MS non ha semplicemente sottoposto le classi Managed alla certificazione NIST? Se le classi Managed includono solo le classi CryptoServiceProvider, perché le classi Managed non sono automaticamente conformi al FIPS? E se scrivo una classe per racchiudere una classe compatibile con FIPS in una classe più facilmente utilizzabile, il mio software non è più compatibile con FIPS?

Grazie.

+0

Grazie per avermi fatto questa domanda. Stavo per pubblicare una domanda sul perché ci fossero almeno 3 implementazioni in .NET per così tante delle diverse classi di crittografia, ma questo non solo fornisce "un" motivo, se non "il" motivo ". E mentre non stavo nemmeno pensando alle classi da un punto di vista della conformità FIPS, conoscendo queste informazioni grazie al tuo post e la risposta di Eugene sicuramente mi richiedono di usare le varianti di CryptoAPI - thx. – thepip3r

risposta

5

"FIPS-compliant" è un termine errato: si parla di certificati FIPS. La differenza è che se l'algoritmo deve essere compatibile con l'implementazione di riferimento e le implementazioni di terze parti, allora deve essere conforme al FIPS corrispondente che descrive questo algoritmo. Ma la certificazione è una storia diversa.

Le classi CryptoServiceProvider chiamano CryptoAPI (API Windows non gestita) per eseguire effettive operazioni crittografiche e alcuni moduli CryptoAPI sono certificati FIPS (per scopi commerciali). Ovviamente non c'erano abbastanza ragioni per certificare le classi gestite .NET - se hai bisogno di moduli certificati, usa quelli di CryptoAPI. La certificazione richiede molto tempo, sforzi e una notevole quantità di denaro.

Suppongo anche che ci possano essere motivi tecnici che impediscono la certificazione dei moduli gestiti, ma questa è solo una supposizione. Può accadere che la natura di .NET (IL e macchina virtuale) sia in contrasto con alcuni requisiti definiti per il processo di certificazione, ovvero non possono essere certificati.

Per quanto riguarda le proprie classi wrapper, esistono diverse società che forniscono formazione e certificazione del personale. Offrono anche servizi di consulenza. Spero che qualcuno di tale servizio risponda qui, ma puoi contattarli anche se ne hai bisogno.

+2

Grazie, la tua spiegazione ha aiutato. Ho dato un'occhiata all'implementazione delle classi CryptoServiceProvider e ho realizzato che l'implementazione sarebbe esattamente la stessa delle classi gestite. Fino a quel momento non mi ero reso conto di quello che stavi dicendo, che le classi CryptoAPI erano appena state incapsulate nel codice API di Windows e che avevano superato la certificazione. Ma le classi gestite sono state completamente scritte da zero in codice .NET gestito, e poiché la fonte non era in alcun modo derivata dal codice CryptoAPI, allora devono passare la loro certificazione NIST. Ha perfettamente senso ora. Grazie ancora. – Hydroslide

Problemi correlati