Il metodo di hashing della password è sicuro?

-3

Ho creato un metodo di hashing personalizzato per rendere più sicure le password dei miei utenti in caso di perdita del database.

Il metodo di crittografia è come questo:
Un metodo accetta un input di 1 carattere, ottiene il valore ASCII del carattere, lo sposta di un numero di byte in un modo e un numero di byte nell'altro modo, quindi ritorna come %codice%. Dopo questo, l'intera stringa jumbled viene sottoposta a hash utilizzando BCrypt con un valore di 22 caratteri usando 16 round.

In questo modo le password diventano più difficili da decifrare? Dal momento che un attacco di dizionario non funzionerebbe senza il mio metodo di hashing che ha portato

    
posta Tar 12.07.2012 - 08:44
fonte

6 risposte

10

Se il tuo piano è quello di mantenere segrete le specifiche del tuo metodo di crittografia, no , non funzionerà ed è una pessima idea. Se non hai rivisto il metodo peer, non sarai mai sicuro di non perdere le informazioni e di lasciare le password più deboli.

Ad esempio, la pre-elaborazione potrebbe non essere così resistente alle collisioni come ci si aspetta, portando alla possibilità che un utente malintenzionato inserisca una password errata e corrisponda ancora all'hash perché la sua password ha fornito lo stesso input a BCrypt . È molto improbabile che tu possa valutare da solo questo rischio e avere un livello vicino a quello che potresti avere se hai appena preso un algoritmo ben pubblicizzato e lo hai usato così com'è.

Non è possibile che entrambi siano soggetti al controllo pubblico necessario per garantire che sia sicuro e mantenerlo segreto da un potenziale aggressore.

    
risposta data 12.07.2012 - 13:03
fonte
3

Ricorda che se un utente malintenzionato vuole ottenere l'accesso alla tua password, probabilmente avrà successo.

Stai usando BCrypt, che è uno dei modi migliori per usare la password hash al giorno d'oggi. Ma la tua ricetta di cucina prima di quello è, IMO, inutile.

Supponiamo che l'hacker ottenga la password del testo in chiaro da bcrypt, tutto ciò che deve fare ora è l'opposto della tua funzione:

A method takes an input of 1 character, gets the ASCII value of the character, shifts it a number of bytes one way and a number of bytes the other way, and then returns like $shift_left.$original_char.$shift_right

Utilizzare semplicemente BCrypt in combinazione con sale + pepe è un ottimo inizio.

Non dimenticare che la complessità è il nemico della sicurezza !

    
risposta data 12.07.2012 - 09:55
fonte
3

Se l'attaccante ha il controllo su database e codice , l'aggiunta di caratteri codificati non aiuta affatto (solo un'operazione trascurabile in più). Se ha solo il database senza codice (SQL-Injection), allora riconoscerà l'hash bcrypt e ora può eseguire la forza bruta con bcrypt, ma a causa dello scrambling non ci sono password deboli. È come se il testo criptato fosse la password da decifrare, quindi un dizionario è inutile.

Questa è sicurezza per oscurità, ma sarà efficace fintanto che il codice non è noto. Puoi ottenere lo stesso effetto più facilmente, aggiungendo una correzione di sale hard (chiave), prima di usare bcrypt con il sale unico.

    
risposta data 12.07.2012 - 13:40
fonte
3

Ti darò la risposta più breve: No

Gli schemi di hashing fatti in casa sono pericolosi perché se fatti male, possono avere alti tassi di collisione (riducendo drasticamente lo spazio di indirizzamento dell'output). Qualsiasi operazione eseguita successivamente a questi "hash" non aggiungerà ulteriore sicurezza.

    
risposta data 13.07.2012 - 22:13
fonte
3

Fammi fare un'analogia. La tua domanda è la seguente: se ho una porta in acciaio rinforzato, lo rende ancora più strong se lo dipingo in rosso? Dopotutto, qualsiasi ladro dovrebbe passare attraverso entrambi la porta d'acciaio e lo strato di vernice. E tutto ciò che è rosso è ovviamente meglio.

Per favorire l'analogia, la vernice rossa potrebbe essere corrosiva acida o accelerata, rendendo potenzialmente più debole la porta.

Quindi non farlo.

    
risposta data 24.02.2013 - 20:43
fonte
1

La risposta breve è NO .

NON MAI MAI EFFETTUARE IL TUO ALGORITMO DI HASHING!

Gli algoritmi di cucina casalinga per l'hashing non sono mai sicuri e quindi una pessima idea. È anche una cattiva idea mescolare insieme due algoritmi poiché può rendere le cose ancora più non sicure .

Ci sono molti altri algoritmi che puoi usare. Puoi usare Bcrypt, Scrypt, sha2, sha512 , PBKDF2 e molti altri.

Questi algoritmi sono stati testati e realizzati per anni e non ci sono ancora molti difetti che sono stati trovati con esso e sono fatti da molti professionisti della sicurezza che sanno esattamente cosa stanno facendo.

Ti consiglio di utilizzare gli algoritmi PBKDF2 o bcrypt per memorizzare le tue password.

Dai un'occhiata qui perché ti consiglio di:

Gli esperti di sicurezza consigliano bcrypt per l'archiviazione delle password ?

    
risposta data 21.07.2016 - 00:20
fonte

Leggi altre domande sui tag