Ho seguito la domanda teorica:
Lascia che H(X)
sia una funzione di hash considerata debole perché è possibile produrre collisioni (ad esempio SHA1, MD5).
Mi chiedo se le seguenti funzioni:
H2(X) = H(H(X)) xor H(X)
H3(X) = H(H(H(X))) xor H(H(X)) xor H(X)
H4(X) = ...
può essere considerato sicuro, se H(X)
è considerato non sicuro. Se l'autore dell'attacco può trovare una collisione in H(X)
, dovrà inoltre trovare una collission anche in H(H(X))
, per poter avere una collisione in H2(X) = H(H(X)) xor H(X)
. O non è ancora sicuro? (Perché?)
Sono consapevole che tale cascata non è performante rispetto a una funzione hash più recente come SHA256 o SHA3.