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

Я включил режим соответствия 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.


person ScArcher2    schedule 17.02.2011    source источник


Ответы (3)


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

<enforceFIPSPolicy enabled="false"/>

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

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

person Chris Haas    schedule 17.02.2011
comment
Вы также можете попробовать закрыть все открытые файлы в среде IDE, а затем выполнить сборку. Кто-то недавно написал об этой проблеме в Microsoft Connect: connect.microsoft.com/VisualStudio/feedback/details/644602/ - person indiv; 18.02.2011
comment
Установка этого значения в false предотвратит создание CLR исключений InvalidOperationExceptions из конструктора несертифицированных алгоритмов и реализаций. Я не уверен, что это то, что вы хотите сделать, если вам действительно требуется использовать алгоритмы, сертифицированные FIPS. - person SwDevMan81; 18.02.2011
comment
@ SwDevMan81, в какой-то степени это правда. Однако этот параметр повлияет только на Visual Studio, а не на создаваемую в ней программу. Если вы включите эту политику для VS и попытаетесь использовать MD5, вы получите сообщение об ошибке. - person Chris Haas; 18.02.2011
comment
Обходной путь в ссылке, опубликованной indiv, кажется, работает для меня. Если я закрою все файлы, он будет успешно построен. - person NickDK; 23.06.2011
comment
Фу. Это enforceFIPSPolicy, а не enableFIPSPolicy. Спасибо! - person Matt Davis; 11.12.2013

Здесь есть список алгоритмов, совместимых с FIPS. Более полный список находится здесь

Алгоритмы, совместимые с FIPS:

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

HMACSHA1

MACTripleDES

SHA1CryptoServiceProvider

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

DESCryptoServiceProvider

TripleDESCryptoServiceProvider

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

DSACryptoServiceProvider

RSACryptoServiceProvider

Поэтому вам нужно будет использовать SHA1CryptoServiceProvider и TripleDESCryptoServiceProvider, чтобы соответствовать требованиям FIPS.

person SwDevMan81    schedule 17.02.2011
comment
При использовании этой комбинации алгоритмов я все равно получаю указанную выше ошибку. - person ScArcher2; 18.02.2011
comment
Как указал indiv, вам может потребоваться закрыть все файлы и перезапустить VS. Возможно, вы даже захотите создать новые файлы csproj и sln. - person SwDevMan81; 18.02.2011
comment
Я считаю, что HMACSHA1 соответствует алгоритму SHA1CSP. Я ненавижу то, что документация .net не сообщает вам, какие официальные названия алгоритмов, и какая версия одобрена FIPS и т. Д. - person Dexter; 17.07.2012

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

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

person public wireless    schedule 03.01.2013