Cifrario a trasposizione: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Annullata la modifica 76782921 di 217.133.54.81 (discussione)
AttoBot (discussione | contributi)
m Bot: Correggo errori comuni, typos fixed: P . → P. (29)
Riga 1:
In [[crittografia]] un '''cifrario a trasposizione''' è un metodo di cifratura in cui le posizioni occupate dalle unità di testo in chiaro (che in genere sono lettere o gruppi di esse) sono cambiate secondo un determinato schema, così che il testo cifrato costituisca una [[permutazione]] del testo in chiaro.
Matematicamente parlando viene utilizzata una funzione di [[corrispondenza biunivoca]] sulle posizioni dei caratteri durante l'operazione di codifica ede una [[funzione inversa]] durante quella di decodifica.
 
Quelle che seguono sono alcune implementazioni di cifrari a trasposizione.
 
== Cifrario a staccionata ==
Il [[cifrario a staccionata]] è un tipo di cifrario a trasposizione che deve il suo nome al modo in cui il testo in chiaro viene cifrato: esso viene trascritto lettera per lettera su righe ideali, diagonalmente verso il basso e poi risalendo una volta arrivati alla riga più bassa e viceversa arrivati alla riga più in alto, disegnando ipotetiche traverse di un'immaginaria staccionata. Il messaggio cifrato si ottiene, alla fine, leggendo le lettere così posizionate riga per riga. Ad esempio, utilizzando 3 righe ede il messaggio "PIANTARE IL CAMPO DIETRO LA COLLINA", la trasposizione sarà:
P . . . T . . . I . . . M . . . I . . . O . . . O . . . N .
. I . N . A . E . L . A . P . D . E . R . L . C . L . I . A
Riga 35:
Nella '''trasposizione colonnare''' il messaggio è scritto lungo le righe di una griglia di dimensioni prefissate e poi letto lungo le colonne, secondo un ordine particolare delle stesse. Sia la lunghezza delle righe che la permutazione delle colonne sono definite da una parola chiave. Ad esempio, la parola <tt>VETRINA</tt> è lunga 7 lettere, così le righe saranno anch'esse di lunghezza 7, e la permutazione è definita dall'ordine alfabetico delle lettere della parola chiave. In questo caso l'ordine sarebbe "7-2-6-5-3-4-1" perché l'ordine alfabetico delle lettere di VETRINA è A-E-I-N-R-T-V, e le loro posizioni sono quindi A=1, E=2, I=3, N=4, R=5, T=6 e V=7, per cui V-E-T-R-I-N-A corrisponde proprio a 7-2-6-5-3-4-1.
 
Nei cifrari a trasposizione colonnare regolari le posizioni vuote alla fine dell'ultima riga vengono riempite con caratteri casuali, mentre in quelli irregolari sono lasciati bianchi. Alla fine, il messaggio è letto sulle colonne secondo l'ordine specificato dalla parola chiave. Ad esempio, supponendo di usare la parola chiave <tt>VETRINA</tt> ede il messaggio <tt>PIANTARE IL CAMPO DIETRO LA COLLINA</tt>, in una trasposizione colonnare regolare avremmo una griglia così composta:
 
7 2 6 5 3 4 1
Riga 57:
N A
 
EdE il messaggio cifrato sarebbe il seguente:
 
RPOII IDAAT ATLAM RLNCE OALIC PEOLN
Riga 68:
Una trasposizione colonnare singola sarebbe violabile indovinando la possibile lunghezza delle colonne e provando a scrivere il messaggio in esse (ma nell'ordine sbagliato, dato che la parola chiave non è ancora nota) e poi cercando possibili [[anagramma|anagrammi]]. Per rendere questo tipo di cifrario più robusto si usa spesso una '''trasposizione doppia''', che essenzialmente è una trasposizione colonnare applicata due volte. Si può utilizzare la stessa chiave per entrambe le trasposizioni, oppure si possono utilizzare due chiavi differenti.
 
Operando, ad esempio, sul risultato della precedente trasposizione colonnare irregolare, ede applicando una seconda cifratura con una chiave differente, ad esempio <tt>PORTALE</tt> (da cui si ottiene la permutazione 5-4-6-7-1-3-2) otteniamo la seguente griglia:
RPOII IDAAT ATLAM RLNCE OALIC PEOLN
5 4 6 7 1 3 2
Riga 112:
 
== Investigazione e crittanalisi ==
Dato che la trasposizione non modifica la frequenza delle singole lettere, una trasposizione semplice può essere facilmente individuata con l'[[analisi delle frequenze]]. Se un testo cifrato manifesta una [[distribuzione delle frequenze]] molto simile a quella di un testo in chiaro, il più delle volte esso risulta proprio una trasposizione che può essere risolta semplicemente [[anagramma]]ndolo: si prendono piccole parti del messaggio da posizioni casuali e si combinano insieme osservando se il testo ottenuto presenta la comparsa di porzioni che sembrano anagrammi di parole di senso compiuto, e poi si risolvono questi anagrammi. Una volta che sono stati risolti, questi anagrammi rivelano informazioni sulla regola utilizzata per la trasposizione ede il metodo può essere conseguentemente esteso al resto del messaggio.
 
Le trasposizioni più semplici soffrono inoltre del fatto che parole chiavi molto simili a quella utilizzata per la cifratura rivelano spesso lunghe porzioni di testo leggibile intervallato da sequenze di caratteri senza senso. La conseguenza è che tali cifrari risultano vulnerabili agli algoritmi ottimizzati per la ricerca dei dati, come gli [[algoritmi genetici]].
Riga 122:
 
== Frazionamento ==
La trasposizione risulta particolarmente efficiente quando viene abbinata al '''frazionamento''', cioè un passaggio preliminare che divide ogni simbolo del testo in chiaro in più simboli di testo cifrato. Ad esempio, l'alfabeto del testo in chiaro potrebbe essere trascritto in una griglia in cui ogni lettera del messaggio potrebbe essere rimpiazzata dalle sue coordinate (vedi il [[quadrato di Polibio]]). Un altro metodo di frazionamento è la semplice conversione del messaggio in [[codice Morse]], con un simbolo per gli spazi, uno per i punti ede uno per le linee.
 
Quando un tale messaggio frazionato viene trasposto, le sue singole lettere vengono ben separate nel messaggio ottenendo nel contempo la [[confusione e diffusione|diffusione]] teorizzata da [[Claude E. Shannon]]: il [[cifrario bifido]], il [[cifrario trifido]], il [[cifrario ADFGVX]] ede il [[cifrario di VIC]] sono tutti esempi di cifrari che combinano il frazionamento e la trasposizione.
 
Un'altra soluzione consiste nel rimpiazzare ogni lettera con la sua rappresentazione binaria, trasporre questa e poi convertire la nuova stringa binaria nel corrispondente carattere [[ASCII]]. Per rendere più difficile la violazione del cifrario è possibile effettuare più volte la conversione della stringa binaria prima di convertire il risultato in un carattere ASCII: molti [[cifrario a blocchi|cifrari a blocchi]] moderni si rifanno a questa idea applicando forme di trasposizione più complesse.