在白盒场景中的椭圆曲线点乘设备和方法与流程

文档序号:19636274发布日期:2020-01-07 12:02阅读:515来源:国知局
在白盒场景中的椭圆曲线点乘设备和方法与流程

本发明涉及点乘设备、点乘方法以及计算机可读介质。



背景技术:

在许多应用中,软件用于对消息进行签名,其目的是证明消息和签名者的真实性。签名者使用私钥和消息摘要对消息进行签名。接收消息和签名的任何人都能够使用发送者的公钥来验证签名。安全签名系统应具有以下属性:

1、在给定公钥和其他公共系统参数的情况下,应很难找到私钥。

2、摘要应是很难找到冲突和原像的加密哈希。这样可以防止攻击者(例如通过在其自己的消息上重复使用来自发送者的旧消息的签名)冒充发送者。

3、私钥应保持私密,并且只有发送者才能知道。

前两个要求是黑盒安全性的要求。可以相信,诸如椭圆曲线数字签名算法(ecdsa)的签名方案可以满足这些要求。

第三个要求具有不同的性质,因为私钥可能有很多方式泄漏。以下是潜在泄漏的非详尽列表。

·系统可能要求签名者针对每个新签名输入签名者的私钥。如果系统上安装了密钥记录器,则攻击者就能够在签名者键入私钥时读取私钥。

·私钥可能被存储在文件系统上。即使正确设置了文件访问权限,系统上的恶意根用户也可能读取私钥。

·私钥可能以加密文件的方式被存储在文件系统上,在文件系统上,解密文件需要键入密码。设法安装了密钥记录器并有权限访问该文件的攻击者能够获得私钥。

·私钥可能以加密形式被存储在签名程序内部,并且仅在运行期间才能被解密。解密密钥也被存储在程序内部,并且只有当用户输入正确的密码时解密才能被激活。现在,攻击者能够通过利用操作系统中的漏洞来读取其他用户进程的内存,从而能够从内存中读取经解密的私钥。

期望保护诸如ecdsa协议的加密协议的实施方式以防私钥泄漏。



技术实现要素:

发明人认识到,ecdsa协议中的许多漏洞是由ecdsa所包括的椭圆曲线上的点乘运算引起的。此外,椭圆曲线算术是许多其他加密协议的组成部分,这使得在白盒模型中更加期望具有提高的抵御攻击能力的点乘实施方式。

提供了一种用于计算乘数与椭圆曲线上的基点之间的所述椭圆曲线上的点乘以供在加密协议中使用的电子点乘设备。所述设备包括:

存储设备,其存储所述椭圆曲线上的所述基点和多个预先计算的辅助点,

输入接口,其被布置为接收输入消息的基哈希,

处理器电路,其被布置为:

从所述基哈希导出采取多个联合编码的第一集合和第二集合的形式的多个导出的哈希和所述乘数,所述第一集合包括多个导出的哈希,所述第一集合中的导出的哈希中的每个都是与所述乘数联合编码的,所述第二集合也包括多个导出的哈希,所述第二集合中的导出的哈希中的每个都是与所述多个导出的哈希中的至少另一个联合编码的,

根据多个联合编码的所述第一集合来计算盲基础乘数,

根据多个联合编码的所述第二集合来计算多个盲辅助乘数,所述多个盲辅助乘数对应于所述多个辅助点,

通过计算以下两项的点加法来执行盲椭圆曲线算术,以获得所述乘数与所述基点的所述点乘:

所述盲基础乘数与所述椭圆曲线上的所述基点的点乘,以及

盲辅助乘数与辅助点的多个点乘。

有趣的是,所需的点乘kg可以被转换为与基点g以及多个额外的辅助点的多个点乘。攻击系统要求攻击者要么找到形成乘法kg的乘数k,要么确定辅助点与基点之间的关系。这两种方法都需要解决椭圆曲线上的离散对数问题,这被认为是不切实际的,这是因为例如与受加密协议保护的资产相比需要更多的资源。替代地,攻击者可以尝试使用错误攻击来攻击系统,然而,可以使用编码系统来对付这些错误。细节将在下面进一步说明。

有趣的是,在执行所述盲椭圆曲线算术期间,所述盲基础乘数和所述多个盲辅助乘数是以明文格式表示的。这意味着对于椭圆曲线算术,不需要采取白盒实施方式的形式的保护。发明人已经发现,用白盒保护椭圆曲线算术很难,这是因为众所周知椭圆曲线算术对侧信道攻击非常敏感。通过将椭圆曲线乘法分布在多个辅助点上,可以解决椭圆曲线加密中的这一弱点;得到白盒模型中抵御力提高的实现方式。

有趣的是,实施例将白盒技术(例如,通过查找表对编码数据进行操作)与盲化(例如,将第一明文计算替换为另一第二明文计算)相结合,使得可以从第二计算结果导出期望的第一计算结果。

点乘设备是电子设备,并且可以例如是诸如移动电话的移动电子设备。点乘设备还可以例如是机顶盒、智能卡、计算机等。

本文描述的点乘设备和方法可以在广泛的实际应用中应用。这样的实际应用包括包含椭圆曲线计算的加密协议,特别是ecdsa协议。ecdsa可以用于例如在要求认证、数据完整性等的应用中对数据进行签名。这样的应用可以包括消息收发应用、邮件程序、金融应用等。

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

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

本发明的另一方面提供了一种使计算机程序可用于下载的方法。这方面内容将用于计算机程序被上载到例如苹果公司的app商店、谷歌公司的play商店或微软公司的windows商店中并且所述计算机程序可以从这样的商店被下载时的情况。

附图说明

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

在附图中:

图1示意性地示出了点乘设备的实施例的示例,

图2示意性地示出了导出多个联合编码的第一集合的实施例的示例,

图3示意性地示出了导出多个联合编码的第二集合的实施例的示例,

图4示意性地示出了ecdsa设备的实施例的示例,

图5示意性地示出了点乘方法的实施例的示例,

图6示意性地示出了ecdsa签名方法的实施例的示例,

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

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

附图标记列表

100点乘设备

110存储设备

120输入接口

122基哈希

130第一编码计算网络

131盲基础乘数

135第二编码计算网络

136多个盲辅助乘数

140椭圆曲线算术单元

141点乘结果

150第三编码计算网络

151盲乘数

155第四编码计算网络

156盲基哈希

157去盲值

160第六编码计算网络

161ecdsa签名的第二组成部分

400ecdsa设备

具体实施方式

虽然可以以许多不同形式的实施例来实施本发明,在附图中示出了这些实施例并且在本文中的一个或多个特定实施例中描述了这些实施例,但是应当理解,本公开内容被认为是本发明的原理的示例且并不旨在将本发明限于所示出和所描述的特定实施例。

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

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

发明人发现,椭圆曲线计算难以保护,这是因为该计算非常容易受到侧信道攻击。发明人发现,即使最初是针对灰盒模型,侧信道攻击也可能经常成功地应用于白盒模型。即使实现了对椭圆曲线计算的直接白盒实施方式(对编码数据进行操作),现有或将来的侧信道攻击也很有可能破坏这种直接白盒实施方式。在灰盒模型中,攻击者可以访问一些部分侧信道信息,例如,设备的电源使用情况。在白盒模型中,攻击者可以完全访问内部状态。

椭圆曲线计算用于各种加密算法中,其中例如可能期望向系统的用户(例如,白盒模型中的攻击者)隐藏执行的ecc点乘。采用椭圆曲线计算的加密算法的示例包括:椭圆曲线diffie-hellman(ecdh)密钥协议、椭圆曲线集成加密方案(ecies)、椭圆曲线数字签名算法(ecdsa)、爱德华兹曲线数字签名算法(eddsa)、ecmqv密钥协议方案以及ecqv隐式认证方案。

下面的实施例集中于椭圆曲线数字签名算法(ecdsa)。ecdsa是一种重要的签名算法,为此,期望获得在白盒模型中具有提高的抵御力的实施方式。优选地,实际上并没有保护椭圆曲线签名算法的椭圆曲线算术的白盒。然而,下面公开的点乘技术也可以在其他ecc算法中使用。

发明人发现了一种通过将针对单个曲线点的椭圆曲线计算划分到多个曲线点上来对编码数据执行ecc算术的方法。虽然可以以白盒格式(例如对编码数据进行操作来)完成多点算术的运算,但是也可以在明文中执行后一种计算。有趣的是,椭圆曲线乘法的安全性与椭圆曲线的离散对数问题有关,该离散对数问题被认为是困难的问题。

下面将描述ecdsa签名系统以及针对ecdsa的许多已知攻击和可能的对策。如果没有对策,这些攻击可能会让攻击者能够检索到私钥。接下来,公开了一些更高级的攻击,这些攻击甚至在针对较不高级的攻击所使用的对策时也会起作用。期望找到一种也可以抵御这些更高级的攻击的ecdsa实施方案。

下面我们简要描述ecdsa。在ecdsa的实施例中,我们有:

·在有限域fp上具有p个元素的椭圆曲线e,其中,o∈e表示身份元素。

·在上的素数阶q的点g,即,[q]g=o,其中,[q]g表示将g本身增加q倍。

·函数

·哈希函数

·签名者的私钥和公钥p=[x]g∈e

ecdsa算法的安全性在于难以从p中获得x的事实。这就是ecdsa假设。为了对消息m进行签名,可以执行以下步骤:

·计算h=h(m),其中,h是加密哈希函数(例如,sha256)。

·选择随机并计算

·[k]g=(([k]g)1,([k]g)2)和r=μ(([k]g)1))

·

·(如果r=0或s=0,则用新的k来进行重复)

·签名是(r,s)

该函数μ将椭圆曲线点(例如,椭圆曲线点坐标)映射为整数。例如,μ可以对椭圆曲线点的x坐标进行modq操作。贯穿各种实施例,椭圆曲线点可以是压缩的椭圆曲线点。在压缩的椭圆曲线点中,仅保留y坐标的符号,或者根本不保留y坐标。

为了验证签名验证,在接收到m和签名(r,s)时,可以在e上计算u=s-1h(m)modq,v=s-1rmosq和点c=(c1,c2)=[u]g+[v]p。当且仅当μ(c1)=r时,改签名才有效。注意,签名验证操作不是敏感操作,因为不会处理任何秘密数据。

抓取攻击。为了攻击ecdsa,攻击可能会尝试从内存中抓取x或k。如果攻击者知道用于利用哈希h=h(m)来计算消息m的签名(r,s)所使用的k值,那么他就能够以x=r-1(ks-h)modq计算出私钥x。因此,对付简单地从程序内存中抓取k值的攻击非常重要。这可以通过确保程序内存中永远不会出现k的明文来完成。这也适用于x值。

例如,为了防止从内存中读取秘密值x的攻击,可以尝试对x进行编码并仅使用经编码的x进行计算。类似地,为了防止从内存中读取秘密值k的攻击,可以尝试直接以编码形式生成k并仅使用经编码的k进行计算。

发生了另一个问题,如果使用相同的k来生成两个签名,则密钥x将直接遵循:

攻击者能够通过用较早的输出或固定值替换随机数生成器的输出来实现此目的。这种情况在k被编码时也适用:用来自较早运行的k的编码值或固定值替换k的编码值。攻击者并不知道k的值的事实并不重要。

因此,重要的是,数值k一定不能被攻击者预测。例如,随机数生成器通常用于生成k。遗憾的是,在白盒攻击的背景下使用随机数生成器很困难。攻击者可能试图用返回固定值的例程替换随机数生成器。即使k被编码,攻击者也可以尝试重播在先前运行中获得的k值。

例如,假设随机数生成器调用一天中的时间函数来生成种子,则攻击者可以将返回值替换为固定值,从而有效地使k成为常数。解决此问题的方法是使用确定性算法根据输入消息m和任选的私钥x来计算适当的k。在实施例中,伪随机数生成器的参数是在编译时随机选择的,因此它们对于每种实施方式都是不同的。将输入消息或其哈希映射到随机乘数以替换随机数生成器的函数被称为去随机化函数。使用去随机化函数可以使实施方式的签名生成输入的确定性函数。

参数k特别易受攻击的第二个原因是必须将其使用两次并然后忘记:

·在计算r=μ((kg)1)中,

·在计算s=(h+rx)k-1中。

下面讨论了许多更高级的攻击。在第一次攻击中,以在椭圆曲线上对[k]g的计算为目标。对椭圆曲线上[k]g个点g的计算通常是经由蒙哥马利算法来完成的:蒙哥马利算法中的每个步骤都使用k的一个或最多几个位。通过主动修改这些位并观察结果输出如何变化,能够轻松确定k的所有位的实际值,即使这些位已经被编码也是如此。

能够使用错误攻击以如下方式对确定性k与k的线性或块状非线性编码结合进行攻击。攻击者四次馈入相同的消息。

·第零次运行:未注入错误,产生签名(r0,s0)

·第一次运行:在编码k0(的一个块)中注入一些错误,给出了编码的k1=k0+δ1并产生签名(r1,s1)

·第二次运行:(例如在另一个块中)在编码的k中注入另一个错误,给出了编码的k2=k0+δ2并产生签名(r2,s2)

·第三次运行:在编码的k的方式注入错误的加和,产生了签名(r3,s3)

如果编码是线性的或者两个块都没有干扰,则第三次运行对k的效果是第一次运行和第二次运行的效果之和:δ3=δ1+δ2。然后能够通过线性代数找到密钥x:

块编码通常在白盒编码中使用,因为例如乘数k的基础值的位大小可能比能够容纳的最大编码的位大小大得多。这些攻击表明需要保护在ecdsa计算中使用的乘数k,并且尤其是需要在ecdsa乘法期间保护乘数k。

图1示意性地示出了点乘设备100的实施例的示例。点乘设备100被布置为计算乘数k与椭圆曲线e上的基点g之间的椭圆曲线e上的点乘kg。在椭圆曲线上指出的上述点乘是许多加密协议所需的原语。特别地,点乘设备100可以用于计算ecdsa签名。关于图4详细描述了这样的示例。

点乘设备100包括存储设备110。存储设备110存储点乘所需的参数,例如,从在点乘中使用的加密协议导出的参数。特别地,存储设备100存储椭圆曲线上的基点g以及多个预先计算的辅助点gi。在实施例中,将点乘kg转换为点g和gi的多个点乘,使得难以从与这些点一起使用的乘数中恢复k。与点乘设备100的其他部分相比,都使得椭圆曲线算术实施方式受到更少的保护,并且甚至以明文方式(inplain)。特别地,在实施例中,椭圆曲线算术不是以白盒方式实施的,例如,不对编码数据进行操作。除了所提到的曲线点之外,存储设备110可以包括额外数据;本文给出额外数据的一些示例。例如,如果点乘设备100使用对编码数据进行操作的表网络来实施编码部分(例如,白盒实施的部分),则可以将表网络中的查找表存储在存储设备110中。

点乘设备100还包括输入接口120,输入接口120被布置为接收输入消息m的基哈希h,122。例如,输入接口120可以是由某个应用程序所使用的应用程序编程接口(api)。例如,点乘设备100可以被实施为更大的应用(例如,ecdsa应用)的子例程。点乘设备100还可以被实施为协作应用(例如,在需要时由例如ecdsa应用调用的库)。

在实施例中,点乘设备100包括哈希单元,该哈希单元被布置为接收输入消息m并计算哈希h,122。如下所述,哈希的输出和点乘的输入可以由输入接口120形成。由于基哈希不是保密的,因此可以以明文完成对基哈希122的计算。哈希功能单元可以适于以编码的方式计算哈希。但是后者不是必需的。输入接口120可以以明文格式接收输入消息。

在实施例中,输入接口可以包括通信接口或与通信接口配合,该通信接口用于获得基哈希122或输入消息m。例如,通信接口可以是有线接口,例如,有线连接。例如,通信接口可以包括连接板或连接端口。通信接口还可以是数字有线网络连接,或无线网络连接,或其混合等。例如,通信接口可以包括天线。

点乘设备100包括被布置用于椭圆曲线点乘的处理器电路。椭圆曲线点乘的运行是在处理器电路中实施的,其示例如下所示。图1示出了可以是处理器电路的功能单元的功能单元。例如,图1可以用作处理器电路的可能的功能组织方式的蓝图。处理器电路未与图1中的单元分开显示。例如,图1所示的功能单元可以全部或部分地被实施在硬件中,例如,多个半导体门协作以实施图1所示的一个或多个特定功能单元。例如,图1所示的功能单元可以全部或部分地被实施在计算机指令中,该计算机指令被存储在点乘设备中并且能由点乘设备的微处理器运行。在混合式实施例中,功能单元部分地被实施在硬件中(例如被实施为协处理器,例如,密码协处理器)并且部分被实施在软件中,该软件在点乘设备上存储和运行。电子点乘设备100可以被配置用于加密协议,例如,ecdsa签名操作。

点乘设备100被配置为从基哈希h,122导出采取多个联合编码的第一集合的形式的多个导出的哈希hi和乘数k。第一集合包括多个导出的哈希。第一集合中的导出的哈希中的每个都是与乘数k联合编码的。在公式中:ai=enc(k,hi),i=0…2n-1,221-223。例如,点乘设备100(例如,处理器电路)可以被配置有第一编码计算网络130,第一编码计算网络130被布置为计算多个联合编码的第一集合。

图2示意性地示出了导出多个联合编码的第一集合的实施例的示例。例如,第一编码网络130可以使用图2的系统。图2中示出了基哈希201(例如,基哈希122)与其自身的联合编码。在图2和图3中使用了如在201中上下放置的两个块以指示联合编码。

当提到编码数据时,应当理解,使用秘密编码。例如,在编译时,为各种数据项选择编码。例如,这种编码可以是双射函数,并且可以是随机选择的。当数据是明文的或明文格式时,数据以公共编码表示。例如,程序中用ascii表示的字母是明文的,因为ascii表示是公共的。但是,如果通过私有或秘密双射来映射字母,将8位映射到8位,则字母将被编码。

标记“enc”表示利用私有编码进行的编码。可以在编译时随机选择这样的编码。例如,编码可以是将特定大小的比特序列映射到相同大小的比特序列的双射。应当理解,每种编码可以是不同的编码,因为接收、操作或产生这种编码数据的编码网络可以适于任何特定的编码。使用多种不同的编码会使对编码的攻击更加困难。即使在不使用超级脚本或子脚本的情况下使用相同的标记“enc”,也应当理解,每个脚本也可能是(优选是)不同的编码。

例如,与其自身201联合编码的基哈希122可以被标记为enc(h,h)。联合编码可以是逐块联合编码,其中,将输入划分为块并且将较小的联合编码应用于第一输入的块和第二输入的块。编码可以是按字节或半字节的联合编码。例如,对第一数据项a和第二数据项b进行操作的联合编码enc可以包括更小编码的序列(例如,enci),第一数据项和第二数据项是更小数据项的第一序列ai和第二序列bi;两个序列优选具有相同的长度。较小编码enci可以将ai和bi联合编码为例如enci(ai,bi)。编码enci可以是双射。例如,enci可以被实施为查找表。例如,更小数据项ai和bi可以是半字节或字节,并且enci可以是从8位到8位或从16位到16位的双射。这些是方便的数字,但是在其他块大小上的编码也是可能的,例如以3位或5位进行编码。更小编码enci可以例如在编译时进行随机选择。

例如,在实施例中,第一编码网络130以明文方式(例如以公共编码方式)接收基哈希122,并且首先对基哈希122进行联合编码。例如,基哈希可以作为半字节序列被接收,每个半字节通过更小编码与其自身联合编码。

图2还示出了联合编码的函数对的第一集合(f,gi)。编码函数对是编码计算网络或其部分,使得编码函数对的第一组成部分(例如在该示例中为f)对联合编码的第一组成部分(例如在该示例中为h)进行操作,并且第二编码函数对的第二组成部分(例如在该示例中为gi)对联合编码的第二组成部分(例如在该特定示例中也为h)进行操作。

原则上,对可以被实施为编码计算网络的函数没有限制;例如,任何函数原则上都可以以这种方式来实施。然而,发明人发现,从分组密码设计中已知的所谓的代换线性变换(slt)型密码可以特别有效地适于用作去随机化函数f和多样化函数gi。在slt类型的块密码中,将多个替换层、线性变换层和密钥添加层交替应用于输入以产生密钥相关的加密输出。为了使这种结构适应点乘设备100,可以消除密钥添加层或者例如将密钥添加层修改为固定(例如随机)密钥;然后可以将具有固定密钥的密钥添加层与之前或之后的线性层组合。替换层可以被有效地实施为替换框的序列,例如被实施为查找表。还已知对编码输入进行线性操作的有效实施方式。可以以这种方式调整的slt分组密码的示例是aes。

可以使用白盒加密来实施编码网络130。白盒实施方式是一种被设计为在白盒背景中抵御攻击的加密实施方式。在白盒背景中,攻击者可以全面了解软件的实施方式和运行。即使这样,白盒实施方式也旨在防止从程序中提取密钥。

在白盒中,例如通过对数据(可能还有盐)应用双射函数来对编码数据执行加密操作。然后将计算机程序表示为对编码数据进行操作的表网络。能够在s.chow等人的文章“awhite-boxdesimplementationfordrmapplications”(通过引用将其并入本文)中找到这样的实施方式的示例。在chow等人的文章“awhite-boxdesimplementationfordrmapplications”中,呈现了数据加密标准(des)的白盒实施方式(通过引用将其并入本文)。这些文章展示了如何通过若干中间方法将普通密码变换为白盒形式的实施方式,使得能够使用表网络来计算分组密码。特别地,这些文章展示了如何实施slt密码及其组成部分(例如,替换层和线性层)。表网络可以被实施为被存储在设备的存储设备上的多个编码的和协作的查找表。表网络接收一个或多个输入并产生一个或多个输出。在表网络中,可以使用多个查找表,例如,被存储在表存储设备中的查找表。表直接从其他表的输入和/或输出中获取输入。一个表可以采用一个输入、两个输入或两个以上的输入。

图2示出了将多个联合编码函数对(被示为联合编码函数对211-213)应用于联合编码基哈希201以产生乘数和多样化哈希的联合编码。注意,联合编码函数对中的每个对都包含相同的去随机化函数f,使得所产生的联合编码中的每个联合编码均包含乘数k。图2示出了联合编码221-223,每个联合编码均包含相同的乘数。注意,在联合编码中使用的编码(例如,联合编码221-223)可以是不同的。此外,所使用的编码对于攻击者是未知的,例如,它可以由设计者秘密地选择,或者甚至是在编译时随机选择的。联合编码的数量等于2n,其中,n为安全参数;n优选至少为2。

去随机化函数f取代了随机数生成器。它可以将基哈希作为输入,但是也可以额外接收点乘设备100的私钥作为输入。哈希多样化函数用于将单个哈希多样化为多个哈希。去随机化函数和多样化化函数都可以是随机函数。如果需要,他们可能会缩小自己的域。例如,如果基哈希是具有256位的sha-256哈希,则函数f和/或gi可以映射到较小的域,例如映射到80位。

在实施例中,将联合编码函数应用于单编码哈希enc(h)而不是联合编码enc(h,h)。在实施例中,将联合编码函数对直接应用于bash哈希的明文表示h并包含编码以及经编码的函数操作。为了选择随机函数,设计者可以利用若干s轮和多个l轮(例如每种8个,替换框的大小例如为4位或8位宽,输入和输出的位大小分别为例如256和80)来固定函数模板(例如,slt类型的函数)并在这些参数内随机选择替换框和线性变换。替代框和线性变换优选是可逆的。s盒或线性变换的其他数量的轮或大小等也是可能的。

返回图1。除了计算乘数和多样化哈希的多个联合编码的第一集合之外,点乘设备100还计算多个联合编码的第二集合。联合编码的第二集合也包括导出的哈希,但是不一定是乘数。虽然可能采用不同的编码,但是第二集合中的导出的哈希与第一集合中的导出的哈希相同。在数学上,第二集合可以被选择为bi=enc(h2i,h2i+1),i=0...n-1。在第二集合中选择的精确配对并不重要。代替将第一导出的哈希与第二导出的哈希配对等,可以选择任何配对,例如,导出的哈希之间的随机配对。例如,点乘设备100(例如,处理器电路)可以包括第二编码计算网络135以计算第二集合。

图3示意性地示出了导出多个联合编码的第二集合的实施例的示例。图3类似于图2,并且可以在图3中使用能够在图2中使用的相同类型的编码等。图3中示出了基哈希122与其自身的联合编码301。这可以是与201相同的编码,例如,将相同的编码数据用作第一编码网络130和第二编码网络135的输入。第二编码网络135包括多个编码函数对。每个函数对包括多样化函数gi中的至少两个。这些函数对还可以包括额外的多样化函数,以获得导出的哈希的联合编码三元组或更多元组等。图3中示出了联合编码函数311-313,它们产生了联合编码321、322和323。

返回图1。以这种方式,点乘设备100获得了两种不同的方式来编码多样化哈希hi=gi(h):一次与乘数k联合编码,并且一次与它们自身联合编码。点乘设备100将最终将乘数k与基点g的点积计算为多个基点与额外辅助点gi之和。g和gi的乘数有时是根据第一集合计算的,有时是根据第二集合计算的,使得攻击者无法仅攻击这两个集合中的一个集合。攻击者被迫同时攻击第一集合和第二集合。多个预先计算的辅助点gi可能已经作为预先计算的乘数与基点之间的点乘而被获得。有趣的是,由于离散对数问题很难解决,因此攻击者无法找到g与gi之间的关系,例如,攻击者无法找到系数si,使得gi=sig。然而,该知识被嵌入到编码网络中,使得处理器电路能够将计算kg盲化为g和gi上的多次计算。攻击者无法从盲化计算中反向获得k,因为他不知道要g被乘了多少才能获得gi。

乘数k与h的编码可以提供保护。为了解释,考虑乘数和基哈希被按位编码在一起的情况。然后,攻击者的修改可能引起对编码位对的三种可能的改变:

i.只有k的一位变化,h是不变的

ii.只有h的一位变化,k是不变的

iii.有k的一位变化和h的一位变化

注意,只有第一种改变对攻击者有用。第二种改变和第三种改变没有给出正确的签名,因为h已经改变。即使在这种情况下,攻击者也已经被迫从事三倍量的工作。在实施例中,在使用另外的安全参数n的情况下,攻击者注入引起有意义签名的错误的可能性变得更小。在实施例中,使用多个(n个)不同的hi。不需要将k的一位与原始哈希的各个位一起编码,而是可以将一点k的一位与n个不同的哈希的一位一起编码。在实施例中,乘数k和全部hi都具有相同的位长,但是这不是必需的。

返回图1。处理器电路被配置为根据多个联合编码的第一集合ai来计算盲基础乘数a,131。例如,第一编码网络130可以被配置为也计算盲基乘数a。此外,处理器电路(例如,第二编码网络135)被配置为根据多个联合编码的第二集合bi来计算多个盲辅助乘数ηi,136。所述多个盲辅助乘数对应于多个辅助点gi。

这些计算也可以以编码形式来完成。例如,上面指示的白盒实施方式可以适于计算a和ηi以例如作为编码表网络。构造这样的表网络可以使用基于编码的蒙哥马利数字的算法。有许多方法可以做到这一点,下面将进一步扩展一种特定的方法。

有趣的是,在执行盲椭圆曲线算术期间,以明文格式表示盲基础乘数和多个盲辅助乘数。实际上,在实施例中,这些数字在任何普通的以2为底的算术等中都是明文可见的,对于该系统的攻击者而言是明文可见的。然而,对盲基础乘数和多个盲辅助乘数的特定计算进行编码。例如,在实施例中,可以首先以编码格式计算盲基础乘数和多个盲辅助乘数,然后进行解码步骤。盲基础乘数和多个盲辅助乘数被称为盲化,不是因为它们需要被编码,而是因为它们使攻击者的真实ecc计算(kg)盲化了。

注意,在未经篡改的运行中,在第一集合中编码的所有的k(即,ai值)都是相同的,但是在经篡改的运行中,它们可能会有所不同。为了清楚起见,我们将ai中编码的k的值称为ki。在未经篡改的运行中,我们有k=ki,其中,0≤i≤2n-1。

在实施例中,盲基础乘数的值可以被计算为a=k+∑icihi,其中,我们有k=∑iαiki,hi=hi+∑jβi,jkj。例如,可以在编码网络中,例如使用基于蒙哥马利数字的算术,以值ai作为输入来计算a。在zq中在编译时选择常量αi,βi和ci并且可以在算法中进行硬编码。我们可以有σiαi=1和∑jβi,j=0.。例如,可以首先以编码形式计算值k和hi,例如将其联合编码为(k,h0,...,h2n-1)并从其计算a。

注意,盲基础乘数(a)是乘数ki与多个联合编码的第一集合中的多样化哈希hi的加权和。因此,如果运行是未经篡改的但是被∑icihi项所盲化,则ecc计算ag将包含正确的结果kg。多个盲辅助乘数ηi被选择为校正后一项,以例如针对加权和a中的多样化哈希。

可以通过将编码的bi值bi=(h2i,h2i+1)重新编码为值(η2i,η2i+1)=(aih2i+bih2i+1,cih2i+dih2i+1)来获得盲辅助乘数,这些值ηi是明文值。即使最终值是明文的,也可以对中间值进行编码。对导出的哈希进行重新编码以补偿辅助点,这些辅助点随后会被添加到基点乘法中。例如,可以设置g2i=[-(aidi-bici)-1(dic2i-cic2i+1)]g和g2i+1=[-(aidi-bici)-1(-bic2i+aic2i+1)]g。

注意,可以从ai或甚至直接从h进行计算ηi,但这会违反安全性。也就是说,为了获得正确的错误,攻击者必须击中ai,而不触碰hi。如果攻击者确实击中ai,则在ai中将有一个h′i,其与bj中一个的hi不相符,从而使得输出无法被攻击者使用。

最后,执行椭圆曲线算术以获得乘数k与基点g的点乘141,kg。从某种意义上说,这种计算为盲,对于攻击者而言,视觉上可以执行不同的计算,能够从盲椭圆曲线算术的结果中导出正确的结果kg,但是不能从盲椭圆曲线算术的输入中导出正确的输入k。乘数k已经以秘密方式分布在多个新的乘数上,因为这部分计算是以编码形式完成的,因此无法恢复乘数k。

盲椭圆曲线算术包括计算以下点的加法:

盲基础乘数与椭圆曲线上的基点的点乘,以及

盲辅助乘数与辅助点的多个点乘。

也就是说,一个将kg计算为ag+σiηigi,后一个计算可以完全以明文方式完成。注意,存在2n+1次椭圆曲线乘法。如果需要,可以根据kg将ecdsa组成部分计算为r=μ(kg)。这种计算也是明文的。

在编译时选择参数,并且可以在点乘设备100中对参数进行硬编码。例如,编译器可以配置为:

在zq中选择常量αi,βi和ci,使得∑0≤i≤n-1αi=1并且∑0≤j≤2n-1βi,j=0。

在zq中选择满足aidi-bici≠0的整数ai,bi,ci,di。

选择从哈希到zq的去随机化函数f和哈希多样化函数hi,其中,0≤i≤2n-1

计算椭圆曲线点(明文),使得g2i=-(aidi-bici)-1(dic2i-cic2i+1)g并且(g2i+1=-(aidi-bici)-1(-bic2i+aic2i+1)g。

注意,如果在加密协议的一些其他部分中需要乘数,则能够在编码网络中再次根据基哈希来计算乘数。例如,如果加密协议是ecdsa,算法的另外的部分要计算签名的第二部分也需要乘数k。这能够通过根据加密协议的第二部分的编码网络中的基哈希重新计算k来提供。例如,该编码网络可以包括去随机化函数的编码。

下面提供了一些关于一个特定实施例的点乘设备100的细节的额外信息。令输入h=hash(m),即,ecdsa中的第一步骤,签名的第一组成部分的示例计算如下。假设以下块:

·对位进行操作的(一个或多个)(随机双射)编码函数(的集合e)。

·替代线性变换{slti}i函数的集合(例如,aes,例如利用固定密钥),它使用内部的位操作(例如,在aes中)将位输入映射到位输出。

·用于联合编码函数c0,i={slt0,slti+1}i和c2i+1,2i+2={slt2i+1,slt2i+2}i的白盒电路。也就是说,每个电路cl,r都以某种编码方式(参见下文)得到两个输入,即,il,ir,并且然后计算输出ol=slti(il)和or=sltj(ir)(的编码)。该电路例如具有ω路径和σ路径,其中,ω路径计算slti,并且σ路径计算lstj

基于数字的模块化乘法网络,它对输入计算w=u*v*r-1modq

r=b(m+1)是“蒙哥马利常数”。

并且

其中

ui和vi是位数字,因此

对于基于数字的蒙哥马利,参见例如peterl.montgomery的“modularmultiplicationwithouttrialdivision”(mathematicsofcomputation,第44卷,第519-521页,1985年)。所有内部操作都在一个或两个位数字上,因此能够将它们放在一个表中;例如使用所谓的教科书乘法将它们放在一个表中。

·实施基于数字的蒙哥马利(dbm)模乘的白盒电路,其中,电路得到四个m位数字输入,即,x0,x1和y0,y1。电路的ω路径计算x0y0modq,而σ路径计算x1y1modq。

·最后,两个白盒加法电路,这些可以使用教科书加法。第一个add1如电路得到四个m位数字输入(即,x0,x1和y0,y1)的dbm。电路的ω路径计算x0+y0,而σ路径计算x1+y1。第二个add2(其中电路得到两个m位数字输入(即,(ω部分中的)x和(σ部分中的)y)的一个编码)计算ω路径中的x+y,有时计算σ部分中的任意值。

可以在例如包括表网络的计算设备(wo/2014/095772)、用于计算分组密码的密码设备(wo/2016/173882)、安全数据转换(wo/2015/091172)等中找到计算关于不同但联合编码的变量的不同函数的示例。

使用这些组成部分,计算可能如下所示:

1.将h分成位的块h0,...,hm,使得h=h0||…||hm

2、使用e来创建m编码

3、将馈送给每个ci,j

4、以的方式得到结果集合,使得:

并且

5、定义k=slt0(h)modq和hi=slti+1(h),其中,1≤i≤2n。

6、然后有ai=o0,i+1,其中,0≤i≤2n-1并且bj=o2j+1,2j+2其中,0≤j≤n-1。

7、定义enc(a,b)=e(a0||b0)||...||e(anv||bnv),其中,m′≥m以防止溢出。

8、在输入ai=enc(k,hi)和(预计算的)上运行dbm,其中,并且结果满足:

是“蒙哥马利形式”

注意:为了防止(在添加之后)溢出,我们在enc(k,hi)中添加了一些导致零至ai的编码。

9、计算其中,所有0≤i≤2n-1,其中,

10、计算z=enc(a*rmodq,·)=add2(z2n-1)。

11、利用dbm在输入z和(预先计算的)enc(a,·)上进行enc(1,·)。

12、解密并返回amodq

图4示意性地示出了ecdsa设备400的实施例的示例。点乘设备100的重要应用是在ecdsa设备(例如,ecdsa设备400)中。上面指出的ecdsa签名包括两个组成部分,其中之一是从ecc点乘导出的。图4示出了ecdsa设备400,例如,被配置为计算消息的ecdsa签名的设备,其包括点乘设备,例如,点乘设备100。图4中相似的附图标记对应于图1中相似的功能。

ecdsa设备400包括处理器电路,例如,点乘设备100中的处理器电路,但是扩展有额外功能。ecdsa设备400包括输入接口120,输入接口120被布置为接收输入消息m的基本哈希h,122。对于点乘设备100,输入接口可以是应用接口,使得ecdsa设备400被配置为接收或生成或以其他方式获得输入消息。ecdsa设备400可以包括哈希单元,以产生输入消息的基哈希。ecdsa设备400包括点乘设备(例如,点乘设备100)以计算乘数k与椭圆曲线e上的基点g之间的椭圆曲线上的点乘kg以供在加密协议中使用。例如,ecdsa设备400的处理器电路可以被配置用于所述点乘。

ecdsa设备400的处理器电路还被配置为从乘数k与基点g之间的椭圆曲线上的点乘kg来获得签名的第一组成部分r=μ(([k]g)1))。后者的计算可以在椭圆曲线算术单元140中完成或在单独的单元中完成。μ的计算可以在明文中完成。

ecdsa设备400还被配置为计算签名的第二组成部分s=(h+rx)k-1。第二计算不涉及椭圆曲线计算。这意味着编码算术网络可以执行此计算。例如,ecdsa设备400的编码网络可以接收基哈希并且包括去随机化函数f的编码。这允许这种编码网络计算乘数k的编码。编码网络还可以使用私钥x的编码以及值r和h。可以以明文形式或编码形式接收后两者。根据这些输入,可以计算ecdsa签名的第二组成部分。

然而,在有利的实施例中,避免了以编码形式执行逆运算。虽然在对编码数据进行运算时可以进行逆运算,但它需要复杂的编码网络。发明人已经设计出一种更简单的方法来获得签名的第二组成部分,而不用揭示乘数k的值。该实施例能够承受关于k的高级攻击和关于x的简单的内存捕捉。

ecdsa设备400被配置为生成多个联合编码的另外的第一集合和多个联合编码的另外的第二集合。例如,ecdsa设备400可以包括第三编码计算网络150,第三编码计算网络150被配置为导出多个导出的哈希,这多个导出的哈希中的每个导出的哈希都是与乘数k一起编码的。在数学上,xi=enc(k,ti),i=0...2n-1。例如,第三编码计算网络150可以被配置为应用多对编码函数(f,g′i),其中,g′i是多样化函数的另外的集合。

例如,ecdsa设备400可以包括第四编码计算网络155,第四编码计算网络155被配置为导出与在另外的第一集合中相同的多个导出的哈希,但是这多个导出的哈希中的每个哈希是与基哈希h联合编码的。在数学上,yi=enc(h,ti),i=0...2n-1。例如,第四编码计算网络155可以被配置为应用多对编码函数(id,g′i),其中,g′i是多样化函数的另外的集合。在本文中,id表示身份函数。注意,即使是身份函数本身也将不可见,因为它可能会以与接接收其输入不同的编码来产生其输出。此外,联合编码还将使基哈希在设备中直接可见。

为了在编码下计算k-1modq,我们从集合xi和yi继续,例如从以下项继续:

编码对enc(k,t0),...,enc(k,t2n-1),以及

编码对enc(h,t0),...,enc(h,t2n-1)

根据多个联合编码的另外的第一集合xi将盲乘数b,151,计算为另外的第一集合中的编码乘数的加权平均值乘以另外的第一集合中的编码乘数和导出的哈希的加权平均值。例如,我们可以计算如下:令k′i表示enc(k,ti)的解码的k值,然后利用∑iγi=1来计算k′=∑iγik′i。还利用∑jδi,j=0.来计算ti=ti+∑jδi,jk′j。将盲乘数计算为b=k′·∑iditi,其中,di是选择的编译时间。例如,可以先在上创建编码的2n+1元组enc(k′,t0,...,t2n-1),然后从中计算出盲乘数。注意,值b无需编码,能够以明文格式输出。

另外,ecdsa设备400可以根据多个联合编码的另外的第二集合yi将盲基哈希h,156,计算为另外的第二集合中的编码的基哈希的加权平均值,并且根据该编码的基哈希和导出的哈希来计算去盲t’,157,值。该计算可以在编码网络中完成并产生编码值。例如,令hi表示enc(h,ti)的解码的h值,并利用例如∑iμi=1来计算h=∑iμih′i并且例如用∑jvi,j=0.来计算t′i=ti+∑jvi,jhj。去盲项可以被计算为t′=∑idit′i。例如,可以在上创建编码的2n+1元组enc(h,t′0,...,t′2n-1)。盲哈希和去盲值可以例如根据enc(h,t′0,...,t′2n-1)计算enc(h,t′)而被联合编码,其中,t′=∑idit′i。

现在能够在编码电路160中计算签名的第二组成部分以计算s=b-1t′(xr+h)modq;例如,以b,r,enc(x),enc(h,t′)为输入并使用基于数字的蒙哥马利电路。注意,逆运算是在明文值b上完成的。其余的计算可以在编码值上完成。最终结果s也不需要进行编码。有利地,编码(enc)在上是线性的,并且在其顶部逐数字是非线性的,例如,其中,e是在编译时选择的某种秘密双射映射,并且其中,针对某个编译时间选择a,b。

在点乘设备100和ecdsa设备400的各种实施例中,可以从各种替代方案中选择输入接口。例如,输入接口可以是到局域网或广域网(例如,互联网的)的网络接口、到内部或外部数据存储设备的存储接口、键盘、应用程序接口(api)等。

存储设备110可以被实施为电子存储器(例如,闪速存储器)或磁性存储器(例如,硬盘)等。存储设备110可以包括多个离散存储器,它们一起构成存储设备110。存储设备110也可以是临时存储器,例如,ram。在临时存储设备110的情况下,存储设备110包含一些在使用之前获得数据的单元,例如,通过任选的网络连接(未示出)获得数据的单元。

通常,设备100和400各自包括微处理器(未单独示出),该微处理器运行被存储在设备100和400处的适当软件;例如,该软件可以已经被下载和/或被存储在对应的存储器中,例如,诸如ram的易失性存储器或诸如flash的非易失性存储器(未单独示出)。替代地,设备100和400可以全部或部分地以可编程逻辑单元的方式来实施,例如被实施为现场可编程门阵列(fpga)。设备100和400可以全部或部分地被实施为所谓的专用集成电路(asic),即,针对其特定用途而定制的集成电路(ic)。例如,可以例如使用诸如verilog、vhdl等的硬件描述语言在cmos中实施的电路。

在实施例中,该设备包括存储器电路、输入接口电路、第一编码计算网络电路、第二编码计算网络电路以及椭圆曲线算术单元电路。该设备还可以包括第三编码计算网络电路、第四编码计算网络电路、第六编码计算网络电路。所述电路实施本文描述的对应单元。所述电路可以是处理器电路和存储器电路,所述处理器电路运行在所述存储器电路中以电子方式表示的指令。

处理器电路可以以分布式方式来实施,例如被实施为多个子处理器电路。存储器可以被分布在多个分布式子存储设备上。存储器的部分或全部可以是电子存储器、磁性存储器等。例如,存储器可以具有易失性部分和非易失性部分。部分存储设备可以是只读的。所述电路也可以是fpga、asic等。

图5示意性地示出了点乘方法500的实施例的示例。

电子点乘方法500被布置为计算乘数k与椭圆曲线e上的基点g之间的椭圆曲线上的点乘kg以供在加密协议中使用。例如,方法500可以在电子设备上实施。

方法500包括:

存储510椭圆曲线上的基点g和多个预先计算的辅助点gi,

接收520输入消息m的基哈希h,122,

从基哈希h导出530采取多个联合编码的第一集合和第二集合的形式的多个导出的哈希hi和乘数k,第一集合包括多个导出的哈希ai=enc(k,hi),i=0…2n-1,221-223,第一集合中的导出的哈希中的每个导出的哈希都是与乘数k联合编码的,第二集合也包括多个导出的哈希,第二集合中的导出的哈希中的每个导出的哈希都是与多个导出的哈希中的至少另一个导出的哈希联合编码的bi=enc(h2i,h2i+1),i=0…n-1,321-323,

根据多个联合编码的第一集合ai来计算540盲基础乘数a,131,

根据多个联合编码的第二集合bi来计算550多个盲辅助乘数ηi,136,多个盲辅助乘数对应于多个辅助点gi,

通过计算以下两项的点加法来执行560盲椭圆曲线算术,以获得乘数k与基点g的点乘141kg:

盲基础乘数与椭圆曲线上的基点的点乘,以及

盲辅助乘数与辅助点的多个点乘。

图6示意性地示出了ecdsa签名方法的实施例的示例。方法600包括用于计算ecdsa签名的第一组成部分的方法500。方法600还包括通过以下操作来计算签名的第二组成部分s=(h+rx)k-1

从所述基哈希h导出610所述乘数k和采取多个联合编码的另外的第一集合和另外的第二集合的形式的另外的多个导出的哈希ti,所述另外的第一集合包括多个导出的哈希xi=enc(k,ti),i=0…2n-1,所述另外的第一集合中的导出的哈希中的每个导出的哈希都是与所述乘数k联合编码的,所述另外的第二集合包括多个导出的哈希yi=enc(h,t1),i=0…2n-1,所述另外的第二集合中的导出的哈希中的每个导出的哈希都是与所述基哈希h联合编码的,

根据多个联合编码的所述另外的第一集合xi将盲乘数b=k′·∑iditi,151,计算620为所述另外的第一集合中的编码乘数的加权平均值k′=∑iγik′i乘以所述编码乘数与所述另外的第一集合中的导出的哈希的加权平均值∑iditi,ti=ti+∑jδi,jk′j,

根据多个联合编码的所述另外的第二集合yi将盲基哈希h,156,计算630为所述另外的第二集合中的编码基哈希的加权平均值h=∑iμih′i并且将去盲t′,157,值计算为所述编码基哈希与导出的哈希的加权平均值t′=∑idit′i,t′i=ti+∑jυi,jhj,

计算640以下三项的乘积:所述盲乘数的逆b-1、所述去盲值t′,以及以下两项的总和xr+h,这两项为:所述签名的所述第一组成部分r乘以私有值x的乘积,以及所述设备的编码计算网络的盲基哈希h。

如本领域技术人员将显而易见的,可以以许多不同方式来运行该方法。例如,能够改变步骤的顺序,或者可以并行运行某些步骤。此外,在步骤之间可以插入其他方法步骤。插入的步骤可以表示本文描述的方法的细化内容,或者也可以与该方法无关。例如,步骤540和550可以至少部分地并行运行。此外,在开始下一步之前,给定步骤可能尚未完全完成。

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

应当理解,本发明还扩展到适于使本发明付诸实践的计算机程序,特别是在载体上或载体中的计算机程序。该程序可以是源代码、目标代码、源代码和目标代码中间的代码的形式,例如部分编译的形式,或者是适合用于实施方式根据本发明的方法的任何其他形式。与计算机程序产品有关的实施例包括与所阐述的方法中的至少一个的每个处理步骤相对应的计算机可执行指令。这些指令可以细分为子例程和/或存储在一个或多个可以静态或动态链接的文件中。与计算机程序产品有关的另一实施例包括与所阐述的系统和/或产品中的至少一个的每个设备相对应的计算机可执行指令。

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

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

例如,在实施例中,点乘设备可以包括处理器电路和存储器电路,该处理器被布置为运行被存储在存储器电路中的软件。例如,处理器电路可以是英特尔酷睿i7处理器、armcortex-r8等。存储器电路可以是rom电路或非易失性存储器,例如,闪速存储器。存储器电路可以是易失性存储器,例如,sram存储器。在后一种情况下,设备可以包括非易失性软件接口,例如,硬盘驱动器、网络接口等,其被布置用于提供软件。

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

在权利要求中,被放置在括号之间的任何附图标记不应被解释为限制权利要求。词语“包括”或“包含”不排除权利要求中列出的那些元件或步骤之外的元件或步骤的存在。在列举了若干单元的装置型权利要求中,这些单元中的若干可以被具体实施为同一的硬件项。元件前的词语“一”或“一个”不排除多个这样的元件的存在。在列举了若干单元的任何装置型权利要求中,这些单元中的若干可以被实施为同一的硬件项。尽管特定措施是在互不相同的从属权利要求中记载的,但是这并不指示这些措施不能被组合使用以获益。

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

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