Cos'è la crittografia? In che modo gli algoritmi mantengono le informazioni segrete e al sicuro

Crittografia

 

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

 

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 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

È tutto molto astratto e un buon modo per comprendere le specifiche di ciò di cui stiamo parlando è guardare una delle prime forme conosciute di crittografia. È noto come il codice di Cesare, perché Giulio Cesare lo usava per la sua corrispondenza confidenziale ; come lo descrisse il suo biografo Svetonio, "se aveva qualcosa di confidenziale da dire, lo scriveva in cifratura, cioè cambiando così l'ordine delle lettere dell'alfabeto ... Se qualcuno desidera decifrarle, e arrivare al loro il che significa che deve sostituire la quarta lettera dell'alfabeto, vale a dire D, per 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 successiva 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 diventerebbe Mi, per esempio.

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 in cui, 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 Caesar, 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 Caesar è 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, per esempio. Ma la maggior parte della crittografia pre-moderna è incredibilmente semplice per gli standard moderni, 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, nel processo gettando alcune delle basi per i primi computer moderni . La crittografia è diventata radicalmente più complessa quando i computer sono diventati disponibili, ma è rimasta la provincia di spie e generali per molti altri decenni. Tuttavia, ciò 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 sono stati 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 dal National Bureau of Standards degli Stati Uniti come il primo Data Encryption Standard (DES). Quando Internet ha cominciato a crescere in importanza, era necessaria una crittografia più ampia e migliore, e oggi una parte significativa dei dati che volano in tutto il mondo viene crittografata utilizzando diverse tecniche che discuteremo più in dettaglio tra un momento.

A cosa serve la crittografia? 

Abbiamo già discusso alcune delle applicazioni specifiche della crittografia, dal mantenere segreti militari alla trasmissione sicura di dati finanziari su Internet. Nel quadro più ampio, tuttavia, ci sono alcuni ampi obiettivi di sicurezza informatica che utilizziamo la crittografia per aiutarci a raggiungere, come spiega il consulente di sicurezza informatica Gary Kessler . Utilizzando tecniche crittografiche, i professionisti della sicurezza possono:

  • Mantieni riservato il contenuto dei dati
  • Autentica 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 crittografandoli. Gli altri richiedono un po 'di spiegazione, che entreremo nel descrivere i diversi tipi di crittografia. 

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 hash. Ognuno ha il proprio ruolo da svolgere nel panorama crittografico.

Crittografia a chiave segretaIl codice Caesar di cui abbiamo discusso sopra è un ottimo esempio di crittografia a chiave segreta. Nell'esempio che abbiamo 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 scopo di crittografarlo. 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 vuoi entrare nella tua banca e parlare con il cassiere solo per sapere qual è la chiave privata per crittografare la tua comunicazione elettronica con la banca - questo sconfiggerebbe il 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 è pubblico e viene inviato a chiunque desideri comunicare con la parte. Questa è la chiave utilizzata per crittografare i messaggi. Ma l'altra chiave è privata, condivisa con nessuno, ed è necessario decrittografare quei messaggi. Per usare una metafora: pensa alla chiave pubblica come all'apertura di una fessura su una cassetta postale larga quanto basta per inserire una lettera. Dai queste dimensioni a chiunque pensi possa inviarti una lettera. La chiave privata è ciò che usi per aprire la cassetta postale in modo da poter estrarre le lettere.

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 Caesar. L' Infosec Institute ha un'immersione profonda se sei interessato . 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 PKI. PKI 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 che hai crittografato il tuo testo in chiaro, non puoi più recuperarlo dal testo cifrato risultante (indicato come 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 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 transito.

L'hashing viene utilizzato anche per garantire la riservatezza delle password . Memorizzare le password come testo in chiaro è un grande no-no per la sicurezza perché ciò rende gli utenti inclini a furti di account e identità a seguito di violazioni dei dati (che purtroppo non impedisce ai grandi giocatori di farlo ). Se 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 si ha 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 questo articolo; abbiamo incluso dei collegamenti qui dove puoi saperne di più su alcuni degli esempi più comunemente usati.

Crittografia a chiave segreta

  • Triple DES , il moderno successore di DES discusso sopra
  • Advanced Encryption Standard (AES)
  • Blowfish e il suo successore Twofish , entrambi della leggenda della sicurezza Bruce Schneier

Crittografia a chiave pubblica

  • RSA
  • ElGamal
  • Scambio di chiavi Diffie-Hellman

Cerca nel sito

Abbiamo 251 visitatori e nessun utente online