密码设备和编码设备的制作方法

文档序号:14652003发布日期:2018-06-08 22:01阅读:203来源:国知局
密码设备和编码设备的制作方法

本发明涉及密码设备、编码设备、密码方法、编码方法、计算机程序以及计算机可读介质。



背景技术:

在构建密码设备时,人们不仅要考虑选择合理的密码原语,还要考虑防止边信道。通过边信道,攻击者可以获得关于超出正常输入-输出行为的密码计算的信息。边信道攻击是基于从密码系统的物理实施方式得到的信息,而不仅仅是基于对密码算法和/或暴力(brute force)算法的分析。

一个尤其强大的边信道是所谓的白盒攻击模型。在白盒攻击模型中,攻击者在其实行期间可以完全访问算法的内部。尤其地,攻击者能够观察变量,甚至可以在实施期间修改数据。保护秘密信息(例如,密钥)在白盒模型中尤其困难。

在Goubin和Patarin的论文“DES and the Differential Power Analysis,The“Duplication”method”中给出了如何防止一些边信道攻击的建议。在该论文中,变量v由k个变量v1,…,vk表示,使得v=∑vi。在该论文中考虑的边信道是微控制器的电力消耗。

发明人已经发现,这种解决方案在白盒模型中不够用,并且可能被破解。因此,对在白盒攻击模型下的密码函数的实施方式的阻碍进行改进是一个问题。



技术实现要素:

提供了一种密码设备,所述密码设备被布置为计算依赖密钥的密码函数或输入消息。所述密码设备包括:

-数据存储器,其被布置为存储多个变量,所述密码设备作用于所述多个变量以计算所述密码函数,变量被分布在多个份额上并且在所述数据存储器中被表示为多个编码份额,编码份额是对份额与状态一起的编码,对应于同一变量的多个状态与所述输入消息具有关系,使得存在从所述输入消息到所述多个状态的单射映射,

-表格存储器,其存储多个查找表,查找表采用一个或多个变量的一个或多个编码份额作为输入,所述多个查找表一起形成实施所述密码函数的表格网络,

-控制单元,其被配置为通过将所述多个查找表应用于所述数据存储器中表示的所述变量来将所述密码函数应用于所述输入消息。

如将在说明书中更充分地解释的那样,对密码函数的实施方式的可能攻击是冲突攻击。在冲突攻击中,攻击者试图找到两个不同的输入消息,使得一些内部变量对于这两个不同的输入消息都具有相同的值。这种情况可能会提供关于密钥的信息。

编码份额表示变量的份额和多个状态的份额两者。由于存在从输入消息到多个状态的单射映射,因此不会有使得对应的多个状态的两个集合相同的两个不同的输入消息。由于状态是编码份额的部分,因此不会有使得对应的编码份额相同的两个不同的输入消息。因此,避免了在编码份额上的冲突攻击。由此产生的密码设备在白盒模型下更能抵御攻击。

密码设备还提供了一种针对差分功率分析的保护机制。虽然随机编码禁用了对不同发生值之间的关系的成功的统计分析,但是它们仍然可以允许成功地进行冲突统计。由于后者被阻止,因此差分功率分析类型攻击所使用的统计分析受到干扰。

在实施例中,

-表格存储器存储乘法表格网络,所述乘法表格网络用于将被分布在第一多个份额上并且在所述数据存储器中被表示为第一多个编码份额的第一变量与被分布在第二多个份额上的、在所述数据存储器中被表示为第二多个编码份额的第二变量相乘,所述乘法表格网络作用于所述第一多个编码份额和所述第二多个编码份额,获得表示所述第一变量与所述第二变量的乘积的第三多个编码份额,

-所述乘法表格网络包括用于计算所述第一多个份额的第一份额与所述第二多个份额的第二份额的乘积的一个或多个叉积表格子网络,所述叉积表格子网络根据对应的编码份额加上来自所述输入消息的随机化函数来计算所述第一份额与所述第二份额的所述乘积的总和。

如将在说明书中解释的那样,对变量的计算能够被变换成对编码份额的计算。具体地,被表示为编码份额的两个变量可以相乘。在乘法的一个实施例中,要求叉积,即,第一变量的份额(例如被表示为xi)与第二变量的份额(例如被表示为yj)的乘积。为了混淆这种计算,可以使用随机性源。发明人已经发现,很容易在软件中识别和规避随机数生成器,由此消除这种混淆。可以通过使用来自输入消息的随机化函数来避免这个问题。可以在密码设备中固定来自输入消息的随机化函数。在软件编译的软件实施方式的情况下,可以在创建密码设备时确定随机化函数。由于随机化功能是固定的,因此在其他表格网络中不易识别随机化功能。如果使用相同的输入两次,那么随机化函数将产生相同的结果;因此这个函数在表格网络中并不突出。

确保存在单射映射的一种方法是在使用密钥之前对输入消息进行编码。然后可以在整个计算过程中保持单射映射,直到创建点变量w。对输入消息的编码可以由密码设备外部的计算机来完成。例如,输入消息可以表示被创建为在密码设备处被解密的内容。输入消息可以由密码设备以多个编码份额集合的形式进行接收。然而,编码也可以在密码设备处完成,例如以防止通过冲突攻击暴露密钥。

提供了一种编码设备,其用于与根据权利要求1所述的密码设备一起使用来对输入消息进行编码。所述编码设备包括:

-接收单元,其用于接收所述输入消息,所述输入消息包括多个输入部分,

-编码单元,其被布置为针对所述输入消息的每个部分,

-通过将多个分布函数应用于所述输入消息来将所述输入消息的所述部分分布到多个份额中,以获得所述多个份额,其中,应用于所述分布函数的组合函数等于所述输入消息的所述部分,

-应用来自所述输入消息的单射映射以获得多个状态,多个份额的数量与多个状态的数量相同,

-将所述多个份额中的每个份额与所述多个状态中的对应状态一起编码,获得表示所述部分的多个编码份额。

编码设备可以但不一定被包括在密码设备中。

密码设备和编码设备是电子设备。例如,它们可以是移动电子设备,例如,电话或平板电脑。它们可以是机顶盒、计算机、媒体播放器、电视机等。

本文描述的密码处理和编码的方法可以应用于广泛的实际应用中。这样的实际应用包括数字内容管理、安全银行业务、访问控制、电子存储保护等。

根据本发明的方法可以被实施在计算机上作为计算机实施的方法,或者被实施在专用硬件中,或被实施为两者的组合。用于根据本发明的方法的可执行代码可以被存储在计算机程序产品上。计算机程序产品的范例包括存储器设备、光存储设备、集成电路、服务器、在线软件等。优选地,计算机程序产品包括被存储在计算机可读介质上的非瞬态程序代码单元,所述非瞬态程序代码单元用于当所述程序产品在计算机上被运行时执行根据本发明的方法。

在优选实施例中,所述计算机程序包括计算机程序代码单元,所述计算机程序代码单元适于当所述计算机程序在计算机上运行时执行根据本发明的方法的所有步骤。优选地,所述计算机程序被实施在计算机可读介质上。

本发明的另一方面提供了一种使计算机程序可供下载的方法。当所述计算机程序被上传到例如苹果公司的App Store、谷歌公司的Play Store或者微软公司的Windows Store时以及当所述计算机程序可以从这样的商店下载时,使用这方面的内容。

附图说明

参考附图,仅通过举例来描述本发明的进一步的细节、方面和实施例。为了简单和清楚起见,附图中的元素被图示并且不一定按比例绘制。在附图中,对应于已经描述的元件的元件可以具有相同的附图标记。在附图中,

图1示意性地图示了对变量进行编码的范例,

图2示意性地示出了密码设备的实施例的范例,

图3示意性地示出了编码设备的实施例的范例,

图4a示意性地示出了表格网络的实施例的范例,

图4b示意性地示出了表格网络的实施例的范例,

图5a示意性地示出了密码方法的流程图,

图5b示意性地示出了编码方法的流程图,

图6示意性地示出了针对DES分组密码的流程图,

图7a示意性地示出了根据实施例的包括计算机程序的、具有可写部分的计算机可读介质,

图7b示意性地示出了根据实施例的处理器系统的表示。

图1-图4b和图6中的附图标记列表:

100 M 输入消息

110 w 变量

121、122、123 w0,w1,…,wn-1 份额

131、132、133 s0,s1,…,n-1 份额

141、142、143 x0,x1,…,xn-1 编码份额

151 h 分布映射

152 Σ 单射映射

161、162、163 Enc1,Enc2,,…,Encn-1 编码

200 密码设备

210 控制单元

220 数据存储器

230 表格存储器

231、232、233 表格

240 变量

250 网络接口

300 编码设备

310 接收单元

320 编码单元

410 表格网络输入

420 表格网络

421-424 表格

430 表格网络输出

440 表格网络

450 表格网络

600 针对Des分组密码的流程图

605 输入消息

606 输出消息

具体实施方式

虽然本发明易于受到许多不同形式的实施例的影响,但是在对本公开内容的理解下,在附图中示出的并将在本文中详细描述的一个或多个特定实施例应当被认为是本发明原理的范例且并不旨在将本发明限制于所示出和描述的特定实施例。

在下文中,为了便于理解,在操作中描述了实施例的元件。然而,明显的是,各个元件被布置为执行被描述为由它们执行的功能。

另外,本发明不限于这些实施例,并且本发明在于上文描述的或在相互不同的从属权利要求中记载的每一个新颖特征或特征组合。

图2示意性地示出了密码设备200的实施例的范例。参考图1-图4图示了密码设备200的各方面的可能的实施例。

密码设备200被布置为针对输入消息M计算依赖密钥K的密码函数。密码函数可以被指代为fK。计算结果是输出消息fK(M)。注意,该密钥不必是该函数的显式输入,而是也可以嵌入其中,例如使用部分评价。

依赖密钥的密码函数容易受到所谓的冲突攻击。在这种攻击中,攻击者试图找到这样的两个不同的输入消息M和M':在对密码函数f的计算期间,某些内部的依赖密钥的变量w在某个点处具有相同的值。

考虑一个内部变量w,它取决于输入消息和密钥。我们将输入消息、密钥和变量之间的关系指代为w=gK(M)。假设攻击者已经找到了两条消息M和M',其中,gK(M)=gK(M′)。基于例如互信息分析,可以使用相关攻击来利用这些信息。具体来说,攻击者现在有一个等式gK(M)=gK(M′);任何不满足该等式的K都不会是密钥。此外,由于只有密钥K是未知的,因此求解K可以直接提供关于密钥的信息。为了使这种攻击更糟,许多分组密码都有变量,特别是在早期的轮次中,这取决于相对较少比特的密钥K。

对于不同输入消息具有相同值的内部变量可以使用边信道来显现。例如,通过探查在其上运行计算的硬件。如果以软件运行密码函数,那么冲突攻击尤其有效,这是因为攻击者可以更容易验证某些内部变量是否具有相同值。攻击者可能能够完全控制运行在计算设备(例如,智能手机或台式计算机等)上的软件。

依赖密钥的密码函数例如可以是用于对输入消息M进行加密或解密的分组密码。其他范例包括密钥散列、消息认证函数、流密码等。图6给出了一个分组密码的范例。

从FIPS 46-3(通过引用并入本文)复制的图6图示了具体的DES分组密码和一般的Feistel分组密码。分组密码接收分组密码轮次序列在其上作用的分组密码输入605;在DES的情况下,对于三重DES48有16个轮次。第一分组密码轮次作用于分组密码输入605,接下来的轮次中的每一轮次作用于先前轮次的输出。在分组密码轮次中,轮次函数被应用于先前轮次的输出的部分。在DES为64比特的情况下,分组密码输入具有数据大小。每个分组密码轮次修改其分组密码轮次输入以产生分组密码轮次输出。所有分组密码轮次输入和输出具有相同的数据大小。数据加密标准描述了64比特分组的密钥分组编码。该密钥标称为64比特,但是在轮次密钥K1至K16所依赖的加密中实际仅使用其中的56比特。注意,大部分中间数据取决于输入消息和密钥,这可能会以上述方式被利用。例如,S盒的输出容易受到冲突攻击(图6中没有单独示出S盒)。例如,表示轮次函数的输出的变量(如图6所示为“f”)容易受到冲突攻击。

对图6的分组密码的简单实施方式的潜在改进是对变量w进行编码,可能与状态变量s一起编码。不用直接在w上进行计算,这种实施方式可以在值x=Enc(w,s)上运行。但是,编码本身并不能防止冲突。编码变量x相同的两个输入消息M和M'仍然产生相同的等式gK(M)=gK(M′)。

另一个潜在的改进是将变量w分布在多个份额wj上,例如使得然而,份额wj上同时发生的冲突仍然会导致泄露相同信息量的针对w的冲突。虽然冲突可能会变得更为罕见,但是它们并未被消除。

注意,为了成功实现冲突攻击,密钥是加密的还是隐含地存在于(例如通过部分评价嵌入)实施方式中并不重要。由于冲突攻击绕过了数据的编码,因此它们对于白盒密码来说是尤其令人担忧的,因为它们通常依赖于内部数据(例如,变量、密钥和常量)的编码。

发明人已经认识到存在重大的额外问题。在软件实施方式中,人们可能倾向于使用伪随机数生成器(RNG)来创建w的一些份额,但这并不是可取的。攻击者能够通过用非随机值替换RNG的输出来消除随机性。即使软件实施方式调用真正的随机数生成器,也可能会被截获。在原理上也能够在硬件实施方式上执行这种攻击,尽管这会比较困难。

以下范例说明了这个问题。假依赖设密钥的密码函数的实施方式将变量w分布在n个份额上,但是对大多数份额使用随机值。例如,假设用软件中的随机数生成器产生w0到wn-2,并且虽然从信息理论上讲,变量w似乎被完全分布在n个份额上——在n个份额的子集中没有任何一个给出关于w的任何信息,但是这种选择仍然容易受到冲突攻击。攻击者会固定随机数源以给予针对w0到wn-2的常量值。在这个变化之后,wn-1上的冲突就足以获得关于密钥的信息。仅在wn-1上发生冲突比在所有份额上同时发生冲突要少得多。

注意,通过对同一输入多次运行软件,可以在软件中轻松辨识随机数源。发散运行指示随机数生成器。软件程序的这种分析也可以是自动的。

图1图示了一种对变量w进行编码的方法,该方法能够消除针对该变量的冲突。图1示出了变量110,w,并且图示了如何对w进行编码以用于诸如密码设备200的密码设备,使得避免在w上的冲突。

变量110,w被分布在多个份额wj上。我们将把w的比特大小称为k。在实施例中,份额wj的比特大小等于w的比特大小。不同的变量可能有不同的比特大小。例如,k可以是4或更大。在实施例中,k=4、5、6、7、8或更大。显示份额121、122和123。

份额可以被选择为使得在实施例中,该总和使用XOR函数进行求和,然而,其他选择也是可能的。例如,总和可以使用以2k为模数的算术加法。

更一般地,可以定义组合函数(d(w0,…,wn-1)=w),其将份额(wj)映射到变量(w)。组合函数可以是上面提到的XOR或算术加法。组合函数具有以下性质:从任何单个份额(wk)到变量(w)的、通过固定其他份额(w0,…,wk-1,wk+1,…,wn-1)的值而获得的映射是双射。也就是说,函数d是双射;元素指代固定值。该性质确保没有任何份额的子集可以给出关于w的信息。存在许多这样的组合函数。例如,d可以是份额的任何线性组合其中,系数αj是奇数;使用以2k为模数的算术加法的总和。组合函数可以是多项式。

图1还示出了多个状态sj。所示出的是状态131、132和133。份额121-123的数量与状态131-133的数量相同。状态是将冗余引入变量编码的冗余数据。份额中的每个都以状态中的一种进行布置并被编码成编码份额:xj=Encj(wj,sj)。在实施例中,编码Encj是不同的。例如,可以在编译时随机选择编码Encj。只要编码对于wj是可逆的,也就是说,在知道能够恢复Encj和xj的情况下,就不必严格要求编码是双射的。尽管如此,在实施例中,编码Encj是双射的。后者是实施方式中更实际的选择并简化了分析。一旦决定了哪些变量将使用哪些编码在哪个点处进行编码,就可以简单地调整表格以考虑编码。

图1示出了份额121和状态131通过编码161被编码到编码份额141中。而且,份额122和状态132通过编码162被编码到编码份额142中;份额123和状态133通过编码163被编码到编码份额143中。我们将被编码在一起来表示变量w的状态和份额称为对应于该变量。

多个编码份额是结果,其中示出了编码份额141、142和143。变量w在密码设备200中被表示为多个编码份额。密码设备中既不会出现未编码份额121-123,也不会出现状态131-133。

发明人认识到,通过以特殊方式选择状态,可以避免w上的冲突。也就是说,不存在使得所有编码份额141-143相同的两个不同的输入消息M和M'。

对应于相同变量w的多个状态sj被选择为使得存在从输入消息M到多个状态(Σ(M)=(s0,…,sn-1)的单射映射152(其被指代为Σ)。当且仅当M=M'时,单射映射具有Σ(M)=Σ(M′)的性质。尤其地,可以将Σ选择为双射的,因为这个更严格的条件隐含着单射性。图1示出了多个状态131-133如何取决于输入消息100,M和单射映射Σ,152。

当状态对输入消息M,100进行编码时,不同的M将得到不同的编码变量:x0,…,xn-1。这能够按如下方式完成:选择整数l,使得n·l≥比特大小(M)。这里,n指代状态数量,l是状态的比特大小。份额数量也是n。因此,对应于相同变量w的多个状态sj的总比特大小至少与输入消息M的比特大小一样大。例如随机地从双射函数选择编码Encj。状态的比特大小不需要等于份额的比特大小。

我们将把DES作为第一范例。在DES中,输入消息是64比特。假设内部变量的长为4比特并且被分布在6个份额上。在这种情况下,状态大小必须至少为比特。在这种情况下,变量可以由每个为4+11=15比特的6个编码份额进行编码。在这种情况下,状态的总比特大小将是6·11=66比特。由于66大于输入消息比特大小64,因此映射Σ将是单射的而不是双射的。

也使用DES作为范例,假设内部变量的长为4比特并且被分布在16个份额上。在这种情况下,状态大小必须至少为比特。对于状态使用比特,在这种情况下,编码份额将是4+4=8比特。对应于相同变量的状态的总比特大小是16*4=64比特。由于这等于输入消息比特大小,因此单射映射是双射的。一般而言,如果份额的总比特大小(例如,nk)等于输入消息M的比特大小,那么份额的比特大小可以等于份额的比特大小。

作为另外的范例,考虑分组密码AES,其中,输入消息比特大小为128。如果变量被分布在16个份额上,那么状态可以是128/16=8比特。如果份额也是8比特,那么编码份额将是16比特。

在针对大多数变量或全部变量的密码函数的实施方式中,映射152不需要是显式的。例如,一旦编码变量与输入消息具有所需的单射关系,对编码变量的份额部分wj执行的操作可以同时对保留单射关系的状态部分执行冗余操作。由于计算是在编码域中完成的,因此状态上的计算不能与份额上的计算相分离。

例如,考虑第一变量w1和第二变量和w2两者如以上所指示地被编码为多个编码份额和假设w1和w2上的操作g计算第三变量w3=g(w1,w2)。变量w3被表示为编码份额在实施例中,以编码的状态等于以或以编码的状态。在这种情况下,如果输入与输入消息M具有所需的关系,那么输出w3也是如此。通过这种方式,可以在整个计算过程中保留所需的关系。该操作可以被实施为用于执行操作的表格网络,该表格网络继而可以是实施密码函数的表格网络的子网络。

除了第三变量的状态等于输入中的一个输入的状态以外,还可以应用另外的单射映射Σ2,例如,其中,i指示输入变量中的一个,例如,i=1或2。通过将∑2构造为只能操作一个状态的n个双射的集合,这不会放大表格网络,因为映射可以与现有表格集成在一起。

因此,在实施例中,冗余操作可以是双射操作。可以随机选择双射函数,例如在编译时。在实施例中,对于仅取决于输入消息的变量,可以获得状态作为输入消息的单射函数。对于取决于份额与输入消息具有单射关系的编码变量的变量,可以通过将双射函数的集合(gj)应用于编码变量的对应份额来获得新份额可以使第三变量的状态取决于输入变量的两种状态,并且仍然保持与输入消息的所需关系。然而,这可能会扩大表格网络。

初始变量(例如,从输入消息直接获得的变量)可以由密码设备200以正确的编码形式接收。替代地,设备200可以包括如下所述的编码设备。

变量w的编码确保在运行密码函数期间编码值不会发生冲突。因此,在这一点上不可能发生冲突攻击。如果所有取决于输入消息的变量以及取决于密钥的变量在整个密码函数的计算过程中都以这种方式进行编码,那么可以完全避免冲突。此外,该系统简单、高效、可证明且简洁。

在实际的实施例中,除了通过编码份额的表示以外,不会有w的其他表示。此外,如果更多敏感变量以这种方式得到保护,那么保护会更有效。优选地,取决于密钥和输入消息两者的所有变量都受到保护。为了防止冲突攻击,在执行使用密钥的操作之前,不要求将输入消息表示为编码份额。然而,即使在使用密钥之前,通过使输入消息被编码为多个编码份额集合来简化以下操作:确保单射映射存在且被保持。

回到图2;密码设备200包括数据存储器220,数据存储器220被布置为存储多个变量,密码设备作用于所述多个变量以计算密码函数。变量240在数据存储器220中被表示为多个编码份额。示出了编码份额241、242和243。这些变量都被分布在多个份额上,并且每个份额与状态一起编码。如参考图1所解释的,从输入消息(M)到多个状态存在单射映射(Σ)。

密码设备200包括存储多个查找表的表格存储器230。图2中示出了查找表231、232和233。查找表中的至少一些将一个或多个变量的一个或多个编码份额作为输入。在实施例中,查找表将来自两个不同变量的至少一个编码份额作为输入。多个查找表一起形成实施密码函数的表格网络。

从白盒密码本身已知表格网络。例如参见Chow等人的“White-box cryptography and a AES implementation”。图4a中示出了表格网络420的范例,在这种情况下是用于计算叉积的表格网络。

表格网络接收一个或多个输入(例如,输入410)并且产生一个或多个输出(例如,输出430)。在表格网络420中示出了多个查找表;示出了表格421-421。表格直接从输入410和/或其他表格的输出中取得输入。表格可能需要一个输入、两个输入或两个以上的输入。

由Carlet等人在“Higher-Order Masking Schemes for S-boxes”中提供了将未编码变量w上的计算转换为被编码为多个份额的变量w上的计算的便利方法。该论文不讨论冲突攻击或用状态进行编码。该论文还被称为Carlet。Carlet不会阻止被编码为多个份额的变量发生冲突。

下文解释了如何对变量w进行计算,例如如何计算函数值S(w)可以被转换为对以多个份额进行编码的变量w上的计算。函数S可以是计算密码函数的任何内部步骤,例如,加法、乘法、S盒等。我们将展示如何构建在多个份额上计算S(w)的表格网络。首先,我们将在这里考虑S具有单个输入w的情况。多个状态能够类似地进行处理。我们也将首先忽略状态,稍后我们将展示如何能够添加状态。

如果w由n个份额w0,…,wn-1表示,那么我们也希望用n个份额来表示S(w),以便为结果变量提供与w相同的保护。这是可能的,对于任何函数,通过使用以下事实。

为了说明,我们首先假设S(w)的值与w一样也是k比特数。k比特数能够被认为是有限伽罗瓦域的元素,并且函数S作为上的函数。在有限域中的所有函数都是多项式,因此,对于上的任何函数S,存在系数使得对于任何w,以下公式成立:

多项式可以被表达为如下的份额计算。设份额由X=(x0,…,xn-1)和Y=(y0,…,yn-1)给出。为了简单起见,我们将假设份额的总和等于未编码变量。X和Y的总和能够用份额xi+yi来编码。纯量倍数αX可以用份额αxi来编码。最后,设Z是X与Y的乘积。对于0≤i<j≤n-1,定义值ri,j和rj,i

对于ri,j,取的随机元素,例如,通过选择随机的k比特串。在实施例中,通过为从输入消息M到的随机化函数Ri,j选择编译时间并且设置ri,j=Ri,j(M)来获得针对ri,j的随机数。后者具有在运行时避免依赖随机数生成器的优点。只有在构建表格网络(被称为编译)时,才需要随机性的源。注意,Carlet在运行时期间依赖于随机性。这会在运行期间打开Carlet以操纵随机数源。具体而言,可以截获随机数生成器并用常数值替换。

考虑rj,i=(xiyj+ri,j)+xjyi;本文中的计算顺序很重要并且用括号来指示。现在,对于0≤i≤n-1,取

叉积表格子网络可以计算rj,i。这些表格计算两个叉积xiyj和xjyi

在实施例中,计算用于计算ri,j的随机化函数Ri,j被实施为以输入消息作为输入的表格网络。这避免了在运行期间需要随机数源。

份额zi现在表示X与Y的乘积。使用加法、标量乘法和乘法运算,针对S的多项式表示可以被表达为对份额的操作。对份额的操作继而可以被实施为查询表格,将一个或多个份额和/或随机数作为输入。

在图4a中图示了用于计算rj,i的可能的表格网络420。表格421-424合作计算rj,i。对表格网络420的输入被示为参考410。在参考430处示出表格网络420的输出。

例如,表格421和422可以被布置为使它们的输入相乘,而表格423和424可以被布置为使它们的输入相加。注意,表格中的每个可能使用不同的编码。

图4b示意性地示出了乘法表格网络440的实施例的范例。可以使用上面给出的公式来构建乘法表格网络440以计算Z=(z0,…,zn-1)。乘法表格网络440被布置为将在数据存储器220中被表示为第一多个编码份额(xj)的变量X与在数据存储器220中被表示为第二多个编码份额(yj)的第二变量Y相乘。乘法表格网络作用于第一多个编码份额(xj)和第二多个编码份额(yj)并且获得表示第一变量与第二变量的乘积的第三多个编码份额(zj)。乘法表格网络440可以是用于计算密码函数的表格网络的部分。

乘法表格网络440可以包括计算叉积xiyj的叉积表格子网络。在实施例中,叉积成对计算xiyj+xjyi。例如,乘法表格网络440可以包括表格网络420。乘法表格网络440还可以包括表格网络450以计算一个或多个随机化函数Ri,j。在图4b中,表格网络450取决于输入消息110。该依赖性已经用虚线来指示,以指示可以通过中间数据(例如,被存储在数据存储器220中的变量)获得依赖性。表格网络440可以获得其输入并将其输出存储在数据存储器220中。

作用于份额的表格可以被变换为作用于编码份额的表格。定义s和t,使得对于编码份额x,我们有Enc(t(x),s(x))=x。函数s和t分别从x获得状态和份额。定义针对t(x)的表格T。然后,Enc′(T(t(x)),P(s(x)))定义针对x的表格,该表格实施针对x的份额部分的表格T以及针对状态部分的函数P。函数P是冗余的,并且可以在创建表格网络时(例如在编译时)被选择。例如,P可以是身份函数。类似的构造对于多个输入是可能的。这里使用的编码Enc也被称为输入编码。编码Enc'被称为输出编码。只要用于表格的输出的输出编码与将所述输出用作输入的下一表格的输入编码相同,就不需要表格的输入编码与输出编码相同。

数据存储器220和表格存储器230可以是电子存储器。它们可以是同一存储器的两个部分。表格存储器230可以是非易失性存储设备。数据存储器220可以是易失性存储设备。

密码单元200包括控制单元210,控制单元210被配置为通过将多个查找表应用于数据存储器中表示的变量来将密码函数应用于输入消息。例如,表格存储器230可以包括指示将表格应用于哪些变量的顺序的指令。

密码单元200可以包括网络接口250。网络接口250可以被布置为通过计算机网络接收编码数据。例如,密码设备200可以接收加密数据,例如,由密码设备200解密的加密内容。例如,如上所述,通过网络接口250接收的输入可以被表示为编码份额。这是不必要的,因为编码可以在设备200内部完成。

图3图示了编码设备300的范例。编码设备300被布置为对输入消息M进行编码以用于与根据权利要求1所述的密码设备一起使用。编码设备300包括用于接收输入消息M的接收单元。输入消息包括多个输入部分M=(m0,m1,…)。例如,多个部分可以是半字节或字节。在实施例中,部分的比特大小在4至8之间(包括端值)。消息M可以是消息部分的串联。

编码设备300包括执行编码的编码单元320。编码单元320对输入消息M的每个部分进行单独编码。因此,对于输入消息M的每个部分mi,编码单元执行以下操作:

通过对输入消息应用多个分布函数来将输入消息M的部分mi分布到多个份额中,以获得多个份额对应用于M的分布函数进行应用的组合函数等于输入消息的部分mi:尤其地,如果组合函数是XOR或算术和,那么分布函数的总和等于输入消息M的部分mi,使得

例如,在存在偶数个份额的情况下,可以将分布函数选择为:对于i≠j为以及在该范例中,加法是XOR。许多其他可能性也是可能的。例如,针对给定部分的所有分布函数中除了一个以外都可以被随机选择,并且最后一个可以被计算为校正项,例如,M到mi的投影函数减去其他分布函数。

编码单元320还应用来自输入消息M的单射映射Σi以获得多个状态多个份额的数量与多个状态的数量相同。在实施例中,这个选择清楚地保证了输入消息M被编码在状态中。所有份额的串联是输入消息M上的单射映射。

最后,将多个份额的每个份额与多个状态中的对应状态一起编码,获得表示部分mi的多个编码份额例如,编码单元320可以计算

在该步骤之后,部分mi被编码为多个编码份额使得整个输入消息被编码为编码份额中的状态的部分。

实施密码函数的表格网络被布置为保持输入消息与对应于变量的编码份额的状态之间的关系。由于编码变量的集合的冲突隐含该状态的冲突,因此这意味着与不同输入消息的冲突是不可能的。

作为额外的范例,用于将M映射到编码单元中的状态的单射映射Σi可以包括多个较小的双射函数。例如,单射映射Σi可以包括多个状态函数获得多个状态包括将多个状态函数应用于各自的多个输入部分其中,多个状态函数是双射的。例如,这是创建双射函数(因此也是单射函数)的特别简单的方法。如果需要填充更多的状态,那么可以添加更多的状态函数,在这种情况下,函数Σi变成严格单射而不是双射。

典型地,设备200和300均包括运行被存储在设备200和3000处的适当软件的微处理器(图1-图4中未示出);例如,软件可以已经被下载和/或被存储在对应的存储器中,例如,诸如RAM的易失性存储器或诸如闪速存储器的非易失性存储器(图1-图4中未示出)。替代地,设备200和3000可以全部或部分地以可编程逻辑单元来实施,例如被实施为现场可编程门阵列(FPGA)。设备200和300可以全部或部分地被实施为所谓的专用集成电路(ASIC),即,为其特定用途定制的集成电路(IC)。例如,电路可以用CMOS来实施,例如使用诸如Verilog、VHDL等的硬件描述语言。

在实施例中,设备200包括数据存储电路和表格存储电路(例如,电子存储器)以及控制单元电路。这些电路实施本文中描述的对应单元。这些电路可以是处理器电路和存储电路,处理器电路运行以电子方式表示在存储电路中的指令。这些电路也可以是FPGA、ASIC等。该系统可以包括额外的电路,例如,网络接口电路等。

图5a示出了说明密码方法500的流程图,该密码方法500被布置为针对输入消息M计算fK(M)依赖密钥K的密码函数f。密码方法500包括:

-存储510多个变量w,密码设备作用于所述多个变量w以计算密码函数,变量w被分布在多个份额wj上并且在数据存储器中被表示为多个编码份额xj,编码份额是对份额wj与状态sj一起的编码xj=Encj(wj,sj),对应于同一变量w的多个状态sj与输入消息M具有关系,使得存在从输入消息M到多个状态Σ(M)=(s0,…,sn-1)的单射映射Σ,

-存储520多个查找表,查找表采用一个或多个变量的一个或多个编码份额作为输入,所述多个查找表一起形成实施所述密码函数的表格网络,

-通过将所述多个查找表应用于所述数据存储器中表示的所述变量来将所述密码函数应用530于所述输入消息。

图5b示出了说明用于对输入消息M进行编码以与根据权利要求1所述的密码设备一起使用的编码方法550的流程图,所述编码方法包括:

-接收560输入消息M,所述输入消息包括多个输入部分M=(m0,m1,…),

-针对所述输入消息M的每个部分mi

-通过将多个分布函数应用于所述输入消息来将所述输入消息M的所述部分mi分布570到多个份额中,以获得所述多个份额其中,应用于所述分布函数的组合函数等于所述输入消息的所述部分mi

-应用580来自所述输入消息M的单射映射Σi以获得多个状态多个份额的数量与多个状态的数量相同,

-将所述多个份额的每个份额与所述多个状态中的对应状态一起编码590,获得表示所述部分mi的多个编码份额

方法550对于如何针对输入消息的每个部分分布工作有几种选择。例如,方法550可以首先计算针对所有部分的份额,然后计算针对所有部分的状态,并且最终对所有部分进行编码。然而,方法550也可以一次计算针对一个部分的份额、状态和编码。其他组合是可能的。

对于本领域技术人员来说明显的是,运行这些方法的许多不同方式也是可能的。例如,能够改变步骤的顺序或者可以并行地运行一些步骤。此外,在两个步骤之间可以插入其他方法步骤。插入的步骤可以表示对诸如本文描述的方法的细化,或者可以与该方法无关。例如,步骤570和580可以至少部分地并行运行。此外,在下一步骤开始之前,给定的步骤可能还没有完成。

可以使用软件来运行根据本发明的方法,所述软件包括用于使处理器系统执行方法500或550的指令。软件可以仅包括由系统的特定子实体采用的那些步骤。软件可以被存储在诸如硬盘、软盘、存储器、光盘等的合适的存储介质中。软件可以作为信号沿着电线进行发送或者进行无线发送,或者使用数据网络(例如,互联网)进行发送。软件可以供下载和/或在服务器上远程使用。可以使用被布置为配置可编程逻辑单元(例如,现场可编程门阵列(FPGA))以执行根据本发明的方法的比特流来执行本方法。

应当意识到,本发明也延伸到适于将本发明付诸实践的计算机程序,尤其是载波上或载波中的计算机程序。程序可以为源代码、目标代码、代码中间源以及为部分编译形式的目标代码的形式,或者为适合用于在根据本发明的方法的实施方式中使用的任何其他形式。涉及计算机程序产品的实施例包括对应于所阐述的方法中的至少一种的处理步骤中的每个处理步骤的计算机可执行指令。这些指令可以被细分成子程序和/或被存储在一个或多个可以被静态或动态链接的文件中。涉及计算机程序产品的另一实施例包括对应于所阐述的系统和/或产品中的至少一个的器件中的每个器件的计算机可执行指令。

图7a示出了根据一个实施例的具有包括计算机程序1020的可写部分1010的计算机可读介质1000,计算机程序1020包括用于使处理器系统执行密码方法或编码方法的指令。计算机程序1020可以作为物理标记或借助于计算机可读介质1000的磁化而被实施在计算机可读介质1000上。然而,也可以想到任何其他合适的实施例。此外,将意识到,虽然计算机可读介质1000在这里被示为光盘,但是计算机可读介质1000可以是任何合适的计算机可读介质,例如,硬盘、固态存储器、闪速存储器等,并且可以是不可记录的或可记录的。根据实施例,计算机程序1020包括用于使处理器系统执行所述密码方法或编码方法的指令。

图7b示出了根据实施例的处理器系统1140的示意图。处理器系统包括一个或多个集成电路1110。图7b示意性地示出了一个或多个集成电路1110的架构。电路1110包括处理单元1120(例如,CPU),以用于运行计算机程序部件以运行根据实施例的方法和/或实施其模块或单元。电路1110包括用于存储编程代码、数据等的存储器1122。存储器1122的部分可以是只读的。电路1110可以包括通信元件1126,例如,天线、连接器或两者等。电路1110可以包括用于执行在该方法中定义的部分或全部处理的专用集成电路1124。处理器1120、存储器1122、专用IC 1124和通信元件1126可以经由互连1130(例如,总线)彼此连接。处理器系统1110可以被布置用于分别使用天线和/或连接器进行接触式和/或非接触式通信。

应当注意,上述实施例对本发明进行说明而非限制,并且本领域技术人员将能够设计出许多替代实施例。

在权利要求中,置于括号内的任何附图标记均不应被解读为对权利要求的限制。动词“包括”及其词性变化的使用不排除权利要求中记载的那些以外的其他元件或步骤的存在。元件前的词语“一”或“一个”不排除多个这样的元件的存在。本发明可以借助于包括若干不同元件的硬件,以及借助于被适当编程的计算机来实施。在列举了若干单元的装置型权利要求中,这些单元中的若干可以由同一项硬件来实施。某些措施被记载在互不相同的从属权利要求中的事实并不指示不能有利地使用这些措施的组合。

在权利要求中,括号中的参考标记指示实施例的附图中的附图标记或实施例的公式,因此提高了权利要求的可理解性。这些参考标记不应被解释为对权利要求的限制。

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