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

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. 
Tagged with: , , , , , , , , ,
Pubblicato su software

JuliaCon 2021

Julia è l’ultimo arrivato fra i linguaggi di programmazione scientifici, che ambisce a combinare la velocità del Fortran con la semplicità sintattica e l’interattività di Python.

Un’altra particolarità molto interessante di Julia è il supporto nativo agli ambienti: ciascun progetto scritto in Julia può avere un suo ambiente specifico, contenente il compilatore,1 le librerie e gli eventuali package aggiuntivi necessari, nelle versioni che garantiscono il perfetto funzionamento del progetto. La gestione degli ambienti è ancora oggi una delle principali debolezze di Python, averli integrati direttamente nel linguaggio di programmazione dovrebbe rendere più semplice la scrittura di codice riproducibile, il Santo Graal del software scientifico odierno.

Perché parlo di Julia? Perché la settimana prossima inizia il JuliaCon 2021, un’ottima occasione per iniziare a conoscere questo interessante linguaggio di programmazione. La registrazione è gratuita per cui non ci sono rischi, nemmeno per il portafoglio.

In attesa dell’inizio della Conferenza, si stanno tenendo dei workshop preliminari molto interessanti che possono già essere visti su YouTube (o potranno essere visti in diretta nei prossimi giorni), senza nemmeno la necessità di installare l’ennesimo sistema di videoconferenza. Per quanto mi riguarda, finito il post mi guarderò Statistics with Julia from the ground up, mentre lunedì mi aspetta Introduction to Bayesian Data Analysis.

Per chi preferisce leggere, consiglio questo articolo generale del sempre bravissimo Jeffrey Perkel, Julia: come for the syntax, stay for the speed, e questo post su Towards Data Science, Bye-bye Python. Hello Julia!.

Buona visione (o buona lettura)!


  1. Julia è un linguaggio compilato ma funziona anche in modo interattivo. 
Tagged with: , , ,
Pubblicato su programmazione

Tutto in una scatola

Traslocare è una esperienza stressante e piuttosto deprimente, ne so qualcosa perché ne ho appena fatto uno. Ci sono voluti più di quindici giorni per mettere tutta la mia vita e quella della mia famiglia in una scatola (magari! in realtà le scatole erano tantissime) e altrettanti per ricostruire tutto nella nuova casa. Ma per fortuna ora è finita e anche il blog, dopo due mesi di stasi forzata, può tornare finalmente in attività.


Devo ammettere che in questo periodo ho avuto pochissimo tempo per seguire il mondo della tecnologia. Il WWDC mi è praticamente passato sopra la testa, mi aspettavo l’annuncio di qualche aggiornamento hardware ma bisognerà ancora avere pazienza.

Monterey però voglio provarlo (tramite Parallels), sono molto curioso di vedere come funziona l’ultimissima versione di macOS. Per farlo devo però aspettare che installino la fibra nella nuova casa (spero domani), scaricare una decina di GB con il router 4G che uso in questo momento darebbe un colpo mortale ai 50 GB mensili che mi sono consentiti.

L’annuncio più significativo arriva però dall’altra parte del mondo (informatico), con la presentazione dell’ultimissima versione di Windows, la 11. Qualche anno fa Windows 10 era stato definito come l’ultima versione di Windows, che da allora in poi sarebbe stato in costante aggiornamento senza più necessità di cambiare periodicamente “nome”. Queste decisioni possono piacere ai tecnici ma fanno storcere il naso a quelli del marketing, che hanno bisogno di annunci continui da prima pagina, anche se sono solo fumo negli occhi degli utenti.

E così eccoci a Windows 11, con le sue richieste stringenti a livello hardware che ci fanno tornare ai tempi di Windows XP Service Pack 2, che rendeva improvvisamente delle lumache i computer su cui veniva improvvidamente installato, oppure di Windows Vista, ovvero il flop più flop della storia, che per fortuna (di Microsoft) aveva richieste hardware così estreme da essere stato usato solo da pochissimi fortunati.

Ma come se non bastasse, Windows 11 girerà solo sui PC che dispongono di un modulo TPM (Trusted Platform Module). Questo modulo è presente su tutte le CPU più recenti di intel e AMD (e prima ancora veniva installato come modulo aggiuntivo sulla scheda madre), ma la sua presenza non garantisce la compatibilità con Windows 11, perché non è detto che il suo firmware soddisfi le richieste di Microsoft o che l’UEFI (l’UEFI è la versione moderna del BIOS) della scheda madre lo supporti. Cosa significherà tutto ciò per chi usa Linux è una questione ancora aperta, che merita un ulteriore approfondimento non appena se ne saprà di più.

Tagged with: , , , , , , , , , ,
Pubblicato su software

Corsi e ricorsi

Pensieri oziosi della domenica.

Nel 1984 il Macintosh stupì il mondo con la sua interfaccia grafica, che permetteva di interagire con il computer tramite il mouse, i menu e le icone sullo schermo, invece di dover inserire laboriosamente i comandi arcani del DOS tramite la tastiera.

Oggi però la vera potenza del computer è tornata ad esprimersi tramite il Terminale, con cui si possono fare tantissime cose ed in modo così efficiente che, al confronto, l’interfaccia grafica sembra un reperto del passato.

E dato che il Terminale è presente nativamente solo in Linux e macOS, anche Microsoft, per non perdere completamente il mondo degli sviluppatori e degli utenti più avanzati, dopo aver scopiazzato a piene mani l’interfaccia grafica del Macintosh nel suo Windows, ha ripetuto l’opera inserendo in Windows 10 uno strumento che emula un ambiente Linux completo.



— Fonte: National Climatic Data Center.

Dalla fine degli anni ’70 e per tutti gli anni ’80 il mondo del computing era diviso in rigorosamente in due: da un lato i computer seri, grossi mainframe nascosti in stanze condizionate e gestiti da sacerdoti in camice bianco, a cui solo pochi fortunati potevano accedere collegandosi in remoto tramite un videoterminale stupido; dall’altro i personal computer, oggetti costosi e fortemente limitati ma che permettevano a tutti di usare un computer in casa o in ufficio. In pochi anni i personal computer sono cresciuti e hanno soppiantato i mainframe, rimasti solo in qualche azienda o centro di ricerca avanzato.

Oggi che i personal computer sono ultrapotenti e alla portata di tutti, stanno diventando centrali i servizi cloud come Amazon Web Services (AWS) o Google Cloud e Microsoft Azure, che permettono di usare dei sistemi di calcolo potenti e adattabili alle necessità del momento senza doversi sobbarcare dell’acquisto e della gestione di computer fisici.

Magari fra qualche anno il modo normale di usare un computer sarà quello di collegarsi in remoto ad un sistema cloud tramite un semplice portatile o tablet. E il cerchio si chiuderà un’altra volta.

Tagged with: , , , , , , , ,
Pubblicato su software

All’inferno con Dell? Addendum


Foto di Michael Dziedzic su Unsplash.

Una piccolissima aggiunta al post di ieri.

Ad un certo punto del suo lunghissimo thread su Twitter, Eyepatch Wolf si lamenta che Dell pretende 400 euro per un disco NVMe da 1 TB (possibile) e altri 430 per due supporti di plastica (sarà vero o è solo un’altra boiata?). Su questo punto non posso che dargli ragione.

Perché la pratica di utilizzare componenti proprietari venduti a prezzi degni di un diamante di De Beers, componenti che dopo pochi anni spariscono dai magazzini obbligandoti a comprare un nuovo computer, è un vero e proprio schiaffo in faccia ai consumatori. Purtroppo però la pratica è seguita ormai da tutti, ma proprio tutti, i produttori di PC assemblati, da Apple a Dell, da HP a Lenovo, da Microsoft fino a Samsung (in ordine rigorosamente alfabetico). Per cui se c’è una responsabilità su questo (e c’è), non è certo colpa solo di Dell ma di tutti i produttori indistintamente. Se avesse comprato un computer HP o Lenovo o Asus non sarebbe stato diverso.

Nel settore dei notebook c’è davvero poco da fare, perché è lo stesso consumatore che vuole notebook sempre più sottili, sempre più performanti e con batterie che durano all’infinito, e l’unico modo realistico per darglieli è quello di customizzare all’estremo il prodotto, impedendo così che possa essere modificato dopo l’acquisto.

Sui desktop invece c’è ancora speranza, basta evitare come la peste di acquistare prodotti già assemblati (Apple esclusa, Apple è un mondo a sé nel mercato dei PC), comprando invece i componenti sciolti e costruendosi da sé il proprio computer. E chi non lo sa fare non segua il cattivo esempio di Eyepatch Wolf, ma si rivolga piuttosto al solito amico smanettone o magari ad uno dei pochi negozi fisici di qualità ancora attivi. Un aiuto competente può essere davvero prezioso, traducendosi non in una spesa in più ma in un vero e proprio risparmio. Speriamo solo che la possibilità di configurare a piacere un computer desktop sia una opzione praticabile ancora a lungo.

Tagged with: , , , , , , ,
Pubblicato su hardware
Informativa
Questo sito utilizza cookie di terze parti per inviarti pubblicità e servizi in linea con le tue preferenze. Se vuoi saperne di più o negare il consenso a tutti o ad alcuni cookie, clicca qui. Scorrendo questa pagina, cliccando su un link o su qualunque altro elemento o proseguendo la navigazione in altra maniera, acconsenti all'uso dei cookie.
Follow MelaBit on WordPress.com
Categorie
Archivi
%d blogger hanno fatto clic su Mi Piace per questo: