Как вы используете проверенные криптографические алгоритмы FIPS с Visual Studio 2010 и Windows 7? - PullRequest
6 голосов
/ 17 февраля 2011

Я включил режим соответствия FIPS в Windows 7, но теперь мой код не компилируется со следующей ошибкой:

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

Я использую шифрование SHA1 (хэширование) и TripleDes (шифрование). Я также попробовал SHA512 и AES (256-битный ключ).

Я больше не могу заставить проект собираться, но мне нужно скомпилировать его, чтобы использовать алгоритмы, соответствующие FIPS.

Ответы [ 3 ]

9 голосов
/ 17 февраля 2011

У этого есть список FIPS-совместимых алгоритмов. Более полный список здесь

FIPS-совместимые алгоритмы:

Хеш-алгоритмы

HMACSHA1

MACTripleDES

SHA1CryptoServiceProvider

Симметричные алгоритмы (используйте тот же ключ для шифрования и дешифрования)

DESCryptoServiceProvider

TripleDESCryptoServiceProvider

Асимметричные алгоритмы (использовать общедоступные ключ для шифрования и закрытый ключ для расшифровки)

DSACryptoServiceProvider

RSACryptoServiceProvider

Так что вам нужно будет использовать SHA1CryptoServiceProvider и TripleDESCryptoServiceProvider, чтобы соответствовать FIPS

8 голосов
/ 18 февраля 2011

Попробуйте создать пустое приложение на C # и скомпилировать его, оно должно завершиться ошибкой по той же причине. В конечном счете, проблема в Visual Studio, а не в вашем коде. Следуйте инструкциям здесь и добавьте это в файл конфигурации вашей IDE (Devenv.exe.config / VCSExpress.exe.config / vbexpress.exe.config):

<enforceFIPSPolicy enabled="false"/>

Это не означает, что ваше приложение не работает в FIPS-совместимом режиме, это означает, что Visual Studio не сейчас. Несоответствующий код все равно будет компилироваться, но если он попытается выполнить, вы получите исключение System.InvalidOperationException.

Я думаю, но не знаю наверняка, что алгоритмы, которые VS использует для генерации определенных хэшей в библиотеках, на самом деле не соответствуют FIPS.

0 голосов
/ 03 января 2013

Вы также можете попробовать закрыть все открытые файлы в IDE и затем создать. Кто-то недавно написал о проблеме в Microsoft Connect: connect.microsoft.com/VisualStudio/feedback/details/644602/…… индивиду

Это также работало для меня с Visual Studio 2010. В моем случае мне пришлось закрыть все открытые файлы, а также перезапустить Visual Studio

...