Pensavamo che la frode documentale fosse un problema visivo. Font sbagliati. Colonne disallineate. Un logo che sembrava leggermente fuori posto. Abbiamo costruito controlli basati su ciò che gli umani vedono, perché ciò che gli umani vedono era tutto ciò che avevamo.
Poi un estratto conto bancario è arrivato nella nostra pipeline. Layout pulito. Saldi corretti. Ogni controllo visivo superato. L'estrazione ha funzionato perfettamente. Ma qualcosa nel file sembrava pesante. Troppi oggetti per un estratto conto di sei pagine, come una valigia che pesa più di quanto il suo contenuto dovrebbe permettere. Lo abbiamo aperto in un hex editor e abbiamo trovato tre sezioni di cross-reference, due font che apparivano solo a pagina 4 e un operatore /TouchUp_TextEdit MP: la briciola di pane di Adobe Acrobat, lasciata ogni volta che qualcuno usa "Modifica testo e immagini".
L'estratto conto era un falso. I numeri erano finzione. E i nostri occhi non hanno mai avuto una possibilità.
La frode non era in ciò che potevamo vedere. Era nel modo in cui il file era stato costruito.

La falsificazione artigianale è morta
La frode documentale richiedeva abilità. Un falsario aveva bisogno di strumenti di design, conoscenza dei font, pazienza e una ragionevole comprensione di come dovrebbe apparire un estratto conto bancario.
Questo succedeva prima delle "template farms".
Oggi ci sono oltre 160 siti web che vendono modelli di documenti predefiniti: estratti conto, buste paga, dichiarazioni dei redditi, bollette. Prezzo medio: $28. Alcuni offrono piani di abbonamento. L'acquirente inserisce i propri numeri, esporta un PDF e lo invia per un prestito, un leasing o l'apertura di un conto. I report del settore che analizzano centinaia di milioni di documenti dipingono un quadro coerente: circa 1 su 3 mostra problemi di integrità strutturale, e la frode seriale (lo stesso modello riutilizzato in più domande) è aumentata di diverse volte anno su anno. Un singolo cluster conteneva oltre 23.000 documenti coordinati da un'unica campagna.
Questo non è più artigianato. È una supply chain.
La bugia pixel-perfect
Un analista esperto può individuare falsi evidenti. Ma il divario tra "sembra sbagliato" e "sembra giusto" è crollato. I moderni strumenti di editing producono risultati visivamente indistinguibili dall'originale.
Ecco cosa abbiamo dovuto imparare a nostre spese: la qualità visiva non implica integrità strutturale.
Un PDF non è un'immagine. È un programma. Se hai letto il nostro pezzo sugli interni dei PDF, sai che ogni pagina è una sequenza di istruzioni di disegno: glifi posizionati a coordinate, avvolti in oggetti, collegati da tabelle di cross-reference, annotati con metadati, compressi in stream. Tutta questa struttura esiste sotto la superficie visiva.
Quando qualcuno modifica un PDF, cambia ciò che vedi. Ma cambia anche la struttura. Nuovi font vengono incorporati. Il conteggio degli oggetti cambia. I content stream vengono riscritti. I timestamp dei metadati si aggiornano (o vengono rimossi). Lo stile di codifica interno del file (come è organizzato il suo trailer, quali chiavi appaiono nella sua tabella di cross-reference, se usa terminatori di riga LF o CRLF) potrebbe non corrispondere più a quanto dichiarato dai metadati.
Un PDF può mentire su ciò che mostra. Non può mentire facilmente su come è stato costruito.
Ascoltare il file
Abbiamo dovuto smettere di guardare la pagina e iniziare a guardare dentro il file. Ecco la scia di briciole che abbiamo imparato a seguire, strato dopo strato.
Le cose facili da falsificare
Ogni PDF porta con sé date di creazione e modifica, un'applicazione produttrice e spesso un campo autore. Il produttore corrisponde a quello che ti aspetteresti da questa banca? C'è un divario sospetto tra creazione e modifica? I campi dei metadati sono stati rimossi completamente?
Ma i metadati sono il segnale più debole. Qualsiasi editor competente può falsificarli. Alcune banche legittime inviano PDF con metadati minimi. E il semplice download di un PDF aggiorna la data di modifica in alcuni visualizzatori. Le anomalie dei metadati sono un punto di partenza, non una conclusione.
L'impronta digitale che i falsari non possono cancellare
Qui è dove la cosa si fa interessante.
Nel 2021, i ricercatori Adhatarao e Lauradoux hanno pubblicato un paper1 mostrando che lo stile di codifica di un PDF (la combinazione specifica di chiavi nel suo trailer, il formato della sua tabella di cross-reference, i magic bytes dell'header e i terminatori di riga) agisce come un'impronta digitale per il software che lo ha creato.
LibreOffice include sempre una chiave /DocChecksum. Microsoft Word usa sia /Prev che /XRefStm nel suo trailer. PDFLaTeX scrive una chiave /info minuscola dove tutti gli altri la scrivono maiuscola. Il motore Skia di Chrome omette /ID dal trailer e usa terminatori di riga LF.
Questi pattern sopravvivono alla rimozione dei metadati. Puoi cancellare la stringa "Producer: LibreOffice" dai metadati, ma non puoi rimuovere facilmente il /DocChecksum dal trailer senza ricodificare l'intero file. L'impronta strutturale rivela il vero produttore anche quando i metadati mentono.
Quando rileviamo una mancata corrispondenza, ad esempio i metadati dichiarano "BankingCorePlatform 4.2" ma l'impronta strutturale dice LibreOffice, quello è un segnale. Non una prova. Ma un segnale che vale la pena corroborare.
L'operatore spione di Adobe
Gli editor PDF lasciano briciole negli stessi content stream.
Adobe Acrobat inserisce un operatore /TouchUp_TextEdit MP ogni volta che qualcuno usa lo strumento di modifica del testo. È un operatore "marked-point", parte delle specifiche PDF per taggare il contenuto, riutilizzato da Adobe per tracciare le proprie modifiche. Ogni regione modificata ne riceve uno. Modifica cinque importi su una pagina, ottieni cinque marcatori. (Adobe non ha costruito questo per catturare i truffatori. Lo hanno costruito per la propria gestione dei contenuti. A noi capita solo di trovarlo utile.)

Iceni Infix, un editor PDF professionale, usa un meccanismo diverso: operatori /IceniObject <<...>> DP che avvolgono blocchi di testo modificati. Il dizionario contiene metadati sulla modifica.
Questi non sono nascosti in posizioni oscure. Sono all'interno del content stream, proprio accanto alle istruzioni di disegno. La maggior parte dei visualizzatori PDF li ignora. Noi li leggiamo direttamente come leggiamo i comandi dei font.
Quando i font fanno la spia
I font sono sorprendentemente loquaci. Un PDF generato da una singola applicazione, in un unico passaggio, avrà caratteristiche dei font coerenti: stessa strategia di embedding, stessa convenzione di denominazione dei subset, timestamp di creazione compatibili nelle tabelle interne del font.
Un PDF che è stato modificato racconta una storia diversa.
Un font che appare solo su una pagina, mentre ogni altra pagina usa un set diverso, suggerisce che quella pagina è stata modificata o assemblata separatamente. Un subset di font contenente 3 glifi ma che pesa 15KB. O un "subset" con 500+ glifi, essenzialmente il font completo, in un documento dove tutto il resto è correttamente ridotto a subset. Qualcosa puzza di bruciato.
Poi ci sono i timestamp. La tabella head all'interno di un font TrueType contiene una data di creazione. Quando quella data è distante anni dalla data di creazione del PDF, il font è stato probabilmente incorporato da una fonte diversa. E la tabella OS/2 include un ID fornitore. Un documento con font da tre fornitori diversi è insolito se il produttore dichiarato è un'applicazione bancaria che fornisce il proprio set di font.
La parte migliore? Gli editor di font lasciano il loro nome nella tabella dei nomi del font. Trovare marcatori "FontForge" o "AFDKO" all'interno di un font che dovrebbe provenire dal sistema centrale di una banca è... educativo.
La cronologia delle modifiche che i PDF non possono cancellare
I PDF supportano salvataggi incrementali. Invece di riscrivere l'intero file, un editor aggiunge nuovi oggetti e una nuova tabella di cross-reference alla fine. Il contenuto originale rimane intatto all'inizio del file.

Questo significa che un PDF può contenere la propria cronologia delle modifiche. Gli oggetti della pagina originale, gli oggetti della pagina modificata e la scia che li collega. Possiamo contare le revisioni (più di una è insolita per un estratto conto generato da una banca), identificare quali oggetti sono cambiati, rilevare contenuti modificati dopo l'applicazione di una firma digitale e individuare file che sono stati ri-salvati da uno strumento diverso senza modificare il contenuto (una tecnica di offuscamento comune).
Tre o più sezioni di cross-reference in un estratto conto bancario sono un segnale critico. Le banche generano estratti conto in un unico passaggio. Non tornano indietro a modificarli.
Un'anomalia è una coincidenza
Ecco la parte che la maggior parte degli articoli sul rilevamento delle frodi salta: i singoli segnali sono inaffidabili.
Un buco nei metadati? Il server della banca potrebbe avere un offset dell'orologio. Isolamento dei font per pagina? Potrebbe essere un legittimo cambio di layout tra le sezioni. Un alto conteggio di oggetti? Alcuni generatori di PDF sono prolissi. Ogni segnale che abbiamo descritto ha una spiegazione innocente.
La chiave non è un singolo segnale. È la convergenza.
Organizziamo le prove forensi in sei domini: contenuto, tipografia, metadati, struttura, media e sicurezza. Ogni dominio cattura una dimensione diversa dell'integrità del documento. Un riscontro in un dominio è una nota. Riscontri in due domini sono una preoccupazione. Riscontri in tre o più domini sono un pattern difficile da giustificare.
Un documento con metadati rimossi e nient'altro? Molti documenti legittimi hanno metadati minimi. Punteggio basso.
Quello stesso documento con metadati rimossi, più font che non corrispondono al produttore dichiarato, più un content stream contenente marcatori dell'editor, più due salvataggi incrementali? Ora hai prove da quattro domini. Ogni riscontro individualmente ha una spiegazione innocente. Insieme, la probabilità che tutti e quattro siano casuali crolla rapidamente.
Una bugia è un'anomalia. Quattro bugie sono un pattern.
Il punteggio riflette questo. Un riscontro in un singolo dominio non ottiene amplificazione. Due domini corroboranti: 1.25x. Tre o più: 1.5x. Un falso sofisticato che lascia tracce attraverso più livelli forensi viene segnalato molto più aggressivamente di un documento che ha semplicemente metadati insoliti.
Ribaltare la domanda
I segnali forensi rilevano anomalie. Ma il rilevamento delle anomalie ha un problema di simmetria: un documento proveniente da una fonte insolita ma legittima appare altrettanto "anomalo" di uno manomesso.
I template ribaltano la domanda. Invece di chiedere "cosa c'è che non va in questo documento?", chiedi "questo documento corrisponde a un esempio noto e valido?"
Per tipi di documenti ad alto volume (estratti conto di grandi istituzioni, bollette di grandi fornitori) costruiamo baseline di template da campioni verificati. Un template cattura le impronte digitali strutturali (font previsti, pattern di metadati, caratteristiche di layout) e l'identità visiva. Insegniamo al sistema come appare un vero estratto conto di Société Générale: non solo il logo, ma il layout, la regione dell'intestazione, i pattern strutturali. Quindi, quando arriva un nuovo documento, possiamo dire "questo è coerente con ciò che abbiamo visto prima" o "questo non corrisponde a nulla di cui ci fidiamo".
Una forte corrispondenza con il template è un segnale di fiducia: prova positiva che la struttura visiva del documento corrisponde a esempi verificati. Quando i segnali forensi si attivano nonostante una corrispondenza con il template, è particolarmente interessante: suggerisce che qualcuno ha costruito un documento per sembrare un template noto, ma gli interni strutturali raccontano una storia diversa.
Cosa non possiamo (ancora) catturare
Non fingeremo che questo catturi tutto. Non lo fa.
Le sottomissioni di sole immagini sconfiggono l'analisi strutturale. Se qualcuno fotografa uno schermo che mostra un estratto conto falso, il risultato è un JPEG in un involucro PDF. Non c'è content stream da analizzare, nessun font da ispezionare, nessuna cronologia delle revisioni. L'analisi ricade sulla forensica delle immagini (analisi spettrale, pattern di rumore, artefatti dei blocchi DCT), che è un gioco diverso e più debole.
Il cambio di formato (format-hopping) è un'evasione deliberata. Circa 1 sottomissione ad alto rischio su 4 utilizza un formato file diverso dal documento di origine. Qualcuno genera un PDF, fa uno screenshot, invia lo screenshot come JPEG, poi lo riconfeziona in un PDF. Ogni conversione rimuove prove forensi. È l'equivalente documentale del riciclaggio di un numero di serie.
La riproduzione perfetta del template è possibile. Se un truffatore ottiene l'esatto software e la configurazione utilizzati da una banca, può produrre PDF con impronte strutturali corrispondenti. Nessuna mancata corrispondenza da rilevare. Il documento sembra legittimo perché è stato prodotto da strumenti legittimi. A quel punto, la frode è nel contenuto, non nel contenitore.
Ecco perché il rilevamento delle frodi è un problema a strati. La forensica strutturale cattura la classe di frodi in cui il contenitore contraddice le sue affermazioni visive. La convalida del contenuto (i numeri tornano? l'equazione del saldo regge?) ne cattura un'altra. L'analisi di rete (abbiamo visto questo esatto template attraverso diversi richiedenti?) ne cattura una terza.
Nessun singolo strato è sufficiente. La domanda è sempre: quanti strati dovrebbe sconfiggere simultaneamente un truffatore?
Le lezioni sopravvissute alla produzione
Quando abbiamo iniziato a costruire questo in Holofin, pensavamo di poter semplicemente contare le anomalie. Segnalare qualsiasi cosa con più di cinque segnali. Spedire.
Abbiamo capito rapidamente che un conteggio grezzo dei segnali è inutile. Venti segnali a bassa gravità in un dominio (diciamo, un generatore PDF prolisso che innesca una dozzina di controlli strutturali) non sono significativi quanto tre segnali a media gravità attraverso tre domini diversi. Il conteggio dei segnali era rumore. La convergenza dei segnali era l'intuizione.
Quindi abbiamo ricostruito attorno a pochi principi:
I segnali sono economici, i risultati sono costosi. Eseguire dozzine di controlli è veloce. Interpretarli correttamente è la parte difficile. I conteggi grezzi sono fuorvianti. Ciò che conta è se i segnali si corroborano tra i domini.
La fiducia richiede prove, non solo assenza di rischio. Una scansione pulita non guadagna lo stato "fidato". Ciò richiede prove positive del template, una corrispondenza verificata rispetto a una baseline nota e valida. L'assenza di segnali di frode potrebbe significare che il documento è pulito. Potrebbe anche significare che è un formato che non abbiamo ancora imparato ad analizzare. Preferiamo dire "non lo sappiamo" piuttosto che "sembra a posto".
Nessun lancio della moneta. Ogni segnale è calcolato dalla struttura binaria del file. Stesso input, stesso output, ogni volta. Nessuna confidenza del modello, nessuna impostazione della temperatura, nessuna variazione tra le esecuzioni. Quando un segnale forense si attiva, punta a uno specifico fatto strutturale (un oggetto, una voce della tabella dei font, un operatore del content stream) che puoi aprire in un hex editor e verificare tu stesso. I punteggi di rischio "black-box" sono inutili nella compliance.
Spiegare tutto. Un analista che vede "alto rischio" dovrebbe essere in grado di tracciare la valutazione fino a specifici risultati, specifici segnali, specifici byte nel file. Se non possiamo spiegare il punteggio, il punteggio non vale nulla.
La scomoda verità sulla frode documentale è che è asimmetrica. Falsificare un PDF visivamente convincente richiede $28 e venti minuti. Rilevare quella falsificazione richiede l'esame del file a un livello che la maggior parte degli umani non vede mai: binari dei font, operatori del content stream, strutture delle tabelle di cross-reference, catene di revisione.
Ma l'asimmetria taglia in entrambe le direzioni. Un falsario può far sembrare un PDF qualsiasi cosa. Farlo costruire come l'originale è un problema molto più difficile. L'impronta strutturale di un vero estratto conto bancario (i suoi font, lo stile di codifica del produttore, la sua generazione in un unico passaggio, i suoi metadati coerenti) è il risultato accumulato di uno specifico stack software che elabora dati reali.
Replicare questo è possibile. Replicarlo su scala, attraverso dozzine di tipi di documenti, ottenendo anche il contenuto giusto, i saldi corretti e le date plausibili?
Questo non è più un problema da $28.
Articoli correlati

Quando i documenti si ribellano
Pagina 1: Riepilogo conto, due colonne. Pagina 15: Stesso conto, tre colonne, nomi delle intestazioni diversi. Pagina 47: Una scansione con una macchia di caffè. Pagina 89: La pagina dei totali, che fa riferimento a transazioni estratte 70 pagine fa.

La traccia di audit invisibile
Un revisore apre il tuo file di esportazione, trova un saldo di chiusura di 47.500 € e recupera il PDF di origine. Pagina 3, angolo in basso a destra: 47.000 €. Numero diverso. "Da dove arriva la differenza? Chi l'ha modificata?"

HoloRecall: Mostrare, non raccontare
C'è un momento in ogni progetto di classificazione in cui osservi il modello sbagliare con sicurezza. Non un caso difficile. Non un caso limite ambiguo. Qualcosa che un umano risolverebbe in mezzo secondo senza pensare.