Tecnica utilizzata

Qualsiasi cifrario di tipo polialfabetico con una chiave che si ripete con un certo periodo molto più breve del testo cifrato può essere attaccato considerando separatamente le sostituzioni fatte sulle varie lettere.
Se la chiave è lunga N caratteri allora si avrà che le lettere in posizione kN+i, con i fissato fra 0 ed N, e k intero, saranno tutte cifrate con lo stesso carattere della chiave.
L’attacco si riduce quindi a fare l’analisi delle frequenze sulle lettere in posizione i modN.
Questa tipologia di attacco è nota da metà ‘800 ed è stata sviluppata per la crittoanalisi del cifrario di Vigenère.
L’algoritmo di Scala ha blocchi lunghi (256 byte rispetto a 3 byte del periodo della funzione di cifratura), il che consentirebbe un attacco di questo tipo che sarebbe comunque complicato dato che per una efficace analisi delle frequenze serve un testo abbastanza lungo mentre in ogni blocco si avrebbero a disposizione solo testi di lunghezza 256/3= 85 caratteri

L’attacco che ho usato è invece molto più semplice, conoscendo una coppia testo chiaro e cifrato la si può usare per creare un dizionario che faccia corrispondere una lettera chiara ad una cifrata.
In realtà per ogni blocco di 256 byte si otterranno N dizionari, dove N è il periodo della funzione di cifratura (dato dal numero dei numeri chiave inseriti in fase di crittazione).
Scorrendo poi il testo cifrato incognito si sostituisce ogni carattere con quello in chiaro del dizionario corrispondente alla posizione.


Esempio:

periodo della funzione di cifratura = 3

chiaro noto: 		testonoto
cifrato noto:		xcdxrceqe
	
alfa0: (lettere in pos 0,3,6)
	x -> t
	e -> o

alfa1: (lettere in pos 1,4,7)
	c -> e
	r -> o
	q -> t

alfa2: (lettere in pos 2,5,8)
	d -> s
	c -> n
	e -> o

L’algoritmo di Scala potrebbe essere reso più resistente a questo attacco riducendo la lunghezza dei blocchi alla stessa lunghezza della chiave, in questo modo non ci sarebbero ripetizioni di caratteri cifrati con la stessa funzione.
Con questa modifica diventerebbe sicuro ad attacchi con solo testo cifrato, sempre che sia completamente sicura la parte di algoritmo che crea, a partire dai numeri chiave, la funzione di cifratura.

Anche in questo caso comunque essendo un cifrario che esegue solo sostituzioni e non sostituzioni+permutazioni (come fanno invece i moderni cifrari a blocchi) sarà comunque vulnerabile a un attacco in cui si abbiano coppie di messaggi in chiaro e cifrato (con la stessa chiave) nell’ordine della centinaia.

Con un centinaio di messaggi e fissata una posizione, esempio l’i-esimo byte, ci si potrà attendere che almeno un messaggio sui 100 contenga in posizione i la stessa lettera cifrata che contiene il messaggio incognito, permettendo quindi lo stesso attacco che ho usato.
100 coppie chiaro-cifrato casuali cifrati tutti con la stessa chiave possono sembrare non poche da ottenere ma non lo sono, basta fare il raffronto con AES che in un attacco scoperto nel 2005 richiede 200 milioni di testi chiaro-cifrato non casuali ma scelti durante l’attacco.

4 pensieri su “Tecnica utilizzata

Lascia un commento