Ho letto degli attacchi di Hash Length Extension qui e qui . Dagli articoli che ho ricavato, questo attacco si basa sulla struttura dei dati, nel modo in cui il segreto deve essere prefisso ai dati (correggimi se ho torto). Se fosse così, sarebbe un ragionevole meccanismo di difesa contro questo tipo di attacco spostare semplicemente il segreto nella struttura dei dati?
Da articolo :
let secret = "secret"
let data = "data"
let H = md5()
let signature = hash(secret || data)
Questo (ovvero spostare il segreto al centro della firma):
let signature = hash( string.Format( "{0}{1}{2}", data.Substring( 0, ( int ) ( data.Length / 2 ) ), secret, data.Substring( ( int ) ( data.Length / 2 ) ) ) );
sii sicuro?