Supponiamo di avere stringhe: stringA, StringB, stringC.
E faccio due hash: HashA = sha256 (stringaA + stringaB) HashB = sha256 (stringaB + stringaC)
Per l'argomento suggerisco sha256 ma rispondere genericamente alla domanda è altrettanto valido.
Non sono un strong matematico, ma suppongo di esserlo, e sto cercando di invertire gli hash di cui sopra, e ho saputo da un algoritmo in codice che c'è una stringa B (ancora sconosciuta a me) che è la parte successiva del stringa che entra in HashA e nella parte precedente di HashB.
Posso ridurre il numero di permutazioni richieste, al fine di capire quale stringaB avrebbe potuto essere, dal momento che i due hash danno le risposte che fanno, da input sovrapposti, se non riducono lo spazio di input I bisogno di bruteforce?
vale a dire. gli hash sono più deboli a causa di questo comportamento di sovrapposizione dei dati all'interno di essi.
Per chiarezza: Se stringA, stringB, stringC e stringD sono segreti.
E un utente malintenzionato ottiene tutto il codice / algorthm ecc tranne le stringhe e ha:
caso A: hashA = sha256 (stringaA + stringaB) e hashB = (stringaB + stringaC)
o caso B: hashC = sha256 (stringaA + stringaB) e hashD = (stringaC + stringaD)
Ho il sospetto che nel caso A sia più facile costruire i dati di origine in modo che corrispondano agli hash che nel caso B, ma non conosco abbastanza matematica per confermare i miei sospetti.
Ulteriore chiarezza : supponi che le stringhe siano salate, sebbene con lo stesso sale per record e hash per quel record, e che l'attaccante conosca i sali. Si può presupporre che i sali siano preposti prima che 'stringx + stringY' riesamini il mio testo se lo desideri.
Grazie.