Visualizzazione post con etichetta chiave. Mostra tutti i post
Visualizzazione post con etichetta chiave. Mostra tutti i post

lunedì 30 luglio 2018

Aiuto, non ci sono più siti sicuri!

Pochi giorni fa è stata rilasciata la versione del browser Chrome che implementa la già annunciata funzionalità di segnalazione per i siti che non usano HTTPS.
Sul web molti siti specializzati (un esempio) ne hanno parlato, ma omettendo le informazioni basilari, per aiutare a capire l'importanza di questa scelta: ci provo io.

HTTP e HTTPS
HTTP (HyperText Transfer Protocol) è il protocollo di comunicazione su cui si basa il web, ossia internet come è conosciuta da tutti: i siti "parlano" con i browser utilizzando HTTP come linguaggio. HTTP è bidirezionale, nel senso che permette di inviare dati anche dal browser al server: funzionalità che viene usata per inviare i nostri parametri al server in modo da ottenere una risposta personalizzata.
HTTPS è la versione sicura, cioè crittografata, di HTTP. Il che vuol dire che HTTP invia i dati, in entrambe le direzioni, in chiaro, quindi facilmente leggibili (credetemi, l'intercettazione delle comunicazioni è banale).

La Crittografia di HTTPS
La crittografia trasforma un dato comprensibile in uno incomprensibile, tramite complesse funzioni matematiche. Mentre le funzioni sono sempre le stesse, ciò che rende unica ogni trasformazione è l'utilizzo di un altro dato, detto chiave, unico. Con la chiave si effettua sia la cifratura che la decifratura, il che vuol dire che la chiave deve essere conosciuta sia dal mittente che dal ricevente una comunicazione, e da nessun altro, altrimenti chiunque è in grado di decifrare la comunicazione. Questa modalità è scomoda perché mittente e destinatario devono scambiarsi la chiave in modo sicuro, e soprattutto ogni coppia mittente-destinatario deve avere chiavi diverse.
Per fortuna esistono metodi di cifratura con 2 chiavi diverse (ma correlate l'una all'altra): una deve essere tenuta segreta e l'altra può essere liberamente divulgata, semplicemente perché la cifratura avviene con una chiave e la decifratura con l'altra. Ebbene, HTTPS usa questa modalità: il server ha la chiave privata, ed il browser ha la chiave pubblica, che si scarica prima di iniziare a comunicare.


Riservatezza
Il difetto della chiave pubblica è che è, appunto, uguale per tutti, per cui chiunque sarebbe in grado di decifrare le comunicazioni provenienti dal servizio: per renderla univoca, si aggiunge un codice di sessione (creato alla prima comunicazione tra il server ed ogni singolo browser); in questa maniera, HTTPS è in grado di scambiare dati mantenendo la riservatezza degli stessi.

Autenticazione
Il fatto che il servizio possegga una chiave unica, creata appositamente e tenuta segreta comporta una seconda caratteristica: la corrispondente chiave pubblica funziona solo e esclusivamente con quel servizio, per cui il browser è sicuro di comunicare proprio con quel servizio e con nessun altro: potrei quindi autenticare il servizio.
Purtroppo, poiché la chiave pubblica è fornita dal servizio stesso, a meno di non fidarsi ciecamente, non possiamo essere sicuri che il servizio sia effettivamente quello che dichiara di essere. Per cui la vera autenticazione di un servizio ha bisogno di un ulteriore passaggio: la chiave pubblica, prima di essere utilizzata, viene a sua volta autenticata (e firmata digitalmente) da una entità terza, che effettua dei controlli per verificare che il servizio (in realtà, il proprietario, azienda o persona che sia) sia realmente chi dichiara di essere.

Siti sicuri e non sicuri
Il browser è in grado di riconoscere la firma digitale della chiave pubblica: quindi, se riconosce la firma come valida, e la chiave pubblica funziona rispetto al servizio (e quindi alla sua chiave privata), si è certi che stia parlando proprio col servizio (sito) giusto, quindi sicuro. In tutti gli altri casi, è considerato non sicuro.
Quindi i fornitori di siti hanno tutti gli interessi a farsi considerare sicuri, per le ragioni suddette: per un discorso di reputazione possono voler essere riconosciuti con certezza (es. un giornale online); per un discorso di segretezza delle informazioni (es. tutti i casi in cui si usano password); per entrambe (es. banca online).

Altre considerazioni
Tutto a posto? Ovviamente no. Ecco alcune questioni a cui fare attenzione.
  • Un sito non sicuro può non essere un problema: dipende dalla criticità delle informazioni che tratta.
  • Le chiavi possono avere una scadenza: se non vengono rinnovate in tempo, il sito può improvvisamente essere considerato non sicuro, pur essendolo fino a poco prima. La comunicazione rimane cifrata, ma non si può più fare completo affidamento sull'identità del servizio.
  • I criminali informatici cercano continuamente metodi per ingannarci e farci considerare come sicuro un sito che non lo è. Un metodo divertente ed esemplificativo è questo. Inoltre, l'iconcina del lucchetto non è sufficiente perché banalmente falsificabile.
  • La segnalazione di sito sicuro può essere assolutamente valida anche per siti con nomi simili a quelli più famosi: quindi, sempre occhio al nome del servizio nella barra degli indirizzi! Se notate qualcosa di strano, verificate che il proprietario del sito sia chi vi aspettate, e non qualcun altro.
  • Tutti i metodi crittografici sono comunque vulnerabili al cosiddetto attacco a forza bruta, ossia cercare di trovare le chiavi semplicemente provando tutte le combinazioni possibili; per questo motivo la lunghezza della chiave è un fattore determinante (all'aumentare della lunghezza, il numero di tentativi aumenta in maniera esponenziale).
  • Una pagina web può essere composta di parti diverse, che possono provenire da siti differenti (questo post ne è un esempio); ognuna di queste parti può utilizzare HTTPS oppure HTTP semplice, per cui la sicurezza complessiva potrebbe essere compromessa. In realtà i browser segnalano anche questa situazione (in particolare, pagine miste HTTP e HTTPS sono viste con sospetto).

Quindi: bisogna (tanto per cambiare) usare la testa. Mai e poi mai accedere al proprio conto corrente online (è solo un esempio) senza l'indicazione di sito sicuro; negli altri casi, cliccando sull'indicazione, è possibile avere i dettagli della segnalazione, e sulla base di quella decidere se andare avanti o no; e comunque si può considerare la reputazione di un sito anche sulla base dell'utilizzo e della relativa manutenzione dei certificati necessari all'HTTPS.
Anche gli altri browser permettono di fare le stesse verifiche, semplicemente (al momento) non danno l'indicazione nella stessa maniera come ora ha introdotto Chrome. Quest'ultimo ha "solo" fatto la scelta di spingere l'adozione di HTTPS anche nei casi in cui finora non se ne era sentita la necessità.

sabato 16 settembre 2017

Proteggiamo i nostri dati: la cifratura

Ogni storia di spionaggio che si rispetti prevede che i protagonisti si scambino messaggi attraverso codici, intellegibili solo agli interessati. Il caso più famoso, anche perché venuto alla ribalta in tempi relativamente recenti, riguarda Enigma, cioè la macchina utilizzata dalla marina militare tedesca durante la seconda guerra mondiale, e lo sforzo intellettuale e tecnico degli inglesi per decifrare i messaggi.

Forse non tutti sanno che il risultato di questo sforzo fu quello che viene considerato il primo computer della storia. Dal che si deduce che il computer è nato proprio per questa funzione: cifrare e decifrare.

Mantenere segrete informazioni era una volta prerogativa delle questioni militari e politiche ; poi sono arrivate le questioni economiche; ed ai tempi di internet la cosa può, anzi deve, riguardare tutti noi (inclusa, ahimé, la questione dei ransomware!). In definitiva, tutto si riduce a questo: un soggetto interessato a sapere cosa fa un altro soggetto, perché sapendolo ne ricava un qualche vantaggio. Concentrandosi solo sul caso di noi utenti digitali, il soggetto interessato è chiunque voglia utilizzare i nostri dati personali a fini commerciali: lo abbiamo ribadito più volte. Le leggi sulla privacy ci tutelano solo fino ad un certo punto (per usare un eufemismo...), e comunque per usufruire dei servizi internet, siamo costretti a fornire tutta una serie di dati (di cui al 90% non siamo nemmeno consapevoli); ma tutto ciò è inevitabile. Tuttavia ci sono altri dati che non siamo costretti a divulgare (per fortuna), e che dall'altra parte sono oggetto della infinita "curiosità" della rete. Qualche esempio? Gli estratti conto del nostro conto corrente bancario (che contengono dati sensibilissimi: il nostro saldo, o al contrario il nostro debito; l'ammontare delle nostre entrate e la distribuzione delle nostre uscite). Oppure le nostre foto private (che nel caso delle celebrità, finiscono immancabilmente per essere pubblicate). Ma per tutti questi casi, basta ricorrere alla cifratura "fai da te".

Cifrare i propri file non è operazione difficile: esistono diversi modi e molti programmi a disposizione tra cui scegliere. Però è necessario capire bene alcuni concetti fondamentali.
  1. Il dato cifrato è illeggibile a chiunque, compreso il proprietario del dato.
  2. La cifratura però è reversibile, cioè dal dato cifrato si può tornare all'originale.
  3. Perché la reversibilità sia possibile solo al legittimo proprietario del dato, si deve utilizzare una chiave che per definizione deve essere in possesso solo del proprietario.

In pratica: qualsiasi metodo utilizziamo per cifrare i nostri dati, dobbiamo scegliere una chiave che sia conosciuta esclusivamente da noi. Questo perché chiunque sia in possesso di quella chiave, è in grado di decifrare i dati. Normalmente la chiave è una parola (cioè una password), ma in realtà può anche essere il contenuto di un file. Badate bene: in quest'ultimo caso, il file può anche essere pubblico; ma poiché al mondo esistono miliardi di miliardi di file diversi, la vera informazione da tenere riservata è quale sia questo file. Va da sé che perdere o anche solo modificare il file comporta l'impossibilità di decifrare i dati...

I programmi di cifratura usano 2 modalità principali: o cifrano il singolo file (il che corrisponde anche a poter differenziare la chiave per ogni file da cifrare), oppure fare un unico contenitore dove mettere tutti i file che vogliamo (in questo caso basta una sola chiave). Personalmente preferisco la seconda modalità.

Qualcuno potrebbe chiedersi (o chiedermi): ma a che scopo tutta 'sta fatica? Beh, l'utilizzo principale che io vedo è quello di poter utilizzare con tranquillità i servizi cloud: anche se qualcuno riuscisse a evitare tutti i controlli ed ad accedere alla mia area privata (ricordate che il cloud altro non è che il computer di qualcun altro), dovrebbe ancora trovare il modo di decifrare i dati. Oppure, in caso di computer condiviso, si evita di lasciare leggibili i nostri dati a tutti gli altri utilizzatori. Non serve essere spie o malviventi per proteggere i nostri dati!