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.