Sicurezza delle chiavi di crittografia

0

Sto cercando di capire il modo migliore per crittografare le password per un sito di forum su cui sto lavorando.

Ho deciso che userò una crittografia come blowfish. Da quanto ho capito, hai una chiave e il testo che vuoi crittografare. La crittografia utilizza quindi la chiave per crittografare il testo. Quando un utente crea un account, pianifico di generare un UUID per loro. Questa sarà la chiave primaria quando vengono inseriti nel database con la loro password crittografata.

Ora, non ho intenzione di permettere agli utenti di scoprire il loro UUID, perché verrà archiviato solo nelle sessioni PHP. Ma, diciamo, in qualche modo qualcuno scopre l'UUID dell'utente.

Sarebbe quindi possibile decrittografare la propria password? Sarebbero in grado di trovare l'UUID da una sessione di php? Se c'è un problema con questo concetto, dovrei generare una chiave da usare e memorizzarla nel database con il loro UUID e la password?

Scusa se la domanda è confusa, non sono molto bravo nel mettere i miei pensieri in parole. Grazie in anticipo.

    
posta bcxavier92 28.07.2015 - 21:49
fonte

2 risposte

5

Bene, allora usiamo la terminologia corretta.

Non vuoi crittografare le password. Vuoi hash password. Questo è qualcosa di completamente diverso. Leggi questo . Esiste una buona funzione di hashing della password chiamata "bcrypt" che è derivata internamente da un algoritmo di crittografia chiamato "Blowfish"; da cui è arrivata molta confusione con alcune piattaforme software che affermano di fare "crittografia della password con Blowfish", quando in realtà significano "password con hashing con bcrypt".

Ora c'è anche un sovraccarico sul significato del tasto . Nella crittografia, una "chiave" è un pezzo di dati segreti che viene utilizzato come parte di un algoritmo crittografico. L'hashing della password non utilizza alcuna chiave (proprio perché non è crittografia , nonostante l'abuso di terminologia diffuso). Nei database, una "chiave" è un valore che viene utilizzato per fare riferimento a una riga in alcune tabelle. Questo non è affatto lo stesso tipo di chiave.

UUID sono valori che devono essere unici (in tutto il mondo), ma ciò non significa che non possano essere indovinati. Solo che quando si genera UUID "correttamente", allora non si otterrà lo stesso valore UUID di qualsiasi altra persona nel Mondo che genera anche UUID correttamente. Pertanto, l'UUID può essere utile per le chiavi del database (sebbene l'unicità di in tutto il mondo sia eccessiva), ma non per le chiavi di crittografia (ma l'hashing della password non richiede alcuna chiave). UUID può essere utile per sali , un componente di hashing della password.

    
risposta data 28.07.2015 - 22:02
fonte
1

Non si desidera crittografare le password, poiché con la crittografia, la chiave di crittografia e i dati crittografati possono produrre dati non crittografati. Se qualcuno accede al tuo negozio di dati, può ricreare la password originale. Con un hash, non si memorizzano informazioni sufficienti per ricreare i dati originali. Tutto quello che puoi fare è verificare che i dati di input producano lo stesso valore di hash.

    
risposta data 28.07.2015 - 22:55
fonte

Leggi altre domande sui tag