Chiavi pubbliche, chiavi private e funzioni hash rendono possibile un Internet sicuro.

crittografia

Definizione di crittografia

La crittografia è la scienza per proteggere le informazioni trasformandole in forme che i destinatari involontari non sono in grado di comprendere. In crittografia, un messaggio originale leggibile dall'uomo, denominato testo in chiaro, viene modificato per mezzo di un algoritmo, o di una serie di operazioni matematiche, in qualcosa che a un osservatore non informato sembrerebbe senza senso; questo testo incomprensibile è chiamato testo cifrato .

I sistemi crittografici richiedono un metodo affinché il destinatario previsto sia in grado di utilizzare il messaggio crittografato, di solito, anche se non sempre, trasformando il testo cifrato in testo normale.

Crittografia vs crittografia

La crittografia è ciò che chiamiamo il processo di trasformazione del testo in chiaro in testo cifrato. (La crittografia può farti pensare alle tombe, ma deriva da una parola greca che significa "nascosto" o "segreto".) La crittografia è una parte importante della crittografia, ma non comprende l'intera scienza. Il suo opposto è la decrittazione.

Un aspetto importante del processo di crittografia è che quasi sempre coinvolge sia un algoritmo che una chiave. Una chiave è solo un'altra informazione, quasi sempre un numero, che specifica come l'algoritmo viene applicato al testo in chiaro per crittografarlo. Anche se conosci il metodo con cui alcuni messaggi vengono crittografati, è difficile o impossibile decrittografarli senza quella chiave.

Storia della crittografia

Enigma

È tutto molto astratto e un buon modo per capire le specifiche di ciò di cui stiamo parlando è guardare una delle prime forme conosciute di crittografia. È noto come cifrario di Cesare, perché Giulio Cesare lo usava per la sua corrispondenza confidenzialecome lo descrisse il suo biografo Svetonio, "se aveva qualcosa di confidenziale da dire, lo scriveva cifrandolo, cioè cambiando l'ordine delle lettere dell'alfabeto... Se qualcuno avesse voluto decifrarle, e arrivare al significato del testo, avrebbe dovuto sostituire, per esempio, la quarta lettera dell'alfabeto ossia la D, per la A, e così con le altre. "

La descrizione di Svetonio può essere suddivisa nei due elementi crittografici che abbiamo discusso, l'algoritmo e la chiave. L'algoritmo qui è semplice: ogni lettera è sostituita da un'altra lettera più avanti nell'alfabeto. La chiave è il numero di  lettere successive nell'alfabeto che devi inserire per creare il tuo testo cifrato. Sono tre nella versione della cifra descritta da Svetonio, ma ovviamente sono possibili altre variazioni - con una chiave di quattro, la A per esempio diventerebbe E.

Alcune cose dovrebbero essere chiare da questo esempio. La crittografia come questa offre un modo abbastanza semplice per inviare segretamente qualsiasi messaggio che ti piace. Confrontalo con un sistema di frasi in codice dove, ad esempio, "Ordiniamo la pizza" significa "Sto per invadere la Gallia". Per tradurre quel tipo di codice, le persone alle due estremità della catena di comunicazione avrebbero bisogno di un libro di frasi in codice e non avresti modo di codificare nuove frasi a cui non avevi pensato in anticipo. Con il codice Cesare, puoi crittografare qualsiasi messaggio ti venga in mente. La parte difficile è che tutti coloro che comunicano devono conoscere l'algoritmo e la chiave in anticipo, sebbene sia molto più facile trasmettere e conservare quelle informazioni in modo sicuro rispetto a un libro di codici complesso.

 

Il codice di Cesare è quello che è noto come cifrario di sostituzione, perché ogni lettera viene sostituita con un'altra; altre variazioni su questo, quindi, sostituirebbero i blocchi di lettere o le parole intere. Per la maggior parte della storia, la crittografia consisteva in vari cifrari sostitutivi impiegati per mantenere sicure le comunicazioni governative e militari. I matematici arabi medievali hanno spinto la scienza in avanti, in particolare l'arte della decrittazione: una volta che i ricercatori si sono resi conto che certe lettere in una data lingua sono più comuni di altre, diventa più facile riconoscere i modelli. Ma la maggior parte della crittografia pre-moderna è incredibilmente semplice per gli standard attuali per l'ovvia ragione che, prima dell'avvento dei computer, era difficile eseguire trasformazioni matematiche abbastanza rapidamente da rendere utile la crittografia o la decrittografia.

In effetti, lo sviluppo dei computer e i progressi della crittografia sono andati di pari passo. Charles Babbage, la cui idea per il Difference Engine presagiva i computer moderni, era anche interessato alla crittografia . Durante la seconda guerra mondiale, i tedeschi usarono la macchina elettromeccanica Enigma per crittografare i messaggi e, notoriamente, Alan Turing guidò un team in Gran Bretagna che sviluppò una macchina simile per rompere il codice, gettando alcune delle basi per i primi computer moderni. La crittografia è diventata radicalmente più complessa man mano che i computer sono diventati disponibili, ma è rimasta un'esclusiva di spie e generali per molti altri decenni. Tuttavia, la storia iniziò a cambiare negli anni '60.

Crittografia nella sicurezza della rete

È stata la formazione delle prime reti di computer a far riflettere i civili sull'importanza della crittografia. I computer parlavano tra loro sulla rete aperta, non solo tramite connessioni dirette tra loro; quel tipo di rete è stato trasformativo in molti modi fantastici, ma ha anche reso banalmente facile spiare i dati che viaggiano attraverso la rete. E poiché i servizi finanziari erano uno dei primi casi d'uso per la comunicazione con il computer, era necessario trovare un modo per mantenere segrete le informazioni.

IBM ha aperto la strada alla fine degli anni '60 con un metodo di crittografia noto come "Lucifer" , che alla fine è stato codificato dall'US National Bureau of Standards come il primo Data Encryption Standard (DES). Quando Internet ha cominciato a crescere in importanza, era necessaria una crittografia più ampia e più efficace, e oggi una parte significativa dei dati che "girano" in tutto il mondo viene crittografata utilizzando diverse tecniche che discuteremo più in dettaglio tra un momento.

A cosa serve la crittografia? 

tecniche crittografia

Abbiamo già discusso alcune delle applicazioni specifiche della crittografia, dal mantenere segreti militari alla trasmissione sicura di dati finanziari su Internet.  Utilizzando tecniche crittografiche, i professionisti della sicurezza possono:

  • Mantenere riservato il contenuto dei dati
  • Autenticare l'identità del mittente e del destinatario di un messaggio
  • Garantire l' integrità dei dati, dimostrando che non sono stati alterati
  • Dimostrare che il presunto mittente ha realmente inviato questo messaggio, un principio noto come non ripudio

Potreste riconoscere alcuni di questi principi dalle variazioni della triade della CIA . Il primo di questi usi è ovvio: puoi mantenere segreti i dati crittografandoliGli altri richiedono un po 'di spiegazione, che farò più avanti. 

Tipi di crittografia

Esistono numerosi algoritmi crittografici in uso, ma in generale possono essere suddivisi in tre categorie: crittografia a chiave segreta, crittografia a chiave pubblica e funzioni hashOgnuno ha il proprio ruolo da svolgere nel panorama crittografico.

Crittografia a chiave segretaIl codice di Cesare di cui ho discusso sopra è un ottimo esempio di crittografia a chiave segreta. Nell'esempio che ho usato, se i messaggi crittografati venissero scambiati tra Cesare e uno dei suoi centurioni, entrambe le parti dovrebbero conoscere la chiave - in questo caso, quante lettere avanti o indietro nell'alfabeto devi spostare per trasformare il testo in chiaro in testo cifrato o viceversa. Ma la chiave deve rimanere un segreto tra loro due. Non è possibile inviare la chiave insieme al messaggio, ad esempio, perché se entrambi cadessero nelle mani dei nemici, il messaggio sarebbe facile da decifrare, vanificando in primo luogo l'intero processo di cifrazione. Cesare e il suo centurione dovrebbero presumibilmente discutere la chiave quando si vedono di persona, anche se ovviamente questo non è l'ideale quando le guerre vengono combattute su lunghe distanze.

La crittografia a chiave segreta, a volte chiamata anche chiave simmetrica, è ampiamente utilizzata per mantenere la riservatezza dei dati. Può essere molto utile, ad esempio, per mantenere privato un disco rigido locale; poiché lo stesso utente generalmente crittografa e decrittografa i dati protetti, la condivisione della chiave segreta non è un problema. La crittografia a chiave segreta può essere utilizzata anche per mantenere riservati i messaggi trasmessi su Internet; tuttavia, per far sì che ciò accada, è necessario distribuire la nostra prossima forma di crittografia insieme ad essa.

Crittografia a chiave pubblicaCesare potrebbe essere stato in grado di conferire di persona con i suoi centurioni, ma non puoi entrare nella tua banca e parlare con il cassiere solo per sapere qual è la chiave privata per crittografare la tua comunicazione elettronica con la stessa - questo sconfiggerebbe lo scopo dell'online banking. In generale, per funzionare in modo sicuro, Internet ha bisogno di un modo per comunicare con le parti per stabilire un canale di comunicazione sicuro mentre comunicano tra loro solo attraverso una rete intrinsecamente insicura. Il modo in cui funziona è tramite crittografia a chiave pubblica.

Nella crittografia a chiave pubblica, a volte chiamata anche chiave asimmetrica , ogni partecipante ha due chiavi. Uno è pubblica e viene inviata a chiunque desideri comunicare con la parte. Questa è la chiave utilizzata per crittografare i messaggi. Ma l'altra chiave è privata, non condivisa con nessuno, ed è necessaria per decrittografare quei messaggi. 

La matematica di come utilizzare una chiave per crittografare un messaggio e un'altra per decrittografarlo è molto meno intuitiva rispetto al modo in cui funziona la chiave del codice di Cesare.  Il principio fondamentale che fa funzionare il processo è che le due chiavi sono effettivamente correlate tra loro matematicamente in modo tale che sia facile derivare la chiave pubblica dalla chiave privata ma non viceversa. Ad esempio, la chiave privata potrebbe essere due numeri primi molto grandi, che moltiplicheresti insieme per ottenere la chiave pubblica.

 

I calcoli necessari per la crittografia a chiave pubblica sono molto più complessi e ad alta intensità di risorse rispetto a quelli dietro l'infrastruttura a chiave segreta. Fortunatamente, non è necessario utilizzarlo per proteggere tutti i messaggi che invii online. Invece, ciò che di solito accade è che una parte utilizzerà la crittografia a chiave pubblica per crittografare un messaggio contenente ancora un'altra chiave crittografica. Questa chiave, essendo stata trasmessa in modo sicuro attraverso Internet non sicuro, diventerà quindi la chiave privata che codifica una sessione di comunicazione molto più lunga crittografata tramite crittografia a chiave segreta.

In questo modo, la crittografia a chiave pubblica aiuta la causa della riservatezza. Ma queste chiavi pubbliche sono anche parte di un insieme più ampio di funzioni note come infrastruttura a chiave pubblica , o PKIPKI fornisce modi per essere sicuri che una determinata chiave pubblica sia associata a una persona o istituzione specifica. Un messaggio crittografato con una chiave pubblica conferma così l'identità del mittente, stabilendo autenticazione e non ripudio.

Funzioni hashGli algoritmi crittografici a chiave pubblica e privata implicano entrambi la trasformazione di testo in chiaro in testo cifrato e quindi di nuovo in testo in chiaro. Al contrario, una funzione hash è un algoritmo di crittografia unidirezionale: una volta crittografato il testo in chiaro, non è più possibile recuperarlo dal testo cifrato risultante (denominato hash ).

Questo potrebbe far sembrare le funzioni di hash un esercizio in qualche modo inutile. Ma la chiave della loro utilità è che, per una data funzione hash, non ci sono due testi in chiaro che produrranno lo stesso hash. (Matematicamente, questo non è del tutto corretto, ma per qualsiasi funzione hash effettivamente in uso, le probabilità che accada sono generalmente incredibilmente piccole e possono essere tranquillamente ignorate.)

Ciò rende gli algoritmi di hashing un ottimo strumento per garantire l'integrità dei dati. Ad esempio, un messaggio può essere inviato insieme al proprio hash. Dopo aver ricevuto il messaggio, è possibile eseguire lo stesso algoritmo di hashing sul testo del messaggio; se l'hash prodotto è diverso da quello che accompagna il messaggio, sai che il messaggio è stato modificato in durante il percorso.

L'hashing viene utilizzato anche per garantire la riservatezza delle password . Memorizzare le password come testo normale è un grande errore per la sicurezza perché ciò rende gli utenti esposti al furto di account e identità a seguito di violazioni dei datiSe invece archivi una versione con hash della password di un utente, gli hacker non saranno in grado di decrittografarla e usarla altrove anche se riescono a violare le tue difese. Quando un utente legittimo accede con la propria password, è possibile eseguirne semplicemente l'hashing e confrontarlo con l'hash che hai in archivio.

Esempi e tecniche di crittografia

Esistono numerose tecniche e algoritmi che implementano ciascuno dei tre tipi di crittografia discussi sopra. Sono generalmente piuttosto complessi e oltre lo scopo di queste righe, verrà trattato quindi nel successivo articolo.

se ti è piaciuto questo articolo, condividilo