2016-03-29 1 views
1

У меня есть OpenSSL, предоставленные двоичные файлы от третьего лица (libeay32.dll и ssleay32.dll). Мне нужно проверить и проверить, используют ли предоставленные библиотеки времени выполнения криптографические алгоритмы, придерживающиеся FIPS 140-2. Есть ли способ проверить это?Как проверить, используются ли библиотеки openssl с проверенной криптографией FIPS

ответ

0

Есть ли способ проверить это?

Да, существует несколько способов. Проще всего запустить openssl version из командной строки. Если его FIPS подтверждено криптографию, то это будет что-то вроде:

> openssl version 
Version: OpenSSL 1.0.1f-fips 6 Jan 2014 

Связанный вопрос для этого на Linux находится в How to check FIPS 140-2 support in OpenSSL?. Windows достаточно различна, поэтому этот вопрос должен оставаться открытым.

Хотя первый вопрос - это Linux, вы можете сделать то же самое в Windows, используя dumpbin, find и strings. Обязательно запустите Developer Prompt (а не обычную командную строку), чтобы инструменты, такие как dumpbin, находились на пути.

Вот некоторые из вещей, которые вы можете проверить (из набора слайдов обсуждается ниже):

  • Ожидаемые пространства пользователя символы присутствуют
    • FIPS_mode_set(), FIPS_module_mode_set(), FIPS_mode() , FIPS_module_mode()
  • Ожидаемые внутренние символы присутствуют
    • FIPS_text_start(), FIPS_text_end(), FIPS_rodata_start [], FIPS_rodata_end [], FIPS_signature [20];
  • FIPS_set_mode (1) называется и не подведет
    • ERR_get_error возвращает 0x0f06d065
    • CRYPTO_R_FIPS_MODE_NOT_SUPPORTED вернулся FTW!
  • Использование строки
    • «FIPS 2.0 должен ПРОВЕРЯЕМЫЕ модуль 14 Мар 2012»
    • «FIPS 2.0.1 ПРОВЕРЯЕМЫЕ тестовый модуль 12 июн 2012»
    • и т.д.
  • Известные Ответ Тесты
    • Двоичные данные строки в разделе RO исполняемого файла
    • Проверьте * .c файлы для статических значений
    • Различных подкаталогов ОПЗА КЦРА, жел, ..., ECDSA, DSA ...
    • SELFTEST файлов: aes_selftest.c, dsa_selftes.с, ...

Вот пример бинарной строки, которая будет присутствовать в fips/rand/fips_drbg_selftest.h:

0x2e,0xbf,0x98,0xf9,0x85,0x27,0x8b,0xff, 
0x36,0xb9,0x40,0x0b,0xc0,0xa1,0xa0,0x13, 
0x20,0x06,0xcc,0xe6,0x2a,0x03,0x77,0x7d, 
0xee,0xde,0xcc,0x34,0xe3,0xcd,0x77,0xea, 
0xd0,0x3e,0xbe,0xdd,0xf6,0x15,0xfb,0xa7, 
0xd7,0x8e,0xd0,0x2e,0x2f,0x82,0x4c,0xc7, 
0x87,0xb1,0x6f,0xc5,0xf8,0x5c,0x78,0xde, 
0x77,0x9b,0x15,0x9a,0xb9,0x3c,0x38,0x38 

Я также загрузил слайд колода у меня есть на эту тему в OpenSSL вики. Его называют Building Applications using OpenSSL Validated Cryptography: Notes from the Field for Developers and Auditors. Вы хотите просмотреть материал, начиная со Слайда 18.

Я построил слайд-колоду для OWASP, но не было никакого интереса к ее получению. Я знаю, что Stack Overflow хмурится ссылками, подобными той, что есть в вики OpenSSL, но я не знаю, как предоставить здесь более 35 слайдов.

+0

Большое спасибо JWW. Я использовал 'dumpbin/ALL libeay32.dll', чтобы получить информацию о libeay32.dll. Как вам предложили, я проверил символы пользовательского пространства и внутренние символы. Но я мог найти только символы пользовательского пространства, а не все внутренние символы. Также упомянутые строки отсутствуют в ssl runtime libeay32.dll. –

+0

7E1EFCE0: 66 69 70 73 20 6D 6F 64 65 20 61 6C 72 65 61 64 fips mode alread 7E1EFCF0: 79 20 73 65 74 00 00 00 66 69 6E 67 65 72 70 72 y установлено ... fingerpr7E1EFD00: 69 6E 74 20 64 6F 65 73 20 6E 6F 74 20 6D 61 74 int не соответствует 7E1EFD10: 63 68 20 73 65 67 6D 65 6E 74 20 61 6C 69 61 73 ch сегментный псевдоним 7E1EFD20: 69 6E 67 00 66 69 6E 67 65 72 70 72 69 6E 74 20 ing.fingerprint –

+0

так частично проверен. Означает ли это, что время выполнения ssl использует криптографию? –