Falsificazione di una firma PDF

 

Questa pagina documenta come sia possibile falsificare una firma apposta su un documento PDF. Come per le banconote, a un'analisi attenta e scrupolosa la falsificazione non potrà passare inosservata, ma in mancanza di questa il documento firmato potrà sembrare perfettamente valido. Quello che sto dicendo è supportato da prove effettuate con gli attuali software di verifica in commercio (gratuiti e a pagamento), disponibili sia come servizi on-line, sia come applicazioni desktop, sia come librerie da integrare in applicazioni automatizzate. Ciò che è emerso è che la maggior parte di questi software, testati a inizio 2013, effettua dei controlli molto blandi e pertanto non si accorge affatto della falsificazione, ritenendo le firme valide e i documenti integri. Per comodità in fondo alla pagina troverete un elenco di servizi on-line gratuiti, forniti dalla Commissione Europea e da Certification Authority italiane, con cui verificare personalmente i documenti allegati a questo articolo e constatare quanto sto affermando [1].  

 

Iniziamo con una breve introduzione: la firma digitale, normata dalla Comunità Europea e regolamentata in Italia dall'Agenzia per l'Italia Digitale, permette la sostituzione di carta e firme autografe (ad esempio per la stipula di contratti) con l'uso di documenti informatici sottoscritti, ovvero firmati in modo digitale seguendo precise regole tecniche.


La firma digitale ha un duplice vantaggio:

  1. congelare il documento informatico al momento della firma, in modo che qualsiasi modifica apposta in seguito venga rilevata e renda quindi la firma non più valida;
  2. evidenziare la paternità del documento: solo il titolare del dispositivo di firma potrà firmare a proprio nome, utilizzando un certificato emesso da un ente certificatore accreditato che lo abbia preventivamente riconosciuto "de visu".

 

Prima falsificazione

 

A questo punto passiamo al primo documento firmato di esempio che ho preparato: test-dollars.pdf

 

Il testo contenuto è il seguente: "Authorized transfer amount: 100 dollars."

 

Provate a verificarlo con uno dei servizi on-line ed il risultato sarà qualcosa di simile a questo:  

 

 

Bene, la firma risulta valida, quindi adesso abbiamo la certezza che l'Utente di Test ha effettivamente autorizzato il trasferimento di 100 dollari. Verifichiamo che il primo dei vantaggi della firma digitale sopra elencati sia vero. Apriamo il PDF con un editor di testo e modifichiamo il valore di 100 dollari con 10.000 euro. Per comodità ho già preparato il file con questa modifica: test-euros.pdf

 

Queste sono le differenze tra i due documenti:  

 

diff -u test-dollars.pdf test-euros.pdf
--- test-dollars.pdf    2013-02-02 16:38:21.000000000 +0100
+++ test-euros.pdf      2013-02-02 16:38:31.000000000 +0100
@@ -27,7 +27,7 @@
 36 806 Td
 0 -18 Td
 /F1 12 Tf
-(Authorized transfer amount: 100 dollars)Tj
+(Authorized transfer amount: 10000 euros)Tj
 0 0 Td
 ET
 Q

 

Come si può vedere dalla diff il PDF non è stato ri-firmato, ma è stata cambiata solo una riga al suo interno. Adesso sicuramente la verifica fallirà, confermando che il documento è stato modificato. Non può essere altrimenti, visto che il cambio euro/dollaro non è certo 100, ma soprattutto l'hash del documento è sicuramente cambiato.
Risottomettiamolo a un servizio di verifica e...  

 

 

Oops, risulta ancora valido! Ma... come... non è possibile! E le nostre certezze sulla firma digitale? Sembra che incomincino a vacillare, ma tutto questo è stato possibile perché sono in possesso della chiave di firma, ho potuto creare e manipolare i documenti a mio piacere. Posso ritrattare o disconoscere quanto ho firmato in passato, ma non posso falsificare documenti di altre persone. Oppure sì? 

 

 

Seconda falsificazione

 

Vediamo ora un altro documento dove Banca d'Italia afferma di essere in debito con me per un milione di euro: test-bank.pdf
Sebbene la cosa mi farebbe molto piacere, chiaramente il documento non può essere autentico.

 

Le possibilità sono tre:

  1. il documento non è firmato;
  2. il documento è stato alterato dopo la firma;
  3. il documento è stato firmato con una chiave fasulla associata ad un certificato non rilasciato da una Certification Authority accreditata.

Passiamolo all'ennesimo servizio di verifica e...  

 

 

Firmato da Banca d'Italia?! Com'è possibile? Il secondo vantaggio della firma digitale non doveva essere quello della paternità del documento? È stata tutta una grossa presa in giro? 

 

 

Conclusione

 

La realtà non è come appare. Il concetto di firma digitale non viene messo in discussione. Nondimeno quanto presentato in questo articolo è di notevole gravità, perchè se è vero che queste firme sono false è altrettanto vero che quasi nessuno dei software forniti dalle Certification Authority e dalla Comunità Europea è stato in grado di accertarlo. La firma digitale offre maggiori garanzie rispetto alla firma autografa, ma a condizione che il software usato per produrle e verificarle sia implementato con la dovuta attenzione e segua le specifiche con rigore. La verifica di una firma non è un processo semplice, soprattutto quella PDF che, a fronte di maggiore fruibilità per l'utente, comporta maggiori complessità a livello tecnico e implementativo.  

 

Le spiegazioni tecniche di quanto esposto in questa pagina sono rimandate ad un articolo futuro, nella speranza che nel frattempo chi non si è accorto delle falsificazioni abbia il tempo di correggere i propri prodotti.

 

- Alessandro Premoli

 

 

[1] http://dss.digitpa.gov.it/dss-webapp/signature.jsp (Commissione Europea - richiede Java)

http://vol.actalis.it/volCertif/ (Actalis)

https://www.firma.infocert.it/utenti/verifica.php (InfoCert)

http://vol.ca.notariato.it/ (Consiglio Nazionale del Notariato)

Elenco software di verifica fornito dall'Agenzia per l'Italia Digitale

 


 

Per inviare i vostri commenti o richiedere ulteriori informazioni potete usare il seguente form:  

 

Nome:
Email:
Messaggio: