Leí sobre los ataques de extensión de longitud de hash aquí y aquí . De los artículos obtuve que este ataque se basa en la estructura de los datos, de la forma en que el secreto tiene que ser prefijado a los datos (corríjame si me equivoco). Si ese fuera el caso, ¿sería un mecanismo de defensa razonable contra este tipo de ataque simplemente mover el secreto en la estructura de datos?
Del artículo :
let secret = "secret"
let data = "data"
let H = md5()
let signature = hash(secret || data)
Lo haría (es decir, mover el secreto a la mitad de la firma):
let signature = hash( string.Format( "{0}{1}{2}", data.Substring( 0, ( int ) ( data.Length / 2 ) ), secret, data.Substring( ( int ) ( data.Length / 2 ) ) ) );
estar seguro?