In questo articolo, il primo della categoria dedicata alla decodifica e alla crittografia, cercherò di riassumervi gli aspetti che stanno alla base di questo argomento.
La crittografia è una “scrittura segreta” che serve a trasmettere un’informazione in modo sicuro. Esistono due tecniche per crittografare un’informazione: una prende il nome di “cifratura”, l’altra di “codifica” o “criptazione”. Iniziamo dalla cifratura.
La cifratura
La cifratura è la sostituzione dei caratteri di un’informazione con altri caratteri o simboli. Cifriamo ad esempio la parola CIAO: posso decidere di sostituire ogni lettera di due posizioni in avanti dell’alfabeto. Quindi la C diventa E (A B C D E), la I diventa K, la A diventa C, e la O diventa Q. Il risultato è una stringa incomprensibile: EKCQ.
Un altro modo per cifrare un’informazione è, ad esempio, l’utilizzo del codice morse. In questo caso, la parola CIAO si trasformerà in questo modo:
C = _ . _ .
I = . .
A = . _
O = _ _ _
CIAO = _ . _ . / . . / . _ / _ _ _ (lo slash serve a separate i caratteri)
La codifica / criptazione
La codifica (o criptazione) è l’attribuzione di un codice all’informazione. Prendiamo di nuovo come esempio la parola CIAO. Un esempio di codifica può essere il codice QR (figura 1) o il codice a barre (figura 2), ma l’esempio più semplice è la traduzione del messaggio in un’altra lingua. Quindi la parola CIAO la posso codificare traducendola in inglese: BYE.
Algoritmo e chiave
Sia la cifratura che la codifica prevedono due cose fondamentali: la prima è il modo in cui decido di crittografare un’informazione, quindi l'”algoritmo di cifratura/criptazione”; la seconda è la “chiave”, la quale dipende dall’algoritmo che abbiamo scelto per cifrare o codificare il messaggio.
Ad esempio, nel primo esempio della cifratura, ho deciso di spostare ogni lettera della parola CIAO di due posizioni in avanti dell’alfabeto. In questo caso la chiave sarà il numero di posizioni in cui mi sono spostato nell’alfabeto, cioè “+2“. Nell’esempio della codifica, invece, la chiave è la lingua con la quale ho deciso di tradurre il messaggio, cioè “INGLESE“.
A differenza dell’algoritmo di cifratura/criptazione, la chiave deve essere obbligatoriamente segreta. Gli unici a poterla (e doverla) conoscere sono il mittente e il destinatario.
Chiavi pubbliche e private
Esistono due tipi di chiavi: quelle private e quelle pubbliche.
Gli algoritmi con chiave privata prevedono la stessa chiave sia per crittografare, sia per decifrare. Il processo di criptazione può essere descritto con lo schema seguente:
Il mittente possiede un testo in chiaro, cioè un testo che possono leggere tutti, e utilizza una chiave per cifrarlo. In questo modo il messaggio può essere spedito con sicurezza, sicuri che il testo risulterebbe incomprensibile ad occhi indiscreti e non graditi.
Una volta che il destinatario riceve il messaggio, lui decifra il testo utilizzando la stessa chiave che ha usato il mittente per cifrarlo, in modo da riottenere il testo in chiaro, e leggere finalmente l’informazione.
Invece, gli algoritmi con chiave pubblica prevedono due chiavi: una pubblica e una privata. Ecco uno schema che descrive il processo di criptazione dell’informazione con l’utilizzo di questo algoritmo:
Il mittente cifra o codifica il testo con la chiave pubblica del destinatario, cioè una chiave che possono conoscere tutti, in quanto serve solo a cifrare; una volta inviato e consegnato il testo al relativo destinatario, quest’ultimo lo decodifica con la sua chiave privata, che conosce solo lui.
Si intuisce che l’algoritmo con chiave pubblica è molto più sicuro di quello con sola chiave privata, perché non è previsto lo scambio delle chiavi, cioè il momento della scelta, tra i due interlocutori, della chiave da utilizzare, momento in cui una presunta spia può intercettare questa chiave.
Nel prossimo articolo parlerò di alcuni metodi usati nell’antichità per cifrare un’informazione.
STEGANOGRAFIA, SOSTITUZIONE E TRASPOSIZIONE, MODULI, CODICE CESARE —>