TAGS CLOUD
Incrementa dimensioniDecrementa dimensioni
Verifica l'integrità dei file con uno script tuo
Se non ti fidi di quello che scarichi da Internet o di quello che ti passano gli amici, controlla che tutto sia integro con MD5 e le somme di controllo
(pagina 1 di 4)
In questo articolo vedremo come sia possibile tenere sotto controllo un insieme di file, in modo da poter rilevare automaticamente le modifiche fatte; oltre che per applicazioni di sicurezza questo metodo può essere convenientemente utilizzato per programmare dei backup, salvando solamente quei file che abbiano subito delle modifiche dall'ultimo salvataggio. Innanzitutto è utile capire come sia possibile rendersi conto se un file è stato modificato. Il primo modo che viene in mente è quello di effettuare un confronto tra le due versioni del file con un programma come diff, ma questa soluzione presenta un inconveniente: è necessario possedere entrambe le versioni del file per poter effettuare il confronto; nel caso di un backup questo risulta scomodo, in quanto è necessario recuperare il backup stesso, che solitamente risiede su un supporto esterno (disco ottico o nastro) ed estrarre i file, cosa onerosa se i file in questione sono di dimensioni notevoli. Ma nel caso in cui non si possegga un backup del file è addirittura impossibile, con questo metodo, sapere se il file è stato modificato. Una soluzione più complessa potrebbe essere quella di salvare alcuni parametri del file, come ad esempio la dimensione, per poi utilizzarli come indice di cambiamento. Questo approccio risolve il problema accennato precedentemente: non è più necessario avere una copia del file salvata in modo da poterla confrontare con quella attuale, basta avere una registrazione della dimensione del file. Sfortunatamente, la dimensione di un file non dice nulla sul contenuto, e un file può essere modificato mantenendo la stessa dimensione che aveva precedentemente anche senza la volontà di ingannare qualcuno.

L'aggiunta di un file e il conseguente update del database


Algoritmi di controllo
La soluzione al nostro dilemma ci viene dai cosiddetti algoritmi di controllo o somme di controllo (checksum): questi sono metodi matematici che permettono di evidenziare se una certa sequenza di numeri è cambiata, e sono comunemente usati in vari protocolli di trasmissioni
 dati. Vediamo un esempio molto banale: possediamo una sequenza di 5 numeri decimali e vogliamo trovare un modo semplice per essere sicuri che i numeri siano gli stessi in vari momenti di tempo; il modo più semplice è di sommare tutti i numeri e salvare la somma risultante (da qui il nome “somma di controllo”):
sequenza: 14 86 34 29 76
somma di controllo: 239
A questo punto, sapendo che i numeri sono 5 e che la somma fa 239 possiamo identificare subito se la sequenza è stata cambiata. Ad esempio, modificando l'ultimo numero otteniamo
sequenza: 14 86 34 29 75
somma di controllo: 238
Ovviamente, si nota subito un possibile problema: modificando accuratamente i numeri si ottiene la stessa somma di controllo, benché il contenuto non sia lo stesso; ad esempio se incrementiamo di 1 l'ultimo numero e diminuiamo di 1 un altro, la somma di controllo non cambia. Nella terminologia tecnica questo fatto prende il nome di “collisione” dell'algoritmo di controllo: un algoritmo è tanto migliore quanto è più difficile ottenere collisioni; una collisione permette di “ingannare” l'algoritmo, mostrando un contenuto modificato come se fosse l'originale. Nel nostro esempio l'algoritmo di controllo è estremamente semplice, ed infatti è stato molto facile trovare una collisione; si faccia attenzione che le collisioni possono avvenire sia casualmente che essere provocate con intenzione, e che il metro di giudizio con cui si valuta un algoritmo deve essere proporzionato all'utilizzo che se ne fa. In effetti molti algoritmi utilizzati per le somme di controllo (compres
Pagina 1/4
Lascia un commento
Tag: integrità, dati, script, algoritmo Md5
Condividi