采用混合rijndaels-box的有效高级加密标准数据路径的制作方法

文档序号:7694292阅读:113来源:国知局
专利名称:采用混合rijndael s-box的有效高级加密标准数据路径的制作方法
技术领域
;^>开涉及一种密码算法,胁来说涉及一种高Mo密标准(AES )算法。
背景技术
密码学是一种依赖于算法和密钥来保护信息的工具。该算法是一种复杂的 数学算法,密钥是位串。存在两种J^^类型的密码系统秘密密钥系统以及公 开密钥系统。秘密密钥系统也被称为对称系统,其具有由两个或两个以上^J ] 方共享的单个密钥("秘密密银,)。单个密钥用于#(言息加密和解密。
由美国国家标准和技术协会(NIST)作为联邦信息处理标准(FIPS) 197 公布的高Mio密标准(AES)是一种秘密密钥系统。AES是一种能够#(言息力口 密和解码的对称块密码。
加密(cipher)利用秘密密钥(加密密钥)执行一连串的变换,从而将称为"明 文"的可理解的数据变换为称为"密文"的不可理解形式。力。密中的变换包括 (1) ^J ]异或(XOR)运期夺循环《round)密钥UM口密密钥导出的值)与状态 (二维的字节阵列)相加;(2)使用非线性的字节代3錄(S-Box)处理该状态; (3 )按不同的偏移量将该状态的后三行循环移位;以及(4)获取状态的所有 列,并(彼此独立地)濕合它们的数据以生成新的列。
解密(i^/口密)利用加密密钥^f亍一连串的变换,从而将"密文"块变换 为具有相同大小的"明文"块。i^o密中的变^^^加密中的变换的逆运算。
Rijindael算法在AES标准中规定,用于处理128位的数梧块,具有长 度为128、 192以及256位的加密密钥。这些不同的密钥M""^殳称为AES-128、 AES-192以及AES-256。
AES算法通过10、 12或14个连续的循环将明文变换为密文或者将密文变 换为明文,循环次数M取决于密钥的M。

发明内容
;^发明涉及一种装置,包括
务賭器,用于^^对第一^ft数与第二搡怍数的所有可能值执行的乘法运
算的预先计算的结果;以及
具有多个输入和单个输出的复用器,所述多个输入的^"个输X/A^斤述存 储器接收所述预先计算的结果之一,具有所述第^r^数的可能值之一的选择 符为所述单个输出选择所述预先计算的结果之一。
所述选择符是所述第J^^ft数的逆(inveree),并且所述预先计算的结果之一 将乘法运算和逆运對inverse operation)组合。
4^发明涉及一种方法,包括
在存储器中存储对第 一操作数与第二操作数的所有可能值执行的乘法运 算的预先计算的结果;以及
基于至复用器的具有所述第^^喿作数的可能值之一的选择符,选择在所述 复用器的输出处提供的所述预先计算的结果之一。
本发明涉^^一种系统,包括
动态随才/u4旨賭器,用于存储数据和指令;以及 津給到所述^i者器的处理器,用于执行所迷指令,所舰理器包括'.
^f诸器,用于^#对第一操怍数与第二操怍数的所有可能值执行的乘 法运算的结果;以及
具有多个输入和单个输出的复用器,所述多个输入的^"-个输入从所
述^[诸11#收所述结果之一,具有所述第>=4喿作数的可能值之一的选择符为所 述单个输出选择所必吉果之一。


随着以下详细的描述过程并参照附图,要,iOk利的主题的实施例的特征变 得更清楚,在附图中相同的数字表示相同的部分,其中
图1是一种系统的框图,该系统包括用于在通用处理器中执行AES加密或 解密循环才辦的aes数据3斜圣;
图2是图1所示的处理器的实施例的框图3是图1所示的处理器的局部的框图,该处理器包括图2所示用于^/f亍 AES解密的扭J亍单元的实施例;
图4是图3所示的AES ^:据^4圣的实施例的框图,该AES数据3^至包括 解密数据5$4圣;以及
图5是示出在128位数据^4圣中^f亍一个字节(8位)GF (28)逆运算的 实施例框图6示出图5所示的i^f可一种组合型i^法运算的实施例;
图7是示出图5所示的逆映射中用于计算常量多项g法的乘法器的框
图8示出当输入具有不对称的到达时间时用于通用乘法的乘法器的实施例。
尽管下文具体实施方式
是参考要^^又利的主题的示例实施例进行的,但是 各种替换、修改和变型对于本领域技#员是显而易见的。因此,应广义地看 待要,科又利的主题,并仅由所附权利要求中提出的所定义。
M实施方式
高级加密标准(AES)算法是一种计算密集的算法,其"-^i在软件中或在 专用处理器中执行。因此,加密一般仅用于加密^f诸在计算机中的信息的子集, 例如, 一紛类为"顶M^几密"的信息。但是,存树计算机中^#的更多信息 加密的需求。例如,如果所有^f诸在移动计算机中的信息渚財Ai口密,则当移动 计算才/^tt时,该信息将受到保护。
通常,用于加密和解密的一连串的变换一Ma合到单个数据^4圣。由于在各 阶段中要判定^皮执行中的操作是加密还^密以选择合适的变换,从而产生了 附加的延迟。由于在关4叙斜5上增加了延迟,这便,氐了执行加密/解密才辦的 狄。
通过将^^圣分离,可以单独i似尤化每个5^5以减少延迟。i^口密变换包括 用非线性字节^^灸表(S-Box)处理状态的逆S-box变换以及取所有列的状态并(彼J):M虫立地)混合^t据来产生新列的逆混合列变换。这两种变换都需要乘
法运算以及多个XOR运算,^^:键路径,特别是解密聘径增加了延迟。
根据本发明的一个实施例,通过将逆s-box和逆〉 洽列才辦组合可以减少
解密数据^4圣中经由逆'^曰洽列以及逆S-box的关^^i^4圣。
鉴于逆S-box和多项式乘法运算均是XOR逻辑的组合,在本发明的一个
实施例中,将逆';t給列运算的多项式乘法运算^AJ)J了逆s-box中。
图1是系统100的框图,该系统包括用于在通用处理器中才W亍AES加密或
解密循环操怍的aes数据路径103。系统100包括处理器101,,器控制中心 (MCH) 102以及输A/输出(I/O)控制中心(ICH) 104。 MCH 102包括用于
控制处理器101和务賭器108之间的通信的存储器控制器106。处理器101和
MCH 102经由系统总线116通信。处理器101可以是多种处理器中的任意一个 (如单核Intel Pentium IV⑧处理器、单核Intel Celeron处理器、Intel XScale
处理器或者多核处理器(如Md Pentium D、 Intel Xeon⑧处理器或Intel
Core Duo处理器))或4封可其他型号的处理器。处理器101中的aes数据^4圣103可以对^^诸在务賭器108和/或^f靳殳备112上的数据进行aes加密和解密循
环4緣
存储器108可以是动态随才踏ip^i者器(DRAM)、静态随才;L4耳傳賭器 (SRAM )、同步动态随才踏fl^賭器(SDRAM )、双数据率(DDR2) RAM或 者Rambus动态随才;i^:EMH诸器(RDRAM),以及^f^j封可类型的务賭器。
ICH104可以^JI]高速芯片到芯片的互连114 (如直接媒^4妄口 (DM)) 津^^到MCH102。 DM支持经由两个单向赠农的2吉比特/秒的并行传输il率。
ICH 104可包括用于控制与津給到ICH 104的至少一个^^i殳备112的通 信的存储I/O控制器110 。存<浙殳备可以是,例如磁盘驱动器、数字视频盘(DVD) 驱动器、压缩光盘(CD)驱动器、独立磁盘冗余阵列(RAID)、磁带驱动器或 其它^f浙殳备。ICH104可经^JD串行^fW、议(例如串行连接小型计算机系统 接口 ( SAS )或者串行高级技术连接(SATA))的^f^ 、iOL连118与^i殳备 112通信。
图2是图1所示的处理器101的实施例的框图。处理器101包括提f^口解
码单元206,用于将从一级(Ll)指令高速緩存202接Jlt5'J的处理器指令解码。 执行指令要用到的数据可以被,于寄存器文件208中。在一个实施例中,寄 存器文件208包括多个128位寄存器,以供aes指令用aes指令所用的数 据。
在一个实施例中,寄存器文件是一组类似于Intel Pentium MMX处理器中 提供的128位寄存器的128位寄存器,Intel Pentium MMX处理器具有流(勒旨 令多数据(S腸))扩展(SSE)指令集。在SIMD处理器中,以可一次性加 载的128位块来处理数据。128位寄存器允许在一次才辦中将指令应用到128 位块(16字节)。
提耳財口解码单元206从Ll指令高速緩存202提取宏指令,将宏指令解码 并将其拆分成称为微操作(pops)的简单才喿作。扭行单元210调度并IAi植些 微操作。在所示实施例中,执行单元210中的aes数据路径103包括用于aes指 令的微操作。引退单元212将执行的指令的结果写AJ'J寄存器或者^f诸器中。
图3是图1所示的处理器101的局部的框图,该处理器101包括图2中所 示的用于扭行AES加密和解密的扭奸单元210的实施例。
AES具有128位的固定块大小,以及128、 192或256位的密钥大小,并 iL^f称为"状态"的4x4 (16字节(128位固定块大小))字节阵列操作。AES 算法经过10、 12或14个连续循环将128位的明文块变换成128位的密文块(加 密),或者将128位的密文块变换成128位的明文块,循环的次数M取决于密 钥大小(128、 192或256位)。
下表l示出<躺128位密钥对128位块输入^Vf亍AES加密的128位结果的示例。
128位输入 00112233445566778899aabbccddeeff (十六进制) 128位密钥 000102030405060708090a0b0c0d0e0f (十六进制) 128位结果 69c4e0d86a7b0430d8cdb78070b4c55a (十六进制)
表l
在一个实施例中,用于在aes数据路径103中执行AES加密或解密的AES 指令(宏指令)可以通过符号表示方式定义为
<formula>formula see original document page 9</formula><formula>formula see original document page 9</formula>
<formula>formula see original document page 9</formula><formula>formula see original document page 9</formula>在将aes指令解码时,将在每个aes循环中用来控制^^呈的多个##:賴 在控制寄存器322中。这些^^t包括密钥的大小U28位、192位或256位)、 循环的次数(l、 10、 12或14)、操怍的类型(加密/解密),以^^否具有特定 的最后循环。AES微才剁乍基于n的值相应地执行n次AES循环。对于多个IO、 12、 14的循环值,aes微操怍可以对128位、192位或256位的密钥大小执行现 ^亍的标准aes。通过允"iff吏循环类型(最后或非#)成为可编程的,可以佳月 相同的aes指令和aes微操作来,执行一个20次循环的类似AES的加密(AES 型最后循环),或者仅"一次循环"通过。
当选中的操作(op)是加密(加密),AES数据路径103利用秘密密钥(加 密密钥)衫L行一系列的变4灸,将称为"明文"的可理^:据变^^称为"密il" 的不可理解形式,如上表1所示。对于^"个循环(1, 10, 12或14),利用由 即时密钥调度器300提供的循环密钥328,由aes数据路径103执行的加密中的 变换包括(1)利用异或(XOR)运期务循环密钥(从加密密钥导出的值)与 状态(二维字节阵列)相加;(2)利用非幾性字节代换表(S-Box)处理该状态; (3)按不同的偏移量将该状态的^三行循环移位;以及(4)获取状态的所 有歹'J,并(彼jH^虫立地)〉'f洽它们的数据以生成新的列。如果"special—last—round" 为"真",则不对:l^循环执行变换(4)。
寄存器文件304具有多个AES指令可4t^的128位寄存器(REG )。指定 这些128位寄存器REG[src]的其中 一个i^^诸用于第 一次aes循环的源操作数, 以及指定另一个128位寄存器REG[dst]^f新亥aes指令的结果。在发出aes指 令之前,将要由该aes指4^加密或解密的128位数据块^A到寄存器文件304 中的源寄存器306中。将在多次循环(l, 10, 12或14)中变换源操作^M是 供128位源数据的加密/解密的结果。该源^^数可以是^f吏用密钥加密的128 位明文或^f吏用密钥解密的128位密文。
当在aes指令已经^皮提ipU^解码单元206解;%^,才;W亍单元210才A/f亍aes 指令涉及才W亍与aes指令关联的微才辦。在^f躺aes指令的微才辨来4Mf加密或 解密才辦之前,^f亍单元210检索存储在寄存器文件304中的源搮作数以及原 始密钥。在所示的实施例中,源才,辦SRC] (128位块状态)被,在寄存器 306中以及128位、192位或256位密钥被^f诸在寄存器文件304中的寄存器308、 310中。在128位密钥的情况中,密钥的整个128位被^ft在寄存器文件304 中的一个128位寄存器(例如寄存器308)中。对于大于128位的密钥,最高有 效位(大于128位)被^^在另一个128位寄存器(例如,寄存器310)中。用 于aes指令的密钥大小^lt指示了密钥^^fi者在寄存器文件304的一个寄存器中 还是或多于一个以上的寄存器中。,密钥的寄存器文件304中的一个或多个 寄存器不会在执行aes指令期间被修改。在其他实施例中,可以使用寄存器文件 304中的其他寄存器^f诸密钥以及源l刺卡数。当aes指令的执行完g,将结 果[DST]4^诸在寄存器文件304中的寄存器312中。
为了减少^4与密钥相关的扩展密钥(即,用于IO, 12或14次循环的每 次循环的循环密钥)所需的存储器,执行单元210包括即时密钥调度器300。并 不预先生成扩展密钥并将其^#在表中,而是由该即时密钥调度器300即时地 生⑩口密/解密"循环密钥"328,即,它是下次aes循环所需的。将该加密/解密 循环密钥328转发到aes数据路径103以在下次aes循环中使用。该即时调度器 300包括256位密钥寄存器324 ^MH诸据以生iU广展密钥的原始密钥。根据密钥 大小(128、 192或256),将该原始密钥从寄存器文件304中的一个或两个寄存 器308、 310中^A^256位密钥寄存器中。
密钥扩展326将寄存器304中存储的n字节原始密钥扩M b字节扩展密 钥,其中扩展密钥的前n字节是原始密钥。例如,对于128位密钥,128位密钥 扩展成176字节扩展密钥,即,11x16字节,其中前16字节是原始128位密钥, 因jtbf盾环次数为10。 192位密钥的24字节扩展成208字节(13 xl6字节)以提 供12个"循环密钥", 一个循环密钥对应于12次循环中的一次,以及256位密 钥的32字节扩展成240字节(15 x 16字节)以提供14个"循环密钥", 一个循 环密钥对应于14次循环中的一次。
图4是图3所示aes数据路径103的实施例的框图。该aes数据路径103 包括两个独立的数据路径加密数据路径400和解密数据3斜圣402。加密数据路 径(加密)400执行aes加密循环,并包括用于下列阶段的微操作块状态404、 字节代换(SubByte)(S-box)408、移位4t(shiftrow)406、濕合列(mixcolumn)410 以^J口循环密钥(add round key)412。解密数据路径(i^p密)402扭行aes解密 循环,并包括用于下列阶段的微才刺乍逆移位flXtoverse ShiftRow)416、逆字节 ^i灸(Inverse SubByte) (S-Box) 418、逆〉V曰洽列(Inveree MixColumn)420和加循 环密钥422。在另一个实施例中,用于解密数据路径402的循环v^ft序列可以将
逆';f洽列420和加循环密钥422颠倒,其中按照下列次序4Mt^喿作序列逆移 位行416、逆字节^i灸(S-Box) 418、力口循环密钥422以及逆〉V給列420。
从体系结构可见性来看,刚好存在一个加密数据路径400和解密数据^4圣 402上共有的状态。当加载了原始状态时,通过各自的賴器432、 434,为块 状态404和块状态414加斜目同的值。通过为aes加密数据路径400和aes解密 数据路径402提4^开的块状态404、 414,分别寄存加密循环密钥和解密循环 密钥。例如,将加密循环密钥436定向到块状态404,以及将解密循环密钥438 定向到块状态406。在每次aes加密/解密循环之后,#^个块状态404、 414更 新为来自各自的力。循环密钥阶段412、 430的各自的下一个aes循环值。然而, ,艮据才^t才莫^l加密还^密,仅一个块状态值是有效的。
将加密数据^f至400的絲加密循环的输出^j诸在寄存器422中。将解密 数据^jf圣402的^解密循环的输出^fi者在寄存器424中。复用器426添加在 aes加密数据路径400和aes解密数据路径402之后,以选#^ aes循环的输 出取自aes加密数据3斜圣400还是取自aes解密数据3斜圣402。 器426能够 基于模式是加密还^f密来将aes加密^斜圣的^^循环的结^il者aes解密^4圣 402的^循环的结果作为aes指令的结果输出。
由于分开aes加密数据路径400和aes解密数据路径402,无需在Vh阶段 处用^it择aes才^ft是加密还^密的附加逻辑。因此,减少了经由aeslt据3各 径103的关键44^^迟。
jH^卜,aes加密数据路径400和aes解密数据路径402可以单独i^kii行优化。
例如,由于附加的异或(XOR)门,aes解密数据路径402中的逆';f洽列420比 aes加密数据^4至中的对应〉V給列410会引起更多延迟。通过将aes加密数据路 径400与aes解密数据路径402分开,可以从aes加密数据路径400的关键i 斜:5 中移除此附加的延迟。
在将:i^一次循环值寄存^目应的寄存器422、 424中、以4^給列变 换(加密路径中的混合列410,以&阵密数据路径中的逆混合列422)之前,最 后一次循环值绕过加密数据路径400和解密数椐路径402。添加加循环密钥(最 后一次)阶|殳420以便为加密的最后一次aes循环执^i口循环密钥操怍。添加加 循环密钥(最后一次)阶段430以便为解密的最后一次aes循环执^H盾环密钥 #ft。将附加的力口循环密钥(M—次)阶段420、 430与加密数据3斜圣400和 解密数据^斜圣402分开。因此,这会减少最后一次aes加密循环和最后一次aes 解密循环中的关键5^5延迟。
》M卜,由于没有在最后一次aes解密循环中扭^t^混合列420以及没有在 最后一次aes加密循环中扭/亍混合列410,非关4A的^一次解密/加密aes循环 中隐蔽了由复用器426引起的附加延迟。延迟看上去被隐蔽了,这是因为没有 附加的延迟被添加到aes加密路径400,而且经由最后一;W卩循环密钥428和复 用器426增加的延迟小于经过混合列410的延迟。
加密/解密模式选择是加密值有效还是解密值有效,并JUt过复用器426输 出有效的结果。由于将aes数据^f至103划分成^ f的aes加密/解密数据^4圣 400、 402而获得关4定5^至延迟的减少,使得处理器时钟频率的相应增加。
如本文"i链的,并行:t^十128位块状态执行加密和解密^f乍,并且输出操 作的有效结果(加密或解密结果)。下面将描述经由aes加密数据路径400和aes 解密数据路径402用于对128位块执行加密/解密操怍的流程。
当提f^口解码单元206将aes指令解码时,将寄存器文件304中賴的要 加密的数据块(128位)和原始密钥转发到aes数据路径103中的aes加密踏径 400和aes解密鴻4圣402以便进行处理。复用器432选择至块状态404、 414的 相应输A^/人寄存器文件304中提取的还M前aes加密循环或aes解密循环所 得到的aes循环密钥436。
在块状态404中,使用^f立XOR将aes加密循环的128位输入(状态)与 循环密钥(与该循环关联的扩展密钥的128位部分)相加,以生成128位中间 值(状态)。
^^多位行406中,128位中间值(状态)通过位线性变换,在位线性变换 中将4x4阵列的K亍(状态)向左循环移位。对于4x4阵列中的^"行,每 个字节被移位的位置的数目均不同。
在S-box (字节代换)408中,将移位行的结果的每个字节代换为可^f诸在 也称为"^y奐盒"或"S-Box"的查询表中并从中检索的另一个字节值。。S-box 取出某个数量的输入位,m,并将它们变换成某个数量的输出位,n, S-box通 常作为查询表来实现。。在一个实施例中,可以使用固定的查询表。itW^t通过 使用伽罗华域(GF) (28)上的逆函数来提供非线性。例如,可以通过使用m 位输入的夕卜部两个位絲择查询表中的一行,^H賴m位输入的内^[M立选择列 来查找n位输出。
在混合列410中,来自S-Box 408的结^it过位线性变换,其中将4x4阵 列(状态)的^""列视为二进制伽罗华域(GF) (28)上的一个多项式,然后乘 以固定多项式c(x>=3x3+^+x+2并对x4+l耳4莫。
〉 洽列410 ^的力口循环密钥412对从即时调度器300接收的下一个aes 循环密钥328与aes循环结果l^f亍异或函数。
# aes加密循环不同于其他aes解密循环^h在于,它省略了〉V曰洽列阶 段410。
在块状态414中,利用4剡立XOR将aes解密循环的128位输入(状态)与 循环密钥(与jJfef盾环关联的扩展密钥的128位部分)相加,以生成128位的中 间值(状态)。
在逆移位行418中,执^^f移位行406的逆运算。 在逆S-box (字节代换)416中,扭行对S-box408的逆运算。 在逆)V曰洽列420中,对4x4阵列中的四列(c)的f列的[字节(sO-S3 ) !^f亍下面的逆混合列变换
s、0,c = ( (0E} sO,c )十((OB" sl,c ) ( {0D— s2,c ) ( {09> s3,c ) s、l,c = ( {09}* sO,c) ( {OE}* sl,c) ( {0B} s2,c) ( {0D} s3'c) s、2,c = ( (0D} sO,c ) ( {09}* sl,c ) 0 ( (OE)拳s2,c ) ( {0B} s3,c ) s、3,c = ( (0B} sO,c ) ( (0D} sl,c)①({09} s2,c )④({OE}* s3,c )
上面示出的变^^针对一列(c)的。该列具有标记为sO, sl, s2, s3的四 字节。E, B, D和9是常辨contanst)多项式值,其乘以每一字节来计算输出字 节(s,O-s,l)。通过将列中的所有字节乘以这些常数值中不同的一个常数值并对 每个乘法运算的结果执行异或(XOR)运算来计算^-个输出字节s,0, s,l, s,2, s3。因此,每个输出字节需要四;棘法运算和三次XOR运算。除了每列每个输 出字节的三次XOR运^^卜,该常数多项式乘法需要大量XOR运算。因此, 逆混合列3愤密数据路径402增加非常大的关键^斜圣延迟。
逆〉V曰洽列阶段420 ^的力口循环密钥422对来自即时调度器300的加密/ 解密循环密钥328以及先前aes解密循环操作的结果^^于异或函数。
# aes解密循环不同于其他aes解密循环^h在于,它省略了逆混合列 阶段420。
根据本发明的一个实施例,可以通过将逆s-box和逆〉V給列运算组合来减 少经由解密数据路径402中的逆混合列420和逆S-box418的关4A^i^各径。
因为逆S-box和多项式乘法运算都是XOR逻辑的组合,所以在本发明的 一个实施例中,将多项式乘法运算^Ai!]i^且合s-box和混合列430中。代# 询表,逆组合S-box和混合列430使用函数复合域(functional composite-field ) 来才Afr逆S-box运算。
逆字节代^嫂换通itl且合两个变换来构成
1. 仿射变换
2. GF (28)中的逆运算
域GF (28)是域GF (24)的扩展。因此,GF (28)中的每个元素a可以 表示为GF (24)中的3hX+ai形式的多项式。因此,GF (28)中的逆运算可以通 过下面GF (24)中的多项式逆运算来实现
(ahx + ai)" =(ah d)x + (ah ai) d 女招^ 1
d = ((ab2 {0E}) (ah a, ) a'2)'1 方程式2
图5是图示用于在128位数据5^至中为子集(8位)执行GF (28)中的逆 运算的实施例的框图。"元素a" 520是8位的,并表示GF (28)中的多项式。
在映射502中对GF (28 ) 520中的字节a执行映敝算,以将GF (28)中 的元素a表示为GF (24)中的3hX+ai形式的多项式。字节^i灸3h是字节a的高 阶4位,而字节^i灸a是字节a的低阶4位。GF (28)中的逆字节^U灸a,即, (a) J在GF (24)中由上面的方程式l中的Ux+a!)"表示,且首先需要计算 d,如上面的方程式2中所示。
乘法器504、 506和XOR函数514执行上面的方程式l的计算。将字节代 换ah和a!输/^)J乘法器504和506。乘法器504计算方程式2中的(ahg) a{),而 乘法器506计算方程式2中的((3h2 {0E}) aft。乘法器504和乘法器506的结 絲XOR函数514中被XOR,这提供以下方程式3的结果
d' = ((ah2 {OE)) (ah a, ) a,2) u ,
万禾王式3
因为关^t^i^斜至经由乘法器504、 506和XOR函数514。为了减少关键 延il^4至中的延迟,并不是在XOR函数514 ^执行方程式2所需的逆运算, 而是在组合逆乘法运算508、 510^执行逆运算。
在计算了 d,^,存在两个可由组合的i^法运算508、 510使用d,来并 行地计算的乘法运算。组合的i^法508利用从XOR函数516接收的(^口 ai) 的结果来一A^(ah口 ai) d。组合的i^法510扭/ft(^0 d)x。
如前面论述的,关^^i^!4圣是经由乘法器504、 506和XOR函数514的 对d,的计算。因为可以将GF (24)中的系数的逆运算^v在查询表中,所以可 以将d,的逆运算甘^v在组合的iil^法508, 510的查询表中。这从关^^i^^圣 中免去为提供方程式2所需的d而进行d,的逆运算。
在组合的逆乘法508、 510中已经才yvf亍乘法和逆运粒后,逆映射运算512 将GF (24)中的元素转换回域GF (28)。为了进一步减少aes解密数据路径中 的关键^4至延迟,逆映舳逸算512也可以包含GF (28)中的4个多项式乘法, 将它们^v在逆映浙逸算中。GF (28)中的4个多项式乘法提供将组合的* 法的结果乘以4个常数多项式值的每一个(即,逆混合列变换所需的E, B, D
和9)的结果。
除了扭行从4到8位域的变换外,逆映射运算512也^/f亍逆仿射变换,用 于如F1PS 197指定的解密。用于逆映射逸算512中的解密的逆仿射变换的组合 进一步减少经由aes解密5^圣402的延迟。
图6示出了图5中所示的组合的,法运算508、 510中的^—个的实施 例。当由乘法器506、 504计算d,时,将组合的乘法运算508、 510的输入、即 a或3h输入到查询表(存储器)602,来为将第一操作数(&或ai)与第二 才剁乍数(d)的所有可能值相^it择一组预先计算的乘法结果。在图6所示的实 施例中,组合的錄法510提供将4位值3h乘以4位值d的结果。
例如,在d具有4位的实施例中,存在16种可能值(0000b-llllb)。因此, 将(第一操作数)与d'(第二操作数)的16个可能值的^-"个值相乘的16 个可能结果^H诸在查询表602中。如图6所示,将ah与d相乘的所有可能结果 ##在查询表602中。当接4t5ij请求^4lr出对输入ah的乘法运算的结果时,将 3h乘以d,的每个可能值的逆的结果(d),即,查询表602中存储的ah*(0A (-l))-ah*(15 "(-1》输出到复用器604的输入(标为0-15 )。在已经由乘法器504, 506和XOR函数513计算d,之后,d,选择复用器604的输入中的其中一个作为 d伞3h来输出。
由于d,的计算是在关键^li^各径上,d,^i ] ^/人复用器604选择乘法运算 的结果。在计算d,时,ah^^]^i4择查询表602的输出。当d,可用时,基于d, 的U^人复用器604输出3h与d (d'的逆)相乘的组合结果。
例如,如果ah是1001b,则将此l錄以d的每个可能值(即,OOOOb-llllb), 并将其^fi者在查询表602中。将这些值从查询表602输出,并在复用器604的 16个输A^h提供。当已计算d,时,它选择复用器中作为a^d的结果的输入,以 从复用器604输出。例如,如果d,是1010b,d是0101b,通过d,选择作为a^0101b 的结果的输入IO。由于查询表602将乘法函数和取逆函凝i且合,所以减少了关 键樹圣延迟。
例如,对于四位^ft数(选择符d',才^ft数d和才辨数ah),用于存4細 先计算的结果值的区域的增加不大。同样在查询表602中查询预先计算的值的
延迟^^法运算504、 506和XOR函数514中计算d,所花的时间所隐蔽。
为了进一步减少解密数据^斜圣中的关4A^i^4圣,逆,512可以预先计 算与常数多项式E, B, D和9相乘的结果,以用于如下的逆混合列变换 s、0,c = ( {0E}* sO,c〉④({0B}* sl,O s2,c )必({09}, s3,c )
s、 l,c = ( {09}* sO,c) @ ( {OE}* sl,c) ( {0B} s2,c ) ( {0D— s3,c ) s、2,c = ( sO,c) 9 ( (09} sl,c ) (卿* s2,c) e ( {0B}, s3,c )
s、3,c = ( sO,c) ( sl,c) ({09} s2,c ) (卿,s3,c )
图7是图示用于执行图5所示逆映射512中的常数多项i(^法运算的乘法 器的框图。在所示实施例中,每个乘法器700、 702、 704、 706存储对字节s0、 sl 、 s2或s3的其中之一的4位字节^y灸(较^l立或较高位)的所有可能{1^以 多项式E、 9、 D或B的其中之一的预先计算的结果。例如,乘法器700^H诸将 多项式E与具有16个可能值OOOOb-llllb的4位字节^^奐的所有组合相乘的结 果。
每个乘法器700、 702、 704、 706包括一个16: 1复用器604,如结合图6 i链的。然而,因为一个才辦a^常数(E, 9, D或B),所以不需妙询表602。 而是可以在复用器604的输7^1:提供可^##賭器中的已务賭的预先计算的 结果。
基于字节代换的值^i^择所^^诸的预先计算的结果之一。预先计算常数多 项式乘以所有可能的字节代i灸值的所有可能结果减少了经由用于扭行逆混合列 变换的逆映射512的延迟。然后利用每个字节代换的预先计算的结^it过XOR 逻丰射丸行XOR运算来计算逆';^^列变换的输出(s,0-s'3 )。
图8示出当才辦数(输入)具有不对称的到达时间时用于通用乘法的乘法 器800的一个实施例。参照图8,乘法器800包括查询表802,其^^f贞先计算 多项式B与4位字节代换A的所有组合的结果。
当如结合图5中所"i^i的,计算字节^i灸A时,在16: l复用器804的输 M提供B乘以字节代j奐B的每个可能值的结果。字节代^灸Ai^fit合的输入, 并站复用器延迟时间^输出将字节^i灸Ai乘以B的结果,其中复用器延迟 时间短于才A/f亍B乘以字节代^奐A所用的时间。
图8所示的用于计算常数多项式计算的乘法器的实施例可以用来减少存在 不对称延迟(即经由一个路径的延迟慢于经由另一条膝f圣的延迟)情况下的关
键^fS^迟。例如,当可以扭^"5(于查询表802的查询,同时在3于关#^^斜圣 计算复用器选择符(selector) (A)时。使用经由最f曼路径(A)计算的梯作数来 选择U ]器804的输出, <躺经由较快3斜圣(B)计算的操作iuM^亍表查询。 从而,减少了关键5^圣延迟,因为经由复用器的延迟小于两个才辨数均为有效 ^!^亍乘法运算的附力口延迟。在一个实施例中,乘法器800可以用来执行图5 所示的乘法器504中的乘法运算。
对于本领域技术人员来说,将显见到本发明实施例中包含的方法可以在包 ^i十算机可用媒介的计算才财呈序产品中实施。例如,这种计算才几可用々某介可以 由其上^(诸有计算机可读程序^M的只读^^者器装置(例如压缩光盘只读^^诸 器(CDROM)或传统的ROM装置,或计算才/U兹盘)组成。
虽然参照实施例已经特别示出并描ii^发明的实施例,但是本领域技" 员将认识到,在不背离所附权利要求涵盖的本发明实施例范围的前提下,可以 作出M形式和细节上的变化。
权利要求
1.一种装置,包括存储器,用于存储对第一操作数与第二操作数的所有可能值执行的乘法运算的预先计算的结果;以及具有多个输入和单个输出的复用器,所述多个输入的每一个输入从所述存储器接收所述预先计算的结果之一,具有所述第二操作数的可能值之一的选择符为所述单个输出选择所述预先计算的结果之一。
2. 如权利要求l所述的装置,其中所iii^择符是所述第J^刺乍数的逆,并 JL^斤述预先计算的结果之一将乘法运算和逆运算组合。
3. 如权利要求l所述的装置,其中所述选择符、所述第一才^ftit和所述第 ^^^刺t数均具有4位。
4. 如权利要求l所述的装置,其中所述第一#^ :第一常数多项式值。
5. 如权利要求4所述的装置,其中所述第一常数多项式值^l]于aes解密 路径中解密操作的逆濕合列变换的多个常数多项式值之一。
6. 如权利要求5所述的装置,还包括多个M器,所述多个賴器的每个复用器接^^十多个常数多项式值之一 与所述第^4喿作数的所有可能值执行的乘法运算的结果,卄綠个:M器的输出 组合来提供逆混合列变纟灸的结果。
7. 如权利要求4所述的装置,其中所述预先计算的结果用于执行aes解密 路径中的解密操作的逆字节^U灸变换。
8. 如权利要求l所述的装置,其中所 择符晚于所述第一净刺乍数有效。
9. 一种方法,包括在存储器中存储对第 一操作数与第二操作数的所有可能值执行的乘法运 算的预先计算的结果;以及基于至复用器的具有所述第^^*^数的可能值之一的选^#符,选择在所述 ^器的输A^:提供的所述预先计算的结果之一。
10. 如权利要求9所述的方法,其中所述选择符是所述第^^^ft数的逆, 并且所述预先计算的结果之一将乘法运算和逆运算组合。
11. 如权利要求9所述的方法,其中所^择符、所述第一##^:和所述 第_^辨数均具有4位。
12. 如权利要求9所述的方法,其中所述第一#^乍 ^—常数多项式值。
13. 如权利要求12所迷的方法,其中所述第一常数多项式^^用于aes解 密路径中解密操作的逆混合列变换的多个常数多项式值之一。
14. 如权利要求13所述的方法,还包括由多个复用器之一接收对多个常数多项式值之一与所述第二操作数的所 有可能值执行的乘法运算的结果,##个复用器的输出组合来提供逆';^^列变 换的结果。
15. 如权利要求12所述的方法,其中使用所述预先计算的结果来执行aes 解密路径中解密操作的逆字节代换变换。
16. 如权利要求9所述的方法,其中所iiii择符晚于所述第一:^[乍数有效。
17. —种系统,包括动态随才^^耳傳賭器,用于^fi者数据和指令;以及 津給到所述^f诸器的处理器,用于执行所述指令,所舰理器包括^H诸器,用于^#对第一#^乍数与笫>=*^数的所有可能值#^亍的乘法 运算的结果;以及具有多个输入和单个输出的复用器,所述多个输入的^-个输入从所述^#11#收所1^吉果之一,具有所述第^^喿作数的可能值之一的选择符为所述 单个输出选择所必吉果之一。
18. 如权利要求15所述的系统,其中所ii^择符是所述笫^r4辨数的逆, 并且所述结果之一将乘法运算和逆运算组合。
19. 如权利要求15所述的系统,其中所iiit择符、所述第一才辦数和所述 第_^#^数均具有4位。
20. 如权利要求15所述的系统,其中所述第一^f乍tt^常数多项式值。
全文摘要
通过提供分开的解密数据路径,提高了在通用处理器中执行AES解密操作的速度。通过在逆字节代换变换中将乘法和逆运算组合,减少了aes解密路径的关键路径延迟。通过将逆混合列变换的适合常数合并到映射函数,进一步减少了aes解密数据路径中的关键路径延迟。
文档编号H04L9/06GK101350714SQ20081010925
公开日2009年1月21日 申请日期2008年3月28日 优先权日2007年3月30日
发明者E·奥兹图克, G·沃尔里奇, K·S·亚普, V·戈帕尔, W·K·费哈利 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1