
On 1 August 2014 10:11, Wojtek NarczyĆski
You asked for it. For me, doing useless computations just to make sure the timing is right, does not make sense. Using a clock makes sense.
If you believe that is the case, how are you planning to tackle power analysis attacks? (Note that such attacks are not just theoretical.) Let's say you went to sit an exam, but were already given the answers by a friend beforehand. How do you fake actually sitting the exam? You don't set a clock: that only fixes one of the ways in which the examiners might discover you don't need to work to do the exam. Instead, you stare ate your paper intensely, make useless drawings on your rough work paper, and pretend you're working hard. If you want to look like you're processing, you better actually be processing. C allows you compute absolutely nothing, because the compiler isn't smart enough to see that. But Haskell's compiler is much better at detecting if you're computing trash, so we need to be more convincing that we're not. You can call it a cheat around compiler optimizations, but really that's missing the point, because Haskell doesn't even work without those optimizations. This is a way to process data in a configurable way. Obviously you'll need to somehow tell the compiler that the eventual result of all the slack data propagation should not be thrown out. But this is nothing new: we already have the IO monad (although admittedly its internal data gets optimized away, or so I heard; but the important thing is that the effects stay).