Pular para o conteúdo
getnextpdf.com

Enterprise ediçãoestabilidade: Experimental

Status de capacidade de pré-visualização da assinatura HSM pós-quântica (PQS)

Status de capacidade de pré-visualização. Opcional, desativada por padrão, falha fechada. Esta é uma pré-visualização de assinatura pós-quântica delegada a HSM. Não é disponível em caráter geral, não é compatível com AdES, não é validada por FIPS e não faz nenhuma reivindicação de certificação ou conformidade. A pré-visualização fica desativada até que você opte por ela; quando desativada, a chamada de assinatura falha fechada com uma exceção tipada.

O NextPDF Enterprise expõe uma superfície experimental de assinatura pós-quântica (PQS) que conduz a assinatura ML-DSA (FIPS 204) e SLH-DSA (FIPS 205) por meio de um token de hardware PKCS#11. O caminho é Pkcs11Signer::signPqs(), restringido por trás de uma opção explícita por assinante ($enablePostQuantum) e, separadamente, por trás de uma flag de ambiente em nível de processo (NEXTPDF_FEATURE_PREVIEW_PQS_HSM). Ambas estão desativadas por padrão.

Esta página é o limite honesto. Ela afirma o que a pré-visualização faz — ela delega uma operação real de assinatura pós-quântica ao token — e, com igual honestidade, o que ela não é: não é GA, não é AdES, não é validada por FIPS e não é uma reivindicação de conformidade contra FIPS, OASIS ou ETSI. As normas que tornariam uma assinatura PDF pós-quântica interoperável para arquivamento de longo prazo ainda não chegaram (consulte Limite de normas).

Esta capacidade é entregue no NextPDF Enterprise (nextpdf/enterprise) e é ativada com um envelope de licença de nível Enterprise. Uma implantação sem esse direito não carrega as classes da capacidade. Compare edições e obtenha uma licença.

Ela é construída sobre o assinante de token de hardware PKCS#11 do Enterprise — consulte Assinatura HSM. O caminho de assinatura PKCS#11 clássico (RSA / ECDSA) é a capacidade Enterprise suportada e estável; o caminho pós-quântico descrito aqui é uma pré-visualização experimental sobreposta a ele. O NextPDF Enterprise inclui o conjunto de recursos do Pro.

A pré-visualização conduz uma operação genuína de assinatura: quando ativada, signPqs() despacha para o mecanismo pós-quântico candidato PKCS#11 v3.1 no token, a chave privada nunca deixa o limite do token, e os bytes retornados têm o comprimento verificado contra o comprimento de assinatura mandado por FIPS para o conjunto de parâmetros escolhido antes de serem aceitos.

Ela é, ao mesmo tempo, uma pré-visualização e não uma capacidade de produto disponível em caráter geral:

  • Os identificadores de mecanismo pós-quântico e de conjunto de parâmetros do PKCS#11 são provisórios — o OASIS PKCS#11 v3.1 não finalizou um registro de mecanismo pós-quântico, então os valores usados são rastreados como provisórios, e os operadores de HSM devem confirmar que o firmware PQ do seu token corresponde a eles antes de ativar.
  • Não existe nenhum caminho de verificação pós-quântica no NextPDF, e nenhuma suíte ETSI registra uma assinatura pós-quântica para arquivamento de longo prazo AdES, então uma assinatura produzida aqui ainda não é interoperável e a maioria dos visualizadores de PDF a rejeitará no momento da validação.
  • Um descritor companheiro, PqsCapabilityStatus, informa esses fatos de forma legível por máquina. Todo booleano de reivindicação positiva — generallyAvailable, adesCompliant, verificationAvailable, conformanceClaimed — é fixado em código como false e permanece false mesmo quando a flag de pré-visualização está ativada, e nenhuma configuração pode alterná-lo para ativado. (Ele também carrega uma flag recognitionOnly, fixada em código como true, que registra que o reconhecimento de algoritmo nunca é um veredicto de conformidade; isso não significa que a superfície não possa assinar — a assinatura ocorre por meio de signPqs() conforme descrito acima.)

O NextPDF já consegue computar uma assinatura ML-DSA ou SLH-DSA real por meio do token. Ainda assim, todo booleano de conformidade permanece fixado em código como false, atrás de duas portas desativadas por padrão. Uma assinatura só vale a capacidade de verificá-la mais tarde. Para pós-quântica não há caminho de verificação, nenhuma suíte AdES ETSI registrada e ainda nenhum round-trip de HSM validado por FIPS. Entregar isso como disponível em caráter geral emitiria assinaturas que nenhum visualizador consegue validar e nenhum arquivo consegue confiar. Portanto, o design separa produzir os bytes de reivindicar que alguém pode depender deles, e nenhuma flag de pré-visualização pode borrar essa linha.

Contexto de design: Validação de longo prazo.

signPqs() seleciona o algoritmo e o conjunto de parâmetros por meio da enum Pkcs11PqsAlgorithm. Cada caso mapeia um conjunto de parâmetros NIST para um identificador provisório de mecanismo / conjunto de parâmetros PKCS#11 e para o comprimento de assinatura em bytes mandado por FIPS usado na verificação de comprimento de defesa em profundidade.

ML-DSA — FIPS 204 (module-lattice). Três conjuntos de parâmetros, declarados nas categorias de força de segurança NIST mostradas:

Conjunto de parâmetrosCategoria NISTComprimento da assinatura (bytes)
ML-DSA-4422420
ML-DSA-65 (padrão recomendado)33309
ML-DSA-8754627

SLH-DSA — FIPS 205 (baseado em hash, sem estado). Doze conjuntos de parâmetros, formados como SHA2 / SHAKE x 128 / 192 / 256 x pequeno (s) / rápido (f). As variantes s minimizam o tamanho da assinatura; as variantes f minimizam a latência de assinatura:

Família de conjunto de parâmetrosCategoria NISTComprimento da assinatura (bytes)
SLH-DSA-{SHA2,SHAKE}-128s17856
SLH-DSA-{SHA2,SHAKE}-128f117088
SLH-DSA-{SHA2,SHAKE}-192s316224
SLH-DSA-{SHA2,SHAKE}-192f335664
SLH-DSA-{SHA2,SHAKE}-256s529792
SLH-DSA-{SHA2,SHAKE}-256f549856

Duas portas independentes devem estar ambas abertas. Ambas estão desativadas por padrão.

  1. Porta de processo. Defina NEXTPDF_FEATURE_PREVIEW_PQS_HSM=1 antes de o processo inicializar (ou via putenv() antes de o status ser lido). É exigida igualdade estrita com a string 1; qualquer outro valor — incluindo 0, true, yes ou vazio — é tratado como desativado.
  2. Opção por assinante. Passe $enablePostQuantum: true para o construtor de 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() informa se a opção por assinante foi definida, e PqsCapabilityStatus::current() informa o estado em nível de processo mais os booleanos honestos de reivindicação.

A superfície é de falha fechada e relata falhas por meio de exceções nomeadas e tipadas em vez de fallback silencioso:

  • Opção ausente. Se signPqs() for chamado quando $enablePostQuantum for false, ele lança HsmOperationException. Nenhuma assinatura ocorre.
  • Contexto longo demais. Uma octet string de contexto de assinatura mais longa do que 255 bytes lança InvalidArgumentException (de acordo com o limite de contexto de FIPS 204 / FIPS 205) antes de qualquer chamada ao token.
  • Chave ausente. Se nenhuma chave privada corresponder ao rótulo configurado no token, signPqs() lança HsmOperationException.
  • Divergência de comprimento. Se o token retornar uma assinatura cujo comprimento em bytes não seja igual ao comprimento mandado por FIPS para o conjunto de parâmetros, signPqs() lança HsmOperationException — uma assinatura malformada (truncada ou superdimensionada) é rejeitada antes que possa chegar à codificação CMS SignedData.
  • Erro de token. Qualquer erro PKCS#11 subjacente é encapsulado em HsmOperationException.

A flag de ambiente em nível de processo não altera nada quanto a esse limite: mesmo quando a flag está ativada, os booleanos de capacidade permanecem false e o caminho de assinatura permanece verificado quanto ao comprimento e de falha fechada.

As reivindicações a seguir não são feitas para esta superfície e não devem aparecer em nenhuma documentação, UI ou marketing derivado dela:

  • “GA” / “generally available”.
  • “AdES” / “PAdES-compliant” — nenhuma suíte ETSI registra uma assinatura pós-quântica para arquivamento de longo prazo.
  • “FIPS-validated” — nenhum round-trip de HSM pós-quântica validado por FIPS-140-3 foi estabelecido para este caminho.
  • “certified” ou “conformant” contra FIPS, OASIS PKCS#11 v3.1 ou ETSI.
  • “production-ready”.

O que a superfície honestamente é: uma pré-visualização opcional, desativada por padrão e de falha fechada de assinatura pós-quântica delegada a HSM que conduz ML-DSA / SLH-DSA por meio de um token PKCS#11 e verifica o comprimento do resultado. O que ela não é: uma capacidade de assinatura disponível em caráter geral, compatível com AdES, validada por FIPS ou certificada.

As normas envolvidas são mantidas por órgãos externos, e a pré-visualização não toma nenhuma posição sobre conformidade com qualquer uma delas:

  • Os conjuntos de parâmetros de algoritmo e os comprimentos de assinatura seguem FIPS 204 (ML-DSA) e FIPS 205 (SLH-DSA).
  • Os identificadores de mecanismo de token seguem o OASIS PKCS#11; o registro de mecanismo pós-quântico no PKCS#11 v3.1 ainda não está finalizado, então o NextPDF usa identificadores provisórios.
  • Os perfis de arquivamento de longo prazo de assinatura PDF são ETSI EN 319 142-2 (perfis estendidos PAdES, construídos sobre CMS SignerInfo) e o catálogo de suítes criptográficas ETSI TS 119 312, que atualmente perfilam apenas RSA e ECDSA — nenhuma suíte pós-quântica está registrada para CAdES/PAdES. Uma assinatura PDF pós-quântica produzida hoje, portanto, ainda não é compatível com AdES para arquivamento.

Nenhum texto de norma é reproduzido nesta página.

Uma pré-visualização não é um controle de segurança. A presença de uma assinatura pós-quântica produzida por este caminho não estabelece validade AdES, não implica uma chave confiável e não é verificável pelo NextPDF (não existe caminho de verificação pós-quântica). Não dependa desta pré-visualização para garantia de assinatura e não a implante onde uma assinatura compatível com AdES ou validada por FIPS seja exigida. Mantenha ambas as portas desativadas em produção até que as normas cheguem.

SímboloFunção
Pkcs11Signer::signPqs()Assinatura pós-quântica delegada a HSM, opcional e de falha fechada, por meio de PKCS#11. Lança HsmOperationException quando desativada, quando a chave está ausente ou em uma divergência de comprimento de assinatura.
Pkcs11Signer::isPostQuantumEnabled()Se a opção por assinante $enablePostQuantum foi definida.
Pkcs11PqsAlgorithmEnum de conjuntos de parâmetros ML-DSA (FIPS 204) e SLH-DSA (FIPS 205); mapeia cada um para um id de mecanismo provisório e o comprimento de assinatura mandado por FIPS.
PqsPreviewFeaturePorta de ambiente em nível de processo, desativada por padrão (NEXTPDF_FEATURE_PREVIEW_PQS_HSM).
PqsCapabilityStatusStatus honesto e legível por máquina: todo booleano de reivindicação positiva (generally-available, AdES, verification, conformance) é fixado em código como false independentemente da flag de pré-visualização.
HsmOperationExceptionA exceção tipada levantada nos caminhos de falha fechada.

Esta página documenta apenas o comportamento observável externamente e a superfície pública de API suportada. Caminhos internos de namespace, classes auxiliares, tabelas de mecanismos, nomes de arquivos de runbook e prefixos de ticket estão fora de escopo.