加速伽罗瓦计数器模式(gcm)计算的制作方法

文档序号:6470134阅读:734来源:国知局
专利名称:加速伽罗瓦计数器模式(gcm)计算的制作方法
技术领域
本发明涉及一种包括一个或多个指令的计算机可读介质,所述指令在处理器上执行时将所述处理器配置成用于 将无进位乘法的乘积的最高有效部分与第一值相乘以生成第二值; 将所述第二值的最高有效部分与块密码中使用的最终域(finalfield)的不可约多项式的最低有效部分相乘以生成第三值; 基于所述第三值确定余数;以及 基于所述余数的值来使信号生成,其中所述余数的值指示根据伽罗瓦计数器模式(GCM)经加密的消息是否是可信的。
本发明涉及一种系统,包括 存储器,用于存储无进位乘法指令;以及 处理器,用于执行所述无进位乘法指令以确定经加密的消息是否是可信的。
本发明涉及一种存储指令的计算机可读介质,所述指令使计算机能够 使用32或64位的无进位乘法指令来执行128×128位的无进位乘法; 将乘积模g来进行约简以形成块密码的模式的消息认证码;以及 使用所述块密码用于网络通信的加密。
本发明涉及一种计算机系统,包括 网络接口;以及 加密模块,用于使用32或64位无进位乘法指令来获得128×128位无进位乘法并将256位乘积模g来进行约简(reduce the 256 productmodulo g)以形成块密码的模式的消息认证码。



参考附图提供详细描述。在附图中,附图标记的最左边的数字标识该附图标记首次出现所在的附图。不同附图中使用相同的附图标记来指示类似或相同的项。
图1示出可以根据一些实施例利用的伽罗瓦计数器模式(GCM)的一个实施例。
图2和3示出根据本发明的一些实施例的方法的流程图。
图4和5示出可用来实现本文论述的一些实施例的计算系统的实施例的框图。

具体实施例方式 在以下描述中,阐述了许多具体细节以便于提供对各种实施例的透彻理解。然而,在没有这些具体细节的情况下,也可实施本发明的各种实施例。在其他情况下,未详细描述公知的方法、过程、组件和电路,以避免妨碍理解本发明的特定实施例。此外,本发明的实施例的各个方面可使用诸如集成半导体电路(“硬件”)、组织成一个或多个程序的计算机可读指令(“软件”)、或硬件和软件的某种组合等各种方式来执行。出于本公开的目的,提到“逻辑”时应表示硬件、软件(包括例如控制处理器的操作的微代码)或其某种组合。而且,这里“指令”或“微操作”(也可称为“uop”)的使用是可互换的。
说明书中提到“一个实施例”时表示结合该实施例描述的特定特征、结构或特性可以包含在至少一个实现中。在说明书中各处出现的短语“在一个实施例中”可以指代同一个实施例或可以不全指代同一个实施例。
而且,在描述和权利要求中,可使用术语“耦合”和“连接”以及它们的派生词。在本发明的一些实施例中,“连接”可用于指示两个或两个以上元件彼此直接物理或电接触。“耦合”可表示两个或两个以上元件直接物理或电接触。然而,“耦合”还可指两个或两个以上元件没有彼此直接接触,但是仍然可彼此协同工作或交互。
本文论述的一些实施例可加速块密码的伽罗瓦计数器模式(GCM)计算。例如,单个通用处理器核(例如,基于英特尔

公司的核微体系结构)可潜在地支持10Gbps的联网。在一个实施例中,无进位乘法(carry-less multiplication)运算可与快速约简(reduction)相结合来加速GCM计算。在一个实施例中,指令(例如,依据至少一个指令集体系结构的“GFMUL”)可引起两个64位输入的无进位乘法的计算。在一个实施例中,执行该指令的处理器(如图4-5中的处理器)可包括以下装置中的一个或多个装置用来存储指令的存储器(例如,1级、2级、最后一级高速缓存等),用于从存储器提取指令的提取单元,可选地将所提取的指令解码的解码单元,用于调度指令(或相应的uop)来执行的调度单元,以及用于执行指令(或相应的uop)的一个或多个执行单元。
此外,GCM是目前建议用于保密和认证的块密码(block cipher)的操作模式。具体来说,高级加密标准(AES)伽罗瓦计数器模式(AES-GCM)已经成为一种日渐流行的用于在快速联网中进行分组处理的模式。通常,GCM是通过取块密码的128位输出并在2128的伽罗瓦域(GF)中将它乘以散列密钥来实现的,其中此散列密钥在会话期间保持不变。GF(2128)中的乘法由两个阶段组成(i)对两个128位操作数进行无进位乘法,以生成256位结果;以及(ii)模(modulo)不可约多项式g(x)=x128+x7+x2+x+1来进行约简。由于多项式“g”可表示为仅有5个位等于1的128位的字符串,因此它被称为“五项式”(pentanomial)。在一个实施例中,无进位乘法可使用本文论述的GFMUL指令作为构建块以获得用于GCM的两个128位输入的无进位乘法。而且,一个实施例将256位结果模有限域的五项式g来进行约简,以便例如提高整体性能。
具体来说,图1示出可以根据一些实施例利用的伽罗瓦计数器模式(GCM)100的实施例。如图所示,该模式可根据由块密码生成的加密数据产生称为“伽罗瓦散列”的消息摘要102,例如,可基于密钥将数据104-1到104-3加密,以分别生成密文106-1到106-3。该伽罗瓦散列可用于高性能的消息认证。在该模式的每个操作中,将伽罗瓦散列的先前值与当前的密文块执行XOR运算(例如,106-1与102-1执行XOR运算,106-2与102-2执行XOR运算等等)。接着,在GF(2128)中将结果与散列密钥值相乘,其中GF(2128)有限域由不可约多项式g=g(x)=x128+x7+x2+x+1来定义。从而,如前所述,在GF(2128)中的乘法包括对两个128位操作数执行无进位乘法以生成256位结果,并模不可约多项式g来进行约简。
无进位乘法 无进位乘法又称为伽罗瓦域乘法,它是将两个数相乘而不生成或传递进位的运算。在标准整数乘法中,将第一操作数移位与第二操作数中等于“1”的位的位置相同的次数。通过将第一操作数与其移位版本相加来得到这两个操作数的乘积。在无进位乘法中,除了相加不生成或传递进位之外,遵循相同的过程。通过这种方式,位相加等效于XOR逻辑运算。
无进位乘法正式定义如下设两个操作数为A、B,每个操作数的大小是n位。设数A为下列位数组 A=[an-1an-2...a0](1) 同样,设数B为 B=[bn-1bn-2...b0](2) 设无进位乘法的结果为下列位数组 C=[c2n-1c2n-2...c0] (3) 输出C的位定义为输入A和B的位的下列逻辑函数 c0=a0b0 ... 以及 ... (5) c2n-2=an-1bn-1 c2n-1=0 式(4)和(5)可以按紧凑形式书写为 其中,0≤i≤n-1,以及 其中,n-1≤i≤2n-1 从硬件实现的角度来看,可看到,式(6)和(7)的每个逻辑函数可使用XOR树来实现。最深的XOR树是实现取n个输入的函数cn-1的XOR树。例如,用于伽罗瓦域乘法的64位指令(例如,“GFMUL”)需要1+2+...+62+63+62+...+1=3969个XOR门。而且,GFMUL所需的AND门的总数是1+2+...+64+63+...+1=4096。因此,实现GFMUL所需的逻辑门的总数是8065。可以容易地看出,在一些实现中,专用于GCM计算的这个门数成本高昂。在下文中,我们用符号‘*’来表示无进位乘法(GFMUL)。
软件形式的GCM GCM模式的一些当前实现可使用表查询算法,该算法由两个阶段组成。第一,在预处理阶段期间,可以创建16个不同的表。每个表具有256个条目,且每个条目为128位长。表Ti的每个条目j存储(j*散列密钥*2i8)模g(mod g)的值。第二,运行时阶段,在此阶段中,算法取下一个密文块,且将其与伽罗瓦散列的当前值执行XOR运算。按如下方式在GF(2128)中将结果与散列密钥相乘将结果值分割成16个片段,其中每个片段为8位长。随后,使用这些片段来执行16次表查询,以便对表进行标引。将表查询的结果彼此执行XOR运算。这种算法以每字节为基础来执行运算对于每个128位的块,进行16次表查询和16次128位的XOR运算。
可以看出,由于表查询的成本,这种算法采用软件形式可能不是很有效率。这种算法所需的表的总大小是16·256·16字节=64K字节。由于处理器的L1高速缓存中通常可能具有32K字节,因而这些表无法容放在此高速缓存中,而必须通过二级(L2)高速缓存或其它很少访问的存储器来访问,这引入了延迟。例如,即使可以将存储器访问进行流水线化,访问L2高速缓存仍意味着显著的性能代价。例如,对于与10-20个时钟周期(下面称为“时钟”)的访问时间关联的高速缓存,GCM的测得成本可能为20个周期/字节。
图2示出根据本发明的一个实施例的用于执行与GCM关联的操作的方法200的框图。在一个实施例中,可以利用本文参考例如图1和3-4论述的各种组件来执行参考图2论述的一个或多个操作。例如,方法200可用于对通过图4-5中的网络403传送的数据执行GCM。
参考图1-5,在操作202处,可以接收消息(例如,采用通过诸如网络403的计算机网络传送的数据分组的形式)。在操作204处,可确定是否要根据GCM来对所接收的消息进行认证(例如,将对密文106-1、106-2等进行认证)。在一个实施例中,可在操作204处将通过网络403传送的数据分组中(对应于加密消息)的一部分(诸如分组报头)解码,以确定是否要根据GCM来对该消息进行认证。
在操作206处,可生成无进位乘积。在一个实施例中,可按照如下方式通过例如利用64位指令(例如,本文论述的GFMUL指令)来执行128位×128位无进位乘法以在操作206处生成乘积。
使用64位GFMUL指令的无进位乘积 输入操作数可由[A1:A0]和[B1:B0]表示,其中A1、A0、B1和B0各为64位长。
获得128位×128位的无进位乘积首先,可以将以下操作数相乘A1与B1相乘,A0与B0相乘,以及



相乘。设上述三个相乘的结果分别为[C1:C0]、[D1:D0]和[E1:E0]。在第二运算期间,按如下方式构建乘法[A1:A0]*[B1:B0]的256位输出 性能在GFMUL指令的吞吐量是2个时钟且序列中的第一乘法的延迟是4个时钟的情况下,可估计该阶段的速度。这些可认为是基于实际情况中的当前硬件实现的最坏的延迟数。利用不同参数来执行此分析是容易的。
在具有EM64T 64位寄存器组的典型英特尔

IA处理器中考虑如下操作。首先,将值A1和B1移到寄存器RAX和来自通用组的某个其它寄存器中。对值A1与A0以及值B1与B0执行XOR运算。所有这些运算可在1个时钟内完成。接着,GFMUL指令将A1与B1无进位相乘。这在4个时钟内完成。接着,将该乘法的结果移到保存最终乘积的寄存器中。在这个操作之后,将值A0和B0移到RAX和另一个通用寄存器中以便将它们彼此相乘。这些操作可在2个时钟内完成。接着,在2个时钟内计算乘积A0*B0,且将结果与保存最终乘积的寄存器执行XOR运算。接着,将值



移入到RAX和某个其它寄存器中。这些操作可在2个时钟内完成。最后,GFMUL指令将



相乘(2个时钟),且将结果与保存最终值的寄存器对执行XOR运算(1个时钟)。在该例子中,该阶段的总估计延迟是14个时钟。
参考图2,在操作208处,可以将在操作206处生成的无进位乘积约简。下文将参考图3论述根据一个实施例执行的约简的进一步细节。
在操作210,可确定是否存在余数(例如,基于在操作208执行的约简确定)。如果存在余数,则根据GCM的认证失败(在一个实施例中,这可通过产生错误信号来用信号通知)。否则,认证是成功的。
约简256位乘积 图3示出根据一个实施例的用于执行约简的方法300。该方法300说明了根据一个实施例的图2中的操作208和/或210的进一步的细节。如图3中所示,为了约简(256位)乘积,可以在操作302处将乘积分成两个(128位)部分。如下面将进一步论述的,由于g的次数是128,所以可以将最低有效这半部分与最终的余数执行XOR运算。对于最高有效部分,可通过两次相乘来实现除法。由于不需要考虑输入的最低有效这半部分,所以认为可有效地生成余数p(x),其定义如下 p(x)=c(x)·xtmod g(x)(9) 这里, ●c(x)是s-1次多项式,其在GF(2)中的系数表示无进位乘积的最高有效位。在当前的AES-GCM情形中,s=128。
●t是多项式g的次数。在当前情况下,t=128。
●g(x)是AES-GCM中使用的最终域的不可约多项式。
对于多项式p(x)、c(x)和g(x) c(x)=cs-1xs-1+cs-2xs-2+...+c1x+c0, p(x)=pt-1xt-1+pt-2xt-2+...+p1x+p0,以及(10) g(x)=gtxt+gt-1xt-1+...+gtx+g0 在下文中,可以使用符号Lu(v)来表示多项式v的u个最低有效项的系数,用符号Mu(v)来表示它的u个最高有效项的系数。多项式p(x)可表示为 p(x)=c(x)·xtmod g(x)=g(x)·q(x)mod xt(11) 其中q(x)是等于c(x)·xt与g相除所得的商的s-1次多项式。在式(11)中,被除数c(x)·xt的t个最低有效项等于0。此外,被除数c(x)·xt可表示为多项式g·q和p的和 c(x)·xt=g(x)·q(x)+p(x) (12) 其中运算符‘+’表示

从式(12)可以预期,多项式g·q的t个最低有效项等于多项式p的项。仅当这些项彼此相等时,XOR运算

的结果对于它的t个最低有效项是0。因此 p(x)=g(x)·q(x)mod xt=Lt(g(x)·q(x)) (13) 现在,g(x)可定义为 多项式g*表示多项式g的t个最低有效项,并且 p(x)=Lt(g(x)·q(x))=Lt(q(x)·g*(x)+q(x)·gtxt)(15) 然而,多项式q·gt·xt的t个最低有效项是0。因此 p(x)=Lt(q(x)·g*(x)) (16) 从式(16)可以得出,为了计算余数p,我们需要知道商q的值。可以相似的方式计算商 设 xt+s=g(x)·q+(x)+p+(x) (18) 其中q+是s次(degree)多项式,它等于xt+s与g相除所得的商,且p+是该除法所得的余数。多项式p+的次数为t-1。从式(17)和(18)我们得到 以及 可以看出,多项式c·g·q+和g·q·xs的次数为t+2·s-1,多项式c·p+的次数为t+s-2,而多项式p·xs的次数为t+s-1。从而,式(25)左边和右边的多项式的s个最高有效项不受多项式c·p+和p·xs影响。因此 接下来,我们注意到,多项式c·g·q+的s个最高有效项等于多项式g·Ms(c·q+)·xs的s个最高有效项。通过把多项式c·q+的s个最低有效项替换为0,由该多项式得到多项式Ms(c·q+)·xs。此外,通过在与由多项式g的项定义的一样多的偏移位置将多项式c·q+的s个最高有效项彼此相加,可计算多项式c·g·q+的s个最高有效项。因此,c·g·q+的s个最高有效项与c·q+的s个最低有效项不相关,从而 对于下式给定的q,满足式(22) q=Ms(c(x)·q+(x))(23) 由于有唯一的商q满足式(12),所以可以表明,有唯一的商q满足式(22)。因此,该商q必须等于Ms(c(x)·q+(x))。由此得出,多项式p可由下式得到 p(x)=Lt(g*(x)·Ms(c(x)·q+(x)))(24) 因此,式(24)指示用于计算多项式p的运算。
预处理对于给定的不可约多项式g,首先计算多项式g*和q+。多项式g*的次数为t-1,它由g的t个最低有效项构成,而多项式q+的次数为s,且等于xt+s与多项式g相除所得的商。
余数多项式的计算 操作1将输入c与q+相乘(例如,在操作304处,将乘积的128个最高有效位与2256与g相除所得的商相乘)。其结果是次数为2s-1的多项式。
操作2将从操作1得到的多项式的s个最高有效项与g*相乘(例如,在操作306处,将操作304的结果的128个最高有效位与g*相乘)。其结果是次数为t+s-2的多项式。
操作3算法返回由操作2得到的多项式的t个最低有效项(例如,在操作308处,通过将操作304的结果的最低有效部分与输入的128个最低有效位执行XOR运算)。这就是余数。
可以看到,该算法包括2次128位无进位乘法和1次128位XOR运算。对于无进位乘法,可以使用上文针对第一阶段描述的无进位技术。在一个实施例中,该算法的成本是至少2·14=28个时钟。
如果考虑g(五项式)的特殊形式,则可以应用另一个实施例。在一个实施例中,这种方法在一些实现中可能更有效率。具体来说,x256与g相除所得的商是g本身(例如,如在操作304中应用的)。多项式g=g(x)=x128+x7+x2+x+1实质上是位序列[1:<120个0>:10000111]。因此,在一个实施例中,在操作304-306期间,可以将该位序列与128位值执行无进位相乘,并且可以通过如下操作获得这128个最高有效位(i)将输入的64个最高有效位向右移位63、62和57个位位置;并且(ii)将这些移位后的副本与输入的64个最低有效位执行XOR运算。在一些实现中,这可在4个时钟内完成。接着,可以将此128位结果与g执行无进位相乘,并可以保存这128个最低有效位。在一个实施例中,这可通过如下方法来完成(i)将128位输入向左移位1、2和7个位置;并且(ii)对结果执行XOR运算。在一些实施例中,后面这些操作可在8个时钟内执行。因此,约简的这种高效实施例会花费12个时钟(与先前讨论的情况下的28个相比)。总共地,用于GCM的时钟总数对于128位块(例如,等于16字节)为12+14=26个时钟,它可转换为大约1.5个周期/字节。与标准算法相比,所提出的实施例可获得显著的加速。
根据一些实施例,用于执行本文论述的某些实现的第一阶段的相似方法可以由32位GFMUL指令来实现。而且,除了使得能够实现高性能(例如,10Gbps)安全联网外,一些实施例还可应用于诸如虚拟专用网络(VPN)、网络边缘设备等的其它网络安全应用。而且,由于目前使用的散列系列安全散列算法(SHA)的状态随摘要长度增长而增加,因此其缩放性能较差。本文论述的技术可利用根据本文论述的一些实施例实现的基于AES的可信性认证方案提供SHA的替代方案。其它实现可利用本文论述的一些实施例来实现二进制域上的椭圆曲线密码技术(例如,根据2000年1月27日的FIPS 186-2,″DigitalSignature Standard″,Federal Information Processing Standard PublicationFIPS 186-2,见http://csrc.nist.gov/publications/fips),其中结合具有通用多项式的诸如循环冗余码(CRC)算法的快速位反映(fast bitreflection)。
图4示出计算系统400的一个实施例的框图。在多种实施例中,系统400的一个或多个组件可以多种电子设备的形式提供,这些电子设备能够执行本文参照本发明的一些实施例论述的一个或多个操作。例如,系统400的一个或多个组件可用于执行参考图1-3论述的操作,例如,通过根据本文论述的操作处理密文数据106-1、106-2等。还可以使用本文(例如,参考图4和/或5)论述的多种存储设备来存储数据、运算结果等。在一个实施例中,可以将通过网络403(例如,经由网络接口设备430和/或530)接收的数据存储在处理器402和/或502的高速缓存中(例如,在一个实施例中为L1高速缓存)。接着,这些处理器可应用本文论述的根据GCM的操作(诸如图1-3中的一个或多个操作)来认证消息。
而且,计算系统400可包括一个或多个中央处理单元(CPU)402或处理器,它们经由互连网络(或总线)404通信。处理器402可包括通用处理器、网络处理器(用于处理通过计算机网络403传送的数据)或其他类型的处理器(包括精简指令集计算机(RISC)处理器或复杂指令集计算机(CISC))。而且,处理器402可具有单个或多个核设计。具有多个核设计的处理器402可在同一集成电路(IC)管芯上集成不同类型的处理器核。同样,具有多个核设计的处理器402可以作为对称或非对称多处理器来实现。而且,参考图1-2论述的操作可通过系统400的一个或多个组件来执行。
芯片组406还可与互连网络404通信。芯片组406可包括存储器控制器集线器(MCH)408。MCH 408可包括可与存储器412通信的存储器控制器410。存储器412可存储数据,包括可由CPU 402或计算系统400中包括的任何其它设备执行的指令序列。在本发明的一个实施例中,存储器412可包括一个或多个易失性存储(或存储器)设备,诸如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或其它类型的存储设备。还可利用诸如硬盘的非易失性存储器。附加设备可经由互连网络404通信,如多个CPU和/或多个系统存储器。
MCH 408还可包括与显示器416通信的图形接口414。在本发明的一个实施例中,图形接口414可经由加速图形端口(AGP)与显示器416通信。在本发明的一个实施例中,显示器416可为通过例如信号转换器与图形接口414通信的平板显示器,信号转换器把存储在诸如视频存储器或系统存储器的存储设备中的图像的数字表示转换成可由显示器416解释并显示的显示信号。通过接口414产生的显示信号可通过各种控制设备传递,然后由显示器416解释并随后在显示器416上显示。
集线器接口418可允许MCH 408和输入/输出控制集线器(ICH)420进行通信。ICH 420可提供到与计算系统400通信的I/O设备的接口。ICH 420可通过诸如外围组件互连(PCI)桥、通用串行总线(USB)控制器、或其它类型的外围桥或控制器的外围桥(或控制器)424与总线422通信。桥424可提供CPU 402和外围设备间的数据通路。可利用其它类型的拓扑结构。多个总线也可通过例如多个桥或控制器与ICH 420通信。而且,在本发明的各种实施例中,与ICH 420通信的其它外围设备可包括集成驱动电子装置(IDE)或小型计算机系统接口(SCSI)硬盘驱动器、USB端口、键盘、鼠标、并行端口、串行端口、软盘驱动器、数字输出支持设备(例如,数字视频接口(DVI))或其它设备。
总线422可与音频设备426、一个或多个磁盘驱动器428和可与计算机网络403通信的网络接口设备430通信。在一个实施例中,设备430可为能够进行无线通信的NIC。其它设备可经由总线422通信。而且,在本发明的一些实施例中,多种组件(如网络接口设备430)也可与MCH 408通信。此外,可以将处理器402和MCH 408组合以构成单个芯片。而且,在本发明的其它实施例中,图形接口414可包括在MCH 408中。
而且,计算系统400可包括易失性和/或非易失性存储器(或存储装置)。例如,非易失性存储器可包括下列装置中的一种或多种装置只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电EPROM(EEPROM)、磁盘驱动器(例如,428)、软盘、致密盘ROM(CD-ROM)、数字多功能盘(DVD)、闪存、磁-光盘或能够存储电子数据(例如,包括指令)的其它类型的非易失性机器可读介质。在一个实施例中,系统400的组件可以按照诸如参考图5描述的点对点(PtP)配置来设置。例如,处理器、存储器和/或输入/输出设备可通过多个点对点接口互连。
更具体来说,图5示出根据本发明的一个实施例的按照点对点(PtP)配置设置的计算系统500。具体来说,图5示出其中处理器、存储器和输入/输出设备通过多个点对点接口互连的系统。参考图1-4论述的操作可通过系统500的一个或多个组件来执行。
如图5中所示,系统500可包括多个处理器,为清楚起见,仅示出其中两个处理器502和504。处理器502包括与存储器510耦合的本地存储器控制器集线器(MCH)506,处理器504包括与存储器512耦合的本地存储器控制器集线器(MCH)508。存储器510和/或512可存储各种数据,如参考图4中的存储器412论述的那些数据。
处理器502和504可为任何合适的处理器,如参考图4中的处理器402论述的那些处理器。处理器502和504可分别使用PtP接口电路516和518经由点对点(PtP)接口514来交换数据。处理器502可使用点对点接口电路526、530经由相应PtP接口522来与芯片组520交换数据,处理器504可使用点对点接口电路528、532经由相应PtP接口524来与芯片组520交换数据。芯片组520还可使用PtP接口电路537经由高性能图形接口536来与高性能图形电路534交换数据。
本发明的至少一个实施例可通过利用处理器502和504来提供。例如,处理器502和/或504可执行图1-3中的一个或多个操作。然而,本发明的其它实施例可存在于图5的系统500中的其它电路、逻辑单元或设备中。而且,本发明的其它实施例可分布于图5中所示的几个电路、逻辑单元或设备中。
芯片组520可使用PtP接口电路541耦合到总线540。总线540可使一个或多个设备耦合到它,如总线桥542和I/O设备543。经由总线544,总线桥543可耦合到其它设备,如键盘/鼠标545、参考图5论述的网络接口设备530(如调制解调器、网络接口卡(NIC)或可耦合到计算机网络403的类似设备)、音频I/O设备和/或数据存储设备548。数据存储设备548可存储可由处理器502和/或504执行的代码549。
而且,虽然GFMUL指令目前不是许多处理器体系结构的指令集的一部分,但是已经证实,利用GFMUL指令,结合本文论述的操作,通用处理器(例如,基于英特尔

公司的核微体系结构的通用处理器)可潜在地支持10Gbps联网。而且,AES-GCM是计算密集的,其中在一些实现中,目前的处理器指令集(例如,甚至未包含AES加速)与例如45时钟/字节的延迟相关联。要是能在硬件中加速AES,AES-GCM的成本便可减小到20时钟/字节,这仍不可以支持高带宽联网。另一方面,在采用本文论述的加速技术的GFMUL指令以及在硬件中加速AES的情况下,单个处理器核可在10Gbps范围内执行AES-GCM(即,在高速分组处理中批量加密和认证)。例如,考虑假想处理器核的4GHz时钟速率以及(最坏情况)3个时钟AES轮实现(round implementation)。这里,使用所提出的技术,GCM可按3.3时钟/字节来执行,转换为10Gbps。
而且,本文论述的实施例与其它硬件实现之间的差异是,GFMUL指令不是域特定的,并且因此可用于多种其它应用(例如,椭圆曲线密码术)。为了避免使用域特定(field-specific)的XOR门树来执行约简,在一些实施例中,本文论述的至少一些约简方法可能需要相对较少数目的软件形式的移位和XOR运算。
在本发明的多种实施例中,本文参考例如图1-5论述的操作可作为硬件(例如,逻辑电路)、软件(包括例如控制诸如参考图4-5所论述的处理器的处理器操作的微代码)、固件或其组合来实现,它可作为计算机程序产品来提供,例如包括其上存储有指令(或软件程序)的有形机器可读或计算机可读介质,所述指令(或软件程序)用于对计算机(例如,计算设备的处理器或其它逻辑)编程以执行本文论述的操作。机器可读介质可包括诸如参考图4-5论述的那些存储设备。
此外,这种计算机可读介质还可作为计算机程序产品下载,其中可以经由通信链路(例如,总线、调制解调器或网络连接)通过在载波或其它传播介质中实施的数据信号将程序从远程计算机(例如,服务器)转递到请求计算机(例如,客户端)。因此,这里的载波可视为包括无形机器可读介质。
因此,尽管以结构特征和/或方法动作特有的语言描述了本发明的实施例,但是应当理解,所要求的主题不局限于所描述的特定特征或动作。确切地说,将这些特定特征和动作作为实现所要求的主题的范例形式来公开。
权利要求
1、一种方法,包括
将无进位乘法的乘积的最高有效部分与第一值相乘以生成第二值;
将所述第二值的最高有效部分与在块密码中使用的最终域的不可约多项式的最低有效部分相乘以生成第三值;以及
基于所述第三值确定余数。
2、如权利要求1所述的方法,其中所述第一值包括根据伽罗瓦计数器模式(GCM)将2256与所述块密码中使用的所述最终域的所述不可约多项式相除所得的商。
3、如权利要求2所述的方法,其中所述块密码包括高级加密标准(AES)密码。
4、如权利要求1所述的方法,还包括基于所述余数的值生成信号,其中所述余数的值指示根据伽罗瓦计数器模式(GCM)经加密的消息是否是可信的。
5、如权利要求1所述的方法,其中确定所述余数包括将所述第三值的最低有效部分与所述乘积的最低有效部分执行异或运算。
6、如权利要求1所述的方法,还包括执行密文和散列值的无进位乘法运算以生成所述乘积。
7、如权利要求6所述的方法,其中所述密文和所述散列值均包括128位数据。
8、如权利要求1所述的方法,其中所述乘积包括256位数据,并且所述乘积的最高有效部分包括128位数据。
9、如权利要求1所述的方法,其中所述乘法运算是通过64位的无进位乘法运算来执行的。
10、如权利要求1所述的方法,其中将无进位乘法的乘积的最高有效部分与第一值相乘以生成第二值包括
将128位输入的64个最高有效位向右移位63、62和57个位位置;以及
将移位后的位与所述输入的64个最低有效位执行异或运算。
11、如权利要求1所述的方法,其中将所述第二值的最高有效部分与在块密码中使用的最终域的不可约多项式的最低有效部分相乘以生成第三值包括
将128位输入向左移位1、2和7个位置;以及
对移位后的位执行异或运算。
12、一种包括一个或多个指令的计算机可读介质,所述指令在处理器上执行时将所述处理器配置成用于
将无进位乘法的乘积的最高有效部分与第一值相乘以生成第二值;
将所述第二值的最高有效部分与块密码中使用的最终域的不可约多项式的最低有效部分相乘以生成第三值;
基于所述第三值确定余数;以及
基于所述余数的值使信号生成,其中所述余数的值指示根据伽罗瓦计数器模式(GCM)经加密的消息是否是可信的。
13、如权利要求12所述的计算机可读介质,还包括一个或多个指令,所述一个或多个指令将所述处理器配置成用于执行密文与散列值的无进位乘法运算以生成所述乘积。
14、如权利要求12所述的计算机可读介质,还包括一个或多个指令,所述一个或多个指令将所述处理器配置成用于
将128位输入的64个最高有效位向右移位63、62和57个位位置;以及
将移位后的位与所述输入的64个最低有效位执行异或运算。
15、如权利要求12所述的计算机可读介质,还包括一个或多个指令,所述一个或多个指令将所述处理器配置成用于
将128位输入向左移位1、2和7个位置;以及
对移位后的位执行异或运算。
16、一种系统,包括
存储器,用于存储无进位乘法指令;以及
处理器,用于执行所述无进位乘法指令以确定经加密的消息是否是可信的。
17、如权利要求16所述的系统,其中所述处理器根据伽罗瓦计数器模式来执行多个计算以确定所述经加密的消息的可信性。
18、如权利要求16所述的系统,其中所述处理器包括所述存储器。
19、如权利要求16所述的系统,其中所述处理器包括一个或多个处理器核。
20、如权利要求16所述的系统,还包括用于通过计算机网络接收所述消息的网络接口设备。
21、一种存储指令的计算机可读介质,所述指令使计算机能够
使用32或64位的无进位乘法指令来执行128×128位的无进位乘法;
将乘积模g来进行约简以形成块密码的模式的消息认证码;以及
使用所述块密码来实现网络通信的加密。
22、如权利要求21所述的介质,还存储用于保存128个最高有效位的指令。
23、如权利要求22所述的介质,还存储用于通过将所述输入的64个最高有效位向右移位63、62和57个位位置并将位移后的副本与所述输入的所述64个最低有效位执行异或运算来保存所述128个最高有效位的指令。
24、如权利要求23所述的介质,还存储用于将移位后的位与所述64个最低有效位执行异或运算的指令。
25、如权利要求24所述的介质,还存储用于将128位的数与g执行无进位乘法的指令。
26、如权利要求25所述的介质,还存储用于保存所述无进位乘法乘积的128个最低有效位的指令。
27、如权利要求26所述的介质,还存储用于通过将128位输入向左移位1、2和7个位置并对结果执行异或运算来保存所述最低有效位的指令。
28、一种计算机系统,包括
网络接口;以及
加密模块,用于使用32或64位的无进位乘法指令来获得128×128位的无进位乘法并将256位乘积模g来进行约简以形成块密码的模式的消息认证码。
29、如权利要求28所述的系统,所述加密模块用于保存所述乘积的128个最高有效位。
30、如权利要求29所述的系统,所述模块用于通过将输入的64个最高有效位向右移位63、62和57个位位置并将移位后的副本与所述输入的64个最低有效位执行异或运算来保存所述128个最高有效位。
31、如权利要求30所述的系统,所述模块用于将所述移位后的位与所述64个最低有效位执行异或运算。
32、如权利要求31所述的系统,所述模块用于将128位的数与g无进位相乘。
33、如权利要求32所述的系统,还包括用于保存所述无进位乘法的128个最低有效位的模块。
34、如权利要求33所述的系统,所述模块用于通过将128位输入向左移位1、2和7个位置并对结果执行异或运算来保存所述最低有效位。
全文摘要
描述用于加速伽罗瓦计数器模式(GCM)计算的方法和装置。在一个实施例中,可以使用无进位的乘法指令来执行对应于依据GCM验证加密消息的操作。还描述其它实施例。
文档编号G06F7/72GK101349968SQ200810214759
公开日2009年1月21日 申请日期2008年6月30日 优先权日2007年6月30日
发明者S·格伦, M·E·库纳维斯 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1