2012-06-29 13 views
7

Sto cercando di capire come utilizzare MCSAPI per eseguire la crittografia AES con il provider di servizi crittografici ncipher (CSP). Quello che mi imbarazza è che il costruttore AesCryptoServiceProvider non accetta una classe CspParameters, utilizzata per specificare nCipher come csp.utilizzando il ncipher CSP con MSCAPI per eseguire la crittografia AES

CspParameters cp = new CspParameters(24, "nCipher Enhanced RSA and AES Cryptographic Provider"); 
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(CspParameters) // works fine 
AesCryptoServiceProvider aes = new AesCryptoServiceProvider(); // Constructor takes no parameters. 

Da quello che posso vedere le classi Rijndael, inoltre, non hanno un modo per specificare altri terzi CSP. Cosa mi manca? C'è un modo per inizializzare tutto il mio sistema per caricare un CSP per tutte le successive chiamate crittografiche? Suppongo che stia usando il CSP per gestire semplicemente la chiave simmetrica e quindi utilizzare il valore predefinito AesCryptoServiceProvider per crittografare/decrittografare? RSACryptoServiceProvider(CspParameters) funziona bene. Ma sto volendo fare la crittografia simmetrica. Ho bisogno di farlo nel framework C# .NET.

+0

Ciao user1491745 e benvenuto. Ho modificato i tag in modo che questa domanda diventi più visibile (ad esempio, se si utilizza C# anziché C# -4.0, più persone visualizzano questa domanda). Inoltre ho messo una taglia su di esso sperando che otterrà un po 'di attenzione. –

risposta

1

AES è un algoritmo simmetrico, quindi non è possibile utilizzare CspParameters.

nCipher è uno standard hardware (vedere http://technet.microsoft.com/en-us/library/dd277354), quindi può essere che il token possa calcolare l'algoritmo AES, ma poiché tutti (Alice e Bob) hanno bisogno di conoscere la chiave segreta non vi è alcun vantaggio per calcolare o archiviare chiave su un token hardware.

È possibile vedere come utilizzare AesCryptoServiceProvider nello MSDN example, forse si desidera utilizzare AesManaged (c'è anche un esempio).

8

Microsoft CAPI non supporta chiavi protette da hardware per algoritmi simmetrici. Questa è una mancanza dell'API, non del CSP nCipher. Le uniche chiavi che possono essere protette da hardware sono la coppia di chiavi Signing ed Exchange del contenitore CAPI. Qualsiasi chiave simmetrica creata viene generata e utilizzata nel software.

È possibile eseguire il wrapping di chiavi simmetriche (software) nelle chiavi del contenitore (hardware) per la protezione e la persistenza, ma questo non rende le chiavi simmetriche protette da hardware.

Se si sta implementando su Vista, Server 2008 o versioni successive, si dovrebbe considerare CAPI Next Generation o CNG: supporta la generazione e l'utilizzo di chiavi simmetriche protette da hardware e il CSP CNS di Thales/nCipher è supportato. Tuttavia, il CSP CNles di Thales/nCipher non supporta le chiavi simmetriche persistenti, quindi per farlo è necessario avvolgerle in una coppia di chiavi del contenitore come faresti con la vecchia scuola CAPI.

Lavoro per Thales ma non parlo per loro: contatta il supporto di Thales se hai domande e/o vuoi scoprire come ottenere supporto per gli sviluppatori.

+0

Anche le risposte negative sono risposte, e se nessuno ha una risposta migliore domani ti assegnerò la taglia. –

+0

Sander ringrazia per il commento, questa era la stessa informazione che sono riuscito a ottenere dal rappresentante di Thales. Sono andato avanti e ho implementato la nostra soluzione utilizzando la tecnica dell'involucro chiave. – user1491745

+0

Ragazzi Qual è il modo corretto per riconoscere che un utente ha risposto a sufficienza alla mia domanda originale? Ho già votato la sua risposta. C'è niente altro? Grazie ancora. – user1491745