Что делает fipscanisterbuild?

Я пытаюсь скомпилировать openssl-fips на машине Solaris 10x86. Однако команда для компиляции openssl-fips считает, что она собирает fips для машины x86_64. Команда, которую я запускаю,

./config fipscanisterbuild

Я попытался заменить его на

./Configure solaris-x86-gcc

Мне было интересно, в чем разница между этими двумя командами. Принуждает ли ./Configure solaris-x86-gccsimply компилировать openssl-fips для конкретной архитектуры? Или ему не хватает чего-то, что делает ./config fipscanisterbuild? Запускает ли флаг fipscanisterbuild что-то, что мне нужно для openssl-fips? Если да, то какую команду мне следует использовать для компиляции openssl-fips, но заставить ее использовать архитектуру solaris-x86-gcc?


person grindlemire    schedule 09.07.2014    source источник


Ответы (1)


Немного предыстории: есть два типа криптографии: криптография, проверенная FIPS 140-2; и вся остальная криптография. Вы можете думать о подтвержденной криптографии как о материальном товаре.

В OpenSSL проверенная криптография находится в объектном модуле FIPS. Объектный модуль FIPS использует те же исходные файлы, что и обычная библиотека. Объектный модуль FIPS является частью libcrypto, поскольку именно в нем реализована криптография. Вот где тоже непроверенная криптография.

Если вы загрузите обычную библиотеку OpenSSL и настроите ее с помощью config fips, вы создадите библиотеку с поддержкой FIPS. Он поддерживает только FIPS, потому что проверенная криптография находится в объектном модуле FIPS. Если у вас нет объектного модуля FIPS, вы будете использовать непроверенную криптографию. В обоих случаях библиотека FIPS Capable будет использовать криптографию из libcrypto. Думайте об этом как о подключаемой архитектуре.

Ранее создание объектного модуля FIPS управлялось с помощью fipscanisterbuild. Однако он уже не нужен. Я думаю, что он больше не нужен, потому что исходные файлы объектного модуля FIPS предоставляются в его собственном tar-архиве.

Просмотр последней политики безопасности OpenSSL FIPS 140-2., он не указан в наборе команд, поэтому предоставление fipscanisterbuild является нарушением политики. Если вы укажете fipscanisterbuild, ваш процесс не приведет к криптографии, проверенной FIPS.

Еще немного предыстории: config вызывает Configure с помощью триплета. Вы можете увидеть это в строке 962 в config:

$PERL ./Configure $OUT $options

Итак, чтобы ответить на ваш вопрос: в скомпилированном коде нет эффективной разницы. И объектный модуль FIPS, и библиотека FIPS Capable создают один и тот же код.


./config fipscanisterbuild

Если вы создаете объектный модуль FIPS, это является нарушением политики, поскольку он не соответствует политике безопасности. Но это приводит к тому же объектному коду для криптографии.


./Настроить солярис-x86-gcc

Если вы создаете объектный модуль FIPS, это является нарушением политики, поскольку он не соответствует политике безопасности. Но это приводит к тому же объектному коду для криптографии.

person jww    schedule 11.07.2014
comment
Большое спасибо за понятное объяснение! Действительно помогло! - person grindlemire; 11.07.2014