面向密码学的C++多精度算术——编译期计算与运行时击败手工优化汇编性能
密码学与安全
2018-04-20 v1 数学软件
摘要
我们描述了一个用于100—500比特量级数字(即仅由少数limb可表示)的多精度算术的新C++库。该库以“对优化编译器友好”的C++编写,强调使用固定大小数组及特定的函数参数传递风格(包括避免裸指针),以使limb可分配在栈上甚至寄存器中。根据具体功能不同,我们接近或显著击败了现有采用手工优化汇编代码的多精度算术库的性能。库中多数函数为常数时间,这是密码学协议安全实现的必要条件。除有利的运行时性能外,据作者所知,我们的库是首个提供编译期大整数计算的库。例如,在实现固定模数的有限域算术时,该特性可在编译时自动预计算Barrett和Montgomery约简所需的特殊模数相关常数。另一应用是在编译时解析以10为基编码的大整数字面量。
引用
@article{arxiv.1804.07236,
title = {Multiprecision Arithmetic for Cryptology in C++ - Compile-Time Computations and Beating the Performance of Hand-Optimized Assembly at Run-Time},
author = {Niek J. Bouman},
journal= {arXiv preprint arXiv:1804.07236},
year = {2018}
}
备注
9 pages (14 pages including references and appendices)