> On a related note, however, I have some doubts about the usefulness of > this "randomisation rotor". > > First, it currently does not really randomise anything, since on most > architectures the total number of chunks always divides 256, so that > using merely `r' as the random offset instead of `bp->rotor + r' would > not change the distribution for the random variable thus obtained. > Moreover, in the rare cases where it actually has a noticeable effect, > this distribution is no longer uniform (and very biased) anyway, so the > proper way to randomise these choices would be to call getrbyte() twice, > not to add one random byte to a previously used random byte.
Many minor randomizations are surprisingly effective because an attacker only gets 1 attack try. Why? Because other layers have also perturbed their addresses, or other addresses which an attacker needs. So the attacker has numerous small hurdles. There's a banana on the road, but there's snare wire above it. It is too easy to fall into the trap of "I'm looking at the only defense".
