Simmetrico, asimmetrico, hash e altro ancora…

La crittografia è una tecnica per proteggere le informazioni e le comunicazioni utilizzando una serie di calcoli basati su regole chiamati algoritmi e alcuni concetti matematici in modo che solo la persona giusta possa comprenderli.

È utile per impedire l’accesso non autorizzato alle informazioni.

La parola “crittografia” deriva dalla parola greca kryptos, che significa nascosto. La parola “cripto” significa “nascosto” e “grafia” significa “scrittura”.

In questo articolo tratterò le basi dei principi della crittografia, esplorerò vari tipi con esempi, discuterò le sfide e guarderò avanti alle tendenze future. Il mio obiettivo è fornire una panoramica completa, che copra sia i concetti maggiori che quelli minori.

La crittografia protegge le comunicazioni e le informazioni digitali in vari sistemi e applicazioni, garantendo riservatezza e sicurezza dei dati. Protegge i dati da accessi non autorizzati.

Vediamo cosa succede in crittografia:

  • Il processo inizia con il mittente che ha un messaggio o dati da inviare.
  • Il testo in chiaro (messaggio originale) viene quindi convertito in un formato illeggibile utilizzando un metodo chiamato crittografia.
  • Il destinatario utilizza una chiave per riconvertire il testo cifrato (formato illeggibile) in un formato leggibile, un processo noto come decrittografia.
  • Il messaggio decriptato è nuovamente in testo normale ed è uguale al messaggio originale inviato dal mittente.
  • Il destinatario ora ha il messaggio originale.
  • Ora esploriamo i principi fondamentali della crittografia.

    Principi di base della crittografia

    I principi fondamentali della crittografia sono quattro:

    #1. Riservatezza: solo il destinatario previsto può accedere alle informazioni; rimane privato per gli altri.

    #2. Integrità: le informazioni non possono essere modificate durante l’archiviazione o la trasmissione senza che vengano rilevate eventuali modifiche.

    #3. Non ripudio: il mittente non può negare di aver inviato le informazioni in un secondo momento.

    #4. Autenticazione: conferma l’identità sia del mittente che del destinatario e verifica la fonte e la destinazione delle informazioni.

    Prima di continuare, esaminiamo alcuni vocaboli di base.

    Glossario:

    ParolaSignificatoCrittografiaÈ una tecnica per proteggere informazioni e comunicazioni utilizzando una serie di calcoli basati su regole chiamati algoritmi e alcuni concetti matematici in modo che solo la persona giusta possa capirli.CifraUna cifratura è un metodo o algoritmo utilizzato per crittografare e decrittografare i datiCrittografiaIl processo di conversione del testo in chiaro in testo cifratoTesto sempliceForma originale e non crittografata di dati o testoTesto cifratoDati crittografati (una forma codificata dei dati) o testoDecrittografiaIl processo inverso di riconversione del testo cifrato in testo normale utilizzando la chiave di decrittografiaChiaveUna chiave è un’informazione, in genere una sequenza di bit, utilizzata per controllare il processo di crittografia e decrittografia.Scambio di chiaviIl trasferimento sicuro di chiavi di crittografia tra mittente e destinatario.Glossario di crittografia

    Esistono tre tipi fondamentali di crittografia:

  • Crittografia a chiave simmetrica
  • Crittografia a chiave asimmetrica
  • Funzione hash
  • Crittografia a chiave simmetrica

    La crittografia a chiave simmetrica, detta anche crittografia a chiave singola, è una tecnica di crittografia che si basa su un’unica chiave segreta sia per crittografare che per decrittografare i dati.

    In questo metodo, sia il mittente che il destinatario devono utilizzare esattamente la stessa chiave segreta per comprendere i dati. Funziona modificando i dati normali in codice segreto (testo cifrato) utilizzando la chiave segreta e uno specifico processo matematico.

    Quando il destinatario, che conosce anche la chiave segreta, riceve il messaggio in codice segreto, può utilizzare lo stesso processo matematico per trasformarlo nuovamente in dati normali. In questo modo il ricevente ottiene l’informazione originale dal codice segreto.

    Crittografia simmetrica

    Comprendiamo il processo attraverso i seguenti passaggi:

    • L’algoritmo converte il testo originale (testo in chiaro) in testo cifrato utilizzando una chiave segreta.
    • Quindi, il mittente invia il testo cifrato al destinatario attraverso il canale di comunicazione. Questo canale di comunicazione può essere privato o pubblico.
    • I destinatari utilizzano la stessa chiave segreta per decrittografare il testo cifrato e convertirlo nel testo originale.

    Questo processo di crittografia simmetrica garantisce che la comunicazione tra mittente e destinatario rimanga sicura. Ma la chiave segreta deve essere riservata.

    Per mantenere la riservatezza e l’integrità, entrambe le parti devono gestire e proteggere in modo sicuro questa chiave segreta.

    Esistono due tipi di cifrari di crittografia simmetrici:

  • Cifrazione a flusso
  • Cifratura a blocchi
  • Stream CipherBlock CipherCodifica i dati in blocchi di lunghezza fissaMentre i dati vengono crittografati, il sistema li conserva in memoria, in attesa che i blocchi completi siano pronti per l’elaborazioneCrittografa i dati un bit o byte alla voltaCrittografa i dati in blocchi di lunghezza fissaUtilizza 8 bit della chiaveUtilizza 64 bit o più di 64 bit della chiavePiù complesso della cifratura a blocchiPiù semplice della cifratura a flussoCrittografa i dati in blocchi di lunghezza fissaLento e adatto per applicazioni offlineUtilizza le modalità CFB e OFBUtilizza le modalità ECB e CBC.Cifratura a flusso vs cifratura a blocchi

    Alcuni esempi di algoritmi di crittografia simmetrica includono:

    • AES (Advanced Encryption Standard): è noto per la sua sicurezza ed efficienza. Viene comunemente utilizzato per proteggere dati sensibili come sicurezza wireless, cloud computing, servizi bancari ed e-commerce.
    • DES (Data Encryption Standard): è un vecchio metodo di crittografia che è stato sostituito da AES e 3DES. Utilizza una chiave a 56 bit.
    • IDEA (International Data Encryption Algorithm): utilizza una chiave a 128 bit e viene utilizzato in varie applicazioni.
    • Blowfish: algoritmo progettato come sostituto immediato di DES o IDEA.
    • RC4 (Rivest Cipher 4): sviluppato da Ron Rivest. È noto per la sua semplicità e velocità, ma presenta alcuni problemi di sicurezza in alcune implementazioni.
    • RC5 (Rivest Cipher 5): è progettato per essere efficiente e sicuro, con dimensioni del blocco e della chiave variabili.
    • RC6 (Rivest Cipher 6): è progettato per fornire sicurezza e prestazioni migliorate rispetto alle versioni precedenti.

    AES, DES, IDEA, Blowfish, RC5 e RC6 sono cifrari a blocchi.

    RC4 è un cifrario a flusso.

    Vantaggi della crittografia a chiave simmetrica

    • È più veloce ed efficiente della crittografia asimmetrica
    • La dimensione della chiave è piccola, il che consente la generazione di codici più potenti.
    • È relativamente conveniente produrre chiavi forti per i codici.
    • AES è uno degli algoritmi sicuri.

    Svantaggi della crittografia a chiave simmetrica

    • La condivisione sicura delle chiavi di crittografia con tutte le parti che necessitano di comunicare in modo sicuro rappresenta una delle sfide principali della crittografia simmetrica.
    • La sicurezza dell’intero sistema può essere violata se la chiave viene intercettata o compromessa da un utente malintenzionato durante la trasmissione.
    • I sistemi di crittografia simmetrica richiedono attente pratiche di gestione delle chiavi. Ciò include la generazione, l’archiviazione, l’aggiornamento e la revoca delle chiavi. La cattiva gestione delle chiavi può portare a violazioni della sicurezza.
    • Gli aggressori possono intercettare le chiavi scambiate su un canale non sicuro, compromettendo la comunicazione.

    Tuttavia, la crittografia simmetrica è una parte essenziale della crittografia moderna ed è ampiamente utilizzata in molte applicazioni, nonostante i suoi inconvenienti.

    Solide pratiche di gestione delle chiavi e metodi sicuri di scambio delle chiavi possono aiutare a superare alcune delle sfide della crittografia simmetrica.

    Crittografia a chiave asimmetrica

    La crittografia asimmetrica utilizza coppie di chiavi: una privata mantenuta segreta e una pubblica condivisa apertamente. Puoi utilizzare la chiave pubblica di qualcuno per crittografare un messaggio e solo lui potrà decrittografarlo con la sua chiave privata.

    Questo metodo aumenta la sicurezza digitale consentendo comunicazioni sicure senza condividere chiavi segrete, che è fondamentale nel nostro mondo online.

    Ciò è utile per comunicazioni sicure, poiché i destinatari necessitano solo della tua chiave pubblica. Elimina il rischio di condividere una chiave simmetrica segreta.

    Questi “algoritmi a chiave pubblica” utilizzano una coppia di chiavi per proteggere i dati.

    Ecco una ripartizione più semplice:

    Crittografia simmetrica e asimmetrica

    • Ci sono due chiavi. Una chiave pubblica, a cui tutti possono accedere, e una chiave privata, che viene mantenuta segreta.
    • La chiave pubblica viene utilizzata per crittografare o bloccare i dati.
    • La chiave privata viene utilizzata per decrittografare o sbloccare i dati.

    È importante capire che non è possibile distinguere la chiave privata dalla chiave pubblica. Inoltre, le chiavi pubbliche sono solitamente collegate alle identità da organizzazioni note come autorità di certificazione.

    Comunicazione sicura Il mittente e il destinatario hanno scambiato un messaggio sicuro senza compromettere le loro chiavi private.

    Questi algoritmi si basano su problemi matematici come la fattorizzazione di numeri interi e logaritmi discreti per creare firme digitali e stabilire/distribuire chiavi di sessione, come nel protocollo TLS.

    Alcuni esempi di algoritmi di crittografia asimmetrica includono:

    • RSA (Rivest-Shamir-Adleman): RSA è uno degli algoritmi di crittografia asimmetrica più utilizzati. Si basa sulle proprietà matematiche dei grandi numeri primi ed è comunemente utilizzato per lo scambio sicuro di chiavi e le firme digitali.
    • Crittografia a curva ellittica (ECC): si basa sulla struttura algebrica delle curve ellittiche su campi finiti. ECC offre il vantaggio di chiavi di dimensioni più piccole rispetto alla crittografia non EC che si basa su semplici campi Galois. L’ECC viene utilizzato principalmente per generare numeri pseudo-casuali e firme digitali.
    • Diffie-Hellman Key Exchange: questo algoritmo viene utilizzato per lo scambio sicuro di chiavi. Una chiave creata utilizzando questo metodo può essere utilizzata per la crittografia con un algoritmo simmetrico. L’obiettivo principale di Diffie-Hellman è consentire a due parti di creare una chiave segreta condivisa su un canale di comunicazione non sicuro.

    Vantaggi della crittografia asimmetrica

    • La crittografia asimmetrica fornisce una sicurezza maggiore rispetto alla crittografia simmetrica.
    • Il destinatario può verificare l’identità del mittente.
    • La crittografia asimmetrica ha risolto il problema relativo alla distribuzione delle chiavi, di cui ho parlato negli svantaggi della crittografia a chiave simmetrica.
    • I destinatari del messaggio possono rilevare se il messaggio è stato alterato durante il transito.

    Svantaggi della crittografia a chiave asimmetrica

    • La crittografia asimmetrica è un processo più lento della crittografia simmetrica.
    • La crittografia e decrittografia asimmetrica richiedono più risorse computazionali rispetto alla crittografia simmetrica.
    • La crittografia asimmetrica si basa su chiavi pubbliche e private. Gestire queste chiavi in ​​modo sicuro può essere complesso e impegnativo, soprattutto nei sistemi su larga scala.
    • Lo svantaggio potenziale più significativo della crittografia asimmetrica è la sua vulnerabilità ai computer quantistici. I computer quantistici hanno il potenziale per risolvere alcuni problemi matematici, come la fattorizzazione degli interi e i logaritmi discreti, in modo molto più efficiente rispetto ai computer classici.

    Ma non c’è bisogno di preoccuparsi, le organizzazioni e i ricercatori stanno lavorando per passare a queste tecniche crittografiche resistenti ai quanti.

    Passiamo al nostro prossimo tipo di crittografia:

    Funzione hash

    Le funzioni hash crittografiche sono diverse dagli altri tipi di crittografia. Non crittografano i dati. Invece, usano una matematica complessa per trasformare qualsiasi dato in un codice univoco composto da lettere e numeri.

    Questi codici sono chiamati codici hash, valori hash o digest dei messaggi. Sono importanti per verificare se i dati sono sicuri; quando i dati vengono inviati o archiviati, il relativo codice hash viene calcolato e inviato o conservato insieme ai dati.

    Il destinatario può ricalcolare il codice dei dati ricevuti e confrontarlo con quello inviato. Se i codici corrispondono, significa che i dati sono rimasti al sicuro durante la trasmissione e l’archiviazione.

    Ecco una semplice spiegazione passo passo:

    Funzione hash

    Lato mittente:

  • Il mittente utilizza una funzione hash per creare un valore hash univoco per i dati forniti.
  • Dopo aver creato i valori hash, il mittente invia sia il messaggio originale che il codice hash al destinatario attraverso un canale non sicuro.
  • Lato del ricevitore:

  • Il destinatario riceve il messaggio e il codice hash.
  • Anche il destinatario utilizza lo stesso strumento speciale (funzione hash) per creare un nuovo codice hash per il messaggio ricevuto.
  • Il destinatario confronta il nuovo codice hash con quello inviato dal mittente.
  • Risultato:

    • Se i codici hash corrispondono, significa che il messaggio non è stato alterato durante la trasmissione ed è considerato sicuro.
    • Se i codici hash non corrispondono, suggerisce che il messaggio potrebbe essere stato modificato e non è considerato sicuro.

    Ecco alcune delle proprietà che rendono utili le funzioni hash:

    Proprietà della funzione hash:

  • Deterministico: se dai lo stesso input, produrrà sempre lo stesso output.
  • Uniformità e assenza di collisioni: una buona funzione hash dovrebbe produrre output distribuiti uniformemente. Aiuta a evitare collisioni.
  • Efficiente: le funzioni hash sono progettate per essere efficienti dal punto di vista computazionale, consentendo loro di elaborare rapidamente grandi quantità di dati.
  • Output a dimensione fissa: produce un output a dimensione fissa indipendentemente dalla dimensione dell’input. Questa proprietà è essenziale perché consente l’archiviazione e il recupero efficienti dei dati.
  • Le funzioni hash hanno molte applicazioni nell’informatica e nella sicurezza delle informazioni, tra cui crittografia, controllo dell’integrità dei dati, indicizzazione dei dati, rilevamento delle impronte digitali dei dati, archiviazione delle password, analisi forense digitale e blockchain.

    Le funzioni hash crittografiche comunemente utilizzate includono:

    Esistono due famiglie ampiamente utilizzate di funzioni hash crittografiche: la famiglia MD (MD = message digest) e la famiglia SHA (SHA = algoritmo hash sicuro).

    • SHA-1 (Secure Hash Algorithm 1): era una delle funzioni hash più popolari. Tuttavia, SHA-1 è ora considerato debole a causa delle vulnerabilità che consentono pratici attacchi di collisione. Non viene più utilizzato per la maggior parte delle applicazioni di sicurezza.
    • MD5 (Message Digest Algorithm 5): MD5 era popolare in passato ma ora è considerato debole a causa delle vulnerabilità alle collisioni. Generalmente non viene utilizzato per applicazioni sensibili alla sicurezza.
    • SHA-3: SHA-3 è una nuova famiglia di funzioni hash selezionate attraverso un concorso da Istituto nazionale di standard e tecnologia (NIST). Fornisce una sicurezza elevata ed è progettato per resistere a determinati tipi di attacchi.

    Anche se le funzioni hash non crittografano i messaggi, sono parte integrante della crittografia perché svolgono un ruolo cruciale nella protezione e nell’autenticazione dei dati, che sono obiettivi chiave della crittografia.

    Vantaggi della funzione hash

    • Una funzione hash sicura garantisce un’elevata resistenza alle collisioni.
    • È possibile confrontare facilmente l’uguaglianza di due file tramite l’hashing.
    • Le funzioni hash sono incredibilmente veloci ed efficienti.
    • In DBMS, l’hashing viene utilizzato per cercare la posizione dei dati senza utilizzare una struttura di indice.

    Svantaggi della funzione hash

    • Le funzioni hash potrebbero funzionare in modo meno efficace in caso di numerose collisioni.
    • Non sono ammessi valori nulli.
    • L’implementazione delle tabelle hash può essere un compito impegnativo a causa della loro complessità.
    • In pratica, è quasi impossibile prevenire del tutto le collisioni di hash quando si ha a che fare con un ampio insieme di potenziali chiavi.

    Leggi anche: Come proteggersi da un attacco Rainbow Table

    Applicazioni reali della crittografia

    • Autenticazione/Firme digitali: l’autenticazione è il processo fondamentale per confermare l’autenticità dei dati, verificare l’origine di un documento, convalidare l’identità del mittente, l’accuratezza del timestamp e garantire la legittimità del computer o dell’identità dell’utente. Le firme digitali utilizzano metodi crittografici che implicano una funzione hash e una chiave privata per convalidare e firmare in modo sicuro i documenti.
    • Crittografia dell’archiviazione nel cloud: la crittografia viene utilizzata per proteggere i file archiviati nel cloud e durante la trasmissione da e verso i servizi cloud.
    • Moneta elettronica: la moneta elettronica comporta trasferimenti elettronici di fondi tra parti, che possono essere di debito o di credito, anonimi o identificati. Utilizza crittografia, firme digitali e crittografia a chiave pubblica per la sicurezza, consentendo vari tipi di transazioni.
    • Crittografia/decrittografia nelle e-mail: la crittografia delle e-mail protegge il contenuto delle e-mail da accessi non autorizzati utilizzando la crittografia a chiave pubblica. Ogni utente dispone di una coppia di chiavi pubblica e privata, con la chiave pubblica utilizzata per la crittografia e solo la chiave privata può decrittografare il messaggio.
    • Crittografia in WhatsApp: WhatsApp utilizza il protocollo del segnale per la crittografia, combinando la crittografia a chiave simmetrica e asimmetrica per riservatezza, integrità, autenticazione e non ripudio. Per lo scambio di chiavi vengono utilizzati algoritmi basati su Curve25519.
    • Crittografia in Instagram: la comunicazione di Instagram viene crittografata utilizzando SSL/TLS sulla porta 443, impedendo l’intercettazione dei dati scambiati tra l’utente e i server di Instagram.
    • Autenticazione della carta SIM: l’autenticazione della carta SIM prevede la verifica dell’accesso della carta SIM alla rete generando un numero casuale e applicando algoritmi come A3 con la chiave segreta Ki. La crittografia si basa sull’algoritmo A8 e sulla chiave di sessione KC, utilizzata con l’algoritmo A5 per la crittografia/decrittografia dei dati.

    Sfide nella crittografia

    • La gestione delle chiavi rimane una sfida, poiché la distribuzione e la gestione sicura delle chiavi di crittografia sono complesse, soprattutto nei sistemi su larga scala. I meccanismi di archiviazione e recupero delle chiavi devono essere robusti.
    • La crittografia simmetrica può diventare inefficiente quando molti utenti hanno bisogno di comunicare in modo sicuro. Ogni coppia di utenti richiede una chiave univoca, che può diventare ingombrante con l’aumentare del numero di utenti.
    • La crittografia asimmetrica richiede in genere chiavi più lunghe rispetto alla crittografia simmetrica per ottenere lo stesso livello di sicurezza. Ciò può portare a un’elaborazione più lenta e a un aumento dei requisiti di risorse.
    • La scoperta di vulnerabilità o punti deboli nelle funzioni hash può portare a violazioni della sicurezza. La comunità crittografica deve analizzare e adattare continuamente le funzioni hash per mitigare tali rischi.
    • Nelle applicazioni in cui vengono utilizzate funzioni hash per l’archiviazione delle password, è necessario un corretto salting delle password per prevenire attacchi alla tabella arcobaleno. La sfida sta nel garantire che i sali siano unici e segreti.
    • L’emergere dell’informatica quantistica rappresenta una sfida significativa per il mondo della crittografia. I computer quantistici sono eccezionalmente rapidi nel risolvere problemi matematici specifici, sfruttando i principi peculiari della fisica quantistica per la loro straordinaria abilità computazionale.

    Questa velocità minaccia le fondamenta dei nostri attuali sistemi crittografici, che si basano sulla complessità di alcune sfide matematiche per garantire la sicurezza dei dati. I computer quantistici hanno la capacità di risolvere questi problemi molto più velocemente dei computer convenzionali, compromettendo potenzialmente la sicurezza dei nostri metodi di crittografia.

    I principi alla base della meccanica quantistica utilizzati dai computer quantistici sono in effetti insoliti, ma garantiscono loro il potere di eseguire compiti che vanno oltre la portata dei computer classici.

    Di conseguenza, la necessità di sviluppare nuove tecniche crittografiche in grado di resistere agli attacchi quantistici sta diventando sempre più pressante, creando una sfida continua nel campo della crittografia.

    • Lo sviluppo e l’adozione di algoritmi di crittografia post-quantistica resistenti agli attacchi quantistici rappresenterà una tendenza significativa. Si stanno esplorando algoritmi come la crittografia basata su reticolo.
    • Vi è una crescente accettazione della crittografia e della gestione delle chiavi basate sul cloud, soprattutto nel settore finanziario. La crittografia omomorfa consente calcoli su dati crittografati senza decrittografarli. Ciò può migliorare la privacy nel cloud computing e nell’elaborazione dei dati.
    • La crittografia svolge un ruolo cruciale nel proteggere la tecnologia blockchain e le due continueranno a essere intrecciate in futuro.
    • Con l’inasprimento delle normative sulla protezione dei dati, come il GDPR, la tokenizzazione viene utilizzata più frequentemente nel settore sanitario, nei servizi finanziari e nelle imprese. La tokenizzazione sostituisce i dati reali con un token privo di valore per gli hacker.

    Parole finali

    La crittografia è un campo vasto con molto da esplorare e abbiamo solo scalfito la superficie coprendo le basi della crittografia.

    Abbiamo trattato la crittografia, i suoi principi, i tipi di crittografia, le funzioni hash, le sfide, le tendenze future e le applicazioni pratiche.

    Eppure c’è molto altro da scoprire.

    Successivamente, Crittografia cloud: guida introduttiva e case study di Google Cloud.