用于差分功率分析和电磁分析的缓解的微架构特征
背景技术:1.侧信道攻击(sca)是指可用于损害智能卡或其它计算设备的安全性的一组攻击技术。sca通常包括基于从密码系统的物理实现获得的信息(包括定时信息、功耗、电磁泄漏和声音)的攻击。
2.通过观察当向和从存储器(或在其他部件之间)传送位时发射的电磁辐射,可标识跨芯片上的线路传送的位的值。类似地,对手可使用功率分析并将功率使用与敏感数据相关。例如,差分功率分析(其是用于分析功耗的统计方法)可用于标识依赖于数据的相关性。对于差分功率分析,获得两组数据的多个踪迹,并且计算这些踪迹的平均值的差值。如果差值接近0,则认为这两组不相关。如果这两组是相关的,则差值将是非0数,并且给出足够的踪迹,甚至可看到微小的相关性,而不管系统中有多少噪声。
技术实现要素:3.微架构特征被提供以用于差分功率分析(dpa)和电磁(em)分析攻击的缓解。描述了一种微架构特征,其可用稍后可用于调整dpa和em缓解机制的信息来注释分支预测器状态。该特征使用预测建模来调整或扩散电路的功率和/或电磁(em)特性。
4.具有用于差分功率分析和电磁分析的缓解的微架构特征的处理系统可至少包括存储器、处理器和缓解响应单元。所述处理器可包括指令预测器,所述指令预测器包括用于存储与相应指令块相关联的元数据的存储设备。所述缓解响应单元耦接到所述指令预测器以写入和读取与所述相应指令块相关联的所述元数据。所述缓解响应单元被配置为基于对应于指令块的执行的电磁或功率特性以及与所述指令块相关联的元数据来确定用于所述指令块的缓解技术。
5.一种用于来自差分功率分析和电磁分析的信息泄露的缓解方法可包括预测下一指令块;从与所述下一指令块相关联的元数据读取至少一个位;根据从所述元数据读取的所述至少一个位来应用缓解技术;接收在所述下一指令块的执行期间获得的特性测量;确定所述特性测量是否超过用于所述特性测量的阈值;以及根据所述确定所述特性测量是否超过用于所述特性测量的所述阈值的结果,将至少一个位写入到与所述下一指令块相关联的所述元数据。
6.提供本发明内容是为了以简化形式介绍一系列概念,这些概念将在下文的具体实施方式中进一步描述。本发明内容并非旨在识别所要求保护的主题的关键特征或基本特征,也并非旨在用于限制受权利要求书保护的主题的范围。
附图说明
7.图1示出了具有各个块的处理系统的简化视图。
8.图2示出了处理器的简化微架构。
9.图3示出了数据清收器的表示图。
10.图4示出了缓解响应单元的表示图。
11.图5a示出了具有功率/em特定元数据的一级分支预测器的表示。
12.图5b示出了缓解响应单元的操作。
13.图6a和图6b示出了具有调整的缓解响应单元的框图表示。
14.图7a示出了标准sar adc配置。
15.图7b示出了标准∑-δadc配置。
具体实施方式
16.微架构特征被提供以用于差分功率分析(dpa)和电磁(em)分析攻击的缓解。描述了一种微架构特征,其可用稍后可用于调整dpa和em攻击缓解机制的信息来注释分支预测器状态。
17.图1示出了具有各个块的处理系统的简化视图。参照图1,实施处理系统的芯片100可包括多个不同的电路块和子块,包括但不限于处理器110、存储器120、接口电路130、敏感操作电路块140(例如,密码块)、具有耦接到芯片100上的感兴趣元件155的收集结构的数据清收器150、以及缓解响应单元160。尽管未示出,但是芯片100还可包括模拟电路和其它块。芯片100上的各个块可耦接到电力轨170,该电力轨也经受数据清收器150的感测。
18.处理器110可包括子块诸如指令预测器112和指令取出单元114。
19.存储器120可存储由处理器110执行的指令和/或数据。
20.数据清收器150的结构耦接到或包括传感器(例如,比较器、电流检测器或监视器、电压检测器或监视器等)、计数器、和存储装置,以支持数据的收集,包括从数据/地址总线、命令流和其它资源。在一些情况下,数据收集器101可以包括传感器以检测电磁发射。尽管在芯片100的指定部分中示出了数据清收器150,但是数据清收器(以及其它块)可具有跨芯片100分布的部件。
21.清收器150和缓解响应单元160可与执行敏感操作和/或存储敏感数据的敏感操作电路块140一起在芯片100的安全区域180中。在一些情况下,整个芯片是安全区域的一部分(例如,包括处理器110、存储器120和接口130)。当然,更多或更少的部件可以是芯片100上一个或多个安全区域的一部分。
22.根据某些具体实施,具有用于差分功率分析和电磁分析攻击的缓解的微架构特征的处理系统可至少包括存储器120、处理器110和缓解响应单元160。
23.图2示出了处理器的简化微架构。参照图2,诸如图1的具有预测器112和取出单元114的处理器110之类的处理器的微架构可包括指令取出单元210(其可包括或耦接到地址解码器)、指令预测器220、诸如存储器单元230和i高速缓存240之类的各种高速缓存、以及执行单元250。
24.取出单元210可从存储器(例如,存储器单元230或i高速缓存240)读取指令,并且利用指令预测器220可预测要取出哪些地址。
25.指令预测器220至少包括用于存储与相应指令块相关联的元数据的存储设备。指令预测器220可以是任何支持与各个基本块(或指令)相关联的元数据的电路。例如,指令预测器220可用分支预测器222或先行缓冲器224或者分支预测器222和先行缓冲器224两者来实现。在一些具体实施中,附加位(例如,至少一组缓解元数据位)被添加到该结构,支持元数据的存储。这可通过扩展现有结构以保持该至少一组缓解元数据位来实现。
26.基本块描述两个分支之间的所有指令。术语分支包括用于修改要执行的指令的调度的所有指令。例如,分支指令、返回指令、或直接更新程序计数器的指令。后者可例如包括加载、mov、算术和逻辑指令。在一种具体实施中,预测和/或响应的粒度是基本块,并且响应可被应用于该单位的指令。
27.可用于实施指令预测器220的电路的示例包括但不限于单级分支预测器、两级分支预测器、以及混合和多部件混合分支预测器。另外,尽管先行缓冲器通常不被分类为预测器,但因为先行缓冲器提供块或单个指令的提前指示,所以先行缓冲器可用作指令预测器220的一部分。实际上,潜在地适合于本文描述的缓解响应单元所使用的期望元数据存储的其他结构可包括分支目标缓冲器和循环缓冲器。后者用于将少量指令以解码形式保持在处理器内。这加速具有多次迭代的循环的执行。因此,循环缓冲器可用元数据位来扩展,从而指示它所包含的指令序列是否保证调整以及在什么程度上保证调整。以类似的方式,元数据可被添加到指令高速缓存(例如,i高速缓存240)和/或踪迹高速缓存以引导缓解响应单元在先前执行的代码序列的稍后出现时使用的模型。
28.根据各种具体实施,存储器单元230可以是可存储指令和/或数据的一组寄存器。
29.i高速缓存240是指指令高速缓存,并且是便于执行单元250执行指令的高速缓存。
30.执行单元250执行/进行由取出单元210取出的指令所指示的操作和计算。
31.图3示出了数据清收器的表示图。如上文关于图1的数据清收器150所述,数据清收器300可从来自源(诸如计数器302和传感器304)的至少一个感兴趣元件清收/收集数据。在特定具体实施中,数据清收器300包括或耦接到传感器,诸如用于捕获电磁特性308a的一个或多个天线305和用于捕获功率特性308b的一个或多个功率、电流或电压监视器306。电磁特性是指由部件(例如,设备和芯片中的线路)在操作时辐射的可观察能量。功率特性是指功耗随时间的变化,其可指示设备(例如,晶体管)的操作(并且因此指示数据)。可从计数器(和其他传感器)收集其他数据308c。
32.例如,计数器302可以包括性能计数器,诸如针对高速缓存命中/未命中、存储缓冲区填充水平、分支未命中预测、高速缓存刷新信号、当前功率状态以及每秒中断。计数器302还可以包括系统计数器,诸如针对存储器、联网、功率管理和其他部件。计数器302还可以包括调试/软件可见性能计数器。数据清收器300还可包括其自己的专用计数器310。
33.传感器304可包括用于电源电压电平(直接读出或阈值电平指示器,诸如过/欠功率)、当前时钟偏移、片上温度、物理应力水平(例如,弯曲或压力)噪声电平的传感器。如上所述,传感器304包括用于捕获电磁特性的一个或多个天线305和/或用于捕获功率特性的一个或多个功率、电流或电压监视器306。在一些情况下,传感器304可以包括检测芯片的物理位置和/或速度的传感器(例如,gps、加速度计、磁力计、陀螺仪)。数据清收器300还可包括其自己的专用传感器312。
34.数据清收器300可包括可选接口314和存储器设备315(诸如寄存器(例如,触发器或锁存器)、只读存储器(rom)或随机存取存储器(ram)(诸如mram(磁电ram)),该存储器设备存储指示要从其收集信息的资源的存储器映射316。
35.接口314可以包括电路,该电路支持片外通信或到片上系统的其他部分的通信。接口314可以包括开关或更复杂的电路。
36.存储器映射316可以被认为是配置信号。在一些情况下,此存储器映射316用于打
开某些资源或获得对某些资源的访问。例如,存储器映射316可以用于指示选择哪些开关以打开资源。当然,一些资源可以由寄存器/存储器设备的值(来自存储器映射316)直接打开。在一些情况下,存储器映射316可以由rom代码(例如,由引导内核执行的代码)启动。
37.在一些情况下,数据清收器300还可以包括处理器318。处理器318可以专用于管理存储器映射配置。在包括处理器318的一些具体实施中,处理器318可以在芯片的安全部分中。
38.数据清收器300所收集和输出的数据可包括特性数据322(例如,em特性308a和/或功率特性308b)以及其他所清收的数据324。在本文提供的一些示例中,缓解响应单元160使用特性数据322;然而,具体实施不限于此。
39.图4示出了缓解响应单元的表示图。参照图4,缓解响应单元400可包括预测模型410(例如,存储在存储器中)和处理电路420。处理电路420可包括用于执行诸如本文所描述的过程的各种电路和存储装置,包括关于图5b所描述的过程550。
40.缓解响应单元400从与由指令预测器112标识的指令相关联的元数据接收(或以其他方式获得)位430,并且将一个或多个位432输出到预测器112。即,缓解响应单元400可耦接到指令预测器112以写入和读取与相应指令块相关联的元数据。
41.缓解响应单元400还可从数据清收器150接收特性数据434(例如,em/功率特性)。尽管未示出,但是更高层级系统诸如操作系统可向缓解响应单元提供输入以支持预测模型410和/或提供关于指令的预期特性的信息。
42.在一些情况下,处理电路420可包括诸如关于图6a和图6b所描述的逐次逼近寄存器(sar)模数转换器(adc)和/或σ-δadc。在一些情况下,处理电路420可包括由级的级联形成的流水线adc,其中每一级包含低分辨率adc、数模转换器(dac)和放大器,它们将模拟输入接连地转换为其数字表示,从而以流水线方式处理数据。流水线adc会能够接收在指令块的执行期间捕获的特性,并且将观测值写入到对应于所执行指令块的元数据。在一些情况下,处理电路420可包括例如由多个比较器和优先编码器形成的闪速adc。当然,处理电路420可结合其他拓扑结构。
43.缓解响应单元400的模型410使用由指令预测器112做出的指令预测(并且具体地是相应元数据位430)和特性数据434来调整由缓解响应单元400作为控制信号436提供给对策电路440的缓解响应。
44.在一些情况下,模型410可提供对各个指令的响应,例如在每个乘积累加(mac)指令之后伪随机地插入无操作(nop)。另选地,模型410可依赖于分支来描绘指令序列之间的边界,并且提供对分支(“基本块”)之间的指令的响应。
45.基于基本块而不是按每个指令的调整尝试可能对延迟较不敏感,从而使得能够使用更多种类的调整机制。例如,模型410可将地址x处的分支与在该分支的先前执行期间观察到的供电电压的显著下降相关联。作为一些示例,模型410可通过在块的每个指令之间插入人工延迟、切换电容器以暂时稳定电源、时钟拉伸、或在所述块之前或之后发出一组功率密集型“虚”指令以模拟其在另一时间的特性来响应于供电电压的这个下降。在一些情况下,在基本块或指令的第一遍上所消耗的功率可作为时间序列被测量,被存储,并且在所述基本块或指令的后续遍上作为负反馈的形式被回放、反转以试图消除功耗中的波动。
46.由缓解响应单元400使用的元数据(例如,位430)可采取若干形式。例如,元数据可
以是单个位,描述相应基本块先前是否引起了供电电压的显著下降或如由片上天线测量的相当大的em尖峰。然后可使用一个或多个附加位来指示哪种调整技术被证明是有效的。关于图5b描述了由缓解响应单元执行的示例过程。
47.其他潜在的元数据部件包括软件定义的注释、在基本块的先前执行期间获取的测量(例如,时间序列数据)、以及指示先前出现的次数的非饱和计数器/移位寄存器。
48.对于软件定义的注释,软件可将某些基本块标记为特别安全关键的,或者将其它基本块标记为无关紧要的。在一些情况下,软件(例如,来自更高层级系统)可提供关于先前在运行时未观察到的基本块的信息。这可通过不尝试保护无关紧要的块来帮助节省功率。在一些情况下,软件定义的注释可潜在地证明用于关键块的更积极/更低功率效率的缓解技术,而在它们的前几次出现期间没有进行试误法。在一些情况下,代替测量片上功耗和/或em发射来确定基本块是否会保证调整(参见例如下文关于图5b描述的过程550),有可能基于指令的理论预期功耗将指令分类到分开的频带中。组合来自处理器110的预测器112和取出单元114级的信息,模型(例如,模型410)可标识高功率指令的序列。然后,这些可以例如根据控制信号436而与低功率指令间隔开或交错。即使测量电路是可用的,也可在基本块的前几次出现期间使用指令特定信息来通知默认调整行为。这可减少在用来自运行时间测量的数据第一次更新分支预测器状态之前泄漏的信息,例如,在模型410可决定块是否保证调整之前。
49.指示先前出现的次数的非饱和计数器和移位寄存器(参见例如图5a的分支预测器500)可由缓解响应单元400根据模型410使用以改变出现之间的调整技术或以不同方式对待频繁执行的块。
50.当进行预测时和/或当在执行分支之后更新表时,缓解响应单元的模型410可使用与每个计数器保持的元数据。
51.在指令预测器112进行预测时所获得的元数据可用于预测哪个指令序列将要被执行以及电路的功率/em特性可如何被相应地调整或扩散。此预测还提供时间来准备由对策电路执行的响应,例如对电容器充电或修改推测状态。
52.在一些情况下,模型410可通过考虑预测器的准确性/置信水平并且基于它们在错误预测的情况下的影响对可用调整技术进行分类来考虑分支预测器中的预测误差。默认地或在低置信度预测的情况下,模型410可简单地触发已知为安全的(但潜在低效的)响应。另选地,模型410可检查所有可能即将到来的基本块(限于先前观察到的那些)并且触发对应于最坏情况场景的调整技术。如果在错误预测时被触发,则为那些预测触发的技术可从没有可观察的影响的那些的池中选择。
53.一些对策需要小心部署,并且如果存在错误预测则优选不发生。对于那些对策,替代地等待分支被执行可能是有益的。例如,当存在以相反模式镜像指令的特征时(例如,时间序列数据回放的一些具体实施),或者当存在注入功率以补偿对功率的大汲取的特征时。在一些情况下,这些类型的对策可仅在指令已知时使用。当然,一些具体实施仍可基于预测执行这些对策,并且甚至使用错误预测来通过在不需要时部署对策而将额外噪声注入到系统中。
54.在一些情况下,模型410在执行分支之后使用元数据。通过在执行分支之后更新表时获取元数据,知道什么指令将被执行;因此,任何响应将不再是推测性的或处于错误预测
的风险中。另外,该模型仍然受益于扩展现有分支预测电路,因为开销、诸如用于地址特定查找的功率和面积可以被共享。
55.如上所述,预测器诸如具有分支预测器222的预测器112/220或其他类似的依赖于指令的部件可被扩展以包括附加的状态相关联元数据。附加的状态相关联元数据可包括与先前观察到的功率/em发射有关的信息(例如,诸如由数据清收器300收集的)。该数据随后可由实施预测模型(例如,模型410)的缓解响应单元(例如,单元400)用来通知后续调整尝试和缓解技术。
56.图5a示出了具有功率/em特定元数据的一级分支预测器的表示。参照图5a,一级分支预测器500包括具有元数据信息512和计数器信息514的表510。分支地址515用于索引到表510。这里,与分支地址有关的较低k位516用于索引到表510的条目520中。当相应分支被/不被采用时,每一条目特定n位计数器分别被递增/递减。只有在计数器饱和的情况下,分支才被预测为被采用。每个条目(包括条目520)在元数据信息512中用功率/em特定元数据注释。例如,条目520包括元数据522的一定数量的位以及相应n位计数器524。元数据522包括用于存储功率/em特定元数据的附加位。在一种具体实施中,该附加位包括“需要缓解”位和一个或多个对策技术位。该一个或多个对策技术位可表示要触发的特定对策技术以及可选地表示该特定对策技术是否成功。例如,该一个或多个对策技术位可以是元数据中特别分配的位。
57.图5b示出缓解响应单元的操作。参照图5b,当基本块被执行时,缓解响应单元可以诸如过程550中所示的方式更新该块的元数据。缓解响应单元所执行的动作可取决于基本块已被执行的次数(551)。对于基本块x的第一次执行(552),可测量(554)例如从数据清收器接收的功率和/或em特性,并且确定(556)该测量是否超过阈值。该确定可以是em特性或功率特性与阈值的比较。如果测量超过阈值,则缓解响应单元可例如在由与块x相关联的地址所索引的元数据信息(例如,图5a的条目520的元数据522)内设置“需要缓解位”(558);并且过程可继续(560)。如果从步骤556确定测量不超过阈值,则过程可继续(560)。在一些情况下,如果测量不超过阈值,则没有位被写入到元数据。在一些情况下,仍将某些东西写入到元数据。在一些情况下,在第一次执行期间所消耗的功率可被记录为时间序列数据(例如,通过sar adc、σ-δadc、闪速adc或流水线adc)。例如,如关于图6a和图6b所描述的,该时间序列数据然后可在该块的后续执行中被用作所应用的对策(并且在一些情况下,每当该块被执行时被更新以收敛于合适的值和/或考虑功率特性随时间的变化)。
58.对于基本块x的第二次执行(562),缓解响应单元可确定(564)需要缓解(nm)位是否被设置。如果nm位被设置,则缓解响应单元可触发(566)对策,例如默认技术“a”。在基本块执行期间并且当技术a正被执行时,可测量(568)例如从数据清收器接收的功率和/或em特性,并且确定(570)该测量是否超过阈值。如果测量超过阈值,则缓解响应单元可指示(572)调节该技术,并且过程可继续(574)。调节该技术(例如,从技术a到另一技术)的指示(572)可以是设置元数据中对应于下一技术的位(例如,通过递增一组位的值或通过移位到下一位)。如果从步骤570确定测量不超过阈值,则缓解响应单元可设置指示该技术“成功”的成功位(576);并且过程继续(574)。如果在基本块x的第二次执行(562)期间,在步骤564中确定nm位未被设置,则过程可简单地继续(574),例如,不触发缓解技术。对于使用n位计数器来预测即将到来的分支是否将被采用的分支预测器,上述机制可使用所述计数器来区
分基本块的第一次、第二次和稍后执行。
59.对于基本块x的任何后续执行(例如,它不是第一次执行或第二次执行),缓解响应单元可确定(578)nm位是否被设置。与基本块x的第二次执行一样,如果确定nm位未被设置,则过程可简单地继续(580),例如,不触发缓解技术。如果nm位被设置,则缓解响应单元可确定(582)成功位是否被设置。如果成功位被设置,则缓解响应单元可触发(584)被指示为成功的调整技术。作为从先前执行被指示为成功的调整技术的补充或替代,该特定技术可随时间改变。例如,该特定技术可针对各种情形或特地地由于测量移位或阈值改变而改变。在一些情况下,该技术可作为编程调节的一部分而有意地改变,在后续执行期间对该编程调节使用一组对策中的一者(从而帮助将噪声混淆或注入到系统中并且避免可预测的重复)。
60.如果在步骤582期间确定成功位未被设置,则缓解响应单元可触发(586)下一技术(例如,如由调节技术的指示或某个其他指示所标识的)。在基本块执行期间并且当该下一技术正被执行时,可测量(588)例如从数据清收器接收的功率和/或em特性,并且确定(590)该测量是否超过阈值。如果测量超过阈值,则缓解响应单元可指示(592)调节该技术,并且过程可继续(580)。如果从步骤590确定测量不超过阈值,则缓解响应单元可设置指示该技术“成功”的成功位(594);并且过程继续(580)。
61.图5b中所示的过程可通过不触发(经由元数据)已知为(在其功率/em特性方面)不显著的基本块的模型来节省功率。另外,该过程提供关于对模型的先前调整尝试成功的反馈,从而允许选择已知有效的技术。在多种有效技术的情况下,模型可通过选择最有效的技术或故意在其之间交替以引入附加噪声来节省功率。此外,在基于机器学习的模型的情况下,元数据可用于触发和/或引导重新训练(例如,如果模型在操作期间表现不佳)。最后,成功度量可被收集并且潜在地被上行流传输(例如,到更高层级系统)以通知进一步缓解技术的发展。
62.图6a和图6b示出了具有调整的缓解响应单元的框图表示。参考图6a,缓解单元600可包括sar adc 602,其接收在指令块(例如,图5b的块x)的执行期间捕获的特性605并且将观测值606写入到与所执行的指令块相对应的元数据608。sar adc的示例在图7a中示出。对策电路610可使用观测值606来生成响应。例如,对策电路610可注入功率以利用表示功率汲取的观测值606来补偿对功率的汲取。
63.参考图6b,缓解单元620可包括∑-δadc 622,其接收在指令块的执行期间捕获的特性605并且将观测值624写入到与所执行的指令块相对应的元数据626。该值可随时间被改善并且被对策电路628用于生成响应,类似于图6a的对策电路628。
64.图7a示出了标准sar adc配置。参照图7a,sar adc 700包括根据时钟和定时控制电路704接收输入并输出采样电压值的采样和保持电路702。所采样的电压值被输入到比较器706。比较器706将来自采样和保持电路702的采样电压值与数模转换器(dac)708的输出进行比较,并将结果输出到逐次逼近寄存器(sar)710。比较器706用于确定当前位的状态。对于每个位并且在时钟和定时控制电路704的控制下,sar 710向dac708输出取决于正在审查的当前位和已被逼近的先前位的二进制代码。dac708向比较器706提供与从sar 710输出的二进制代码相等的模拟电压。一旦所有位已被逼近,则在转换结束(eoc)时输出数字逼近作为数字输出712。时钟和定时控制电路704可输出指示eoc的eoc信号714。当被并入缓解单元诸如缓解单元600中时,数字输出712表示观测值606。
65.图7b示出了标准∑-δadc配置。参照图7b,∑-δadc 720可包括∑-δ调制器722、数字滤波器724和抽取器726。∑-δ调制器722通常包括积分器、比较器和1位dac,以便将输入信号转换为高速、单个位、经调制的脉冲波。∑-δ调制器722对输入进行过采样,并且每个单独样本通过数字滤波器724和抽取器726随时间累加并与其它输入信号样本“平均”。当在缓解单元诸如缓解单元620中使用时,位流被累积并且然后被向下抽取到二进制值,该二进制值然后可被馈送到对策电路诸如对策电路630中。
66.虽然以特定于结构特征和/或动作的语言描述了本主题,但应当理解,所附权利要求中限定的主题不一定限于上述特定特征或动作。相反,上文所述的特定特征和动作被公开为实现权利要求书的示例,并且其他等同特征和动作旨在落入权利要求书的范围内。