Enterprise редакциястабильность: Экспериментальная
Статус предварительной версии постквантового подписания через HSM (PQS)
Статус превью-возможности. Подключаемое, выключено по умолчанию, отказывает закрытием. Это превью постквантового подписания с делегированием HSM. Оно не общедоступно, оно не соответствует AdES, оно не FIPS-validated и не делает заявления о сертификации или соответствии. Превью выключено, пока вы его не подключите; когда выключено, вызов подписания отказывает закрытием с типизированным исключением.
NextPDF Enterprise предоставляет экспериментальную поверхность постквантовой
подписи (PQS), которая управляет подписанием ML-DSA (FIPS 204) и SLH-DSA
(FIPS 205) через аппаратный токен PKCS#11. Путь — Pkcs11Signer::signPqs(),
ограниченный явным посигнерным подключением ($enablePostQuantum) и, отдельно,
env-флагом уровня процесса (NEXTPDF_FEATURE_PREVIEW_PQS_HSM). Оба выключены по
умолчанию.
Эта страница — честная граница. Она описывает, что превью делает — оно делегирует настоящую операцию постквантового подписания токену — и с равной честностью, чем оно не является: оно не GA, не AdES, не FIPS-validated и не заявление о соответствии FIPS, OASIS или ETSI. Стандарты, которые сделали бы постквантовую подпись PDF совместимой для долгосрочного архивирования, ещё не появились (см. Границы стандартов).
Доступность и лицензирование
Заголовок раздела «Доступность и лицензирование»Эта возможность поставляется в NextPDF Enterprise (nextpdf/enterprise) и
активируется лицензионным конвертом уровня Enterprise. Развёртывание без этого
права не загружает классы возможности.
Сравнить редакции и получить лицензию.
Она строится на подписывающем аппаратном токене PKCS#11 Enterprise — см. Подписание через HSM. Классический путь подписания PKCS#11 (RSA / ECDSA) — это поддерживаемая, стабильная возможность Enterprise; описанный здесь постквантовый путь — это экспериментальное превью, наложенное поверх него. NextPDF Enterprise включает набор функций Pro.
Статус превью-возможности
Заголовок раздела «Статус превью-возможности»Превью управляет настоящей операцией подписания: когда включено, signPqs()
направляет вызов к кандидатному постквантовому механизму PKCS#11 v3.1 на токене,
закрытый ключ никогда не покидает границу токена, а возвращённые байты проверяются
по длине относительно длины подписи, предписанной FIPS для выбранного набора
параметров, прежде чем они принимаются.
При этом оно одновременно является превью, а не общедоступной возможностью продукта:
- Идентификаторы постквантового механизма PKCS#11 и набора параметров предварительны — OASIS PKCS#11 v3.1 не финализировал реестр постквантовых механизмов, поэтому используемые значения отслеживаются как предварительные, и операторы HSM должны подтвердить, что PQ-прошивка их токена им соответствует, прежде чем включать.
- В NextPDF не существует пути постквантовой проверки, и ни один набор ETSI не регистрирует постквантовую подпись для долгосрочного архивирования AdES, поэтому произведённая здесь подпись пока несовместима, и большинство просмотрщиков PDF отвергнут её во время проверки.
- Сопутствующий дескриптор,
PqsCapabilityStatus, сообщает эти факты в машиночитаемой форме. Каждый булев флаг положительного заявления —generallyAvailable,adesCompliant,verificationAvailable,conformanceClaimed— жёстко закодирован какfalseи остаётсяfalseдаже когда превью-флаг включён, и никакая конфигурация не может переключить его в истину. (Он также несёт флагrecognitionOnly, жёстко закодированный какtrue, который фиксирует, что распознавание алгоритма никогда не является вердиктом о соответствии; это не означает, что поверхность не может подписывать — подписание происходит черезsignPqs(), как описано выше.)
Почему это работает именно так
Заголовок раздела «Почему это работает именно так»NextPDF уже может вычислить настоящую подпись ML-DSA или SLH-DSA через токен. Тем
не менее каждый булев флаг соответствия остаётся жёстко закодированным как false,
за двумя выключенными по умолчанию затворами. Подпись стоит ровно столько, сколько
стоит возможность проверить её позже. Для постквантовой криптографии пока нет пути
проверки, нет зарегистрированного набора ETSI AdES и нет FIPS-validated кругового
обхода HSM. Поставка этого как общедоступного выпускала бы подписи, которые ни один
просмотрщик не может проверить и ни один архив не может считать доверенными. Поэтому
дизайн отделяет производство байтов от заявления, что кто-либо может на них
полагаться, и никакой превью-флаг не может размыть эту грань.
Справочная информация по дизайну: Долгосрочная валидация.
Наборы параметров алгоритмов
Заголовок раздела «Наборы параметров алгоритмов»signPqs() выбирает алгоритм и набор параметров через перечисление
Pkcs11PqsAlgorithm. Каждый случай сопоставляет набор параметров NIST с
предварительным идентификатором механизма / набора параметров PKCS#11 и с длиной
подписи в байтах, предписанной FIPS, используемой для проверки длины с
эшелонированной защитой.
ML-DSA — FIPS 204 (модульно-решёточный). Три набора параметров, заявленных на показанных категориях стойкости NIST:
| Набор параметров | Категория NIST | Длина подписи (байты) |
|---|---|---|
ML-DSA-44 | 2 | 2420 |
ML-DSA-65 (рекомендуемое значение по умолчанию) | 3 | 3309 |
ML-DSA-87 | 5 | 4627 |
SLH-DSA — FIPS 205 (бесстатусный на основе хеша). Двенадцать наборов
параметров, образованных как SHA2 / SHAKE x 128 / 192 / 256 x малый (s) /
быстрый (f). Варианты s минимизируют размер подписи; варианты f минимизируют
задержку подписания:
| Семейство наборов параметров | Категория NIST | Длина подписи (байты) |
|---|---|---|
SLH-DSA-{SHA2,SHAKE}-128s | 1 | 7856 |
SLH-DSA-{SHA2,SHAKE}-128f | 1 | 17088 |
SLH-DSA-{SHA2,SHAKE}-192s | 3 | 16224 |
SLH-DSA-{SHA2,SHAKE}-192f | 3 | 35664 |
SLH-DSA-{SHA2,SHAKE}-256s | 5 | 29792 |
SLH-DSA-{SHA2,SHAKE}-256f | 5 | 49856 |
Включение превью
Заголовок раздела «Включение превью»Оба независимых затвора должны быть открыты. Оба по умолчанию выключены.
- Затвор процесса. Установите
NEXTPDF_FEATURE_PREVIEW_PQS_HSM=1до загрузки процесса (или черезputenv()до чтения статуса). Требуется строгое равенство строке1; любое другое значение — включая0,true,yesили пустое — трактуется как выключено. - Посигнерное подключение. Передайте
$enablePostQuantum: trueв конструкторPkcs11Signer.
use NextPDF\Enterprise\Security\Signature\Hsm\Pkcs11Signer;use NextPDF\Enterprise\Security\Signature\Hsm\Pkcs11PqsAlgorithm;use NextPDF\Enterprise\Security\Signature\Hsm\PqsCapabilityStatus;use NextPDF\Enterprise\Security\Signature\Hsm\PqsPreviewFeature;
// 1. Open the process-level preview gate (default-off).putenv(PqsPreviewFeature::ENV_PREVIEW_PQS_HSM . '=1');
// 2. The capability status is honest even with the gate open:// generallyAvailable / adesCompliant / verificationAvailable stay false.$status = PqsCapabilityStatus::current();
// 3. Construct the PKCS#11 signer with the per-signer opt-in.$signer = new Pkcs11Signer( libraryPath: '/usr/lib/softhsm/libsofthsm2.so', slotId: 0, pin: '1234', certLabel: 'my-pqc-signing-cert', enablePostQuantum: true,);
// 4. Sign with a chosen parameter set. The returned bytes are length-checked// against Pkcs11PqsAlgorithm::signatureLength() before being accepted.$signature = $signer->signPqs( data: $tbsBytes, algorithm: Pkcs11PqsAlgorithm::MlDsa65,);isPostQuantumEnabled() сообщает, было ли установлено посигнерное подключение, а
PqsCapabilityStatus::current() сообщает состояние уровня процесса плюс честные
булевы флаги заявлений.
Граница с отказом закрытием
Заголовок раздела «Граница с отказом закрытием»Поверхность отказывает закрытием и сообщает об отказах через именованные, типизированные исключения, а не через молчаливый запасной вариант:
- Подключение отсутствует. Если
signPqs()вызывается, когда$enablePostQuantumравноfalse, он выбрасываетHsmOperationException. Подписания не происходит. - Контекст слишком длинный. Октетная строка контекста подписания длиннее 255
байт выбрасывает
InvalidArgumentException(согласно ограничению контекста FIPS 204 / FIPS 205) до любого вызова токена. - Ключ отсутствует. Если ни один закрытый ключ не соответствует
настроенной метке на токене,
signPqs()выбрасываетHsmOperationException. - Несовпадение длины. Если токен возвращает подпись, чья длина в байтах не
равна длине, предписанной FIPS для набора параметров,
signPqs()выбрасываетHsmOperationException— некорректная (усечённая или избыточная) подпись отвергается до того, как она может достичь кодирования CMS SignedData. - Ошибка токена. Любая нижележащая ошибка PKCS#11 оборачивается в
HsmOperationException.
Env-флаг уровня процесса ничего не меняет в этой границе: даже когда флаг включён, булевы флаги возможностей остаются false, а путь подписания остаётся проверяемым по длине и отказывающим закрытием.
Честная граница
Заголовок раздела «Честная граница»Следующие заявления для этой поверхности не делаются и не должны появляться ни в какой документации, интерфейсе или маркетинге, производных от неё:
- «GA» / «generally available».
- «AdES» / «PAdES-compliant» — ни один набор ETSI не регистрирует постквантовую подпись для долгосрочного архивирования.
- «FIPS-validated» — ни одного FIPS-140-3-validated постквантового кругового обхода HSM для этого пути не установлено.
- «certified» или «conformant» относительно FIPS, OASIS PKCS#11 v3.1 или ETSI.
- «production-ready».
Чем поверхность честно является: подключаемое, выключенное по умолчанию, отказывающее закрытием превью постквантового подписания с делегированием HSM, которое управляет ML-DSA / SLH-DSA через токен PKCS#11 и проверяет результат по длине. Чем она не является: общедоступной, AdES-compliant, FIPS-validated или сертифицированной возможностью подписания.
Границы стандартов
Заголовок раздела «Границы стандартов»Задействованные стандарты сопровождаются внешними органами, и превью не занимает никакой позиции относительно соответствия любому из них:
- Наборы параметров алгоритмов и длины подписей следуют FIPS 204 (ML-DSA) и FIPS 205 (SLH-DSA).
- Идентификаторы механизмов токена следуют OASIS PKCS#11; реестр постквантовых механизмов в PKCS#11 v3.1 ещё не финализирован, поэтому NextPDF использует предварительные идентификаторы.
- Профили долгосрочного архивирования подписи PDF — это ETSI EN 319 142-2
(расширенные профили PAdES, построенные на CMS
SignerInfo) и каталог криптографических наборов ETSI TS 119 312, которые в настоящее время профилируют только RSA и ECDSA — ни один постквантовый набор не зарегистрирован для CAdES/PAdES. Поэтому постквантовая подпись PDF, произведённая сегодня, пока не соответствует AdES для архивирования.
Текст стандартов на этой странице не воспроизводится.
Заметки по безопасности
Заголовок раздела «Заметки по безопасности»Превью — это не средство контроля безопасности. Присутствие постквантовой подписи, произведённой этим путём, не устанавливает действительности AdES, не подразумевает доверенного ключа и не проверяемо NextPDF (пути постквантовой проверки нет). Не полагайтесь на это превью для гарантии подписи и не развёртывайте его там, где требуется AdES-compliant или FIPS-validated подпись. Держите оба затвора выключенными в продакшене, пока стандарты не появятся.
Поверхность API
Заголовок раздела «Поверхность API»| Символ | Роль |
|---|---|
Pkcs11Signer::signPqs() | Подключаемое, отказывающее закрытием постквантовое подписание с делегированием HSM через PKCS#11. Выбрасывает HsmOperationException, когда выключено, когда ключ отсутствует или при несовпадении длины подписи. |
Pkcs11Signer::isPostQuantumEnabled() | Было ли установлено посигнерное подключение $enablePostQuantum. |
Pkcs11PqsAlgorithm | Перечисление наборов параметров ML-DSA (FIPS 204) и SLH-DSA (FIPS 205); сопоставляет каждый с предварительным id механизма и длиной подписи, предписанной FIPS. |
PqsPreviewFeature | Env-затвор уровня процесса, выключенный по умолчанию (NEXTPDF_FEATURE_PREVIEW_PQS_HSM). |
PqsCapabilityStatus | Честный, машиночитаемый статус: каждый булев флаг положительного заявления (общедоступность, AdES, проверка, соответствие) жёстко закодирован как false независимо от превью-флага. |
HsmOperationException | Типизированное исключение, вызываемое на путях с отказом закрытием. |
Граница публикации
Заголовок раздела «Граница публикации»Эта страница документирует только внешне наблюдаемое поведение и поддерживаемую публичную поверхность API. Внутренние пути пространств имён, вспомогательные классы, таблицы механизмов, имена файлов ранбуков и префиксы тикетов вне области рассмотрения.