Pubblicità

Crittografia dei file

La crittografia è la possibilità di nascondere delle informazioni per garantire la riservatezza dei dati, viene usata per evitare che altre persone possono avere accesso ai dati riservati.

Esistono diversi tipi di crittografia: crittografia

  • Hashing
  • Crittografia simmetrica
  • Crittografia asimmetrica

L’hashing è una funzione matematico non invertibile, che mappa una stringa di una lunghezza predefinita e viene usata per verificare se un certo file scaricato da internet sia ‘originale’ o sia stato ‘modificato’ da qualcuno.

Gli algoritmi di hashing più utilizzati sono :

Hashing a chiave singola

  • Hashing diretto: Assegna direttamente la chiave come indirizzo della memoria. Funziona bene con un set di chiavi limitato e distribuito uniformemente.
  • Hashing con catena: Crea una lista collegata per ogni indirizzo di memoria e memorizza gli elementi con la stessa chiave nella lista. Gestisce le collisioni ma può rallentare l’accesso in caso di liste lunghe.
  • Hashing con indirizzamento aperto: Trova un indirizzo libero vicino alla chiave hash se l’indirizzo originale è già occupato. Richiede tecniche come l’indirizzamento lineare, l’indirizzamento quadratico o l’indirizzamento doppio hash.
  • Hashing universale: Utilizza una famiglia di funzioni hash per minimizzare il numero di collisioni. Offre una maggiore sicurezza contro gli attacchi mirati.

Hashing a chiave multipla

  • Hashing perfetto: Garantisce che non ci siano collisioni. Richiede una conoscenza preventiva delle chiavi e può essere inefficiente per set di chiavi dinamici.
  • Hashing cuckoo: Utilizza due funzioni hash e sposta gli elementi tra le tabelle hash fino a trovare una posizione libera. Può essere efficiente ma il comportamento peggiore potrebbe essere disastroso.
  • Hashing di Bloom: Verifica se un elemento è presente in un set, ma non può restituire l’elemento stesso. Utilizza una tabella di bit per memorizzare le informazioni e può essere molto efficiente in termini di memoria.

Tecniche hash

  • Hashing di divisione: Calcola il resto della divisione della chiave per un numero primo. Semplice e veloce, ma può essere sensibile alla distribuzione delle chiavi.
  • Hashing moltiplicativo: Moltiplica la chiave per un numero costante e poi estrae una parte del prodotto. Più robusto della divisione ma richiede più calcoli.
  • Hashing con tabulazione: Utilizza una tabella precalcolata per mappare i caratteri della chiave a numeri e quindi somma i numeri per ottenere l’hash. Veloce ed efficiente, ma richiede più memoria.
  • Hashing di crittografia: Utilizza funzioni hash crittografiche come SHA-256 o MD5 per garantire l’integrità dei dati e la resistenza agli attacchi.

La scelta del tipo di hashing dipende da vari fattori, tra cui:

  • Il tipo di dati e la distribuzione delle chiavi
  • La dimensione del set di dati
  • Le prestazioni richieste
  • I requisiti di sicurezza

Ecco alcuni esempi di come vengono utilizzati i diversi tipi di hashing:

  • Hashing diretto: Memorizzazione di informazioni in una tabella hash per un piccolo set di elementi con chiavi uniche, come i codici dei dipendenti in una tabella.
  • Hashing con catena: Memorizzazione di informazioni in una tabella hash per un set più grande di elementi con chiavi duplicate, come gli indirizzi e-mail in un database.
  • Hashing perfetto: Memorizzazione di un set fisso di chiavi, come i vocaboli di un dizionario, in una tabella hash con una dimensione ottimale per evitare collisioni.
  • Hashing di Bloom: Verifica la presenza di un elemento in un set, come gli indirizzi IP in un firewall, in modo efficiente in termini di memoria.
  • Hashing di crittografia: Verifica l’integrità dei dati, come i file scaricati da Internet, e la sicurezza dei dati, come le password memorizzate nei sistemi di autenticazione.

È importante scegliere il tipo di hashing più adatto alle proprie esigenze per garantire le prestazioni, la sicurezza e l’efficienza.

Pubblicità