Come funzionano i sistemi di crittografia a chiave pubblica?

Se utilizzata correttamente, la crittografia end-to-end può aiutare a proteggere il contenuto dei tuoi messaggi, testo e persino file dall'essere compreso da chiunque tranne i destinatari previsti. Può anche essere usato per dimostrare che un messaggio proviene da una determinata persona e non è stato alterato.

Negli ultimi anni, gli strumenti di crittografia end-to-end sono diventati più utilizzabili. Strumenti di messaggistica sicura come Signal (iOS o Android), per chiamate vocali, videochiamate, chat e condivisione di file, sono buoni esempi di app che utilizzano la crittografia end-to-end per crittografare i messaggi tra il mittente e il destinatario previsto. Questi strumenti rendono i messaggi illeggibili per gli intercettatori sulla rete, nonché per gli stessi fornitori di servizi.

Detto questo, alcune implementazioni della crittografia end-to-end possono essere difficili da comprendere e utilizzare. Prima di iniziare a utilizzare gli strumenti di crittografia end-to-end, ti consigliamo vivamente di dedicare del tempo a comprendere le basi della crittografia a chiave pubblica .

Il tipo di crittografia di cui stiamo parlando in questa guida, su cui si basano gli strumenti di crittografia end-to-end, è chiamato crittografia a chiave pubblica o crittografia a chiave pubblica . Per informazioni su altri tipi di crittografia, dai un'occhiata alla nostra guida Cosa devo sapere sulla crittografia?

Comprendere i principi alla base della crittografia a chiave pubblica ti aiuterà a utilizzare questi strumenti con successo. Ci sono cose che la crittografia a chiave pubblica può e non può fare ed è importante capire quando e come potresti volerla usare.

Cosa fa la crittografia?

Ecco come funziona la crittografia quando si invia un messaggio segreto:

  1. Un messaggio chiaramente leggibile ("ciao mamma") è crittografato in un messaggio criptato che è incomprensibile per chiunque lo guardi ("OhsieW5ge+osh1aehah6").
  2. Il messaggio crittografato viene inviato su Internet, dove gli altri vedono il messaggio criptato, "OhsieW5ge+osh1aehah6"
  3. Quando arriva a destinazione, il destinatario previsto, e solo il destinatario previsto, ha un modo per decifrarlo e riportarlo al messaggio originale ("ciao mamma").

Crittografia simmetrica : una storia di passaggio di note segrete con una sola chiave

Julia vuole inviare una nota al suo amico César che dice "Ci vediamo in giardino", ma non vuole che i suoi compagni di classe lo vedano.

La nota di Julia passa attraverso un gruppo di compagni di classe intermedi prima di raggiungere César. Sebbene neutrali, gli intermediari sono ficcanaso e possono facilmente dare una sbirciatina al messaggio prima di passarlo. Stanno anche facendo delle copie di questo messaggio prima di trasmetterlo e annotando l'ora in cui Julia lo sta inviando a César.

Julia decide di crittografare il suo messaggio con una chiave di 3, spostando le lettere in basso di tre. Quindi A sarebbe D, B sarebbe E, ecc. Se Julia e César usano una semplice chiave di 3 per crittografare e una chiave di 3 per decifrare , allora il loro messaggio crittografato senza senso è facile da decifrare . Qualcuno potrebbe “forzare brutemente” la chiave provando tutte le possibili combinazioni. In altre parole, possono indovinare in modo persistente finché non ottengono la risposta per decifrare il messaggio.

Il metodo di spostamento dell'alfabeto di tre caratteri è un esempio storico di crittografia utilizzato da Giulio Cesare: il cifrario di Cesare. Quando c'è una chiave per crittografare e decifrare, come in questo esempio in cui è un semplice numero di 3, si parla di crittografia simmetrica .

Il cifrario di Cesare è una forma debole di crittografia simmetrica. Per fortuna, la crittografia ha fatto molta strada dal cifrario di Cesare. Usando una matematica straordinaria e l'aiuto dei computer, è possibile generare una chiave molto, molto più grande ed è molto, molto più difficile da indovinare. La crittografia simmetrica ha fatto molta strada e ha molti scopi pratici.

Tuttavia, la crittografia simmetrica non risolve il problema seguente: e se qualcuno potesse semplicemente origliare e aspettare che Julia e César condividano la chiave e rubare la chiave per decifrare i loro messaggi? E se aspettassero che Julia e César dicano il segreto per decifrare i loro messaggi entro 3? E se Julia e César fossero in diverse parti del mondo e non avessero intenzione di incontrarsi di persona?

Come possono César e Julia aggirare questo problema?

Diciamo che Julia e César hanno imparato a conoscere la crittografia a chiave pubblica . È improbabile che un intercettatore catturi Julia o César che condividono la chiave di decrittazione, perché non hanno bisogno di condividere la chiave di decrittazione. Nella crittografia a chiave pubblica, le chiavi di crittografia e decrittografia sono diverse.

Crittografia a chiave pubblica : una storia di due chiavi

Esaminiamo il problema più da vicino: come fa il mittente a inviare la chiave di decrittazione simmetrica al destinatario senza che qualcuno spii anche quella conversazione? In particolare, cosa succede se mittente e destinatario sono fisicamente lontani tra loro, ma vogliono poter dialogare senza sguardi indiscreti?

La crittografia a chiave pubblica (nota anche come crittografia asimmetrica) ha un'ottima soluzione per questo. Consente a ogni persona in una conversazione di creare due chiavi: una chiave pubblica e una chiave privata. Le due chiavi sono collegate e in realtà sono numeri molto grandi con determinate proprietà matematiche. Se codifichi un messaggio utilizzando la chiave pubblica di una persona, questa può decodificarlo utilizzando la chiave privata corrispondente.

Julia e César ora utilizzano i loro due computer per inviare messaggi crittografati utilizzando la crittografia a chiave pubblica , invece di passare note. I loro compagni di classe che passano gli appunti sono ora sostituiti con i computer. Esistono intermediari tra Julia e César: i rispettivi punti Wi-Fi di Julia e César, i provider di servizi Internet e i loro server di posta elettronica. In realtà, potrebbero essere centinaia di computer tra Julia e César a facilitare questa conversazione. Questi intermediari fanno e conservano copie dei messaggi di Julia e César ogni volta che vengono trasmessi.

A loro non importa che gli intermediari possano vederli comunicare, ma vogliono che il contenuto dei loro messaggi rimanga privato.

Innanzitutto, Julia ha bisogno della chiave pubblica di César. César invia la sua chiave pubblica (file) su un canale non sicuro, come la posta elettronica non crittografata. Non gli importa se gli intermediari vi accedono perché la chiave pubblica è qualcosa che può condividere liberamente. Nota che la metafora chiave non funziona qui; non è del tutto corretto pensare alla chiave pubblica come a una chiave letterale. César invia la chiave pubblica su più canali, in modo che gli intermediari non possano invece inviare una delle proprie chiavi pubbliche a Julia.

Julia riceve il file della chiave pubblica di César. Ora Julia può crittografare un messaggio per lui! Scrive il suo messaggio: "Ci vediamo in giardino".

Invia il messaggio crittografato. È crittografato solo per César.

Sia Julia che César possono capire il messaggio, ma sembra incomprensibile a chiunque altro tenti di leggerlo. Gli intermediari sono in grado di vedere i metadati, come la riga dell'oggetto, le date, il mittente e il destinatario.

Poiché il messaggio è crittografato con la chiave pubblica di César, è inteso solo per César e il mittente (Julia) per leggere il messaggio.

César può leggere il messaggio usando la sua chiave privata.

Ricapitolando:

  • La crittografia a chiave pubblica consente a qualcuno di inviare la propria chiave pubblica in un canale aperto e non sicuro.
  • Avere la chiave pubblica di un amico ti consente di crittografare i messaggi a lui indirizzati.
  • La tua chiave privata viene utilizzata per decrittografare i messaggi crittografati per te.
  • Gli intermediari, come i provider di servizi di posta elettronica, i provider di servizi Internet e quelli sulle loro reti, sono in grado di vedere i metadati per tutto questo tempo: chi sta inviando cosa a chi, quando, a che ora viene ricevuto, qual è la riga dell'oggetto, che il il messaggio è crittografato e così via.

Un altro problema: che dire della rappresentazione?

Nell'esempio con Julia e César, gli intermediari sono in grado di vedere i metadati per tutto questo tempo.

Diciamo che uno degli intermediari è un cattivo attore. Per cattivo attore intendiamo qualcuno che intende farti del male cercando di rubare o interferire con le tue informazioni. Per qualche ragione, questo cattivo attore vuole spiare il messaggio di Julia a César.

Diciamo che questo cattivo attore è in grado di indurre Julia a prendere il file della chiave pubblica sbagliato per César. Julia non si accorge che questa non è in realtà la chiave pubblica di César. Il cattivo attore riceve il messaggio di Julia, lo sbircia e lo passa a César.

Il cattivo attore potrebbe anche decidere di modificare il contenuto del file prima di passarlo a César.

Il più delle volte, il cattivo attore decide di lasciare i contenuti inalterati. Quindi, il cattivo attore inoltra il messaggio di Julia a César come se nulla fosse, César sa di incontrare Julia in giardino e, con loro sorpresa, c'è anche il cattivo attore.

Questo è noto come attacco man-in-the-middle. È anche noto come attacco machine-in-the-middle .

Fortunatamente, la crittografia a chiave pubblica ha un metodo per prevenire gli attacchi man-in-the-middle.

La crittografia a chiave pubblica ti consente di ricontrollare l'identità digitale di qualcuno con la sua identità reale attraverso qualcosa chiamato "verifica dell'impronta digitale". È meglio farlo nella vita reale, se sei in grado di incontrare il tuo amico di persona. Avresti la tua impronta digitale della chiave pubblica disponibile e il tuo amico ricontrolla che ogni singolo carattere dell'impronta digitale della tua chiave pubblica corrisponda a quello che hanno per l'impronta digitale della tua chiave pubblica. È un po' noioso, ma ne vale davvero la pena.

Anche altre app crittografate end-to-end hanno un modo per verificare la presenza di impronte digitali, sebbene ci siano alcune variazioni su come viene chiamata la pratica e su come viene implementata. In alcuni casi, leggerai ogni carattere dell'impronta digitale con estrema attenzione e ti assicurerai che corrisponda a ciò che vedi sullo schermo, rispetto a ciò che il tuo amico vede sul suo schermo. In altri, potresti scansionare un codice QR sul telefono di un'altra persona per "verificare" il suo dispositivo". Nell'esempio seguente, Julia e César possono incontrarsi di persona per verificare le impronte digitali del telefono scansionando i codici QR dell'altro utilizzando la fotocamera del telefono.

Se non hai il lusso di incontrarti di persona, puoi rendere disponibile la tua impronta digitale tramite un altro canale sicuro, come un'altra app di messaggistica crittografata end-to-end, un sistema di chat o un sito HTTPS .

Nell'esempio seguente, César invia la sua impronta digitale della chiave pubblica a Julia utilizzando un'app crittografata end-to-end diversa con il suo smartphone.


Ricapitoliamo:

  • Un attacco man-in-the-middle è quando qualcuno intercetta il tuo messaggio a qualcun altro. L'attaccante può alterare il messaggio e passarlo o scegliere semplicemente di origliare.
  • La crittografia a chiave pubblica consente di affrontare gli attacchi man-in-the-middle fornendo modi per verificare le identità del destinatario e del mittente. Questo viene fatto attraverso la verifica delle impronte digitali.
  • Oltre a essere utilizzata per crittografare un messaggio per il tuo amico, la chiave pubblica del tuo amico viene fornita anche con qualcosa chiamato "impronta digitale della chiave pubblica". Puoi utilizzare l'impronta digitale per verificare l'identità del tuo amico.
  • La chiave privata viene utilizzata per crittografare i messaggi e per firmare digitalmente i messaggi come te.

Segno dei tempi

La crittografia a chiave pubblica fa in modo che tu non debba contrabbandare la chiave di decrittazione al destinatario del tuo messaggio segreto perché quella persona ha già la chiave di decrittazione. La chiave di decrittazione è la loro chiave privata. Pertanto, tutto ciò che serve per inviare un messaggio è la chiave di crittografia pubblica corrispondente del destinatario. E puoi ottenerlo facilmente perché il tuo destinatario può condividere la sua chiave pubblica con chiunque, poiché le chiavi pubbliche vengono utilizzate solo per crittografare i messaggi, non per decrittografarli .

Ma c'è di più! Sappiamo che se si crittografa un messaggio con una determinata chiave pubblica, può essere decifrato solo dalla chiave privata corrispondente. Ma è vero anche il contrario. Se si crittografa un messaggio con una determinata chiave privata, può essere decifrato solo dalla chiave pubblica corrispondente.

Perché questo sarebbe utile? A prima vista, non sembra esserci alcun vantaggio nell'inviare un messaggio segreto con la tua chiave privata che chiunque abbia la tua chiave pubblica può decifrare. Ma supponiamo che tu abbia scritto un messaggio che dice "Prometto di pagare Aazul $ 100" e poi lo hai trasformato in un messaggio segreto usando la tua chiave privata. Chiunque potrebbe decifrare quel messaggio, ma solo una persona potrebbe averlo scritto: la persona che ha la tua chiave privata. E se hai fatto un buon lavoro mantenendo la tua chiave privata al sicuro, significa che tu, e solo tu, avresti potuto scriverla. In effetti, crittografando il messaggio con la tua chiave privata, ti sei assicurato che potesse provenire solo da te. In altre parole, con questo messaggio digitale hai fatto la stessa cosa che facciamo noi quando firmiamo un messaggio nel mondo reale.

La firma rende anche i messaggi a prova di manomissione. Se qualcuno provasse a modificare il tuo messaggio da "Prometto di pagare Aazul $ 100" a "Prometto di pagare Ming $ 100", non sarebbe in grado di rifirmarlo utilizzando la tua chiave privata. Quindi, un messaggio firmato garantisce che ha avuto origine da una determinata fonte e non è stato incasinato durante il trasporto.

In rassegna: utilizzo della crittografia a chiave pubblica

Ripassiamo. La crittografia a chiave pubblica ti consente di crittografare e inviare messaggi in modo sicuro a chiunque conosci la chiave pubblica.

Se altri conoscono la tua chiave pubblica:

  • Possono inviarti messaggi segreti che solo tu puoi decodificare utilizzando la tua chiave privata corrispondente e,
  • Puoi firmare i tuoi messaggi con la tua chiave privata in modo che i destinatari sappiano che i messaggi potrebbero provenire solo da te.

E se conosci la chiave pubblica di qualcun altro:

  • Puoi decodificare un messaggio firmato da loro e sapere che proviene solo da loro.

Dovrebbe essere ormai chiaro che la crittografia a chiave pubblica diventa più utile quando più persone conoscono la tua chiave pubblica. La chiave pubblica è condivisibile, in quanto è un file che puoi trattare come un indirizzo in una rubrica: è pubblico, le persone sanno di trovarti lì, puoi condividerlo ampiamente e le persone sanno che lì ti crittografano i messaggi. Puoi condividere la tua chiave pubblica con chiunque voglia comunicare con te; non importa chi lo vede.

La chiave pubblica viene abbinata a un file chiamato chiave privata. Puoi pensare alla chiave privata come a una chiave reale che devi proteggere e tenere al sicuro. La tua chiave privata viene utilizzata per crittografare e decrittografare i messaggi.

Avatar

Dovrebbe anche essere evidente che devi mantenere la tua chiave privata molto sicura. Se la tua chiave privata viene eliminata accidentalmente dal tuo dispositivo, non sarai in grado di decrittografare i tuoi messaggi crittografati. Se qualcuno copia la tua chiave privata (sia tramite accesso fisico al tuo computer, malware sul tuo dispositivo o se pubblichi o condividi accidentalmente la tua chiave privata), altri possono leggere i tuoi messaggi crittografati. Possono fingere di essere te e firmare messaggi affermando che sono stati scritti da te.

Avatar

Non è raro che i governi rubino chiavi private dai computer di determinate persone (portando via i computer o inserendo malware su di essi utilizzando l'accesso fisico o attacchi di phishing). Ciò annulla la protezione offerta dalla crittografia a chiave privata . Questo è paragonabile a dire che potresti avere una serratura inaccessibile alla tua porta, ma qualcuno potrebbe ancora essere in grado di derubarti per strada per la tua chiave, copiare la chiave e intrufolarla di nuovo nella tua tasca e quindi essere in grado di entrare nella tua casa senza nemmeno forzare la serratura.

Questo risale al modello di minaccia: determina quali sono i tuoi rischi e affrontali in modo appropriato. Se ritieni che qualcuno avrebbe difficoltà a cercare di ottenere la tua chiave privata, potresti non voler utilizzare una soluzione nel browser per la crittografia end-to-end . Puoi invece scegliere di conservare la tua chiave privata sul tuo computer o telefono, piuttosto che sul computer di qualcun altro (come nel cloud o su un server).

Revisione della crittografia a chiave pubblica e un esempio specifico: PGP

Quindi, abbiamo esaminato la crittografia simmetrica e la crittografia a chiave pubblica come spiegazioni separate. Tuttavia, dovremmo notare che la crittografia a chiave pubblica utilizza anche la crittografia simmetrica! La crittografia a chiave pubblica in realtà crittografa solo una chiave simmetrica, che viene quindi utilizzata per decrittografare il messaggio effettivo.

PGP è un esempio di protocollo che utilizza sia la crittografia simmetrica che la crittografia a chiave pubblica (asimmetrica). Dal punto di vista funzionale, l'utilizzo di strumenti di crittografia end-to-end come PGP ti renderà molto consapevole delle pratiche di crittografia a chiave pubblica.

Cosa sono esattamente le chiavi. E come sono legate insieme le chiavi?

La crittografia a chiave pubblica si basa sulla premessa che esistono due chiavi: una chiave per la crittografia e una chiave per la decrittografia. In pratica funziona è che puoi inviare una chiave su un canale non sicuro, come Internet. Questa chiave è chiamata chiave pubblica. Puoi pubblicare questa chiave pubblica ovunque, in luoghi molto pubblici, senza compromettere la sicurezza dei tuoi messaggi crittografati.

Questa chiave condivisibile è la chiave pubblica: un file che puoi trattare come un indirizzo in una rubrica: è pubblico, le persone sanno che ti trovano lì, puoi condividerlo ampiamente e le persone sanno che ti crittografano lì.

La chiave pubblica viene abbinata a un file chiamato chiave privata. Puoi pensare alla chiave privata come a una chiave reale che devi proteggere e tenere al sicuro. La tua chiave privata viene utilizzata per crittografare e decrittografare i messaggi.

Esamineremo la generazione di chiavi in ​​un algoritmo di crittografia a chiave pubblica comunemente usato chiamato RSA (Rivest–Shamir–Adleman). RSA viene spesso utilizzato per generare coppie di chiavi per e-mail crittografate con PGP.


La chiave pubblica e la chiave privata vengono generate insieme e legate insieme. Entrambi si basano sugli stessi numeri primi segreti molto grandi. La chiave privata è la rappresentazione di due numeri primi segreti molto grandi. Metaforicamente, la chiave pubblica è il numero del prodotto: è costituito dagli stessi due numeri primi molto grandi utilizzati per creare la chiave privata. La cosa sorprendente è che è molto difficile capire quali due grandi numeri primi abbiano creato la chiave pubblica.

Questo problema è noto come fattorizzazione primaria e alcune implementazioni della crittografia a chiave pubblica sfruttano questa difficoltà per i computer per risolvere quali sono i numeri primi componenti. La crittografia moderna ci consente di utilizzare numeri primi scelti a caso, ridicolmente giganteschi, difficili da indovinare sia per gli umani che per i computer.

E la forza qui è che le persone possono condividere le proprie chiavi pubbliche su canali non sicuri per consentire loro di crittografarsi a vicenda! Nel processo, non rivelano mai quale sia la loro chiave privata (numeri primi segreti), perché non devono mai inviare la loro chiave privata per decifrare i messaggi in primo luogo.

Ricorda: affinché la crittografia a chiave pubblica funzioni, il mittente e il destinatario hanno bisogno delle reciproche chiavi pubbliche.

Un altro modo in cui puoi pensarci: la chiave pubblica e la chiave privata vengono generate insieme, come un simbolo yin-yang. Sono intrecciati.

La chiave pubblica è ricercabile e condivisibile. Puoi distribuirlo a chiunque. Puoi pubblicarlo sui tuoi social media, se non ti dispiace che riveli l'esistenza del tuo indirizzo email. Puoi metterlo sul tuo sito personale. Puoi darlo via.

La chiave privata deve essere tenuta al sicuro e chiusa. Ne hai solo uno. Non vuoi perderlo, condividerlo o farne copie che possono fluttuare in giro, poiché rende più difficile mantenere privati ​​i tuoi messaggi privati.

Come funziona PGP

Vediamo come potrebbe funzionare la crittografia a chiave pubblica, sempre usando l'esempio di PGP. Supponiamo che tu voglia inviare un messaggio segreto ad Aarav:

  1. Aarav ha una chiave privata e, come un buon utente di crittografia a chiave pubblica , ha inserito la sua chiave pubblica connessa sulla sua pagina web ( HTTPS ).
  2. Scarichi la sua chiave pubblica.
  3. Cripti il ​​tuo messaggio segreto usando la chiave pubblica di Aarav e glielo invii.
  4. Solo Aarav può decodificare il tuo messaggio segreto perché è l'unico con la chiave privata corrispondente.

Pretty Good Privacy si occupa principalmente delle minuzie della creazione e dell'utilizzo di chiavi pubbliche e private. Puoi creare una coppia di chiavi pubblica/privata con essa, proteggere la chiave privata con una password e usarla insieme alla tua chiave pubblica per firmare e crittografare il testo.

Avatar

Se c'è una cosa che devi togliere da questa panoramica, è questa: tieni la tua chiave privata archiviata in un luogo sicuro e proteggila con una lunga passphrase .

Approfondisci l'uso della crittografia PGP a questo link:

Metadati: cosa non può fare la crittografia a chiave pubblica

La crittografia a chiave pubblica consiste nell'assicurarsi che il contenuto di un messaggio sia segreto, autentico e non manomesso. Ma questa non è l'unica preoccupazione per la privacy che potresti avere. Come abbiamo notato, le informazioni sui tuoi messaggi possono essere rivelatrici quanto il loro contenuto (vedi "metadati").

Se scambi messaggi crittografati con un dissidente noto nel tuo paese, potresti essere in pericolo semplicemente comunicando con loro, anche se quei messaggi non vengono decodificati. In alcuni paesi puoi rischiare la reclusione semplicemente per aver rifiutato di decodificare i messaggi crittografati.

Mascherare che stai comunicando con una persona in particolare è più difficile. Nell'esempio di PGP, un modo per farlo è utilizzare account di posta elettronica anonimi e accedervi utilizzando Tor. Se lo fai, PGP sarà comunque utile, sia per mantenere i tuoi messaggi di posta elettronica privati ​​dagli altri, sia per dimostrarci a vicenda che i messaggi non sono stati manomessi.

Ora che conosci la crittografia a chiave pubblica, prova a utilizzare uno strumento di crittografia end-to-end come Signal per iOS o Android.