Enterprise редакция
Security — HSM, PKCS#11 и режим FIPS
NextPDF Enterprise добавляет путь подписания аппаратным токеном PKCS#11 и криптографическую политику режима FIPS поверх поверхности безопасности Core и Pro. Эта страница излагает поведение, границы и явную позицию по сертификации FIPS и хранению ключей.
Доступность и лицензирование
Заголовок раздела «Доступность и лицензирование»Эта возможность поставляется в NextPDF Enterprise (nextpdf/enterprise) и активируется лицензионным конвертом уровня Enterprise. Развёртывание без этого права не загружает классы возможности. Сравните редакции и получите лицензию.
Концептуальный обзор
Заголовок раздела «Концептуальный обзор»Поверхность безопасности Enterprise состоит из трёх частей: подписывающий модуль аппаратного токена, криптополитика режима FIPS и страж самопроверки при включении.
Подписывающий модуль аппаратного токена адаптирует токен PKCS#11 — смарт-карту, USB-устройство или сетевой HSM. Подписывающий модуль находит сертификат и закрытый ключ на токене по метке. Затем он просит токен вычислить подпись. Закрытый ключ не покидает границу токена; операция выполняется внутри токена. Операция подписания токена, сессия и вход пользователя следуют PKCS#11 v3.1 §5. Путь HSM требует расширения PHP ext-pkcs11. Это расширение не входит в стандартный PHP. Установите его отдельно. Используйте проверку доступности перед конструированием подписывающего модуля.
Криптополитика режима FIPS ограничивает криптографический выбор одобренным набором. У неё две предустановки. Строгая предустановка разрешает хеши SHA-256, SHA-384 и SHA-512; OID подписей RSA и ECDSA с этими хешами; шифрование AES-256-CBC; и минимальные размеры ключей RSA 2048 и EC 256. Стандартная предустановка такая же, но дополнительно разрешает AES-128-CBC для совместимости со старыми системами. Страж времени выполнения оборачивает политику. Страж проверяет каждый хеш, OID подписи, алгоритм шифрования и стойкость ключа перед запуском операции. Недопустимый выбор вызывает типизированное нарушение и останавливает операцию. Путь защищён от отказа: политика никогда не ослабляет себя и никогда не подставляет более слабый алгоритм. Минимальная длина ключа RSA следует NIST SP 800-131A Rev.2 §3. Сочетание кривой и хеша ECDSA следует FIPS 186-5 §6.1.1.
Страж самопроверки при включении выполняет батарею тестов с известным ответом один раз при запуске процесса. Батарея охватывает одобренные функции хеширования, MAC, шифрования, подписи и генерации случайных битов. Если любой тест проваливается, страж Enterprise FIPS переходит в состояние ошибки и отказывает в криптографических службах до сброса. Результат кешируется на время жизни процесса; доступен повторный запуск по требованию. Категория самопроверки и триггер условного теста следуют ISO/IEC 19790:2025 §7.10 и §7.10.3.
Почему это работает именно так
Заголовок раздела «Почему это работает именно так»Ключевое решение — держать закрытый ключ внутри границы токена и делать криптополитику защищённой от отказа. Подписывающий модуль, способный экспортировать ключ или молча откатиться к более слабому алгоритму, свёл бы на нет гарантию, ради которой существует HSM. Поэтому подписывающий модуль просит токен вычислить подпись на месте, а страж режима FIPS отклоняет любой хеш, OID или стойкость ключа вне одобренной предустановки перед запуском операции. Самопроверка при включении распространяет ту же позицию на запуск: непроверенный модуль отказывает в обслуживании, а не подписывает на непротестированных примитивах. В результате получается граница, которую можно осмыслить, где хранение ключа принадлежит оператору и токену, а не этому программному обеспечению.
Проектный контекст: Подписание с поддержкой HSM.
Поверхность API
Заголовок раздела «Поверхность API»| Публичная поверхность | Тип | Назначение | Стабильность | Начиная с |
|---|---|---|---|---|
| Подписывающий модуль токена PKCS#11 | класс (реализует Core HsmSignerInterface) | Подписание токеном PKCS#11; ключ остаётся на токене | стабильный | 1.0.0 |
| Криптополитика FIPS | класс (реализует Core CryptoPolicyInterface) | Предустановка разрешённых алгоритмов и стойкости ключа | стабильный | 1.9.0 |
| Страж режима FIPS | класс | Проверяет допустимость хеша, OID подписи, алгоритма шифрования или стойкости ключа | стабильный | 1.9.0 |
| Загрузочный страж FIPS | класс | Запускает и кеширует самопроверку при включении; проверяет работоспособность модуля | стабильный | 3.2.0 |
| Подписывающий модуль OpenSSL CLI / engine | класс (реализует HsmSignerInterface) | Подписание через engine OpenSSL или OpenSSL CLI для токенов с engine | стабильный | 1.0.0 |
Конструктор подписывающего модуля токена принимает путь к библиотеке PKCS#11, номер слота, PIN токена, метку сертификата и необязательную отдельную метку ключа. Параметр PIN помечен как конфиденциальный; он не записывается в журнал и не сериализуется. Подписывающий модуль также предоставляет сертификат подписывающего и цепочку сертификатов в форме DER. Авторитетный контракт параметров и типов — это опубликованный справочник API для пакета nextpdf/enterprise; относитесь к этому справочнику — а не к этой странице — как к контракту.
Пример кода — быстрый старт
Заголовок раздела «Пример кода — быстрый старт»composer require nextpdf/corecomposer require nextpdf/enterprise:^3use NextPDF\Enterprise\Security\Fips\FipsCryptoPolicy;use NextPDF\Enterprise\Security\Fips\FipsModeGuard;
$guard = new FipsModeGuard(FipsCryptoPolicy::strict());
// Throws a typed FIPS violation if the algorithm is not approved.$guard->assertHashAllowed('sha256');$guard->assertKeyStrengthAllowed('rsa', 2048);Пример кода — продакшен
Заголовок раздела «Пример кода — продакшен»use NextPDF\Enterprise\Security\Fips\FipsBootGuard;use NextPDF\Enterprise\Security\Fips\FipsSelfTest;
// At application bootstrap (one self-test cycle per worker process):$bootGuard = new FipsBootGuard(new FipsSelfTest());$bootGuard->assertOperational(); // throws on a known-answer-test failure$container->set(FipsBootGuard::class, $bootGuard);
// The PKCS#11 token signer is only available when ext-pkcs11 is loaded.// Check availability before you construct the signer. The PIN is a secret;// supply it from your secret manager, never from source or logs.Полный список аргументов конструктора, типы исключений и конструирование подписывающего модуля токена PKCS#11 описаны в углублённом справочнике по безопасности Enterprise.
Граничные случаи и подводные камни
Заголовок раздела «Граничные случаи и подводные камни»- Конструктор подписывающего модуля токена PKCS#11 вызывает типизированное исключение операции, когда
ext-pkcs11не загружен. Сначала проверьте доступность. - Подписывающий модуль токена кеширует один модуль PKCS#11 на путь к библиотеке на процесс. Это удовлетворяет правилу «инициализировать один раз на модуль» интерфейса токена.
- Механизмы ECDSA токена возвращают сырую подпись. Подписывающий модуль преобразует её в форму с DER-кодировкой для совместимости с PDF и OpenSSL.
- Страж FIPS по умолчанию отклоняет неизвестный тип ключа. Нераспознанный тип ключа не принимается молча.
- Путь постквантового подписания экспериментальный, включается по выбору и по умолчанию отключён. Стандартные профили долгосрочного архивирования PAdES пока не признают постквантовые наборы. Не включайте его для рабочих подписей AdES.
Производительность
Заголовок раздела «Производительность»Проверки стража FIPS — это поиски в хеш-таблице за постоянное время. Самопроверка при включении выполняется один раз на процесс; её стоимость амортизируется на время жизни процесса, а не на каждый вызов подписания. Операция подписания PKCS#11 добавляет один цикл обмена с токеном. Сетевой HSM добавляет сетевую задержку этого цикла обмена.
Замечания по безопасности
Заголовок раздела «Замечания по безопасности»- Путь подписания защищён от отказа. Сбой примитива или пробел в политике вызывает типизированное исключение. Путь никогда не понижается молча до более слабого алгоритма.
- Параметр PIN токена помечен как конфиденциальный. Он не записывается в журнал и не сериализуется.
- Закрытый ключ для токена PKCS#11 остаётся на токене. Операция подписания выполняется внутри границы токена.
- Самопроверка при включении переводит страж Enterprise FIPS в состояние ошибки при несовпадении теста с известным ответом и отказывает в криптографических службах до сброса.
- Использование AES-GCM требует уникального вектора инициализации для каждого ключа, согласно NIST SP 800-38D §5.
Размещение данных и меры по защите ПДн
Заголовок раздела «Размещение данных и меры по защите ПДн»Код подписания и политики FIPS выполняется внутри процесса. Никакое содержимое документа не покидает хост ради проверки политики FIPS или самопроверки при включении. Токен PKCS#11 получает данные для подписания, а не постороннее содержимое документа. Сетевой HSM получает эти данные по сетевому каналу, который вы настраиваете. Материал ключа остаётся внутри границы токена или HSM.
Безопасная телеметрия и очистка журналов
Заголовок раздела «Безопасная телеметрия и очистка журналов»PIN токена — это конфиденциальный параметр конструктора, исключённый из журналов и сериализации. Не добавляйте PIN, метку токена или материал ключа в собственные журналы приложения. Относитесь ко всем учётным данным токена как к секретам в своей политике журналирования и трассировки.
Модель угроз
Заголовок раздела «Модель угроз»Это криптографическая граница, поэтому модель угроз явная. Данные для подписания передаются токену; токен хранит ключ. Ошибка токена или HSM вызывает типизированное исключение; подписывающий модуль не выдаёт неподписанный или частично подписанный результат. Защита ключа зависит от токена или HSM, развёртывания и оператора — а не только от этого программного обеспечения. См. границу развёртывания.
Соответствие
Заголовок раздела «Соответствие»- Модель самопроверки при включении и условной самопроверки согласована с ISO/IEC 19790:2025 §7.10 и §7.10.3.
- Минимальная длина ключа подписи RSA согласована с NIST SP 800-131A Rev.2 §3.
- Одобренное сочетание кривой и хеша ECDSA согласовано с FIPS 186-5 §6.1.1.
- Операция подписания токена PKCS#11 и вход в сессию согласованы с PKCS#11 v3.1 §5.
- Ответственность за защиту ключа согласована с NIST SP 800-57 Part 1 Rev.5 §5.5.2.
- Уникальность вектора инициализации AES-GCM согласована с NIST SP 800-38D §5.
Каждый нормативный источник приведён в пересказе. На этой странице нормативный текст не воспроизводится. Эта страница касается криптографического подписания.
Поведение в режиме FIPS
Заголовок раздела «Поведение в режиме FIPS»Политика режима FIPS ограничивает криптографический выбор одобренным набором, описанным выше. При настройке с валидированным по FIPS провайдером OpenSSL нижележащий примитив выполняется в этой валидированной границе. NextPDF Enterprise сам выполняет структурную сборку, вычисление дайджеста и принудительное применение политики.
NextPDF Enterprise не является криптографическим модулем, валидированным по FIPS, и не делает заявления о сертификации FIPS. NextPDF Enterprise работает в FIPS-совместимом режиме только тогда, когда настроен с валидированным по FIPS криптопровайдером — например, валидированным по FIPS провайдером OpenSSL — или валидированным по FIPS HSM. Политика режима FIPS способствует соответствию; это не сертификация.
Граница редакций
Заголовок раздела «Граница редакций»NextPDF Core поставляет программный подписывающий модуль, потребление меток времени RFC 3161, проверку пути RFC 5280 и проверку отзыва OCSP и CRL. Core формирует уровни PAdES B-B и B-T. NextPDF Pro добавляет маскирование, обнаружение ПДн в текстовом слое, многостороннее последовательное подписание и стратегии удалённого и облачного KMS-подписания (AWS KMS, GCP Cloud KMS, Azure Key Vault). NextPDF Pro не предоставляет путь аппаратного токена PKCS#11 и не предоставляет профиль криптополитики режима FIPS. Подписывающий модуль аппаратного токена PKCS#11, профиль криптополитики режима FIPS, страж самопроверки при включении и модуль формирования PAdES B-LT и B-LTA поставляются только в пакете nextpdf/enterprise. Развёртывание без права Enterprise не загружает классы Enterprise.
Резервный вариант Pro
Заголовок раздела «Резервный вариант Pro»При развёртывании только с Pro поддерживаемый путь подписания с аппаратной и облачной поддержкой — это стратегия облачного KMS Pro: облачный KMS или KMS с поддержкой HSM хранит ключ, а Pro отправляет поставщику дайджест подписанных атрибутов, а не документ. Pro предоставляет интеграцию KMS, а не фабрику токена PKCS#11 Enterprise или профиль режима FIPS. Конфигурация, запрашивающая B-LT, B-LTA, токен PKCS#11 или профиль режима FIPS при развёртывании только с Pro, завершается защищённым отказом с сообщением, называющим отсутствующий компонент Enterprise. См. Security — NextPDF Pro для поверхности подписания Pro.
Резервный вариант Core
Заголовок раздела «Резервный вариант Core»При развёртывании только с Core программный подписывающий модуль формирует PAdES B-B и B-T с локальным ключом или ключом, переданным через контракт стратегии подписания Core. У Core нет пути аппаратного токена и профиля режима FIPS. См. Security — NextPDF Core.
Примечание о границе Enterprise
Заголовок раздела «Примечание о границе Enterprise»Интеграция токена PKCS#11, её сопоставление механизмов и обработка сессии описаны только на уровне поведения. Внутренняя таблица сопоставления механизмов, внутренняя логика восстановления сессии и материал постквантовой миграции выходят за рамки публичной поверхности и здесь не воспроизводятся.
Граница развёртывания
Заголовок раздела «Граница развёртывания»NextPDF Enterprise интегрируется с токеном PKCS#11, HSM или KMS. Он сам не хранит, не генерирует и не гарантирует безопасность ключа подписи. Безопасность ключа зависит от токена, HSM или KMS, от развёртывания и от оператора — а не только от NextPDF Enterprise. Оператор отвечает за провижининг токена, обработку PIN, конфигурацию слота, сетевую защиту сетевого HSM и настройку доверия. Ответственность за защиту ключа следует NIST SP 800-57 Part 1 Rev.5 §5.5.2. NextPDF Enterprise не раскрывает в этой документации обработку PIN токена, внутренние детали конфигурации слота или материал учётных данных поставщика.
Граница юридического соответствия
Заголовок раздела «Граница юридического соответствия»Эта страница касается криптографического подписания и интеграции аппаратного модуля безопасности. Политика режима FIPS — это функция содействия соответствию. Это не юридическое заключение и не сертификация. По вопросам ваших нормативных обязательств обращайтесь к собственным консультантам по комплаенсу и праву.
Граница публикации
Заголовок раздела «Граница публикации»Эта страница документирует только внешне наблюдаемое поведение и поддерживаемую публичную поверхность API. Внутренние пути пространств имён, вспомогательные классы, таблицы механизмов, имена файлов runbook и префиксы тикетов выходят за рамки.
Контракт поведения
Заголовок раздела «Контракт поведения»- Страж FIPS проверяет каждый хеш, OID подписи, алгоритм шифрования и стойкость ключа относительно активной предустановки и вызывает типизированное нарушение при недопустимом выборе.
- Самопроверка при включении выполняется один раз на процесс и отказывает в криптографических службах при сбое теста с известным ответом до сброса.
- Подписывающий модуль токена PKCS#11 требует
ext-pkcs11; он вызывает типизированное исключение операции, когда расширение отсутствует. - Путь подписания защищён от отказа и никогда не подставляет более слабый алгоритм.