Crittografia e Steganografia – Cosa sono e come funzionano?
Crittografia e Steganografia– Immaginate di dover spedire un pacco postale molto prezioso in un furgoncino con scritto “sono importante” a caratteri cubitali, in un’autostrada molto trafficata e con molte case ai lati, con molte persone che osservano dai loro balconi, alcune di queste intenzionate a rubare il vostro pacco.
Ovviamente dovete proteggere il pacchetto in modo tale da poter essere sicuri che arrivi a destinazione esattamente come lo volete.
Anzitutto, dovete assicurarvi che il furgone sia blindato. In secondo luogo, dovete assicurarvi che nessuno sia all’interno del furgone e che nessuno possa compromettere il pacco modificandone il contenuto. In fine, il destinatario del pacco vorrà essere sicuro che siate stati proprio voi a spedirlo.
Confidenzialità, Integrità ed Autenticazione.
C’è un problema: tra le persone che osservano, ce ne sono alcune più accanite, e che conoscono anche i metodi che avete utilizzato per rendere sicuro il vostro trasporto.
Allora, un’altra precauzione da non sottovalutare, è quella di nascondere il vostro pacco prezioso in un furgoncino che trasporta concime naturale.
Con questo piccolo esempio, abbiamo mostrato due pratiche fondamentali nelle comunicazioni informatiche: la Crittografia e Steganografia.
In poche parole, la crittografia consiste nel “blindare” i dati, assicurarci che chi ce li spedisce sia proprio la persona che deve farlo e assicurarci che i dati non vengano compromessi, mentre la steganografia consiste nel renderli irriconoscibili come dati importanti, nel mascherarli, ad esempio nascondendoli in un’immagine.
Crittografia simmetrica e asimmetrica
La crittografia è uno dei metodi più potenti a protezione di un qualsiasi dato, non solo in informatica. Esistono scrittori che hanno lasciato messaggi cifrati che sono stati letti solo dopo centinaia di anni.
Crittografia simmetrica
Ci sono diversi metodi per crittografare i dati, ma non tutti sono efficaci quando si tratta di doverli anche spedire o comunicare: prendiamo ad esempio la crittografia semplice e simmetrica. Scriviamo un messaggio, tramite un algoritmo e un cifrario lo cifriamo, chi lo riceverà lo decifrerà con lo stesso cifrario e algoritmo.
C’è un problema di fondo in questo metodo: il destinatario deve conoscere il cifrario e l’algoritmo che abbiamo utilizzato, che vanno quindi comunicati prima dei dati. Ma se qualcuno leggesse il nostro metterci d’accordo su algoritmo e cifrario? Siamo punto e a capo.
Crittografia asimmetrica
Lo scambio di credenziali è stato per molto tempo un problema fondamentale nella comunicazione. Ad oggi esistono metodi di crittografia molto efficaci per la trasmissione dati e che ovviano a questo buco. Alla base, ci sono le crittografie asimmetriche:
Non esiste più un cifrario o una chiave condivisa, ogni parte possiede una chiave privata e una chiave pubblica “collegata” a quella privata. La chiave pubblica è conosciuta da tutti, ed è fondamentale che dalla chiave pubblica non si possa ricavare la chiave privata, mentre da quella privata si ricava quella pubblica.
Vi è quindi poi un algoritmo condiviso (che dipende dal protocollo utilizzato) che tutti conoscono, e che funziona così:
Dato un messaggio m,
una chiave pubblica kp,
una chiave privata k,
abbiamo f e g tali che
g(k, f(kp, m)) = m.
In sostanza, abbiamo due algoritmi (a volte coincidono) tali che se applichiamo il primo al messaggio e alla chiave pubblica otterremo un messaggio cifrato c, che potrà essere decifrato solo applicando il secondo algoritmo a c e alla chiave privata corrispettiva.
In questo modo ci si scambia solo le chiavi pubbliche, e si è sicuri che crittografando un messaggio con la chiave pubblica di un destinatario, solo lui potrà ricavare il messaggio originario con la chiave privata, in quanto nessun altro la conosce.
Questa tipologia di crittografia garantisce anche l’autenticazione e il “non ripudio”:
Se prima di inviare il messaggio, il mittente lo cifra con la propria chiave privata, il destinatario potrà essere sicuro che sia stato proprio lui a inviarlo:
decifrando con la chiave pubblica del mittente, verrà restituito un messaggio corretto solo se è stato cifrato con la chiave privata corrispettiva, conosciuta appunto solo dal mittente.
Crittografia e Quantum Computing
I computer quantistici sono sempre più vicini alla realtà, ad oggi hanno solo qualche qubit, ma presto saranno abbastanza potenti da rivoluzionare il mercato computazionale.
Uno dei problemi legato all’arrivo dei computer quantistici, è che neanche la cifratura asimmetrica si potrà più considerare sicura: i computer quantistici rivoluzioneranno il modo di risolvere i problemi, e problemi che prima richiedevano potenza computazionale elevatissima (come il ricavare le chiavi private dalle chiavi pubbliche) non saranno che un giochino.
Quindi, non potremo mai più comunicare in sicurezza?
In realtà no, e l’allarmismo proviene principalmente da “non addetti ai lavori”.
La soluzione è quella di creare una crittografia quantistica, che come tale sarà complessa da rompere anche per i computer quantistici. Si tratta quindi di cambiare i paradigmi crittografici in modo da adattarli ad un mondo in cui l’elaborazione quantistica sarà sempre più presente: non basterà più ritenere semanticamente sicura una comunicazione che richiede troppo tempo per essere cifrata, in quanto questo tempo diminuirà esponenzialmente nei prossimi anni.
La Steganografia
Steganografia, dal greco steganòs (coperto) e graphìa (scrittura), a differenza della crittografia, si basa non sul rendere illeggibili i dati, ma sul nasconderli in altri dati, che sembrino coerenti e significanti già di loro. In questo modo, si presuppone che un malintenzionato che venga in possesso dei dati trasmessi, pensi che siano già in chiaro e leggibili così, mentre quelli che vede sono solo una copertura, una maschera per i veri dati, invece nascosti.
Steganografia LSB (least significant bit)
Questo tipo di steganografia si basa su un semplice assunto: le immagini che ci scambiamo al giorno d’oggi sono molto più risolute e e meglio colorate di quanto il nostro occhio possa percepire.
Modificando il bit meno significativo di ogni pixel, l’immagine resta quasi invariata al nostro occhio. È possibile nascondere un messaggio in un’immagine, modificando il bit meno significativo di ogni pixel in base alle lettere del messaggio.
La steganografia non garantisce nessuno dei principi (riservatezza, autenticazione e integrità) sopra descritti, semplicemente si occupa di rendere meno appetibili o irriconoscibili i dati, per tornare all’analogia di partenza, si occupa di nascondere oro in un furgoncino di letame, in modo che giunti a destinazione, sia semplice però ritrovarlo.