>> My comments were to clarify why this works 'quite well' on multi-user >> systems even though the underlying source may not be truely random - and >> why it may not be as usable on single user ones. > > Attached is circular cross-correlation vector for two synchronized > threads running on multi-core non-hyperthreading x86 processor. > "Synchronized" means that one thread blocks on semaphore and then > collects data, while another thread unlocks the semaphore and then > collects data. "Multi-core" means that both threads exercise same > external memory interface. As mentioned earlier high spikes is > manifestation of system timer interrupt, nothing to worry about. But > what do we make from the fact that there are areas with effectively > "guaranteed" correlation of 0.02? How does the value translate in > "tangible" terms? Is it acceptable?
I spoke too soon. The pattern that could be observed in previous message is manifestation of on-demand clock frequency increases. It can be observed even with single-thread sets collected independently. With fixed frequency it, circular cross-correlation vector for two synchronized threads, looks as attached. Probably most relevant thing about it is maximum at 0 (hardly seen), indicating correlation coefficient at point when adversary managed to guess the moment victim started collecting data. Even though the other spikes appear "thicker" than on picture for two independent vectors, one can argue that multi-core processor is not much more "dangerous" environment than single-core one. Sorry about possible confusion...
<<inline: mp.jpg>>