condividendo si impara
Crittografia parte 2: la firma digitale
Come viene verificata l'identità del sistema con cui stiamo scambiando informazioni online e come sapere se queste informazioni sono state manipolate?
Nel precedente video avevamo incominciato a comprendere come la crittografia rende sicura la trasmissione di dati sensibili nell'ambito, per esempio dell'e-commerce o dell'e-banking.
In particolare avevamo approfondito la prima delle tre funzioni principali della crittografia a chiave asimmetrica: la trasmissione sicura dei dati attraverso un sistema di cifratura che ne impedisca la comprensione a chiunque intercetti la comunicazione senza possedere la chiave segreta di decifrazione.
Oggi vedremo come questo tipo di comunicazione ci possa anche permettere di verificare l'identità del mittente e l'integrità del messaggio ricevuto.
Sto comunicando con la persona giusta? Il messaggio che ho ricevuto è integro oppure è stato manipolato durante il percorso?
Per fare questo esistono alcuni sistemi di cifratura asimmetrica che permettono non solo, come visto sinora, di cifrare un contenuto attraverso una chiave pubblica e di decifrarlo attraverso esclusivamente la chiave privata ad essa associata, ma anche di fare l'operazione inversa: cioè di cifrare un messaggio attraverso una chiave privata e decifrarlo attraverso la chiave pubblica corrispondente.
In tutti e due i casi la chiave privata deve rimanere assolutamente segreta e conosciuta soltanto dal sistema che la possiede mentre la chiave pubblica è invece disponibile per chiunque.
In questo modo, se riesco a decifrare con successo un contenuto cifrato con la chiave privata del mio interlocutore usando la chiave pubblica da lui divulgata, ecco che saprò che quel messaggio proviene effettivamente dal suo sistema: l'unico in grado di cifrare correttamente il contenuto con la chiave segreta adatta.
Questo tipo di algoritmo costituisce quindi una vera e propria firma digitale.
Algoritmo di firma digitale e funzione di impronta (hash)
Ecco una breve descrizione semplificata del processo:
- il sistema del nostro utente prende il contenuto del messaggio e lo usa per fare un calcolo complesso impostato in maniera da dare un unico risultato possibile e univoco solo a quel contenuto: una sorta di impronta digitale del messaggio sotto forma di stringa di caratteri alfanumerici (funzione di hash).
- Questa impronta viene cifrata usando la chiave privata (segreta) dell'algoritmo di firma digitale.
- La chiave pubblica della firma digitale corrispondente alla chiave segreta viene divulgata
- Il messaggio nel suo complesso viene cifrato con la nostra chiave pubblica e ci viene inviato
- il nostro sistema decifra il messaggio con la nostra chiave privata, la sola in grado di farlo
- il nostro sistema usa la chiave pubblicamente disponibile dell'algoritmo di firma digitale dell'interlocutore per decifrare l'impronta del messaggio (cifrata con la sua chiave segreta)
- se la decifrazione ha successo, l'identità del sistema è confermata.
Per la conferma dell'integrità è necessaria una seconda operazione: occorre ricalcolare l'impronta sulla base del contenuto pervenutoci e confrontarla con quella fatta al momento dell'invio e conservata nella firma digitale.
Se il risultato non corrisponde significa che il contenuto stesso sulla base del quale è stato eseguito il calcolo è stato in qualche modo alterato durante il percorso.
Continua...
Rimangono ancora alcuni aspetti e concetti di base da esplorare per la nostra infarinatura nell'ambito della comunicazione sicura dei dati nel web moderno.
In un prossimo video cercheremo di capire come la crittografia a chiave segreta e quella a chiave pubblica possono essere combinate per permettere di risparmiare risorse di calcolo e avere migliori prestazioni pur mantenedo una sicurezza ottimale e come tutto ciò che abbiamo visto sinora sia garantito da un sistema di certificazione su cui si basa la fiducia che riponiamo nelle chiavi pubbliche.
Termineremo questa serie catturando e commentando i messaggi web che costituiscono una comunicazione sicura. Vedremo così nella pratica come si presenta tutto ciò su cui avremo riflettuto nei video precedenti.
Come contribuire allo sviluppo del nostro gruppo di studio
Se ritenete utile e interessante questo progetto potete contribuire al suo sviluppo e alla sua continuazione condividendo questo canale con chi pensate che possa essere interessato a fare questo percorso insieme a noi e imparare a creare siti web a partire da zero.
V'invito anche a valutare la possibilità di diventare finanziatori di questa spedizione nel mondo del web con un contributo a vostra scelta utilizzando gli strumenti offerti da Cam.TV, per esempio attraverso l'opzione sostieni sotto ai contenuti oppure nella pagina del canale.
Approfitto dell'occasione per ringraziare di cuore tutte le persone che hanno già contribuito!
Vi ringrazio per il tempo che avete passato con me e vi auguro un iper-buona vita online e offline!
E non dimentichiamoci che condividendo si impara!!
Linkoteca
Sito di FreeCodeCamp (il nostro quaderno degli esercizi)
Invito a "Siamo Iper!": il nostro canale Telegram per le chat vocali di gruppo
Lo scopo e la filosofia di Iper
Come si colloca ciò che impariamo nel più vasto mondo del web
Il browser va all'asilo. Che cos'è un linguaggio di markup
Il browser va a teatro: la struttura di base di una pagina web
Qualche strumento per trasformare il canale in un gruppo di studio interattivo
Esercizi pratici: le basi dell'HTML
HTML 5 e la struttura logica delle pagine web
HTML: impariamo ad aggiungere un'immagine a una pagina web
Facciamo insieme qualche esercizio su FreeCodeCamp (attenzione! spoiler soluzioni!)
Come funzionano i link: le ancore che ci collegano al web
HTML: come inserire delle liste nelle nostre pagine web
Quaderno degli esercizi HTML: link liste e inserimento dati
HTML: i tipi di visualizzazione predefiniti degli elementi
HTML: esercizi pratici con soluzioni (spoiler alert!!!)
Il protocollo HTTP: il browser va all'osteria
Introduzione ai formulari web
Input: un elemento fondamentale dei formulari web
Formulario web: costruiamo alcuni campi di input utente
Web form: terminiamo la carrellata degli elementi principali
Trattiamo con rispetto i dati dei nostri utenti
Mettiamo in partica i formulari
Tls: ricevere dati dai nostri utenti in maniera sicura
Crittografia: la scrittura nascosta (parte 1)