Cifratura

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.

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.

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.

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.
autenticazione

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.
saml

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.
Crittografia

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.
password

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.
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.
Digital Forensics

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ì?

Una strategia a lungo termine per la sicurezza informatica

Nuove tecnologie come crittografia quantistica, omomorfica e biometrica cambieranno per sempre lo scenario della cybersecurity. Anche se si tratta ancora di evoluzioni future, è importante cominciare oggi a progettare soluzioni che resistano al tempo
Single Sign-On

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.
autenticazione a due fattori

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.
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.

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.
Microsoft Authenticator

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.
riconoscimento biometrico

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.
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.
cifratura

Computer quantistici e cifratura: come proteggersi dagli attacchi

Kaspersky propone una riflessione incentrata sulla cifratura dei dati applicata al computing quantistico e sulla difesa da attacchi quantistici.
fido alliance

FIDO Alliance: anche Apple vuol dire addio alle password

Apple ha aderito a FIDO Alliance per supportare uno standard votato alla sostituzione delle password con altri metodi più rapidi e sicuri per accedere a servizi e app online.

Sapere digitale, in Svizzera il SIT rilancia

Il Cantone di Schaffhausen investe in formazione tecnologica e si affida a Serguei Beloussov, Ceo di Acronis e co-chairman di Runa Capital. Il confronto con l'Italia è deprimente.
biometria vocale

Biometria vocale: come siamo messi a sicurezza e privacy?

Le soluzioni di biometria vocale offrono davvero un livello di sicurezza maggiore rispetto alle tradizionali procedure di verifica basate su sistemi di password e domande di sicurezza?
4,100FansMi piace
1,991FollowerSegui

BrandPost (info)

DA NON PERDERE

Alternative data

Alternative data: i 5 costi nascosti da tenere sott’occhio

Gli alternative data offrono alle aziende l'opportunità di ottenere un vantaggio competitivo, ma i costi per integrarli nei flussi di lavoro aziendali potrebbero essere maggiori di quanto si pensi.
enterprise architecture

Cinque aree in cui l’enterprise architecture fa la differenza

Le aziende utilizzano l’enterprise architecture per migliorare la distribuzione dei prodotti, la gestione del rischio e persino la fidelizzazione dei dipendenti.

6 rischi derivanti dalla mancanza di etica e governance dell’intelligenza artificiale

I fattori inerenti all’IA e alla sua implementazione possono avere gravi conseguenze per la vostra azienda se l'etica e la governance non sono integrate nella vostra strategia di intelligenza artificiale.