Crypto

Introduzione §

Il cifrario Caesar è uno dei primi cifrari conosciuti e più semplici. È un tipo di codice di sostituzione in cui ogni lettera nel testo in chiaro viene “spostata” di un certo numero di punti lungo l’alfabeto. Ad esempio, con uno spostamento di 1, A sarebbe sostituito da B, B diventerebbe C e così via. Il metodo prende il nome da Giulio Cesare, che apparentemente lo usava per comunicare con i suoi generali.

Schemi di crittografia più complessi come il cifrario Vigenère impiegano il cifrario Caesar come elemento del processo di cifratura. Il ampiamente noto ROT13 ‘crittografia’ è semplicemente un cifrario Caesar con un offset di 13. Il cifrario Caesar non offre essenzialmente alcuna sicurezza di comunicazione, e verrà dimostrato che può essere facilmente rotto anche a mano.

Esempio §

Per passare un messaggio cifrato da una persona all’altra, è necessario prima che entrambe le parti abbiano la “chiave” per il codice, in modo che il mittente possa cifrarlo e il destinatario possa decrittografarlo. Per il cifrario caesar, la chiave è il numero di caratteri per spostare l’alfabeto cifrato.

Ecco un rapido esempio dei passaggi di crittografia e decrittografia coinvolti con il cifrario caesar. Il testo che crittograferemo è ‘difendi la parete est del castello’, con uno shift (tasto) di 1.

plaintext: defend the east wall of the castleciphertext: efgfoe uif fbtu xbmm pg uif dbtumf

È facile vedere come ogni carattere nel testo in chiaro viene spostato sull’alfabeto. Decrittografia è altrettanto facile, utilizzando un offset di -1.

plain: abcdefghijklmnopqrstuvwxyzcipher: bcdefghijklmnopqrstuvwxyza

Ovviamente, se viene utilizzata una chiave diversa, l’alfabeto cifrato verrà spostato di una quantità diversa.

Descrizione matematica §

Dove k è la chiave (shift) applicata a ciascuna lettera. Dopo l’applicazione di questa funzione il risultato è un numero che deve poi essere tradotto di nuovo in una lettera. La funzione di decrittazione è:

JavaScript Esempio del cifrario Caesar §

Testo in chiaro

shift:

Testo cifrato

Altre implementazioni §

Per il codice cifrato Caesar in vari linguaggi di programmazione, vedere la pagina Implementazioni.

Per codificare i propri messaggi in python, è possibile utilizzare il modulo pycipher. Per installarlo, utilizzare pip install pycipher. Per cifrare i messaggi con il cifrario Caesar (o un altro cifrario, vedi qui per la documentazione):

Crittoanalisi §

Vedi Crittoanalisi del cifrario Caesar per un modo di rompere automaticamente questo cifrario.

La crittanalisi è l’arte di rompere codici e cifrari. Il cifrario Caesar è probabilmente il più facile di tutti i cifrari da rompere. Poiché lo spostamento deve essere un numero compreso tra 1 e 25, (0 o 26 risulterebbe in un testo in chiaro invariato) possiamo semplicemente provare ogni possibilità e vedere quale risulta in un pezzo di testo leggibile. Se ti capita di sapere cos’è un pezzo del testo cifrato, o puoi indovinare un pezzo, allora questo ti permetterà di trovare immediatamente la chiave.

Se ciò non è possibile, un approccio più sistematico consiste nel calcolare la distribuzione di frequenza delle lettere nel testo cifrato. Questo consiste nel contare quante volte appare ogni lettera. Il testo inglese naturale ha una distribuzione molto distinta che può essere utilizzata per aiutare a decifrare i codici. Questa distribuzione è la seguente:

Inglese Lettera Frequenze

Ciò significa che la lettera e è la più comune, e appare quasi il 13% delle volte, mentre z appare molto meno dell ‘ 1 per cento del tempo. L’applicazione del codice Caesar non modifica queste frequenze di lettere, le sposta semplicemente lungo un po ‘ (per uno spostamento di 1, la lettera di testo cifrato più frequente diventa f). Un crittoanalista deve solo trovare lo spostamento che fa sì che le frequenze del testo cifrato corrispondano strettamente con le frequenze inglesi naturali, quindi decrittografare il testo usando quello spostamento. Questo metodo può essere utilizzato per rompere facilmente i cifrari Caesar a mano.

Se hai ancora problemi, prova la sezione crittanalisi della pagina di cifratura di sostituzione. Tutte le strategie che funzionano con il codice di sostituzione funzioneranno anche con il codice Caesar (ma i metodi che funzionano sul codice Caesar non funzionano necessariamente sul codice di sostituzione generale).

Per un metodo che funziona bene sui computer, abbiamo bisogno di un modo per capire quale delle 25 possibili decrittografie assomiglia di più al testo inglese. Vedi Cryptanalysis of the Caesar Cipher per una guida su come romperlo usando le statistiche quadgram. La chiave (o shift) che si traduce in una decrittografia con la più alta probabilità di essere testo inglese è molto probabilmente la chiave corretta. Naturalmente, più testo cifrato hai, più è probabile che sia vero (questo è il caso di tutte le misure statistiche, incluso l’approccio di frequenza sopra). Quindi il metodo utilizzato è prendere il testo cifrato, provare a decrittografarlo con ogni chiave, quindi vedere quale decrittografia sembra la migliore. Questo metodo semplicistico di crittanalisi funziona solo su cifrari molto semplici come il cifrario Caesar e il cifrario rail fence, anche i cifrari leggermente più complessi possono avere troppe chiavi per controllarli tutti.

Riferimenti §

  • Wikipedia ha una buona descrizione del processo di crittografia/decrittografia, della storia e della crittanalisi di questo algoritmo
  • “The Code Book” di Simon Singh è un’eccellente introduzione ai cifrari e ai codici e include una sezione sui cifrari caesar.
  • Singh, Simon (2000). Il libro del codice: La scienza della segretezza dall’antico Egitto alla QuantumCryptography. ISBN 0-385-49532-3.



Lascia un commento

Il tuo indirizzo email non sarà pubblicato.