| - Never allow any part of the computing systems you use to cache anything. - Insist that everything in your life exist in a state of being functionally pure & stateless. - Eliminate access to all sources of timing data. - Make sure that all tasks are completed in a pre-determined fixed amount of time regardless of resource contention. There are so many different side channel attacks, and the computing primitives & API choices we have been making for years make it challenging to build secure systems. Caches are very deeply embedded in the culture of how computing is done. Making tasks take longer than strictly necessary to avoid leaking information goes against our instincts to optimize system performance. It's going to take a lot of work and cost a lot of money to get software to a point where we aren't playing whack-a-mole with side channels. More pragmatically, the current implementation of this technique can be dealt with by being very conscious of how much data your DNS resolver(s) are leaking & being conscious of how large the anonymity set is of the userbase of your DNS resolver(s). If you limit DNS cache times and use blinding computation techniques to limit the identity information your DNS resolver has or retains about you, then DNS cookies can be largely mitigated. If you have faith that 1.1.1.1 is operated in the manner that Cloudflare claims, the measures they have taken go a long way to making DNS cookies unusable. I also pointed out some additional specific mitigations when I reported this issue to the Chromium team in October 2015: https://bugs.chromium.org/p/chromium/issues/detail?id=546733 |