2015-09-29 4 views
5

Я использую .net 3.5, и я пытаюсь сделать свое приложение совместимым с FIPS. Я не использую ни один из алгоритмов, отличных от FIPS, но я все равно получаю это когда я запускаю его на рабочем сервере.Как проверить, что приложение Asp.NET готово к FIPS

Эта реализация не является частью криптографических алгоритмов проверки подлинности FIPS Windows.

Вот список алгоритмов, которые я проверил, и я уверен, что я их не использовал.

  • HMACMD5
  • HMACRIPEMD160
  • HMACSHA256
  • HMACSHA384
  • HMACSHA512
  • MD5CryptoServiceProvider
  • RC2CryptoServiceProvider
  • RijndaelManaged
  • RIPEMD160Managed
  • SHA1Managed

Как я могу найти, где именно проблема или любые другие идеи?

+2

Жесткий путь: присоедините отладчик (например, OllyDbg) к своей программе, прежде чем он остановится, и начнет поиск в памяти для этого сообщения, а затем установите точку останова для чтения памяти в этом месте, - она ​​будет приостанавливаться всякий раз, когда это сообщение будет доступно, и вы, вероятно, сможете развернуть стек и посмотреть, какие методы/классы/модули запускают это предупреждение. Однако не ожидайте, что отладчик собственного кода будет очень подробным с управляемым кодом. –

ответ

2

Когда вы говорите «совместимый с FIPS», я предполагаю, что вы хотите обеспечить соответствие FIPS 140 в режимах криптографических библиотек Windows и .Net, изменив Local Security Policy settings.

Проблема с соблюдением FIPS 140 (обычно уровень 1 последней версии стандарта, FIPS 140-2) с использованием этого механизма, как вы обнаружили, заключается в том, что он предотвращает создание экземпляров несовместимых с FIPS 140 алгоритмов, даже если они не используются для целей, связанных с безопасностью.

Предположительно, вы проверили свой код на наличие ссылок на несоответствующие алгоритмы с помощью инструмента, такого как ildasm или Reflector. В противном случае отлаживайте свой код и посмотрите на трассировку стека InvalidOperationException, чтобы увидеть, где проблема.

Один простой способ добиться этого - использовать общие классы и не вызывать конструкторы напрямую. Например, если вы хотите использовать Advanced Encryption Standard (AES), вместо:

// Use the faster .Net implementation of AES. Not FIPS 140 compliant. 
using (AesManaged aesManaged = new AesManaged()) 
{ 
    // Do something 
} 

использования:

// Let .Net workout which implementation of AES to use. Will use 
// a FIPS compliant implementation if FIPS is turned on. 
using (Aes aes = Aes.Create()) 
{ 
    // Do something 
} 

Помимо кода, проверьте сторонние библиотеки, которые вы используете. Вы можете использовать аналогичные инструменты для вышеуказанного, чтобы проверить любые ссылки из их кода. Если вы тщательно проверили свой код, это, вероятно, проблема. Обратите внимание, что дизассемблирование стороннего кода может быть нарушением авторских или лицензионных соглашений.

Также проверьте свою конфигурацию SSL. Например, цифровой сертификат, используемый для SSL, не может использовать MD5. Вы также должны использовать TLS 1.0 или новее.

Однако форсирование соответствия Windows FIPS 140 делает это с трудом. Большинство клиентов, включая правительство США, не требуют использования только совместимых с FIPS алгоритмов (или технически, реализации этих алгоритмов).Например, они совершенно счастливы использовать MD5 для создания хэш-ключа строки.

Вместо этого клиенты хотят, чтобы ваш продукт защищался с помощью криптографии, которая должна быть защищена приложением FIPS 140 одобренных алгоритмов. Другими словами:

  1. Идентифицировать каждую вещь ваш продукт должен защищать
  2. защитить их с помощью FIPS 140 совместимые библиотеки
  3. Использование инструментов (например, статический анализ), обзор кода и/или аудита третьей стороной продемонстрировать исполнение.

Также обратите внимание, что включение режима FIPS 140 не обязательно делает Windows или ваш продукт более безопасным. Безопасность намного сложнее, чем выбор одного криптографического алгоритма над другим (или, в частности, конкретная реализация алгоритма над другой реализацией). Microsoft no longer recommends this be turned on by default.

 Смежные вопросы

  • Нет связанных вопросов^_^