暗号コードをコンパイラの「最適化」から守るcryptointライブラリ
The cryptoint library (2025) [pdf]
C/C++で定数時間コードを書いても、gccやclangの「最適化」が分岐やタイミングの変動を勝手に持ち込み、秘密情報が漏れる恐れがある。暗号学者Daniel J. Bernstein氏が公開したcryptointは、crypto_int64_maxのような関数でそうした最適化に防御する。volatile変数やアセンブリを自動で切り替えるほぼヘッダオンリーのライブラリで、SUPERCOPやOpenSSHのsntrup761などで既に使われている。
CやC++には危険なほど鋭い刃が数多くある。gccとclangの開発プロセスは、私が高保証のために勧めるものとはおよそ180度逆を行っている。