|
|
|
|
|
by nickpsecurity
466 days ago
|
|
One, old technique that can counter this is as follows: 1. Clock how long the operation takes on any type of data. By operation, it would be a function call maybe for a whole block or buffer. 2. Add a small margin of time to that. 3. Modify the function call to make sure it has waited that long before returning a response. That is true whether it finished early or not. The result prevents the function call from leaking timing information. High-assurance, security certification in the 1980's also required mitigating covert, storage channels. That would require, at a minimum, overwriting any memory used during the call and all the CPU registers before returning to the caller. |
|
https://security.stackexchange.com/a/96493/271113
For example, consider the case of a cache-timing leak (rather than the classical "string compare" one). You'd have to have a lot of control over the behavior of your operating environment to guarantee it doesn't leak bits of your secret from cache misses.
When you add a delay to your processing, unless the same tasks being executed, I would expect power analysis leakage and random jitter from the kernel's scheduler to reveal that fact. It might be a more costly analysis to detect, but it's still there.
Generally, I think this is a doomed line of reasoning.