Quanto è sicuro sarebbe considerato questo metodo per l'archiviazione delle password

0

Ok, al momento sto memorizzando le password nel modo più sicuro a cui potrei pensare. Con l'uso di Crittografia e Hash. Le password vengono prima generate dall'utente come testo semplice con una lunghezza minima di 6 caratteri alfanumerici fino a 24 caratteri alfanumerici.

Dopo le password, il valore in testo semplice viene eseguito contro MCRYPT. Principalmente il codice TWO_FISH con IV casuale in modalità ECB. Quelli che vengono fatti, il testo in chiaro crittografato viene associato alla funzione hash che aggiunge anche SALT tramite $saltVar = dechex(mt_rand(0, 2147483647)) . dechex(mt_rand(0, 2147483647));

Il tutto è a posto SALT + La password crittografata viene cancellata tramite SHA-256 e poi reimposta dopo 15536 round. Creare una password relativamente sicura.

Secondo la mia opinione personale questo è un modo sufficiente per proteggere i dati, poiché in parte non si usano chiavi, non c'è modo di decrittografare questo, altri di eseguirlo di nuovo con password di testo in chiaro e creare un temporaneo calcolato hash della stringa password, dopo di che la stringa può essere abbinata alla stringa nel database.

Non lo userei mai per nessun altro dato, ma per la password credo che sia sufficiente. Tuttavia mi piacerebbe ancora qualche critica professionale, per quanto il mio modo di proteggere la password sia sicuro o meno, e o forse come posso migliorare quello che ho già, se proprio va bene. E mentre ci sono, lo consiglieresti di usare TWO_FISH o di scambiarlo con SEARPENT?

Grazie in anticipo.

    
posta 0111010001110000 22.05.2014 - 04:59
fonte

3 risposte

7

In genere è una cattiva idea inventare i propri algoritmi di sicurezza. Come hai già detto, non sai se questo è sicuro. Puoi crederci, e forse trovi anche qualcuno che è d'accordo con te. Ma questo non significa molto.

Esistono soluzioni consolidate come bcrypt che si sono dimostrate sia teoricamente che praticamente nel corso di molti anni. Possiamo essere abbastanza sicuri che quelli sono in effetti sicuri. Quindi, perché non approfittarne e utilizzare bcrypt?

Per quanto riguarda il tuo algoritmo:

Innanzitutto, non vedo perché limiti l'utente a solo da 6 a 24 caratteri alfanumerici. Ciò rende impossibile rafforzare la password con caratteri speciali o utilizzare una passphrase lunga.

La funzione mt_rand() produce numeri casuali deboli da fonti a bassa entropia come il tempo del server e l'ID del processo. Il manuale PHP lo segnala esplicitamente . Anche un totale di 8 byte non è eccessivo.

Non posso commentare se il tuo schema di hashing è valido, ma dato che i PC di serie possono calcolare miliardi di hash SHA-256 al secondo , 16.000 round di nuovo non sono molti.

    
risposta data 22.05.2014 - 07:32
fonte
6

Vedo due problemi evidenti con il tuo sistema:

1) 24 caratteri non è molto. Una buona passphrase è più memorizzabile di una password e compensa la bassa entropia per carattere del testo leggibile con molti caratteri: da 30 a 60 caratteri o più. C'è un motivo per il limite?

2) La crittografia non fornisce alcuna sicurezza sull'hashing. Se l'attaccante può rubare l'elenco delle password, è probabile che possano rubare anche la chiave di crittografia e IV (come nota a margine, la modalità ECB non usa un IV). Fondamentalmente hai un hash fisso di 15.537 round, che potrebbe rallentare gli hacker oggi, ma man mano che i computer diventano più veloci, diventa più debole.

C'è una ragione per cui non puoi utilizzare una soluzione standard del settore, come ad esempio la bcrypt ad alta resistenza regolabile ?

    
risposta data 22.05.2014 - 07:17
fonte
0

No. Sento che non è stato necessario leggere oltre in cui menzioni le password di 6 caratteri. È troppo breve Anche se richiedi che contengano caratteri alfa e numerici, non è sufficiente. Non ci vorrà molto per eseguire un dizionario di tutte le password alfanumeriche a 6 caratteri tramite l'algoritmo utilizzando ciascun valore di sale nel database. Le altre risposte forniscono altri buoni motivi per non utilizzare il sistema, ma questo è relativamente semplice e ovvio.

    
risposta data 23.03.2016 - 05:40
fonte

Leggi altre domande sui tag