基于FPGA的时钟同步功耗信息采集方法

2020-06-18 03:41谷大武1b刘军荣
计算机工程 2020年6期
关键词:示波器功耗时钟

宋 安,王 琴,谷大武,郭 筝,1b,刘军荣,2,张 驰

(1.上海交通大学a.电子信息与电气工程学院; b.网络空间安全学院,上海 201100;2.智巡密码(上海)检测技术有限公司,上海 201100)

0 概述

旁路攻击(Side Channel Attacks,SCA)是一种通过利用芯片泄露的物理信息并对其进行统计分析以获得芯片内部敏感信息的攻击方法[1]。旁路攻击主要手段为功耗分析,是通过采集密码系统运行时的功耗信息,并利用统计学和信号处理的方法找出数据中与密码算法执行有关的信息,再结合电路的运行特征进行密钥破解[2]。功耗分析是旁路攻击研究的核心内容,而功耗采集则是功耗分析的基础[3]。

传统的采集方法是用示波器对待测芯片进行异步采集,即示波器的采集时钟与待测芯片的时钟完全独立[4],示波器的采集时钟一般使用内置的高频时钟,待测芯片的工作时钟来源于晶振,因此采集时钟和待测芯片工作时钟之间存在不稳定的相位差。由于待测芯片多数在时钟边沿执行密码运算,传统的异步采集方法很难完全采集到待测芯片的密码操作相关信息。为了得到充足的时钟边沿信息,传统的异步采集方法需要增大示波器的采样频率,但同时获得了大量冗余信息,增加了旁路分析的复杂度。此外,传统异步方法采集的功耗信息的触发时间是不对齐的,这极大地增加了旁路分析的时间成本。由文献[5]可知,异步采集的功耗信息使得功耗分析难以完成。

针对以上问题,文献[4]通过弯曲的磁线对待测芯片的功耗进行采集,尝试获得精准的功耗信息。文献[5]通过电源注入的方法强制使内部振荡器的频率锁定于外部时钟的频率。文献[6]设计了包含锁相环(Phase Lock Loop,PLL)的放大滤波电路,尝试恢复出待测芯片内部的工作时钟。然而,以上研究存在着明显局限性:测评者需要熟悉待测芯片泄露功耗的电路,精确定位功耗泄露的采集位置,这是一项复杂且难度很高的工作[4];目前多数芯片使用稳定的晶振作为时钟源,无法与外部时钟锁定,且未进行后续的旁路采集和功耗分析验证,缺乏实验支撑[5];由于存在放大和滤波通路,恢复出的时钟会随着待测芯片原本的工作时钟的变化而产生不稳定的相位延时[6]。此外,文献[4,6]的方法需要在专用的采集平台(如Chipwhisper硬件[7])上实现,可供选择的测评参数有限,并不适用于实际的测评。

为改善以上问题,需要一种通用的采集方法和采集平台,既可大幅提升功耗分析的成功率,又能广泛地应用在实际的测评中。为此,本文提出一种基于FPGA的时钟同步功耗信息采集方法。

1 基于FPGA的时钟同步设备的硬件实现

现场可编程门阵列(Field Programmable Gate Array,FPGA)具有速度快、效率高、组成形式灵活以及内部时延小的特点,可以大幅提升系统对信号的响应和处理时间,并且能进行现场设计、编程等,在高速数据处理方面起到了关键作用[8]。因此,本文选用FPGA进行硬件实现,设计了基于FPGA的时钟同步设备,为数字示波器和待测设备提供状态同步、相位可调、频率可变、驱动能力强的时钟信号。基于FPGA的时钟同步设备具有以下优势:

1)FPGA内部时钟资源非常丰富,可构建稳定的多时钟系统,内部产生的时钟信号可通过众多的时钟管脚引出。

2)FPGA内置锁相环模块,内部时钟的频率和相位可调,测评者可根据需求自行调节,以满足各种功耗信息采集场景的需求。传统的采集方法中测评者难以控制待测设备和示波器的时钟频率和相位差。然而在基于FPGA的时钟同步采集系统下,测评者可方便配置待测设备和示波器的时钟频率和相位,来获得更高信噪比的功耗曲线,以达到最佳的采集效果。

3)FPGA可拓展性强。待测设备和示波器对外部信号的驱动能力有一定要求,若外部信号电平过低或不稳定会造成驱动不足的问题。本文采用的FPGA开发板的I/O管脚电平为3.3 V,且封装良好,满足待测设备和示波器对外部信号驱动能力的要求。

在本文的采集方法中,基于FPGA的时钟同步设备产生状态同步(即相位差稳定)的时钟CLK1和CLK2,作为数字示波器的采集时钟,经过解耦电路后作为待测设备的工作时钟,然后进行后续的采集。

时钟同步设备的硬件实现如图 1的虚线框所示。状态同步时钟产生的基本原理是:来自晶振的时钟经过锁相环电路产生多个输出时钟,全部存储到寄存器组中;多路电路选择寄存器组中的时钟后,经过缓冲电路、输出电路,由设备的I/O引出。

图1 时钟同步采集系统

硬件的设计基于硬件描述语言Verilog HDL,采用的EDA平台为Xilinx公司的Vivado套件[9],FPGA开发板采用Airtex-7系列FPGA的 Basys3开发板[10]。保证状态同步的时钟的正确产生是硬件设计的关键。硬件设计包含以下关键电路:

1)锁相环电路

若采用逻辑电路来产生时钟信号,时钟信号的相位将不稳定,且在实际的电路中会存在毛刺和抖动。然而,锁相环电路能很好地解决这一问题。锁相环电路不仅为FPGA提供灵活可变的时钟,还有消除时钟抖动和抗时钟歪斜的作用。锁相环电路包括鉴相器、环路滤波器、压控振荡器、分频器等。首先鉴相器比较输入时钟和分频器的反馈时钟的相位和频率,产生比例信号。然后比例信号驱动环路滤波器,并把参考电压传输到压控振荡器,以此决定压控振荡器是否运行在更高或更低的频率[11]。

本文锁相环电路的实现调用了Vivado内置的IP核,在配置分频和倍频等参数后,得到多个频率的输出时钟。

2)多路选择电路

多路选择电路提供选择信号,用于控制产生不同频率和相位的时钟信号,保证了时钟信号的可调性。对于Airtex-7系列FPGA,锁相环电路最多提供6个时钟输出,进入寄存器的多个时钟等待多路选择电路的控制信号,最后产生两个输出时钟。

多路选择电路的实现用到了累加器,每当外围电路的按键按下时,多路选择电路的选择信号就累加一次,将累加结果作为选择信号。

3)缓冲电路和输出电路

缓冲电路用于保证各电路之间时钟信号的正常驱动。输出电路的作用是将FPGA内部产生的时钟通过I/O引出。

缓冲电路调用了Vivado内置的buffer函数;输出电路调用了原语,在配置双倍数据速率输出(Output Double Data Rate,ODDR)电路参数后,实现了FPGA内部逻辑电平到输出模拟时钟的转换。

在完成基于FPGA时钟同步设备的硬件设计后,编译Verilog代码,并将编译后产生的比特流文件通过JTAG下载到Airtex-7 FPGA的Basys3中。用数字示波器对图1的CLK1’(经过电气解耦后的CLK1)、CLK2信号进行检测,结果如图2所示。其中,C2信道为采集参考时钟CLK2,C3信道为工作时钟CLK1’,其相位差稳定在-1°~+1°范围内。

图2 采样时钟与工作时钟

2 同步采集平台设计

本文选择专用安全FPGA芯片SAKURA-G作为待测设备。SAKURA-G开发板用于硬件安全领域的研究和开发,如旁路攻击、故障注入攻击、物理不可克隆函数等[12]。

与传统采集方式相比,本文设计的同步采集方法主要在待测设备和示波器上体现差异。在传统方法异步采集时,待测设备的工作时钟来源于晶振,而在同步采集时,待测设备的工作时钟由基于FPGA的时钟同步设备提供并通过SAKURA-G上的I/O引脚引入。传统方法异步采集时,示波器一般使用内置的采集时钟,而在同步采集时,数字示波器的采集时钟由基于FPGA的时钟同步设备提供并通过示波器外部组件WR6Zi-ExtRef-IN/OUT[13]引入。该组件可以接受外部参考时钟,使内部采集时钟与外部参考时钟相位一致,且示波器内部采集时钟频率可任意调节,如图3所示。

图3 实验采集流程

本文设计的同步采集步骤如下:

步骤1按照测评需求调节时钟频率的大小(由外围电路按键控制),时钟同步设备产生CLK1(序号5),经过解耦电路后的CLK1’作为待测设备的工作时钟(序号7);时钟同步设备产生CLK2,经过幅值调整后作为示波器的采集参考时钟(序号6)。

步骤2PC向待测设备发送明文(或密文)、随机数等指令,等待待测设备传回密文(序号1)。

步骤3待测设备开始加密(或解密),将触发信号传给示波器(序号3)。

步骤4PC向示波器发送采样率、触发延时、幅值分量等参数,等待示波器传回功耗曲线(序号2)。

步骤5示波器对待测设备的功耗进行采集(序号4)。

传统的异步采集方法包含序号1~序号4,最终采集到的功耗曲线信噪比较低。本文的同步采集在传统异步采集方法的基础上增加了序号5~序号7部分,不仅实现了同步采集,还解决了噪声问题。按照设计的同步采集方法搭建采集平台,同步采集示意图如图4所示。

图4 同步采集示意图

3 实验设计与分析

为验证本文提出的同步采集方法的效果,本文的实验设计主要基于相关功耗分析(Correlation Power Analysis,CPA)攻击。

3.1 CPA攻击

CPA是一种非建模类的功耗分析方法[14]。CPA攻击由差分功率分析(Differential Power Analysis,DPA)[15]演变而来,在本文实验场景下,相比其他功耗分析方法,如SPA[16]、TA[17]等,CPA更加快速和有效。

vi,j=Sbox(di⊕kj)

(1)

li,j=L(vi,j)

(2)

(3)

3.2 无防护AES功耗曲线的CPA攻击

同步采集对异步采集的提升率计算公式可以表示为:

(4)

其中,Cs表示异步功耗曲线的密钥相关性,Ca表示同步功耗曲线的密钥相关性。

选择10 000条无防护的AES功耗曲线(待测芯片工作频率为10 MHz)进行单字节功耗分析,分析平台为Matlab[18]。图5(a)给出示波器采样率为25 MS/s时异步和同步采集的功耗曲线的密钥相关性示意图。灰色实线代表错误密钥的相关性,黑色虚线表示异步的正确密钥的相关性曲线,黑色实线表示同步的正确密钥的相关性曲线(图5(b)、图5(c)、图5(d)的表示相同)。黑色虚线在时刻45附近出现了尖峰,最高相关性-0.03左右,但未与灰色实线区分开。黑色实线在时刻45附近产生了明显的尖峰,最高相关性提升至-0.05,且泄露点数量增加。按照式(4),同步采集的功耗分析的提升率δ为66.7%。

图5(b)给出示波器采样率为100 MS/s时异步和同步采集的功耗曲线的密钥相关性示意图。在时刻255附近,黑色虚线的最大相关性为-0.10,而黑色实线的最大相关性提升到-0.13,同步采集的提升率δ为30%。

图5 不同采样频率的CPA攻击结果

3.3 带防护DES功耗曲线的CPA攻击

DES的分析与AES类似,由于DES算法存在掩码防护,需要更多的功耗曲线。在此场景下,选择150 000条功耗曲线(待测芯片工作频率为10 MHz)进行单字节功耗分析,分析平台为Matlab。图5(c)给出示波器采样率为25 MS/s时异步和同步采集的功耗曲线的密钥相关性示意图。黑色虚线的相关性最大值为-0.075,黑色实线的相关性最大值达到-0.10。按照最高相关性计算提升率,同步采集的功耗分析的提升率δ为33.3%。

图5(d)给出了250 MS/s异步和同步采集的相关性示意图。黑色虚曲线最大相关性为-0.16,且在时刻105和时刻120时与灰色实线有所重叠。黑色实线最大相关性提升到-0.19,在时刻105和时刻120仍与错误曲线有很好的区分度,信息泄露更为明显。同步采集的功耗分析的提升率δ为18.75%。

3.4 结果分析

3.2节、3.3节分别对AES和DES进行单个字节的CPA攻击,本节将给出所有字节的CPA攻击的综合结果。

以图5(b)中时刻250处的泄露点进行CPA分析为例(以5(a)、图5(c)、图5(d)为例也能得到类似的结论),结果如图6所示。其中,横坐标表示功耗曲线数量,纵坐标表示密钥相关性,每一条曲线代表每一种假设密钥的相关性。

图6 相关性与曲线数量的关系

当功耗曲线数量较少时,虚线和实线都未能与灰色曲线区分;随着使用功耗曲线的数量增加,正确曲线的相关性与错误曲线区分增大。当功耗曲线数量达到600条时,正确密钥曲线开始与错误曲线区分,最终灰色曲线的相关性的收敛于±0.06,虚线的最高相关性为-0.08,实线的最高相关性为-0.12。

从图6还可以发现,虚线在曲线数量为1 800时与灰色曲线有重合部分,然而实线从500条开始就与错误曲线产生了良好的区分度。结果表明,本文采用的同步采集比异步采集更容易产生泄露,只需利用较少的功耗曲线即可攻击出正确密钥。

上文为单字节CPA分析,下面将剩余所有字节进行CPA攻击,统计攻击出所有正确密钥所需的曲线数如表1、表2所示(考虑实验环境对功耗曲线的微小影响,表中曲线数为多次实验统计的近似结果)。其中,表1 是未防护的AES算法的攻击结果,表2是带防护的DES算法的攻击结果。

表1 未防护的AES的攻击结果

表2 带防护的DES的攻击结果

如表1所示,当示波器的采样率为250 MS/s时,同步采集的功耗分析提升率为7.1%,这是由于采样率远高于待测芯片工作时钟后,每条功耗曲线的泄漏点增多,异步采集的不良效应被稀释。然而,随着示波器采样率的降低,提升率迅速上升,在采样率为25 MS/s时产生了最佳的效果,同步采集相比异步采集减少了37.5%的功耗曲线数量。

表2与表1的结果类似。当示波器采样率为250 MS/s时,功耗曲线的CPA攻击提升率为5.0%。随着示波器采样率的降低,提升率迅速上升,在采样率为25 MS/s时产生了最佳的效果,同步采样相比异步采样减少了35.0%的功耗曲线数量。

3.5 信噪比

在早期实验时发现采集过程中出现明显的噪声,这是由于待测芯片使用了外部时钟。较差的信噪比将影响功耗分析的成功率。下文讨论耦合噪声对功耗曲线的影响。

每条功耗曲线lk都由n个功耗点组成,公式表达如下:

(5)

其中,lk(t)为示波器在第t时刻采集的功耗点的值,它的大小由待测芯片中的密码算法产生的中间值δ(t)和噪声ε决定,即:

lk(t)=δ(t)+ε

(6)

其中,δ(t)为S盒的输出产生的功耗,与明文和密钥k相关,ε的大小独立于δ(t),与外部设备的时钟频率相关(暂不考虑待测芯片内部的其他噪声)。在给定的场景中,功耗曲线lk第t个点的信噪比的计算公式如下[19]:

(7)

其中,Var(·)表示方差,Var(δ(t))量化了可利用的信号造成的功耗点的变化大小,Var(ε)量化了由噪声导致的该点的变化。

为提升功耗曲线的信噪比,有以下两种减少ε的方法:1)为外部时钟设备提供高质量的稳压电源,把电源噪声的影响降至最低,但此方法对信噪比的改善不明显;2)对时钟信号进行电气解耦处理,屏蔽其对待测芯片的影响。

考虑成本和性能,本文使用高速光耦6N137作为信号隔离器[20]。光耦的输入端连接发光二极管,电信号驱动半导体发光器件发光,而接收端的光敏管将接收到的光信号转换为电信号输出。6N137具备比普通光耦更快的速度和更强的驱动能力。将光耦元件应用在时钟同步设备输出端(如图1所示解耦电路的输入端),其电路如图7所示。其中,CLK1代表输入端,CLK1’代表输出端。调整电阻和电容的大小至最佳性能后,完成功耗曲线的采集。

图7 解耦电路示意图

选择功耗曲线中包含密钥信息量最大的点,根据式(7),计算功耗曲线解耦前后的信噪比,结果如表3所示。

表3 功耗点信噪比对比

由于待测设备的算法是硬件实现,且芯片内部存在其他电子噪声,导致信噪比相对较低。经过解耦处理后的功耗曲线,信噪比得到明显改善。

4 性能比较

表4列出了目前相关研究的关键指标。待测芯片执行的算法包括软件实现(SW)和硬件实现(HW)的AES和DES算法等,本文进行了硬件AES算法和硬件DES算法的功耗分析实验,证明了本文方法的提升效果。

表4 相关方法性能对比

工作频率是待测芯片执行密码算法时的工作时钟频率。本文的同步采集方法对待测芯片的工作频率最高为10 MHz(受限于6N137光耦器件的最高信号转换频率,性能更优的光耦器件会提升此参数)。

采样频率是采集设备的时钟频率。文献[4]采集设备的采样频率为96 MS/s时达到了最优;文献[6]采集设备的采样频率为31.2 MS/s时达到了最优;本文在示波器采样频率为25 MS/s时达到最优。因此,本文对采集设备的采样频率要求最低,降低了对采集设备的成本要求。

预处理包括功耗曲线的再对齐、调整等优化操作。本文无需对功耗曲线进行处理,减少了分析的复杂度。

提升率利用了CPA攻击的结果,此列数据是各自采集环境下的计算结果(文献[4,6]未具体给出提升率,但可结合原文图表近似计算得到提升率)。本文方法的提升率最高达到66.7%。

5 结束语

本文提出一种基于FPGA的时钟同步功耗信息采集方法。运用该方法设计同步采集平台,实现了同步功耗信息的采集。通过相关功耗分析进行实验验证,结果表明,与AES和DES算法相比,本文同步采集方法功耗分析的成功率有较大提升。本文利用光电解耦原理改善了采集过程中的噪声问题,使信噪比得到一定提升,为解决功耗信息采集过程中的噪声问题提供了新思路。本文时钟同步设备和耦合电路是分离的,下一步通过将其合理整合并制板,以进一步提升采集的信噪比。

猜你喜欢
示波器功耗时钟
基于任务映射的暗硅芯片功耗预算方法
别样的“时钟”
古代的时钟
一款教学示波器的Y通道设计与实现
可携带式虚拟双踪示波器
揭开GPU功耗的面纱
有趣的时钟
数字电路功耗的分析及优化
时钟会开“花”
一种面向星载计算机的功能级功耗估计方法