Криптографическая политика FIPS 140-2/3 и самопроверки
Краткий обзор
Заголовок раздела «Краткий обзор»NextPDF Enterprise ограничивает криптографический выбор для операций подписания или шифрования набором, одобренным федеральными стандартами обработки информации (FIPS), и отклоняет любой выбор за пределами этого набора. Защитный механизм времени выполнения проверяет каждый хеш, идентификатор алгоритма подписи, алгоритм шифрования и стойкость ключа перед выполнением операции. Набор самопроверок при запуске выполняется один раз при старте процесса. Если какой-либо тест с известным ответом не проходит, модуль переходит в состояние ошибки. На этой странице описано, что разрешает политика, что отклоняет защитный механизм, что охватывает самопроверка и какова явная позиция в отношении сертификации.
NextPDF Enterprise помогает обеспечить соответствие требованиям. Это не сертифицированный криптографический модуль. Явная позиция об отсутствии сертификации приведена в разделе Безопасность и соответствие требованиям.
Предварительные требования перечислены в блоке front matter; раздел Предварительные требования повторяет их.
Редакция и лицензирование
Заголовок раздела «Редакция и лицензирование»Профиль криптографической политики режима FIPS, защитный механизм времени выполнения и защитный механизм самопроверки при запуске поставляются в пакете nextpdf/enterprise и требуют флага лицензируемой возможности enterprise. NextPDF Core и NextPDF Pro не предоставляют профиль режима FIPS. Защитный механизм и самопроверка выполняются внутри процесса; проверки политики и самопроверки не отправляют содержимое документа за пределы хоста. Сравнить редакции.
Что делает эта возможность
Заголовок раздела «Что делает эта возможность»Возможность состоит из трёх частей: криптографической политики, защитного механизма времени выполнения и самопроверки при запуске.
Криптографическая политика ограничивает криптографический выбор одобренным набором в двух предустановках:
- Строгая (соответствует поколению FIPS 140-3) — хеши SHA-256, SHA-384 и SHA-512; идентификаторы объектов подписи (OID) RSA и ECDSA с этими хешами; шифрование AES-256-CBC; минимальные размеры ключей RSA 2048 и ключей на эллиптических кривых 256.
- Стандартная (соответствует поколению FIPS 140-2) — совпадает со строгой и дополнительно разрешает AES-128-CBC для совместимости со старыми системами.
Для генерации подписи NIST SP 800-131A Rev.2 §3 допускает ключ RSA не менее 2048 бит и порядок ECDSA не менее 224 бит; пороги 2048/256 строгой предустановки соответствуют этим минимумам или превышают их. По умолчанию политика отклоняет неизвестный тип ключа — она не принимает нераспознанный тип молча.
Защитный механизм времени выполнения работает поверх политики и предоставляет методы в стиле assert для хеша, OID подписи, алгоритма шифрования и стойкости ключа. Когда выбор не разрешён, он вызывает типизированное нарушение с указанием политики и недопустимого элемента, после чего операция останавливается. В этом сценарии срабатывает безопасный отказ: политика никогда не ослабляет сама себя и никогда не подставляет более слабый алгоритм. Для подписи RSASSA-PSS шлюз генерации явно привязывает дайджест сообщения. Все варианты PSS используют один OID подписи; хеш находится в параметрах PSS, а не в OID. Один лишь список разрешённых OID не может подтвердить фактический дайджест, поэтому шлюз проверяет, что дайджест одобрен FIPS (SHA-256/384/512). Он отклоняет с безопасным отказом любой токен PSS, дайджест которого неизвестен или не одобрен, например SHA-1 PSS, до передачи подписывающему модулю (FIPS 186-5 §5.4(b)).
Самопроверка при запуске выполняет набор тестов с известным ответом (KAT) один раз при старте процесса. Набор охватывает одобренные функции хеширования, аутентификации сообщений, шифрования, аутентифицированного шифрования, подписи и генерации случайных битов. Согласно ISO/IEC 19790:2025 §7.10.4.2, тест с известным ответом не проходит, когда вычисленный результат не равен известному ответу. При любом сбое модуль переходит в состояние ошибки и отказывает в криптографических услугах (ISO/IEC 19790:2025 §7.2.4.3). Состояние ошибки закрепляется на уровне процесса: после того как любой защитный механизм запуска в процессе обнаружил ошибку, весь процесс остаётся в режиме безопасного отказа на всё время своего существования. Создание нового защитного механизма запуска или политики не может сбросить это состояние. Последующий успешный повторный запуск самопроверки не сбрасывает зафиксированную ошибку — это делает только перезапуск процесса (настоящий цикл питания), согласно ISO/IEC 19790:2025 §7.10.2. Результат кэшируется на всё время существования процесса; вы можете выполнить повторный запуск по требованию для административной конечной точки или команды, но он служит для выполнения обязательства о периодической самопроверке, а не для восстановления после ошибки.
Политика требует уникального вектора инициализации (IV) на каждый ключ при использовании аутентифицированного шифрования, согласно NIST SP 800-38D §5.2.1.
Предварительные требования
Заголовок раздела «Предварительные требования»- Установите NextPDF Core и пакет Enterprise, поддерживайте активную лицензию Enterprise.
- Чтобы заявить о FIPS-совместимой работе, настройте NextPDF с прошедшим проверку FIPS криптографическим провайдером — например прошедшим проверку FIPS провайдером OpenSSL — или прошедшим проверку FIPS аппаратным модулем безопасности (HSM). NextPDF Enterprise выполняет структурную сборку, вычисление дайджеста и применение политики; базовый примитив выполняется в предоставленной вами проверенной границе.
- Выберите предустановку: строгую для применения, соответствующего FIPS 140-3, или стандартную для случаев, где требуется совместимость с AES-128-CBC.
Конфигурация
Заголовок раздела «Конфигурация»- Предустановка — выберите строгую или стандартную. Строгая разрешает только AES-256-CBC; стандартная также разрешает AES-128-CBC.
- Защитный механизм — создайте защитный механизм с выбранной политикой. Используйте защитный механизм как точку, где вы проверяете каждый криптографический выбор.
- Подключение самопроверки — подключите защитный механизм запуска при инициализации приложения, чтобы каждый рабочий процесс выполнял собственный цикл самопроверки. Каждый экземпляр процесса выполняет собственную самопроверку при запуске.
Пошаговое руководство
Заголовок раздела «Пошаговое руководство»- При инициализации приложения выполните самопроверку при запуске через защитный механизм запуска и убедитесь, что модуль работоспособен. Если это не так, остановите процесс.
- Создайте защитный механизм со строгой или стандартной политикой.
- Перед каждой криптографической операцией проверьте через защитный механизм хеш, OID подписи, алгоритм шифрования и стойкость ключа.
- Перехватите типизированное нарушение, запишите структурное сообщение в журнал и откажите в операции. Не переходите на более слабый вариант.
<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Enterprise\Security\Fips\FipsBootGuard;use NextPDF\Enterprise\Security\Fips\FipsCryptoPolicy;use NextPDF\Enterprise\Security\Fips\FipsModeGuard;use NextPDF\Enterprise\Security\Fips\FipsSelfTest;use NextPDF\Enterprise\Security\Fips\FipsModuleErrorStateException;use Psr\Log\LoggerInterface;
/** * Run the power-on self-test, then build a guard on the strict policy. * * The self-test runs once per process. A known-answer failure raises a * module-error-state exception; the caller must stop rather than proceed * with an unverified crypto path. * * @param LoggerInterface $logger Structural diagnostics only — never secrets. * * @throws FipsModuleErrorStateException When a power-on known-answer test fails. * * @return FipsModeGuard A guard ready to assert each cryptographic choice. */function bootFipsGuard(LoggerInterface $logger): FipsModeGuard{ $bootGuard = new FipsBootGuard(new FipsSelfTest());
try { $bootGuard->assertOperational(); } catch (FipsModuleErrorStateException $e) { $logger->critical('FIPS power-on self-test failed; refusing crypto services.', [ 'reason' => $e->getMessage(), ]);
throw $e; }
return new FipsModeGuard(FipsCryptoPolicy::strict());}<?php
declare(strict_types=1);
require_once __DIR__ . '/../../vendor/autoload.php';
use NextPDF\Enterprise\Security\Fips\FipsModeGuard;use NextPDF\Enterprise\Security\Fips\FipsViolationException;use Psr\Log\LoggerInterface;
final readonly class FipsCheckedSigning{ public function __construct( private FipsModeGuard $guard, private LoggerInterface $logger, ) {}
/** * Assert the signing choices against the active policy before signing. * * A disallowed hash, signature OID, or key strength raises a typed * violation; the operation is refused rather than downgraded. * * @param string $hash The hash algorithm name (e.g. 'sha256'). * @param string $signatureOid The signature algorithm OID. * @param string $keyType The key type (e.g. 'rsa', 'ec'). * @param positive-int $keyBits The key length in bits. * * @throws FipsViolationException When any choice is not approved. */ public function assertApproved( string $hash, string $signatureOid, string $keyType, int $keyBits, ): void { try { $this->guard->assertHashAllowed($hash); $this->guard->assertSignatureAlgorithmAllowed($signatureOid); $this->guard->assertKeyStrengthAllowed($keyType, $keyBits); } catch (FipsViolationException $e) { $this->logger->error('FIPS policy violation', ['reason' => $e->getMessage()]);
throw $e; } }}Проверка
Заголовок раздела «Проверка»- Выполните самопроверку при запуске и убедитесь, что она сообщает о работоспособности. Убедитесь, что она покрывает каждый одобренный класс алгоритмов — хеширование, аутентификацию сообщений, шифрование, аутентифицированное шифрование, подпись и генерацию случайных битов.
- Проверьте одобренный выбор, например SHA-256, RSA 2048, и убедитесь, что он проходит. Проверьте неразрешённый выбор, например SHA-1, RSA 1024, и убедитесь, что он вызывает типизированное нарушение.
- Внедрите в самопроверку намеренно повреждённый хеш или источник случайности и убедитесь, что модуль переходит в состояние ошибки и отказывает в услугах.
- Убедитесь, что неизвестный тип ключа по умолчанию отклоняется, а не принимается.
Безопасность и соответствие требованиям
Заголовок раздела «Безопасность и соответствие требованиям»- Безопасный отказ. Когда криптографический выбор не разрешён, защитный механизм вызывает типизированное нарушение и останавливает операцию. Политика никогда не ослабляет сама себя и никогда не подставляет более слабый алгоритм.
- Самопроверка отказывает при несовпадении. Сбой теста с известным ответом переводит модуль в состояние ошибки, закреплённое на уровне процесса. Весь процесс остаётся в режиме безопасного отказа; новый защитный механизм запуска или политика не могут его восстановить, а успешный повторный запуск не снимает фиксацию. Сбросить состояние может только перезапуск процесса (ISO/IEC 19790:2025 §7.10.4.2; §7.10.2).
- Стойкость ключа. Строгая предустановка применяет минимумы RSA 2048 и ключей на эллиптических кривых 256, которые соответствуют допустимым порогам в NIST SP 800-131A Rev.2 §3 или превышают их.
- Уникальность IV. Использование аутентифицированного шифрования требует уникального IV на каждый ключ (NIST SP 800-38D §5.2.1).
Эта страница помечена как export_control_class: legal-review-required, поскольку она касается криптографической политики. Каждый нормативный источник изложен своими словами; нормативный текст не воспроизводится. Перед установкой флага publish требуется согласование с юридической службой.
NextPDF Enterprise не является прошедшим проверку FIPS криптографическим модулем и не делает заявлений о сертификации FIPS. Он работает в FIPS-совместимом режиме только при условии, что вы настроите его с прошедшим проверку FIPS криптографическим провайдером — например прошедшим проверку FIPS провайдером OpenSSL — или прошедшим проверку FIPS аппаратным модулем безопасности (HSM). Политика режима FIPS помогает обеспечить соответствие требованиям; это не сертификация и не юридическое заключение. По вопросам нормативных обязательств обращайтесь к своим специалистам по соответствию требованиям и юристам.
Обработка сбоев
Заголовок раздела «Обработка сбоев»- Сбой самопроверки при запуске. Защитный механизм запуска вызывает исключение состояния ошибки модуля. Остановите процесс; не продолжайте работу с непроверенным криптографическим путём.
- Нарушение политики. Защитный механизм вызывает типизированное нарушение с указанием политики и недопустимого элемента. Откажите в операции; не переходите на более слабый вариант.
- Неизвестный тип ключа. Политика отклоняет его по умолчанию. Сопоставляйте тип ключа явно только в том случае, если он действительно одобрен.
- Повторный запуск самопроверки. Повторный запуск доступен по требованию для административной конечной точки или команды и выполняет обязательство о периодической самопроверке по требованию. Это не механизм восстановления: неуспешный повторный запуск также фиксирует процесс в состоянии ошибки, а успешный повторный запуск не снимает существующую фиксацию. Восстановление модуля в состоянии ошибки требует перезапуска процесса.
Коммерческий контекст
Заголовок раздела «Коммерческий контекст»NextPDF Core поставляет программный подписывающий модуль и шифрование без профиля режима FIPS. NextPDF Enterprise добавляет профиль криптографической политики режима FIPS, защитный механизм времени выполнения и защитный механизм самопроверки при запуске, поэтому вы можете ограничить криптографический выбор одобренным набором и переходить в режим безопасного отказа при несовпадении самопроверки. Объедините его с подписанием через HSM, чтобы выполнять примитив внутри прошедшего проверку FIPS устройства. Сравнить редакции.
См. также
Заголовок раздела «См. также»- Безопасность — NextPDF Enterprise — совокупные средства контроля безопасности Enterprise.
- Подписание через HSM — NextPDF Enterprise — хранение аппаратных ключей по стандарту криптографии с открытым ключом #11 (PKCS#11).
- Подпись — NextPDF Enterprise — модуль создания долгосрочных усовершенствованных электронных подписей PDF (PAdES) уровней B-LT и B-LTA.
- Безопасность — NextPDF Core — базовая поверхность шифрования и подписи.
- режим FIPS · KAT · аутентифицированное шифрование (AEAD) — термины глоссария.