it-swarm.dev

Un modo standard per aggiungere manualmente una firma digitale a un file pdf?

Ho creato alcuni certificati per usare me stesso, ma mi trovo sconcertato quando si tratta di creare un certificato che contiene una firma digitale. Innanzitutto, come farei per creare un certificato standard che non contenga più solo campi comuni, ma anche quelli che contengono una firma digitale. E in secondo luogo, come posso aggiungere manualmente questo certificato come dati al corrispondente file pdf?

Grazie!

15
roman canada

In base ai tuoi commenti ad altre risposte, in realtà lo desideri

firmare un file pdf con il [tuo] certificato, quindi salvare questa firma e accodarla al pdf [che] hai appena firmato.

(A proposito, firmi con la chiave privata associata alla chiave pubblica nel tuo certificato, non con il certificato stesso, ma è un dettaglio.)

Presumo che tu voglia "aggiungi" la firma al PDF in un modo che un visualizzatore conforme allo standard PDF (ad esempio Adobe Reader) riconoscerà , visualizza e convalida come firma integrata PDF.

In tal caso hai già iniziato in modo sbagliato firmando l'originale PDF così com'è e aspettandoti di dover semplicemente aggiungere in qualche modo quella firma al file. Devi invece creare una nuova revisione del documento PDF che includa un campo firma PDF AcroForm il cui valore è un dizionario di firma il cui /Contenuto contiene la firma dell'intera nuova revisione, ad eccezione dei contenuti della voce /Contents .

Signature embedded in PDF

Se si devono integrare più firme in un PDF, ciò avviene mediante aggiornamenti incrementali PDF (esplicitamente non aggiungendo più SignerInfo struttura in un unico contenitore di firma CMS integrato!):

Multiple signatures and incremental updates

Questo è spiegato abbastanza graficamente e in modo più dettagliato nel documento Adobe Firme digitali in un PDF . Inoltre è specificato nella specifica PDF ISO 32000-1: 2008 resa disponibile qui da Adobe nella sezione 12.8 Firme digitali.

Attenzione però! Le specifiche dicono:

Un digest di intervallo di byte deve essere calcolato su un intervallo di byte nel file, che deve essere indicato dalla voce ByteRange nel dizionario delle firme. Questo intervallo deve essere l'intero file, incluso il dizionario della firma ma escluso il valore della firma stessa (la voce Contenuto). È possibile utilizzare altri intervalli, ma poiché non controllano tutte le modifiche al documento, il loro uso non è raccomandato.

Ciò sembra consentire di creare prima una firma per l'originale PDF e quindi di aggiungere una nuova revisione che mantenga quella firma indicando che l'intervallo di byte firmati contiene solo quella revisione originale, non la revisione estesa senza solo la firma.

In realtà, tuttavia, i visualizzatori PDF (in particolare Adobe Reader) accettano solo firme che seguono la raccomandazione che l'intervallo firmato dovrebbe essere l'intero file, incluso il dizionario della firma ma escluso il valore della firma stessa .

Specifiche più recenti, ad es. la specifica ETSI PAdES ETSI TS 102 778 (cfr. sezione 5.1 voce b nella parte 2 e sezione 4.2 voce c nella parte ) rendono persino questa raccomandazione ufficialmente un requisito e così sarà ISO 32000-2.

A seconda del contesto di programmazione, ci sono molte librerie PDF che supportano la creazione di firme PDF integrate e anche molti prodotti che usano queste librerie. Alcuni di essi sono persino disponibili per soggetti gratuiti, ad es. all'AGPL.

24
mkl

Poiché il certificato è stato registrato e i campi sono stati completati con i tuoi dati, il certificato è la tua firma digitale. Non aggiungere una firma digitale al certificato.

È necessario un certificato rilasciato da un'autorità di certificazione (che è possibile creare). Quindi aggiungi il certificato ai certificati attendibili (se autofirmato o meno da una CA riconosciuta standard). Quando crei PDF hai la possibilità di firmare il file con quel certificato. Quella firma del certificato è la tua firma digitale ...

C'è un HowTo decente qui che è del 2009 ma è ancora valido: http://blog.didierstevens.com/2009/01/04/howto-add-a-digital-signature-to-a-pdf- file /

1
AndyMac

Un certificato contiene sempre una firma, ma su se stesso, non su alcuni documenti PDF. Questa firma è parte integrante del certificato ed è stata calcolata dalla CA che ha emesso il certificato; ciò è verificando questa firma che qualsiasi software può guadagnare un po 'di fiducia nel contenuto del certificato. Tutto ciò accade indipendentemente da qualsiasi file PDF e potrebbe invecchiare prima che il file PDF sia mai esistito.

Quando firmi un documento "con un certificato", stai effettivamente calcolando una firma su PDF con la tua chiave privata - la chiave privata non è nel tuo certificato, ma il certificato contiene la chiave pubblica corrispondente . Quindi, la firma stessa e una copia del certificato devono essere inclusi nel file PDF.

documenti Adobe che le firme possono essere calcolate con i loro prodotti Reader e Acrobat. Può apparentemente essere fatto anche con software libero.

1
Tom Leek

La tua domanda è in realtà due domande diverse. Un certificato deve essere firmato da un altro certificato solo se deve esserci una catena di fiducia. Ad esempio, una CA principale firmerà i certificati che emettono in modo tale che chiunque provi a verificare il certificato sappia che è considerato attendibile dalla CA. È possibile eseguire questo tipo di concatenamento con qualsiasi certificato che consenta la firma del certificato.

Per i documenti invece, è necessario solo un certificato approvato per l'autenticazione client. Se stai eseguendo la tua CA, il tuo certificato è probabilmente approvato per qualsiasi scopo, ma mancherà di fiducia da chiunque altro che tu. Per firmare un PDF, è sufficiente importare il certificato in Acrobat e quindi utilizzare l'identità per firmare il documento.

1
AJ Henderson

Se si desidera firmare un PDF, la maggior parte dei writer PDF e alcune versioni del solo lettore avranno un meccanismo incorporato per la firma e alcuni anche per il timestamp. Ti chiederà di fornire il tuo file di certificato e quindi applicherà la firma digitale nel file. I PDF in particolare hanno questo meccanismo integrato nel formato, ma è anche possibile firmare qualsiasi tipo di file. Una cosa che è importante notare per i neofiti nella firma PDF è che puoi firmare un PDF senza un segno visibile sulla pagina. La firma è in realtà metadati e qualsiasi tipo di contrassegno sulla pagina è facoltativo.

Adobe fornisce un video tutorial su come firmare un PDF . Puoi anche leggere altra documentazione sul sito di Adobe.

Puoi anche eseguire la firma digitale dei file con gli strumenti della riga di comando, ma se sei nuovo nel processo, un programma come PortableSigner o forse j4sign potrebbe funzionare bene per te. Puoi sfogliare SourceForge e Github per cercare altri progetti applicabili che possano soddisfare le tue esigenze.

1
Eric G