Enterprise éditionstabilité: Expérimental
Aperçu de la signature post-quantique — Référence détaillée
Cette page constitue la référence de niveau contrat de la surface d’aperçu de la signature post-quantique (PQS) dans NextPDF Enterprise. Elle couvre trois symboles publics : l’énumération de jeux de paramètres Pkcs11PqsAlgorithm, la barrière de processus PqsPreviewFeature et le descripteur PqsCapabilityStatus. Elle documente également la barrière d’environnement NEXTPDF_FEATURE_PREVIEW_PQS_HSM.
La surface est expérimentale et désactivée par défaut. Elle reconnaît les identifiants d’algorithme, les jeux de paramètres et les longueurs de signature ML-DSA (FIPS 204) et SLH-DSA (FIPS 205). La reconnaissance n’est pas un verdict de validation. Il n’existe aucun chemin de vérification post-quantique. Aucune revendication AdES, de validation FIPS ou de conformité n’est faite, et l’indicateur d’aperçu ne peut en créer une. Le point d’entrée de signature consommateur, Pkcs11Signer::signPqs(), est décrit sur la page de capacité.
Disponibilité et licence
Section intitulée « Disponibilité et licence »Cette capacité est fournie dans NextPDF Enterprise (nextpdf/enterprise) et s’active avec une enveloppe de licence de niveau Enterprise. Un déploiement dépourvu de ce droit d’accès ne charge pas les classes de la capacité. Compare les éditions et obtiens une licence.
La licence active la surface PKCS#11 Enterprise dans son ensemble. Le chemin post-quantique qu’elle contient reste un aperçu quel que soit le niveau de licence. Deux acceptations indépendantes restent nécessaires : la barrière de processus documentée ici et l’indicateur de constructeur par signataire sur Pkcs11Signer.
Surface d’API publique
Section intitulée « Surface d’API publique »| Symbole | Paramètres | Comportement par défaut | Retourne | Lève ou échoue avec | Notes |
|---|---|---|---|---|---|
Pkcs11PqsAlgorithm | énumération sur chaîne, 15 cas | Nomme un jeu de paramètres FIPS 204 / FIPS 205 par cas | cas d’énumération | Rien à l’accès du cas | Les valeurs des cas sont les noms des jeux de paramètres, par ex. ML-DSA-65. |
Pkcs11PqsAlgorithm::isMlDsa() | aucun | Test de famille | bool | Ne lève pas | true pour MlDsa44, MlDsa65, MlDsa87. |
Pkcs11PqsAlgorithm::isSlhDsa() | aucun | Négation de isMlDsa() | bool | Ne lève pas | true pour les douze cas SLH-DSA. |
Pkcs11PqsAlgorithm::mechanismId() | aucun | Associe la famille à l’identifiant de mécanisme PQ PKCS#11 v3.1 candidat | int | Error PHP lorsque l’environnement d’exécution ne dispose pas des constantes PQ Pkcs11 provisoires | CKM_ML_DSA ou CKM_SLH_DSA ; les deux identifiants sont provisoires. |
Pkcs11PqsAlgorithm::parameterSetId() | aucun | Associe le cas au discriminant de jeu de paramètres OASIS | int | Error PHP lorsque l’environnement d’exécution ne dispose pas des constantes PQ Pkcs11 provisoires | valeurs CKP_* ; provisoires. |
Pkcs11PqsAlgorithm::signatureLength() | aucun | Longueur de signature en octets imposée par FIPS pour le cas | int (positif) | Ne lève pas | Utilisée par le chemin de signature pour rejeter une signature retournée de longueur inattendue. |
Pkcs11PqsAlgorithm::nistCategory() | aucun | Catégorie de niveau de sécurité NIST revendiquée | int | Ne lève pas | Retourne 1, 2, 3 ou 5. |
PqsPreviewFeature | énumération sur chaîne, 1 cas | Cas unique PREVIEW_PQS_HSM ; constante ENV_PREVIEW_PQS_HSM | cas d’énumération | Rien à l’accès du cas | La barrière d’aperçu au niveau du processus. |
PqsPreviewFeature::isEnabled() | aucun | Lit getenv() en direct ; comparaison stricte avec la chaîne 1 | bool | Ne lève pas | Une variable absente ou toute autre valeur, y compris 0, true, yes, est désactivée. |
PqsCapabilityStatus::__construct() | neuf champs nommés en lecture seule | Construit une instance de descripteur arbitraire | PqsCapabilityStatus | Ne lève pas | current() est le constructeur canonique. |
PqsCapabilityStatus::current() | aucun | Construit le descripteur pour le processus englobant | PqsCapabilityStatus | Ne lève pas | Chaque booléen de revendication est figé ; seul hsmRoundtripPreviewEnabled varie selon la barrière. |
PqsCapabilityStatus::summary() | aucun | Texte d’état sur une ligne | string | Ne lève pas | La formulation ne porte aucune revendication de disponibilité, d’archivage ou de validation. |
enum Pkcs11PqsAlgorithm: string
case MlDsa44 = 'ML-DSA-44';case MlDsa65 = 'ML-DSA-65';case MlDsa87 = 'ML-DSA-87';
case SlhDsaSha2_128s = 'SLH-DSA-SHA2-128s';case SlhDsaShake_128s = 'SLH-DSA-SHAKE-128s';case SlhDsaSha2_128f = 'SLH-DSA-SHA2-128f';case SlhDsaShake_128f = 'SLH-DSA-SHAKE-128f';
case SlhDsaSha2_192s = 'SLH-DSA-SHA2-192s';case SlhDsaShake_192s = 'SLH-DSA-SHAKE-192s';case SlhDsaSha2_192f = 'SLH-DSA-SHA2-192f';case SlhDsaShake_192f = 'SLH-DSA-SHAKE-192f';
case SlhDsaSha2_256s = 'SLH-DSA-SHA2-256s';case SlhDsaShake_256s = 'SLH-DSA-SHAKE-256s';case SlhDsaSha2_256f = 'SLH-DSA-SHA2-256f';case SlhDsaShake_256f = 'SLH-DSA-SHAKE-256f';
public function isMlDsa(): boolpublic function isSlhDsa(): boolpublic function mechanismId(): intpublic function parameterSetId(): intpublic function signatureLength(): intpublic function nistCategory(): intenum PqsPreviewFeature: string
case PREVIEW_PQS_HSM = 'preview_pqs_hsm';
public const string ENV_PREVIEW_PQS_HSM = 'NEXTPDF_FEATURE_PREVIEW_PQS_HSM';
public function isEnabled(): boolfinal readonly class PqsCapabilityStatus
public const string MATURITY_PREVIEW_EXPERIMENTAL = 'preview-experimental';public const string MECHANISM_STATUS_PROVISIONAL = 'provisional';
public function __construct( public bool $hsmRoundtripPreviewEnabled, public bool $generallyAvailable, public bool $adesCompliant, public bool $verificationAvailable, public bool $conformanceClaimed, public bool $recognitionOnly, public string $maturity, public string $mechanismIdStatus, public string $envGate,)
public static function current(): selfpublic function summary(): stringContrat de comportement
Section intitulée « Contrat de comportement »- Catalogue des jeux de paramètres.
NextPDF\Enterprise\Security\Signature\Hsm\Pkcs11PqsAlgorithménumère trois jeux ML-DSA (FIPS 204) et douze jeux SLH-DSA (FIPS 205 §11.p12, Table 2). Chaque cas est associé à un identifiant de mécanisme provisoire, un discriminant de jeu de paramètres, une longueur de signature en octets imposée par FIPS et une catégorie NIST revendiquée. - Longueurs de signature.
signatureLength()retourne 2420, 3309 et 4627 octets pourMlDsa44,MlDsa65etMlDsa87, conformément à FIPS 204 §4.p15 (Table 2). Les cas SLH-DSA retournent 7856, 17088, 16224, 35664, 29792 et 49856 octets selon le niveau et la variante, conformément à FIPS 205 §11 (Table 2). Le signataire consommateur lèveHsmOperationExceptionlorsqu’une signature retournée a une longueur différente, reflétant la discipline de rejet sur longueur de FIPS 204 §x34. - Catégories.
nistCategory()retourne 2, 3 et 5 pour les cas ML-DSA, conformément à FIPS 204 §4.p9. Les cas SLH-DSA retournent 1, 3 et 5 selon le niveau de paramètre de sécurité. - Barrière de processus.
PqsPreviewFeature::PREVIEW_PQS_HSMest désactivée par défaut.isEnabled()retournetrueuniquement lorsque la variable d’environnementNEXTPDF_FEATURE_PREVIEW_PQS_HSMest exactement égale à la chaîne1. La lecture est effectuée en direct à chaque appel ; rien n’est mémoïsé. - Barrière complémentaire. La barrière de processus est distincte de l’acceptation de constructeur
$enablePostQuantumpar signataire surPkcs11Signer. L’appel de signature échoue de façon fermée sans l’acceptation par signataire. La barrière de processus existe comme frontière auditable unique pour tout comportement futur d’aller-retour ou d’archivage. - Invariant d’honnêteté.
NextPDF\Enterprise\Security\Signature\Hsm\PqsCapabilityStatus::current()fixe en durgenerallyAvailable,adesCompliant,verificationAvailableetconformanceClaimedàfalse, etrecognitionOnlyàtrue. Aucune configuration, option de constructeur ou indicateur d’environnement n’active une revendication. SeulhsmRoundtripPreviewEnabledreflète la barrière. - Aucun chemin de vérification. NextPDF ne dispose d’aucun chemin de vérification post-quantique. Un identifiant d’algorithme reconnu ou une longueur de signature bien formée n’est jamais un verdict d’acceptation.
Cas limites et modes de défaillance
Section intitulée « Cas limites et modes de défaillance »- Définir la variable de barrière à
0,true,yes,onou une chaîne vide laisse la barrière désactivée. Seule la chaîne exacte1l’active. - Les modifications par
putenv()prennent effet au prochain appel deisEnabled()car la lecture est en direct. Une barrière basculée en cours de processus est observée immédiatement. mechanismId()etparameterSetId()résolvent des constantes depuis l’espace de noms de l’extensionPkcs11. Un environnement d’exécution dépourvu des constantes d’extension post-quantiques provisoires échoue avec uneErrorPHP (constante non définie) au moment de l’appel.- Les identifiants de mécanisme et de jeu de paramètres sont provisoires. OASIS n’a pas finalisé le registre post-quantique PKCS#11 v3.1. Un jeton dont le firmware attribue des identifiants différents échouera à la couche PKCS#11 ; les opérateurs doivent confirmer les identifiants du firmware avant d’activer l’aperçu.
- Le contexte de signature accepté par le signataire consommateur est limité à 255 octets, conformément au contrat d’entrée de signature FIPS 204 (§x43.p2). Un contexte plus long lève
InvalidArgumentExceptionavant tout appel au jeton. PqsCapabilityStatus::__construct()est public, de sorte qu’une instance construite à la main peut porter des booléens arbitraires. Une telle instance n’est qu’un objet-valeur. Elle ne modifie aucun comportement de signature.current()est le constructeur canonique, figé en dur.- Le choix entre aléatoire et déterministe sur le signataire consommateur suit la sémantique de FIPS 205 §x65.p7 : la signature couverte (hedged) est le comportement par défaut. L’indicateur est ignoré pour ML-DSA, qui rend toujours aléatoire via son propre nonce.
Comportement en mode FIPS
Section intitulée « Comportement en mode FIPS »ML-DSA et SLH-DSA sont des algorithmes FIPS 204 et FIPS 205, mais cet aperçu ne porte aucune revendication de validation FIPS 140-3. Aucun aller-retour HSM post-quantique validé FIPS n’a été établi pour ce chemin. Le profil de politique cryptographique en mode FIPS de l’édition Enterprise, documenté dans la référence détaillée Sécurité, encadre les algorithmes de signature classiques ; il n’admet pas la surface PQS dans un ensemble validé. Activer le mode FIPS ne rend pas la signature post-quantique validée FIPS. Ne déploie pas l’aperçu là où une signature validée FIPS est requise.
Conformité
Section intitulée « Conformité »| Revendication | Norme | Clause |
|---|---|---|
| ML-DSA-44/65/87 portent les catégories NIST revendiquées 2, 3, 5. | FIPS 204 | §4.p9 |
| Les tailles de signature ML-DSA sont de 2420, 3309, 4627 octets. | FIPS 204 | §4.p15 (Table 2) |
| La chaîne d’octets de contexte de signature est limitée à 255 octets. | FIPS 204 | §x43.p2 |
| Une signature ou une clé de longueur incorrecte doit être rejetée. | FIPS 204 | §x34 |
| Douze jeux de paramètres SLH-DSA sont approuvés. | FIPS 205 | §11.p12 (Table 2) |
| Les tailles de signature SLH-DSA suivent la Table 2 (7856 octets pour 128s). | FIPS 205 | §11.p6 |
| La signature couverte (hedged) est le comportement par défaut ; une variante déterministe existe. | FIPS 205 | §x65.p7 |
| Le catalogue de suites CAdES/PAdES ne profile que RSA et EC-DSA. | ETSI TS 119 312 V1.5.1 | §7.x7.p10 (Table A.1) |
| Les identifiants de mécanisme PQ PKCS#11 sont provisoires. | OASIS PKCS#11 v3.1 | fondé sur le code source du produit |
Toutes les clauses sont paraphrasées. NextPDF ne reproduit pas de texte normatif. NextPDF ne détient aucune certification et n’en accorde aucune. Les déclarations ci-dessus sont des déclarations d’alignement structurel portant sur les identifiants, les longueurs et les bornes. Ce ne sont pas des résultats de tests de conformité, ni des attestations de tiers, ni une revendication de conformité FIPS, OASIS ou ETSI. PqsCapabilityStatus encode cette posture dans le code : conformanceClaimed est false, adesCompliant est false et verificationAvailable est false, dans toutes les configurations. Une signature produite par cet aperçu n’est pas conforme AdES pour l’archivage à long terme, et la plupart des lecteurs PDF la rejettent au moment de la validation.
Notes de développement
Section intitulée « Notes de développement »-
Le registre de mécanismes post-quantiques PKCS#11 d’OASIS n’est pas finalisé ; les identifiants
CKM_ML_DSA/CKM_SLH_DSAet les constantes de jeu de paramètres utilisés ici sont provisoires et fondés sur le code source du produit, et non sur une citation de spécification. -
Le jalon actuel correspond à une préparation testée par simulation. Aucun aller-retour HSM avec firmware post-quantique réel n’a encore été validé.
-
Garde les deux barrières désactivées en production. L’aperçu n’ajoute aucune capacité de production que le chemin PKCS#11 RSA/ECDSA classique n’offre pas déjà.
-
Avant toute évaluation avec du matériel réel, confirme les identifiants de mécanisme et de jeu de paramètres du firmware du jeton par rapport aux valeurs provisoires. Une non-correspondance échoue à la couche PKCS#11, et non à l’intérieur de NextPDF.
-
Considère
PqsCapabilityStatus::current()comme la source de vérité unique lorsque tu exposes l’état PQS dans l’outillage ou l’interface. Ne redéclare pas ses booléens à la main. -
La sortie de
summary()peut sans risque être utilisée dans les journaux et les points de terminaison d’état ; elle est formulée pour ne porter aucune revendication de disponibilité ou de validation.
Voir aussi
Section intitulée « Voir aussi »- Aperçu de la signature HSM post-quantique (PQS) — page de capacité
- Sécurité — Référence détaillée (HSM, PKCS#11, mode FIPS)
- Signature — Référence détaillée
- Configuration de la signature HSM
- Sécurité / Signature (Core)
Limite de publication
Section intitulée « Limite de publication »Cette page documente uniquement le comportement observable de l’extérieur et la surface d’API publique prise en charge. Les chemins d’espaces de noms internes, les classes utilitaires, les tables de mécanismes, les noms de fichiers de runbook et les préfixes de tickets sont hors périmètre.