Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1

    md5 e sha1 sono sicuri?

    Leggendo diverse guide ho sempre letto che, a fini di sicurezza, il salvataggio delle password in db conviene farlo in md5 o sha1.

    Tuttavia sul web si trovano alcuni siti che permettono di "decriptare" tali hash grazie ad un database che contiene una serie di hash "famosi":

    http://md5.gromweb.com/?md5=5f4dcc3b...8327deb882cf99

    Ad esempio "5f4dcc3b5aa765d61d8327deb882cf99" è md5 della stringa "password" (l'ho testato e funziona con molte parole di senso compiuto): quindi la sicurezza di tali hash è del tutto relativa cioè dipende dalla password scelta da chi si registra!

    A questo punto ho maturato una convinzione (forse sbagliata????)!!

    Non è più sicuro un sistema di criptaggio two-way (si dice così?) cioè criptaggi "reversibili" a chiave segreta? (come si chiamano tecnicamente?)
    Ne ho provati alcuni:
    - funzione cript() (sfruttando il secondo parametro)
    - http://forum.html.it/forum/showthrea...hreadid=786252
    - http://php.html.it/script/vedi/5495/...ption-library/
    - http://free-script.it/post/Script_ph...assword-26.htm

    Per poter decriptare i dati in tal caso sarà necessario oltre che fare una sql injection anche risalire alla chiave utilizzata per criptare e conoscere la funzione utilizzata!!

    Dalla teoria alla pratica...
    Tale dubbio mi è sorto mentre stavo studiando un sistema di recupero password di un sistema di login.
    Ovviamente salvando in md5 o sha1 mi complicava la procedura di recupero password in quanto mi obbligava a cambiarla, a seguito di invio di una mail con una variabile GET che nn ho ancora capito bene cosa deve contenere.
    Mentre con sistemi di criptaggio reversibili sarebbe molto più semplice recuperare la password...

  2. #2
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Forse il mio intervento sarà sbagliato, ma ci provo lo stesso:
    hai mai pensato a fare una md5 dentro md5?
    Se "password" -> md5 = "5f4dcc3b5aa765d61d8327deb882cf99" , beh allora rifai un'altra passata no?

    Codice PHP:
    $password "password";
    $passwordMd5 md5($password);
    $passwordMd5_Md5 md5($passwordMd5); 
    Sembra banale, ma secondo me è molto più sicuro!
    "To iterate is human, to recurse, divine." (R.(Heller))

  3. #3
    Originariamente inviato da the-bit
    hai mai pensato a fare una md5 dentro md5?
    Si ci avevo pensato... avevo pensato anche a sistemi ibridi e misti

    md5(sha1("string"));

    oppure

    cript(md5("string"), "chiave_segreta");

    etc etc

    Però era una discussione un pò più generale...
    e poi volevo capire cosa mettere tramite nel link come variabile GET er recuperare la password

  4. #4
    Ma non è che serva a molto...perchè in ogni caso, al momento del login dovrai fare sempre il doppio passaggio md5...quindi in pratica non serve a niente 1 o 100

    Invece, oly1982, perchè non utilizzare password alphanumeriche?

  5. #5
    Originariamente inviato da Samleo
    Ma non è che serva a molto...perchè in ogni caso, al momento del login dovrai fare sempre il doppio passaggio md5...quindi in pratica non serve a niente 1 o 100

    Invece, oly1982, perchè non utilizzare password alphanumeriche?
    scusami ma nn ho capito...

  6. #6
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    oly1982, ci sono diversi metodi per aumentare la sicurezza del hash, leggi ad esempio qualcosa su hmac, o vai direttamente al manuale: http://php.net/hash_hmac.

    Il double md5 che ti e' stato suggerito non va bene, alcuni dei db che hai menzionato ormai hanno anche questa tipologia di hash all'interno.

  7. #7
    Gli algoritmi di hash sono intrinsecamente irreversibili, ma ovviamente non garantiscono con assoluta certezza l'assenza di collisioni (due parole diverse con stesso hash); e' altamente improbabile, ma puo' succedere.

    Ora non ricordo esattamente i dettagli, ma ora md5 e' considerato "superato", sono stati trovati degli exploit per trovare collisioni, quindi il suo uso e' sconsigliato a favore di altri come sha1.

    Per quanto riguarda le parole "famose" e' molto semplice: basta aggiungere alla parola un "salt", una stringa di tua scelta e fare l'hash di quello. Tu inserisci "password" ma ottieni l'hash di "password" piu' una stringa ignota, quindi non puoi paragonarlo al hash di "password" liscio.

    Usare funzioni di crypting sposta solo il problema della sicurezza dalla "reversibilita'" dell'hash alla segretezza della chiave privata.

  8. #8
    Originariamente inviato da bubi1
    (...)hmac
    Originariamente inviato da k.b
    (...)
    basta aggiungere alla parola un "salt", una stringa di tua scelta e fare l'hash di quello.
    (...)
    Usare funzioni di crypting sposta solo il problema della sicurezza dalla "reversibilita'" dell'hash alla segretezza della chiave privata.
    Interessantissimo!!!! (grazie immensamente...)

    ... e quindi...
    Originariamente inviato da oly
    (...)
    la procedura di recupero password (...) a seguito di invio di una mail con una variabile GET che nn ho ancora capito bene cosa deve contenere.
    Ti dico fino dove sono arrivato nella procedura di recupero:
    FASE 1) un utente richiede l'invio di una nuova passwrod inserendo la sua email;
    FASE 2) a seguito della richiesta salvo in una tabella apposita del database (ad esempio "new_pass") una password temporanea e contestualmente invio una mail
    FASE 3) nella mail devo inviare un LINK con variabili GET che cliccato porta ad una pagina che recepisce e verifica le variabili GET (dopo essere attentamente validate);
    FASE 4) tale pagina: eliminerà il record dalla tabella "new_pass"; fa update della nuova password nella tabella utenti; invia una mail con la nuova password.

    Il punto: cosa devo mettere come variabili GET Del LINK inviato con la email???

  9. #9
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da oly1982
    Il punto: cosa devo mettere come variabili GET Del LINK inviato con la email???
    generi una stringa random e univoca (ad esempio con md5(uniqid('',true).$qualche_salt) ), la salvi in un campo dedicato, la metti nel link, e quando ti torna l'utente passandotela in get, fai il confronto.

  10. #10
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Originariamente inviato da k.b

    Ora non ricordo esattamente i dettagli, ma ora md5 e' considerato "superato", sono stati trovati degli exploit per trovare collisioni, quindi il suo uso e' sconsigliato a favore di altri come sha1.
    Scusa, potresti darmi qualche info in più? Non vorrei andare O.T. ma è una questione che mi interessa.
    Secondo voi quali sono i metodi più sicuri per criptare una pasword in una database MySql? Immaginando di gestire utenti e roba varia.
    "To iterate is human, to recurse, divine." (R.(Heller))

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.