Constant time implementations of crypto algorithms To protect against cache attacks (side channel attacks) generally constant time crypto implementations are advised. In some cases DJB released new algorithms (chacha) that are designed with this in mind (as one of objectives). If so --


Are constant time implementations feasible for all popular algorithms? 
 I ask because AES, RSA, SHA*, EC* and DSA algorithms (at least some of them) are not designed with side channel attacks in mind. Given that, are these secure to use in software? ( I know secure is a loaded term here but I am speaking strictly from a side channel perspective).
Do all the standard libraries support this constant time implementations? I would like to see an implementation that does this compare against something that does not. 
I know using an algorithm in hardware is the way to go. When a crypto algorithm is "implemented in hardware", does it usually mean its implemented completely in hardware or are parts of it implenented in microcode? I know AES is probably completely implemented in hardware, what about ECDSA or something thats a bit more complicated?
Any function can be made timing attack resistant, and may be more expensive. I.e. AES can be made safe by using a hardware-simulated constant time circuit for lookups (and maybe more magic).


If you need AES: use hardware with a constant time fallback in software. If you don't need AES then prefer it by hardware, then negotiate to a fast software cipher such as chacha20.


I'm yet to investigate (as I don't use these "standard libraries"). Which libraries are we including in standard? OpenSSL? LibreSSL? BoringSSL? Libsodium?
The AES round function is implemented in hardware. This enables the caller to decide the mode I.e. CTR vs CBC vs GCM etc. Last I checked AESNI included sha1 and sha2, but not any ECDSA nor ECDH nor EdDSA nor RSA. Hardware can implement any of these, however, not all functions have a significant speedup in hardware such that using hardware is preferred.