文章总结: 本文针对后量子密码算法FN-DSA中浮点数运算易受侧信道攻击的问题,提出了一种系统化的高阶掩码防护方案。作者设计了四个新的安全组件,并结合现有安全组件,构建了可组合的带掩码浮点数乘法、加法与打包算法。通过形式化证明和在ArmCortex-M4、Inteli9-12900KF等处理器上的实验验证,该方案能有效抵御侧信道攻击,为构建抗攻击的FN-DSA实现迈出了关键一步。 综合评分: 85 文章分类: 渗透测试,红队,威胁情报,恶意软件,安全意识
密码芯片浮点数运算的掩码设计
原创
杨易明 杨易明
数缘信安社区
2026年3月26日 07:01 北京
如何保护后量子算法中FFT的安全性?
撰文 | 杨易明
编辑 | 刘梦迪
一、背景介绍
随着量子计算的快速发展,基于整数分解与离散对数的传统公钥密码体制正面临潜在威胁,这促使人们寻求在量子攻击下依然安全的后量子密码算法。NIST的标准化进程推动了多种基于格的密码方案进入主流,其中FN-DSA作为经典的基于NTRU格的数字签名算法因其紧凑的签名大小与高效的实现而被选为最终标准算法之一。然而,尽管FN-DSA在数学结构上具有良好的抗量子安全性,其实际实现仍然暴露于物理侧信道攻击之下。
在2024年的CHES上,来自瑞士洛桑联邦理工学院的Keng-Yu Chen和国立台湾大学电机工程系的Jiun-Peng Chen对于FN-DSA算法中的浮点数乘法与加法设计了掩码方案,以防御针对FN-DSA的侧信道攻击。该防护方案同时支持一阶和高阶掩码,并在形式化证明下具有安全性[1]。
二、浮点数的存储与运算
在工程实践中,浮点数的表示普遍遵循IEEE 754标准。该标准定义了多种精度格式,有32位、64位和128位三种类型。在FN-DSA的实现中,采用的是64位双精度浮点格式。
该格式由三部分组成:1位符号位s、11位指数位e、及52位尾数位m(最高位隐含为1)。指数采用1023的偏置值。因此,一个64位浮点数可表示为:
在FN-DSA中,涉及浮点数处理的核心算法主要包括浮点数打包、浮点数加法以及浮点数乘法三部分。其中,浮点数打包的作用是在完成内部浮点运算后,将得到的55位尾数与对应的符号位和指数位组合,重新封装为符合IEEE 754 标准的64位浮点数格式。该打包结果随后作为浮点加法与浮点乘法算法的返回值使用,从而保证整个流程的数值表示一致性与兼容性。具体算法如下:
浮点数打包
浮点数加法
浮点数乘法
三、掩码防护方案
为实现形式化可证明的安全性,论文在浮点数打包、浮点数加法与浮点数乘法的掩码化设计中,引入并组合了多种满足t-NI与t-SNI安全性质的安全组件。这些组件共同构成了完整的屏蔽浮点运算框架,确保算法在t-NI安全属性下的高阶安全性。具体使用的函数与模块如下所示:
掩码算法使用的算法组件及其安全性
其中,SecAnd与SecAdd属于带掩码的布尔运算组件,SecMult用于带掩码的代数运算,A2B与B2A用于在代数掩码与布尔掩码之间进行转换,而RefreshMasks与Refresh则负责刷新与重随机化掩码以确保独立性。
在此基础上,为实现整体浮点运算流程的安全性,论文进一步设计并引入了四个关键的安全组件:SecOr、SecNonzero、SecFprUrsh和SecFprNorm64。这些算法模块分别用于带掩码的布尔与、带掩码的非零检测、带掩码的右移以及带掩码的正则化,其功能如下所示:
带掩码的布尔与算法
带掩码的判断0算法
带掩码的右移算法
带掩码的正则化算法
基于上述安全组件,论文构建了完整的带掩码浮点运算框架,实现了浮点数打包、浮点数加法以及浮点数乘法的带掩码设计,相应的带掩码算法如下所示:
带掩码的浮点数打包
带掩码的浮点数乘法
带掩码的浮点数加法
基于上述带掩码算法,论文通过形式化证明验证了所设计的浮点数打包、浮点数乘法以及浮点数加法均满足t-SNI安全性。在此基础上,其在实际实现中的周期开销统计如下所示:
带掩码的浮点数乘法和加法的运算周期
论文在Arm Cortex-M4处理器上评估了所提出的带掩码浮点数运算的性能,并将其与FN-DSA在NIST Round 3提交中所采用的未掩码浮点数运算实现进行对比。结果显示,在浮点数乘法中,一阶掩码的开销约为未掩码版本的 23倍,二阶掩码则上升至约118倍。在浮点数加法中,一阶掩码的开销约为未掩码版本的35倍,而二阶掩码约为99倍。
此外,论文还在Intel i9-12900KF CPU上测试了带掩码的完整FN-DSA签名流程。实验结果表明,与未掩码版本相比,完整签名耗时在一阶掩码下增加至约7.7倍,在二阶掩码下增加至约24.9倍,但整体仍保持在毫秒级别的可接受范围内。
四、实验结果
为了评估实际安全性,论文采用TVLA方法对所提出的一阶和二阶掩码浮点乘法与加法进行泄漏检测,并与未屏蔽实现进行对比。下图给出了相应测试结果。从左至右分别为:未掩码实现的t值统计、一阶掩码实现的结果以及二阶掩码实现的结果。图中红色虚线表示±4.5的标准阈值;对于二阶泄漏测试,使用了更加精准的阈值,用绿色虚线表示。
TVLA实验结果
对于未掩码的浮点运算,在1,000条测量波形下几乎所有采样点都超过阈值,表明存在明显泄漏。一阶掩码的泄漏情况有所改善,但仍然存在部分点超过阈值。通过对部分代码段进行汇编级重写、插入冗余操作、以及重新排列无关指令等方式优化后,一阶实现能够在10,000条波形下通过测试;然而,当测试规模扩大到100,000条波形时,仍然观察到少量采样点超过阈值,说明设备在某些路径上仍可能产生隐性的一阶泄漏。
对于二阶掩码实现,在100,000条波形下,几乎所有采样点均保持在±4.5阈值内,并且在适用于二阶检测的更精准阈值范围内也全部通过。该结果表明,二阶掩码有效消除了在一阶掩码中仍然存在的泄漏,使得实际安全性显著提升。
五、总结
论文针对FN-DSA算法中pre-image向量计算依赖浮点数运算且易受侧信道攻击的核心安全问题,提出了适用于浮点数乘法与浮点数加法的系统化高阶掩码方案。为解决上述困难,论文设计了四个新的安全组件:SecOr、SecNonzero、SecFprUrsh、SecFprNorm64,并结合已知的t-NI与t-SNI安全组件,构建了可组合的带掩码浮点数乘法、浮点数加法与浮点数打包算法。作者进一步在安全属性下提供了完整的形式化安全证明,表明上述三种浮点运算均满足t-SNI,从而保证在任意有限次探测下不会泄露秘密。论文的工作为构建一个能够抵御已知侧信道攻击的FN-DSA算法实现迈出关键一步。
参考资料
[1] CHEN K Y, CHEN J P. Masking Floating-Point Number Multiplication and Addition of Falcon: First- and Higher-order Implementations and Evaluations[J/OL]. IACR Transactions on Cryptographic Hardware and Embedded Systems, 2024, 2024(2): 276-303.
DOI:10.46586/tches.v2024.i2.276-303.
往期精彩文章推荐
-
闪烁噪声在TRNG中的双刃剑效应
-
针对Kyber二项式分布采样器的自适应模板攻击
-
基于电磁侧信道的Edge TPU超参数提取攻击
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:数缘信安社区 杨易明 杨易明《密码芯片浮点数运算的掩码设计》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论