Descrivere la crittografia e il codice hash
Un modo per proteggersi dalle minacce di cybersecurity comuni consiste nel crittografare i dati sensibili o preziosi. La crittografia è il processo per rendere i dati illeggibili e inutilizzabili per i visualizzatori non autorizzati. Per usare o leggere i dati crittografati, è necessario decrittografarli. Questo processo richiede l'uso di una chiave privata.
Esistono due tipi principali di crittografia: simmetrica e asimmetrica. La crittografia simmetrica usa la stessa chiave per crittografare e decrittografare i dati. La crittografia asimmetrica usa una coppia di chiave pubblica e chiave privata. Entrambe le chiavi possono crittografare i dati, ma la chiave usata per crittografare non può essere usata per decrittografare i dati crittografati. Per decrittografare i dati, è necessaria l'altra chiave della coppia. Ad esempio, se per crittografare viene usata la chiave pubblica, per decrittografare è possibile usare solo la chiave privata corrispondente. La crittografia asimmetrica consente di accedere a siti Internet usando il protocollo HTTPS e soluzioni di firma elettronica dei dati. La crittografia può proteggere i dati inattivi o in transito. Per altre informazioni sui concetti della crittografia, vedere Descrivere i concetti della crittografia
Crittografia per i dati inattivi
I dati inattivi sono i dati archiviati in un dispositivo fisico, ad esempio un server. Possono essere archiviati in un database o in un account di archiviazione, ma, indipendentemente dalla posizione di archiviazione, la crittografia dei dati inattivi garantisce che i dati siano illeggibili senza le chiavi e i segreti necessari per decrittografarli.
Se un utente malintenzionato venisse in possesso di un disco rigido con dati crittografati, ma non avesse accesso alle chiavi di crittografia, non sarebbe in grado di leggere i dati.
Crittografia per i dati in transito
I dati in transito sono dati che vengono spostati da una posizione a un'altra, ad esempio attraverso Internet o in una rete privata. Il trasferimento sicuro può essere gestito da vari livelli diversi. Ad esempio, tramite la crittografia dei dati al livello dell'applicazione prima dell'invio attraverso una rete. HTTPS è un esempio di crittografia di dati in transito.
La crittografia dei dati in transito consente di proteggere i dati da osservatori esterni e offre un meccanismo per trasmettere dati limitando il rischio di esposizione.
Crittografia per i dati in uso
I comuni ambiti di utilizzo della crittografia dei dati in uso implicano la protezione dei dati in una risorsa di archiviazione non permanente, come la RAM o la cache della CPU. A questo scopo, è possibile usare tecnologie che creano un enclave (una sorta di cassetta di sicurezza) in grado di proteggere i dati e mantenerli crittografati mentre la CPU elabora i dati.
Hashing
L'hashing usa un algoritmo per convertire il testo in un valore a lunghezza fissa univoco, chiamato hash. Ogni volta che viene eseguito l'hashing dello stesso testo con lo stesso algoritmo, viene generato lo stesso valore hash. Tale hash può quindi essere usato come identificatore univoco dei dati associati.
L'hashing è diverso dalla crittografia perché non usa le chiavi e il valore hash generato non viene successivamente decrittografato nel valore originale.
L'hashing viene spesso usato per archiviare le password. Quando un utente immette la password, lo stesso algoritmo che ha creato l'hash archiviato crea un hash della password immessa. Questo viene confrontato con la versione archiviata dell'hash della password. Se corrispondono, l'utente ha immesso la password correttamente. Si tratta di una procedura più sicura rispetto all'archiviazione di password come testo normale, ma anche i pirati informatici conoscono gli algoritmi di hashing. Poiché le funzioni hash sono deterministiche (lo stesso input produce lo stesso output), i pirati informatici possono usare attacchi con dizionario di forza bruta per l'hashing delle password. Per ogni hash corrispondente individuano la password effettiva. Per mitigare questo rischio, viene spesso effettuato il "salting" delle password. Questo termine indica l'aggiunta di un valore casuale a lunghezza fissa all'input delle funzioni hash per creare hash univoci per lo stesso input.