software,

Come nascondere in modo sicuro le informazioni riservate da un file pdf

Sabino Maggi Sabino Maggi Segui 7-Aug-2021 · 10 minuti di lettura
Condividi

Ve la ricordate la figuraccia dell’esercito americano che aveva documentato i risultati dell’indagine sulla morte di Nicola Calipari con un PDF pieno di omissis ma che poteva essere letto integralmente con un semplice copia e incolla del testo? Beh, è successo anche a me: dovevo nascondere delle informazioni riservate da alcuni documenti richiesti dal Ministero e ho fatto lo stesso errore degli americani. Però poi ho imparato come si fa in modo corretto e lo racconto qui perché potrebbe essere utile ad altri lettori.


La burocrazia italiana è un mostro dalle mille teste e da un pezzo ho smesso di cercare di capirne le motivazioni. Questa però non è male: ogni volta che partecipo a un progetto di ricerca finanziato da un Ministero o da una Regione devo produrre i miei cedolini dello stipendio in formato PDF per tutti i mesi (o meglio anni) di durata del progetto.

Tutto ciò serve a dimostrare che il mio datore di lavoro è in regola con i contributi e con tutte le altre disposizioni di legge. Tutto bene in teoria, peccato che il mio datore di lavoro sia il CNR, un ente pubblico, che quindi deve per forza di cose essere in regola con queste disposizioni. Ma la burocrazia non guarda a questi dettagli, se c’è una norma va applicata ciecamente anche se è inutile (anzi, direi, preferibilmente se è inutile).


Ma al di là della seccatura di dover rispondere ad una richiesta chiaramente superflua, i cedolini contengono informazioni riservate che è bene nascondere: l’IBAN prima di tutto, ma poi anche l’eventuale quota sindacale, informazioni sulle tasse pagate o sui prestiti e benefici vari di cui si potrebbe usufruire, e chissà che altro che non so. Per parecchio tempo ho reso illeggibili queste informazioni utilizzando la funzione sfumino (smudge) di Pixelmator, come si può vedere qui sotto.

Usare lo sfumino però è noioso, soprattutto se si deve ripetere il processo su un gran numero di documenti diversi. E allora a un certo punto, ideona!, ho pensato bene di utilizzare Anteprima per inserire dei rettangoli neri sopra le porzioni di testo da nascondere, con il grosso vantaggio di poterli copiare ed incollare facilmente in tutti i documenti da mascherare.

Ma, proprio come nel rapporto Calipari, questo metodo consente di recuperare le informazioni riservate con un semplice copia e incolla, come potete verificare voi stessi con questo file.1

Tutto ciò succede perché, a partire dalla versione 1.5, un file PDF può memorizzare le informazioni su più livelli diversi, più o meno come i file grafici di Photoshop (o simili). Nel caso specifico, i rettangoli aggiunti finiscono in un livello diverso da quello del cedolino originale e possono essere selezionati e modificati anche in un secondo momento con Anteprima o con Acrobat Reader.


Combinare i livelli di un file PDF è facile, basta usare il servizio “Salva come PDF…” raggiungibile dal menu File > Stampa… di Anteprima (o di qualunque altra applicazione per macOS). Questo servizio simula la stampa del file PDF originale, salvandolo invece in un nuovo documento PDF. Poiché una stampante non può gestire i livelli multipli del file originale, l’effetto finale è quello di fondere tutti i livelli in uno solo, rendendo il documento non più modificabile (come ci si può accorgere facilmente se si prova a selezionare i rettangoli neri di questo file dopo averlo stampato virtualmente come appena descritto).

Ho sempre pensato che tutto ciò bastasse a nascondere efficacemente le informazioni riservate, ma purtroppo non è così: anche se i rettangoli neri aggiunti al file PDF non possono essere più modificati, è ancora possibile selezionare e copiare il testo sottostante (provare con il file di sopra per credere).

Per fortuna il problema può essere risolto sia tramite il solito Anteprima che con il Terminale. Anteprima va benissimo se abbiamo a che fare con uno o due file PDF, mentre la potenza del Terminale viene fuori alla grande quando i file da gestire sono parecchi.


Metodo numero 1. Usare Anteprima è di gran lunga il modo più facile per nascondere in modo sicuro le informazioni riservate presenti in un file PDF, ma richiede due passaggi manuali e la creazione di un file intermedio che va poi buttato via, per cui è consigliabile solo a chi deve rendere sicuri solo pochi file PDF (oppure a chi ha molta pazienza).

Per procedere bisogna aprire con Anteprima il file PDF contenente le informazioni riservate ancora in chiaro e inserire i soliti rettangoli neri sopra le parti di testo da nascondere. Arrivati a questo punto si esporta il file PDF in un formato grafico, che può essere indifferentemente HEIC, PNG o TIFF (non JPEG, perché questo formato supporta solo documenti di una pagina). Basta ora aprire questo file grafico con Anteprima ed esportarlo di nuovo in PDF (o ancora meglio stamparlo virtualmente in PDF) per avere un file a prova di bomba, nel quale non è più possibile selezionare il testo del documento. Il file rimane sicuro anche se lo si sottopone ad un processo di riconoscimento ottico dei caratteri (OCR) con uno dei tanti software disponibili (io uso con soddisfazione una vecchia versione di PDFpenPro ma ce n’è davvero per tutti i gusti), che ora non può andare a leggere dietro le pecette nere.

Metodo numero 2. Ghostscript è probabilmente lo strumento software più diffuso per la gestione dei file PostScript e PDF dal Terminale, può fare cose complicatissime ma richiede un grosso sforzo per padroneggiarlo a dovere. Ghostscript non è presente di default in macOS ma può essere installato facilmente [tramite Homebrew] (https://discussions.apple.com/thread/8584571) oppure installando MacTeX,2 la distribuzione più diffusa di LaTeX per macOS.

Una volta che abbiamo Ghostscript sul Mac, possiamo usarlo per trasformare in un solo colpo il documento PDF da mascherare in un documento sicuro tramite questo comando da eseguire nel Terminale di macOS

$ gs -dPDF -dBATCH -dNOPAUSE -dNOSUBSTDEVICECOLORS -sDEVICE=pdfwrite \
-sOutputFile=documento_sicuro.pdf documento_da_mascherare.pdf

I nomi dei due file PDF presenti nell’ultima riga del comando sono autoesplicativi e vanno sostituiti con i nomi veri dei nostri documenti. Ricordo come al solito che il carattere $ indica il prompt del Terminale di macOS e non fa parte del comando vero e proprio.

Ghoscript funziona bene ma è un po’ lento e tante opzioni sono davvero oscure. Molto meglio secondo me utilizzare il prossimo metodo.

Metodo numero 3. Anche ImageMagick è un peso massimo fra gli strumenti da Terminale, specializzato nella creazione, modifica o conversione dei file grafici di praticamente qualunque formato ci venga in mente. ImageMagick mette a disposizione una marea sterminata di comandi e di opzioni fra i quali è facile perdersi, però la natura più moderna del programma lo rende più facile da usare, almeno al livello base che ci serve qui. Anche ImageMagick va installato sul Mac tramite Homebrew, e comunque richiede la presenza di Ghostscript per funzionare (che è poi il motivo principale per cui ho deciso di presentare anche il metodo numero 2).

Per convertire il documento PDF da mascherare in un documento sicuro con ImageMagick basta eseguire da Terminale il comando

$ magick convert -density 300 documento_da_mascherare.pdf documento_sicuro.pdf

eventualmente anche senza il comando iniziale magick

$ convert -density 300 documento_da_mascherare.pdf documento_sicuro.pdf

L’opzione density indica la risoluzione (in punti per pollice, dpi) del documento finale, 300 dpi vanno benissimo per i documenti stampati ma possono essere tranquillamente ridotti a 150 o anche 96 dpi se il file sicuro viene utilizzato solo sul computer (e quindi, come piace tanto dire ai nostri burocrati, è dematerializzato).

Come dicevo prima, l’utilità di usare il Terminale viene fuori soprattutto quando abbiamo un gran numero di file da rendere sicuri. Per farlo possiamo usare questo script in bash che va copiato nella cartella contenente i file PDF da processare (oppure in una cartella presente nel PATH) dandogli un nome significativo (io uso secure_pdf ma potete usare quello che preferite), lanciandolo da Terminale dopo averlo reso eseguibile con chmod (i dettagli di come si fa li trovate qui).

#!/bin/bash

OUTDIR="./secured"

if [[ ! -d $OUTDIR ]]; then
    mkdir "$OUTDIR"
fi
 
for f in *.pdf; do
    fout="$OUTDIR/$f"
    echo "Converting '$f' to '$fout'"
    convert -density 300 "$f" "$fout"
done

Lo script converte tutti i PDF che trova nella cartella dove viene eseguito, salvandoli in una nuova cartella secured con lo stesso nome del documento PDF originale. Se volete che i file sicuri abbiano un nome diversi e magari finiscano nella stessa cartella dei file originali, basta aggiungere o modificare un paio di righe ed è fatto.

#!/bin/bash

OUTDIR="."
SUFFIX="-SECURE"

if [[ ! -d $OUTDIR ]]; then
    mkdir "$OUTDIR"
fi
 
for f in *.pdf; do
    fname=`basename "$f" ".pdf"`
    fout="$OUTDIR/$fname $SUFFIX.pdf"
    echo "Converting '$f' to '$fout'"
    convert -density 300 "$f" "$fout"
done

Altri metodi. Naturalmente quelli elencato non sono gli unici metodi validi per rendere sicuro un PDF. Chi usa Acrobat Pro può fare tutto da questo programma utilizzando gli strumenti integrati di redazione del testo. Personalmente trovo inutile pagare 20 euro al mese per un editor di PDF (il migliore, è vero, ma sono sempre 240 euro all’anno), ma per chi ha già una licenza Adobe può essere l’opzione migliore.

Un’altra alternativa molto meno costosa è quella di usare uno strumento come il mai troppo apprezzato PDF Toolkit+, con il quale è possibile tramite interfaccia grafica esportare un documento PDF in vari formati grafici e a svariate risoluzioni, dove ogni pagina del PDF finisce in un file diverso, e rimontare poi le singole pagine in un unico file PDF. Niente che non si possa fare con Anteprima, ma qui abbiamo una maggiore flessibilità, ad esempio perché possiamo decidere di cambiare l’ordine delle pagine o di escluderne alcune dal documento finale. In ogni caso PDF Toolkit+ vale molto di più dei due caffè che costa, io ad esempio lo trovo perfetto per ridurre le dimensioni dei file PDF scannerizzati.

Direi che questi 5 metodi possano bastare, ma se qualche lettore ne conosce altri sarebbe bello se li descrivesse nei commenti.

  1. Non sperate di trovare il mio IBAN, è solo la versione in PDF della prima pagina di questo post. 

  2. Qualcuno potrà chiedersi che senso abbia installare i quasi 5 GB di MacTeX solo per avere Ghostscript. Vista così può davvero sembrare una cosa insensata, ma il valore aggiunto di avere LaTeX sul Mac è, a mio avviso, inestimabile. 

Sabino Maggi
Pubblicato da Sabino Maggi Segui
Commenti

Aggiungi un commento