FIPS-совместимый HashAlgorithm на WinXP?
Как я могу использовать C# в FIPS-совместимом окне WinXP SP2 для уникального хэширования содержимого данного файла? Я не беспокоюсь о производительности (пока?).
Надеемся, что кто-то может указать на исключение из "правила", но кажется, что классы "*ServiceProvider" соответствуют FIPS и недоступны в WinXP, в то время как классы "*Managed" доступны в WinXP и не соответствуют FIPS.
И MD5 отсутствует, потому что он не является уникальным (да, даже такая небольшая вероятность неприемлема для моего проекта).
2 ответа
Кажется, они совместимы с Fips:
HMACSHA1, MACTripleDES и SHA1CryptoServiceProvider
ссылка: http://blog.aggregatedintelligence.com/2007/10/fips-validated-cryptographic-algorithms.html
Если все, что вам нужно, это провайдер хэширования, который не будет отключать ошибки, если на компьютере Windows включен параметр политики, совместимый с FIPS, в реестре, тогда вы можете использовать SHA1CryptoServiceProvider, который совместим с FIPS и требует только.Net 2.0 и XP. SP2.
Но - если вам действительно нужна настоящая FIPS-совместимая реализация по соображениям безопасности и политики, тогда краткий ответ: либо обновите клиенты до Win XP SP3 (или более новой ОС), либо посмотрите на использование сторонней криптографической проверки, проверенной FIPS. Поставщики услуг (CSP).
Хотя Win XP SP2 поддерживает FIPS-совместимую реализацию SHA1 (SHACryptoServiceProvider), которая будет работать в FIPS-совместимом режиме (параметр реестра), SHA1 не предполагается использовать для новых реализаций после 2010 года и может больше не быть FIPS-совместимым вообще, в зависимости от использование (т.е. использование для генерации случайных чисел против хеширования).
Если вы можете получить хотя бы XP SP3, то вы можете использовать SHA256CryptoServiceProvider или SHA512CryptoServiceProvider, которые оба совместимы с FIPS.