Vigenere Cipher

La soluzione all’enigma dell’ultima volta era Security Forge, il testo cifrato si ottiene traslando ogni lettera di 4 posizioni. 

 

Il cifrario di Cesare è stato usato per tantissimo tempo, ma è un tipo di cifrario fortemente vulnerabile. Con un testo sufficientemente lungo è possibile infatti riuscire a decifrare il codice con relativamente poco sforzo. Se poi nel testo è chiarita la punteggiatura diventa ancora più semplice in quanto, specie per le parole di poche lettere, ci sono poche combinazioni. 

 

Un’evoluzione del cifrario di Cesare è il cifrario di Vigenere. E’ probabilmente il primo cifrario a necessitare di una parola chiave per essere decifrato. 

Vediamo come funziona:

Una volta scelto il testo che si vuole mandare, per esempio: “COGITO ERGO SUM” si sceglie una parola, per esempio ACQUA e si procede nel seguente modo: 

 

  1. Si ripete la parola chiave finche non arriva almeno alla lunghezza del testo che vogliamo cifrare:

          ACQUAACQUAACQUA

          COGITOERGOSUM

  1. Si prende la tabella di Vigenere e per ogni coppia di lettera si prende l’intersezione tra riga e colonna

 

 

Il risultato nel nostro caso è: CQWCTOGHAOSWC

 

Il cifrario di Vigenere è considerata la versione polialfabetica del cifrario di Cesare, cosa vuol dire? Vuol dire che mentre nel cifrario di Cesare ogni lettera viene spostata dello stesso numero di posizioni, nel cifrario di Vigenere ogni lettera viene spostata di un numero possibilmente diverso di posizioni in base alla parola chiave. 

 

È proprio la parola chiave il punto di debolezza di questo cifrario: tanto più corta è la parola chiave, tanto più è semplice, su un testo lungo decifrare il cifrario. Potrebbe però essere possibile generare un testo basato sul cifrario di Vigenere a prova di attacco?

 

La risposta è sì sotto due condizioni:

  1. Usare una keyword lunga quanto il testo
  2. Che la keyword sia casuale, non abbia cioé i pattern tipici dei linguaggi naturali, facile no?

Volete divertirvi un po’ a generare testo cifrato utilizzando il cifrario di Vignere?

Ecco una risorsa interessante sul web: https://www.dcode.fr/vigenere-cipher