Come sapere se un file di testo è stato modificato o manomesso?

37

È possibile sapere se un file di testo, ad es. in formato XML, è stato modificato o manomesso nel tempo?

Il contesto della mia domanda segue:

Sono uno scienziato del settore che usa una tecnologia chiamata "spettrometria di massa (MS)". La MS è una tecnica analitica utilizzata, ad es. nell'analisi forense per determinare se un particolare composto è presente in un campione (ad esempio una droga di abuso nel sangue o nelle urine).

Specifiche di massa. i file di dati sono solitamente archiviati in formato file flat nella specifica binaria privata del rivenditore dello strumento - il loro software può elaborarli, ma nient'altro può farlo. Tuttavia, esistono standard aperti per i dati MS e la maggior parte dei fornitori supporta l'esportazione su almeno una specifica aperta. Questi standard aperti sono principalmente basati su XML in questi giorni (ad es. mzML ) e consentono l'elaborazione con applicazioni open source e consentono anche memorizzazione temporanea (> 10 anni) dei dati in un formato che non richiede il mantenimento di un computer archiviato e del sistema operativo (o VM) e del software di elaborazione per lunghi periodi.

Il formato binario del fornitore fornisce almeno una certa sicurezza contro la manomissione dei dati, tuttavia i formati XML no. Di qui il problema: i formati aperti sono molto utili per fornire l'accesso ai dati nei tempi di archiviazione, ma la sicurezza è un problema.

    
posta Drew Gibson 09.01.2016 - 14:15
fonte

8 risposte

81

La soluzione predefinita sarebbe utilizzare le firme crittografiche. Chiedi a ogni tecnico di generare una coppia di chiavi PGP, pubblicando la chiave pubblica e mantenendo la chiave privata protetta.

Quando un tecnico ha effettuato un'analisi, firma il file dei risultati con la sua chiave privata. Ora chiunque voglia verificare il file può controllare la firma usando la chiave pubblica del tecnico. Quando qualcuno cambia il file, la firma non sarà più corretta.

Considerazione sulla sicurezza : se una chiave privata di un tecnico viene a conoscenza di qualcun altro, quella persona può modificare i file e anche cambiare la firma in una che sarà valida. Questo problema può essere attenuato dal fatto che più persone firmano ciascun file dei risultati. Un utente malintenzionato richiederebbe tutti chiavi per sostituire tutte le firme con quelle valide.

Soluzione low-tech alternativa: stampa ogni file dei risultati, chiedi al tecnico di firmarlo come se fosse una vecchia scuola (con una penna) e deposita il file in un archivio fisicamente sicuro.

A proposito: non dare per scontato che il formato binario specifico del fornitore offra maggiore sicurezza contro la manomissione rispetto a XML. Solo perché non puoi leggerlo e modificarlo quando lo apri con un editor di testo non significa che nessun altro possa decodificare il formato e creare un editor per esso.

    
risposta data 09.01.2016 - 15:27
fonte
27

Qualsiasi forma di firma digitale farà. Ecco alcuni suggerimenti:

  • Per i dati XML, esiste uno standard di firma digitale ( XMLSign ). Sfortunatamente, questo standard è piuttosto scarso e ha una scappatoia di sicurezza importante (i documenti devono essere normalizzati attraverso una trasformazione XML prima che possano essere firmati. Questo è estremamente difficile da fare in modo sicuro poiché la trasformazione stessa diventa una parte importante della firma). / p>

  • Puoi anche utilizzare PGP o S / MIME per firmare digitalmente i documenti, questi produrranno nuovi documenti testuali e maggiormente leggibili ma ancora a prova di manomissione.

  • Infine, puoi utilizzare le firme separate. In sostanza, si tratta di un altro file che contiene la firma digitale collegata a un altro documento e può essere utilizzato per convalidare i dati originali (indipendentemente dal formato originale).

Vorrei aggiungere qualche informazione in più qui:

  • Scegliere le proprietà giuste per la firma (algoritmo, tipo e dimensione della chiave, ecc.) dipende molto dalla condizione impostata: per quanto tempo si intende proteggere i dati, contro quale tipo di avversario si intende proteggerli (qual è il valore di un falso? quale sarebbe il valore di un attacco che spezzerebbe tutti i documenti firmati con la stessa chiave?), c'è qualche requisito normativo? Ciò significa che dovresti consultare uno specialista in grado di tradurre questi requisiti aziendali e tradurli in tecnici.
  • Ti consiglio vivamente di aggiungere un timestamp protetto alla tua firma. Ciò non solo ti consentirà di dimostrare che un documento non è stato alterato ma ti consente anche di provare quando si è verificata la firma.
risposta data 09.01.2016 - 15:25
fonte
6

Illustrerò le tre opzioni principali e i pro / contro di ciascuno.

Archivia i backup dei file in un luogo sicuro

Abbastanza auto-esplicativo. La "posizione sicura" può essere un supporto di sola lettura (come i CD) o un'unità di rete che tutti possono leggere ma solo il supervisore può scrivere o un servizio di archiviazione online (ad es. Dropbox) che rende ragionevolmente difficile falsificare il file date di modifica.

Pro

  • Dovresti comunque avere un sistema di backup

Contro

  • Se i file sono di grandi dimensioni, scaricarli per la verifica può richiedere molto tempo
  • Se il falsificatore si rompe nella posizione sicura, può coprire le sue tracce

Archivia gli hash in un luogo sicuro

Un hash è un'impronta digitale di un file che assomiglia a 8f2e3f53aa90b27bda31dea3c6fc72f6 ; se due file sono leggermente diversi avranno un hash diverso. Prendi un hash del file originale e memorizzalo in modo sicuro, quindi verifica che un file non sia stato modificato, prendi un hash e confrontalo con l'hash memorizzato.

Pro

  • Devi archiviare / controllare in modo sicuro un ~ codice a 32 cifre invece di un intero file

Contro

  • Devi ancora accedere a una risorsa esterna per controllare il file
  • Se il falsificatore si rompe nella posizione sicura, può coprire le sue tracce

Firme crittografiche

In questo caso, una o più persone possono "firmare" il file e se vengono apportate modifiche queste firme verranno invalidate. Naturalmente, se tutti coloro che hanno bisogno di firmare il file sono disposti a (o ingannato) a firmare un file manomesso, allora puoi farla franca con il file manomesso.

Pro

  • Le informazioni sulla sicurezza possono essere conservate all'interno del file stesso o in altro modo sulla stessa unità, il che significa una verifica più semplice.

Contro

  • Chiunque firmi i file deve essere molto attento a impedire a qualcuno di rubare la propria chiave privata.
  • Chiunque firma i file deve fare molta attenzione a sapere cosa sta firmando.
risposta data 10.01.2016 - 21:02
fonte
2

prendi il tuo file xml e la tua foto delle vacanze preferite. Concatena i file e calcola diversi valori hash del file risultante.

L'immagine delle vacanze garantisce che è estremamente difficile produrre una collisione, anche se il file di foto delle festività è pubblico. Inoltre, se si utilizzano diversi algoritmi di hash, è improbabile che tutti questi vengano interrotti in un intervallo di 10 anni.

    
risposta data 10.01.2016 - 22:08
fonte
2

Affrontare la sicurezza del formato di file del fornitore, espandendo ciò che dice @Philipp nei commenti.

Ho avuto un colpo su un formato di file del venditore (non le specifiche di massa ma abbastanza vicino per questi scopi). È stato reso molto più semplice avendo installato il software, ma non sono esperto in queste cose. Potrei facilmente cambiare i metadati (estrarre i metadati era il mio obiettivo in primo luogo) i dati reali sarebbero stati più difficili ma assolutamente non modificabili. Poiché i metadati includono cose come l'ID campione e la data del test, questa è una vulnerabilità abbastanza grande per cose come "il cui campione era pulito e quando? " come sembra rilevante per te, o "chi ha scoperto per primo questo farmaco? " in altri campi.

Alcuni software forniscono alcune caratteristiche anti-manomissione (es. uso interno di hash non necessariamente di tipo crittografico; permessi utente durante la modifica di software ). Reverse engineering sarebbe poco più che banale per qualcuno con un discreto livello di abilità nella maggior parte dei casi. Con il software installato, persino aggirare le funzionalità integrate potrebbe essere semplice come scrivere un front-end per chiamare le DLL del fornitore, in quanto queste funzionalità anti-manomissione sono in genere componenti aggiuntivi facoltativi (in molti campi non sono richiesti o deprecati ).

(Potrebbe trattarsi di una sequenza di commenti, ma poiché il mio obiettivo era rendere più chiaro il problema del file del fornitore, mi sembrava meglio scriverlo correttamente).

    
risposta data 11.01.2016 - 10:19
fonte
1

Che ne pensi di fare in modo che i tecnici pubblichino coppie di ID di file univoci e i loro hash su Twitter utilizzando i propri account?

Questo dimostrerà che:

  • Il file di dati con detto id e hash esisteva al momento della pubblicazione
  • La persona che ha accesso all'account considera il contenuto del file a quel punto
  • Il file non viene modificato dopo il fatto poiché Twitter non consente la modifica dei tweet

Questo metodo fornisce una sicurezza almeno comparabile a molte delle risposte e dei benefici basati sulla firma digitale come:

  • Molto più semplice da imparare e utilizzare (nessuna generazione complicata di chiavi private, procedure di apertura o di backup)
  • Elevata ridondanza (tramite backup di twitter e siti di scraping di terze parti di Twitter)
  • Timestamp incorporato (che probabilmente si troverà in una procedura legale senza molte spiegazioni)

Consiglio di utilizzare almeno SHA256 come alga hash.

    
risposta data 11.01.2016 - 11:30
fonte
1

Uno dei modi più semplici è creare un hash del file e memorizzarlo altrove, in modo da sapere se viene modificato. I programmi di rilevamento delle intrusioni utilizzano sempre questa tecnica per verificare l'integrità (o almeno indicare se alcuni utenti malintenzionati hanno manipolato file di sistema).

Guarda un programma come AIDE , potresti eseguirlo contro la directory contenente i file (ed eventualmente eseguirlo su richiesta quando viene aggiunto un file) per aggiornare il suo database di hash. Di notte, eseguilo per controllare e inviarti tramite email un rapporto che mostra tutte le modifiche ai file.

Se hai bisogno di conoscere l'originale, un file system con versione potrebbe essere una buona idea. Ogni modifica apportata a un file viene registrata e le vecchie versioni possono essere estratte. In alternativa, è possibile utilizzare un sistema di backup che rileva i nuovi file e li supporta in una posizione sicura (e conserva tutte le vecchie versioni - o un utente malintenzionato potrebbe modificare il file ripetutamente fino a quando l'originale non viene eliminato).

    
risposta data 11.01.2016 - 16:14
fonte
-2

the open formats are very useful for providing access to data over archival timescales, but security is a problem

Grande domanda: come si accede agli archivi?

Il problema con l'hashing di un file di testo semplice è che l'hash è preciso per i caratteri. Cambia un personaggio e l'hash sarà completamente diverso. Funziona molto bene per i file binari come i programmi eseguibili (dove un byte fuori luogo è di solito disastroso) ma fallisce su cose come i file di markup - normalizzando (o comprimendo) lo spazio bianco cambierà l'hash ma non avrà alcun effetto sui dati.

Se stai consegnando i file tramite e-mail o condivisione di rete in lettura-scrittura, dovrai disporre di una memoria sicura per l'hash, oppure chiunque abbia mezzo cervello possa modificare il file e aggiornare l'hash. Se hai una memoria sicura per l'hash, perché non memorizzare il file di dati nello stesso posto e dimenticare l'hash?

All'inizio sembrerà strano, ma osservate il caricamento del file e della descrizione in un'installazione locale di qualcosa come wordpress o mediawiki. L'accesso può essere aperto o sicuro come desideri e le piattaforme hanno controlli di caricamento file specifici dell'utente. Una volta che il dipartimento IT l'ha configurato correttamente, l'accesso in scrittura ai file può essere bloccato quanto necessario.

    
risposta data 10.01.2016 - 08:28
fonte

Leggi altre domande sui tag