作为嵌入式系统的运算与控制核心,处理器的安全性设计对于信息安全至关重要.然而,侧信道攻击凭借其无须破解密码原语和破坏电路的非侵入式攻击方式,对处理器的数据加密带来了巨大的安全挑战[1].处理器在进行加解密运算过程中,不可避免地会向外界泄露功耗、电磁、时间等伴生的侧信道信息,这些信息本质上与设备所处理的数据与执行的操作存在关联[2].侧信道攻击正是通过收集这些信息来反演电路的逻辑状态,捕捉密码学原理与物理实现之间潜在联系,最终从硬件角度攻破处理器的安全防线.如今趋向选择在硬件层实现专用的加密电路以极大提升数据吞吐量与性能,典型策略是指令集架构扩展、协处理器、可重构加密等.指令集架构扩展是指在处理器原架构的基础上,增设扩展指令集与对应的扩展硬件,以实现对特定运算的加速执行.AES作为应用最广泛的对称加密算法之一,已有许多工业级标准的指令集架构扩展支持,如Intel x86的AES-NI,ARMv8-A对AES的扩展等,多见于高端的消费产品中.已有大量的研究表明:密码算法指令集架构扩展在带来飞跃式的性能提升同时,也会带来侧信道攻击的风险.文献[3]通过基于分数的密钥枚举算法SKEA完成了对Intel Haswell CPU的AES-NI全密钥攻击.文献[4]利用Intel RAPL接口监视CPU和DRAM的功耗,破解了Core i9-9990K的AES-NI密钥.面对层出不穷的侧信道攻击,处理器与指令集架构扩展必须具备充分的侧信道防御能力.对处理器芯片的侧信道安全评估和增强可以分为硅前和硅后两个阶段.传统以硅后阶段的评估为主,分析处理真实的侧信道数据,较难精确定位泄露来源,且一旦发现存在泄露,须重新设计芯片.新兴发展的硅前评估则是利用仿真模拟处理器的侧信道信息,安全增强的针对性和设计成本远优于硅后阶段,受到研究者的重视[5].文献[6]基于硅前的相关功耗分析方法,提出优化分组密码常用指令基准的策略,对于硬件底层的防护有所欠缺.文献[7]提出的架构关联性分析方法从门级单元的粒度定位侧信道泄露源,探究了底层逻辑单元对侧信道的影响.然而,目前国内外对指令集架构扩展所开展的侧信道安全评估仍集中于传统的硅后阶段[8-9],缺乏科学方法指导硅前阶段的指令集架构扩展设计.为了实现高侧信道安全性的密码算法指令集架构扩展,提出了一种硅前阶段的侧信道安全评估方法,硬件实现了RISC-V架构下两种具有代表性的AES扩展电路,实施该评估方法分析侧信道泄露与处理器扩展指令序列、微架构组件之间存在的关联性,定位泄露时刻与来源,提出了针对性的扩展端口动态掩码和运算单元功耗随机化的混合防护策略.最终在4.9%的面积开销和1.7%的功耗开销下提升第1种AES扩展1 886倍以上的侧信道安全性,在8.0%的面积开销和2.6%的功耗开销下提升第2种AES扩展4 000倍以上的侧信道安全性.1 硅前侧信道安全评估方法1.1 功耗侧信道信息仿真功耗侧信道信息与底层电路的逻辑状态紧密相关,相较于电磁、时间等侧信道信息又极易被攻击者获取[10],因此选择功耗侧信道作为评估重点.在硅前阶段,已有成熟的数字工具能精确仿真分析电路的功耗信息,仿真流程见图1.首先通过综合工具Design Compiler (DC)将处理器的RTL级设计代码综合成门级网表文件.编译指令序列时须于普通加载指令序列(加载不同的明文激励)与扩展指令序列间插入固定数量的空白指令作为时间标签.然后通过Verilog Compiled Simulator (VCS)仿真获取处理器运行时内部信号的翻转波形和开关切换活动.最后通过Primetime PX (PTPX)计算电路整体与单个组件模块的时域功耗曲线.10.13245/j.hust.240079.F001图1数字电路功耗仿真流程对仿真得到的功耗数据,根据时间标签截取与对齐扩展指令序列执行区间内的功耗曲线,作为侧信道安全评估的样本数据.1.2 侧信道泄露模型构建硬件相关的侧信道评估通常有两种泄露模型,即汉明距离(hamming distance,HD)模型和汉明权重(hamming weight,HW)模型.HD模型假设电路的理论功耗与前后时刻电路节点的翻转数量相关,HW模型则假设电路的理论功耗与当前时刻电路节点中为“1”的数量相关.处理器运行过程中,操作中间值通常存储在流水线之间的寄存器区.如果执行乱序策略,将彻底破坏这些寄存器原始值前后时刻的联系,因此反映当前逻辑状态的HW模型更适合作为通用的处理器侧信道泄露模型.建模首先须要针对密码运算选择合理的中间点,计算不同密钥假设下所对应的中间值,然后将其映射至HW模型.对于n比特位宽数据A的HW模型ηHW(A),假设电路的功耗与数据中“1”的数量成正比,即ηHW(A)=∑i=1nai,式中ai∈{0,1}为数据A的第i个比特的逻辑值.1.3 侧信道脆弱性评估相关性功耗分析(correlation power analysis,CPA)是通过计算密码运算过程的中间数据与大量功耗数据的相关性系数以评估电路的侧信道安全水平.将功耗曲线数据表示为矩阵X,将侧信道泄露模型表示为矩阵Y.两个变量之间的皮尔逊相关系数为ρX,Y=Cov(X,Y)σXσY=∑n=1N(Xn-X¯)(Yn-Y¯)∑n=1N(Xn-X¯)2(Yn-Y¯)21/2,式中:Cov(X,Y)为X和Y的协方差;σX和σY分别为X和Y的标准差;X¯和Y¯分别为X和Y的期望.经上述统计计算可以获得不同假设密钥的泄露模型与功耗曲线之间的相关曲线.若正确假设密钥的相关系数高于错误假设密钥,则表明存在侧信道泄露的风险.对于整体的处理器与扩展电路先执行一次CPA分析,以确定整体的侧信道安全水平和主要的泄露时刻.然后对于每个单独的组件模块分别执行独立的CPA分析,以确定不同组件的侧信道泄露分布情况.通过预设的时间标签确定各时刻指令序列的流水线状态,从而推演对泄露起主要作用的指令和对应的微架构组件.结合整体与单独组件的分析结果能综合比较各条指令和各组件对泄露的贡献程度,最终定位关键泄露源.2 处理器AES扩展实现与安全评估2.1 RISC-V架构AES扩展指令实现RISC-V处理器整体架构如图2所示,包含取指、译码、执行、访存和写回5级流水线.10.13245/j.hust.240079.F002图2RISC-V处理器整体架构除了标准通用指令集外,RISC-V架构为用户的自定义扩展保留了指令编码空间.结合文献[11]中归纳的多种AES扩展原理设计实现了两种具有代表性的AES运算扩展指令,编码格式为:第31~30位为00,第29~25位为标识符fn,第24~20位为源寄存器2地址r2,第19~15位为源寄存器1地址r1,第14~12位为000,第11~7位为目标寄存器地址rd,第6~0位为指令标识符0001011.第1种AES扩展(下文称为SAES.V1)为传统的分离型扩展.第2种AES扩展(下文称为SAES.V2)为新式的轻量化整合型扩展.SAES.V1扩展包括字节替换指令和列混淆指令.行移位由扩展指令依据一定次序调用不同的源寄存器以实现.轮密钥加由标准指令集中的异或指令完成.完成单轮128 bit AES运算共需要8条扩展指令和4条异或指令.指令执行原理如下:\\saes.v1.sub rd,r1,r2rd={αsbox(r1[31:24]),αsbox(r2[23:16]),αsbox(r1[15:8]),αsbox(r2[7:0])};\\saes.vl.mix rd,r1,r2δtemp={r1[31:16],r2[15:0]};for (i=0;i4;i=i+1) beginx=γrotl32 (δtemp,8*i);rd[31-8*i:24-8*i]=θgfmul (x[31:24],2)^x[23:16]^ x[15:8]^θgfmul (x[7:0],3);end其中,αsbox为8 bit字节替换函数,γrotl32 为32 bit循环左移函数,θgfmul为有限域数乘函数.SAES.V2扩展包括普通轮加密指令和最终轮加密指令.字节替换仅须1个8 bit S-box结构.列混淆则是单个8 bit元素先进行独立的有限域数乘运算后再与前级异或,由4条扩展指令迭代实现完整的列混淆运算.SAES.V2的硬件开销小于SAES.V1,单条指令完成对单个元素的加密步骤整合,完成单轮128 bit AES运算共需要16条扩展指令.指令执行原理如下:\\saes.v2.enc rd,r1,r2,bx=αsbox(r1[31-8*b:24-8*b]);y={θgfmul (x,2),x,x,θgfmul (x,3)};rd=γrotr32 (y,8*b)^r2;\\saes.v2.enclast rd,r1,r2,bx=αsbox(r1[31-8*b:24-8*b]);y={x,8’b0,8’b0,8’b0};rd=γrotr32 (y,8*b)^r2,其中,γrotr32 为32 bit循环右移函数,b为字节位.2.2 硅前侧信道安全评估实现基于SMIC 180 nm CMOS工艺生成了RISC-V处理器与AES扩展硬件电路的门级网表.功耗仿真的时钟周期设置为100 MHz,考虑到实际仿真效果和速度,选择1/2个时钟周期作为仿真的时基.在执行扩展指令序列之前,明文已存储在通用寄存器x1~x4中,轮密钥已存储在通用寄存器x5~x8中.图3和图4截取了第一轮加密期间部分扩展指令序列的流水线状态.构建泄露模型时,选择AES首轮加密过程中第1字节的字节替换值建立HW模型.根据相关性功耗分析原理,计算各时刻整体与各微架构组件功耗曲线和功耗模型之间的相关性.图5给出了在1 000条明文激励下,处理器整体与部分存在泄露的组件的皮尔逊相关性曲线结果.ALU内部嵌入AES扩展运算硬件,各级流水线寄存器区与通用寄存器堆是处理器数据通路的相关组件.10.13245/j.hust.240079.F003图3SAES.V1首轮加密部分指令流水线状态10.13245/j.hust.240079.F004图4SAES.V2首轮加密部分指令流水线状态10.13245/j.hust.240079.F005图5SAES.V1和SAES.V2整体与泄露组件的皮尔逊相关性曲线对于SAES.V1扩展,处理器整体的皮尔逊相关性曲线在时刻14~17显示突出的尖峰,峰值为0.52,即存在泄露的主要时刻.从单独组件的皮尔逊相关性曲线可看出:时刻14~17对泄露起主要贡献的组件是ID-EX流水线寄存器区和ALU.结合图5(a)的流水线状态,可知此时处于指令[v1.mix x1,x9,x10]的ID和EX阶段.此阶段该指令将调用上一阶段的字节替换值输入至ALU.在时刻14~17,ALU最高的泄露系数要大于ID-EX流水线寄存器区,但仅出现在时刻16.ID-EX流水线寄存器区的泄露系数稍低,可泄露区间更宽,对整体影响更深.除了时刻14~17,各组件的皮尔逊相关性曲线在时刻6~9、时刻21显示有局部的尖峰,由于在整体曲线上反映不突出,这些时刻为侧信道泄露的次要时刻,对泄露贡献程度较小.时刻6~9是指令[v1.sub x9,x1,x2]的MEM和WB阶段,涉及的组件包括EX-MEM流水线寄存器区、MEM-WB流水线寄存器区和通用寄存器堆.对于SAES.V2扩展,处理器整体的皮尔逊相关性曲线在时刻6显示突出的尖峰,峰值为0.81,即存在泄露的主要时刻.从单独组件的皮尔逊相关性曲线可以看出:时刻6对泄露起主要贡献的组件是ID-EX流水线寄存器区、EX-MEM流水线寄存器区和ALU.结合图5(b)的流水线状态可知此时处于指令[v2.enc x5,x1,x5,0]的EX与MEM阶段过渡和指令[v2.enc x5,x2,x5,1]的ID与EX阶段过渡.根据扩展原理,此阶段指令[v2.enc x5,x1,x5,0]控制的ALU已经完成了对第1字节的扩展运算,将结果值传递向EX-MEM流水线寄存器区.由于指令[v2.enc x5,x2,x5,1]与上一条指令存在上下文关系,因此其控制的ID-EX流水线寄存器区将直接获取该结果值而无须经过WB阶段.在时刻6,各流水线寄存器区的泄露系数均高于ALU.除了时刻6,各组件的皮尔逊相关性曲线在时刻8~9显示有局部的尖峰,由于在整体曲线上反映不突出,这些时刻为侧信道泄露的次要时刻,对泄露贡献程度较小.时刻8是指令[v2.enc x5,x2,x5,1]的EX与MEM阶段过渡,时刻9是指令[v2.enc x5,x2,x5,1]的WB阶段,涉及的组件包括EX-MEM流水线寄存器区和通用寄存器堆.结果表明:在AES扩展指令序列的运行过程中,侧信道的泄露来源于扩展运算硬件和处理器的传递与存储关键中间值的数据通路相关组件.综合主要时刻和次要时刻的结果,数据通路的相关组件对整体的泄露影响高于扩展硬件.其结构相对简单,且噪声干扰低,故对侧信道信息的变化更为敏感.3 安全防护策略与效果验证3.1 扩展端口动态掩码对于处理器的数据通路及相关组件,安全防护策略包括对信息流进行加密或掩码保护、设立伪信息通道等.从数据掩码的角度出发,实施动态扩展端口掩码策略,隐蔽扩展硬件对外交互端口的数据流.原理如图6所示,由掩码控制模块对扩展运算单元的输出信号执行掩码操作,对输入信号逆向解码还原.由于单一的掩码易受到高阶侧信道攻击,因此掩码将依据扩展模式以一定的指令周期动态更新.SAES.V1的动态更新周期为8条扩展指令,SAES.V2为4条扩展指令,由扩展运算的最小独立周期决定.该策略能保护扩展硬件对外交互的信息流,从根源解决外部的数据通路及相关组件产生的侧信道泄露.10.13245/j.hust.240079.F006图6扩展端口动态掩码3.2 运算单元功耗随机化对于扩展硬件电路,安全防护策略包括优化底层逻辑、植入算法掩码、随机干扰等.从随机干扰的角度出发,实施运算单元功耗随机化策略,原理如图7所示,在扩展指令执行期间,ALU内闲置的运算单元将进行随机性逻辑运算,通过对寄存器的配置可以灵活控制随机运算的频率,从而产生动态的功耗干扰,以此降低扩展硬件的功耗信噪比.相比于直接优化扩展硬件电路内部逻辑结构或植入算法掩码,运算单元功耗随机化策略的优势在于其并行的随机逻辑运算不会引入额外的时序开销,而且仅需少量控制逻辑即可完成对闲置资源的重复利用.10.13245/j.hust.240079.F007图7运算单元功耗随机化3.3 防护策略验证为了量化对比防护前后的侧信道安全性水平,对防护后的处理器重新实施硅前侧信道安全评估,测试明文数量为1×105条.于主要泄露时刻计算防护前后破解密钥所需的最小曲线数量(measurements to disclosure,MTD),如图8所示.对于SAES.V1扩展,未防护时正确假设密钥相关性系数在第53条曲线处与错误密钥分离,意味着存在泄露,MTD为53.防护后正确假设密钥相关性系数在10万条曲线时也未与错误密钥分离,即防护后电路的MTD大于1×105,安全性提高1 886倍以上.对于SAES.V2扩展,未防护时MTD为12,防护后MTD大于1×105,安全性提高4 000倍以上.表1总结了防护后AES扩展电路的开销与安全性能,并与其他文献相比较,可见本研究的防护策略能以较低的面积开销和功耗开销获得较高提升的安全性能.10.13245/j.hust.240079.F008图8SAES.V1和SAES.V2扩展防护前后MTD值10.13245/j.hust.240079.T001表1防护后AES电路性能参数对比方法增加面积比例/%增加功耗比例/%增加时序比例/%MTD增率倍数SAES.V14.91.711.61 886.0SAES.V28.02.618.94 000.0文献[12]36.93210.44 210.0文献[13]2.610.241.80187.5文献[14]8.0——250.04 结语面向硅前阶段处理器侧信道安全领域,提出了一个高效精确的硅前侧信道安全评估方法,并基于RISC-V处理器架构实现了该方法,分析了两种代表性的AES密码算法指令集架构扩展中侧信道泄露的来源.根据实验结果可见:运算中间值在数据通路中传播所引起的侧信道泄露超过了扩展硬件电路本身的泄露.采用了针对性的扩展端口动态掩码和运算单元功耗随机化的混合防护策略,在硅前阶段进行了安全验证.未来将继续优化完善硅前侧信道安全评估方法,实现对不同处理器架构、不同密码算法指令集架构扩展的侧信道防护,形成完整的硅前分析、泄露溯源与安全验证技术体系.
使用Chrome浏览器效果最佳,继续浏览,你可能不会看到最佳的展示效果,
确定继续浏览么?
复制成功,请在其他浏览器进行阅读
复制地址链接在其他浏览器打开
继续浏览