skip to main | skip to sidebar
66 commenti

Quiz: decifrate il codice dello US Cyber Command [UPD 2010/07/09]

Il codice misterioso nel logo del Cyber Command


Questo è il logo dello US Cyber Command, la neonata organizzazione militare, con sede a Fort Meade, nel Maryland, che dovrebbe proteggere gli Stati Uniti dagli attacchi informatici e interdire le attività nemiche nel ciberspazio.

Se lo guardate bene (cliccate sull'immagine per ingrandirla), noterete che nell'anello interno c'è una sequenza di numeri e lettere che sembra un codice. Gli smanettoni del Cyber Command non hanno saputo resistere alla tentazione di infilare un po' di crittografia nel proprio stemma.

Riuscite a decifrare il codice e a documentare nei commenti la vostra soluzione?

Buon divertimento!


Aggiornamento: la soluzione è qui.
Invia un commento
I commenti non appaiono subito, devono essere tutti approvati da un moderatore. Lo so, è scomodo, ma è necessario per tenere lontani scocciatori, spammer, troll e stupidi: siate civili e verrete pubblicati qualunque sia la vostra opinione; gli incivili di qualsiasi orientamento non verranno pubblicati, se non per mostrare il loro squallore.
Inviando un commento date il vostro consenso alla sua pubblicazione, qui o altrove.
Maggiori informazioni riguardanti regole e utilizzo dei commenti sono reperibili nella sezione apposita.
NOTA BENE. L'area sottostante per l'invio dei commenti non è contenuta in questa pagina ma è un iframe, cioè una finestra su una pagina di Blogger esterna a questo blog. Ciò significa che dovete assicurarvi che non venga bloccata da estensioni del vostro browser (tipo quelle che eliminano le pubblicità) e/o da altri programmi di protezione antimalware (tipo Kaspersky). Inoltre è necessario che sia permesso accettare i cookie da terze parti (informativa sulla privacy a riguardo).
Commenti
Commenti (66)
Per iniziare è quasi sicuramente un codice esadecimale...
Io ho fregato.... sono andata a cercare :(
Ok, espelletemi dal blog.
E' un hash MD5, che si ottiene crittografando la seguente frase: "USCYBERCOM plans, coordinates, integrates, synchronizes and conducts activities to: direct the operations and defense of specified Department of Defense information networks and; prepare to, and when directed, conduct full spectrum military cyberspace operations in order to enable actions in all domains, ensure US/Allied freedom of action in cyberspace and deny the same to our adversaries" (senza virgolette).
Io ho provato a calcolare l'md5 di quel paragrafo, ma mi esce 98e1259d50ef66ddf1c6f443f8a86ec5.

Probabilmente sto sbagliando io, eh.
Si potrebbe provare a interpellare Giacobbo. Se è riuscito, decifrando i numeri, a indovinare chi vincerà i mondiali del sudafrica, potrebbe avere buone possibilità anche coi numeri del Cyber Command. :-)
@ RAR

La soluzione l'hai letta su Gizmodo! Così non vale.
Scusate, ma volete mettere il Vice Direttore di Rai2 con un polpo in uno zoo?
Non c'è competizione!
@ Gnome

Io l'avevo trovata su Wiki
Si, la soluzione è quella indicata da Raf, anche se non ha scritto la fonte ! Per verificare provate ad inserire il testo che ne viene fuori in un encriptatore online MD5 come questo qui: http://7thspace.com/webmaster_tools/online_md5_encoder.html
A quanto pare quei burloni hanno modificato (di una virgola) lo statement nel sito, e io usavo quello.

Vedi mo ad usare le fonti autorevoli, ti fregano pure loro.
December 2012
La soluzione è verificabile per la via inversa. Provate ad inserire il testo indicato da Raf, in un MD5 encoder online (ce ne sono tanti). Il risultato è proprio la stringa indicata nel logo. Sarebbe però interessante sapere come si è arrivati alla soluzione.
Per Gnome

@ RAR

La soluzione l'hai letta su Gizmodo! Così non vale.


Per la verità era Raf. Antipatia per il cantante Raffaele Riefoli, o confusione con il formato di file compressi?
Dovrebbe essere una frase criptata in MD5 Hash... e il testo in chiaro dovrebbe essere questo:
"USCYBERCOM plans, coordinates, integrates, synchronizes and conducts activities to: direct the operations and defense of specified Department of Defense information networks and; prepare to, and when directed, conduct full spectrum military cyberspace operations in order to enable actions in all domains, ensure US/Allied freedom of action in cyberspace and deny the same to our adversaries. "
Eh, infatti avevo scritto "@ RAF" ma mi sembra ci sia qualche crisi di identità!
ho barato, ho trovato la soluzione su wired, qui
Per arrivare alla soluzione e' stato abbastanza facile.
La stringa inserita nel testo era innanzitutto in HEX, e' di 32 elementi che trasformati in DEC non hanno un senso logico (con varie mutazioni non si ottiene nulla), quindi l'unica alternativa era che fosse criptata con un algo che da come soluzione una stringa di 32 elementi. La prima cosa da provare con 32 elementi in HEX in questo caso sono le tabelle HASH di MD5... basta una googleata sul web per trovare pagine che dalla hash tornano al testo in chiaro (senza star troppo a bestemmiare con md5)
USCYBERCOM plans, coordinates, integrates, synchronizes, and conducts activities to: direct the operations and defense of specified Department of Defense information networks and; prepare to, and when directed, conduct full-spectrum military cyberspace operations in order to enable actions in all domains, ensure US/Allied freedom of action in cyberspace and deny the same to our adversaries.

In rete si trovano tante soluzioni, ma apparentemente sono tutte sbagliate (per lo piu` manca una virgola precedente al primo and, come invece e` uso negli elenchi in inglese). Quella riportata da Wikipedia invece sembra essere giusta

Sulla mia macchina GNU/Linux


echo -n "USCYBERCOM plans, coordinates, integrates, synchronizes and conducts activities to: direct the operations and defense of specified Department of Defense information networks and; prepare to, and when directed, conduct full spectrum military cyberspace operations in order to enable actions in all domains, ensure US/Allied freedom of action in cyberspace and deny the same to our adversaries." | md5sum
9ec4c12949a4f31474f299058ce2b22a -

Il -n e` importante per evitare di aggiungere un carattere di fine linea che sballa tutto.

Saluti
andate su questo sito http://md5.noisette.ch/index.php e verificate. potete fare la codifica e decodifica del codice md5 in questione.

9ec4c12949a4f31474f299058ce2b22a

per la decodifica il risultato viene cercato e trovato su alcuni database su internet.
La vedo dura trovare il messaggio originale (anche se di un messaggio cortissimo) a partire da un md5: lmd5 si usa per verificare che un file/messaggio sia veramente quello desiderato: al variare di un solo byte del file l'md5 cambia comp'letamente. Dunque l'md5 non contiene assolutamente nessuna informazione utile per ritornare al file (non è un algoritmo di compressione reversibile per intenderci).

Oltretutto a un md5 può corrismpondere pù di un messaggio. Motivo per il quali alcuni dicono che qusto sistema non è sicuro (si può scambiare un messaggio con un tale md5 con un altro con lo stesso md5) ma ovviamente nella pratica sfruttare qesto sistema è praticamente impossibile. (anche perchè il messaggio nuovo dovrebbe avere come minimo senso).

Quindi non penso proprio che qualcuno abbia "decrittato"" l'md5. Al massimo qualcuno sapendo che è un md5) abbia provato con qualche frase come quella postata nei commenti et voilà.
è un hash md5 a quanto pare...

USCYBERCOM plans, coordinates, integrates, synchronizes and conducts activities to: direct the operations and defense of specified Department of Defense information networks and; prepare to, and when directed, conduct full spectrum military cyberspace operations in order to enable actions in all domains, ensure US/Allied freedom of action in cyberspace and deny the same to our adversaries
Dall'md5, essendo un hash, non si torna indietro. Bisogna conoscere il testo originale.
Nella soluzione di Raf manca il punto alla fine della frase. Con il punto, l'md5 risulta uguale.

Copioincollo da una prova fatta da me su un sistema linux:


echo -n "USCYBERCOM plans, coordinates, integrates, synchronizes and conducts activities to: direct the operations and defense of specified Department of Defense information networks and; prepare to, and when directed, conduct full spectrum military cyberspace operations in order to enable action
s in all domains, ensure US/Allied freedom of action in cyberspace and deny the same to our adversaries." | md5sum
9ec4c12949a4f31474f299058ce2b22a -
Non per dire, ma se si tratta davvero di un'algoritmo HASH non c'è verso di tornare al testo originale.
se si tratta veramente di MD5 la decodifica è "impossibile".
Da wikipedia "l'output (noto anche come "MD5 Checksum" o "MD5 Hash") restituito è tale per cui è altamente improbabile ottenere con due diverse stringhe in input una stessa firma digitale in output. Inoltre, come per la maggior parte degli algoritmi di hashing, non dovrebbe esserci possibilità, se non per tentativi (forza bruta), di risalire alla stringa di input partendo dalla stringa di output "

quindi l'unico modo di risolvere è "barare"

secondo questo database
http://www.md5decrypter.com/
ha ragione Raf
Certo, non si può tornare indietro da md5 a testo originale. Si può solo procedere per tentativi, prendendo tanti testi e provando a calcolarne l'md5.
@zar

procedere per tentativi non servirebbe a nulla. A parte il costo immenso in termini di tempo, 2 stringhe completamente diverse possono avere la stessa codifica
@ R3DKn16h7

E' vero quello che dici per gli algoritmi di hashcode in generale ma non lo è più per l'md5 che è stato "rotto" (http://en.wikipedia.org/wiki/MD5#Security)
@Paolo: ok, ma due stringhe di senso compiuto che hanno lo stesso md5 è difficile trovarle in tempi umani.
Però, però...
A quanto pare la sorgente di questa risposta è questa http://www.niconnect.com/
E chi ci garantisce che sia la verità?
Vabbè, magari ce lo confermerà questo Cyber Command, però non vorrei dire, ma tutti questi programmi che ci sono in rete e che sono stati citati dai miei predecessori sono database, non "calcolatori"...
Troppa fretta nello stabilire la risposta...
@zar

Bisognerebbe però sapere che l'input crittografato è una frase di senso compiuto e non magari l'output di un altro algoritmo. Quello che voglio dire è che partendo solo dalla stringa crittografata è inutile cercare di ottenere l'originale. L'informazione viene persa ne processo crittografico. L'entropia dell'informazione aumenta.
@Paolo: certo, hai ragione. Diciamo che il testo segnalato sopra è uno dei possibili candidati (questo può essere verificato a posteriori, e la risposta è certa: quel testo produce quell'md5, non c'è dubbio). Poi possono esistere altri testi aventi lo stesso md5. Non esiste un calcolatore che, a partire dall'md5, produce il testo originale "vero", proprio per come è costruito l'md5.

Diciamo che quel testo è molto probabile, dato che parla proprio del Cyber Command.
(mi piacerebbe comunque sapere come ha fatto niconnect a trovare il testo)
@Zar è il magico mondo dell'hackering... per quello non mi fido finchè non me lo confermano :D!!
@dopolapioggia: ma la conferma c'è, puoi verificare anche tu.
@Paolo: Se per entropia intendi quella definita in Teoria dell' Informazione (informazione media per simbolo), non mi convince molto la tua dichiarazione ed ancora meno il rapporto con la perdita di informazione.

Al più l'entropia per cifra esadecimale della stringa MD5 sarà 4 bit, è vero che nel caso sia del testo ad essere codificato l'entropia sarà minore, ma questo mi è utile solo per capire al più quanti byte di testo potrei codificare in una stringa MD5 senza perdita di informazione...

Non mi è chiaro invece il passaggio logico che hai fatto tu: Dato che perdo informazione allora l'entropia aumenta
Allora io sostengo abbia fatto così:
http://www.defense.gov/home/features/2010/0410_cybersec/docs/CYberFactSheet%20UPDATED%20replaces%20May%2021%20Fact%20Sheet.pdf
Leggete la riga Mission Statement... (e la data del documento)
Per me tutto è cominciato da qui e tutto si è concluso con questo ;)
E tra l'altro essendoci mormorii in rete che il codice fosse relativo alla mission...
@Zaf , questa soluzione non sarà poi così tecnica, ma secondo me il tipo si è aiutato così ;)
Ok, l'avete decodificato.

Pero'...

Cosa indicano le otto stelle?

Dubito siano messe li a caso.
@buled

Si scusa...forse sono stato un po' generico. Non mi riferivo in particolare alla Teoria dell'Informazione. Ma era se vuoi una "citazione" alle leggi della termodinamica (forse non del tutto pertinente) che stando a uichipedia (scusa ma in ufficio non ho altre fonti più dignitose)

"può enunciare come "a un aumento di entropia corrisponde una perdita di informazione su un dato sistema, e viceversa".
@Andrea Sacchini

visto il risultato di ieri sera, mi pare proprio che la previsione sia fallata.... ;-)

l'unico che ci azzecca è il polpo!!!!
http://it.eurosport.yahoo.com/06072010/45/mondiali-2010-spagna-germania-paul-dice-spagna.html
Significherà sicuramente “All Your Base Are Belong To Us.” criptato con qualche algoritmo :P
@Paolo: Se parli di entropia termodinamica allora è vero, in effetti l'entropia è proporzionale al logaritmo della probabilità di uno stato. Dato che più uno stato è probabile meno informazione porta, entropia e informazione sono in rapporto inversamente proporzionale.

Nell' entropia definita in teoria dell' informazione invece, nonostante abbia molte analogie con quella termodinamica, il suo valore rappresenta quanta informazione può portare ogni simbolo (mediamente), dove l'informazione di ogni simbolo è il RECIPROCO del logaritmo della sua probabilità. Questo significa che un simbolo più informazione porta,più improbabile è e più tende ad alzare l'entropia. In questo caso sono quindi direttamente proporzionali.

Le due entropie hanno anche però della analogie, ad esempio se prendo un volume con delle particelle avrò massima entropia (e minima informazione) se sono uniformemente distribuite nel volume, allo stesso modo se prendo n simboli l'entropia sarà massima (con massima informazione) se la probabilitàdi simbolo sarà distribuita uniformemente tra questi
Cosa indicano le otto stelle?
Dubito siano messe li a caso.


Le stelle sono disposte quattro (4) alla volta, in due (2) gruppi, cioé:
42
La risposta alla domanda criptata per eccellenza....
:D
Primo tentativo da tabella ASCII, ma si vede dal primo carattere (9E hex = 158 dec) che è fuori tabella.

Seconda idea, un hash, MD5 data la lunghezza.
Da un MD5 calculator on line provo:

0bd2609cb157cbd40cbecd004bc5ae3f United States Cyber Command
3cf20c0b59fe7ef60c29d934d6e90ea4 **** United States Cyber Command ****
905032aaf43da5754a260846a4e68365 USCC
2600c735dd6df1c8730c5d401dd305cd UNITED STATES CYBER COMMAND
c09fb715e3b2242bc3d8d16e46f2497a **** UNITED STATES CYBER COMMAND ****
0eaa52acc47d30b24c1f2b626431d299 USCYBERCOM
ee4f063eb7722bedaa2c3cc4a3a306e0 US Cyber Command

fine delle idee e del divertimento :-(

non ho abbastanza vita per andare avanti (e tocca anche lavorare ne frattempo)

con google non c'è divertimento, ma come hanno trovato la soluzione? (magari è scritto sul loro sito!)

Ciao a tutti!
Quale sarà il primo film americano ad usare questa agenzia, ed il suo "enigmatico" stemma, per costruirci una storia?
Sarà un altro film con Nicolas Cage "il mistero delle torte farcite", sull'onda dei film pro massoneria...
Pietro Palladino ha commentato:
@ R3DKn16h7

E' vero quello che dici per gli algoritmi di hashcode in generale ma non lo è più per l'md5 che è stato "rotto" (http://en.wikipedia.org/wiki/MD5#Security)


No, affatto... R3DK diceva che è impossibile risalire algoritmicamente dall'MD5 al testo originale, ma ci si può arrivare solo tramite tentativi.

MD5 è considerato compromesso nel paragrafo che linki tu perché è invece possibile, dato una stringa che ha un certo hash, costruire un'altra stringa col medesimo hash, ovvero trovare una collisione.
Ma questo non ha niente a che vedere con la prima affermazione.

Questa vulnerabilità compromette l'uso dell'MD5 per l'autenticazione, ma non permette affatto di risalire alla stringa originale dato un MD5.
La soluzione del gioco in realtà è molto più semplice di quel che si crede.
http://tinyurl.com/yonrvc
Questo commento è stato eliminato dall'autore.
> La soluzione del gioco in realtà è molto più
> semplice di quel che si crede.
> http://tinyurl.com/yonrvc

FUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU

Tje':
http://www.youtube.com/watch?v=8aJjMOy-Ops
@ Economa

Scusate, ma volete mettere il Vice Direttore di Rai2 con un polpo in uno zoo?
Non c'è competizione!


In effetti il polpo sta dimostrando di essere più adatto di Giacobbo a stare nella direzione di Rai2.
Secondo me la soluzione è molto più semplice. Il primo che ha pubblicato la soluzione, ciunque esso sia, la sapeva :-)

Ciao
VB
Ok, non vi siete voluti divertire come si deve perchè avete trovato su google la soluzione, e su qualche database di md5 la stringa originale.

PEGGIO PER VOI!! ;)

Allora provate con un'altra stringa md5, ottenuta sempre facendo l'md5 (una volta sola) di un semplice testo. Eccola qui, vediamo se senza avere la soluzione sotto mano siete altrettanto bravi....

632f478d9c6821d59f5d7062b6710b61
Scusate, non sono esperto di crittografia, ma un conto è "rompere" una funzione di hash creando due file DIVERSI che hanno LO STESSO hash, altra cosa è "craccare" la funzione di hash pretendendo di INVERTIRLA.

Anzi, direi proprio che -se ce ne fosse bisogno- il trovare due file diversi con lo stesso hash è proprio la DIMOSTRAZIONE della non invertibilità della funzione di hashing.
Se ti do l'hash di uno dei due file che hanno lo stesso hash, come diavolo fai a sapere da quale dei due io l'ho generato? ;D

---

Il decripter linkato nei commenti, da quanto ho capito, si appoggia a un database che contiene milioni di frasi in corrispondenza al loro hash e la ricerca inversa si basa proprio sul fatto che è improbabile che due frasi di senso compiuto diverse abbiano lo stesso hash, per cui se una frase è abbastanza "famosa" ne calcolano l'hash e lo memorizzano lì e poi quando qualcuno chiede di "invertitre" quell'hash loro gli propinano quella particolare frase che è solo una delle INFINITE frasi che hanno quell'hash.
(Le frasi sono infinite, visto che l'algoritmo di MD5 non ha un limite di lunghezza prefissato sulla stringa di input - i codici MD5 sono in numero enorme ma FINITO, visto che hanno lunghezza finita.
Come è possibile con un indice FINITO indicizzare univocamente un insieme INFINITO?)

---

Se criptate la vostra frase con QUEL md5 calculator, lui -ovviamente- se la salva nel suo database assieme al suo hash, e poi quando voi gli chiedete di "decriptare" l'md5 vi richiama semplicemente la entry che VOI avevate appena inserito! :D

Funziona con frasi non inserite da voi, solo se sono abbastanza famose per essere nel database.


********************************************
A chi sostiene sia possibile "decriptare" un MD5, lancio una sfida. Decriptatemi questo MD5:

5e9b114e64f3e9a7adc7fcef94bec73e
Hint: "A decryption for this hash wasn't found in our database" NON è la frase di partenza corretta! :D :D :D :D
Ludovico, mi hai battuto sul tempo! :D

---

Quoto Valter.

La frase "in chiaro" (ma sarebbe meglio dire "originale", visto che l'hashing non fornisce un codice invertibile, quindi è improprio parlare di crittografia) è stata resa pubblica da chi la conosceva, insieme alla spiegazione dell'hash sul logo.
Dopodiché milioni di internauti hanno provato a calcolare l'MD5 di quella frase "per vedere se funziona" ed ecco che l'accoppiata frase-hash è diventata "famosa" popolando i database...
Qualche piccola e pedante spiegazione. Una procedura di hash, come MD5, non è crittografia in senso stretto: non prevede l'inserimento di una chiave e non è nemmeno una funzione biiettiva. Inoltre, la lunghezza dell'output è fissa, comportando perdita d'informazione.

In realtà, MD5 è solo un implementazione (fallibile) di un concetto teorico, che prescrive alcuni parametri:
- una funzione hash deve essere deterministica (priva di casualità): n applicazioni ad un determinato input ottengono n risultati identici;
-il risultato deve essere omogeneo (avere una lunghezza predeterminata)
- la funzione è iniettiva (ad ogni possibile input deve corrispondere uno e un solo output);
- (nel mondo binario) al cambiamento di un bit di input deve corrispondere il cambiamento del 50% dei bit di output.

Non proseguo con altri dettagli, ma i punti principali sono questi.
Ora, non è difficile capire che innanzitutto una funzione hash scritta in modo appena decente non è invertibile: se ho un generico valore, questo può essere stato calcolato a partire da un solo punto (".") o da un testo teoricamente infinito.

Se qualcuno si sta chiedendo a che diavolo può servire una cosa simile, rispondo con due paroline: "firma elettronica".
Funziona così: prendo un lavoro complesso e di cui voglio garantire non la riservatezza (ci sono altri modi...) ma l'integrità. In termini potabili, voglio essere sicuro che nessuno aggiunga o tolga uno zero dal bilancio dell'azienda, oppure che nessuno modifichi un paio di paroline nel mio testo (pubblico) per farmi passare da idiota/cornuto o altro a piacere.

Come fare? semplicissimo: calcolo l'hash dei miei dati di dimensione arbitraria, ottenendo una sequenza univoca e inoltro questo valore al mio corrispondente con un canale affidabile, cioè inalterabile (vabbè, difficilmente modificabile...). Costui potrà ricalcolare l'hash dei dati ricevuti e verificarne la corrispondenza, ottenendo così la ragionevole certezza che nessuno abbia modificato i dati originali.

Questo vale ovviamente in condizioni ideali. E nella cruda realtà?
Purtroppo, le funzioni non possono essere iniettive: ho infiniti input e un numero finito di possibili output. Questo implica che, in teoria, qualcuno potrebbe modificare il mio input in modo così intelligente da ottenere lo stesso hash. Bè, in realta questo qualcuno ha una pazienza che al confronto la ricerca di un ago in un pagliaio è impegnativa come un battito di ciglia.

Seriamente, le collisioni (diversi input, pari output) sono rare a meno di errori o debolezze. MD5 è stato dimostrato vulnerabile ad un attacco ed è stato generato addirittura una collisione tra una lettera di raccomandazione e una security clearance. Tale Vlastimil Klima ha dimostrato di poter ottenere collisioni in secondi su un normale PC.

Mi piacerebbe avere il tempo di modificare il suo sorgente (pubblico) perché generi una collisione che stupisca il buon Ludovico Grossi....

Saluti,
Bob
Trovare una frase che soddisfi il criterio di sintesi è un problema diverso che trovare la frase esatta.

Il secondo è irresolubile se chi ti propone il problema non ti dice se hai indovinato o no, del primo non so valutarne il grado di difficoltà ma per quello che ho capito appare teoricamente possibile, naturalmente potrei non aver capito bene.

Qualcosa rende impossibile prendere il codice nello stemma e trovare una frase apparentemente cogente?

Tipo...

Fate i Bravi e Incassate (F.B.I. ,Da una storia di paperino)

Calypso Irish Army (C.I.A. ,da un fumetto, Tank Girl)

Questi esempi sono certo di una semplicità disarmante, posso facilmente infilarci un "Fetenti Bestioni Irriducibili" che si adatta piuttosto bene alla percezione che il pubblico ha dell' F.B.I.
bobplissken:

Guarda che Ludovico Grossi non ha mica detto che è impossibile generare una collisione!

Ha detto esattamente quello che hai detto tu, cioè che proprio perché le collisioni esistono la funzione non è invertibile e quindi è impossibile risalire alla frase originale a partire dal suo hash.

Per generare una collisione devi conoscere la frase originale, e cercarne un'altra che generi lo stesso hash.

Se tutto quello che conosci è un hash, con l'algoritmo generatore di collisioni puoi generare 2 o più frasi a caso fra le infinite frasi che generano quell'hash.

Quindi se la frase originale è ignota, non c'è algoritmo che tenga: a partire dall'hash non la puoi individuare.

Altrimenti avresti generato un algoritmo di compressione lossless che è in grado di comprimere infiniti gigabyte (di watt? :P) in una stringa di lunghezza finita.

---

Cose peraltro tu stesso hai detto.

Il punto è che il buon Ludovico non ha detto nulla in contrasto con quel che hai detto tu. (E che peraltro avevo già detto, seppur in maniera meno precisa, anche io).
"basta una googleata sul web per trovare pagine che dalla hash tornano al testo in chiaro"

lol.
E’ un codice MD5 hash. In pratica il logo contiene al proprio interno la descrizione dell’agenzia, il tutto riassunto in un codice numerico.

Chi non ci crede può provare ad inserire il codice qui: http://www.md5decrypter.com/
@Fry Simpson


>Guarda che Ludovico Grossi non ha mica detto che è impossibile generare una collisione!

Cancello subito il cucciolo di equivoco: ho citato Ludovico solo perché ha posto la sfida e non per aver detto cose sbagliate.

> Ha detto esattamente quello che hai detto tu, cioè che proprio perché le collisioni esistono la funzione non è invertibile e quindi è impossibile risalire alla frase originale a partire dal suo hash.

Corretto. Le collisioni esistono perché la funzione ha un dominio infinito e un codominio finito, quindi non può essere iniettiva. Per ammettere una funzione inversa, l'iniettività è condizione necessaria (ma non sufficiente)

>Per generare una collisione devi conoscere la frase originale, e cercarne un'altra che generi lo stesso hash.
Se tutto quello che conosci è un hash, con l'algoritmo generatore di collisioni puoi generare 2 o più frasi a caso fra le infinite frasi che generano quell'hash.

Non è del tutto corretto. Mi basta una frase, o meglio una stringa, che generi lo stesso hash per aver dimostrato una collisione, indipendentemente dalla conoscenza dei dati che hanno generato quell'hash. Il problema è invece praticamente inaffrontabile se voglio altri dati *di senso compiuto* con lo stesso hash,
Ad ogni modo, l'autore che ho citato è andato molto avanti nel dimostrare (e generare!) collisioni: http://cryptography.hyperlink.cz/MD5_collisions.html

>Quindi se la frase originale è ignota, non c'è algoritmo che tenga: a partire dall'hash non la puoi individuare.

Mai sostenuto il contrario, anzi: se la lunghezza della frase è superiore alla lunghezza dell'hash è semplicemente impossibile ricostruire l'originale a partire dall'hash.

>Altrimenti avresti generato un algoritmo di compressione lossless che è in grado di comprimere infiniti gigabyte (di watt? :P) in una stringa di lunghezza finita.

... e avrei messo in discussione TUTTO il lavoro della comunità scientifica degli ultimi n secoli! ;-)
Il pensare di affermare una cosa del genere mi ricorda la storiella del tipo in autostrada che sente alla radio "attenzione, c'è un pazzo contromano!" e urla "un pazzo? qui sono TUTTI pazzi!" ;-)

Bob (che per hobby coltiva teraflops di BTU)
Justin:

Sì, ormai è stato detto in lungo e in largo che la descizione dell'agenzia genera quell'MD5, e che il sito da te linkato, nonché svariati altri, sono in grado di "ricordarselo". Ciò non significa che l'MD5 sia una funzione invertibile.

Se non ci credi, ti rinnovo la sfida. Prova a vedere se quel sito decripta questo MD5:

5e9b114e64f3e9a7adc7fcef94bec73e

Se il sito fosse un vero decifratore (cosa che non è possibile perché il dominio della funzione è infinito e il codominio finito) sarebbe in grado di decifrare qualunque MD5, questo incluso...
@bobplissken:
Mai sostenuto il contrario, anzi: se la lunghezza della frase è superiore alla lunghezza dell'hash è semplicemente impossibile ricostruire l'originale a partire dall'hash.

Non capisco perché metti questo vincolo così preciso della lunghezza... è solo per un fatto di numero di candidati per un attacco a forza bruta e hai usato quella lunghezza come approssimazione di un limite oltre il quale il numero è troppo alto? O c'è qualcosa che mi sfugge?

Comunque aggiungo che mentre è molto difficile trovare, data una stringa ascii di senso compituo o un file binario, trovarne un altro nello stesso formato e con un senso valido che abbia lo stesso MD5, la vera vulnerabilità di MD5 si realizza nella possibilità di trovare collisioni tra certificati CA per SSL, dove c'è più libertà di cambiare alcune parti del binario pur rimanendo con un risultato valido.
Il vincolo sulla lunghezza è piuttosto semplice: se il mio algoritmo di hash non comprime in modo lossless l'informazione (se ci pensi, scazzotterebbe con l'output omogeneo di lunghezza determinata) e se la lunghezza del testo originale è maggiore di quella dell'hash, semplicemente ho perso informazione che non è recuperabile. Quindi, diventa impossibile recuperare l'informazione originale a partire dall'hash.
Ok, ok, dovrei parlare di informazione e di entropia, ma come abbozzo va bene così... ;-)

Quanto ai certificati, concordo.
Anch'io sono della stessa opinione... non sarà un conto preciso, ma in linea di massima rende l'idea: La lunghezza massima di input codificabile univocamente con un hash da 128 bit (come MD5) è 128 bit.
Poi tutti i dettagli dipendono sia dal particolare hash (che potrebbe generare collisioni anche per stringhe inferiori ai 128) sia per il tipo di input (ad esempio restringendomi solo a testi di senso compiuto).
Allo stesso modo potrei dire che se avessi testi composti dal solo carattere 'a', potrei mappare univocamente qualsiasi file da 0 a 340 mila miliardi di yottabyte, questo perchè l'informazione che contengono quei file è comunque rappresentabile con 128 bit.

Allo stesso modo limitandosi ad esempio a 65536 parole inglesi , si potrebbero rappresentare frasi fino a 8 parole.

Quindi tutto è relativo, ma quello che avviene di sicuro è (e sembra banale) che con 128-bit di hash si potranno rappresentare solo 128 bit di informazione, che nel caso di bit completamente casuali consistono in stringhe lunghe ESATTAMENTE 128 bit