本文来自 www.microsoft.com/en-us/resea…
用 Rust 重写 SymCrypt,把微软的加密库升级到现代水平 🚀
发布时间:2025年6月10日
作者:Jonathan Protzenko、Samuel Lee、Samreen Khadeer、Son Ho、Oleksii Oleksenko、Michael Naehrig、Cédric Fournet
为什么要重写 SymCrypt?
SymCrypt 是微软开源的加密库,广泛用于 Windows、Azure Linux、Xbox 等平台,目前主要用 C 写的。不过 C 这种“手动打怪”的语言容易出错,内存安全、野指针、数据泄漏啥的老问题常见。而现代 CPU 越来越复杂,侧信道攻击也越来越可怕。
为了解决这些问题,他们决定用 Rust 重新实现 SymCrypt,借助 Rust 天生的内存安全特性,再配合形式化验证,全面升级库的安全能力(microsoft.com, blog.heycoach.in)。
Rust + 形式化验证,双保险
- Rust 的类型系统:“所有权”“借用”“可变性”等机制天然防止内存错误,让底层的“人祸”问题在编译期就消灭了。
- Aeneas 工具链:这是微软 Azure Research 和法国 Inria 联手搞的,它连通到 Lean 这种证明助手里,能把代码行为和数学证明关联起来,非常适合定量验证加密算法(microsoft.com)。
路线图:Rust 编,C 接口依旧保
很多现有项目还依赖 C 接口或老编译流程,所以他们做了一个 Rust-to-C 的编译器叫 Eurydice。意思是:写 Rust → 编译成中间 MIR → 再输出等价的 C 代码,用户依然通过 C API 调用,完全向下兼容(microsoft.com)。
这样既能切入新生态,又不破坏现有使用,大大减少迁移阻力。
Revizor:守住侧信道
重新验证功能正确还不够,硬件侧的各种泄漏也得防。微软又开发了一个叫 Revizor 的工具,用模糊测试逐条检查编译后二进制,看有没有时间差啥的会泄密。这样源代码没有问题,机器层面也安全。
先上手!ML‑KEM Rust 实现可试用
他们已经把一个后量子算法 ML‑KEM 的 Rust 实现放到 SymCrypt 的 feature/verifiedcrypto 分支了,欢迎大家试水提反馈。接下来还会陆续把更多算法用 Rust 重写验证,逐步上线(microsoft.com)。
性能不打折,保障认证一步都不掉链
重写可不是弄个写个跑跑那么简单,性能和兼容还得跟 C⁄Asm 现有实现不差。他们还要保证最终能拿到 FIPS 认证(用于政府、金融等场景),这意味着性能↔安全↔合规都要同时在线。
展望未来
这次升级不仅仅是 SymCrypt 一个库升级,而是微软迈向“工业级、Rust+形式化验证、FIPS 认证加密库”的重要一步。未来,SymCrypt 会逐步以 Rust 为底层,C 接口继续服务现存用户,最终变成真正从头到尾现代、安全、合规的加密底座。