Spectre and the end of langsec
While langsec can&#x27;t easily mitigate spectre because the processor is trying to hide where the performance comes from, it&#x27;s worth noting that several new languages are working on ways to write code where you can actually assert and have the compiler check that the timing of the code you write is bounded and uniform.<p>It&#x27;s very easy, I think, to throw up our hands and say, &quot;Well gosh all this language stuff is useless because timing attacks are so scary!&quot; But in reality, they&#x27;re pretty well studied and many of them are actually pretty simple to understand even if they can be hard to recognize.<p>Both hardware AND software sides of our industry need to start taking correctness, both at compile and runtime, seriously. The days where we can shrug and say, &quot;But that&#x27;s too slow, don&#x27;t run code you don&#x27;t trust&quot; are dead. We killed them by ceding the idea of hardware ownership to big CSPs. The days where we can say, &quot;This is too complicated to do!&quot; or &quot;This doesn&#x27;t deliver customer value!&quot; are also going away; the threat of combination attacks easily overshadows any individual attack, and small vulnerabilities tend to multiply the total surface area into truly cataclysmic proportions.<p>But also gone is the day when we can say things like, &quot;Just use Haskell or OCaml!&quot; We&#x27;ve seen now what these environments offer. It&#x27;s a great start and it&#x27;s paved the way for a lot of important understanding, but even that is insufficient. Our next generation of programming environments needs to require less abstract category theory, needs to deliver more performant code, and needs to PROVE properties of code to the limit of runtime resolution. The hardware and OS sides of the equation need to do the same thing. And we as engineers need to learn these tools and their techniques inside and out; and we shouldn&#x27;t be allowed to sell our work to the general public if we don&#x27;t.