|
|
|
|
|
by mahemm
2636 days ago
|
|
Moving past the silly headline, there is actually a pretty substantial achievement here. Using formal verification tools, the team proved the following properties for the library: * Memory safety (no buffer overruns etc) * Type safety (all compiler-visible interfaces/abstractions used as per spec) * Functional correctness (all the crypto implementations are faithful to their algorithms) * Side-channel resistance (all crypto is constant time) This has been confirmed by fallible tools and is checked against human-made models which are also fallible, but this code is still likely to be about as close to bug-free as currently possible. I think Barghavan's work in this area are the future of cryptographic coding in the medium term and likely all security-sensitive code long term. |
|
One thing to think about might be that when we use the C output of this project in a non-formally-verified compiler (something other than CompCert), there might be compiler bugs that undo some of these guarantees. (The easiest one to see is that optimizers in the compiler could undo the constant-time guarantee -- I assume that the output or documentation indicates using keywords or pragmas or compiler options to disable some kinds of optimizations, but there could for example be a compiler bug where some optimizations can't be disabled this way.)