2011-02-17 12 views
6

He activado el modo de compatibilidad con FIPS en Windows 7, pero ahora mi código falla al compilar con el siguiente error:¿Cómo se usan los algoritmos criptográficos validados por FIPS con Visual Studio 2010 y Windows 7?

Source file 'whatever.cs' could not be opened ('This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.') 

estoy usando SHA1 (hash) y TripleDES (cifrado) de cifrado. También probé SHA512 y AES (clave de 256 bits).

No puedo seguir construyendo el proyecto, pero necesito compilarlo para usar algoritmos compatibles con FIPS.

Respuesta

8

Trate de hacer una aplicación de C# en blanco y la compilación, debería fallar por la misma razón. En definitiva, el problema es Visual Studio, no tu código. Siga el instructions here, y agregue esto al expediente de su IDE config (Devenv.exe.config/VCSExpress.exe.config/vbexpress.exe.config):

<enforceFIPSPolicy enabled="false"/> 

Esto no quiere decir que su aplicación no se ejecuta en modo compatible con FIPS, significa que ISN Estudio Visual' t ahora El código no conforme aún se compilará, pero si intenta ejecutarlo, recibirá una excepción System.InvalidOperationException.

Creo, pero no estoy seguro, que los algoritmos que VS usa para generar ciertos valores hash en las bibliotecas no son realmente compatibles con FIPS.

+5

También puedes intentar cerrar todos los archivos abiertos en el IDE y luego compilarlos. Alguien escribió el tema recientemente en Microsoft Connect: https://connect.microsoft.com/VisualStudio/feedback/details/644602/c-solution-will-not-build-with-fips-compliant-security-turned-on- and-some-source-files-open-in-ide – indiv

+1

Si se establece en false se evitará que CLR arroje InvalidOperationExceptions del constructor de algoritmos e implementaciones no certificadas. No estoy seguro de que esto sea lo que desea hacer si se requiere que use realmente algoritmos certificados por FIPS. – SwDevMan81

+1

@ SwDevMan81, eso es cierto hasta cierto punto. Sin embargo, esa configuración solo afectará a Visual Studio y no al programa que se está creando dentro. Si activa esta política para VS e intenta usar MD5, obtendrá un error. –

9

This tiene una lista de algoritmos que cumplen con FIPS. Una lista más completa es here

FIPS compliant Algorithms:

Hash algorithms

HMACSHA1

MACTripleDES

SHA1CryptoServiceProvider

Symmetric algorithms (use the same key for encryption and decryption)

DESCryptoServiceProvider

TripleDESCryptoServiceProvider

Asymmetric algorithms (use a public key for encryption and a private key for decryption)

DSACryptoServiceProvider

RSACryptoServiceProvider

lo que tendrá que utilizar SHA1CryptoServiceProvider y TripleDESCryptoServiceProvider ser compatible con FIPS

+0

Cuando se utiliza la combinación de algoritmos Todavía recibo el error que se enumeran más arriba. – ScArcher2

+0

Como indiv señaló que es posible que deba cerrar todos los archivos y reiniciar VS. Es posible que incluso desee crear un nuevo csproj y archivos sln. – SwDevMan81

+1

Creo que HMACSHA1 corresponde al algoritmo SHA1CSP. Odio cómo la documentación de .net no te dice qué algoritmos son los nombres oficiales, y qué versión es aprobada por FIPS, etc. – Dexter

0

You can also try closing all open files in the IDE and then building. Someone wrote up the >issue recently at Microsoft Connect: connect.microsoft.com/VisualStudio/feedback/details/644602/… – indiv

Eso también me funcionó con Visual Studio 2010. En mi caso tuve que cerrar todos los archivos abiertos y reinicie Visual Studio

Cuestiones relacionadas