forza bruta MD5 su un hash difettoso?

2

MD5 per le password è considerato non sicuro a causa della capacità di forza bruta e scelta il risultato.

Ma cosa succede se cambio alcuni caratteri di un hash MD5 e mantengo un record di tale modifica in modo che in seguito possa corrispondere a quell'hash in base a tali modifiche?

Ecco la domanda, è possibile anche eseguire la forza bruta su un hash MD5 modificato / errato da abbinare a una stringa sconosciuta per un hacker?

Scopo: ho scoperto che è relativamente facile per un utente utilizzare strumenti come " ispezionare gli elementi 'per cambiare un "post_id" o un "user_id" in un modulo web, così stavo cercando di cancellare quegli ID e una volta che l'utente ha presentato il modulo prima di tutto io faccio corrispondere se l'md5 dell'ID inviato dall'utente è abbinato al md5 di quegli ID inseriti nell'elemento nascosto delle forme durante la generazione del modulo.

    
posta rakibtg 04.09.2015 - 13:58
fonte

2 risposte

9

Nella tua domanda c'è un equivoco o due.

Come hash di messaggio (file, ecc.), MD5 non è insicuro a causa della "capacità di potenziare la forza e di raccogliere il risultato". Gli hash crittografici dovrebbero avere tre proprietà di sicurezza:

  1. Un modo: dato un hash, non è possibile trovare un messaggio con quell'hash.
  2. Integrità: dato un messaggio, è impossibile trovare un altro messaggio con lo stesso hash.
  3. Resistenza alla collisione: non è possibile trovare due messaggi con lo stesso hash.

L'unica proprietà di MD5 che ora è danneggiata è la terza, resistenza alla collisione. È possibile creare messaggi con lo stesso hash. Tuttavia, per un messaggio che non è appositamente predisposto, è ancora impossibile trovare un altro messaggio con lo stesso hash. Tuttavia, MD5 non è raccomandato, in parte perché è plausibile che saranno presto individuati attacchi migliori per l'integrità della sconfitta e in parte perché molti sistemi che si basano principalmente sull'integrità fanno affidamento sulla resistenza alle collisioni contro alcuni attacchi di alto livello.

Prendere MD5 e modificare l'uscita non aiuterebbe in alcun modo con la resistenza alle collisioni poiché una collisione per MD5 sarebbe anche una collisione per l'hash modificato. Non sarebbe d'aiuto nemmeno per l'integrità, per lo stesso motivo. Quindi la tua proposta non può fare nulla contro i difetti noti di MD5.

Se modifichi un hash MD5, potrebbe diventare più difficile trovare un messaggio con l'hash. Ma solo se la trasformazione che fai è difficile da invertire! Ad esempio, se esegui alcune trasformazioni fisse come capovolgere alcuni bit, è inutile. Se si cripta l'hash, questo potrebbe farlo - o no: dipende dalla proprietà di sicurezza che si desidera ottenere. Ricorda che la proprietà a senso unico per MD5 non è nota per essere interrotta.

Quindi quale proprietà di sicurezza vuoi ottenere?

Se stai usando MD5 come hash password , MD5 non è il tuo unico problema o il tuo problema principale. Per un hash della password, le ricerche di forza bruta sono un problema. Nessuno dei soliti hash message è adatto come hash password , perché sono veloci. Gli hash delle password devono essere lenti , proprio per rendere più difficili le ricerche di forza bruta: colpiscono più duramente l'attaccante rispetto all'utente legittimo, perché l'aggressore deve provare milioni di possibilità. Tweaking MD5 non può forse aiutare lì. Se hai password di hashing, dimentica MD5, anche se lo hai trovato utilizzato in una delle milioni di app PHP in circolazione. Per le password hash, utilizza PBKDF2 , bcrypt o scrypt . Se stai anche pensando di utilizzare qualcosa di diverso da uno di questi tre, leggi Come fare in modo sicuro le password di hash? prima di tutto.

Per un hash della password, l'idea di aggiungere un componente segreto alla funzione di hash è chiamata a pepe . Un peperone comporta una chiave segreta e una vera crittografia - "cambiare alcuni personaggi" sarebbe così facile da invertire che è inutile come un peperone. Il modo normale per includere un pepe è aggiungerlo alla password e al sale quando si calcola l'hash. E ricorda che il pepe deve essere segreto: se si trova nell'origine dell'applicazione, o nello stesso database o negli stessi dischi di backup del database delle password, è inutile.

    
risposta data 04.09.2015 - 15:01
fonte
2

Il problema che stai cercando di risolvere è la manipolazione dei valori dei campi nascosti del modulo da parte degli utenti.

Come ha detto @Gilles, questi valori dovrebbero essere controllati nella sessione (lato server). I controlli sul lato server sono necessari per verificare che l'utente abbia il permesso di modificare un determinato post. In altre parole, il campo nascosto "user_id" non dovrebbe esistere! Il valore per l'ID utente sarà noto in sessione.

    
risposta data 09.09.2015 - 13:05
fonte

Leggi altre domande sui tag