3 ms·
I just tested the python fix there, and it was easy to find the difference with the python function given. The solution is to rate limit, and add random small
by illumen 17y ago
I just tested the python fix there, and it was easy to find the difference with the python function given.
The solution is to rate limit, and add random small sleeps. A tiny random sleep stops the variance from a string compare showing up. Rate limiting and blocking slow down an attacker from trying out lots of attempts anyway.
If you have decent signal processing skills you should be able to show another keyczar exploit.
- tptacek 17y agoThat's a terrible fix. Adding noise degrades the signal without eliminating it. To defeat that countermeasure, you just take more measurements. The random sleeps, which are by nature random, get filtered out. The Keyczar Python fix --- if we're talking about Nate Lawson's code --- has no data-dependent timing. It invariably does the same ALU ops on every byte of the string, and fails if the strings aren't of the same length. That's the right solution to side channel vulnerabilities: eliminate the side channel.