Modello di sicurezza per firma e cifratura
In sintesi
Sezione intitolata “In sintesi”Questa pagina descrive il modello di sicurezza per le due superfici crittografiche esposte dal core engine: la cifratura del documento (AES-256) e la firma del documento (CMS/PAdES). Spiega cosa protegge ciascun meccanismo, cosa non protegge e dove si colloca il relativo confine di fiducia.
Confine. Il supporto di un meccanismo crittografico non è una garanzia della sua sicurezza nella distribuzione in uso. La robustezza di un documento cifrato dipende dalla password scelta e dalle modalità di custodia della chiave. Il significato di una firma dipende dal certificato, dal trust anchor, dall’autorità di marca temporale e dalla policy del verificatore. Il certificato, il trust anchor, l’autorità di marca temporale e la policy del verificatore sono tutti esterni a questa libreria. Questa pagina descrive il meccanismo; non certifica il risultato.
Installazione
Sezione intitolata “Installazione”composer require nextpdf/core:^3ext-openssl è necessaria per i percorsi di firma e CMS.
Panoramica concettuale
Sezione intitolata “Panoramica concettuale”Nel core engine, la cifratura è il security handler AES-256 di ISO 32000-2 §7.6 (AESV3, Revision 6). Fornisce riservatezza: chi non possiede la password non può leggere il contenuto di stringhe e flussi. Non fornisce integrità o autenticità. Un testo cifrato può comunque essere troncato o sostituito. Rilevare un testo cifrato troncato o sostituito è compito di una firma o di un MAC del documento, non del security handler di cifratura.
I permessi (stampa, copia, modifica) sono un concetto distinto e una frequente fonte di equivoci sul piano della fiducia. I flag di permesso di ISO 32000-2 sono reader-cooperative. Un reader conforme li rispetta, ma sono metadati indicativi, non un controllo di accesso crittografico. Uno strumento non cooperante può ignorarli. L’engine li emette fedelmente; non può farli rispettare.
La firma è una struttura CMS SignedData incorporata secondo ISO 32000-2 §12.8. Il byte range firmato è un oggetto diretto e il digest esclude deliberatamente il valore Contents della firma, in modo che la firma copra il documento ma non sé stessa.
Superficie API
Sezione intitolata “Superficie API”Questa pagina non documenta di nuovo le firme. I punti di ingresso della cifratura e l’orchestratore della firma sono descritti in /modules/core/security/ e /modules/core/security/signing/. Il modello qui riguarda il significato e il confine, non la forma dei metodi.
Esempio di codice — Avvio rapido
Sezione intitolata “Esempio di codice — Avvio rapido”La cifratura protegge la riservatezza rispetto ai soggetti privi della password — e niente di più:
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$doc = new Document();// AES-256 (AESV3 R6). The owner/user passwords gate read access only.// Permission flags below are advisory: a conforming reader honors them.$doc->encrypt( userPassword: 'open-secret', ownerPassword: 'owner-secret',);$doc->save('confidential.pdf');Esempio di codice — Produzione
Sezione intitolata “Esempio di codice — Produzione”In produzione, un flusso di firma applica una firma baseline CMS/PAdES con una chiave gestita via software. La Core edition produce il livello PAdES B-B. Quando è configurata un’autorità di marca temporale, la Core edition produce PAdES B-T, ovvero B-B più un singolo attributo non firmato RFC 3161 signature-time-stamp:
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;use NextPDF\Security\Signature\CertificateInfo;use NextPDF\Security\Signature\SignatureLevel;
$cert = CertificateInfo::fromPkcs12('signer.p12', 'pin');
$doc = new Document();// B-B is the default. B-T adds a trusted timestamp over the signature value.$doc->setSignature($cert, SignatureLevel::PAdES_B_B);$doc->save('signed.pdf');PAdES B-T corrisponde esattamente a B-B più un attributo non firmato RFC 3161 signature-time-stamp trasportato nel CMS SignerInfo. La marca temporale lega il valore della firma a un orario attendibile ottenuto da un’autorità di marca temporale. Non aggiunge un dizionario di validation-data, una struttura di revocation-information né un ciclo di archive-timestamp. Sono livelli a lungo termine distinti, con ambito separato, che non fanno parte della superficie B-B/B-T e che esulano dall’ambito di questa pagina.
U-1. NextPDF non dichiara alcuna certificazione indipendente ETSI EN 319 142-1 per PAdES B-T. EN 319 142-1 non è incluso nel corpus di verifica usato qui. Il requisito B-T signature-time-stamp è verificato rispetto a ETSI EN 319 122-1 §5.3 — la base CAdES che la famiglia EN 319 142 PAdES importa per riferimento — insieme a RFC 3161, RFC 5652 e ISO 32000-2 §12.8. Il supporto del profilo B-T non è una certificazione di conformità né di validità legale. Tale determinazione spetta a un validatore indipendente.
Casi limite e insidie
Sezione intitolata “Casi limite e insidie”- Cifratura ≠ integrità. Un reader in grado di aprire il documento può comunque ricevere una copia manomessa. Solo una firma (o un MAC del documento) può rilevarlo. «A prova di manomissione» non è una proprietà fornita dal security handler di cifratura e il termine non viene utilizzato come dichiarazione di prodotto.
- La presenza di una firma non è la sua validità. Il fatto che un documento contenga un dizionario di firma non indica se il certificato sia attendibile, non scaduto o non revocato. Stabilire la validità è un’operazione lato verificatore, regolata dalla policy della relying party, non dal firmatario.
- La fiducia nella marca temporale è esterna. Una marca temporale B-T è significativa solo nella misura in cui il verificatore si fida dell’autorità di marca temporale che l’ha emessa. La libreria ottiene e incorpora il token. Non offre garanzie sulla TSA.
- La conformità FIPS è ambientale. L’esecuzione su un modulo crittografico convalidato FIPS è una proprietà dell’ambiente operativo e del modulo, non una proprietà che una libreria PHP possa dichiarare per conto del proprio chiamante.
Prestazioni
Sezione intitolata “Prestazioni”Il percorso di firma calcola un digest del byte range e una struttura CMS. L’estensione B-T aggiunge un round-trip sincrono verso l’autorità di marca temporale. La cifratura è un’operazione simmetrica per-string/per-stream. Nessuna delle due operazioni domina il costo di un rendering tipico. Il round-trip di rete per B-T è il costo variabile e dipende dalla scelta della TSA da parte del chiamante.
Note sulla sicurezza
Sezione intitolata “Note sulla sicurezza”Dichiarazioni di confine, riformulate come regole applicabili da un revisore:
- Solo riservatezza. La cifratura AES-256 protegge il contenuto rispetto ai soggetti privi della password. Non è integrità, non è autenticità, non è controllo di accesso.
- I permessi sono indicativi. I flag di permesso sono reader-cooperative e non sono applicati crittograficamente. Nessuna formulazione di prodotto dichiara che impediscano un’azione.
- Solo B-B e B-T in questa pagina. La superficie di firma core/Pro documentata qui copre B-B e la sua estensione di marca temporale B-T; ogni menzione di B-T è affiancata alla precisazione U-1 riportata sopra. I livelli di archiviazione a lungo termine sono una superficie separata, della paid edition, e non sono descritti qui intenzionalmente. In questa pagina non viene dichiarata alcuna capacità di validation-data, revocation-information o archive-timestamp.
- Nessuna dichiarazione di validità legale. Una firma prodotta è un artefatto crittografico. Il fatto che sia legalmente valida dipende dalla giurisdizione, dalla certificate policy e dalla relying party — non da questa libreria.
Conformità
Sezione intitolata “Conformità”Il supporto non equivale alla conformità. L’engine produce output che utilizza i costrutti citati di ISO 32000-2, RFC 3161, RFC 5652 ed ETSI EN 319 122-1. L’engine non dichiara conformità a PAdES, CAdES o eIDAS. La convalida FIPS 140-3 è una proprietà del module/environment, non una dichiarazione della libreria. Qualsiasi determinazione di conformità o di validità legale spetta a un validatore o valutatore indipendente.