1.1.3 - Controlli a complessità crescente

Un documento o un dato in chiaro senza alcuna “ridondanza” non offre, di per sé, alcuna sicurezza: può essere alterato in uno o più punti, senza che nessuno se ne accorga.

Per aggiungere robustezza ai dati, si possono usare vari metodi, a complessità crescente:

  • Parità: è la ridondanza più semplice che si può aggiungere a un dato, ad esempio a un semplice byte, per verificare se si è alterato un bit che lo compone: è usata nei banchi di RAM dei PC. Con una doppia parità (con l'aggiunta di 2 bit ogni byte) si rileva un doppio errore, e l’errore singolo può anche essere corretto (come nelle RAM ECC-Error Correction Code)
  • Checksum: è una ridondanza costituita di solito da un byte, che assomma le 8 parità “per colonna” di tutti i bytes di un file, o di altro blocco di dati; anche questa permette di rilevare l’inversione di un singolo bit nel file, o meglio, per ogni singola “colonna”
  • CRC-Cyclic Redundancy Check: è una checksum più complicata, ottenuta con un particolare tipo di somma e di rotazione degli addendi, tale per cui la probabilità che il CRC  torni a fronte di errori multipli è molto bassa (mentre nella parità due errori si possono compensare facilmente). Esistono vari algoritmi, in base al “polinomio generatore” usato per fare le somme e le rotazioni. Un CRC di solito è lungo 16 (i.e. CRC-16-CCITT) o 32 bit
  • Hash: è un… “super CRC”, in grado di produrre, da qualunque documento, unendovi spesso una “chiave di hash”, un blocco di controllo, o estratto, o “digest” da 128 bit (con MD5-Message Digest 5) o da 160 bit (con SHA1-Secure Hash Algorithm 1). La probabilità che due documenti diversi diano lo stesso hash è praticamente nulla. Gli hash sono molto usati negli algoritmi di autenticazione (vedi nel seguito).

Ognuno dei controlli precedenti, in sé, è “lossy” (perde informazioni) e non permette assolutamente, come è evidente, di ricostruire da solo il dato originario.


Ultime modifiche: venerdì, 12 marzo 2021, 18:08