news 2026/5/27 15:31:15

轻量级密码算法硬件实现:PRESENT与GIFT的性能与侧信道安全评估

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
轻量级密码算法硬件实现:PRESENT与GIFT的性能与侧信道安全评估

1. 项目概述:当安全遇上资源瓶颈

在物联网设备、智能传感器和可穿戴设备爆炸式增长的今天,我们这些做嵌入式安全的工程师面临着一个日益尖锐的矛盾:设备对安全性的要求越来越高,但它们的计算能力、存储空间和电池电量却极其有限。传统的加密标准,比如我们熟知的AES(高级加密标准),虽然安全可靠,但其硬件实现所需的逻辑资源和功耗,对于一颗纽扣电池供电、指甲盖大小的传感器芯片来说,往往过于“奢侈”。这就催生了一个专门的密码学分支——轻量级密码学。

轻量级密码学的核心目标非常明确:在可接受的安全强度下,极致地优化算法的硬件实现效率。这里的“效率”是一个综合指标,主要包括芯片上占用的逻辑面积(直接关系到成本)、执行加密操作消耗的功耗(关系到续航),以及加解密的速度(即吞吐量)。为了实现这个目标,算法设计者们回归基础,从分组密码最经典的SPN(Substitution-Permutation Network,代换-置换网络)架构入手进行深度优化。SPN结构清晰,由多轮相同的操作组成,每轮包含S盒代换(非线性混淆)P层置换(线性扩散),非常适合硬件并行化实现。PRESENT和GIFT就是这类设计的杰出代表。

我最近花了不少时间,深入复现和研究了这篇题为《基于SPN的轻量级密码算法评估》的论文工作。它不仅仅是在纸面上比较几个算法,而是实实在在地在FPGA上实现了AES、PRESENT和GIFT,从硬件资源占用、吞吐量、能效比等多个维度进行了量化对比。更关键的是,它没有停留在性能层面,而是进一步通过**相关性功耗分析(CPA)**这种经典的侧信道攻击手段,评估了这些算法在实际硬件运行时的“抗揍”能力。这对于我们选型至关重要——一个算法再省面积、再省电,如果轻易就能从功耗波动里把密钥扒出来,那也是毫无用处的。本文将带你深入这个评估的每一个细节,从算法结构、硬件实现技巧,到侧信道攻击的实验设置和结果分析,分享我的实操心得和避坑指南。

2. 核心算法解析:PRESENT与GIFT的轻量之道

要理解硬件实现的优劣,必须先从算法本身的设计哲学说起。AES作为标杆,其128位数据通路和复杂的列混合操作虽然安全,但在超轻量级场景下显得笨重。PRESENT和GIFT则走了另一条路:比特级精打细算

2.1 PRESENT:轻量级的奠基者

PRESENT在2007年被提出时,目标就是成为硬件实现的“瑞士军刀”。它的设计极其简洁:

  • 数据块:64位。相比AES的128位,寄存器直接减半。
  • 密钥:支持80位或128位。80位版本专为极端面积约束设计。
  • 轮数:31轮。通过增加轮数来弥补简单轮函数可能带来的安全强度损失。
  • 轮函数:典型的SPN结构,每轮包含三个步骤:
    1. AddRoundKey:64位状态与64位轮密钥进行异或。
    2. Substitution(S盒):使用一个4进4出的S盒(4-bit S-box),将状态每4位作为一个单元进行非线性替换。这个S盒比AES的8位S盒小得多,在硬件中只需很少的查找表(LUT)资源。
    3. Permutation(P层):一个固定的比特位置换。这是一个纯线性的布线操作,在硬件中不消耗任何逻辑门(LUT),只需要重新连接导线即可实现,这是其实现面积小的关键。

注意:PRESENT的P层是比特置换,而非AES那样的字节移位。这意味着它在软件实现上效率不高(因为处理器擅长处理字节或字),但在硬件上,这就是一个近乎零成本的完美扩散层,体现了硬件友好型设计的精髓。

2.2 GIFT:站在巨人肩上的优化

GIFT于2017年发布,可以看作是PRESENT的“精神续作”,旨在修正PRESENT已知的密码学弱点(如线性逼近特性),同时追求更极致的硬件效率。

  • 数据块:支持64位和128位(GIFT-64和GIFT-128)。为了公平对比,论文和我们的焦点是GIFT-64-128(64位数据,128位密钥)。
  • 轮数:28轮(GIFT-64)。轮数减少意味着更少的时钟周期,潜在吞吐量更高。
  • 轮函数结构微调:这是与PRESENT一个关键的区别。GIFT将AddRoundKey操作移到了每轮的末尾,即先进行S盒和P层置换,再与轮密钥和轮常数异或。这个调整影响了侧信道攻击的模型。
  • 更精简的密钥加:GIFT每轮只使用32位轮密钥(来自128位主密钥),与64位状态和6位轮常数进行异或。这意味着每轮的异或逻辑比PRESENT(64位全异或)更小。
  • 密钥编排:GIFT的密钥更新几乎完全由**比特置换(线连接)**完成,几乎不消耗组合逻辑。而PRESENT的密钥编排涉及S盒和异或操作。

从硬件描述语言(HDL)的角度看,实现GIFT的密钥调度模块可能只需要几行赋值语句来完成比特的重排列,而PRESENT则需要实例化S盒和异或门。这种设计上的差异,直接转化为了芯片面积上的节约。

3. 硬件实现策略与工程优化

纸上谈兵终觉浅,绝知此事要躬行。算法的优雅必须通过具体的硬件实现来验证。论文采用了轮迭代(Round-Based)架构,这是资源受限场景下的经典选择。

3.1 轮迭代架构详解

所谓轮迭代,就是只实例化一个轮函数(Round)、一个密钥编排(KeySchedule)和一个轮常数生成(RCSchedule)模块。加密一个数据块需要多个时钟周期,每个周期完成一轮计算,并将结果写回寄存器,作为下一轮的输入。这种设计以时间换面积,用较少的逻辑资源完成多轮运算。

我根据论文描述,用VHDL/Verilog复现了这个结构,其顶层数据通路如下图所示(以PRESENT-128为例):

PlainText & Key (UART输入) | v [控制逻辑FSM] | v +-------------------------------+ | PTI寄存器 (64位) | KEY寄存器 (128位) | +-------------------------------+ | | v v [轮函数] <---------------- [密钥编排] | | v v +-------------------------------+ | | PTI寄存器 (反馈输入) | | +-------------------------------+ | | | v v [多路选择器] <------------- [轮常数生成] | | v v 密文输出 ...(下一轮)

关键优化技巧:论文中提到一个节省一个时钟周期的“小聪明”。通常,系统会等待明文和密钥完全加载到寄存器后再开始加密,这引入了一个周期的空闲。他们的设计在UART传输数据的同时,就利用Init信号将正在传输的数据直接送入轮函数进行第一轮计算。当传输完成时,第一轮结果已经就绪,系统只需切换到反馈模式继续后续轮次即可。这个优化在吞吐量不高但追求极致能效的场景下很有价值。

3.2 FPGA资源利用的三种配置

在Xilinx Kintex-7/Aritx-7这类FPGA上,一个Slice基本单元包含4个6输入LUT和8个触发器(FF)。如何利用这些基本单元,能显著影响实现效率。论文对比了三种配置:

  1. 便携式(Portable):仅使用通用的LUT和FF实现所有逻辑和存储。这是最通用、可移植性最强的方案,任何FPGA厂商的器件都能支持。
  2. 触发器优化式(FF):利用Slice内��专用的多路选择器(MUX)和FF来构建数据路径。这通常能减少对通用LUT的消耗,但可能会占用更多Slice,因为Slice内部的MUX数量有限。
  3. 移位寄存器式(SRL):将LUT配置为分布式RAM或移位寄存器(SRL16/32)来使用。这对于实现S盒等查找表操作可能更节省资源,但会引入额外的控制逻辑复杂度。

实操心得:在你自己实现时,不要盲目追求某一种配置。应该用综合工具(如Vivado)的synth_design直接综合,然后查看资源报告。Portable模式通常能获得最好的面积与性能平衡,也是后续进行侧信道分析时最“干净”的实现(没有使用厂商特定的黑盒资源)。FFSRL模式虽然可能在某些指标上更优,但其对工具链的依赖性强,且可能影响功耗泄漏特征。

3.3 性能评估指标解读

论文使用了几个核心指标进行对比,理解这些指标的含义对选型至关重要:

  • 吞吐量(Throughput, TP)TP = (频率 * 数据位宽) / 所需周期数。单位是Mbps。它直观反映了加密速度。
  • 吞吐量面积比(TP/A):用吞吐量除以占用的Slice数量。这是衡量硬件效率的黄金指标,数值越高,说明单位面积上实现的性能越好,即“性价比”越高。
  • 每比特能耗(E_bit)E_bit = (周期数 * 功耗) / (频率 * 数据位宽)。单位通常是纳焦耳每比特(nJ/bit)。这个指标直接关系到电池寿命,对于物联网设备是命门。

论文将所有设计的运行频率归一化到100MHz进行比较,这消除了不同设计最高频率差异带来的干扰,使得面积和能效的对比更加公平。

4. 性能对决:数据下的真相

综合论文数据和我的复现验证,我们可以得出一些非常清晰的结论。

4.1 最大频率下的性能对比

当每个算法以其能跑到的最高频率运行时(见表4数据):

  • AES:毫无悬念地拥有最高的绝对吞吐量(高达数千Mbps),因为它数据通路宽(128位)、轮数少(10轮)。但它的代价是巨大的:面积是轻量级算法的4倍左右,每比特能耗是PRESENT的2倍,是GIFT的5倍。这印证了开头所说,AES在极端受限场景下并不合适。
  • PRESENT-80 vs PRESENT-128:80位密钥版本在面积和能效上自然优于128位版本,这是用安全性换取的资源节约。TP/A比值上,80位版本也更高。
  • GIFT-64-128 vs PRESENT-128:这是同等安全级别(128位密钥)下的对决。结果令人印象深刻:GIFT在面积上平均比PRESENT-128小1.2倍,每比特能耗低2倍,TP/A比值更高。GIFT赢得了硬件效率的全面胜利

原因深挖

  1. 更小的异或操作:PRESENT每轮进行64位异或,而GIFT是32位轮密钥+6位轮常数+1位固定‘1’的39位异或,组合逻辑更简单。
  2. 近乎零成本的密钥编排:GIFT的密钥更新是纯比特置换,用连线即可实现。PRESENT的密钥编排需要S盒和异或操作。
  3. 更少的轮数:GIFT-64为28轮,PRESENT为31轮,完成加密所需周期更少。

4.2 固定吞吐量下的面积与能效

在实际物联网应用中,无线通信模块(如LoRa, BLE)的带宽往往是瓶颈,加密速度只需匹配通信速率即可,跑再快也是浪费。因此,在固定吞吐量(如250kbps, 1Mbps, 2Mbps, 10Mbps)下比较面积更有意义。

从图6和图7可以清晰看到:

  • 在任意给定的吞吐量需求下,GIFT和PRESENT所需的芯片面积都比AES小一个数量级(约9-10倍)。
  • 在轻量级算法内部,GIFT始终比PRESENT节省约20%的面积,同时TP/A比值也高出约20%。

这意味着,如果你为一个BLE传感器选型,要求加密速率达到1Mbps,那么选择GIFT相比PRESENT,可以直接节省五分之一的逻辑资源,这部分资源可以用来运行其他任务,或者选择更小、更便宜的FPGA/ASIC芯片。

4.3 实现配置的选择

在三种实现配置中:

  • FF配置:由于使用了专用的快速多路选择器,通常能获得最高的运行频率,从而在最大频率下得到最高吞吐量。但代价是可能占用更多的Slice。
  • Portable配置:在面积和TP/A的均衡上表现最好,是最推荐用于实际部署的通用方案。
  • SRL配置:优势不明显,有时甚至因为控制逻辑复杂而表现更差。

避坑指南:不要迷信最高频率。对于电池供电设备,我们更关心在满足吞吐量要求下的最低功耗和最小面积。因此,应该先确定你的应用所需的吞吐量,然后寻找能满足该吞吐量的最低频率和最小面积配置。Portable配置因其通用性和良好的均衡性,通常是首选的起点。

5. 侧信道分析评估:性能与安全的权衡

硬件效率高固然好,但如果牺牲了安全性,一切归零。侧信道分析(SCA)通过测量设备运行时的物理泄漏(如功耗、电磁辐射、时间)来推断密钥。**相关性功耗分析(CPA)**是其中最强大、最常用的方法之一。论文这项工作最有价值的部分,就是将性能评估延伸到了安全性评估。

5.1 CPA攻击实验搭建

为了公平比较,攻击针对每个算法的最后一轮进行,使用汉明距离(HD)模型。攻击设置如下:

  1. 平台:Nexys-4开发板(Xilinx Artix-7 FPGA),运行频率100MHz。
  2. 泄漏采集:使用电磁(EM)探头采集芯片表面的电磁辐射信号。相比直接测量电源线上的功耗,EM探针可以更精确地定位到加密核心区域的泄漏,信噪比更高。信号经过60dB低噪声放大器(LNA)后,由高速示波器采集。
  3. 攻击模型:对于每个算法,攻击者试图恢复8位密钥。他猜测一个密钥字节,利用已知的密文,逆向推导出最后一轮S盒输入/输出的汉明距离(即状态翻转的比特数),并将这个计算出的汉明距离模型与实测的电磁轨迹进行相关性分析。相关性最高的那个密钥猜测值,就是正确密钥。

5.2 攻击复杂度与结果分析

攻击的成功率用“成功率(Success Rate)”曲线表示,即随着使用的能量轨迹条数增加,成功恢复密钥的概率。图12的结果揭示了关键信息:

  • 最抗攻击:PRESENT-128 > PRESENT-80 > AES > GIFT-64-128。
  • 量化来看:攻破PRESENT-128所需的轨迹数,大约是攻破GIFT所需轨迹数的4倍。也就是说,GIFT对CPA的抵抗力最弱

为什么硬件效率最高的GIFT,反而最脆弱?

这需要深入攻击模型的细节(见图13-15):

  • AES:攻击8位密钥时,涉及1个8位S盒。大S盒的泄漏信息更集中、更明显。
  • PRESENT:攻击8位密钥时,涉及2个4位S盒。虽然S盒小,泄漏弱,但需要同时攻击两个,增加了攻击的不确定性。
  • GIFT:这是关键!由于其轮函数结构(密钥加在最后)和密钥使用方式,攻击8位密钥时,需要涉及4个4位S盒。更重要的是,攻击模型中还包含了已知的6位轮常数(RC)。这些已知的常量位在相关性计算中,起到了“过滤器”的作用,能有效排除错误的密钥猜测假设,显著降低了攻击对噪声的敏感性。因此,攻击者用更少的轨迹就能得到更显著的相关性峰值。

5.3 对工程实践的启示

这个结论极具现实意义:算法级别的微小改动,会��其实硬件实现的侧信道脆弱性产生巨大影响。GIFT通过优化密钥加和密钥编排,赢得了硬件效率,但却无意中简化了CPA攻击的模型。

重要提醒:这并不意味着GIFT不安全。密码学意义上的安全(抗数学密码分析)和实现安全(抗侧信道攻击)是两个维度。论文评估的是无防护(unprotected)实现下的原生脆弱性。在实际产品中,如果决定使用GIFT,必须为其配备相应的侧信道防护措施,例如:

  • 掩码(Masking):将中间值与随机数进行运算,打破数据与功耗的依赖关系。
  • 隐藏(Hiding):通过随机化操作时序或增加噪声,使泄漏轨迹难以分析。 这些防护措施会带来额外的面积和性能开销,在最终的方案选型中,必须将这部分开销考虑进去。

6. 综合选型建议与常见问题

经过性能和安全性的双重拷问,我们应该如何选择?

6.1 算法选型决策矩阵

你可以根据你的项目优先级,参考以下决策流程:

  1. 安全第一,资源极度紧张:选择PRESENT-128。它在提供128位密钥安全强度的同时,保持了优秀的抗CPA能力,硬件效率虽略逊于GIFT,但仍在轻量级范畴内。这是最稳健的选择。
  2. 资源极端紧张,可接受略低的安全强度:选择PRESENT-80。在成本、功耗敏感到极致的场景下(如一次性使用的传感器标签),80位密钥在可预见的生命周期内仍然是安全的,且能提供最小的面积和功耗。
  3. 追求极致硬件效率,并愿意投入侧信道防护:选择GIFT-64-128。如果你有足够的预算(面积、功耗)为其添加掩码等防护电路,那么GIFT能为你提供最高的性能密度(TP/A)。切记,不可裸奔使用
  4. 传统应用,资源不敏感AES。如果你的主控性能强大,或者有硬核AES加速器,继续使用AES是完全没问题的,其生态系统和安全性经过最广泛的验证。

6.2 硬件实现常见问题与排查

在你自己实现和测试这些算法时,可能会遇到以下问题:

  • 时序不满足:轮迭代架构的关键路径通常在轮函数内部。如果频率设得过高,会出现建立时间违例。
    • 排查:查看综合报告中的关键路径分析。通常是S盒的级联逻辑或长位宽的异或链。
    • 解决:在关键路径插入寄存器进行流水线切割(但这会增加面积和延迟)。或者,接受一个更低的工作频率,这对于很多物联网应用来说足够了。
  • 功能仿真正确,上板后输出乱码:这很可能是因为密钥或轮常数加载错误,或者轮数计数器控制逻辑有误
    • 排查:编写一个简单的测试台(Testbench),用官方测试向量(Test Vector)逐轮比对中间结果。特别检查第一轮和最后一轮的输入输出是否正确。确认控制状态机(FSM)在加密完成后能正确停止并输出结果。
  • 侧信道测试无泄漏或信噪比太低
    • 排查:首先确认你的测量点是否对准了加密核心的电源区域或附近。使用EM探头时,需要细微移动位置以找到最强的泄漏点。
    • 解决:增加采集的轨迹条数。在算法运行前后加入触发信号(trigger),确保示波器采集的是加密操作期间的信号。尝试不同的预处理方法,如去均值、滤波等。

6.3 关于侧信道评估的延伸思考

论文的工作是一个很好的起点,但真实的侧信道评估更为复杂:

  • 多攻击向量:除了CPA,还应考虑简单功耗分析(SPA)、模板攻击(TA)、故障攻击(FA)等。不同的算法可能对不同攻击的抵抗力不同。
  • 防护代价评估:真正有意义的对比是“算法+标准防护方案”的整体开销。例如,比较带一阶掩码的PRESENT和带一阶掩码的GIFT,哪个面积/性能代价更大?这需要更深入的研究。
  • 自动化测试:建立自动化的侧信道测试平台,能够批量采集数据、运行攻击脚本、生成成功率曲线,这对于在开发迭代中快速评估设计修改的安全性影响至关重要。

这次深入的复现与评估让我深刻体会到,在嵌入式安全领域,没有“银弹”。在算法选型时,必须在性能、面积、功耗和安全性之间做出精妙的权衡。PRESENT和GIFT代表了轻量级密码硬件优化之路上的两个重要里程碑,一个更均衡,一个更激进。作为工程师,我们的任务就是理解这些特性,结合具体的应用场景、威胁模型和成本约束,做出最合适的选择。最终,安全永远是一个系统性问题,一个轻量级密码芯片只是起点,安全的密钥存储、安全的启动、安全的通信协议共同构成了设备安全的护城河。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/27 15:31:03

ML模型选择:根据业务需求选择合适的机器学习模型

ML模型选择&#xff1a;根据业务需求选择合适的机器学习模型 一、ML模型选择概述 1.1 ML模型选择的定义 ML模型选择是指根据业务需求、数据特征和性能要求&#xff0c;从众多机器学习算法中选择最合适模型的过程。它涉及模型评估、比较和验证&#xff0c;确保选择的模型能够满足…

作者头像 李华
网站建设 2026/5/27 15:31:02

从 Web 到移动端再到打印:Highcharts 如何实现跨平台一致性图表体验

一个企业BI内容&#xff0c;可能同时被用于&#xff1a;Web 管理后台手机 App平板 BI 看板PDF 报告PPT 汇报材料打印版经营分析报告问题也随之出现&#xff1a;同一份图表&#xff0c;如何在不同平台中保持一致的视觉风格、交互逻辑与品牌体验&#xff1f;这正是 Highcharts 最…

作者头像 李华
网站建设 2026/5/27 15:31:00

一文讲透|2026年靠谱AI论文软件榜单,AI工具一键写高质论文

2026 年实测 10 款主流 AI 论文工具&#xff0c;千笔AI以全流程覆盖 语义级降重 免费查重领跑综合榜&#xff1b;ThouPen 稳坐留学生毕业全流程工具头把交椅&#xff1b;免费工具中DeepSeek Scholar、豆包学术版表现亮眼&#xff0c;30 分钟即可生成万字高质量初稿&#xff0…

作者头像 李华
网站建设 2026/5/27 15:28:21

深度解析IDM激活脚本:从新手到专家的完整实战指南

深度解析IDM激活脚本&#xff1a;从新手到专家的完整实战指南 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为Internet Download Manager试用到期而烦恼&a…

作者头像 李华
网站建设 2026/5/27 15:26:57

5分钟搞定局域网文件共享:chfsgui图形化工具完全指南

5分钟搞定局域网文件共享&#xff1a;chfsgui图形化工具完全指南 【免费下载链接】chfsgui This is just a GUI WRAPPER for chfs(cute http file server) 项目地址: https://gitcode.com/gh_mirrors/ch/chfsgui 还在为跨设备文件传输而烦恼吗&#xff1f;chfsgui文件共…

作者头像 李华
网站建设 2026/5/27 15:26:53

【华为OD机试真题 新系统】997、查找能被整除的最大整数 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

文章目录 一、题目 🎃题目描述 🎃输入输出 🎃样例1 🎃样例2 🎃样例3 二、代码与思路参考 🎈C++语言思路 🎉C++代码 🎈Java语言思路 🎉Java代码 🎈Python语言思路 🎉Python代码 🎈C语言思路 🎉 C语言代码 🎈JS语言思路 🎉JS代码 作者:KJ.JK 订阅…

作者头像 李华