1. Home
  2. 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 SignerInfo with an ECDSA P-256 signature, the messageDigest and signingCertificateV2 signed 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 SignedData with an ML-DSA-65 signature (FIPS 204), encoded as RFC 9882 specifies, computed over the same document bytes. It is carried in the classical SignerInfo’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:

  1. The post-quantum layer is present and well formed.
  2. The ML-DSA-65 signature verifies over the document bytes, with the algorithm parameters checked against the certificate.
  3. The post-quantum certificate chains to a trusted post-quantum CA and is not revoked.
  4. The binding attribute matches this classical signature and this signer certificate.
  5. 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.

IdentityIdentity proofing

Identity document and selfie, reviewed by an operator before any certificate is issued.

ConsentSCAL2 with passkeys

The signer authorises each signature with a WebAuthn passkey.

PKITwo certificate hierarchies

Separate classical and post-quantum certification authorities.

TimeRFC 3161 time-stamping

A classical TSA and a post-quantum TSU signing with SLH-DSA (FIPS 205).

StatusCRL and OCSP

Revocation status published for the certificates issued to signers.

ArchivePAdES-BASELINE-LTA

Long-term validation data and archive time-stamps in the PDF.

AssuranceNIST known-answer tests

ML-DSA and SLH-DSA verification checked against NIST ACVP vectors in CI.

ReportETSI validation report

On request, a verdict comes with a report in the ETSI TS 119 102-2 format.

Integration

How it fits an existing PAdES pipeline.

SIGNING

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.

KEYS

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.

VALIDATION

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.

Technical briefing · 30 minutes

See the gap on a real signed document.

A live session with the production platform: we take a document signed through it, tamper with it three ways, and show what your current validator reports next to what Perennis reports. Then we look at how the layer fits your PAdES pipeline.

Or write directly: rumen@perennistrust.eu

  1. 0–5 minWhere the post-quantum gap sits in your stack
  2. 5–20 minA signed document, three tampers, both verdicts
  3. 20–30 minIntegration path and a pilot plan