Crittografia: introduzione di base alle tecnologie che tengono internet al sicuro

Chiavi pubbliche e private, le connessioni SSL/TSL e le Certification Authority, per arrivare alla blockchain e alle criptovalute: quali sono i principi di base che tengono insieme la sicurezza in rete

La crittografia diventa sempre più importante nelle nostre vite. Ogni volta che si accede a un’applicazione o si invia un’e-mail, ci si affida a un’ingegnosa infrastruttura crittografica che discende in gran parte da scoperte degli anni ’70.

Oltre agli sviluppatori software specializzati e i programmatori, chiunque abbia a che fare con applicazioni digitali che prevedono la crittografia – cioè oggi praticamente tutte quelle che richiedono un collegamento – può trarre beneficio dalla comprensione di come funzioni la cifratura dei dati, specialmente in un’epoca in cui criptovalute e criptoinvestimenti sono sempre più diffusi.

Tutti noi usiamo la crittografia nella nostra vita quotidiana, che lo sappiamo o no.

Cos’è la crittografia e come funziona

La crittografia è la pratica di rendere sicure le comunicazioni. Questo si ottiene usando una varietà di tecniche, protocolli e algoritmi per impedire alle parti indesiderate di visualizzare o alterare i dati privati.

La disciplina della crittografia viene di solito distinta in quattro aspetti:

  1. Riservatezza: i dati non vengono esposti a parti non volute
  2. Integrità: i dati non possono essere manipolati o distrutti
  3. Autenticazione: le parti sono in grado di verificare in modo affidabile l’identità dell’altro.
  4. Non ripudio: la comunicazione può essere confermata e non negata successivamente dai partecipanti.

Cifratura a chiavi simmetriche

Prima dell’avvento dei computer, la crittografia si basava sull’uso di cifrari. Un cifrario è una mappa che permette di passare da un testo leggibile (testo in chiaro o cleartext) a un testo incomprensibile (testo cifrato o cyphertext) e viceversa. Per esempio, un cifrario semplice sarebbe quello di aggiungere quattro a ogni lettera del testo (quindi A diventa E). La decodifica poi comporterebbe semplicemente la sottrazione di quattro da ogni lettera. Questi processi sono chiamati cifratura e decifratura.

key

Spostare le lettere di quattro posti nell’alfabeto è un metodo molto ovvio e non sicuro. Più sicuro è creare una mappa complessa che richiede una chiave per la traduzione. Tale chiave deve essere distribuita a tutte le parti partecipanti, e ciò comporta problemi logistici e di sicurezza. Chi entra in possesso della chiave una volta, può decifrare tutte le comunicazioni successive.

A volte chiamata anche chiave segreta, la crittografia simmetrica è ampiamente utilizzata per mantenere riservati i dati locali. Poiché lo stesso utente in genere codifica e decodifica i dati protetti, la condivisione della chiave non è un problema. Sono sistemi a chiave segreta per esempio la cifratura del disco Bitlocker su Windows o quella di Apple FileVault per i Mac, ma esistono anche molti software per cifrare una cartella o un intero disco.

Leggi anche: Come tenere al sicuro i dati in azienda

Funzioni unidirezionali

Con l’avvento dei computer e i relativi progressi nella matematica, i metodi crittografici sono diventate più complessi. Sono sorte molte nuove tecniche, ma tra le più importanti c’è quella nota come funzioni unidirezionali (che includono gli hash che generano stringhe di lunghezza fissa strettamente correlate al testo originale, di qualsiasi lunghezza sia). Le funzioni unidirezionali sono considerate una primitiva crittografica. Come suggerisce il nome, una funzione unidirezionale funziona in una sola direzione.

Un uso comune per le funzioni unidirezionali, e un buon modo per capirle, è l’hashing delle password quando sono memorizzate nel database di un servizio (per esempio, in Java e in JavaScript). Quanto l’utente sceglie una password, la inserisce come testo in chiaro in una casella di testo (per esempio, pippo123) e l’algoritmo a senso unico la trasforma in una stringa dall’aspetto casuale (XFcbe2d3bh0sa), che viene memorizzata nel database del sito. Sebbene sia possibile ricavare l’hash dalla password in chiaro (pippo123), non è possibile fare il percorso inverso, perché sono tantissime le combinazioni teoriche che possono generare lo stesso hash.

Non c’è alcun metodo conosciuto (utilizzando i sistemi informatici attuali) per invertire efficacemente il processo. Anche se un attaccante avesse accesso al database, le password rimangono quindi sicure.

Uno dei vantaggi degli algoritmi di hashing è che sono leggeri da elaborare, anche per file di grande dimensione. Per questo motivo vengono spesso utilizzati nella distribuzione di software critici per la sicurezza, come per esempio i sistemi operativi. In pochi secondi è possibile verificare che un’intera distribuzione Linux scaricata da internet sia effettivamente conforme all’originale distribuito dal sito ufficiale, su cui viene pubblicato anche l’hash, e che quindi non sia stata modificata intenzionalmente o per un errore nel download.   

È interessante notare che anche se gli attaccanti hanno pieno accesso alla logica dell’algoritmo (per esempio, ecco il sorgente di BCrypt), non sono generalmente in grado di invertire la funzione. Detto questo, l’hashing unidirezionale non è perfetto ed esistono diverse tecniche per craccarli (come le tabelle Rainbow).

Le moderne librerie di hashing includono la capacità di aumentare la difficoltà dell’hash permettendogli di resistere agli attacchi aumentando la potenza di calcolo necessaria a rompere il codice) e di introdurre un Salt nell’algoritmo (un codice univoco che assicura che gli hash di input identici siano comunque diversi). Finché il codice Salt è tenuto segreto, le password hashate con esso sono fondamentalmente inattaccabili.

Per una comprensione maggiore della teoria dietro l’hashing unidirezionale, date un’occhiata a questa risposta su Stack Overflow.

Funzioni pseudo-casuali

Insieme alle funzioni unidirezionali, gli algoritmi per la generazione di numeri casuali sono considerati “primitivi” crittografici, cioè, elementi fondamentali necessari per rendere sicure le comunicazioni. Perché? Semplicemente, qualsiasi sistema di comunicazione segreto dipende da valori che sono noti alla parte che deve tenere sicure le informazioni e sconosciuti agli altri. Per essere efficace, una chiave deve essere difficile da indovinare. L’ideale è quindi una sequenza di caratteri completamente casuale, che dipende dalla possibilità del software di generare un numero casuale.

Sebbene tutti i linguaggi di programmazione dispongano di funzioni per la generazione di un numero casuale, nella realtà dei fatti questi numeri sono meno casuali di quando dovrebbero. Solitamente, si utilizza un numero di “semina” iniziale (seed) e, applicando calcoli matematici, viene generato un numero (pseudo) casuale della lunghezza desiderata.

Il problema è che la maggior parte dei seed, come l’estrazione di un valore dall’orologio del sistema, sono solo “più o meno” casuali. Se un hacker sa come vengono generati i numeri, potrebbe escogitare attacchi basati sulla probabilità che il numero pseudo-casuale rientri in un certo intervallo.

A volte viene richiesto un intervento umano per generare il seed: per esempio, digitare caratteri a caso sulla tastiera oppure muovere il mouse per un minuto. Gli esseri umani, però, sono notoriamente inaffidabili nel fornire input davvero casuali.

Sono stati sviluppati mezzi più sicuri per generare numeri casuali per sventare gli attacchi con numeri casuali. La maggior parte delle librerie di crittografia includono strutture per questi generatori.

Chiavi asimmetriche

Forse lo sviluppo più ingegnoso e influente nella crittografia moderna è l’utilizzo di una coppia di chiavi asimmetriche, chiamata anche coppia di chiavi “pubblica e privata”. L’idea di base è che vengono generate due chiavi, una per cifrare e una per decifrare.

Questa innovazione è stata sperimentata alla fine degli anni ’70 da due programmatori e un matematico, che hanno dato le loro iniziali all’innovativo sistema di crittografia che hanno inventato: RSA, da Rivest, Shamir e Adleman.

L’RSA e altri sistemi a chiave asimmetrica prendono l’idea della funzione unidirezionale e le fanno fare un grande passo avanti, creando due chiavi che lavorano in modo asimmetrico. La prima chiave, di cifratura, può essere distribuita apertamente in pubblico, mentre la chiave di decifratura viene mantenuta segreta.

crittografia-chiave-pubblica

La matematica alla base di questo sistema non è semplice, e per un certo periodo i ricercatori coinvolti hanno avuto seri dubbi sul fatto che fosse possibile applicarla. Oggi la crittografia a chiave pubblica-privata è alla base di gran parte della moderna infrastruttura di sicurezza di internet, compresa la sicurezza del “livello di trasporto” utilizzata da SSL/TLS, le firme digitali e le criptovalute come Bitcoin.

È importante notare che le chiavi asimmetriche non creano sistemi impossibili da craccare, ma finché la chiave privata viene tenuta riservata, è praticamente impossibile violare la crittografia. Ci sono diversi exploit in circolazione (tra cui attacchi ai numeri casuali, attacchi temporali e altri), ma la sicurezza dei meccanismi a chiavi asimmetriche si basa principalmente su quanto tempo sarebbe necessario per invertire il processo di fattorizzazione dei numeri coinvolti.

Questo potrebbe non sembrare molto sicuro, ma per citare l’articolo di Brett Slatkin sulla matematica della crittografia a chiave pubblica, “anche usando soluzioni fantasiose sul computer più veloce della Terra, si impiegherebbe un tempo lungo fino alla fine dell’universo” per decifrare la moderna crittografia asimmetrica. Questo, almeno, fino a un’applicazione pratica ed efficace del calcolo quantistico, che renderebbe il cracking della crittografia tipo RSA un problema risolvibile in un tempo limitato, possibilità non necessariamente lontana, per cui si sta già ragionando su tecniche in grado di resistere agli attacchi alla crittografia basati sul quantum computing.

Nelle applicazioni attuali, le chiavi asimmetriche sono spesso utilizzate come handshake iniziale per stabilire un canale sicuro per lo scambio di chiavi simmetriche, meno onerose per le risorse di calcolo. Questo è ciò che accade quando il vostro browser sta “negoziando una chiave TLS” nel collegarsi a un sito https. Poiché le chiavi simmetriche sono in pratica molto più veloci, il server e il client si verificano a vicenda tramite le chiavi asimmetriche, poi si consegnano le rispettive chiavi simmetriche per utilizzarle in ulteriori comunicazioni. Questa comunicazione è quindi al sicuro da intercettazioni o manipolazioni anche su canali non riservati.

Infrastruttura a chiave pubblica

Un altro importante inconveniente della crittografia asimmetrica è che tipicamente richiede un’autorità centralizzata di fiducia. Questo perché il problema di verificare che qualcuno sia chi dice di essere non si limita solo a dimostrare che qualcuno possiede una chiave privata (qualcosa che la crittografia asimmetrica può fare da sola). Invece, per garantire che (per esempio) il certificato SSL/TLS di un server web non sia solo tecnicamente valido, ma anche autentico (rappresenta veramente l’organizzazione che dichiara di essere), si deve fare riferimento a un’autorità centrale che può validare ulteriori certificati.

Questo crea opportunità per gli hacker, poiché qualsiasi violazione nella gerarchia delle chiavi di convalida compromette tutte le chiavi sottostanti. Anche se tali violazioni ogni tanto accadono, gran parte di internet si basa su questo sistema. L’intero sistema è noto come infrastruttura a chiave pubblica (PKI). Una parte fidata che emette certificati è un’autorità di certificazione (CA, Certification Authority).

Un’alternativa alla PKI è Pretty Good Privacy (PGP), in cui gli utenti si fidano l’uno dell’altro su una base di relazioni peer-to-peer, invece di fare affidamento su un’autorità centralizzata (anche qui si usano chiavi asimmetriche per scambiare chiavi simmetriche). PGP è comunemente usato per cifrare la posta elettronica e per verificare che i download non siano stati manomessi.

L’uso più sofisticato delle chiavi asimmetriche e della crittografia in generale si trova nei sistemi blockchain, il cui esempio di applicazione più famoso sono i Bitcoin. Eliminando la necessità di un’autorità centralizzata e spostando la convalida delle transazioni firmate crittograficamente sull’intera rete, una blockchain apre le possibilità per nuovi tipi di sistemi costruiti su uno strato, distribuito ma sicuro, in cima all’infrastruttura di internet. Al momento, stiamo solo grattando la superficie delle applicazioni offerte da questa tecnologia.

Le blockchain e i sistemi costruiti su di esse sono strutture crittografiche essenziali. Le coppie di chiavi sono usate per firmare le transazioni, e gli hashish crittografici sono usati per convalidare gli anelli della catena.

Questo è stato un tour vorticoso dell’attuale panorama crittografico. Anche se sotto a ogni punto trattato ci sono temi molto complessi da approfondire, comprendere i principi di base è sempre più prezioso per tutti noi, programmatori e non.

Tokenizzazione dei dati: un nuovo modo di mascherare i dati sensibili

Tokenizzazione dei dati: un nuovo modo di mascherare i dati sensibili

La sostituzione dei dati sensibili con le tecnologie di tokenizzazione offre numerosi vantaggi in termini di sicurezza e conformità per le aziende.  »

Redazione CWI.it // 26.07.2022
Sicurezza e cifratura: andare oltre username e password

Sicurezza e cifratura: andare oltre username e password

I team IT e di sicurezza devono rafforzare le forme di accesso più semplice basate su username e password per proteggersi da rischi per la sicurezza nuovi e in continua evoluzione.  »

Redazione CWI.it // 13.06.2022
Microsoft Entra: la gestione dell’identità diventa più sicura

Microsoft Entra: la gestione dell’identità diventa più sicura

Microsoft Entra è un nuovo set di soluzioni che comprende funzionalità avanzate di verifica e di gestione dell’identità.  »

Francesco Destri // 01.06.2022
Soluzioni IDaaS: sempre più organizzazioni le stanno adottando

Soluzioni IDaaS: sempre più organizzazioni le stanno adottando

L'identità come servizio basata sul cloud offre costi bassi, scalabilità e altri vantaggi, ma comporta anche dei rischi. Ecco tutto quello che dovete sapere sulle soluzioni IDaaS.   »

Redazione CWI.it // 24.05.2022
Apple, Google e Microsoft ampliano il supporto per lo standard FIDO

Apple, Google e Microsoft ampliano il supporto per lo standard FIDO

Apple, Google e Microsoft si stanno impegnando a estendere il supporto per lo standard FIDO, che consentirà accessi più rapidi, più facili e più sicuri su dispositivi e piattaforme.  »

Redazione CWI.it // 10.05.2022
Perché l’autenticazione è ancora la più grande preoccupazione dei CISO

Perché l’autenticazione è ancora la più grande preoccupazione dei CISO

L'autenticazione continua a preoccupare i leader della sicurezza man mano che le aziende diventano più digitalizzate, agili da dipendenti remoti.  »

Redazione CWI.it // 31.03.2022
SAML: lo standard aperto che consente il single sign-on

SAML: lo standard aperto che consente il single sign-on

Il Security Assertion Markup Language (SAML) è uno standard che definisce il modo in cui i provider possono offrire servizi di autenticazione e autorizzazione. Ecco tutto quello che dovete sapere.  »

Redazione CWI.it // 13.10.2021
Crittografia: i nostri dati al sicuro da occhi indiscreti

Crittografia: i nostri dati al sicuro da occhi indiscreti

La crittografia protegge i nostri dati privati da occhi indiscreti. Ecco una spiegazione di base su come funziona e su quali sono i suoi usi più frequenti.  »

Redazione CWI.it // 04.10.2021
Microsoft aggiunge un’opzione senza password per i suoi account

Microsoft aggiunge un’opzione senza password per i suoi account

Odiate le password? Ora potete sbarazzarvene completamente sugli account Microsoft sfruttando l’app Authenticator. Ecco come.  »

Mark Hachman // 16.09.2021
Sicurezza 2.0: dalle password all’autenticazione biometrica

Sicurezza 2.0: dalle password all’autenticazione biometrica

Spitch, azienda specializzata in soluzioni di tecnologia vocale, presenta alcuni esempi concreti di autenticazione biometrica e spiega perché non tutte le biometrie sono uguali.  »

Francesco Destri // 08.06.2021
Digital Forensics: l’arma in più per analizzare i dati cancellati in un computer

Digital Forensics: l’arma in più per analizzare i dati cancellati in un computer

È facile pensare che cancellare i dati da un computer sia in fondo come bruciare documenti cartacei… ciò che è andato, è andato per sempre. Ma con la digital forensics di mezzo, è davvero così?  »

Francesco Destri // 01.06.2021
Come il Single Sign-On migliora la sicurezza e l’esperienza dell’utente

Come il Single Sign-On migliora la sicurezza e l’esperienza dell’utente

La difficoltà nel ricordare le password, la proliferazione del cloud e la semplicità degli sviluppatori stanno spingendo l'ascesa del Single Sign-On.  »

Redazione CWI.it // 12.05.2021
Google e l’autenticazione a due fattori: arriva la svolta?

Google e l’autenticazione a due fattori: arriva la svolta?

Google odia le password e sta cercando di sostituirle spingendo l'autenticazione a due fattori, a cui però gli utenti possono rinunciare.  »

Mark Hachman // 07.05.2021
Perché bisogna cambiare l’approccio nei confronti della sicurezza informatica

Perché bisogna cambiare l’approccio nei confronti della sicurezza informatica

Solomon Gilbert di We Fight Fraud spiega perché non basta più reagire agli attacchi informatici; è ormai diventano necessario anche adottare atteggiamenti più resilienti.  »

Redazione CWI.it // 22.04.2021
Come accorgervi se le vostre password sono state rubate

Come accorgervi se le vostre password sono state rubate

Per fortuna ci sono molti servizi di monitoraggio che rivelano se le vostre password sono state rubate e molti di questi sono progettati per consentirvi di agire rapidamente e cambiarle.  »

Mark Hachman // 11.02.2021
Microsoft Authenticator e Windows Hello per un’autenticazione migliore

Microsoft Authenticator e Windows Hello per un’autenticazione migliore

Microsoft Authenticator, l'autenticatore basato su app dell'azienda, e Windows Hello sono metodi di autenticazione MFA migliori rispetto ai codici di accesso invitati tramite testo o voce.  »

Gregg Keizer // 18.11.2020
Covid e sicurezza: il riconoscimento biometrico per superare le password

Covid e sicurezza: il riconoscimento biometrico per superare le password

Mentre i cyberattacchi nel mondo post Covid crescono a dismisura, bisogna iniziare a dire addio alle password come metodo di protezione e difesa e sostituirle con soluzioni di riconoscimento biometrico.  »

Francesco Destri // 26.10.2020
Cos’è e come funziona (e cosa non protegge) la crittografia end-to-end

Cos’è e come funziona (e cosa non protegge) la crittografia end-to-end

Grazie alla crittografia end-to-end i dati vengono trasformati in qualcosa che non può essere letto dall’esterno. Ecco come funziona, quali sono le alternative e da cosa non ci protegge.  »

Francesco Destri // 16.09.2020
Pagina 1 di 4
Condividi