Newsgroup: it.comp.www.php
Titolo: md5() info

Ciao,
 
 
solitamente basta la funzione md5() per crittare un dato, o utilizzate 
altre vie per avere una certa sicurezza?
 
grazie

 solitamente basta la funzione md5() per crittare un dato
 
No, dato che md5 non cripta.


md5() non critta... ma l'hash allora serve solo come valore univoco 
rispetto ad un determinato dato?
 
grazie

 rispetto ad un determinato dato?
 
La definizione tecnica di "hash key" e` "valore che identifica (quasi) 
univocamente un certo dato".
 
Il quasi e` dovuto alla possibilita` di collisione (che e` molto bassa 
con md5, ancora piu` bassa con sha1, e si abbassa man mano che usi hash 
key piu` lunghe con algoritmi non stupidi).
 
Il tutto e` collegato alle hash map, che sono una struttura dati pensata 
per avere accessi in tempo O(1), nel caso ti volessi informare sulla 
teoria sottostante.
 
Le password si "crittano" con md5 semplicemente perche` a partire dallo 
stesso dato si ottiene la stessa hash key, quindi di fatto si rende 
"write-only" la password, impedendo anche al sysadmin di risalire a 
quella corretta.
 
Bye.

 quella corretta.
 
Di fatto non è una criptatura perché non esiste una chiave per rendere 
chiaro il contenuto, è una strada a senso unico. Per questo gli 
preferisco il termine inglese "hashing".

 tempo O(1)
 
 
nel ringraziarti cosa si intende per tempo O(1) ?
 
 
 
 

 nel ringraziarti cosa si intende per tempo O(1) ?
 
Notazione di Landau, in questo caso vuol dire che la complessità 
computazionale è costante rispetto alla dimensione del problema.
 
Se hai una struttura dati di dimensione N il calcolo della posizione di 
un elemento con le funzioni hash non dipende da N ma è costante.
Un esempio in cui invece non è costante è quello di una lista ordinata 
alfabeticamente, per sapere la posizione di un dato elemento devi 
cercarla e questa ricerca ha un peso che cresce al crescere di N.


thx!

 Bye.
 

A meno che non usi database di hash tipo 
http://md5online.net/
 o uno degli altri mille disponibili :)
 
Che e' il motivo per cui si "salano" le password :-)
 
Leonardo
 
-- 
Surstangas via akcipitr', la cxeval' fojnumas nur:
Jen vigla damo en brakum', kaj vi pensas pri forkur'?
Do li turnis sin, kaj turnis sin, kaj ekdormis sen singard';
Kaj lin apudis je l' vekigx, soldatoj kaj Barnard'.

 degli altri mille disponibili :)
 
Ah, le care vecchie rainbow tables. :)
 
Per fortuna (e per placare gli isterismi), ci sono 2^128 combinazioni di 
hash md5, il che significa un numero di una quarantina di cifre, in 
decimale, cioe` ben superiore alle dimensioni di un "normale" RAID SCSI 
fatto con dischi in commercio. In pratica serve un cluster abbastanza 
caro per memorizzare una cosa del genere, e con un fs apposito. :)
 
Bye.
 


E qui ci viene in aiuto San Amazon con il Cloud .. :)
 
Vabbe' cmq a parte gli scherzi, siccome la discussione ha preso una piega interessante (crittazione/hasing) e siccome sto sviluppando un applicazione personale per la gestione delle mie finanze (la stessa app nella quale sto cercando di implementare il supporto per Mondo e MySql) e voglio che tutti i dati all'interno dello storage (mysql - mongo - o qualsi voglia) siano criptati e che rendero' disponibile su sourceforge o simili, visto che scrivendola nel mio spare time e volendola fare sicura e' meglio che tutti gli interessati possano controllare le puttantate che ci scrivo :)
 
Per il MySql pensavo di utilizzare AES (per mongo ancora non ho guardato), ci sono delle best practise per memorizzare la chiave in modo che neppure io che sono il sysadmin possa decrittare le info?
 
Io pensavo di usare come chiave una chiave che l'utente deve inserire onthefly al login o per salvare, pero' vorrei anche evitare troppe rotture di maroni all'utente quindi potrei memorizzare questa chiave in sessione, ma il sysadmin curiosone potrebbe beccarmela mentre sono loggato e questo problema potrabbe sorgere anche implementando un sistema RSA Pubblick/Private, dove cappero la metto la private key per far si che l'utente non debba inserirla ogni 3x2? [visto che l'utente saro' io.. ;) ]
 
Avete qualche idea bella?
 
 
J.


usa sha1 md5 lo hanno "sminchiato"
si puo generare dati che danno lo stsso hash
 

 si puo generare dati che danno lo stsso hash
 
Non sono un esperto di crittanalisi, ma, se ho capito bene, la portata 
dello sminchiamento e` abbastanza ridotta, nel senso che puoi creare due 
dati che hanno lo stesso hash (e questo e` abbastanza normale e previsto 
dalla definizione stessa di hash key).
 
Il problema sorge quando usi gli hash come checksum per verificare che un 
documento sia vero.
 
Cioe`, banalmente, potresti prendere i sorgenti di Linux, infilarci una 
backdoor, smanacciare coi padding di tar e bzip2, e generare un file con 
lo stesso md5 dell'originale.
 
Il problema di questo tipi di attacco e` che cambi quasi sicuramente le 
dimensioni dell'originale, e se fai un doppio controllo md5-dimensione te 
ne accorgi.
 
Devi comunque avere il dato originale su cui e` basato l'hash, quindi nel 
caso di password memorizzate nel DB e` ininfluente, perche` se hai il 
dato originale (la password in chiaro) non te ne frega niente di 
"craccarne" l'md5. :)
 
Piuttosto, essendo un algoritmo che lavora su chunk di 512 bit (64 byte), 
lavorando su password corte (6-10 byte) ne rimangono molti (almeno 50) in 
un singolo chunk per un brute-force-attack che cerchi collisioni. E` 
comunque un lavoro immenso, non conoscendo l'originale.
 
Per completezza dico che anche sha1 e` stato craccato quasi allo stesso 
livello, e che si consiglia sha2.
 
Io, per l'autenticazione/checksum, consiglio gpg con chiave pubblica da 
4096 bit o oltre. :)
 
Bye.
 

 Avete qualche idea bella?
 
Per definizione il sysadmin ha potere assoluto, quindi non mi 
preoccuperei troppo di questa eventualita' (e, in ogni caso, non vedo 
molte soluzioni possibili).
 
Ciao.
 
-- 
Pubblicita' regresso: 
http://www.ferrero.org
 
** Per scrivermi in mail, sostituire nutella con ferrero...
** To contact me by email, change nutella to ferrero...