防旁信道分析的架构的制作方法

文档序号:11208968阅读:535来源:国知局
防旁信道分析的架构的制造方法与工艺



背景技术:

旁信道分析(sca)是一种可用来观察密码过程(例如公钥/私钥加密或解密过程)的若干部分的技术。通过观察在硬件中实施的密码过程的运算特性(例如运算时序、电力消耗或电磁签名)来进行sca,以确定所述密码过程的参数。可监视进行密码过程的处理器,来检测例如与密码过程中所涉及的运算有关的电磁脉冲。sca攻击密码过程分析,例如来自进行密码过程的处理器的电磁脉冲,以推导加密密钥的内容。具有sca攻击的加密密钥的确定可使得加密不安全。

通常使用公钥/私钥对加密或解密、rsa运算和ecc运算,对经由网络的通信实施两个不同的密码过程。rsa过程(rsa表示基础算法的创建者罗纳德·里韦斯特(ronrivest)、阿迪·沙米尔(adishamir)和伦纳德·阿德尔曼(leonardadleman)的缩写)使用表示计算中所使用的指数的加密密钥来对符号块进行加密或解密。为了执行效率,进行运算来实施rsa过程的处理器通常经配置以对将运算数求平方的运算与使运算数相乘的运算之间的运算进行分组。求平方运算和相乘运算由执行rsa过程的处理器以不同方式处理。通常,求平方可在处理器内比相乘更高效地进行,且可使用sca来观察运算中的差异。对rsa过程的sca攻击通常力图确定何时进行求平方或相乘运算中的任一者,且接着使那些运算与密码过程相关。在rsa过程中进行的求平方或相乘运算的选择对形成加密密钥的位敏感。可监视进行rsa过程的处理器来寻找若干参数,例如信号时序、电力消耗或电磁签名,来检测求平方或相乘运算,并推导导致所述运算进行的加密密钥的位。举例来说,参看图1,可通过监视处理器来检测从进行rsa密码过程的处理器观察到电磁辐射的迹线100。如果检测到,那么可将以s或m标注的迹线的若干部分解释为指示处理器分别执行了求平方(s)运算或相乘(m)运算。

类似于rsa过程,ecc(椭圆曲线密码术)过程使用公钥密码术。然而,实施ecc过程的处理器通常执行若干加倍和相加运算来进行加密或解密。加倍运算在所述处理器上通常比相加运算更高效地执行,且使用sca可观察所述差异。eec过程执行中的加倍或相加运算的选择常常对加密密钥的位敏感。ecc过程上的sca攻击通常力图确定何时进行加倍或相加运算中的任一者,且接着使那些运算与ecc过程以及形成加密密钥的位有关。可监视进行ecc过程的处理器来寻找若干参数,例如信号时序、电力消耗或电磁签名,来检测加倍或相加运算,并推导与正进行的运算有关的加密密钥的位。



技术实现要素:

实例实施方案提供一种用于实施密码过程的设备,其包括:第一运算模块,其经配置以执行第一运算或第二运算中的一者,所述第一运算不同于所述第二运算;第二运算模块,其经配置以执行所述第一运算或所述第二运算中的另一者;以及控制模块,其以通信方式耦合到所述第一操作模块和所述第二运算模块,且经配置以将第一信息提供到第一操作模块或第二运算模块中的一者,使得在密码过程期间,所述第一操作或所述第二运算中的至少一者至少执行一次,以产生不相关数据。

另一实例实施方案提供一种用于实施密码过程的方法,所述方法包括:确定第一运算或第二运算中的选定一者来接收第一信息,以执行所述第一运算或所述第二运算中的相应一者,使得在密码过程期间,所述第一运算或所述第二运算中的至少一者至少执行一次以产生不相关数据;使用所述第一信息来执行第一运算或第二运算中的选定一者;以及与第一运算或第二运算中的选定一者同时执行第一运算或第二运算中的另一者。

另一实例实施方案提供一种包括指令的非暂时性机器可读媒体,所述指令用于实施密码过程,且其经配置以致使机器:确定第一运算或第二运算中的选定一者来接收第一信息,以执行所述第一运算或所述第二运算中的相应一个,使得在所述密码过程期间,第一运算或第二运算中的至少一者至少执行一次,以产生不相关数据;使用所述第一信息来执行第一运算或第二运算中的选定一者;且与第一运算或第二运算中的选定一者同时执行第一运算或第二运算中的另一者。

另一实例实施方案提供一种用于实施密码过程的设备,所述方法包括:用于确定第一运算或第二运算中的选定一者来接收第一信息,以执行所述第一运算或所述第二运算中的相应一者,使得在密码过程期间,所述第一运算或所述第二运算中的至少一者至少执行一次以产生不相关数据的装置;用于使用所述第一信息来执行第一运算或第二运算中的选定一者的装置;以及用于与第一运算或第二运算中的选定一者同时执行第一运算或第二运算中的另一者的装置。

附图说明

图1是旁信道分析期间的处理器活动的迹线;

图2是计算机系统的框图;

图3是说明用于防旁信道分析的实例过程的流的过程流程图;

图4是用于防旁信道分析的实例过程的流程图;

图5是用于防旁信道分析的另一实例过程的流程图;

图6是用于防旁信道分析的另一实例过程的流程图;

图7是用于防旁信道分析的另一实例过程的流程图;

图8是图2中所示的计算机系统的功能框图;以及

图9是用于防旁信道分析的另一实例过程的流程图。

具体实施方式

呈现用于实施密码过程的分布式技术。此类技术中的一或多者的一些实施方案包含对有效数据和不相关数据两者并行执行运算,以帮助防止基于加密密钥内容来辨别所述运算。有效数据是指输入到密码过程中,且根据用于实施密码过程来操纵(例如经加密/解密)以产生所要的、预期或有效结果的算法的数据。不相关数据是指输入到产生不相关的中间结果或并不促进产生最终所要、预期或有效结果的运算中并由所述运算产生的数据。有效数据可用以形成所述不相关数据,例如通过使用产生并不促成获得最终有效结果的结果的运算中的有效数据。还可使用任意数据或任意数据源来形成不相关数据,或可与非任意或计划的数据一起形成。可提供控制实体,其准许至少两个中央处理单元(cpu)中的每一者在密码过程期间的不同时间存取有效数据或不相关数据,取决于加密密钥内容。一个cpu可存取有效或不相关数据,而另一cpu可在密码过程的给定重复循环中存取有效或不相关数据。举例来说,cpu在至少一些重复中并行操作,一个cpu具有有效数据,且一个cpu具有不相关数据。

由cpu中的每一者执行的运算可相同或不同,且可或可不在密码过程的执行期间变化。cpu所执行的运算可包含求平方和相乘,或加倍和相加,且可基于正执行的密码过程的类型来选择。举例来说,一个cpu可在密码过程的一部分或全部期间执行求平方运算,而另一cpu可执行同时相乘运算。同时意味着所述运算在密码过程的相同循环或重复中执行,不管所述运算是否具有时间重叠。执行求平方运算和相乘运算的时间可至少部分地重叠,例如至少部分地并行执行。

所述cpu中的每一者可在密码过程的执行期间执行多于一个类型的运算。举例来说,可控制第一cpu来在密码过程的一些重复期间执行求平方运算,且控制第一cpu来在其它重复期间执行相乘运算。对哪一cpu在密码过程期间的给定时间执行哪一运算的控制的实施方案是内部过程。所述控制经配置以选择哪一cpu执行哪一运算,且确保根据适当的运算(例如提供到执行适当运算的适当cpu)来处理有效数据,以实施用于所述密码过程的算法。所述控制优选关于sca现象比相乘或求平方运算小若干数量级。因此,sca可示出进行相同或不同类型的运算的不同cpu,但不一定示出哪一cpu正对有效数据进行操作。通过此技术,sca可准许在不同cpu之间区分运算,然而,加密密钥的确定对区分cpu运算不敏感。

将运算指派给一或多个cpu可基于多种基础中的一或多者来进行。举例来说,可使用变为可用于实施密码过程的前两个cpu,其中一个cpu被指派来执行一个运算,例如相乘,且另一cpu被指派来执行相同或不同运算,例如相乘或求平方。可基于正经配置以高效地执行所述运算来为cpu指派运算。举例来说,cpu可实施为浮点处理器,且可被指派在此类处理器上更高效地执行的运算。可根据cpu所位于的系统,来在软件中编程运算对cpu的指派。举例来说,对其中将实施分布式密码过程的计算机系统的了解可用以配置软件来将运算指派给计算机系统中的某些cpu。或者或另外,用以实施分布式密码过程的软件可查询计算机系统,以确定计算机系统的配置,且基于查询结果来为运算的指派选择cpu。可提供控制来改变在密码过程的执行期间的不同部分或重复中正由给定cpu执行的运算。所述控制可在多种基础上操作,包含针对cpu运算使用随机产生的和/或预设的改变。所述控制跟踪在其上正处理有效数据的cpu,以确保获得有效的最终结果。

可将运算指派给多于一个cpu,以利用并行执行或多任务能力。将运算指派给一或多个cpu准许实现某些设计目标时的显著灵活性,例如运算的同步、不同能力的cpu质检的负载平衡,以及可辅助实施高效且遮蔽分布式密码过程的其它准则。

可在密码过程的一些重复中或每一重复中,将有效数据提供到一或多个cpu。归因于将对有效数据执行的运算,哪一cpu接收有效数据由加密密钥的值确定。如果加密密钥的值需要求平方运算,那么所述有效数据被引导到对指派给求平方运算的cpu。如果加密密钥的值需要相乘运算,那么所述有效数据被引导到指派给相乘运算的cpu。并不对有效数据进行运算的cpu可对不相关数据进行运算。或者或另外,两个cpu可同时对有效数据进行运算,或可同时对不相关数据进行运算。对有效数据或对不相关数据进行的运算的结果可适当地存储或丢弃。举例来说,对有效数据进行的运算的结果可用于覆写用作另一运算中的运算数的不相关数据。有效数据结果可存储在为有效数据保留的指定位置,或先前保持不相关数据的位置。密码过程的给定重复中的运算可针对相应运算数仅使用有效数据,仅不相关数据或有效与不相关数据的组合。举例来说,密码过程可包含一或多个不相关的重复,其中此类重复中的运算的结果不用以促成获得最终的有效结果。在此实例中,用于不相关的重复的运算数可为有效或不相关数据。所述密码过程可包含比预期多的重复,且因此促成将加密密钥从被执行的运算解离。在一些重复中,一或多个cpu可不执行运算,或可执行不用于密码过程中的运算,例如在密码过程需要求平方和相乘运算时执行相加。

所述控制实体可引导将在何处获得或提供有效数据以及在何处获得或提供不相关数据,例如哪一cpu接收哪些数据,且结果存储在何处。在每一cpu进行分布式密码过程的一些重复中或每一重复中的单个不可中断的运算的情况下,根据加密密钥的内容,相对于正执行的运算的观察结果,遮蔽旁信道现象。不可中断的运算是指可独立于其它运算执行的低等级运算,例如相乘运算或求平方运算。

用于进行分布式密码过程的实例设备包含多个cpu,使得运算可在cpu之间划分。可将处理器定义为包含一或多个cpu。举例来说,处理器可在具有一或多个cpu的一或多个集成电路芯片上的硬件中实施。或者或另外,处理器可虚拟地实施以包含一或多个cpu,例如通过配置将被视为且作为单个处理单元操作的一或多个cpu。还可使用多个处理器,其中的每一者可包含一或多个cpu,来实施分布式技术。可为一或多个cpu或处理器指派某些运算来在密码过程期间执行。举例来说,可为一或多个cpu或处理器指派求平方运算,而可为一或多个其它cpu或处理器指派相乘运算。当密码过程需要求平方运算时,指派给求平方运算的一或多个cpu或处理器执行求平方运算。类似地,需要密码过程的相乘运算由指派给相乘运算的一或多个cpu或处理器执行。然而,指派给不被要求来执行所指派的运算从而根据密码过程来促进有效最终结果的产生的给定运算的一或多个cpu或处理器仍可对有效数据或对不相关数据执行所指派的运算。密码过程中所涉及的cpu或处理器可在密码过程的每一循环中进行运算,不管cpu还是处理器正对有效密码数据进行运算。可控制cpu或处理器来避免在密码过程的一或多个循环中进行运算。

实例设备可包含一或多个处理器,其中每一处理器可包含一或多个cpu,其经配置以对有效密码数据或不相关数据进行运算。选择给定处理器来根据加密密钥的值,在密码过程期间对有效密码数据进行运算。举例来说,当在密码过程期间处理的加密密钥的位值指示应发生相乘时,有效密码数据被引导到提供相乘运算的处理器(或处理器被引导到有效密码数据)。同时,负责求平方运算的另一处理器具备(或被引导到)用作求平方运算的运算数的有效数据或不相关数据。有效相乘运算和不相关求平方运算可同时发生。

根据实例实施方案,在密码过程的给定循环或重复中,根据加密密钥的值,将有效数据提供到被指派了所要运算的适当处理器,或由所述处理器存取。还/或者将有效数据或不相关数据提供到被指派了相同或不同运算的另一处理器或由所述处理器存取。可使用指向分别包含有效密码数据或包含不相关数据的存储器位置的指针,将有效数据或不相关数据提供到既定处理器。举例来说,指向有效数据的指针可维持并提供到适当的处理器,以准许存取有效数据。适当的处理器读取所述指针,并存取所述指针所指向的存储器位置,以获得有效数据。指向不相关数据的指针可维持并提供到既定处理器,以存取所述不相关数据。通过在密码过程期间将所述指针提供到适当的处理器,有效数据和/或不相关数据可在所涉及的处理器之间有效地切换。或者或另外,如果指派给给定处理器的运算改变,指向有效数据和/或不相关数据的指针也可改变,以准许有效或不相关数据在运算之间切换,即使不在处理器之间切换也是如此。

有效数据和/或不相关数据在处理器之间的切换可根据若干配置来实现。举例来说,可使用指向存储器位置的指针,如上文所论述。或者或另外,有效数据和/或不相关数据可由处理器存储或存储在所述处理器中,以准许所述处理器直接存取数据或将所述数据供给到另一处理器。举例来说,所述处理器可彼此交换有效数据和不相关数据。所述数据也可或者存储在可由若干处理器存取和/或可准许若干处理器同时存取所述数据的多端口存储器中。可为多端口存储器维持针对有效数据和不相关数据的指针或地址,以向处理器提供对所要数据的存取权。使用指针来识别存储器位置和/或用以对有效数据执行运算的处理器可准许使用展现相对较小可观察的占用面积的相对简单的机制来使有效数据在处理器之间切换。观察时序、电力或电磁参数来检测有效数据在处理器之间的切换比观察此类参数来检测处理器执行求平方还是相乘运算显著更难。

根据一些实例,负责相应运算的不同组的处理器耦合到多端口存储器。负责密码过程中的相应运算的每一处理器或每一组处理器可存取所述存储器以获得运算数,并将结果写入到相同存储器。由于多个处理器可同时存取同一多端口存储器,因此来自根据密码过程进行的运算的中间结果可由不同处理器同时存取和运算。多端口存储器因此可用作辅助密码过程跨多个处理器的分布以及在处理器之间切换数据的工具。

根据一些实例,有效或不相关数据可用作分布式密码过程期间的运算数和/或中间结果。举例来说,一或多个处理器可具备有效或不相关数据作为输入,并对数据进行运算以产生结果,其接着用作密码过程的后续循环或重复中的运算数。可使用有效或不相关数据来初始化运算数,对其进行运算以产生有效或不相关结果,接着将其用作下一循环或重复中的运算数。因此可运载有效或不相关数据一起通过密码过程,且经协调使得在观察有效或不相关数据时不清楚哪个是哪个。举例来说,可在特定存储器位置提供有效或不相关数据,且涉及有效或不相关数据的存储器交互可大约在同一时间出现。观察存储器交互以区分有效和不相关数据的尝试因此可受妨碍,因为可能不清楚同时存储器交互中的哪一者是针对有效或不相关数据。在用于不是既定对有效结果进行运算或产生有效结果的运算之后,可丢弃所述有效或不相关数据。或者,使用有效或不相关数据的运算的结果可存储在多端口存储器中,以准许进行后续运算的处理器对所述结果的存取。另外或替代地,可在每一循环或重复中新提供有效或不相关数据,作为用于运算的运算数。在一些情况下,在密码过程开头或期间提供有效或不相关数据可导致混淆产生有效数据的运算的区别性特征。

可提供控制实体,例如调度程序,来控制有效数据在不同处理器之间的切换,和/或引导哪一(哪些)处理器执行哪一运算。中间数据的处理指派给所述控制实体在密码过程中的每个阶段处的一或多个处理器。控制实体可跟踪哪一(哪些)处理器正对有效数据执行运算,和/或哪一(哪些)处理器正对任意数据执行运算。所述控制实体可控制将由一或多个处理器执行的运算的选择。所述控制实体可跟踪哪一运算正由哪一(哪些)处理器执行,并使用所跟踪的数据来确定有效数据最终结果的位置。有效数据运算导致获得所要的加密/解密输出,同时可丢弃使用所述任意数据获得的结果。可对密码过程中的一或多个cpu获取部分实施所述控制实体,或可对不参与密码过程的一或多个单独cpu实施所述控制实体。所述控制实体可实施为指针控制器,使得指向有效数据的指针传递到适当的处理器。可使用类似配置来控制指向任意数据的指针供在给定不可中断的运算中不对有效数据进行运算的处理器使用。针对有效数据或任意数据的指针可指定多端口存储器中可由所述处理器存取的位置。特定多端口存储器位置可在整个密码过程中保持中间有效数据。

本文所提供的技术和实施方案大体上涉及对抗用以发现加密组件的旁信道分析技术,且更具体地说,涉及分割和混淆加密运算来对抗旁信道分析技术的多处理器方法。本文所论述的技术可用以混淆或抵抗旁信道分析,旁信道分析可能原本用来在密码过程执行期间观察密码数据。举例来说,密码过程分布在两个或更多个cpu之间,其中每一cpu分别并行执行不可中断的运算,任一者对有效密码数据,或对不相关数据。不可中断的运算可为单个类型的运算的实例,例如单个相乘或单个求平方运算。观察到的与时序、电力或电磁输出有关的旁信道参数可看起来在有效密码数据与不相关数据之间不可区分。

参看图2,计算机系统200包含多核心处理器210、无线接口225、控制实体240、网络接口265和非暂时性存储器260。计算机系统200经配置以对输入和输出密码信号进行操作。举例来说,计算机系统200可经由无线或有线网络连接接收经加密的数据,并对所述经加密的数据进行解密来恢复原始数据。类似地,计算机系统200可对原始数据进行运算,以产生经加密的数据,来经由无线或有线网络连接进行传输。处理器210、无线接口225、存储器260和网络接口265通过总线215彼此连接。控制实体240连接到多核心处理器210,以准许双向信令。多核心处理器210包含若干中央处理单元(cpu)210-a、210-b、210-c和210-d,其可共享资源,且独立和/或并行操作。存储器260是供多核心处理器210中的cpu210-a到210-d使用的共享存储器。可将存储器260实施为多端口存储器,其具有可由不同cpu210-a到210-d共同存取的存储器位置。总线215经配置以支持多个cpu210-a到210-d以及多个存储器260,以及多端口存储器。举例来说,总线215可经配置以具有额外的线来连接到存储器260中的栅极,以为cpu210-a到210-d中的不同者激活端口。

无线接口225包含无线接收器、发射器、收发器和/或其它元件,其使计算机系统200能够使用与一或多个无线广域网(wwan)系统、无线局域网(wlan)和/或可用以发送和/或接收数据的其它类型的无线通信协议相关联的无线通信协议来发送和/或接收数据。无线接口225通过线232连接到天线234以用于将通信发送到经配置以使用无线通信协议通信的装置,或从所述装置接收通信。

网络接口265经配置以将计算机系统200连接到一或多个有线网络连接。网络接口265经配置以准许计算机系统200经由一或多个有线数据连接发射和接收数据。

多核心处理器210可为智能装置,例如由高通、公司或制作或设计的个人计算机处理器、微控制器、专用集成电路(asic),或任何其它类型的多处理装置。多核心处理器210可实施为物理上独立的cpu210-a到210-d,或在同一物理封装中具有两个或更多个cpu210-a到210-d。另外,cpu210-a到210-d无需位于同一地理位置,而是可分布在广域网或局域网(wan或lan)上。

存储器260是可包含随机存取存储器(ram)、只读存储器(rom)或其组合的非暂时性存储装置。存储器260经配置以存储含有用于控制多核心处理器210以执行本文中所描述功能的指令的处理器可读、处理器可执行软件代码(尽管所述描述可解读所述软件执行所述功能)。所述软件可通过经由网络连接下载,从磁盘上载,从图像提取或使用任何其它类型的数据传送技术加载而加载到存储器260。另外,软件可并非可直接执行的(例如,要求在执行之前进行编译)。

存储器260中的软件经配置以使多核心处理器210能够执行各种动作,包含抵抗sca攻击,如本文所述。所述软件还可在cpu210-a到210-d中的一或多者上执行,个别地或在分布式基础上。cpu210-a到210-d的分布式运算可由cpu210-a到210-d中的一或多者或由控制实体240控制。

尽管将控制实体240示出为与多核心处理器210分离,但其可在cpu210-a到210-d中的一或多者上实施,或部分或完全与多核心处理器210分离。另外,控制实体240可实施为计算机系统200的远程组件。控制实体240可在cpu210-a到210-d中的两个或更多个上作为并行过程或作为经协调的控制来实施。举例来说,控制实体240可在其上实施所述控制实体以控制过程流的cpu之间接收或发送信号。作为另一实例,控制实体240可在多于一个cpu上独立执行,其中所述过程流由cpu所接收到的指示密码过程的执行的信号控制。举例来说,一旦密码过程的重复已在两个cpu上完成,cpu就可彼此发信号通知,通过在每一cpu上独立地执行控制实体240来读取所述信号。这样实施的控制实体240可接着致使cpu针对密码过程的接下来的重复使用适当的运算数,例如通过指向将由cpu使用的有效数据或不相关数据。

控制实体240可集成到cpu210-a到210-d中的单个或若干个cpu中,以提供对在cpu210-a到210-d中的多于一个上执行的软件应用程序的控制或管理。另外或替代地,对分布式软件应用程序的分布式控制或管理可由控制实体240提供,其可实施为可管理对cpu210-a到210-d中的一或多者或存储器260的控制的单独核、cpu、微控制器,或任何其它控制装置。cpu210-a到210-d中的至少两个用以在共享或分布式基础上实施密码运算,且对密码运算如何共享或分布的控制可由cpu210-a到210-d中的一或多者或由作为单独控制装置的控制实体240提供。

参看图3,过程流程300说明密码过程的实例。过程流300示出针对rsa算法进行以处理通信c的并行运算310、320,其中n为模数,且d为秘密指数或私钥。在过程流300执行的计算是根据用于执行rsa密码过程的以下算法。

在以上算法中,l是私钥或秘密指数d的长度,r是有效中间结果,且sig是最终结果,通信c是作为密码运算的标的的消息,所述密码运算可为例如加密或解密。模数n通常结合公钥或私钥提供,例如结合秘密指数d。秘密指数d是用于密码过程中的私钥,且保持保密以确保密码过程的完整性。秘密指数d表示为具有例如位等分量值的向量。每一位可由其在秘密指数d中的位置识别,例如表示为从最高有效位到最低有效位排序的位dl-1、dl-2、...d1、d0。根据所述算法,将有效中间结果r初始化到1。随着每一重复来对有效中间结果r求平方,作为(r2modn)计算的一部分。如果秘密指数d的当前位是1,那么在(r2modn)计算之后,还通过在(r*cmodn)计算中倍增来修改有效中间结果r。如果秘密指数d的当前位不等于1,那么为所述算法的重复跳过相乘运算。

上方算法的实施方案通常调用若干求平方和相乘运算。过程流300说明求平方运算310正由一或多个cpu执行,其可结合cpu210-a到210-d中的任一者实施。相乘运算320可由一或多个cpu执行,其还可结合不同时进行求平方运算310的cpu210-a到210-d中的任一者实施。举例来说,通过使求平方和相乘的运算交错,在单个cpu上实施求平方运算310和相乘运算320也是可能的。

根据过程流300,控制实体,例如控制实体240,接收秘密指数d,且控制有效中间数据r在用以实施密码过程的可用cpu之间的切换。将通信c和模数n,完全或部分地,提供到进行求平方运算310和相乘运算320的cpu中的每一者。初始化有效中间结果r,其保持有效中间数据,如不相关中间结果r′一样,其充当不相关中间结果的占位符。举例来说,将有效中间结果r初始化到1。可将不相关中间结果r′初始化到任意值,包含如所提供来初始化有效中间结果r的相同值。使用秘密指数d的分量来开始通过rsa算法的重复。最初,将秘密指数d的第一分量确定为1。由于将有效中间结果r初始化到1,因此最初不需要实施求平方运算310,因为假定通过对1求平方来获得1。对有效中间结果r执行的第一运算因此为初始相乘运算321,表示为m。将不相关中间结果r′作为运算数提供到初始求平方运算311,其表示为s′。

名称s和m用以指示对有效中间结果r的相应求平方或相乘运算。名称s′和m′用以指示对不相关中间结果r′的相应求平方或相乘运算。一致地应用这些名称来指代过程流300期间的结果和运算。举例来说,使用不相关中间结果r′作为运算数的相乘运算表示为m′,且相乘运算的结果存储在不相关中间结果r′中。因此通过应用于求平方运算s′或相乘运算m′来更新不相关中间结果r′,而通过应用于求平方运算s或相乘运算m来类似地更新有效中间结果r。使用这些名称,表示为s′的初始求平方运算311更新不相关中间结果r′,而表示为m的初始相乘运算321更新有效中间结果r。在此配置中,执行求平方和相乘运算两者,尽管对于有效或不相关数据执行一个运算来获得不相关结果,且对于有效数据执行一个运算来获得有效结果。

无需对于过程流300中描绘的密码过程的每一重复都更新不相关的中间结果r′。举例来说,可在密码过程的每一重复中,将新的有效或不相关值指派给不相关中间结果r′。在此情形中,可在所述运算的执行之后丢弃执行求平方运算s′或相乘运算m′的结果,而不是用以更新不相关中间结果r′。

在中初始运算之后的重复中,有效中间结果r经受表示为s的求平方运算312,其产生经更新的有效中间结果r。并行地,不相关中间结果r′经受表示为m′的相乘运算322,其产生经更新的不相关中间结果r′。因此,在第二重复中,进行求平方运算310的cpu指向有效中间结果r作为运算数,且执行表示为s的求平方运算312来更新有效中间结果r。进行相乘运算320的cpu指向不相关中间结果r′作为运算数(其可为有效中间结果r),且执行表示为m′的相乘运算322。用箭头332来说明使cpu指向有效中间结果r或不相关中间结果r′的改变。使用有效中间结果r作为运算数而进行的运算的结果存储在有效中间结果r中。另外,丢弃使用不相关中间结果r′作为运算数进行的运算的结果,或将其存储在不相关中间结果r′中。因此,可通过所应用的运算来更新相应的有效和不相关中间结果r和r′,且通过密码过程的每一重复来运载。

使用此布置,相应的有效和不相关中间结果r和r′在进行相应的求平方运算310和相乘运算320的cpu之间切换。中间结果在cpu之间的切换,以箭头330说明,可根据各种技术来实现。举例来说,图2中所示的控制实体240使用指针来控制相应的有效和不相关中间结果r和r′在cpu之间的切换。有效和不相关中间结果r和r′无需为不同值,且因此在此实例中无需切换。举例来说,进行相应求平方运算310和相乘运算320的cpu可各自使用有效中间结果r作为运算数。由适当的cpu执行的产生有效或所要结果的运算的结果维持在有效中间结果r中,而其它结果是不相关的,且可丢弃或存储在不相关中间结果r′中。

控制实体240使执行求平方运算312的cpu指向有效中间结果r,同时还使执行相乘运算322的cpu指向不相关中间结果r′(其可为与有效中间结果r相同的位置)。此配置可使用不同的存储技术来在适当的求平方运算310或相乘运算320之后,准许相应的有效和不相关中间结果r和r′的快速指针调整、检索和存储。举例来说,控制实体240可控制对两个不同存储位置的存取,一个针对有效中间结果r,且另一个针对不相关中间结果r′。控制实体240接着可使适当的cpu指向有效中间结果r或不相关中间结果r′,以获得用于有效数据运算(s或m)的运算数,或获得用于不相关数据运算(s′或m′)的运算数。举例来说,相应的有效和不相关中间结果r和r′的存储位置可位于多端口存储器中,其可实施为存储器260(图2),以准许多个cpu潜在地同时存取。控制实体240可将多端口存储器中的地址提供给适当的cpu,以准许对相应的有效和不相关中间结果r和r′的存取。另外或替代地,控制实体240可将相应的有效和不相关中间结果r和r′加载到用于cpu的本地存储器中,根据相应cpu将对有效数据还是对不相关数据(其可从有效数据获得)进行运算。许多其它切换方案是可用且可能的,只要可为适当的有效求平方或相乘运算存取有效中间结果r,使得最后可获得正确的有效结果即可。

在一些重复中,当应用求平方和/或相乘运算时,跟踪有效中间结果r和不相关中间结果r′中的一者或两者,使得可通过参考有效中间结果r来获得正确的结果。另外或替代地,在密码过程的一些重复中,跟踪有效中间结果r,且不跟踪不相关中间结果r′。在此情况下,当用作运算数时,不相关中间结果r′可为有效数据、任意数据或计划的数据。不相关中间结果r′的内容或值对于获得密码过程的有效最终结果来说是不重要的。在一些配置中,无需存储不相关中间结果,这可避免额外的存储器运算。在此情况下,可在控制实体240的指导下产生不相关中间结果r′,例如通过发指令给适当的cpu来获得或产生用于不相关中间结果r′的有效或不相关数据。在其它情况下,控制实体240可致使有效中间结果r和不相关中间结果r′两者将存储并检索和跟踪,使得相对于作用中cpu所进行的运算,有效数据和不相关数据的管理之间存在极少区别或无区别。

根据另一实例,在所应用的求平方和相乘运算期间,不跟踪有效中间结果r。在此情况下,使用秘密指数d的分量的值来将适当的cpu引导到作为运算数的有效中间结果r,或将有效中间结果r引导到适当的cpu,且将有效中间结果r的最终值用作密码过程的所要结果。另外或替代地,如果有效中间结果r的存储位置在密码过程期间改变,例如通过与不相关中间结果r′切换,那么可通过跟踪存储位置改变,或通过查阅秘密指数d的分量值序列以确定有效中间结果r的最终位置,来确定有效中间结果r的最终位置。

随着将求平方运算310和相乘运算320在密码过程期间继续应用于作为运算数的有效中间结果r和不相关中间结果r′两者以获得有效中间结果r和不相关中间结果r′作为结果,sca在有效与不相关运算之间可检测到极少区别或无区别。随着以过程流300所描绘的密码过程来实施,对于每一重复或循环执行求平方运算和相乘运算两者,使得无法基于sca来容易地区分秘密指数d的值。控制实体所240进行的在适当的cpu之间有效中间结果r和不相关中间结果r′的运算在使用sca来检测方面比求平方和相乘运算显著更难。举例来说,此类切换运算的sca可产生可观察的现象,其比求平方和/或相乘运算所产生的现象小若干数量级。切换运算在过程流300中已发生的确定因此使用sca非常困难,且正在对有效或不相关数据求平方还是相乘的确定同样地非常困难。因此,根据过程流300进行的密码运算非常难以与秘密指数d的分量值关联,因为每一相应cpu对于每一重复执行求平方或相乘运算中的任一者。秘密指数d的值因此对于过程流300所描绘的配置高度遮蔽,因为监视任何单个cpu将示出一系列求平方运算或一系列相乘运算,且所监视的运算作为有效还是不相关的运算数或结果将不清楚。如下文较详细论述,给定cpu所执行的运算可改变,且对有效数据的参考可与所述运算改变协调地改变。在此类配置中,秘密指数d的值持续高度遮蔽,因为监视任何单个cpu将示出从秘密指数d的值解离的求平方或相乘运算。

如过程流300中所说明,求平方运算310和相乘运算320继续对有效数据和不相关数据两者使用,而控制实体240按需要切换有效中间结果r,以获得有效计算和有效最终结果。箭头330说明有效中间结果r何时切换到适当的cpu,以应用求平方运算310或相乘运算320。将有效中间结果r切换到适当的cpu与秘密指数d的当前分量值一致。举例来说,根据上文所述的rsa算法,每当秘密指数d的当前分量(位)是1时,初求平方运算之外,还执行相乘运算,因此将有效中间结果r切换到相乘运算320,如用对应箭头330指示。当秘密指数d的当前分量(位)是0时,对有效中间结果r执行至少两个连续求平方运算310,因为跳过相乘运算320。因此,虽然可存在对有效中间结果r的多个连续求平方运算310,但存在至多单个连续相乘运算320。在过程流300中说明的密码过程的结论处,一旦已经使用所有适当应用的求平方运算310和相乘运算320,有效中间结果r就保持最终有效结果,其指派给结果sig,其表示经加密或解密的通信。

现参看图4,流程图400说明用于分布式密码运算的过程。流程图400中所说明的过程可在计算机系统200(图2)上实施,且以获得秘密指数d、通信c和模数n开始,如框410中所示。

初始化有效中间结果r、不相关中间结果r′,以及秘密指数d的分量di,如框412中所说明。将分量di初始化到秘密指数d的最高有效位,作为加密/解密过程的开始点。将有效中间结果r的初始值设定成1,而将可与用于有效中间结果r任意值相同的任意值用作不相关中间结果r′的初始值。

框414说明cpu1初始化到第一运算op_a(其为求平方运算),且指向有效中间结果r。另外,框414说明cpu2初始化到第一运算op_b(其为相乘运算),且指向不相关中间结果r′。cpu1和cpu2可各自实施为多核心处理器210,或实施为cpu210-a到210-d(图2)中的一或多者。cpu1和cpu2可经配置以同时执行运算,和/或可实施为cpu210-a到210-d中的一或多者来在非按时序重叠配置中执行运算,意味着cpu1和cpu2可各自轮流实施为cpu210-a到210-d中的一或多者。流程图410中所说明的过程可经配置以例如使op_a为相乘运算,且使op_b为求平方运算,在此情况下,cpu1将初始化以指向不相关中间结果r′,且cpu2将初始化以指向有效中间结果r。

框414说明密码过程期间,用于cpu1和cpu2的参数的设定或复位。举例来说,控制实体240(图2)可最初或在密码过程期间,为cpu1或cpu2中的一者指定op_a和有效中间结果r,且为cpu1或cpu2中的另一者指定op_b和不相关中间结果r′。控制实体240可设定指针来控制cpu1和cpu2中的哪一者指向有效中间结果r,且哪一者指向不相关中间结果r′。以此方式,op_a作为求平方运算,例如求平方运算310(图3),在密码过程的重复的开头,使用有效中间结果r作为运算数,且op_b作为相乘运算,例如运算320(图3)使用不相关中间结果r′作为运算数。

在cpu1最初设定成执行op_a且指向有效中间结果r,且cpu2最初设定成执行op_b且指向不相关中间结果r′的情况下,致使cpu1对有效中间结果r执行op_a,且致使cpu2执行op_b,如框416中所说明。在初始循环或重复中,op_a是求平方运算,其在cpu1上执行r2modn的计算,且op_b是相乘运算,其在cpu2上执行r′*cmodn。因此,cpu1使用有效中间结果r作为运算数,而cpu2使用不相关中间结果r′作为运算数。

作为以流程图400说明的密码过程的一部分,评估秘密指数d的分量di,例如正被检查的当前位,以确定其是否等于1,如决策框418中所说明。如果秘密指数d的分量不等于1,那么密码过程进行到下一重复,如由来自决策框418的通往决策框428的否分支说明,其检查循环退出。如果秘密指数d的当前分量di等于1,那么密码过程进行到确定op_a如果指派给cpu1,如决策框420中所示。如果op_a(模数求平方)指派给cpu1,如由决策框420的是分支指示,那么cpu1设定成指向不相关中间结果r′,且cpu2设定成指向有效中间结果r,如框424中所说明。如果op_a不指派给cpu1,如由决策框420的否分支所说明,那么cpu1设定成指向有效中间结果r,且cpu2设定成指向不相关中间结果r′,如框422中所说明。决策框420因此说明有效中间结果r到执行相乘运算的cpu的切换。密码过程可经配置以在由决策框420表示的步骤中检查op_a是否指派给cpu1,或op_b是否指派给cpu2,其中基于所述结果,相应的cpu指向适当的有效中间结果r或不相关中间结果r′。

框420、422和424说明有效中间结果r与不相关中间结果r′之间的参考的切换,cpu基于此来执行其运算。切换过程可例如由控制实体240实施,所述控制实体提供指向cpu1或cpu2的指针来按需要参考有效中间结果r或不相关中间结果r′。控制实体240可识别cpu1和cpu2中的哪一者正进行op_b或相乘,且因此向用于所述运算的适当cpu提供指向有效中间结果r的指针。控制实体240可识别cpu1和cpu2中的哪一者正进行op_a或求平方,且因此向用于所述运算的适当cpu提供指向不相关中间结果r′的指针。控制实体240可经配置以将指向有效中间结果r的指针提供给cpu1和cpu2两者,使得两个cpu均将有效数据更新作为运算数。框426说明cpu1和cpu2正进行op_a或op_b,无论控制实体240将哪个运算指派给相应的cpu。通过此方法,适当的cpu使用不相关中间结果r′作为运算数来执行op_a或(r′)2modn,且另一cpu使用有效中间结果r来执行op_b或r*cmodn。根据这些运算,根据分量di的值将适当的运算应用于适当的运算数,与哪一cpu进行哪一运算无关。op_a和/或op_b也可/或者两者均使用有效中间结果r作为运算数,其在op_a的此情况下为不相关运算数,且产生不相关结果。

流程图400中所说明的密码过程在处理秘密指数d的最后一个分量di时结束,如以决策框428具备是分支来说明,所述是分支响应于最后一个分量di是否已经处理的测试而导致所述过程的结束。通常,对于rsa密码过程,将处理的秘密指数d的最后一个分量di是最低有效位。如果秘密指数d的进一步分量di保持将被处理,那么选择秘密指数d的下一分量di来处理,如以决策框428的引向框430的否分支所说明。框430说明选择秘密指数d的下一分量di来为密码过程设置算法的下一重复。

作为流程图400中所说明的密码过程的另一重复的设置的一部分,做出关于指派给cpu1和cpu2的运算是否应切换的确定。以决策框432来说明此确定,其中否分支通往用于密码过程的另一重复的框416,且是分支通往决策框434,以检查哪一cpu正执行哪一运算。

是否切换正由cpu1和cpu2执行的运算的决策可由控制实体240执行。所述决策可基于各种准则,包含用于切换指派给cpu的运算的预定或随机时序,用于切换的预定或随机序列或用于切换的事件驱动的触发,仅举几种可能性。预定或随机时序可用以分别以某些周期性时间间隔或以随机长度时间间隔提供切换应发生的指示,与密码过程的循环或重复相比,所述间隔可较短、相同或较长。可使用预定或随机序列来提供切换应分别以某些重复或以随机重复发生。可在某一事件的通知后,即刻使用事件驱动的触发来提供应发生切换的指示,例如通过cpu1或cpu2执行指令、trap报文或中断。在一些情况下,使用cpu1和/或cpu2而不是控制实体240来做出何时应在cpu之间切换运算的确定。

一旦做出应切换运算的确定,就检查cpu1或op_a,以确定它们是否指派给彼此,如决策框434中所说明。所述过程还可经配置以检查cpu2或op_b,以确定它们是否指派给彼此。如果op_a不指派给cpu1,如以决策框434的否分支所说明,那么将op_a指派给cpu1,cpu1指向有效中间结果r,且将op_b指派给cpu2,其指向不相关中间结果r′,如在框414中所说明。如果op_a当前指派给cpu1,那么所述运算在cpu之间切换,使得op_b指派给cpu1,其指向不相关中间结果r′,且op_a指派给cpu2,其指向有效中间结果r,如在框436中所说明。在将运算指派给cpu之后,密码过程通过cpu1或cpu2中所指派的一者继续来执行op_a或op_b,如框416中所说明。对于密码过程的此部分,运算向cpu的指派复位,如cpu向有效中间结果r或不相关中间结果r′的指针指派那样。

不管运算向cpu的指派如何,在密码过程的每一重复的第一运算中,有效中间结果r用作op_a或求平方运算的运算数,且不相关中间结果r′用作op_b或相乘运算的运算数。此外,在密码过程的二级条件性运算(例如,如果di为1)中,有效中间结果r用作op_b或相乘运算的运算数,且不相关中间结果r′用作op_a或求平方运算的运算数。类似于cpu切换为指向运算数,运算在cpu之间的切换产生sca事件,其比求平方或相乘运算的sca事件小若干数量级。因此,与检测求平方或相乘运算相比,使用sca来检测切换运算相对来说非常困难。

尽管流程图400说明在密码过程的每一重复期间是否使运算在cpu之间切换一次的确定,但其它实施方案是可能的。举例来说,可在每一重复中进行此切换确定若干次,例如在决策框420中所说明的确定之前,或在每次执行op_a和/或op_b之前或之后。另外或替代地,可在一些重复期间做出切换确定,且在其它重复期间,不做出切换确定。举例来说,可设定或复位旗标,来指示应在哪一(哪些)重复中做出切换确定。因此,可用比其重复出现的频率小、相同或大的频率来执行切换和/或切换确定。

现参看图5,流程图500说明用于分布式密码运算的过程。流程图500中所说明的过程可在计算机系统200(图2)上实施,且以获得秘密指数d、通信c和模数n开始,如框510中所示。

框512说明密码过程的变量初始化,具有有效中间结果r和不相关中间结果r′的初始化,以及分量di的值的初始化,其表示秘密指数d的第一分量值。在图5中说明的过程中,将秘密指数d的最高有效位用作加密/解密过程的开始点。将有效中间结果r的初始值设定成1,而将可与用于有效中间结果r任意值相同的任意值用作不相关中间结果r′的初始值。

用指针来参考有效中间结果r作为r2modn运算的运算数,且用指针来参考不相关中间结果r′作为r′*cmodn运算的运算数,如框514中所说明。用于有效中间结果r和不相关中间结果r′的指针可经配置以指向相同存储器位置,例如有效中间结果r的存储器位置。密码过程的在框514中所说明的部分使用以参考有效中间结果r和不相关中间结果r′的指针复位。举例来说,控制实体240设定指针,使得有效中间结果r指向将执行求平方运算的cpu,且使得不相关中间结果r′指向将执行相乘运算的cpu。以此方式,求平方运算,例如求平方运算310(图3),在密码过程的重复的开头,使用有效中间结果r作为运算数,且相乘运算,例如相乘运算320(图3)使用不相关中间结果r′作为运算数。

在有效中间结果r和不相关中间结果r′设定成适当值的情况下,执行求平方和相乘运算,如框516中所说明。模数求平方运算r2modn在cpu1上执行,而模数相乘运算r′*cmodn在cpu2上执行。cpu1和cpu2各自在流程图500中所说明的整个过程中执行相同的相应求平方和相乘运算。如框516中示出,cpu1使用有效中间结果r作为运算数,而cpu2使用不相关中间结果r′作为运算数。

如决策框518中所描绘,评估秘密指数d的分量di,例如正被检查的当前位,来确定其是否等于1。如果秘密指数d的分量di不等于1,那么密码过程进行到下一重复,如由来自决策框518的通往决策框524的否分支说明,其说明循环退出的确定。如果秘密指数d的当前分量等于1,那么密码过程进行到相乘步骤,如以来自决策框518的通往框520的是分支所说明。

框520说明参考在有效中间结果r与不相关中间结果r′之间的切换。举例来说,控制实体240向cpu1提供指针指向参考不相关中间结果r′作为运算数,且向cpu2提供指针指向参考有效中间结果作为运算数。用于有效中间结果r和不相关中间结果r′的指针可经配置以指向相同存储器位置,例如有效中间结果r的存储器位置。框522说明用其相应的运算数进行其相应求平方和相乘运算的cpu1和cpu2。在cpu1上执行的求平方运算的结果存储在不相关中间结果r′中,且在cpu上执行的相乘运算的结果存储在有效中间结果r中。或者,在cpu1上执行的求平方运算的结果可丢弃。使用此方法,cpu1使用不相关中间结果r′作为运算数来执行求平方运算(r′)2modn,且cpu2使用有效中间结果r来执行相乘运算r*cmodn。根据这些运算,cpu1和cpu2分别在一致基础上执行求平方和相乘运算,不管它们正作用于有效还是不相关数据。

当处理了秘密指数d的最后一个分量时,密码过程结束,如以决策框524具备是分支来说明,所述是分支响应于是否已经处理了最后一个分量di的测试而通往所述过程的结束。通常,对于rsa密码过程,将处理的秘密指数d的最后一个分量是最低有效位。如果秘密指数d的进一步分量di保持将被处理,那么选择秘密指数d的下一分量di来处理,如以决策框524的引向框526的否分支所说明。秘密指数d的下一分量di的选择为密码过程设定所述算法的下一重复,如由引向框514的框526所说明。框514说明指针复位,使得有效中间结果r可再次供cpu1在求平方运算中使用,且不相关中间结果r′可再次供cpu2在相乘运算中使用。

根据其它实例,两个或更多个cpu可相对于不同运算(例如求平方和相乘)而同步。举例来说,与在另一cpu上执行的相乘运算相比,实施求平方运算的cpu可在较短或较长时间范围内执行那些运算中的每一者。在cpu经配置以实施分布式算法的情况下,可使cpu同步,以准许运算继续同时或并行进行。根据一些实施例,填补指令(例如nop(无运算)指令)可通过完成比同时执行不同的所指派运算的对应cpu快地执行所指派的运算的cpu执行。以此方式,cpu可因两者均被引起而同步,以花费大约相同的时间量来执行不同运算。

现参看图6,流程图600说明用于分布式密码运算的另一实例过程。流程图600中所说明的过程可在计算机系统200(图2)上实施,且决策、运算执行指派和运算数指派可由控制实体240,或由多核心处理器210,或由cpu210-a到210-d中的一或多者来实施。流程图600中所说明的过程实例以cpu1和cpu2中的每一者获得秘密指数d、密码c、模数n以及有效中间结果r和不相关中间结果r′的地址开始,如框610和660中所说明。密码c是作为密码操作(例如加密、签名或解密)的标的消息。模数n通常结合公钥或私钥,例如结合秘密指数d提供。秘密指数d是用于密码过程中的私钥,且保持保密以确保密码过程的完整性。秘密指数d还提供参数l,其反映以秘密指数d的位数来计的长度。可以指针形式提供有效中间结果r和不相关中间结果r′的地址,且可将其设定成相同值,例如有效中间结果r的地址。不相关中间结果r′的地址还可提供作为任意值,或指代任意的存储器位置。

框612和662说明用于密码过程的变量的初始化。将有效中间结果r和不相关中间结果r′两者初始化到值c。将表示秘密指数d的位串表示中的索引的循环计数器ⅰ初始化到值l-1。在此实例中,将秘密指数d的最高有效位用作加密/解密过程的开始点。可建构替代算法,其将从秘密指数d的最低有效位开始,在此情况下,循环计数器ⅰ将初始化到0,且在所述过程期间递增。

框614和664说明运算向相应cpu的指派,以及指针向相应运算数的提供。框614说明cpu1正被指派运算op_a,其在此实例中为模数求平方运算。并且,cpu1具备指向有效中间结果r的指针或地址。框664说明cpu2正被指派运算op_b,其在此实例中为模数相乘运算。并且,cpu2具备指向不相关中间结果r′的指针或地址。

框616和665说明cpu1和cpu2执行所指派的运算。如下文更详细地描述,在框616处,可指派cpu1来对分别对有效中间结果r或不相关中间结果r′执行op_a或op_b。在框665处,可指派cpu2来分别对不相关中间结果r′或有效中间结果r执行op_a或op_b。op_a所执行的模数求平方运算是r2modn,而op_b所执行的模数相乘运算是r′*cmodn。使cpu1和cpu2初始化以分别执行op_a和op_b,但可经配置以改变正执行的运算,如下文所述。使cpu1初始化以使用有效中间结果r作为运算数,且初始化cpu2以使用不相关中间结果r′作为运算数。cpu1和cpu2两者可经配置以总是使用有效数据作为运算数,例如有效中间结果r所参考的值。在此实例中,对不相关的有效数据执行的运算的结果可丢弃,或存储在不相关中间结果r′中。对相关、既定或所要的有效数据执行的运算的结果存储在有效中间结果r中。cpu1和cpu2可各自表示一或多个cpu,包含多核cpu、多核处理器、物理上不同的处理器芯片、gpu(图形处理单元)和专用处理器或处理器核心的组合,或多个cpu的任何其它配置。

因为指派给cpu1和cpu2的运算如框616和665中所说明来执行,因此可任选地实施同步运算来确保cpu1与cpu2之间的同步。举例来说,如果cpu1所执行的模数求平方运算比cpu2所执行的模数相乘运算早结束,那么进行所述模数求平方运算的cpu1可经配置以执行额外的非运算(nop),直到在cpu2上执行的模数相乘运算结束为止。或者,可将cpu1放入轮询循环中,其等待cpu2的完成相乘运算的指示。对cpu1或cpu2中的任一者的运算可比其它cpu早或晚结束,使得同步补偿可应用于cpu1或cpu2中的任一者或两者。另外,可实施其它形式的同步,例如通过加速或减缓cpu执行,或通过在概率性基础上确定运算执行时间,或准许cpu1和cpu2的同步维持密码过程的分量在给定循环或重复中的同时执行的任何其它形式。可将所述同步应用于执行求平方运算或相乘运算的多个cpu,例如通过使用或添加较多cpu来执行预期或实际上的确比其它运算花费更长的时间来执行的运算。

所述过程通过测试秘密指数d的分量di(例如正被检查的当前位)来继续,以确定分量di等于1还是0,如决策框620和670中所说明。如果秘密指数d的分量di等于0,那么密码过程进行到下一重复,如由来自决策框620和670的通往相应决策框618和668的0分支所说明。如果秘密指数d的分量di等于1,那么密码过程进行到相乘步骤,如由来自决策框620和670的通往相应决策框622和672的1分支所说明。

决策框622和672说明是否指派来cpu1执行op_a且是否指派cpu2来执行op_b的相应确定。如果指派cpu1来执行op_a,如由来自决策框622的是分支指示,那么cpu1具备对作为到op_a的运算数的不相关中间结果r′的存取权,如框624中所说明。否则,将cpu1理解为被指派来执行op_b,如由来自决策框622的否分支指示,且具备对作为到op_b的运算数的有效中间结果r的存取权,如在框626中所说明。如果指派cpu2来执行op_b,如由来自决策框672的是分支指示,那么cpu2具备对作为到op_b的运算数的有效中间结果r的存取权,如框674中所说明。否则,将cpu2理解为被指派来执行op_a,如由来自决策框672的否分支指示,且具备对作为到op_a的运算数的不相关中间结果r′的存取权,如框676中所说明。

框628和678说明cpu1和cpu2执行所指派的运算。如下文更详细地描述,在框628处,可指派cpu1来对分别对有效中间结果r或不相关中间结果r′执行op_a或op_b。在框678处,可指派cpu2来分别对不相关中间结果r′或有效中间结果r执行op_a或op_b。op_a所执行的模数求平方运算是r2modn,而op_b所执行的模数相乘运算是r′*cmodn。对于决策框622和672中所说明的测试,可确定被指派给cpu1和cpu2来执行的运算,且可为适当的cpu指派适当的运算数,以确保当框628和678中说明的运算的执行发生时,对有效数据发生模数相乘。

随着指派给cpu1和cpu2的运算如框628和678中所说明而执行,同步运算,例如上文所论述的那些运算中的任一者,可再次任选地实施,以确保cpu1与cpu2之间的同步。cpu1与cpu2之间的同步可意味着(且可经实施以使得)分别指派的运算同时或在不同时间开始执行。同步可意味着(且可经配置以使得)运算在密码过程的循环或重复内不重叠,至少部分地重叠,或完全重叠。

一旦执行框628和678中所说明的运算,就做出循环退出确定,如以决策框618和668说明。决策框618和678说明循环计数器ⅰ正递减并测试,以确定是否应退出所述循环。如果由于正递减,ⅰ小于零,那么流程图600中所说明的过程结束。通常,对于rsa密码过程,将处理的秘密指数d的最后一个分量是最低有效位。否则,如果ⅰ的递减的值大于或等于0,那么密码过程如所说明继续,其中来自决策框618和668的如此标记的分支通往相应的决策框630和680。

如决策框630、680中所说明,做出是否切换指派给cpu1和cpu2来执行的运算的相应确定。可在上文相对于决策框432(图4)所论述的相同基础中的一或多者上做出是否在cpu1与cpu2之间切换运算的确定。如果做出不切换运算的确定,如由决策框630、680的否分支指示,那么所述过程以cpu1和cpu2执行所指派的运算继续,如分别在框616、665中所说明。如果做出切换运算的确定,如由决策框630、680的是分支指示,那么做出相应确定来确定是否指派cpu1来执行op_a,以及是否指派cpu2来执行op_b,如决策框632、682中所说明。

如果确定指派cpu1来执行,如以来自决策框632的是分支所说明,那么指派cpu1来执行op_b,且cpu1具备对不相关中间结果r′的存取权,如框634中所说明。类似地,如果确定指派cpu2来执行op_b,如以来自决策框682的是分支所说明,那么指派cpu2来执行op_a,且cpu2具备对有效中间结果r的存取权,如框684中所说明。一旦做出指派给cpu1和cpu2来执行的运算的改变,cpu1和cpu2就执行其所指派的运算,如从框634、684到达的框616、665中所说明。

如果确定指派cpu1来执行op_b,如以来自决策框632的否分支所说明,那么指派cpu1来执行op_a,且cpu1具备对有效中间结果r的存取权,如以来自决策框632的针对框614的否分支所说明。类似地,如果确定指派cpu2来执行op_a,如以来自决策框682的否分支所说明,那么指派cpu2来执行op_b,且cpu2具备对不相关中间结果r′的存取权,如以来自决策框682的针对框664的否分支所说明。如上文相对于流程图400(图4)中所说明的过程所论述,改变运算的指派以供cpu1或cpu2执行可在流程图600中所说明的密码过程的每一循环或重复中实施零次、一次或若干次。

现参看图7,流程图700说明用于分布式密码运算的另一实例过程。流程图700中所说明的过程可在计算机系统200(图2)上实施,且决策、运算执行指派和运算数指派可由控制实体240,或由多核心处理器210,或由cpu210-a到210-d中的一或多者来实施。cpu1和cpu2中的每一者获得秘密指数d、密码c、模数n以及有效中间结果r和不相关中间结果r′的地址,如框710和760中所说明。密码c是作为密码操作(例如加密、签名或解密)的标的消息。模数n通常结合公钥或私钥,例如结合秘密指数d提供。秘密指数d是用于密码过程中的私钥,且保持保密以确保密码过程的完整性。秘密指数d还提供参数l,其反映以秘密指数d的位数来计的长度。可以指针形式提供有效中间结果r和不相关中间结果r′的地址,且可将其设定成相同值,例如有效中间结果r的地址。不相关中间结果r′的地址还可提供作为任意值,或指代任意的存储器位置。

框712和762说明用于密码过程的变量的初始化。将有效中间结果r和不相关中间结果r′两者初始化到值c。还将表示秘密指数d的位串表示中的索引的循环计数器ⅰ初始化到值l-1。在此实例中,将秘密指数d的最高有效位用作加密/解密过程的开始点。可建构替代算法,其将从秘密指数d的最低有效位开始,在此情况下,循环计数器ⅰ将初始化到0,且在每一过程重复期间递增。

框714和764说明密码过程的一部分,其分别参考有效中间结果r以及不相关中间结果r′。框714中所说明的密码过程的所述部分致使被命名为指针1的指针变量设定成有效中间结果r的地址。框764说明将被命名为指针2的指针变量设定为不相关中间结果r′的地址。由于框714和764在流程图700中所说明的重复环内部,因此对于每一重复,使指针(指针1和指针2)复位到有效中间结果r和不相关中间结果r′的相应地址。以此方式,在密码过程的重复的开头,求平方运算,例如求平方运算310(图3),使用有效中间结果r作为运算数。在密码过程的重复的开头,相乘运算,例如相乘运算320(图3),使用不相关中间结果r′作为运算数。

在有效中间结果r和不相关中间结果r′分别由指针1和指针2参考的情况下,对cpu1和cpu2中的相应一者执行求平方和相乘运算,如框716和766中所说明。在框716中执行的求平方运算是r2modn,且对cpu1执行,而在框766中执行的相乘运算是r′*cmodn,且在cpu2上执行。cpu1和cpu2各自在流程图700中所说明的整个过程中执行相同的相应求平方和相乘运算。在框716中,cpu1使用有效中间结果r作为运算数,而在框766中,cpu2使用不相关中间结果r′作为运算数。cpu1和cpu2可各自表示一或多个cpu,包含多核cpu、多核处理器、物理上不同的处理器芯片、gpu(图形处理单元)和专用处理器或处理器核心的组合,或多个cpu的任何其它配置。

当如框716和766中所说明执行求平方和相乘运算时,任选地实施同步运算来确保cpu1与cpu2之间的同步。可相对于以流程图600(图6)说明并描述的运算,如上文所论述来定义同步。

评估秘密指数d的分量di,例如正被检查的当前位,以确定分量di是否等于1或0,如决策框720和770中所说明。如果秘密指数d的分量等于0,那么密码过程进行到下一重复,如由来自决策框720和770的通往相应决策框718和768的0分支所说明。如果秘密指数d的当前分量等于1,那么密码过程进行到相乘步骤,如由来自决策框720和770的通往相应决策框722和772的1分支所说明。

框722和772说明参考在有效中间结果r与不相关中间结果r′之间的切换。在框722中,将cpu1所使用的指针1设定成参考不相关中间结果r′,作为求平方步骤的运算数。在框772中,cpu2所使用的指针2设定成参考有效中间结果r,作为相乘步骤的运算数。cpu1使用指针1所参考的不相关中间结果r′来进行求平方步骤,如框724中所说明。cpu2使用指针2所参考的有效中间结果r来进行相乘步骤,如框774中所说明。因此,当di为1时,cpu1使用不相关中间结果r′作为运算数来执行模数求平方运算(r′)2modn,且cpu2使用有效中间结果r来执行模数相乘运算r*cmodn。根据这些运算,cpu1和cpu2分别在一致基础上执行求平方和相乘运算,不管它们正作用于有效还是不相关数据。

当如框724和774中所说明执行相应的求平方和相乘运算时,再次实施同步运算来确保cpu1与cpu2之间的同步。举例来说,如果在框774中实施的相乘运算比在框724中实施的求平方运算早结束,那么进行所述相乘运算的cpu2可经配置以执行额外的非运算(nop),直到在cpu1上执行的求平方运算结束为止。或者,可将cpu2放入轮询循环中,其等待cpu1的完成求平方运算的指示。对cpu1或cpu2中的任一者的运算可比其它cpu早或晚结束,使得同步补偿可应用于cpu1或cpu2中的任一者或两者。另外,可实施其它形式的同步,如上文更详细地论述。

一旦执行在框724和774中说明的运算,就在决策框718和768处做出循环退出确定。决策框718和768说明循环计数器ⅰ正递减并测试,以确定是否应退出所述循环。如果由于正递减,ⅰ小于零(<0),那么流程图700中说明的密码过程结束。通常,对于rsa密码过程,将处理的秘密指数d的最后一个分量是最低有效位。如果ⅰ的递减值大于或等于零(>=0),那么密码过程继续另一重复,如由来自决策框718和768的通往相应框714和764的如此标记的分支指示。

可修改流程图400、500、600和/或700中所说明的过程,例如通过相加、删除、组合和/或改变步骤或过程。举例来说,无需使用所描述的指针来参考有效中间结果r和不相关中间结果r′。举例来说,可使用其它参考技术,例如将运算数存储在适当的cpu中。另外,无需维持对不相关中间结果r′的参考,因为任意数据可用作替代运算数,所述任意数据可来源于任意资源。此外,不相关中间结果r′的专门定制的值可用于各种目的,例如有助于混淆求平方或相乘运算。其它修改是可能的。

流程图400、500、600和700是针对经实施来实现使用rsa算法的密码过程的运算。举例来说,流程图400、500、600和700说明以某一序列应用来根据rsa算法对通信/密码c进行加密/解密的求平方和相乘运算。然而,本文所论述的技术适用于其它密码过程,包含ecc(椭圆曲线密码术)算法,其使用类似于rsa过程的公钥密码术。ecc过程通常执行若干加倍和相加运算来进行加密或解密,其对应于在rsa算法中所使用的求平方和相乘运算。对rsa过程的sca攻击通常力图确定何时进行加倍或相加运算中的任一者,且接着使那些运算与形成加密密钥的位相关。如同rsa算法,ecc算法使用本发明的架构和技术所提供的分布式方法,其中与形成加密密钥的位有关的运算划分在cpu之间。一或多个cpu因此负责加倍运算,而一或多个cpu负责相加运算。加倍运算和相加运算各自由单独的cpu在ecc算法的每一重复中执行,其中对不相关数据执行加倍运算或相加运算中的任一者。如同上述rsa算法,对旁信道信号的分析揭露一系列加倍运算和相加运算,且因此掩盖了运算相对于加密密钥的任何差异。类似于上文所述的rsa算法,ecc算法的分布式cpu实施方案包含在相应加倍或相加运算之后的同步点。如同rsa算法,实施ecc算法的分布式cpu的同步有助于在sca攻击中混淆加密密钥的内容。举例来说,当分布式cpu同步时,可使基于时序的sca攻击不大可能成功。

尽管流程图400、500、600和/或700描述使用cpu1和cpu2的密码过程的运算,但其它变化是可能的和预期的。举例来说,cpu1和/或cpu2可由若干cpu组成,例如可用对称多核处理器、芯片多处理器、异构多核(例如cpu加图形处理单元(gpu),或一般来说cpu加加速器)以及cpu群集来实施。一般来说,cpu是控制和存储组件的个别集合,其可包含控制器、多用途存储寄存器、输入/输出部分以及算术逻辑单元。因此,可使用分布式架构或应用程序,其中可指令多个cpu来在rsa算法的情况下,计算求平方或相乘运算中的一些或全部,或在ecc算法的情况下,计算加倍或相加运算中的一些或全部。

参看图8,计算机系统200(图2)的实例实施方案包含系统配置800,其包含cpu模块810、cpu模块820、控制器模块830和存储器模块840。cpu模块810和cpu模块820可各自实施为多核处理器,例如处理器210,或可各自实施为一或多个个别cpu,例如cpu210-a到210-d中的一或多者。控制器模块830可实施为控制实体240,且可实施为多核处理器210上或cpu210-a到210-d中的一或多者上的过程或算法。存储器模块840可实施为存储器260。

cpu模块810能够进行若干运算,包含运算812(op_a)和运算814(op_b)。cpu模块820还能够进行若干运算,包含运算822(op_a)和运算824(op_b)。运算812可为与运算822相同的类型,且运算814可为与运算824相同的类型。cpu模块810和cpu模块820通信连接到控制器模块830,其能够选择不同的运算来在cpu模块810和模块cpu820中执行。控制器模块830可因此致使运算812或运算814被选择来在cpu模块810中执行。同样地,控制器模块830可致使运算822或运算824被选择来在cpu模块820中执行。

存储器模块840包含位置842,其用以存储例如有效中间数据r。存储器模块840还包含位置844,其用以存储例如不相关的中间数据r′。存储器模块840通信连接到cpu模块810和cpu模块820,其准许cpu模块810、820中的任一者或两者检索数据并将其存储在位置842、844。控制器模块830还可通信连接到存储器模块840(以虚线示出),且可例如使用指针来参考位置842、844。

控制器模块830包含指针832(ptr1)和指针834(ptr2),其用以参考存储器模块840中的位置842、844。指针832、834可实施为多核处理器210中或存储器260(图2)中的存储器位置。控制器模块830将输入提供到cpu模块810,以选择运算812或运算814来执行。控制器模块830也将输入提供到cpu模块822,以选择运算822或运算824来执行。cpu模块810上的相应运算812、814以及cpu模块820上的相应运算822、824的选择可在密码过程开始时执行一次,或可在密码过程期间执行多次。举例来说,cpu模块820上的选定运算822、824可在密码过程的执行期间改变。控制器模块830还将指针832或指针834提供到cpu模块810或cpu模块820,以准许cpu模块810、820参考并存取存储器模块840中的位置842、844。控制器模块830可基于cpu模块810正执行哪一运算812、814,以及cpu模块820正执行哪一运算822、824,来确定指针832、834中的哪些将提供到哪一cpu模块810、820。控制器模块830可因此致使分布式rsa或ecc算法在系统配置800上执行,其中每一cpu在算法的执行期间进行单个类型的运算,且用于所述运算的运算数在有效数据与不相关数据之间切换。此算法实例在图5和7中说明。另外,控制器模块830可致使cpu切换算法执行期间正执行的运算的类型,且可切换用于所述运算中的运算数,以用有效数据来适当地执行所述算法,来实现有效结果。此算法实例在图4和6中说明。

参看图9,进一步参看图1到8,说明用于执行分布式密码过程的过程900。然而,过程900仅为实例并且无限制性。可例如通过添加、移除、重新布置、组合、同时执行多个阶段和/或将单个阶段分裂为多个阶段来更改过程900。

在阶段910,过程900包含基于加密密钥d的至少一部分来确定第一运算812、822或第二运算814、824中的选定一者,以使用第一运算数,例如有效中间结果r,来执行第一运算812、822或第二运算814、824中的相应一者,所述第二运算814、824不同于第一运算812、822。

在阶段912,过程900包含使用第一运算数,例如有效中间结果r,来执行第一运算812、822或第二运算814、824中的选定一者。在阶段914,过程900包含使用第二运算数,例如不相关中间结果r′,来执行第一运算812、822或第二运算814、824中的另一者。

与求平方和相乘运算(群集中的数千个指令)相比,控制实体240所产生的旁信道信号是微弱的(单个或原子指令等级)。相应旁信道信号中的差异可为一对数量级,因此有助于将私钥从密码运算解离。本文所论述的技术可应用与加密优化,类似于多进制、滑动窗、crt和蒙哥马利(montgomery)倍增,其具有相同的预期性能和改进的安全性。电力消耗可大约为已知的单个cpu实施方案的电力消耗的双倍,是许多运算总体的两倍(约一半的运算是在不相关或假数据上)。然而,所揭示的架构和技术的性能度量可有利地与例如在单个cpu上实施的已知密码过程的性能度量进行比较,例如大约相同。因此,可实现关于旁信道分析的改进的安全性,而不使性能降级。

取决于应用,可通过各种装置来实施本文中所描述的方法。举例来说,这些方法可在硬件、固件、软件或其任何组合中实施。对于硬件实施方案,处理单元可实施于一或多个专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理装置(dspd)、可编程逻辑装置(pld)、现场可编程门阵列(fpga)、处理器、控制器、微控制器、微处理器、电子装置、经设计以执行本文中所描述功能的其它电子单元,或其组合内。

对于固件和/或软件实施方案,可用执行本文中所描述的功能的模块(例如,程序、函数等等)来实施所述方法。在实施本文所描述的方法时,可使用有形地体现指令的任何机器可读媒体。举例来说,软件代码可存储在存储器中,并且由处理器单元执行。存储器可实施在处理器单元内或处理器单元外部。如本文中所使用术语“存储器”是指任何类型的长期、短期、易失性、非易失性或其它存储器,且并不限于任何特定类型的存储器或特定数目的存储器或特定类型的媒体。有形媒体包含机器可读媒体的一或多个物理物品,例如随机存取存储器、磁性存储装置、光学存储媒体等等。

如果以固件和/或软件实施,那么可将所述功能作为一或多个指令或代码存储在计算机可读媒体上。实例包含用数据结构编码的计算机可读媒体和用计算机程序编码的计算机可读媒体。计算机可读媒体包含物理计算机存储媒体。存储媒体可为可由计算机存取的任何可用的媒体。借助于实例而非限制,此种计算机可读媒体可包括ram、rom、eeprom、cd-rom或其它光盘存储器,磁盘存储器或其它磁性存储装置,或任何其它可用于存储呈指令或数据结构形式的所要程序代码且可由计算机接入的媒体;如本文中所使用,磁盘和光盘包含压缩光盘(cd)、激光光盘、光学光盘、数字多功能光盘(dvd),软性磁盘和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘用激光以光学方式再现数据。以上各项的组合也包含在计算机可读媒体的范围内。此些媒体还提供可为机器可读的非暂时性媒体的实例,且其中计算机为可从此些非暂时性媒体读取的机器的实例。

上文所论述的方法、系统和装置是实例。在适当时,各种配置可省略、取代或添加各种程序或组件。举例来说,在替代性配置中,可以不同于所描述的顺来执行方法,和/或可添加、省略和/或组合各种阶段。并且,可以各种其它配置来组合想对于某些配置所描述的特征。可以类似方式组合配置的不同方面和元件。并且,技术发展,且因此元件中的许多是实例,且并不限制本发明或所附权利要求的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1