Cos'è una chiave di crittografia?

Una chiave è un gruppo di caratteri casuali disposti in un ordine particolare. I protocolli di crittografia utilizzano una chiave per modificare i dati in modo che vengano criptati e in modo che chiunque non disponga della chiave non possa decodificare le informazioni.

Obiettivi di apprendimento

Dopo aver letto questo articolo sarai in grado di:

  • Scoprire cos'è una "chiave" nella crittografia
  • Capire come viene utilizzata una chiave per codificare i dati nella crittografia
  • Spiegare come lo scambio di chiavi pubbliche rende possibile HTTPS

Argomenti correlati


Vuoi saperne di più?

Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.

Fai riferimento all'Informativa sulla privacy di Cloudflare per scoprire come raccogliamo ed elaboriamo i tuoi dati personali.

Copia link dell'articolo

Aumenta la sicurezza e l'affidabilità utilizzando i protocolli SSL/TLS gratuiti di Cloudflare

Chiave di crittografia

Cos'è una chiave di crittografia?

In crittografia, una chiave è una stringa di caratteri utilizzata all'interno di un algoritmo di crittografia per modificare i dati in modo che appaiano casuali. Proprio come una chiave fisica, blocca (crittografa) i dati in modo che solo chi possiede la chiave giusta possa sbloccarli (decifrarli).

Chiave di crittografia Hello

I dati originali sono noti come testo in chiaro e i dati dopo che la chiave li ha crittografati sono noti come testo cifrato.

La formula:

testo in chiaro
+ chiave
= testo cifrato

Chiavi nelle prime forme di crittografia

Prima dell'avvento dei computer, il testo cifrato veniva spesso creato semplicemente sostituendo una lettera con un'altra nel testo in chiaro, un metodo noto come "cifrario a sostituzione". Supponiamo, ad esempio, che qualcuno invii un messaggio con scritto "Hello" a un'altra persona e che ogni lettera venga sostituita con quella successiva nell'alfabeto: "Hello" diventa quindi "Ifmmp".

H E L L O
+1 +1 +1 +1 +1
I F M M P

"Ifmmp" sembra una stringa di lettere senza senso, ma se qualcuno conosce la chiave, può sostituirla con le lettere corrette e decifrare il messaggio come "Hello". Per questo esempio, la chiave è (lettera) - 1, spostando ogni lettera indietro di una posizione nell'alfabeto per arrivare alla lettera reale.

I F M M P
-1 -1 -1 -1 -1
H E L L O

Tali cifrari sono relativamente facili da decifrare con una semplice analisi statistica, poiché alcune lettere appariranno più frequentemente di altre in un dato testo (ad esempio, la E è la lettera più comune nella lingua inglese). Per contrastare questo problema, i crittografi hanno sviluppato un sistema chiamato one-time pad.

Un one-time pad è una chiave monouso che ha almeno tanti valori quanti sono i caratteri del testo in chiaro. In altre parole, ogni lettera verrà sostituita da una lettera che dista da essa un numero univoco di lettere nell'alfabeto.

Supponiamo, ad esempio, che qualcuno debba crittografare il messaggio "Hello" e che utilizzi un one-time pad con i valori 7, 17, 24, 9, 11.

H E L L O
7 17 24 9 11

Mentre prima ci spostavamo semplicemente di una posizione in avanti per ogni lettera (lettera + 1), ora ci spostiamo di un numero diverso di posizioni nell'alfabeto per ogni lettera. Aggiungiamo 7 alla prima lettera, H, poi aggiungiamo 17 alla seconda lettera e così via. Per tutti i calcoli che ci portano oltre Z, torniamo semplicemente all'inizio dell'alfabeto e continuiamo ad aggiungere.

H E L L O
7 17 24 9 11
O V J U Z

Partendo dal testo in chiaro "Hello", con la chiave "7, 17, 24, 9, 11" ora abbiamo ora il testo cifrato "Ovjuz".

Affinché la comunicazione tramite un one-time pad funzioni, entrambe le parti della conversazione devono utilizzare la stessa chiave per ogni singolo messaggio (crittografia simmetrica), sebbene venga utilizzata una chiave diversa ogni volta che c'è un nuovo messaggio. Sebbene a terzi "Ovjuz" possa sembrare una sciocchezza casuale, la persona che riceve il testo cifrato "Ovjuz" saprà di dover usare la chiave "7, 17, 24, 9, 11" per decifrarlo (sottraendo anziché addizionando):

O V J U Z
7 17 24 9 11
H E L L O

Pertanto, un semplice messaggio può essere modificato tramite una stringa di dati casuali, una chiave, per poter essere crittografato o decrittografato.

Chiavi nella crittografia moderna

Sebbene gli esempi sopra riportati della crittografia primitiva illustrino il funzionamento dell'utilizzo di una stringa casuale di informazioni per trasformare il testo in chiaro in testo cifrato, le chiavi di crittografia odierne sono molto più complesse.

Ad esempio, la chiave pubblica di un sito Web potrebbe essere qualcosa del tipo:

04 CE D7 61 49 49 FD 4B 35 8B 1B 86 BC A3 C5 BC D8 20 6E 31 17 2D 92 8A B7 34 F4 DB 11 70 4E 49 16 61 FC AE FA 7F BA 6F 0C 05 53 74 C6 79 7F 81 12 8A F7 E2 5E 6C F5 FA 10 69 6B 67 D9 D5 96 51 B0 (copiata nel 2019 dal certificato SSL di cloudflare.com)

Questa è molto più complessa della chiave "7 17 24 9 11" che abbiamo usato sopra per crittografare "Hello".

Invece di limitarsi ad aggiungere o sottrarre, la crittografia moderna utilizza complesse formule matematiche note come algoritmi. E invece di una semplice stringa di numeri casuali per una chiave, le chiavi moderne sono solitamente ulteriormente randomizzate.

Ciò avviene per diverse ragioni:

  1. I computer sono in grado di eseguire calcoli molto più complessi in un tempo inferiore rispetto ai crittografi umani, rendendo la crittografia più complessa non solo possibile, ma necessaria.
  2. I computer possono modificare le informazioni a livello binario, ovvero a livello degli 1 e degli 0 che compongono i dati, non solo a livello delle singole lettere e numeri.
  3. Se i dati crittografati non sono sufficientemente casuali, un programma per computer sarà in grado di decrittografarli. Per una crittografia davvero sicura, la vera casualità è estremamente importante.

In combinazione con un algoritmo di crittografia, una chiave di crittografia è in grado di criptare un testo rendendolo irriconoscibile da parte dell'uomo.

Come vengono utilizzate le chiavi nella crittografia SSL (HTTPS)?

Esistono due tipi di crittografia: la crittografia simmetrica e la crittografia asimmetrica, nota anche come crittografia con chiavi pubbliche. Nella crittografia simmetrica, entrambe le parti di una conversazione utilizzano la stessa chiave per trasformare il testo in chiaro in testo cifrato e viceversa.

Nella crittografia asimmetrica (o con chiavi pubbliche), le due parti della conversazione utilizzano ciascuna una chiave diversa. Una chiave è detta chiave pubblica, l'altra chiave è detta chiave privata, così chiamata perché una delle parti la tiene segreta e non la condivide mai con nessuno. Quando il testo in chiaro viene crittografato con la chiave pubblica, solo la chiave privata può decrittografarlo.

SSL (o TLS, come viene chiamato oggi) è un protocollo di crittografia utilizzato per proteggere le comunicazioni Internet. Un sito Web servito tramite HTTPS anziché HTTP utilizza questo tipo di crittografia. In TLS/SSL, un sito Web o un'applicazione Web avrà sia una chiave pubblica che una chiave privata. La chiave pubblica viene condivisa pubblicamente nel certificato SSL del sito Web, affinché chiunque possa vederla. La chiave privata è installata sul server di origine e non viene mai condivisa.

Le sessioni di comunicazione TLS/SSL iniziano con un handshake TLS, durante il quale il sito Web e il client utilizzano la chiave pubblica e la chiave privata per generare nuove chiavi, chiamate chiavi di sessione. Queste chiavi di sessione vengono quindi utilizzate da entrambe le parti per crittografare i propri messaggi avanti e indietro.

Pertanto, TLS inizia con la crittografia asimmetrica (con due chiavi) e passa alla crittografia simmetrica (con una chiave). Entrambe le parti utilizzano le stesse chiavi durante la sessione di comunicazione, ma quando iniziano una nuova sessione, genereranno insieme nuove chiavi.