cryptoint:让 C 代码真的常量时间 — Hacker News 中文摘要
来源:cr.yp.to — 19 分 · by akkartik · 0 条评论
📋 概述
djb(Daniel J. Bernstein)的 cryptoint 是一套给 C/C++ 用的常量时间整数运算库:crypto_int64_max 这类函数存在的意义,是把“秘密数据不能影响执行时间”这件事从程序员脑子里搬进库。因为编译器会把 x>y 之类的比较优化成分支,破坏原本常量时间的代码,cryptoint 用全局 volatile 零变量等手法阻止编译器内部引入条件判断。它近乎 header-only,能自动在汇编与可移植代码间选择;每个函数除了常规测试,还做符号执行与 SMT 求解的等价性检查。
🔑 核心要点
- 目标是把“秘密不进时间”的责任集中到一个库,而不是散落各处手写。
- 防御手段包括全局 volatile 零变量,阻止编译器内部引入 bool 条件。
- 近乎 header-only,自动在汇编与可移植实现之间选择。
- 每个函数都跑常规测试,并用符号执行 + SMT 求解做等价性验证。
- 已有 248 个函数的 sparc32 目标码被形式化验证,多个密码学原语改用 cryptoint。
💡 金句
crypto_int64_max(x,y) takes responsibility for avoiding data flow from x and y into timings
👍 0
👎 0
← 返回 Hacker News 首页