- Home
- Technology
Technology
One PAdES signature, two layers, one rule for accepting it.
Perennis keeps the classical signature exactly as relying parties expect it and adds a post-quantum signature they can require. This page describes what goes into the file, how the two layers are tied together, and how they are validated.
What is in the signed PDF
A PAdES signature signs the bytes named by /ByteRange: everything in the file except the /Contents hole that holds the signature itself. Perennis puts two signatures over those same bytes.
- The classical layer. A standard CMS
SignerInfowith an ECDSA P-256 signature, themessageDigestandsigningCertificateV2signed attributes, and the signer’s certificate chain. It is the signature every validator in use today already reads. - The post-quantum layer. A complete CMS
SignedDatawith an ML-DSA-65 signature (FIPS 204), encoded as RFC 9882 specifies, computed over the same document bytes. It is carried in the classicalSignerInfo’s unsigned attributes, which RFC 5652 §5.3 defines as the place for attributes the signature does not cover. - The binding. A signed attribute inside the post-quantum layer ties it to this classical signature value and this signer certificate. A layer copied from another signature, or onto another document, fails that check.
Why the unsigned attributes
Backward compatibility. Placing the post-quantum signature where a classical validator does not have to process it is what keeps an unmodified validator’s verdict on the classical signature unchanged. With the issuing CA trusted, an unmodified EU DSS 6.3 reports the signed document as TOTAL_PASSED, PAdES-BASELINE-LTA.
The price of that placement is the gap this product exists to close: a validator that may skip the attribute will also not notice when it is gone. The answer is not to move the signature, but to give relying parties a validator that requires it.
ETSI TS 119 312 V2.1.1 describes this kind of construction in clause 6.4.2 a): two independent signature primitives computed and verified separately over the same message data
. Its note states that the encoding and interoperability requirements for hybrids are left to profile standards still to be written.
How validation works
Validation is composed, not replaced. The classical layer stays with the validator you already trust, such as EU DSS. The Perennis validator checks the post-quantum layer:
- The post-quantum layer is present and well formed.
- The ML-DSA-65 signature verifies over the document bytes, with the algorithm parameters checked against the certificate.
- The post-quantum certificate chains to a trusted post-quantum CA and is not revoked.
- The binding attribute matches this classical signature and this signer certificate.
- Any post-quantum time-stamp is valid and covers the signature.
Under a hybrid validation policy the document is accepted only when both layers pass, the acceptance rule of TS 119 312 V2.1.1 clause 6.4.1. A layer that is missing, altered or moved gives a failed verdict that names the check that failed. On request, the result is also returned as an ETSI TS 119 102-2 validation report.
Post-quantum time-stamps
A long-lived signature depends on its time-stamps as much as on the signature. Alongside a classical RFC 3161 TSA, the platform runs a post-quantum time-stamping unit that signs tokens with SLH-DSA-SHA2-192s (FIPS 205, carried in CMS as RFC 9814 specifies), the hash-based family that TS 119 312 V2.1.1 lists for time-stamps in Table 3.3. Its Table A.9 states that TSU public keys should support SLH-DSA, XMSS or LMS
.
The platform around it
The hybrid layer is produced inside a complete signing service, so a pilot exercises the whole chain and not a demo script.
Identity document and selfie, reviewed by an operator before any certificate is issued.
The signer authorises each signature with a WebAuthn passkey.
Separate classical and post-quantum certification authorities.
A classical TSA and a post-quantum TSU signing with SLH-DSA (FIPS 205).
Revocation status published for the certificates issued to signers.
Long-term validation data and archive time-stamps in the PDF.
ML-DSA and SLH-DSA verification checked against NIST ACVP vectors in CI.
On request, a verdict comes with a report in the ETSI TS 119 102-2 format.
Integration
How it fits an existing PAdES pipeline.
Add the layer at signing time
The post-quantum layer is added where your service assembles the CMS signature, after the classical signature value exists and before the PDF is finalised. Your classical keys, certificates and profile do not change.
Post-quantum keys and certificates
Each signer gets an ML-DSA-65 key and a certificate from a post-quantum CA kept separate from the classical one. In a pilot these are ours; in production, yours.
Validate next to EU DSS
Relying parties keep their classical validator and call the Perennis validator for the post-quantum layer, under a policy they choose.