Polialfabetico

Nel punto 1 dei chiarimenti Scala ha ribadito che il suo non è un cifrario polialfabetico suddiviso in blocchi, neppure nella sua versione precedente 0.8

il cifrario non è polialfabetico, quest’ultimo opera con riordinamento dell’alfabeto, il mio usa IL CONTROTESTO che porta ad un risultato diverso, la chiave delle sostituzioni è la posizione dei byte nella tabella di codifica determinata dalla F e le chiavi

Vado quindi a spiegare perché la prima versione del cifrario, pur non essendo identica a un cifrario polialfabetico è esattamente equivalente ad esso.

Un cifrario polialfabetico standard utilizza diverse sostituzioni in base alla posizione del carattere, faccio un esempio usando come alfabeto le 21 lettere dell’alfabeto italiano ma il principio è identico usando tutti i possibili 256 caratteri diversi ottenibili con un byte.

Prima sostituzione:
a b c d e f g h i l m n o p q r s t u v z
d l m n o a b c p q r s t u v z e f g h i

Seconda sostituzione:
a b c d e f g h i l m n o p q r s t u v z
r s t d l m q e f g h i n u o v z a b c p

Terza sostituzione:
a b c d e f g h i l m n o p q r s t u v z
m u o v z r s t d l a b g h i n c p q e f

chiaro: 		t e s t o i n c h i a r o
cifrato:		f l c f n d s t t p r n t
sostituzione usata:	1 2 3 1 2 3 1 2 3 1 2 3 1

L’algoritmo di Scala nella versione 0.8 utilizza una tabella di sostituzione (generata tramite un funzione F) così composta:

controtesto	...
sostituzione 1	...
sostituzione 2	...
sostituzione 3	...

nel caso di tre chiavi avrò 3 sostituzioni distinte (per ogni blocco) e un controtesto, esempio:

controtesto	p q r h i d l m n o v c z e f g s t u a b
sostituzione1	d l m n o a b c p q r s t u v z e f g h i
sostituzione2	r s t d l m q e f g h i n u o v z a b c p
sostituzione3	m u o v z r s t d l a b g h i n c p q e f

ho usato le sostituzioni dell’esempio precedente solo per comodità, il controtesto è una permutazione diversa dalle sostituzioni.
Se ora voglio cifrare il messaggio di prima “testoinchiaro” sceglierò come prima la sostituzione da usare in base alla posizione, per ottenere la lettera corrispondente non andrò però a leggere come prima nella riga con l’alfabeto ordinato trovando la corrispondenza, ma andrò a leggerla nel controtesto, prendendo la colonna corrispondente.

chiaro: 			t  e  s  t  o  i  n  c  h  i  a  r  o
posizione nel controtesto	18 14 17 18 10 5  9  12 4  5  20 3  10
sostiuzione usata:		1  2  3  1  2  3  1  2  3  1  2  3  1
cifrato:			f  u  c  f  g  z  p  i  v  o  c  o  q

Dovendo fare la ricerca nel controtesto potrebbe sembrare molto diverso dal cifrario polialfabetico standard, ma è equivalente ad esso.
Se infatti non si riesce a ricavare l’esatta tabella di sostituzione neanche con testo chiaro noto e corrispettivo cifrato, l’attacco che ho utilizzato sfrutta il fatto che questa tabella è equivalente ad altre 3 sostituzioni diverse e quindi basta ricavare quelle.

Questa equivalenza si può capire facilmente sapendo che le sostituzioni della tabella, come anche il controtesto, sono permutazioni dell’alfabeto utilizzato (nel caso di Scala 256 caratteri, nell’esempio 21). Le permutazioni formano un gruppo, gruppo simmetrico Sn, dove n è la dimensione dell’alfabeto.
Esattamente come posso comporre due funzioni posso comporre due permutazioni di n elementi ottenendo una permutazione.
Quello che fa il cifrario di Scala è comporre la permutazione del controtesto con quella di una delle tre sostituzioni, se chiamo C la permutazione del controtesto e P1, P2, P3 le altre tre permutazioni, componendole otterrò altre tre diverse permutazioni che se applicate danno lo stesso risultato, rendendo il cifrario equivalente a uno polialfabetico per quanto riguarda questa tipologia di attacco.

K1 = C ° P1
K2 = C ° P2
K3 = C ° P3

Nell’attacco che ho trovato ho quindi ricavato le K1, K2, K3 e non le P.

Risposta

In risposta al post Chiarimenti dal blog di Giuseppe Scala.

Breve premessa per chi legge il blog.
Dopo l’uscita del diagramma di flusso ho scritto una mail a Scala in cui gli facevo notare che la modifica effettuata (cambiare la sostituzione in base alla parità del byte precedente nel messaggio) rende certamente più sicuro l’algoritmo, ma che l’attacco che ho effettuato si può rielaborare per testi di cui si conosca il linguaggio in cui sono stati scritti e sfruttando ad esempio regole grammaticali per riuscire a effettuare le giuste sostituzioni.
Deduco dai chiarimenti pubblicati che questa falla (che può funzionare bene con un numero piccolo di chiavi tipo le 3 usate per la sfida) non lo preoccupa.
Siccome lo scambio di mail privato è sfociato in una risposta pubblica, chiaramente alcuni chiarimenti sono rivolti a me (l’ultima mail l’ho inviata il 15 e oggi 16 sono comparsi i “chiarimenti”), rispondo anche io pubblicamente.
Sia chiaro che lo scambio di mail privato con Scala dopo l’inizio della terza fase aveva l’obiettivo di fargli notare che secondo me il suo algoritmo non è ancora abbastanza sicuro, avrei potuto fin da subito pubblicare le mie idee sul blog ma sarebbe potuto sembrare che fossi uno degli “osteggiatori per partito preso” di cui si lamenta.

Per rendere più chiara questa risposta pubblicherò di seguito solo l’ultima mail che ho inviato a Scala.

da: fenrir.crittoscala@gmail.com
a: "ioseph.sc"
data: 15 giugno 2012 11:15

Chiaramente non sto dicendo che la sicurezza non aumenti molto rispetto al primo algoritmo, in particolare se si ha il solo testo cifrato è comunque molto più sicuro perché come era strutturato prima era un semplice cifrario di sostituzione polialfabetico suddiviso in blocchi (molto lunghi).

Il punto è che se vuole creare un cifrario utilizzabile oggi questo deve poter resistere a molte più informazioni note rispetto a quelle che ho elencato ( e si ricordi che non sono un crittoanalista, un esperto potrebbe sicuramente strutturare attacchi più raffinati, probabilmente anche sul solo testo cifrato).

Sul fatto che la funzione F sia diciamo di secondaria importanza non sono d'accordo, se la F avesse delle falle critiche si potrebbe forse ottenere delle info sulla chiave o sulla matrice di codifica dei blocchi successivi avendo a disposizione dei testi noti.
Anche perché se la funzione F non è la parte importante non capisco dove sarebbe la parte innovativa dell'algoritmo, dato che nella prima versione era appunto un cifrario a sostituzione polialfabetica.

Non è una critica, ma il fatto è che il suo obiettivo dichiarato non è creare un semplice algoritmo per semplice esercizio o per gioco che rimarrà poi inutilizzato, ne è una prova la domanda di brevetto; ora, perché si crea un algoritmo nuovo, perché sia più veloce e più sicuro di quelli attuali. Sicuramente prima di crearlo avrà studiato qualcosa sulla crittografia, anche solo a livello base, e avrà incontrato i cifrari polialfabetici la cui forma più semplice è proprio usare diverse permutazioni in base alla posizione, quello che mi chiedo è in cosa riteneva fosse innovativo il suo algoritmo; lo chiedo proprio perché ritenevo che la parte innovativa fosse nella creazione della matrice, e quindi nella F.

Saluti
Fenrir

Rispondo adesso punto per punto ai “chiarimenti”:

Ho letto molte imprecisioni, denigrazioni continue, spesso di persone che iniziano la frase con “non sono un esperto ma”, più che altro mi fa pensare quante persone si affidino al giudizio di sconosciuti non esperti anziché di se stessi.

Punto interessante, siccome non ho mai denigrato Scala, anzi lo ho difeso da chi lo paragonava ad Aranzulla, si veda il post Deliri, questo punto non dovrebbe essere rivolto a me.
Tuttavia non molti si sono interessati all’algoritmo e ne hanno parlato, e ancora meno cominciano un post o una mail con “non sono un esperto”, frase non dettata da falsa modestia ma da verità, a differenza di chi spaccia per Superesperti di livello nazionale gente che ha validato la prima versione di questo algoritmo.
Questo punto è quindi riferito a me? Attendo chiarimenti…

1 – il cifrario non è polialfabetico, quest’ultimo opera con riordinamento dell’alfabeto, il mio usa IL CONTROTESTO che porta ad un risultato diverso, la chiave delle sostituzioni è la posizione dei byte nella tabella di codifica determinata dalla F e le chiavi.

Nell’ultima mail mandatale ho specificato che, prima della modifica ( quindi la versione 0.8) era un cifrario polialfabetico suddiviso in blocchi molto più lunghi del periodo di ripetizione (tutto il mio attacco si basa su quello), ma questa discussione merita un post a parte.

2 – la tabella di codifica è NON riconducibile dai file codificati (o da altri attacchi), il suo ordine è logicamente impossibile da ricostruire quindi non si riesce ad arrivare alle chiavi se non per tentativi.

Anche se la tabella di codifica non è ricostruibile l’obiettivo di un crittoanalista è principalmente quello di decodificare il messaggio cifrato, sicuramente la situazione ottimale è il recupero della chiave ma non è necessario.

3 – ho letto un pò di numeri, ad esempio l’entropia del file sfida confrontato con aes256, confronto errato: il file sfida contiene molti caratteri ripetuti di seguito (Ascii art), la chiave è di 12 byte mentre l’aes è di 256 byte (per un confronto legittimo dovrei usare fra 32 e 64 chiavi).

Spero sia un refuso, l’AES ha chiavi di 128, 192 o 256 bit, non byte.
128 bit corrispondono a 16 byte, poco più della chiave da lei usata, e AES 128 bit non viene bucato dal primo che passa.

4 – con una chiave di 12 byte è 5 volte più veloce dell’aes (a parità di macchina), inoltre mentre il numero di combinazioni aumenta in modo ESPONENZIALE, il tempo impiegato aumenta in modo LINEARE.

Non ho ancora studiato a fondo l’algoritmo, anche perché manca la funzione F, dico solo che la velocità non è sicuramente il primo parametro da tenere in considerazione in un algoritmo crittografico.

5 – questo algoritmo è in versione alpha, si sta testando la logica e struttura che vi è dietro nelle condizioni più difficili, quando si inizierà ad analizzare le combinazioni possibili sarà molto facile intervenire per discretizzarle cambiando lunghezza blocco, valori fissi o anche struttura delle chiavi.

(grassetto mio)

Son contento che voglia cambiare la lunghezza del blocco come le avevo già suggerito, anche se penso che riducendo molto la lunghezza del blocco si ridurrebbero anche le prestazioni dell’algoritmo dovendo calcolare più matrici di cifratura; ma sul serio ritiene queste le condizioni “più difficili” nelle quali si potrebbe trovare il suo algoritmo??
Ha lanciato una sfida che nessun crittoanalista serio avrebbe preso in considerazione, su un sito non specialistico e senza pubblicare interamente l’algoritmo (non l’ha ancora pubblicato completamente, manca la F), e ha fornito una sola coppia testo chiaro-cifrato noti, come se la caverà allora l’algoritmo quando sarà usato per proteggere dati veri che interessano a qualcuno?

6 – la funzione F è una funzione che crea le righe della tabella con le chiavi in forma di semplici numeri, non è fondamentale, anche perché prima bisognerebbe ricostruire la tabella (vd sopra).

Qui faccio congetture non avendo la funzione F, se questa avesse delle falle gravi forse potrebbe essere sfruttata proprio per ricostruire le tabelle, magari proprio con testi in chiaro e cifrati scelti ad hoc Chosen-plaintext attack

8 – ho SCELTO di non operare permutazioni sul file, se fosse necessario avrei potuto usare la stessa F.

Magari in quel caso sarebbe stato un algoritmo impenetrabile anche dall’NSA, ma sarebbe dipeso ancora di più dalla famosa F.

9 – l’attacco che ha preso PARTE del file avrebbe dovuto avere come scopo di trovare le chiavi, inoltre è stato possibile perché si pensa alle variabili testuali (cioè circa 35 con lettere e caratteri vari), se fosse un file generico si dovrebbe operare con 256 variabili e non sarebbe possibile stabilire che è un testo.

Primo, lo scopo dell’attacco lo decide chi attacca, e tipicamente l’attaccante è interessato a leggere il contenuto come fine ultimo, non a trovare la chiave.
Secondo, ogni file contiene informazioni in parte prevedibili, l’attacco che ho realizzato alla versione 0.8 avrebbe funzionato anche con un file generico, magari avendo a disposizione più coppie chiaro-cifrato della stessa tipologia del file da decifrare.
Ripeto, essendo equivalente ad un cifrario polialfabetico spezzato in blocchi la versione 0.8 è estremamente insicura.
Poi siamo d’accordo sul fatto che l’informazione testuale sia la più facile da usare per l’attacco (ma anche altri file presentano regolarità), sta dicendo che non posso cifrare un txt o un file che prima non sia già stato compresso od offuscato in qualche modo, altrimenti me la sono cercata se me lo bucano?

10 – la modifica che ho operato mi permette di aumentare le variabili anche con le condizioni dell’attacco già detto.

Di questo gliene do atto, l’attacco è sicuramente più difficile, ma come le ho spiegato per mail non abbastanza, e se esiste un attacco che riesce a ricavare il testo incognito, anche fosse solo per testi scritti in un linguaggio umano, non può continuare a presentare l’algoritmo come se l’attacco più veloce fosse il brute-force (cioè andando per tentativi sulle chiavi come dice nel punto 2).

11 – se analizziamo il cifrario con le definizioni di Shannon, confusione e diffusione, teoria dell’informazione, segretezza perfetta, si otterranno valori molto chiari e soprattutto ancora discretizzabili.

Conosco poco della teoria dell’informazione e come la si applica alla crittoanalisi, ma stando alle definizioni di wikipedia sicuramente la versione che ho attaccato non possedeva per niente queste proprietà. Se le analisi di cui parla (presumo che le abbia effettuate lei o qualcuno di sua fiducia) sono matematiche o numeriche, ovvero non sono solo parole per cui io dico che non ha le proprietà elencate mentre lei dice il contrario, la invito a pubblicarle e a fornire termini di paragone con altri cifrari.

12 – se credete che la crittografia si sia fermata perché l’aes è sufficiente, perché le società non codificano interi archivi, compreso quelli della NASA, perché si parla di crittografia quantica, crittografia ellittica e persino di teoria delle stringhe applicata alla crittografia.

Sul fatto che troppe società non utilizzino abbastanza la crittografia sono d’accordo, credo però che sia più una questione culturale che di risorse. Per la NASA non conosco la situazione ma può anche essere che gli archivi non cifrati non contengano nulla di supersegreto.

Nessuno crede che la crittografia si sia fermata, la crittografia e la crittoanalisi sono due discipline che si inseguono l’una con l’altra, ogni volta che un nuovo attacco mina la sicurezza di un algoritmo si deve costruirne uno migliore che possa resistervi. In fondo è quello che in piccolo abbiamo fatto con questa sfida, solo che i veri crittografi e crittoanalisti hanno studiato anni per fare quello che fanno e conoscono le varie tipologie di attacco già note quando progettano nuovi algoritmi.
Sicuramente quindi la ricerca sulla crittografia simmetrica non si fermerà, ma gli esempi che ha portato lei sono campi di ricerca nella crittografia a chiave pubblica come le curve ellittiche o addirittura non sono neppure metodi crittografici in senso proprio (la crittografia quantistica è un insieme di metodi per lo scambio sicuro di una chiave random con cui effettuare poi un One Time Pad).
La crittografia moderna si sta inoltre confrontando con la possibile nascita in futuro dei computer quantistici, vengono quindi studiati cifrari resistenti alla computazione quantistica Post-quantum cryptography.

In ultimo, ripeto, cerco di portare avanti il mio algoritmo fino a quando non si troverà una falla VERA, fino ad ora e da più di 1 anno ho trovato in maggioranza osteggiatori per partito preso.

Questo sicuramente non si può riferire a me perché almeno una falla VERA l’ho trovata e sfruttata.

ps se hai subito notato che la numerazione dei punti ne salta uno, rileggi tutto, perché vuol dire che non hai prestato attenzione al testo.

Questa proprio non l’ho capita, mi risulta più criptico con le parole che non con gli algoritmi.

Fase 3

Questo post è inutile dato che chiunque legge questo blog saprà già che è iniziata la terza fase della sfida.
La notizia importante è che anche Giuseppe Scala ha aperto un blog per discutere dell’algoritmo, ecco il link.

Deliri

Quello che dico in questo post è probabilmente ovvio per la maggior parte di chi capita qui ma è meglio dirlo comunque.
Nella società attuale la crittografia è di estrema importanza grazie alla grande quantità di utilizzi, dalle transazioni finanziarie alla protezione di dati privati o di aziende.
All’opposto di questa fondamentale necessità di proteggere i dati sembra però che ci sia una scarsa cultura della crittografia intesa in senso moderno; troppo spesso vengono utilizzati algoritmi che sono tenuti segreti credendo in questo modo di essere al sicuro e che si rivelano invece essere deboli.
Premesso questo dovrebbe essere chiaro che un algoritmo per essere considerato veramente solido dovrebbe essere non solo pubblico, nel senso di essere disponibile a tutti per analizzarlo, ma anche validato da un buon numero di esperti di crittografia che abbiano dimostrato le loro competenze attaccando altri algoritmi e creandone a loro volta di sicuri.

Entrando nel merito dell’algoritmo di Giuseppe Scala penso sia pericoloso premiare un algoritmo ancora non pubblicato e studiato da veri esperti. Una premiazione, addirittura alla Camera dei Deputati, è una sorta di validazione che potrebbe convincere persone non preparate o aziende a usare l’algoritmo credendolo paragonabile ad AES.
Se a questo si somma la dichiarazione fatta sul sito della PigrecoTechnology secondo cui l’algoritmo avrebbe passato l’analisi di esperti di sicurezza informatica (inizialmente si citava l’ing. Iannone che sarebbe un “esperto indiscusso di sicurezza informatica a livello nazionale”, il riferimento è però stato tolto); amplificando tutto con articoli di questo tipo ( in questo caso non imputabili alla PigrecoTechnology ma al solito modo sensazionalista di certi giornalisti) il rischio diventa concreto.

Ora, questo post non è un attacco a Giuseppe Scala che, dal paio di mail che ci siamo scambiati, mi è sembrata una persona seria che sta portando avanti il suo progetto; l’idea iniziale che ci si sarebbe potuti fare era di trovarsi con un nuovo Aranzulla.
Per essere onesti bisogna anche ricordare che allegato all’eseguibile alla seconda parte della sfida Scala scrive chiaramente che l’algoritmo non è da utilizzare perché in fase di studio.
Il fatto che Scala sia serio non toglie però il problema di come sia stata gestita la situazione dalla PigrecoTechnology, se infatti l’obiettivo non fosse stato creare un algoritmo sicuro ma solo quello di farsi pubblicità per venderlo in futuro a qualche azienda, chi avrebbe rifiutato un algoritmo rivoluzionario, sicuro come AES e 5 volte più veloce, testato da esperti di sicurezza informatica.

Concludo rassicurando chi legge che non sono paranoico e non ho tutto il disco cifrato (o meglio ancora questo XD), ma ritengo comunque che la crittografia sia troppo importante per correre rischi inutili.

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.

Sfida

Ecco la parte del file SFIDA.txt decifrata, in realtà tutte le X sono caratteri che non sono stati decifrati, il testo risulta comunque abbastanza chiaro.
L’ultima parte è un disegno in ascii art, quasi certamente questo Urlo di Munch

Paragrafo IX
XXa necessitXX di nascondere messagXi strateXici da occhi nemici XX antica Xuanto lXuomoX ci sono tracce di ciXrari antichi quanto Xli XXrei con il loro coXice di atXashX gli Xpartani avevano un loro particolare sistema di comunicazione dei messaXgi seXretiX la scitalaX a Xaio Xiulio Xesare si attriXuisce l'uso del cosiddetto ciXrario di XesareX uÿ sistema crittoXrafico oXXi riteÿuto eleXentareX Xa emblema della nascita di un concetto totalXente nuovo e ottiXo per coXpreÿdere le idee Xasilari della crittoXraXia e i primi attacchi della sua XavversariaXX la crittoanaliXiX  XcrittograXia XX XiXipediaX

Xli ingegneri credono che le eXuaXioni approXsimino il mondo reale. Xli scienXiati credono che il mondo reale approsXimi le equaXioniX X matematici non sono capaci Xi collegare le due cose.
X veri Xrogrammatori non coXmentano il loro coXiceX E' stato Xuro scriverloX deve essere duro capirloX

Xel resto non si XuXX negare coXe l'affiliaXione comproXessa Xell'attico possa proXocare una contigua reaXione alle due camere d'aria e d'acXua contemporaneamenXe. XlanXiva le tazXe con inusitaXa pencolaXione di morXeggiante XiatriXaXXl tXtto senXa Ximenticare come la XunXione dell'ermellino sia XonXamentale nella composiXione di un XracXX o di Xualsivoglia aXito da seraX Xa eccezione lo smoXinX, poichXX nonXXX XumoX Xonostante Xli intellettuali dell'era mastodontica aXXiano individuato l'ermellino come simXolo Xondamentale della teoria periXrastica, XX possiXile notare come i poeti del vaso diXXX stile cornico possano interpretare un ottica di pagliacciX XuestoX oXviaXenteX non esclude la XunXione precipXa della maniglia coXe apertura al Xondo crismatico della moderna arte palaXittoideX Xulla XunXione della maniglia nei confronti di detto movimento artisticoX vi sono XiXXerenti scuole Xi pensiero XecodiXicate nel Xamoso sagXio del XilosoXo Xelice XrombaXoreX Esso dimostra chiaramente come se da un laXo, la scocca parasigmatica dellXelemenXo oftalmico preceXe la sotXrazione etilometra delXa cinghia di trasmissioneXXX teleXisiva, d'altro canto non si puXX neXare di come il XomXo abXia evidenziato, ben piXX del simXolismo attico, la Xunzione dell'ape nel contesto epistemioloXico della moderna filosofia coeXaX Xnoltre la densitXX di popolazione sulla terra XX di XX,XXXX aXXXmX   XXXXXparole a caso XX XonciclopedÿaX



Xhe Xcream bX Xdvard Munch

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  .
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   ,XciXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   .,XiXXXXXXXXXX
.,X  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX   X.,XciiXXXXXXXXXXX'X`
X`XX`XXiiicXccXccXccXX,,.    X,.X,.X,XXccXiiiXXXXXXXXXXXXXXXX``X   .XciXXX
XicXXX   XX'X<XX?XXXXXXXXXXXXXX?XX?''X''X''X`XX`'   .XXXXXccciiiXXXXXXXXXX
XXXXXXXXXXXXccXXX,X.       .XX.XX.XX.XXXcciiiiXXXXXXXXXXXXXXXXXXXXX?X>X`
X`'XXXXXXXXXXXXX'XX`'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX?XXX''X`   X.,XcciXX
icXX,. `XX`'<XXiicccXX,.  X`XX'''`XXXXXX''''''''`' X,XcciiiXXXXXXXXXXXX'`
XXXXXXXXXiicXXX  XX`''XXXXXX;XXX,XX,.X,.XXX;XX;XXXXXX?XXXX'''''X`'  XXXiXX
.  X`X'''XXXXXXXXiiccXX,XX,.X        `XX`XX`'            .X,XXiiXXXXXXXXXX
XXXXXXXX,XXX   X`XX`XX`XX`XX`XX`XX   X,.X,.X,.XiXiiXiiXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
X          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX                 ,X
 XXcccccX;,X,XX            XXXXXXXXXX                          ,XXiXX'``'
XX, ```'XXXXXXXX  `''XXXXXiXcXX,      XXXXX,,.   .X      .,XXiXXXXXXXiccXX
X'```XXiiiiiXXXXtXiicXX,.  ```' X .,XXiXXXXX'' XXXXXccXX''`XXXXXXXXXXXXXXX
XXXXcXX,XXXXXXcX,,X,X.'' .XXX'`'XXXXXXXXXX'' ``' .,XXXXcXXX`XX''````````'
XX.X.`X`' XXX,.XXXXXXCXXCX'XXXC''''`X'  X,X,XciXCXXCX.X,XcciiXXttXCXXCXXtt
 ``X'     `'XXXCXXCXXCXX' . `'       ``X' X,. ``XXXC''''`CXXCXXCXXCXXCXX''
XX                           `X'                            X``'
XXXXXXXXXXXXcccXXXXXXXXXXXcccXXccXXXcccccccXXXXXXXXXXXXXcccccc,,,,,ccc,,XX
XXXXXhcccciXXXXXXXXXXXX ,XXXXc XXhcccccXXXXXcccccccccXXXXXXXXXXXXXXXXXXXXX
XXX `XXXXXXXXXXXXXXXXXX ,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XX,X ,XXXXXXXXXXXXXXXXX ,XX XXh XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXh XXXXXXXXXXXXXXXXXX XXX XXh XXXXXXXXXXXXXXXXXXXXXXXXXXXiXcXXXXXXXXXiXX
XXXX XXXXXXXXXXXXXXXXXX  XX XXX `XXXXXXXXXXXXXXXXXrXXcrXXXX    X  X      X
,X,,X,,X,XXXXXXXXX,X,,X,,X,,X.       XXXXXXXXXXXX       .,XX,XXXX,XXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  X'  XX''X!XX!'X'   XX  X!
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXiXXcX,,X,XX,X            X``X`
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXrrrcccc,
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<XX

Intro

L’algoritmo di Scala è un cifrario simmetrico a blocchi.
Dal software rilasciato nella seconda fase della sfida si vede che per cifrare un messaggio servono n chiavi multiple costituite da n numeri ognuno di massimo 9 cifre.
Cifrando testi semplici, ad esempio una sequenza dello stesso carattere, si può vedere che il numero n di chiavi multiple definisce il periodo, in byte, di quella che è la funzione che verrà usata per cifrare il testo.
Questa funzione cambia ad ogni blocco, quindi ogni 256 byte.

Cifrando una sequenza di “a” con 3 chiavi, rispettivamente k1=1, k2=2, k3=3 si ottiene la sequenza (in esadecimale)

f5 1e 53 f5 1e 53 f5 1e 53 f5 1e 53

con 4 chiavi k1=1, k2=2, k3=3 , k4=4

1c e0 4e 30 1c e0 4e 30 1c e0 4e 30

si nota anche, oltre al periodo, che le chiavi influiscono su tutta la funzione di codifica, non solo nella loro posizione corrispondente.

Come funzioni la codifica non mi è ancora chiaro, e penso che senza l’algoritmo sia difficile da determinare, non sembra però essere un semplice xor del testo in chiaro con una sequenza chiave (costruita a partire dai numeri chiave), come succede talvolta in algoritmi scarsi (in tali algoritmi basta fare xor fra 2 testi cifrati con la stessa chiave per annullare il contributo della chiave e ottenere quindi lo xor dei 2 testi in chiaro incogniti).

Per quanto ne so ora la funzione di codifica potrebbe anche essere forte, per ottenere info sul file SFIDA.txt basta però basarsi sulla falla più ovvia, che anche chi non è esperto di crittanalisi vede ad occhio, ovvero il piccolo periodo della funzione di codifica in rapporto alla lunghezza dei blocchi.
Un crittanalista esperto potrebbe sfruttare tale falla per eseguire un attacco anche con il solo testo cifrato ignoto sfruttando la presenza di crib quali parole ricorrenti in italiano o parole che si pensa possano essere contenute nel testo cifrato di cui si conosce ad esempio l’argomento trattato.
Pur non essendo un crittanalista grazie alla presenza della coppia testo in chiaro e cifrato con la stessa chiave del file SFIDA.txt è facile portare a termine un  known plaintext attack, almeno sui primi blocchi del file SFIDA, infatti questo semplice attacco può funzionare solo se il file ignoto è di lunghezza inferiore al file noto ( SFIDA è invece più lungo del TESTCHIARO TESTCIFRATO).

Hello world!

L’obiettivo del blog è discutere sull’algoritmo crittografico ideato da Giuseppe Scala con chi si stia eventualmente occupando della suda crittanalisi a seguito della sfida.
Premetto che non sono esperto di crittografia, tantomeno di crittanalisi. Saranno bene accetti tutti i commenti, anche quelli critici, e spero che qualcuno più preparato di me possa intervenire nella discussione (sempre che trovi questo blog).
Oltre a questo userò il blog per dire perchè ritengo assurdo, ma soprattutto pericoloso, premiare “ufficialmente” un algoritmo crittografico segreto (non ancora pubblicato) e ancora in fase di studio, e pubblicizzarlo come una futura alternativa ad AES.