paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Verifying Arithmetic in Cryptographic C Programs

验证密码学 C 程序中的算术
ASE 2019 34th IEEE/ACM International Conference on Automated Software Engineering (ASE)2019匹配度 3/10 · 该论文属于程序验证/自动化静态分析方向,并在 OpenSSL 工业案例中发现长期存在的缺陷,具有一定工程价值;但它面向密码学 C 程序的大数非线性算术,不涉及 LLM/Agent 与静态分析或形式化验证的交叉,也不涉及浮点程序分析或贝叶斯程序分析,因此与用户核心研究画像距离较远。引用 10 inbox
Jiaxiang Liu, Xiaomu Shi, Ming-Hsien Tsai, Bow-Yaw Wang, Bo-Yin Yang
crossref: 2026-09-12

AI 速览

一句话:提出自动化方法验证密码学 C 程序中的大数非线性算术,首次建立 OpenSSL 若干曲线实现的函数正确性。

密码学原语是现代安全的基石,其 C 实现的正确性对抵御恶意攻击至关重要。然而,这类程序中的典型算术运算包含大量非线性操作,使现有自动化 C 验证工具难以应对。本文提出一种面向密码学 C 程序的自动化验证方法,并应用于 OpenSSL 中 NIST P-224、P-256、P-521 以及 Curve25519 所用的各类算术运算的 C 实现。验证过程不仅成功建立了这些实现的函数正确性(据作者所述为首次),还暴露出一个 bug 以及若干长期存在的异常,相关问题已报告给 OpenSSL 社区并获得确认。该工作表明自动化验证技术可有效处理真实密码库中大数算术这一难题。

问题
密码学 C 程序中的算术运算包含大量非线性操作,现有自动化 C 验证工具难以对其进行验证,导致这些关键实现的函数正确性长期缺乏保证。
方法
提出一种自动化验证方法,针对密码学 C 程序中大数算术的非线性特征进行建模与验证,并应用于 OpenSSL 中的曲线算术实现。
评估
在 OpenSSL 的 NIST P-224、P-256、P-521 与 Curve25519 算术 C 实现上成功完成验证,首次确立其函数正确性,同时发现一个 bug 和若干长期异常,均已被 OpenSSL 社区确认。
原文摘要(Abstract)

Cryptographic primitives are ubiquitous for modern security. The correctness of their implementations is crucial to resist malicious attacks. Typical arithmetic computation of these C programs contains large numbers of non-linear operations, hence is challenging existing automatic C verification tools. We present an automated approach to verify cryptographic C programs. Our approach successfully verifies C implementations of various arithmetic operations used in NIST P-224, P-256, P-521 and Curve25519 in OpenSSL. During verification, we expose a bug and a few anomalies that have been existing for a long time. They have been reported to and confirmed by the OpenSSL community. Our results establish the functional correctness of these C implementations for the first time.

链接与引用

DOI 原文 ·

BibTeX
@inproceedings{paperbot5284,
  title = {Verifying Arithmetic in Cryptographic C Programs},
  author = {Jiaxiang Liu and Xiaomu Shi and Ming-Hsien Tsai and Bow-Yaw Wang and Bo-Yin Yang},
  booktitle = {ASE},
  year = {2019},
  doi = {10.1109/ase.2019.00058}
}