Side Channel Attacks How to make cipher resist against Side channel Attacks. Specially Timing Attack, Cachet Timing Attach, Simple/ Differential Power Analysis.

Uptil now it seems all Standard Algorithms like AES, Cameillia etc have been successfully broken using side channel Attacks. 

What are the design criteria to counter these?
Avoid:


Using secret data in table based lookups on machines that have a cache


The table is just a memoized function; Just compute the function explicitly each iteration instead of looking the answer up in a table

Accessing an array using indices whose values are supposed to be secret
Using functions that take a variable amount of time to compute on secret data


Do:


Use instructions that are generally implemented in a constant amount of time (at the hardware/gate level)


ADD, XOR, AND, shifts, and rotates are almost guaranteed to operate in a constant amount of time

Use functions that facilitate countermeasures more easily 


Note that side channels target implementation details, and not the abstract algorithm. An implementer can still make choices that create vulnerabilities. 

All that an algorithm designer can do is make the design straightforward to implement in a constant time manner. For example, AES can be implemented without a table lookup, but this tends to lower the overall throughput, potentially significantly.

There are apparently some tools for testing an implementation for weaknesses.