Соответствие TripleDESCryptoServiceProvider FIPS 140-2 - PullRequest
7 голосов
/ 06 октября 2010

Я использую TripleDESCryptoServiceProvider System.Security.Cryptography следующим образом:

  TripleDESCryptoServiceProvider CreateCipher()
        {
            TripleDESCryptoServiceProvider cipher = new TripleDESCryptoServiceProvider();
            cipher.KeySize = 192;
            cipher.BlockSize = 64;
            cipher.Padding = PaddingMode.ISO10126;
            cipher.Mode = CipherMode.CBC;
            return cipher;
        }

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

Короче говоря, кто-нибудь знает, к какому номеру сертификата относится этот класс / метод шифрования? Или это зависит от платформы? (Это то, что я собираю.)

Ответы [ 3 ]

6 голосов
/ 08 октября 2010

Сертификация FIPS 140-2 распространяется как на алгоритмы, так и на модули. Реализации алгоритма проходят сертификацию, пройдя серию тестов. Модули сертифицируются, когда они отвечают всем требованиям FIPS. Одним из таких требований является предоставление криптографических услуг только с использованием FIPS-сертифицированных алгоритмов (и не-FIPS-сертифицированных алгоритмов, используемых FIPS-утвержденным способом, таким как обмен ключами Диффи-Хеллмана).

Triple-DES является FIPS-сертифицированным алгоритмом и поэтому может получить сертификат FIPS. Это одна часть головоломки.

Следующая статья - выяснить, какой модуль предоставляет Triple-DES, и сертифицирован ли этот модуль по FIPS. Вы уже связали со страницей, где Microsoft перечисляет все их одобренные FIPS модули. Это все, что вам нужно знать. Я думаю, что в Windows Vista все в конечном итоге проходит через bcrypt.dll.

Конечно, вы можете перейти прямо к источнику и искать модули самостоятельно. Взять, к примеру, сертификат # 1001 для Microsoft bcrypt.dll в Windows Vista. Вы можете видеть, что этот модуль получил сертификат алгоритма для его реализации Triple-DES (сертификат # 656), поэтому вы можете использовать Triple-DES из этого модуля.

Итак, как вы узнаете, что используете FIPS-сертифицированный модуль? Вы включаете режим FIPS в Windows . Если вы не включаете режим FIPS, вы не используете сертифицированный FIPS алгоритм в режиме работы, одобренном FIPS. В Windows, если вы попытаетесь использовать алгоритм не-FIPS в режиме FIPS, вы получите исключение.

Доводим до моего последнего замечания, что хороший способ узнать, одобрен ли алгоритм для использования в режиме FIPS - это включить режим FIPS и попробовать его!

Кстати, на этой странице сертификата Triple-DES перечислены все утвержденные режимы работы Triple-DES:

ECB = TDEA Electronic Codebook
TCBC = TDEA Cipher Block Chaining
TCBC-I = TDEA Cipher Block Chaining - Interleaved
TCFB = TDEA Cipher Feedback
TCFB-P = TDEA Cipher Feedback - Pipelined
TOFB = TDEA Output Feedback
TOFB-I = TDEA Output Feedback - Interleaved

И следующие параметры клавиш.

KO 1 = Three-key Triple DES
KO 2 = Two-key Triple DES
3 голосов
/ 06 октября 2010

У этого есть список алгоритмов, соответствующих FIPS.

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

Алгоритмы хеширования

HMACSHA1

MACTripleDES

SHA1CryptoServiceProvider

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

DESCryptoServiceProvider

TripleDESCryptoServiceProvider

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

DSACryptoServiceProvider

* RSACryptoServiceProvider

Я также задавал аналогичный вопрос об AES.

1 голос
/ 06 октября 2010

Лично я бы использовал AES для своего шифрования, поскольку он «легче» и более безопасен, чем TripleDES, на самом деле, я думаю, что на данный момент это алгоритм de facto.Если AES не соответствует стандартам, я был бы удивлен.

...