将从以下给出的详细描述以及本公开的各个实施方式的附图中更加完整地理解本公开。
图1示出了根据一些实施例的冻结逻辑(freezelogic)的示例性设备。
图2示出了根据本公开一些实施例的设备的示例性冻结逻辑。
图3是根据本公开一些实施例的利用冻结逻辑的双轨生成输出信号的示例性方法的流程图。
图4示出了根据一些实施例的冻结逻辑的示例性实施方式。
图5a示出了根据一些实施例的基于异或(xor)门功能的冻结逻辑的示例性实施方式。
图5b示出了根据一些实施例的与基于xor门功能的冻结逻辑的示例性实施方式的操作对应的真值表。
图6a示出了根据一些实施例的基于与非(nand)门功能的冻结逻辑的另一示例性实施方式。
图6b示出了根据一些实施例的与基于nand门功能的冻结逻辑的示例性实施方式的操作对应的真值表。
图7示出了根据本公开一些实施例的基于nand门功能的冻结逻辑的另一示例性实施方式。
图8示出了本公开的一些实施例可操作的计算机系统的实施例的框图。
具体实施方式
本公开的多个方面的目的在于提供设备的冻结逻辑。设备的操作可以使得设备易受侧通道攻击。侧通道攻击包括但不限于差分功率分析(dpa)(其中,试图从设备获取信息的攻击者可研究设备的电路的功耗)或者电磁(em)分析(其中,攻击者可通过研究来自设备的电磁辐射来从设备获取信息)。例如,电路可以包括可用于生成密钥或其他秘密信息的加密硬件电路。攻击者可以是未授权实体,其可以通过在执行生成密钥或其他秘密信息的操作的时间段内分析加密硬件电路的功耗测量值来从加密硬件电路中获得密钥或其他秘密信息。
设备的电路的功率毛刺(glitch)会使得设备的电路易受到dpa攻击。毛刺可以表示设备电路的组合逻辑中的假性(spurious)转换。例如,组合逻辑的部件或逻辑门可以在输出信号维持在预期值之前输出不期望的转换。如果组合逻辑的部件或逻辑门用于接收两个输入信号并且基于这两个输入信号提供输出信号,当部件或逻辑门在接收到两个输入信号中的一个但是还没有接收到两个输入信号中的另一个之后提供输出时,输出信号可认为是毛刺。
冻结逻辑可在设备的电路中用于防止毛刺,使得电路不太容易受到dpa攻击。例如,可使用冻结逻辑,使得电路的组合逻辑的部件或逻辑门可以不提供输出,直到已经接收到部件或逻辑门的所有输入。因此,不会通过部件或逻辑门输出假性转换,因为输出不会被提供,直至接收到每个输入信号。
此外,冻结逻辑可对应于双轨冻结逻辑,其可以包括差分逻辑。例如,双轨冻结逻辑可以包括可称为“真网络”的第一冻结逻辑部分和可称为“假网络”的第二冻结逻辑部分。真网络的输入可以与假网络的输入互补。双轨或者包括具有互补输入的逻辑可进一步通过均衡电路的功耗来降低电路对dpa攻击的易感性。
冻结逻辑可使用对称或平衡逻辑单元来实施。例如,相同的单元类型可用于生成真和假输出信号。针对逻辑单元的对称和平衡输入可减少由不同信号到达时间所引起的侧通道泄露。因此,冻结逻辑降低了逻辑门的早期评价的效果。
在一些实施例中,双轨冻结逻辑可使用预充电和评价阶段(pre-chargeandevaluationphase)。例如,预充电阶段可以为冻结逻辑提供输入,使得冻结逻辑的输出或者双轨冻结逻辑的每个冻结逻辑的输出可以处于零或一的值(例如,所有输出均为零或一)。在预充电阶段之后,评价阶段可以开始于接收冻结逻辑的输入信号。
如此,本公开的多个方面通过减少设备电路对dpa攻击的易感性而为设备提供了更高的安全性。例如,具有预充电和评价阶段的双轨冻结逻辑的使用可以减少来自电路的部件或逻辑门的毛刺的输出。因此,通过电路生成或使用密钥或其他这种秘密信息可以更加安全,或者免于未授权实体使用dpa攻击来试图恢复密钥或秘密信息的影响。
图1示出了具有冻结逻辑110的示例性设备100。总体上,设备100可以包括执行与加密数据(例如,密钥)的生成相关联的操作的冻结逻辑110。
如图1所示,设备100可以包括冻结逻辑110,其接收输入信号105并提供一个或多个输出信号115。冻结逻辑110可以执行操作以生成加密数据。例如,冻结逻辑110可以包括双轨冻结逻辑,其中冻结逻辑不提供一个或多个输出信号115,直到通过冻结逻辑110接收到所有输入信号105为止。结合图2至图7描述关于冻结逻辑的进一步细节。
此外,输入信号105可以对应于用于冻结逻辑110的预充电阶段和评价阶段。例如,可以经由输入信号105通过冻结逻辑110接收预充电阶段,使得冻结逻辑110的部件或逻辑门提供逻辑零或逻辑一的输出。在预充电阶段之后,冻结逻辑110可经由输入信号105接收评价数据(例如,在加密数据的生成中使用的数据)。在已经通过冻结逻辑110的部件或逻辑门接收到评价数据的每一个输入信号之后,冻结逻辑110可以基于输入信号105提供一个或多个输出115。
图2示出了设备的示例性冻结逻辑环境200。总体上,冻结逻辑环境200可以包括冻结逻辑220,其对应于图1的设备100的冻结逻辑110。
如图2所示,冻结逻辑环境200可以包括输入寄存器210、冻结逻辑220和输出寄存器230。冻结逻辑220可以接收来自输入寄存器210的输入信号,并且可以向输出寄存器230提供输出信号。此外,冻结逻辑220可以通过一系列同步块来概念化或表示,或者逻辑门或表示与信号同步相关联的功能的其他这种电路的组来概念化或表示。例如,冻结逻辑220可以包括第一同步块221、第二同步块222和第三同步块223。每个同步块221、222和223可以接收两个或更多个输入信号,并且可以在每个输入信号都已经被同步块接收到时基于接收到的两个或更多个输入信号提供一个或多个输出信号。结合图3至图8描述关于同步块的操作和实施方式的进一步细节。
图3是利用冻结逻辑的双轨生成输出信号的示例性方法300的流程图。总体上,方法300可以通过处理逻辑来执行,处理逻辑可包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微码、设备的硬件、集成电路等)、软件(例如,在处理设备上运行或执行的指令)或者它们的组合。在一些实施例中,可以通过图1或图2的冻结逻辑110或220来执行方法300。
如图3所示,方法300可以开始于处理逻辑接收冻结逻辑的预充电输入信号(框310)。例如,可以接收输入信号,其中输入信号的组合产生冻结逻辑的预充电状态(例如,零或一的输出)。在一些实施例中,预充电输入信号可以对应于在预充电阶段期间接收的输入信号,其对于冻结逻辑中的每个同步块产生零或一的输出。在同一或备选实施例中,预充电阶段可对应于输入信号被设置为逻辑零或一,和/或使得第一冻结逻辑部分和第二冻结逻辑部分(其输入与第一冻结逻辑部分互补)的输出信号为逻辑零或逻辑一的输入信号的组合。例如,响应于接收到预充电阶段的输入信号,每个冻结逻辑部分的输出都可以是逻辑零或逻辑一。处理逻辑可随后接收评价输入信号来作为冻结逻辑的对称输入(框320)。如下面进一步详细描述的,对称输入可以对应于每一个同步块处的每个信号的相同负载。评价输入信号可对应于与加密操作相关联的信号(例如,使用密钥的用于加密的输入数据)。在一些实施例中,可以在第一时钟循环处接收预充电输入信号,并且可以在随后的第二时钟循环处接收评价输入信号。在另一实施例中,可以在时钟信号的上升沿处接收预充电输入信号,并且在时钟信号的下降沿处接收评价输入信号。因此,时钟信号的负边缘可用于执行评价阶段。在同一或备选实施例中,可以使用自定时预充电,其中预充电阶段可开始于时钟信号的上升沿,并且可以在由缓冲器引起的延迟之后接收用于评价阶段的评价输入信号。
参照图3,处理逻辑可进一步确定是否所有评价输入信号已经被冻结逻辑接收(框330)。例如,可以进行关于是否已经接收到同步块的每一个评价输入信号的确定。如果还没有接收到所有的评价输入信号,则处理逻辑可以等待其他评价输入信号(框340)。例如,如果还没有接收到每一个评价输入信号,则同步块可以不基于当前的评价输入信号提供输出信号。如果处理逻辑确定接收到同步块的每一个评价输入信号,则处理逻辑可以经由冻结逻辑的双轨生成输出信号和互补输出信号(框350)。例如,冻结逻辑的第一冻结逻辑部分可以提供第一输出(例如,逻辑值“1”),并且同一冻结逻辑的第二冻结逻辑部分可以提供互补第二输出(例如,逻辑值“0”)。因此,响应于接收到每个评价输入信号,冻结逻辑的同步块可以提供处于互补值的第一和第二输出信号。随后,处理逻辑可以接收冻结逻辑的预充电输入信号(框360)。例如,可以在接收到评价输入信号之后执行另一预充电阶段。
图4示出了冻结逻辑400的示例性实施方式。一般地,可以通过同步块来表示冻结逻辑400的实施方式。冻结逻辑400可以对应于图1或图2的冻结逻辑110或220。
如图4所示,冻结逻辑400可以包括第一同步块420和作为第一同步块420的互补的第二同步块430。例如,第一同步块420可以是冻结逻辑400的第一部分,并且第二同步块430可以是冻结逻辑400的第二部分,其与第一同步块420是互补的。用于同步块420和430中的每一个的输入信号可以是对称的。例如,可以通过每个同步块420和430接收信号a和互补信号
如此,冻结逻辑400逻辑地对应于具有两位输入选择信号的两个多路复用器,其中两位输入选择信号基于输入信号b及其互补输入信号
图5a示出了基于异或(xor)门功能的冻结逻辑500的示例性实施方式。总体上,冻结逻辑500可以对应于图1、图2或图4的冻结逻辑110、220或400。
如图5a所示,冻结逻辑500可以包括第一部分510以及作为第一部分510的互补逻辑的第二部分520。第一部分510可以接收输入信号a及其互补输入信号
第一部分510可以包括第一逻辑层级,其包括两个and门,其中第一and门接收输入信号a和互补输入信号
如图所示,冻结逻辑可以被对称地设计,使得第一部分510和第二部分520均包括相同部件或数量和类型的逻辑门。例如,在冻结逻辑500中,第一部分510和第二部分520中的每一个可以包括两个and门和一个or门。因此,第一部分510和第二部分520可以具有逻辑门的对称配置。此外,冻结逻辑500可以提供与零或者如前所述的预充电阶段期间的值相对应的预充电输出信号。
此外,冻结逻辑的输入可以是对称的。例如,第一部分510和第二部分520在第一和第二部分510和520的不同输入处接收相同的输入信号。例如,第一部分510可以接收输入信号a及其互补输入信号
图6a示出了根据一些实施例的基于与非(nand)门功能的冻结逻辑的另一示例性实施方式。总体上,冻结逻辑600可以对应于图1、图2或图4的冻结逻辑110、220或400。
如图6a所示,冻结逻辑600可以包括第一部分610以及作为第一部分610的互补的第二部分620。第一部分610可以接收输入信号a及其互补输入信号
第一部分610可以包括第一逻辑层级,其包括三个and门,其中第一and门接收输入信号a和互补输入信号
此外,冻结逻辑600可以被对称设计,使得第一部分610和第二部分620均包括相同部件或数量的逻辑门。例如,在冻结逻辑600中,第一部分610和第二部分620中的每一个都包括三个and门和一个or门。此外,冻结逻辑的输入可以认为是对称的,因为输入信号a及其互补输入信号
在操作中,冻结逻辑600可以基于图6b所示的真值表生成输出信号c和互补输出信号
图7示出了基于nand门功能的冻结逻辑700的另一示例性实施方式。总体上,冻结逻辑700可以对应于图1、图2或图4的冻结逻辑110、220或400。
如图7所示,冻结逻辑700可以包括两个and门和nor门的组710、720、730和740,其中每个组的输出去往nand门。例如,组710和720的输出是nand门725的输入,并且组730和740的输出是用于nand门745的输入。冻结逻辑700可进一步对称地设计,并且用于每个输入信号的负载可以是相同的。例如,输入信号a和
在一些实施例中,冻结逻辑可以使用现场可编程门阵列(fpga)的查找表(lut)来实施。例如,冻结逻辑可以基于fpga的片(例如,资源的逻辑分组)。冻结逻辑可以通过fpga的片的第一lut和第二lut来实施。在一些实施例中,第一lut可以执行第一操作以生成输出信号c,并且第二lut820执行第二操作以生成互补输出信号
图8示出了计算机系统800的示例性机器,其中可以执行用于使机器执行本文讨论的任何一种或多种方法的指令的集合。在备选实施方式中,机器可以连接(例如,联网)至lan、内联网、外联网和/或因特网中的其他机器。机器可以在客户机-服务器网络环境中的服务器或客户机的能力中进行操作,作为对等(或分布式)网络环境中的对等机器或者作为云计算架构或环境中的服务器或客户机。
机器可以是个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝电话、环球网设备、服务器、网络路由器、开关或桥、或者能够执行指定被该机器采取的动作的指令集(序列或其他)的任何机器。此外,虽然示出了单个机器,但术语“机器”还应该包括机器的任何集合,它们单独地或联合地执行指令的集合(或多个集合)以执行本文讨论的任何一种或多种方法。
示例性计算机系统800包括处理设备802、主存储器804(例如,只读存储器(rom)、闪存、动态随机存取存储器(dram)(诸如同步dram(sdram)或拉姆巴斯dram(rdram)等))、静态存储器806(例如,闪存、静态随机存取存储器(sram)等)和数据存储设备818,它们经由总线830相互通信。
处理设备802表示一个或多个通用处理设备,诸如微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或者实施其他指令集的处理器或实施指令集的组合的处理器。处理设备802还可以是一个或多个特殊目的处理设备,诸如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器等。处理设备802被配置为执行用于执行本文讨论的操作和步骤的指令826。
计算机系统800可进一步包括网络接口设备808,以在网络820上进行通信。计算机系统800还可以包括视频显示单元810(例如,液晶显示器(lcd)或阴极射线管(crt))、字母数字输入设备812(例如,键盘)、光标控制设备814(例如,鼠标)、图形处理单元822、信号生成设备816(例如,扬声器)、视频处理单元828以及音频处理单元832。
数据存储设备818可包括机器可读存储介质824(还已知为计算机可读介质),其上存储有指令的一个或多个集合或者实施本文所述的任何一种或多种方法或功能的软件826。指令826还可以在其被计算机系统800执行期间完全或至少部分地驻留在主存储器804内和/或处理设备802内,主存储器804和处理设备802还组成机器可读存储介质。
在一个实施方式中,指令826包括实施与冻结逻辑(例如,图1、图2或图4的冻结逻辑110、220或400)对应的功能的指令。虽然机器可读存储介质824在示例性实施方式中被示为单个介质,但术语“机器可读存储介质”应该认为包括存储一个或多个指令集的单个介质或多个介质(例如,中央或分布式数据库,和/或相关联的高速缓存和服务器)。术语“机器可读存储介质”还应该认为包括能够存储或编码被机器执行并且使机器执行本公开的任何一种或多种方法的指令集的任何介质。术语“机器可读存储介质”应该相应地认为包括但不限于固态存储器、光学介质和磁性介质。
已经根据计算机存储器内的数据位的操作的算法和符号表示呈现了之前的详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用于最有效地向其他技术人员传达他们的工作内容的方式。算法在这里被总体上设想为产生期望结果的操作的前后一致的序列。操作是要求物理量的物理操纵的操作。通常,尽管不是必须的但这些量采用能够被存储、组合、比较和以其他方式被处理的电或磁信号的形式。主要出于通用的原因,已经证明有时方便将这些信号表示为位、值、元素、符号、字符、术语、数字等。
然而,应理解,所有这些以及类似术语与适当的物理量相关联,并且仅仅是应用于这些量的方便符号。除非另有指定,从上面的讨论中理解,在整个说明书中,利用诸如“识别”或“确定”或“执行”或“进行”或“收集”或“创建”或“发送”等的术语的讨论表示计算机系统或类似电计算设备的动作和处理,其处理表示为计算机系统的寄存器和存储器内的物理(电)量的数据并将其转换为类似表示为计算机系统存储器或寄存器或其他这种信息存储设备内的物理量的其他数据。
本公开还涉及用于执行本文操作的装置。该装置可以特别地构造用于预期的目的,或者其可以包括被存储在计算机中的计算机程序选择性激活或重新配置的通用计算机。这种计算机程序可以存储在计算机可读存储介质中,诸如但不限于任何类型的盘(包括软盘、光盘、cd-rom和磁光盘)、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁或光学卡、或者任何类型的适合用于存储电指令的介质,它们均耦合至计算机系统总线。
本文呈现的算法和显示不固有地与任何特定的计算机或其他装置相关。各种通用系统可根据本文的教导使用程序,或者其可以构造更专用的装置来执行该方法。用于各种这些系统的结构将表现为以下描述中所阐述的。此外,不参照任何特定的编程语言来描述本公开。将理解,各种编程语言可用于实施本文描述的本公开的教导。
本公开可以设置为计算机程序产品或软件,其可以包括其上存储有指令的机器可读介质,其可用于根据本公开对计算机系统(或者其他电设备)进行编程以执行处理。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质,诸如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储介质、光学存储介质、闪存设备等。
在前面的公开中,参照具体的示例性实施方式描述了本公开的实施方式。将明白,在不背离以下权利要求中阐述的本公开的实施方式的精神和范围的情况下可以进行各种修改。因此,本公开和附图认为是说明性的而非限制性的。