Newsgroup: it.comp.programmare
Titolo: [Sross post] Richiesta forse assurda

Qualcuno conosce un software capace di creare le combinazioni di tutte le
lettere dell'alfabeto per poter decifrare una stringa?
Io l'ho fatto, ma č un tantino lento (sapete.... miliardi di
combinazioni)... magari se qualcuno avesse un software piů veloce.........

 wrote in message
news:JNmU9.113162$Ou4.3...@twister2.libero.it...

A cosa ti serve generare le combinazioni/permutazioni di tutte le lettere
dell'alfabeto se vuoi decifrare una stringa?
Anche se avessi il Cray, non riusciresti comunque a decifrarla con quel
metodo, a meno che non e' stata criptata con un xor con un solo carattere a
caso!
Maurus

 caso!
Perchè ad una mia amica è arrivato un messaggio criptato sul cell...
criptato volutamente da un suo amico, ovviamente.
Praticamente a lettera uguale corrisponde lettera uguale, nel senso che
bisogna solo sostituire alle lettere del messaggio qualche altra lettera
dell'alfabeto, sapendo che però se sostituisco alla M la B, dovrò farlo con
tutte le M del messaggio.
Allora penso che facendo le combinazioni di tutte le lettere dell'alfabeto
(26! = assaaaaaaaaaaaaaaaai) dovrei poter rilevare il messaggio originale,
anche se poi, vallo a spulciare fra tutti quelli ricavati :(

 tutte le M del messaggio.
L'ultima volta che ho risolto una cosa del genere con la "Settimana
Enigmistica" non ho usato un programma con il computer...ho solo usato un pò
di ingegno e un pò di tentativi...
Alex

 
Se si tratta di questo tipo di "crittografia" e il messaggio è 
abbastanza lungo, fai prima a usare carta e penna.
Se il messaggio è in italiano puoi assumere che:
- quasi tutte le parole di più di 3 caratteri finiscono con una vocale.
- le vocali isolate possono essere 'e','a','o','i'.
- nei gruppi di due lettere le vocali sono spesso precedute da 'l' e 
seguite da 'l' o 'n' (articoli).
- le lettere doppie saranno molto probabilmente delle consonanti
- le lettere più frequenti in italiano sono vocali e l,r,t,s.
- puoi provare a cercare parole che ragionevolmente dovrebbero essere 
parte del messaggio (nome/soprannome dei tuoi due amici etc...).
Poi inoltre provare a capire se la sostituzione delle lettere è casuale   
(e in questo caso se è simmetrica o no, ex: A=M e M=A)  oppure se si 
tratta di uno "shift" dell'alfabeto per cui le lettere restano comunque 
consecutive (tranne, ovviamente, quella rimpiazzata con la Z e quella 
rimpiazzata con la A). 
Il secondo caso è più semplice poichè basta azzeccare una lettera per 
interpretare il messaggio (e in italiano è relativamente semplice 
azzeccare una vocale).
Se il vostro amico è pigro probabilmente avrà utilizzato un ROT13 (uno 
shift delle lettere di 13 posizioni) molto utilizzato su usenet: 
http://www.miranda.org/~jkominek/rot13/
Se vuoi saperne di più sulla crittografia a sui metodi di codifica ti 
consiglio di leggere "the code book" di Simon Singh (e consiglialo 
anche al tuo amico, visto che ha scelto uno dei sistemi meno sicuri 
:)).
-- 
Valter Minute
vmi...@inwind.it
 (the reply address of this message is invalid)

 :)).
Ti farò sapere :)


Non e' facile decodificare un messaggio.
Anche con un semplicissimo algoritmo di codifica di questo tipo dovresti
prima sapere la chiave e l'operazione che viene applicata:
Chiave: "non mi decodificherai mai"
Messaggio originale: "sono l'amante della tua amica e le sto scrivendo senza
che scoprirai cosa scrivo!"
A questo punto applico uno bello shift carattere per carattere fra la chiave
e il messaggio originale, anche se la chiave e' piu' corta, non fa nulla,
perche' riparto dall'inizio della chiave con gli shift.
Lo shift sara' di x posizioni dove x e' il numero corrispondente alla
lettera della chiave corrispondente al carattere da criptare.
Ad esempio devo criptare la 's' di inizio del messaggio: prendo la chiave di
indice corrispondente ovvero l'inizio della chiave: la 'n' a cui corrisponde
il numero 14 poiche' e' la 14a lettera dell'alfabeto, e quindi shifto la 's'
di 14 posizioni per trasformarla in una (tuvwxyzabcdefg-> 'g').
Poi continuo in un ciclo con il 2o carattere del messaggio 'o',  da criptare
col 2o carattere della chiave 'o' e cosi' via.
Per decriptare occorre ovviamente sapere la chiave e fare lo shift inverso.
Per cui i calcoli statistici sulle occorrenze delle lettere, delle vocali e
delle doppie non valgono piu'...
Maurus

 carattere da criptare. 
[...] 
Il nostro amico diceva che il messaggio era cifrato con una 
sostituzione semplice e quindi senza utilizzare chiavi.
Anche il  sistema di crittografia che descrivi (mi sembra che il metodo 
si chiami Vigenere o qualcosa di simile) può essere interpretato 
basandosi sull'analisi delle frequenze dei vari caratteri (anche se i 
160 caratteri di un SMS sono un po' pochini) cercando di dedurre per 
prima cosa la lunghezza della chiave. Se la chiave è di senso compiuto 
(come nel tuo esempio) la traduzione potrebbe essere relativamente 
semplice, una volta azzeccato qualche carattere della chiave.
Se il nostro amico non è sicuro del fatto che si tratti di una semplice 
sostituzione, dovrebbe considerare anche l'idea che si tratti di una 
trasposizione (i caratteri sono quelli giusti, ma gli si cambia 
posizione) oppure di un sistema di codifica ad-hoc per gli SMS (ad 
esempio utilizzando la tastiera al contrario (tasto 1=9, 2=8 etc...) o 
con metodi simili.
Se poi questi metodi di decrittazione non funzionano, si può passare a 
quelli di tortura :)


Non esageriamo con metodi alla Doc Emmet Brown... ho detto in anticipo che
nel messaggio crittografato a lettera uguale corrispondeva lettera uguale,
quindi niente chiavi pubbliche o private, nè sliding windows, nè
fetch/prefetch tric e trac tux e max... Semplicemente è arrivata uan stringa
del tipo WAD E AMSDE ADREG... ecc. ecc. che dovrebbe essere una frase
cifrata apposta da un ragazzo per una mia amica. Ora... a lettera uguale
corrisponde lettera uguale e quindi non c'è nessun complicato marchingegno
che usi roba da 128 bit :)


Gia' e' una tortura decifrare messaggi sms odierni, non criptati: tvtb, lol,
rotfl...
Maurus

 
Per non parlare dell'uso delle K.
