Ecco, igor. L' indirizzo è http://rapidshare.com/files/247844468/Cript-decript.rar.html
Io ti dico che il numero criptato è 15185184924. Ora, anche avendo il programma, prova a decifrare il numero criptato.
...questa mattina ho dato uno sguardo alla mia mailbox, e ho trovato una sfida di Genuzzo.
...non è che abbia molto tempo a disposizione per queste cose, ma vista l'intraprendenza e la simpatia di Genuzzo, mi sono preso la briga di lanciare il suo programma.
Ho fatto cifrare i seguenti numeri: 1, 2, 3. Ho utilizzato sempre la stessa chiave di cifratura: 3 ... e mi è parso subito evidente l'algoritmo di cifratura utilizzato da Genuzzo:
Sia C il messaggio che si vuole cifrare. Sia K la chiave che si vuole utilizzare, il messaggio D criptato viene calcolato nel seguente modo:
D= C*K - K o, se vogliamo fare gli eleganti, D=K*(C-1)
Va da se che per decriptare il messaggio D e riottenere C, dovrei calcolare semplicemente quanto segue:
C=(D+K)/K
Tu Genuzzo, mi hai sfidato a decrittare 15185184924, forte del fatto che non conoscendo la chiave di cifratura K, non potessi ricavare il numero originale.
Questo è vero solamente ad una condizione, ossia che ogni volta che tu cifri qualche cosa utilizzi una chiave diversa.
Nel messaggio che mi hai scritto in privato, mi hai chiesto come faccia un malintenzionato a capire ciò che hai cifrato... la realtà delle cose è molto semplice: tu non userai mai la chiave una sola volta, ma userai la sta stessa chiave per cifrare più messaggi diversi. altrimenti, se per ogni messaggio che cifri ti devi ricordare a memoria una chiave diversa, tanto vale che ti ricordi a memoria direttamente il messaggio. Una volta che hai utilizzato la chiave almeno due volte, dato che il processo di calcolo è polinomiale, è possibile iniziare a fare una fattorizzazione parziale, una crittoanalisi di ricerca dei pattern comuni. Con due dati cifrati con la stessa chiave, se il numero non è grande posso forse già dirti il messaggio in chiaro. Se il numero è grande posso iniziare ad avvicinarmi statisticamente al risultato finale....più numeri cifri, più diventa facile individuare la chiave in comune. Dato che tu dicevi di utilizzare questa applicazione per cifrare elenchi telefonici, pin etc. va da se che un attaccante avrebbe in mano una buona quantità di materiale crittografico su cui fare l'analisi.
Oltre a questo devi pensare anche che normalmente non cifri un numero, ma una serie di dati. Quindi si può fare una inferenza statistica sulle ricorrenze di certi numeri sulla base di una serie di vocabolari "tematici", e questo consente di scremare ancora di più il tutto...
Le debolezze di questo algoritmo "crittografico" Genuzzo, sono molteplici:
(1) E' polinomiale, quindi la potenza di calcolo di un semplice PC è sufficiente per poter analizzare in tempi ragionevole il materiale crittografico.
(2) La sua sicurezza di basa sul fatto che la chiave venga utilizzata una sola volta (ma questo, salvo applicazioni particolarissime, non accade mai)
(3) Lo schema adottato non è one way, ossia è semplice tornare indietro
(4) Ci sono un mucchio di altre finezze per cui questo tipo di algoritmo non può essere definito sicuro.
In soldoni, con pochi samples di materiale crittografico, posso tranquillamente ricavare il numero che hai cifrato....
Se vuoi qualche dritta in tema di crittografica, scrivimi pure, sarò felice di darti qualche consiglio
Igor