CN111756520A - 超低时延高级加密标准 - Google Patents
超低时延高级加密标准 Download PDFInfo
- Publication number
- CN111756520A CN111756520A CN202010128964.XA CN202010128964A CN111756520A CN 111756520 A CN111756520 A CN 111756520A CN 202010128964 A CN202010128964 A CN 202010128964A CN 111756520 A CN111756520 A CN 111756520A
- Authority
- CN
- China
- Prior art keywords
- box
- function
- logic function
- implication
- base
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3006—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
- H04L9/3026—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters details relating to polynomials generation, e.g. generation of irreducible polynomials
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/122—Hardware reduction or efficient architectures
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- Mathematical Optimization (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Storage Device Security (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
在一个示例中,一种用于高级加密标准(AES)替代盒(S‑盒)加密的设备包括S‑盒逻辑函数和混合列乘法运算。S‑盒逻辑函数将状态作为输入,并且是8位至8位逻辑函数,并且其中S‑盒逻辑函数被最小化,使得S‑盒轮包括九个与非(NAND)级,并且最小化的S‑盒逻辑函数的逻辑积的重复被消除。混合列乘法运算包括多个因子,所述多个因子与S‑盒轮的输出进行“异或”(XOR)以获得缩放的16字节输出。
Description
技术领域
本公开一般涉及密码算法。特别地,本公开涉及高级加密标准(AES)的低时延实现。
背景技术
高级加密标准(AES)是一种能加密和解密信息的对称块密码。美国国家标准与技术研究院(NIST)于2001年11月26日宣布AES为美国FIPS PUB 197 (FIPS 197)。
附图说明
通过参考附图可以更好地理解以下详细描述,附图包含所公开主题的许多特征的特定示例。
图1是两个示例性S盒变体的框图;
图2是两个示例性逆S盒变体的框图;
图3是实现超低时延AES的方法的过程流程图;
图4是实现最大素数覆盖搜索的方法的过程流程图;
图5是实现分而治之替代搜索的方法的过程流程图;
图6图示了用于超低时延AES的非暂时性计算机可读介质的框图;
图7是处理核内的超低时延AES配置的第一用例;
图8是超低时延AES配置的第二个用例;
图9是超低时延AES配置的第三用例;以及
图10是实现超低时延AES的主机计算装置的示例的框图。
在一些情况下,在本公开和附图通篇使用相同的数字来指代相似的组件和特征。100系列中的数字指的是最初在图1中发现的特征;200系列中的数字指的是最初在图2中发现的特征;以此类推。
具体实施方式
通常基于Rijndael块密码通过使用高级加密标准(AES)支持加密。在示例性AES实现中,使用秘密密钥(密码密钥)执行一系列变换,以将被称为“明文”的可理解数据变换成被称为“密文”的不可理解形式。密码中的变换包括密钥扩展、替代盒(S盒)、移位行、混合列和添加轮密钥。用于AES密码的密钥大小指定了将明文转换为密文的变换轮数。每一轮由几个处理步骤组成,包括一个依赖于加密密钥本身的步骤。使用相同的加密密钥,应用一组反向轮将密文变换回原始明文。为了便于描述,可以使用单轮作为示例来描述AES功能性。然而,本技术可以应用于整个AES块。AES块包括根据特定密钥大小的所有AES轮。在AES标准中规定了Rijndael算法,以使用长度为128、192和256位的密码密钥来处理128位的数据块。不同的密钥长度通常分别被称为AES-128、AES-192和AES-256。AES算法在10、12或14个连续轮中将明文变换为密文或将密文变换为明文,其中轮数取决于密钥的长度。
在密钥扩展中,Rijndael的密钥调度将大小为128、192或256位的密钥分别变换为128位的10、12或14轮密钥。轮密钥可以是从密码密钥导出的值。轮密钥用于在轮中按照128位块来处理明文数据。明文数据被配置为四乘四(4 x 4)列主序字节数组,并最终转换为密文块。在示例中,可以使用“异或”(XOR)运算将轮密钥添加到状态。
S盒可操作以使用非线性字节替代表来处理状态。例如,在到该轮的128位(16字节)输入中,根据查找表,每个字节被另一个字节替换。S盒是计算密集型的,并且是AES中计算最复杂的变换。如下所述,本技术能够实现降低S盒变换的复杂度。
在移位行或移位行变换中,状态的最后三行被循环移位不同的偏移量。例如,行0可以移位0字节,行1可以移位1字节,行2可以移位2字节,而行3可以移位3字节。然而,移位行可以被视为一个简单的重新布线函数,并且从而表示对AES电路的微不足道的添加。在实施例中,移位行可以是独立于该域的特定排列。
在混合列中,状态的列独立于其他列进行混合,以产生新列。混合列函数取四个字节作为输入并且输出四个字节,其中每个输入字节影响所有四个输出字节。例如,状态可以是被分成四列的16字节状态。传统上,到混合列的状态输入是已经根据移位行变换移位的S盒的输出。
本技术能够实现经由减少的关键路径延迟而在大约两个时钟脉冲或周期中加密/解密数据的AES块。本技术减少了S盒逻辑的时延,同时实现了与传统S盒实现相同的处理吞吐量和面积。在示例中,关键路径延迟可以是关键路径中串联连接的门的最少数量。关键路径被定义为在输入和输出之间具有最大延迟的路径。为了便于描述,本技术已经经由示例性AES-128实现进行了描述。然而,可以使用任何AES实现。
本文描述了AES-128实现的第一变体和第二变体,它们将AES块的关键路径时延分别减少到90个NAND级和30个XOR级,以及90个NAND级和50个XOR级。在10纳米(nm)半导体工艺技术中,更快的第一变体的关键路径时延是1.35 ns。在10纳米工艺中,第二变体的关键路径时延为1.65ns。为了实现NAND级的减少,本技术使得实现了具有九个NAND级的S盒功能性。传统AES实现需要更加多的NAND级。在一示例中,在单轮中用于实现S盒的门总数是1218个门,其中用于整个AES块的门数排除密钥调度之外大约是20万个,而与密钥调度一起大约是24万个门。在实施例中,如本文描述的用于表达S盒的NAND门的具体数量可以从1200到1250个门的范围。这比其他传统解决方案的门计数更小。修改后的S盒的面积是合理的,其中“合理”是指S盒面积不超过2000个门的面积,如下所述。
说明书中对所公开主题的“一个实施例”或“一实施例”的提及意味着,结合该实施例描述的特定特征、结构或特性被包括在所公开主题的至少一个实施例中。从而,短语“在一个实施例中”可以出现在整个说明书的各个地方,但是该短语不一定指同一实施例。
本技术减少了S盒逻辑的时延,同时通过有效地实现8位到8位逻辑函数(也称为布尔函数)实现了与传统S盒实现相同的处理吞吐量和面积。逻辑函数采用两种新颖的启发法来有效地实现Quine-McCluskey算法,就像将S盒应用于逻辑函数一样。如本文所述,Quine-McCluskey算法优化逻辑函数并选择逻辑积。逻辑积可以被称为“蕴含项”,它们简化了逻辑函数表示。Quine-McCluskey算法是计算密集型的,与指数复杂度关联,并且通常被认为不适合大型或复杂的逻辑函数。
本技术用两个启发式过程扩充了Quine-McCluskey算法。为了有效地执行这两个过程,S盒的逻辑函数被写为最小项的和,或者逻辑函数的最小项扩展被确定,并且Quine-McCluskey算法被用于最小化该逻辑函数。用于扩充Quine-McCluskey算法的第一个启发式过程是如下所述的最大素数覆盖搜索算法。最大素数覆盖搜索算法导出简化的逻辑函数表示,其中“简化”指示具有显著更少的逻辑积和采用最小项之和表示的逻辑和的表示,并且与传统算法诸如Petrick方法相比时,其由多项式复杂度来表征。
用于修改传统Quine-McCluskey算法的第二个启发式过程是分而治之替代搜索算法,该算法进一步简化了S盒的逻辑函数表示。这些启发式过程不仅适用于S盒,而且适用于微调的S盒函数,该微调的S盒函数将S盒变换与在混合列和逆混合列变换(如图1和2所描述的)中遇到的因子0x2、0x3、0x9、0xb、0xd和0xe乘法相组合。
大多数AES实现使用合成域或费马反演来有效地实现S盒函数。S盒函数通常被认为是AES的主要计算密集部分。传统的合成域导致面积有效的S盒实现(通常需要300-500个NAND门)。然而,合成域的使用导致沿关键路径的显著时延(通常是每S盒40个或更多的NAND级)。其他实现采用二叉判定图(BDD),这将S盒的时延减少到大约10-20个NAND级。然而,这种BDD需要很大的面积,通常每S盒2000-4000个NAND门。相比之下,本技术导致每S盒仅9个NAND级和1218个NAND门的时延成本。如本文所使用的,级指的是逻辑过程,其中直到前一级的输出可用时,输入才对特定级可用。每级可以由若干逻辑门组成。在一示例中,本技术可将大约1218个NAND门用于S盒,这大约是传统实现的三至四倍。然而,当与以前的传统解决方案相比时,附加门被配置成采用数量显著更少的依赖步骤来产生结果。如本文所使用的,依赖步骤描述了其中处理不能被并行化的一系列步骤,因为下一步骤取决于前一步骤的值。
为了实现这种时延的减少并有效地执行Quine-McCluskey算法,逻辑函数(例如布尔函数)能被表达为最小项之和。最小项是逻辑积,其涉及输入的所有变量(即,位),并且其中每个变量表现为按原样或反相。在变量的反相形式和二进制数0之间以及在变量的非反相形式和二进制数1之间可以引入对应关系。以这种方式,每个最小项可以被表达为0和1的二进制序列。例如,以下最小项可以被表达为二进制序列10110100,其是十进制数180。
在逻辑设计的上下文中,这样的数字通常被称为“素数”。因此,使用这种对应关系,逻辑函数(其被表达为最小项之和)也与素数集合相关联。
考虑位长为n的素数集合,其中这些素数共同具有一些k位值,并且其中在所有其他m = n-k位位置中,该集合显示了所有可能的2m个二进制值。这样素数集合可以被称为“蕴含项”。例如,素数集合包含以下值:
180 = 10110100b, 181 = 10110101b, 188 = 10111100b 并且 189 = 10111101b
形成以下蕴含项:
其是大小为4的蕴含项。根据蕴含项的定义,变得显而易见的是,每个逻辑函数不仅可以被表达为素数集合,而且被表达为蕴含项集合。通过执行将素数最大分组成蕴含项而形成的蕴含项被称为“素数蕴含项”。如本文所使用的,素数的最大分组用于指示对于该分组不存在其他集合包含这些素数的分组,并且它们也是蕴含项。换句话说,对应于或关联于在具有共同位值的素数中的素数的最大分组的蕴含项可以被称为素数蕴含项。
蕴含项I“包含”素数p,或者“关联于”素数p,如果这个蕴含项是由包括P的素数集合形成的话。类似地,如果蕴含项I可以被表达为I=P∙P1,则逻辑积P是蕴含项的I的一部分,其中P1是某一其他逻辑积。而且,作为某一逻辑函数F的一部分的蕴含项I是“基本的”,如果它包含某一不包含在F的任何其他蕴含项中的素数p1的话。换句话说,基本素数蕴含项是覆盖至少一种不能被其他素数蕴含项的任何组合所覆盖的情况的素数蕴含项。
在一些情况下,将逻辑函数表达为素数蕴含项集合不是简化逻辑函数的最优方式。事实上,每一个逻辑函数通常只需要其素数蕴含项的子集,以便被最优地表达。这个子集包括所有基本蕴含项加上一些其他非基本蕴含项,这应该覆盖逻辑函数的所有素数。本技术在AES S盒逻辑函数设计的上下文中选择和优化非基本蕴含项,以将AES加密时间减少到不超过三个时钟周期。
图1是两个示例性S盒变体110和120的框图100。如上所述,S盒是AES数据路径的一部分。在实施例中,AES数据路径可以包括加密数据路径和解密数据路径中的每一个。加密轮可以包括各种阶段,诸如密钥扩展、替代盒(S盒)、移位行、混合列和添加轮密钥。解密轮可以包括各种阶段,诸如反向移位行、反向S盒、混合列、添加轮密钥和反向混合列。
图示了没有任何分组的第一S盒变体110。图示了具有分组的第二S盒变体120。在图2的示例中,每个S盒变体110和120可以被认为是AES的单个加密轮。本发明将S盒配置为8位至8位逻辑函数,并将该函数优化成使得仅使用九个级来实现S盒功能性,而不采用合成域、费马反演或实现AES S盒的其他技术。换句话说,在S盒的任何输入和输出之间级联的逻辑过程的最大数量是9。这种8位乘8位的逻辑函数实现可以被扩展到后续的混合列变换。特别地,独立的S盒逻辑可以根据在如变体120中所图示的混合列中找到的因子进行分组。如本文中所述的分组将S盒电路和来自混合列电路的乘法组合成单个逻辑函数。在实施例中,当S盒电路和混合列电路被分组时,可以对来自S盒的数据输出直接执行混合列乘法运算,而不像先前位于混合列中那样在乘法之前使用寄存器来存储来自S盒的输出。
16字节状态的每一列都被视为有限域(例如Galois域28 (GF(28))中多项式的四个系数,并在混合列变换期间乘以可逆线性变换。可逆线性变换可以通过Rijndael Galois域中的矩阵乘法来实现。在实施例中,矩阵是已知矩阵。在根据AES的128位密钥的示例中,混合列变换可以被执行为有限域中特定循环最大距离可分离(MDS)矩阵的乘法。
在AES的混合列变换中,状态的列被估算为GF(28)上的多项式,并采用固定多项式c(x)进行模X4+1相乘,c(x)由下式给出:
类似地,解密(逆密码)使用密码密钥执行一系列变换,以将密文块变换成相同大小的明文块。逆密码中的变换是密码中变换的逆。对于逆混合列,每一列都通过将其与特定的乘法多项式d(x)相乘进行变换,d(x)由下式给出:
从而,混合列变换将每个S盒输出与域GF(28)中的因子0x01、0x02和0x03相乘,并在这种运算的输出之间执行XOR运算。在实施例中,混合列变换可以被实现为矩阵乘法,其中进来的数据字节可以与预定的缩放因子相乘,并且经由XOR运算被组合以得到输出数据字节。
在变体110中,S盒逻辑112向每个乘法114A、114B、114C和114D输出一列数据,用于分别与预定因子1、1、2和3相乘。在XOR 116处,可以经由XOR运算将四字节的数据相加在一起,以获得输出字节。在变体120中,与域GF(28)中的因子的乘法被集成到如本文所述修改的S盒逻辑函数中,这进而将S盒后面的XOR级数减少了2。换句话说,将S盒与来自混合列的缩放组合成单个逻辑函数使能够减少两个XOR级。这种减少可发生在S盒变换完成后的级中。在变体120中的AES轮的总时延是9个NAND级加上3个XOR级的时延。如果分组没有如变体120中那样被启用,则AES轮的总时延是九个NAND级和五个XOR级(如变体110中那样)。在10纳米(nm)半导体工艺技术中,更快的变体120的关键路径时延是1.35 ns。在10纳米工艺中,变体110的关键路径时延为1.65ns。
变体120包括三个逻辑函数128A、128B和128C。每个逻辑函数包括独立的S盒逻辑和混合列乘法逻辑。逻辑函数128A包括S盒逻辑122A和乘法124A。逻辑函数128B包括S盒逻辑122B和乘法124B。逻辑函数128C包括S盒逻辑122C和乘法124C。每个S盒逻辑122向每个乘法124输出一列数据用于缩放。
图2是两个示例性逆S盒变体210和220的框图200。在变体210中,逆S盒逻辑212向每个乘法214A、214B、214C和214D输出一列数据,用于分别与预定因子9、b、d和e相乘。在XOR216处,可以经由XOR运算将四字节的数据相加在一起,以获得输出字节。变体220包括四个逻辑函数228A、228B和228C。每个逻辑函数包括独立的逆S盒逻辑和乘法逻辑。逻辑函数228A包括逆S盒逻辑222A和乘法224A。逻辑函数228B包括逆S盒逻辑222B和乘法224B。逻辑函数228C包括逆S盒逻辑222C和乘法224C。逻辑函数228D包括逆S盒逻辑222D和乘法224D。每个逆S盒逻辑222向每个乘法224输出一列数据用于缩放。
逆混合列变换将每个逆S盒输出与域GF(28)中的因子0x09、0x0b、0x0d和0x0e相乘,并在此类运算的输出之间执行XOR运算。类似地,本技术将通过这些因子将乘法配置为在被优化的S盒逻辑函数的一部分。这将S盒后面的XOR级数减少了两个。虽然本技术已经使用特定表示和有限域来被描述,但是如图1和2所描述的S盒和逆S盒可以应用于域GF(28)的任何其他同态表示。从而,本文描述的系数或因子可以根据S盒的特定表示而改变。
图3是实现超低时延AES的方法的过程流程图。方法300确实执行穷举搜索以选择剩余的蕴含项。而且,本技术未使用Petrick的算法。相反,本技术执行最大素数覆盖搜索算法和分而治之替代搜索算法以找到最终蕴含项。
在框302,确定逻辑函数的素数蕴含项。在框304,从逻辑函数的素数蕴含项确定基本蕴含项。然后,一个朴素方法应用穷举搜索方法来从那些最简化逻辑函数表达式的非基本的蕴含项中选择蕴含项。其他传统的AES实现应用Petrick的算法。穷举搜索和Petrick的算法二者特征在于显著的复杂度,其是指数级的。此外,穷举搜索和Petrick的算法实际上难以实现,尤其是对于像S盒这样的函数,其中素数和蕴含项为256的量级。
在框306,实现最大素数覆盖搜索算法。最大素数覆盖搜索返回基本蕴含项和选定蕴含项集合。这将参照图4进一步描述。在框308,执行分而治之替代搜索算法来找到最终蕴含项。最终蕴含项可以包括替代项列表,并且关于图5来进一步被描述。在实施例中,最大素数覆盖搜索,其与多项式复杂度相关联并且后面是分而治之替代搜索,这进一步简化了逻辑表达式。
图4是实现最大素数覆盖搜索的方法400的过程流程图。在框402,逻辑函数的每个蕴含项与素数集合相关联。在实施例中,这些是蕴含项包含的素数。在框404,所有基本蕴含项的素数都被标记为基本素数。在框406,找到与最大数量的附加素数相关联的蕴含项。最大数量的附加素数不同于目前考虑的基本素数。在这一点,附加素数不被认为是基本素数。迭代过程开始于框406。在框406,最大素数覆盖搜索确定关联于或包含最大数量的附加素数的蕴含项,最大数量的附加素数不同于当前考虑的基本素数。
在框408,在框406找到的蕴含项被标记为选定。在框410,基本素数集合被更新以包括与选定蕴含项相关联的所有附加素数。随后,该算法将基本素数集合更新成包括与选定蕴含项相关联的所有附加素数。
在判定框412,确定基本素数集合是否等于逻辑函数的素数集合。如果基本素数集合等于逻辑函数的素数集合,则过程流程继续到框414。如果基本素数集合不等于逻辑函数的素数集合,则过程流程返回到框406,在此以迭代方式找到与最大数量的附加素数相关联的下一蕴含项。在该当前迭代中的这个下一个蕴含项的最大数量的附加素数不同于当前考虑的基本素数。
从而,在判定框412,检查基本素数集合是否已经变得等于表征逻辑函数的素数集合。如果是,则迭代过程停止,并且算法返回选定蕴含项集合加上基本蕴含项集合。这些蕴含项构成了当前轮的优化逻辑函数表达式。如果否,则重复迭代过程,直到逻辑函数完全由基本蕴含项集合来表征。
如果逻辑函数由N个素数和M个素数蕴含项来表达,则图4描述的搜索的总体复杂度是多项式的,并且具体地说是。本技术实现了一种易驾驭的、可实现的算法。本技术的正确性源于迭代过程主体的定义以及当基本素数集合变得等于逻辑函数的素数集合时算法停止的事实。
下面是实现最大素数覆盖搜索的代码片断:
图5是实现分而治之替代搜索的方法500的过程流程图。分而治之替代搜索防止了逻辑积计算中的重复。这种重复可以作为各种逻辑函数输出(即,S盒输出位)的蕴含项的计算的一部分而发生。
在框502,逻辑积(蕴含项)大小被分成多个区域。首先,逻辑积的长度被分成多个区域,诸如大小为5-8位、大小为3-4位、大小为2位或更小的逻辑积。从而,用于指定逻辑积的位数就是逻辑积的大小。大小为6的逻辑积由6位指定。输入可以是直接形式或反相。如本文所使用的,区域由特定大小范围内的逻辑积定义。例如,大小为6的逻辑积可以包含在具有大小为5或更大的逻辑积的第一区域中。第二逻辑区域可以包括大小为三、四和五的逻辑积。第三区域可以包括大小小于2的逻辑积。在实施例中,可以存在任何数量的区域。区域的选择使得能够管理搜索的复杂性。
在基于大小将逻辑积分组成多个区域之后,分而治之替代搜索开始迭代过程。在框504,选择对应于当前区域的所有逻辑积以供考虑。可以考虑逻辑积的各种表示,诸如直接形式或反相。从而,获得当前区域,并且在当前迭代中考虑对应于特定区域的所有逻辑积。在框506,搜索逻辑积以找到是来自最大素数覆盖搜索的基本蕴含项和选定蕴含项集合中返回的最大数量蕴含项的一部分的逻辑积。在该搜索中,每个逻辑积是逻辑函数的输入位之间的有限域GF(2)中的积,其中输入位按原样出现,或者以它们的补的形式出现。考虑输入位的所有可能组合。搜索这些逻辑组合,以找到在先前选择的蕴含项中出现次数最多的一个。如本文所使用的,当第一逻辑积是第一蕴含项的一部分时,第一逻辑积是第二逻辑积的因子,其中第二逻辑积由在形成第一蕴含项的素数之间公共的输入位形成。在框508,确定是否存在作为最大数量蕴含项的一部分的逻辑积。如果作为最大数量蕴含项的一部分的逻辑积存在,则过程流程继续到框510。如果作为最大数量蕴含项的一部分的逻辑积不存在,则过程流程继续到框512。
从这些逻辑积中,分而治之搜索确定了是由前一阶段返回的最大数量蕴含项的一部分的逻辑积。如果这样的逻辑积存在,则在框510,逻辑积被指定为“替代”,并且其对于包含该逻辑积的所有蕴含项被计算一次。然后,在方框512,将逻辑积添加到替代列表,并且包含该替代的蕴含项的逻辑函数被修改成包括与该替代的相乘。随后,过程流程返回到框506,在此为下一最大数量蕴含项的一部分的下一逻辑积进行搜索。如果这样的逻辑积存在,则相同的过程再重复一次。如果这样的积不存在,则算法在框514检查是否有更多的区域要考虑。在框518,当没有更多区域要考虑时,算法停止,并且算法返回最终替代列表以及受该过程影响的所有蕴含项的修改的逻辑函数(即,包含替代)。对于所有受影响的蕴含项,每个替代都被计算一次。例如,如果最多有N个素数(在S盒的情况下是256个)、M个蕴含项和N个区域,则这个过程的复杂度是O(nMN)。这之所以成立,是因为在每个迭代中以及对于每个区域要考虑的逻辑积的数量都由最大数量的素数限定。
本技术通过采用最大素数覆盖搜索算法实现了具有合理面积成本的超低时延AES加密,该算法在Quine McCluskey逻辑优化过程的当前实现中替换了Petrick的算法。此外,本技术引入了新颖的分而治之替代搜索算法,其进一步简化了AES逻辑函数。此外,本技术不仅优化了S盒变换,而且优化了将S盒与作为混合列一部分的乘法相组合的修改后的S盒变换。
图6图示了用于超低时延AES的非暂时性计算机可读介质的框图。处理器602可以通过计算机互连604访问有形的、非暂时性的计算机可读介质600。更进一步,有形的、非暂时性的计算机可读介质600可以包括用于指导处理器602执行当前方法的操作的代码。
本文讨论的各种软件组件可以被存储在有形的、非暂时性的计算机可读介质600上,如图6中所示。例如,素数蕴含项模块606确定逻辑函数的素数蕴含项。基本蕴含项模块608从先前发现的素数蕴含项中确定基本蕴含项。在框610,最大素数覆盖搜索模块可以执行最大素数覆盖搜索算法。在框612,分而治之替代搜索模块可以执行分而治之替代搜索算法。
要理解到,图6中所示的任何合适数量的软件组件都可以被包括在有形的、非暂时性的计算机可读介质600中。更进一步,图6中未示出的任何数量的附加软件组件可以取决于特定应用而包括在有形的、非暂时性的计算机可读介质600中。
图7-9图示了AES配置的示例。图7是处理核702内的超低时延AES配置700的第一用例。在配置700中,可以在写入L1高速缓存之前执行加密,并且可以在从L1高速缓存读时执行解密。如图7中所图示的,在2-3个时钟中执行AES的能力具有深刻的含义。数据可以在处理器核702和存储器之间流动,如箭头708所指示的。特别地,数据流708可以包括对L1高速缓存706的读/写指令。存储在L1高速缓存中的数据根据本技术由超低时延AES块704加密。从而,本技术使得能够在到达L1高速缓存之前在核702加密存储器写指令。类似地,在从L1高速缓存获得读指令之后,读指令一到达核就可以将它们进行解密。在实施例中,AES加密的时延和访问L1高速缓存所花的时间量相当,其是两个时钟或时钟脉冲。从而,根据本文描述的技术的AES的时延对处理核与高速缓存之间的吞吐量没有显著影响。相比之下,传统的AES实现通常需要十个或更多的时钟来完成。这种时延使得传统AES不适合使用(如图7所示),因为它大大增加了向L1高速缓存读或写的时间。
图7所示的用例有别于在处理核之外发生的典型加密。在传统的实现中,数据通常在存储器控制器进行加密,其中AES消耗大约7纳秒(ns)来完成。本技术实现了遍布所有高速缓存级的加密。而且,本技术可以由存储器控制器执行。这种实现将用于AES完成的时间从7ns减少到1.5ns。在实施例中,传统的AES指令保持相同。然而,时延的减少是根据本技术的S盒逻辑和电路的结果。
图8是超低时延AES配置800的第二个用例。如上所述,本技术使得能够修改S盒,以优化AES的每一轮。使用加密/解密数据的迭代AES轮被认为是AES块。本文描述的减少的时延表征了整个AES块的时延。从而,在S盒出现的时延减少缩放到轮级,其进一步缩放到AES块级。两个时钟中的完成是整个块的完成。对于整个AES块,在S盒级的九个级转变为九十个级,这大约是两个时钟。从而,根据本技术的整个AES块与传统的AES轮实现一样快。
在图8中,寄存器802中的数据由AES密码加密指令806加密。AES密码加密指令806要使用一个指令来加密寄存器中的数据。在实施例中,AES密码加密指令806可以被实现为高级加密标准新指令(AES-NI)的备选。AES-NI指令集包括执行以下操作的指令:(1)执行一轮AES加密流程;(2)执行最后一轮AES加密流程;(3)执行一轮AES解密流程;(4)执行最后一轮AES解密流程;(5)协助AES轮密钥生成;(6)协助AES逆混合列;以及(7)无进位乘法。这些指令可以使用图1-5中描述的S盒逻辑来实现。在实施例中,可以执行类似的AES加密指令来加密或包装加密密钥。
图9是超低时延AES配置900的第三用例。AES指令可以经由如图1-5所描述的超低时延AES加密存储器指针902。从而,存储器参考指令内的数据位置可以被加密/解密。特别地,可以根据本技术对指示数据位置的存储器访问指令的操作数进行加密。这种操作数通常存储在寄存器中。如本文所述,加密认证模块906可以根据基于低时延AES的指令来实现指针的加密。低时延AES块908可以使得能够如上所述采用减少的S盒级支持加密/认证指令。
在框904,加密/认证模块906输出存储器参考指令中的加密指针。此外,另一个指令可以采用加密的指针,诸如偏移量,并解密该指针。可以将指针/偏移量添加到地址以定位数据,并且然后经由偏移量访问数据。AES块908可以在通常用于存储器访问的相同时间尺度内被执行。换句话说,本技术使加密/解密能够获知数据位于哪里,无需添加大量的时间来访问数据。
图10是实现超低时延AES的主机计算装置的示例的框图。一般来说,当与传统的AES实现(诸如AES-NI)相比时,本文所述的超低时延AES实现能够实现更快的AES密码加密和AES密钥包装指令。主机计算装置1000例如可以是移动电话、膝上型计算机、台式计算机或平板计算机等。主机计算装置1000可以包括适于执行所存储指令的中央处理单元(CPU)或处理器1002,以及存储可由处理器1002执行的指令的存储器装置1004。处理器1002可以是单核处理器、多核处理器、计算集群或任何数量的其他配置。在一些示例中,处理器1002可以是具有多核处理器架构的片上系统(SoC)。处理器1002可以包括超低时延(ULL) AES硬件1026A,以实现AES加密和解密操作。AES功能1026A可以位于处理器1002的管芯上。处理器1002还可以包括高速缓存1024。类似于图7,读/写指令可以实现在处理器1002和高速缓存1024之间流动的数据的加密。
存储器装置1004可以包括随机存取存储器、只读存储器或任何其他合适的存储器系统。例如,存储器装置1004可以包括动态随机存取存储器(DRAM)。存储器装置1004可以包括随机存取存储器(RAM)、只读存储器(ROM)、闪存或任何其他合适的存储器系统。存储器装置1004可以包括ULL AES硬件1026D,以实现存储器装置本地的AES加密和解密操作。AES功能1026D可以位于存储器装置1026D的存储器控制器或存储器引擎内。
计算装置1000还可以包括图形处理单元(GPU)1008。如所示,CPU 1002可以通过总线1006耦合到GPU 1008。GPU 1008可以被配置为执行计算装置1000内的任何数量的图形操作。例如,GPU 1008可以被配置为渲染或操纵要显示给计算装置1000的用户的图形图像、图形帧、视频等。GPU 1008可以包括ULL AES硬件1026B,以实现GPU本地的AES加密和解密操作。
处理器1002也可以通过系统互连1006(例如,PCI®, PCI-Express®, NuBus等)链接到适于将主机计算装置1000连接到显示装置1012的显示接口1010。显示装置1012可以包括作为主机计算装置1000的内置组件的显示屏。显示装置1012还可以包括在外部连接到主机计算装置1000的计算机监视器、电视或投影仪等。显示装置1012可以包括发光二极管(LED)和微型LED等。
处理器1002可以通过系统互连1006连接到适于将计算主机装置1000连接到一个或多个I/O装置1016的输入/输出(I/O)装置接口1014。I/O装置1016例如可以包括键盘和定点装置,其中定点装置可以包括触摸板或触摸屏等。I/O装置1016可以是主机计算装置1000的内置组件,或者可以是在外部连接到主机计算装置1000的装置。
计算装置1000还包括存储装置1018。存储装置1018是物理存储器,诸如硬驱动器、光驱动器、拇指驱动器、驱动器阵列、固态驱动器或它们的任何组合。存储装置1018还可以包括远程存储驱动器。存储装置1018可以包括ULL AES硬件1026E,以实现存储装置1018本地的AES加密和解密操作。AES硬件1026E可以位于存储器装置1026E的存储控制器或存储引擎内。
此外,网络接口控制器(本文也称为NIC)1002可以适于通过系统互连1006将主机计算装置1000连接到网络1022。网络1022可以是蜂窝网络、无线电网络、广域网(WAN)、局域网(LAN)或因特网等。
应当理解,图10的框图并不旨在指示主机计算装置1000要包括图10中所示的所有组件。而是,主机计算装置1000可以包括更少的组件或图10中未图示的另外组件(例如,附加的存储器组件、嵌入式控制器、附加的模块、附加的网络接口、存储器控制器等)。更进一步,ULL AES 1026A、1026B、1026D和1026E的任何功能性可以部分地或全部地用硬件实现和/或在处理器1002中实现。例如,功能性可以用专用集成电路来实现、用在嵌入式控制器中实现的逻辑来实现或者在处理器1002中实现的逻辑等中来实现。
下面的示例性逻辑说明了与乘法因子2(十六进制)组合的S盒逻辑函数。该示例性逻辑可以对应于图1中的逻辑函数128B。而且,该示例性逻辑演示了根据图5的方法500的替代位的计算。相应地,下面的示例包括使用S盒 X 0x02的输出位的替代位和优化的逻辑函数。下面列出了135个逻辑积替代S0-S134。逻辑函数包括8位输入数据,i0、i1、i2、i3、i4、i5、i6、i7,以及762个逻辑积替代运算。对于每一个单比特逻辑积替代,给出了使用对应替代的蕴含项集合中蕴含项的基数。在下面的示例中,上面描述的分而治之方法基于用于导出关联的替代位的输入位的数量来产生在各种大小的区域中找到的替代位。另外,给出了用于计算单比特逻辑积替代的门数。
从而,为了生成用于实现优化的S盒的逻辑,存在计算了一次的135个逻辑积替代。这些值是单比特值,它们在S盒输出的计算期间被重新用作替代蕴含项。每个单比特值可以被不止一次重复使用来表示蕴含项。762个逻辑积替代运算表明,在S盒结果的优化的计算中,有762个其中由逻辑积替代表示蕴含项的情况。
例如,替代位S0可以通过组合(经由“与”)反相位i0、反相位i1、反相位i4和位i7来被计算。基数指示替代位S0在15种情况中被重新使用,以替换优化的S盒中的15个蕴含项。而且,S0在计算中使用三个“与”门来导出替代位S0。当需要时,可以使用附加门(诸如反相器)来获得每个位的混合补码形式。然而,反相器的使用通常被认为是可忽略不计的。
具有替代的优化的逻辑...
计算替代
有135个逻辑积替代
可以有762个逻辑积替代运算
S0 := (~i0) * (~i1) * (~i4) * (i7) (基数 = 15, “与”门 = 3)
S1 := (~i0) * (~i1) * (i2) * (~i7) (基数 = 14, “与”门 = 3)
S2 := (i1) * (~i2) * (i3) * (~i7) (基数 = 14, “与”门 = 3)
S3 := (i3) * (i4) * (i5) * (~i7) (基数 = 14, “与”门 = 3)
S4 := (~i0) * (i1) * (i2) * (i4) (基数 = 13, “与”门 = 3)
S5 := (i0) * (i1) * (~i3) * (~i6) (基数 = 13, “与”门 = 3)
S6 := (i0) * (~i4) * (~i5) * (i6) (基数 = 13, “与”门 = 3)
S7 := (~i0) * (i1) * (~i3) * (~i4) (基数 = 12, “与”门 = 3)
S8 := (~i0) * (~i2) * (i4) * (~i6) (基数 = 12, “与”门 = 3)
S9 := (i0) * (~i1) * (~i2) * (~i5) (基数 = 11, “与”门 = 3)
S10 := (i0) * (~i1) * (i2) * (~i7) (基数 = 11, “与”门 = 3)
S11 := (~i0) * (~i5) * (i6) * (i7) (基数 = 11, “与”门 = 3)
S12 := (~i2) * (i3) * (~i4) * (i5) (基数 = 11, “与”门 = 3)
S13 := (i0) * (~i3) * (i4) * (i5) (基数 = 10, “与”门 = 3)
S14 := (i1) * (i3) * (~i5) * (i7) (基数 = 10, “与”门 = 3)
S15 := (i2) * (i3) * (~i4) * (~i6) (基数 = 10, “与”门 = 3)
S16 := (~i1) * (i2) * (i3) * (i4) (基数 = 9, “与”门 = 3)
S17 := (~i2) * (~i3) * (~i4) * (i5) (基数 = 9, “与”门 = 3)
S18 := (~i3) * (~i5) * (~i6) * (~i7) (基数 = 9, “与”门 = 3)
S19 := (~i0) * (~i1) * (i5) * (i6) (基数 = 8, “与”门 = 3)
S20 := (~i0) * (i1) * (i5) * (i7) (基数 = 8, “与”门 = 3)
S21 := (i0) * (i1) * (i3) * (~i6) (基数 = 7, “与”门 = 3)
S22 := (i0) * (~i1) * (i4) * (i6) (基数 = 7, “与”门 = 3)
S23 := (i0) * (~i2) * (~i4) * (~i7) (基数 = 7, “与”门 = 3)
S24 := (i0) * (i2) * (~i4) * (i7) (基数 = 7, “与”门 = 3)
S25 := (~i0) * (i3) * (~i4) * (~i7) (基数 = 7, “与”门 = 3)
S26 := (i1) * (i2) * (i5) * (~i7) (基数 = 7, “与”门 = 3)
S27 := (~i1) * (i3) * (~i6) * (i7) (基数 = 7, “与”门 = 3)
S28 := (i0) * (i1) * (i4) * (~i5) (基数 = 6, “与”门 = 3)
S29 := (i0) * (i4) * (~i6) * (~i7) (基数 = 6, “与”门 = 3)
S30 := (~i2) * (i4) * (i5) * (i7) (基数 = 6, “与”门 = 3)
S31 := (~i1) * (i2) * (~i3) * (~i5) (基数 = 5, “与”门 = 3)
S32 := (~i1) * (~i2) * (~i3) * (i6) (基数 = 5, “与”门 = 3)
S33 := (i1) * (~i2) * (~i4) * (~i5) (基数 = 5, “与”门 = 3)
S34 := (i0) * (i1) * (i2) * (i6) (基数 = 4, “与”门 = 3)
S35 := (i0) * (~i1) * (i3) * (i5) (基数 = 4, “与”门 = 3)
S36 := (~i0) * (~i2) * (i3) * (i4) (基数 = 4, “与”门 = 3)
S37 := (~i0) * (~i2) * (~i6) * (i7) (基数 = 4, “与”门 = 3)
S38 := (i1) * (i2) * (~i3) * (~i6) (基数 = 4, “与”门 = 3)
S39 := (~i1) * (~i2) * (~i5) * (~i7) (基数 = 4, “与”门 = 3)
S40 := (~i1) * (~i3) * (i4) * (i5) (基数 = 4, “与”门 = 3)
S41 := (i2) * (i3) * (i4) * (i6) (基数 = 4, “与”门 = 3)
S42 := (~i0) * (i1) * (i2) * (~i7) (基数 = 3, “与”门 = 3)
S43 := (i0) * (~i1) * (i5) * (i7) (基数 = 3, “与”门 = 3)
S44 := (~i0) * (i2) * (~i4) * (~i5) (基数 = 3, “与”门 = 3)
S45 := (i0) * (i2) * (i5) * (~i6) (基数 = 3, “与”门 = 3)
S46 := (i0) * (~i3) * (i4) * (~i7) (基数 = 3, “与”门 = 3)
S47 := (~i0) * (~i4) * (~i6) * (~i7) (基数 = 3, “与”门 = 3)
S48 := (i0) * (i5) * (i6) * (~i7) (基数 = 3, “与”门 = 3)
S49 := (i1) * (~i2) * (i5) * (~i6) (基数 = 3, “与”门 = 3)
S50 := (~i1) * (~i3) * (~i4) * (~i6) (基数 = 3, “与”门 = 3)
S51 := (i2) * (~i4) * (i6) * (i7) (基数 = 3, “与”门 = 3)
S52 := (~i0) * (i1) * (~i3) * (i4) * (i7) (基数 = 2, “与”门 = 4)
S53 := (~i0) * (i1) * (i3) * (i5) (基数 = 2, “与”门 = 3)
S54 := (i0) * (~i3) * (i6) * (i7) (基数 = 2, “与”门 = 3)
S55 := (~i0) * (i4) * (i6) * (~i7) (基数 = 2, “与”门 = 3)
S56 := (i1) * (~i2) * (i3) * (i6) (基数 = 2, “与”门 = 3)
S57 := (~i2) * (i3) * (~i4) * (~i5) (基数 = 2, “与”门 = 3)
S58 := (~i2) * (~i3) * (~i5) * (i6) (基数 = 2, “与”门 = 3)
S59 := (~i4) * (i5) * (~i6) * (i7) (基数 = 2, “与”门 = 3)
S60 := (~i3) * (~i6) (基数 = 15, “与”门 = 1)
S61 := (~i5) * (i6) (基数 = 15, “与”门 = 1)
S62 := (i6) * (i7) (基数 = 13, “与”门 = 1)
S63 := (i4) * (~i6) (基数 = 12, “与”门 = 1)
S64 := (~i3) * (i5) (基数 = 11, “与”门 = 1)
S65 := (~i5) * (i7) (基数 = 11, “与”门 = 1)
S66 := (i2) * (~i5) (基数 = 10, “与”门 = 1)
S67 := (~i3) * (~i7) (基数 = 10, “与”门 = 1)
S68 := (~i1) * (i7) (基数 = 9, “与”门 = 1)
S69 := (~i2) * (i5) (基数 = 9, “与”门 = 1)
S70 := (~i2) * (i6) (基数 = 9, “与”门 = 1)
S71 := (i3) * (~i4) (基数 = 9, “与”门 = 1)
S72 := (i0) * (i1) (基数 = 7, “与”门 = 1)
S73 := (~i0) * (~i6) (基数 = 7, “与”门 = 1)
S74 := (i2) * (i6) (基数 = 7, “与”门 = 1)
S75 := (i3) * (~i6) (基数 = 7, “与”门 = 1)
S76 := (~i5) * (~i7) (基数 = 7, “与”门 = 1)
S77 := (~i1) * (~i5) (基数 = 6, “与”门 = 1)
S78 := (i2) * (~i3) (基数 = 6, “与”门 = 1)
S79 := (~i2) * (i4) (基数 = 6, “与”门 = 1)
S80 := (i2) * (~i7) (基数 = 6, “与”门 = 1)
S81 := (~i4) * (i6) (基数 = 6, “与”门 = 1)
S82 := (i4) * (i6) (基数 = 6, “与”门 = 1)
S83 := (i0) * (~i6) (基数 = 5, “与”门 = 1)
S84 := (~i0) * (i6) (基数 = 5, “与”门 = 1)
S85 := (i1) * (i3) (基数 = 5, “与”门 = 1)
S86 := (~i1) * (i5) (基数 = 5, “与”门 = 1)
S87 := (~i4) * (~i5) (基数 = 5, “与”门 = 1)
S88 := (~i4) * (i5) (基数 = 5, “与”门 = 1)
S89 := (i4) * (~i7) (基数 = 5, “与”门 = 1)
S90 := (i0) * (~i4) (基数 = 4, “与”门 = 1)
S91 := (~i1) * (i2) (基数 = 4, “与”门 = 1)
S92 := (i1) * (~i3) (基数 = 4, “与”门 = 1)
S93 := (i1) * (~i5) (基数 = 4, “与”门 = 1)
S94 := (i1) * (i5) (基数 = 4, “与”门 = 1)
S95 := (i1) * (~i7) (基数 = 4, “与”门 = 1)
S96 := (~i2) * (~i3) (基数 = 4, “与”门 = 1)
S97 := (~i3) * (~i5) (基数 = 4, “与”门 = 1)
S98 := (i3) * (i6) (基数 = 4, “与”门 = 1)
S99 := (i3) * (i7) (基数 = 4, “与”门 = 1)
S100 := (~i4) * (~i6) (基数 = 4, “与”门 = 1)
S101 := (~i5) * (~i6) (基数 = 4, “与”门 = 1)
S102 := (i5) * (~i6) (基数 = 4, “与”门 = 1)
S103 := (~i0) * (~i4) (基数 = 3, “与”门 = 1)
S104 := (i1) * (~i2) (基数 = 3, “与”门 = 1)
S105 := (~i1) * (i3) (基数 = 3, “与”门 = 1)
S106 := (i1) * (i7) (基数 = 3, “与”门 = 1)
S107 := (i2) * (i4) (基数 = 3, “与”门 = 1)
S108 := (~i2) * (~i6) (基数 = 3, “与”门 = 1)
S109 := (~i3) * (i6) (基数 = 3, “与”门 = 1)
S110 := (i4) * (~i5) (基数 = 3, “与”门 = 1)
S111 := (i5) * (i6) (基数 = 3, “与”门 = 1)
S112 := (i5) * (i7) (基数 = 3, “与”门 = 1)
S113 := (i0) * (~i2) (基数 = 2, “与”门 = 1)
S114 := (i0) * (i2) (基数 = 2, “与”门 = 1)
S115 := (~i0) * (~i3) (基数 = 2, “与”门 = 1)
S116 := (~i0) * (i3) (基数 = 2, “与”门 = 1)
S117 := (i0) * (~i7) (基数 = 2, “与”门 = 1)
S118 := (~i1) * (i4) (基数 = 2, “与”门 = 1)
S119 := (~i1) * (~i6) (基数 = 2, “与”门 = 1)
S120 := (i1) * (~i6) (基数 = 2, “与”门 = 1)
S121 := (~i1) * (i6) (基数 = 2, “与”门 = 1)
S122 := (i2) * (i3) (基数 = 2, “与”门 = 1)
S123 := (~i2) * (~i4) (基数 = 2, “与”门 = 1)
S124 := (~i2) * (~i5) (基数 = 2, “与”门 = 1)
S125 := (i2) * (~i6) (基数 = 2, “与”门 = 1)
S126 := (~i2) * (~i7) (基数 = 2, “与”门 = 1)
S127 := (i3) * (i4) (基数 = 2, “与”门 = 1)
S128 := (i3) * (~i5) (基数 = 2, “与”门 = 1)
S129 := (i3) * (~i7) (基数 = 2, “与”门 = 1)
S130 := (~i4) * (~i7) (基数 = 2, “与”门 = 1)
S131 := (i5) * (~i7) (基数 = 2, “与”门 = 1)
S132 := (~i6) * (~i7) (基数 = 2, “与”门 = 1)
S133 := (i6) * (~i7) (基数 = 2, “与”门 = 1)
S134 := (~i6) * (i7) (基数 = 2, “与”门 = 1)
下面对于输入位i0、i1、i2、i3、i4、i5、i6、i7的输出逻辑是经由输入位和替代位导出的。逻辑“或”用(+)指示,而逻辑“与”用(*)指示。此外,补码用(~)指示。优化的表达式包括输入位和替代位。在S盒输出位的表达式中找到的每个逻辑积基本上是蕴含项。本文描述的表达S盒的九个级是用于实现在下面的每个逻辑函数中逻辑“或”运算以及任何在先逻辑“与”运算的级的直接结果。被组合来产生每个逻辑函数的项数不超过64。
正确性经验证(使用替代)
对于位0的优化的逻辑(使用替代)
(~i0) * S15 * S76 + (~i5) * S10 * S71 + (i3) * S1 * S63 + (~i4) * S26 *S60 + (~i4) * S2 * S61 + (~i0) * S2 * S61 + (~i3) * S4 * S61 +
(~i0) * S3 * S70 + (~i2) * S5 * S65 + (~i3) * S24 * S77 + (i7) * S9 * S75+ (i4) * S38 * S65 + (~i0) * S16 * S65 + (i3) * S6 * S68 + S52 * S70 + (i0) *S14 * S82 + (i7) * S16 * S61 + (i5) * S7 * S62 + (i1) * S12 * S62 + (i2) *S19 * S99 + S1 * S101 + S5 * S80 + S8 * S76 + S9 * S89 + S9 * S63 + S28 *S125 + S5 * S107 + S29 * S128 + S8 * S85 + S28 * S122 + (~i0) * (~i7) * S17 +S23 * S86 + S35 * S100 + S2 * S102 + S49 * S127 + (i3) * (i5) * S4 + S32 *S117 + S46 * S70 + S22 * S67 + S17 * S133 + S26 * S98 + S22 * S131 + S22 *S69 + S40 * S74 + S59 * S116 + S51 * S93 + S43 * S109 + (~i7) * S13 + (~i4) *S34 + (~i2) * S0 + (i7) * S40
对于位1的优化的逻辑(使用替代)
(~i7) * S9 * S71 + (~i6) * S1 * S71 + (i3) * S9 * S63 + (~i4) * S10 * S64+ (~i0) * S32 * S87 + (i1) * S25 * S61 + (~i2) * S7 * S65 +
(i2) * S0 * S60 + (~i2) * S0 * S75 + (i0) * S15 * S65 + (i4) * S9 * S99 +(i5) * S0 * S60 + (i2) * S0 * S64 +
(i7) * S12 * S73 + (i7) * S13 * S108 + (i7) * S6 * S78 + (i0) * S14 * S74+ (i7) * S22 * S78 + (i0) * S17 * S62 +
(i3) * S51 * S86 + S18 * S103 + S39 * S115 + S33 * S132 + S5 * S124 + S18* S91 +
S1 * S101 + S1 * S87 + S18 * S118 + S46 * S66 + S38 * S89 + S53 * S125 +
S8 * S94 + (~i0) * (~i2) * S3 + S3 * S120 + (i1) * (i2) * S6 + S2 * S82 +S19 * S67 +
S19 * S126 + S7 * S111 + S48 * S85 + S19 * S79 + S3 * S70 + S60 * S65 *S104 +
S5 * S65 + S14 * S90 + S15 * S106 + S4 * S65 + (~i0) * (i7) * S16 + S30 *S72 +
S51 * S92 + S11 * S105 + (i2) * S29 + (i1) * S36 + (~i7) * S45
对于位2的优化的逻辑(使用替代)
S0 * S58 + (~i1) * S18 * S79 + (i4) * S39 * S115 + (i0) * S2 * S63 + (i1)* S36 * S61 + (~i0) * S16 * S61 + (i6) * S1 * S64 +
(i5) * S7 * S74 + (i1) * S12 * S84 + (i7) * S8 * S64 + (i4) * S20 * S60 +(i3) * S30 * S72 + (i2) * S11 * S71 +
(i3) * S0 * S74 + (~i3) * S4 * S62 + (i2) * S40 * S62 + S33 * S73 + S23 *S93 + S31 * S130 +
(~i0) * (i2) * S18 + S10 * S87 + S50 * S114 + S2 * S101 + S15 * S76 + S4* S75 +
S49 * S67 + S17 * S95 + S13 * S132 + S3 * S119 + (i0) * (~i1) * S3 + S35* S63 +
S6 * S126 + S6 * S104 + S42 * S81 + S39 * S98 + S2 * S81 + S2 * S84 +
S28 * S74 + S48 * S96 + S41 * S94 + S37 * S92 + S31 * S134 + S24 * S97 +
S27 * S113 + S14 * S114 + S27 * S110 + S59 * S113 + S12 * S68 + S34 * S99+
S54 * S110 + (~i3) * S47
对于位3的优化的逻辑(使用替代)
S1 * S64 * S82 + (~i4) * S1 * S60 + (i1) * S25 * S66 + (~i1) * S8 * S67 +(~i5) * S4 * S67 + (~i1) * S6 * S67 + (i2) * S6 * S67 +
(i3) * S10 * S61 + (~i6) * S0 * S66 + (i0) * S27 * S66 + (i3) * S8 * S65+ (i0) * S14 * S63 + (i5) * S24 * S60 +
(~i3) * S0 * S61 + (~i3) * S28 * S62 + S9 * S60 + S47 * S93 + S21 * S80 +(~i0) * (i4) * S18 +
S8 * S93 + S5 * S89 + S17 * S95 + S49 * S117 + S10 * S88 + (~i0) * (~i1)* S12 +
S45 * S129 + (i0) * (i3) * S26 + S26 * S63 + S3 * S73 + S7 * S70 + S56 *S90 +
S22 * S96 + S22 * S128 + S17 * S84 + S12 * S121 + S53 * S82 + S0 * S69 +
S27 * S69 + (~i0) * (i5) * S27 + S30 * S92 + S11 * S123 + S33 * S62 + S14* S81 +
S11 * S85 + S43 * S81 + S41 * S112 + (i7) * S38 + (~i2) * S14 + (i0) *S30
对于位4的优化的逻辑(使用替代)
(~i6) * S7 * S80 + (~i0) * S2 * S63 + (~i7) * S12 * S83 + (i4) * S5 * S69+ (~i6) * S40 * S80 + (i4) * S1 * S64 + (i1) * S3 * S73 +
(~i7) * S32 * S103 + (i0) * S2 * S61 + (i3) * S55 * S77 + (~i7) * S22 *S69 + (i2) * S14 * S73 + (i7) * S4 * S60 +
(i7) * S5 * S88 + (i0) * S12 * S68 + (i2) * S20 * S71 + (i2) * S13 * S68+ (i3) * S20 * S79 + (~i0) * S16 * S62 +
(i6) * S20 * S71 + (i6) * S30 * S72 + S10 * S60 + S2 * S90 + S29 * S96 +S29 * S77 +
S29 * S66 + (i0) * (~i5) * S16 + S17 * S73 + S2 * S102 + S6 * S104 + S44* S121 +
S10 * S81 + S4 * S61 + S26 * S82 + S57 * S134 + (~i5) * S52 + S0 * S102 +
S0 * S64 + S37 * S86 + S45 * S99 + S11 * S78 + S13 * S62 + (i0) * S18 +
(~i3) * S9 + (~i4) * S31 + (~i1) * S66 * S83 + (~i7) * S6 + (~i4) * S61 *S95 + (~i3) * S34
对于位5的优化的逻辑(使用替代)
(~i2) * S18 * S90 + (~i2) * S25 * S77 + (~i5) * S5 * S79 + (~i2) * S29 *S105 + (~i1) * S17 * S83 + (~i7) * S21 * S88 + (~i6) * S13 * S91 +
(~i2) * S19 * S67 + (i7) * S31 * S100 + (~i3) * S4 * S65 + (i7) * S8 *S85 + (~i6) * S16 * S65 + (~i2) * S20 * S60 +
(i7) * S7 * S69 + (~i3) * S0 * S61 + (~i3) * S11 * S79 + (~i1) * S12 *S62 + S7 * S108 + S1 * S101 +
S1 * S60 + S25 * S119 + S4 * S129 + S50 * S131 + S26 * S103 + S71 * S80 *S86 +
S15 * S86 + (i0) * (i4) * S26 + (i1) * (i6) * S23 + S44 * S109 + S42 *S109 + S57 * S133 +
S32 * S110 + S19 * S107 + S3 * S84 + S24 * S120 + S14 * S100 + S14 * S83+
S24 * S105 + S24 * S94 + S9 * S62 + S41 * S106 + S54 * S88 + (i0) * S15 +
(i2) * S46 + (~i5) * S56 + (i6) * S35 + (i7) * S35
对于位6的优化的逻辑(使用替代)
(~i2) * S7 * S76 + (~i0) * S15 * S77 + (i4) * S5 * S76 + (i4) * S1 * S97+ (i3) * S10 * S63 + (i5) * S7 * S80 + (i1) * S8 * S64 +
(~i6) * S3 * S72 + (i0) * S3 * S91 + (~i7) * S7 * S70 + (i2) * S6 * S67 +(~i3) * S10 * S61 + (i6) * S4 * S67 +
(~i7) * S4 * S111 + (i1) * S13 * S74 + (~i1) * S3 * S70 + (i7) * S9 * S75+ (~i3) * S8 * S68 + (i7) * S31 * S63 +
(i4) * S5 * S112 + (i7) * S19 * S78 + (~i1) * S13 * S62 + (i7) * S19 *S107 + S33 * S83 + S21 * S87 +
S25 * S66 + S42 * S75 + S36 * S76 + S21 * S69 + S12 * S72 + S16 * S102 +
S6 * S91 + S23 * S98 + S28 * S70 + (i0) * (i5) * S32 + S48 * S71 + S37 *S85 +
(~i4) * (i7) * S21 + S17 * S68 + S20 * S100 + S20 * S122 + S8 * S112 +S20 * S127 +
S11 * S123 + S11 * S92 + S61 * S68 * S79 + (~i7) * S50 + (~i5) * S47 + (~i6) * S25 +
(i0) * S2 + (i5) * S23 + (i7) * S58
对于位7的优化的逻辑(使用替代)
S6 * S78 * S106 + (~i1) * S23 * S60 + (~i7) * S7 * S66 + (~i4) * S2 * S73+ (i3) * S9 * S89 + (i2) * S5 * S88 + (i5) * S1 * S75 +
(i5) * S1 * S71 + (~i6) * S3 * S72 + (~i1) * S25 * S70 + (~i2) * S55 *S64 + (i1) * S3 * S84 + (i7) * S15 * S94 +
(i7) * S4 * S64 + (~i2) * S6 * S68 + (i3) * S0 * S74 + (~i3) * S11 * S118+ (i4) * S11 * S78 + (i5) * S24 * S98 +
(i2) * S13 * S62 + S5 * S124 + S44 * S60 + S10 * S87 + S10 * S97 + S38 *S130 +
S33 * S116 + (~i1) * (~i7) * S15 + S15 * S77 + S21 * S66 + S8 * S97 + S28* S96 +
S63 * S66 * S95 + S21 * S69 + S12 * S72 + S13 * S108 + S39 * S82 + S34 *S89 +
S41 * S76 + (i0) * (i6) * S16 + S23 * S111 + S0 * S60 + S36 * S68 + S27 *S69 +
S43 * S63 + S30 * S75 + (~i2) * (i3) * S11 + (~i0) * S18 + (~i1) * S64 *S81 + (~i1) * S37 +
(i4) * S27
使用替代的总门数(包括反相器)=1238
用于该特征的总级数=9
示例
示例1是一种实现高级加密标准(AES)替代盒(S-盒)加密的设备。所述设备包括:S-盒逻辑函数,其中所述S-盒逻辑函数将状态作为输入,并且是8位至8位逻辑函数,并且其中所述S-盒逻辑函数被最小化,使得S-盒轮包括九个与非(NAND)级,并且所最小化的S-盒逻辑函数的逻辑积的重复被消除;以及混合列乘法运算,其中所述混合列乘法运算包括多个因子,所述多个因子与所述S-盒轮的输出进行“异或”(XOR)以获得缩放的16字节输出。
示例2包括示例1所述的设备,其包括或排除可选的特征。在此示例中,具有所述S-盒逻辑函数和所述混合列乘法运算的AES轮包括九个NAND级和五个XOR级。
示例3包括示例1至2中任一项所述的设备,其包括或排除可选的特征。在此示例中,所述混合列乘法运算与所述S-盒逻辑函数组合,并且所组合的所述S-盒逻辑函数被最小化,使得AES轮包括九个NAND级和三个XOR级,并且所最小化的S-盒逻辑函数的逻辑积的重复被消除。
示例4包括示例1至3中任一项所述的设备,其包括或排除可选的特征。在此示例中,所述缩放的16字节输出的列被进行“异或”以导出8位输出。
示例5包括示例1至4中任一项所述的设备,其包括或排除可选的特征。在此示例中,最小化所述S-盒逻辑函数包括:将所述S-盒函数表达为蕴含项集合;搜索所述蕴含项集合以寻找基本蕴含项和选定蕴含项;以及将所述S-盒函数表达为所述基本蕴含项和所述选定蕴含项。
示例6包括示例1至5中任一项所述的设备,其包括或排除可选的特征。在此示例中,所述混合列乘法运算与所述S-盒逻辑函数组合,并且最小化所组合的所述S-盒逻辑函数包括:将所组合的S-盒函数表达为蕴含项集合;搜索所述蕴含项集合以寻找基本蕴含项和选定蕴含项;以及将所组合的S-盒函数表达为所述基本蕴含项和所述选定蕴含项。
示例7包括示例1至6中任一项所述的设备,其包括或排除可选的特征。在此示例中,通过迭代地搜索多个区域以寻找替代逻辑积来消除所最小化的S-盒逻辑函数的逻辑积的重复。
示例8包括示例1至7中任一项所述的设备,其包括或排除可选的特征。在此示例中,所述多个因子从固定多项式获得,使得所述状态的列被评估为GF(28)上的多项式,并与所述固定多项式进行模X4 + 1相乘。
示例9包括示例1至8中任一项所述的设备,其包括或排除可选的特征。在此示例中,最小化所述S-盒逻辑函数是迭代过程,当基本素数集合变得等于所述S-盒逻辑函数的素数集合时,所述迭代过程结束。
示例10包括示例1至9中任一项所述的设备,其包括或排除可选的特征。在此示例中,所述S-盒逻辑函数在处理核处加密数据,并将所加密的数据传送到L1高速缓存。
示例11是一种实现高级加密标准(AES)替代盒(S-盒)的方法。所述方法包括:找到S-盒逻辑函数的素数蕴含项;从所述S-盒函数的所述素数蕴含项确定基本蕴含项;最小化所述基本蕴含项,并找到选定蕴含项;从所述基本蕴含项和所述选定蕴含项中移除重复以获得最终蕴含项;将所述S-盒逻辑函数表达为所述最终蕴含项;以及将表达为最终蕴含项的所述S-盒逻辑函数按来自混合列乘法运算的因子进行缩放。
示例12包括示例11所述的方法,其包括或排除可选的特征。在此示例中,所述S-盒逻辑函数和所述逆混合列乘法运算包括九个NAND级和五个XOR级。
示例13包括示例11至12中任一项所述的方法,其包括或排除可选的特征。在此示例中,所述混合列乘法运算与所述S-盒逻辑函数组合,并且所组合的所述S-盒逻辑函数被最小化,使得AES轮包括九个NAND级和三个XOR级,并且所最小化的S-盒逻辑函数的逻辑积的重复被消除。
示例14包括示例11至13中任一项所述的方法,其包括或排除可选的特征。在此示例中,所述缩放的S-盒逻辑函数的输出的列被进行“异或”以导出8位输出。
示例15包括示例11至14中任一项所述的方法,其包括或排除可选的特征。在此示例中,最小化所述基本蕴含项并找到选定蕴含项包括:将所述S-盒函数表达为蕴含项集合;搜索所述蕴含项集合以寻找基本蕴含项和选定蕴含项;以及将所述S-盒函数表达为所述基本蕴含项和所述选定蕴含项。
示例16包括示例11至15中任一项所述的方法,其包括或排除可选的特征。在此示例中,所述混合列乘法运算与所述S-盒逻辑函数组合,并且最小化所组合的所述S-盒逻辑函数包括:将所组合的S-盒函数表达为蕴含项集合;搜索所述蕴含项集合以寻找基本蕴含项和选定蕴含项;以及将所组合的S-盒函数表达为所述基本蕴含项和所述选定蕴含项。
示例17包括示例11至16中任一项所述的方法,其包括或排除可选的特征。在此示例中,通过迭代地搜索多个区域以寻找替代逻辑积来移除所最小化的S-盒逻辑函数的逻辑积的重复。
示例18包括示例11至17中任一项所述的方法,其包括或排除可选的特征。在此示例中,所述多个因子从固定多项式获得,使得所述状态的列被评估为GF(28)上的多项式,并与所述固定多项式进行模X4 + 1相乘。
示例19包括示例11至18中任一项所述的方法,其包括或排除可选的特征。在此示例中,所述S-盒逻辑函数在处理核处加密数据,并将所加密的数据传送到L1高速缓存。
示例20包括示例11至19中任一项所述的方法,其包括或排除可选的特征。在此示例中,所述S-盒逻辑函数要加密存储在计算装置的寄存器中的数据。
示例21是一种替代盒(S-盒)。所述替代盒(S-盒)包括:逻辑函数,其中所述逻辑函数包括输入位和替代位,由九个或更少的逻辑级表达,并且所述逻辑函数的逻辑门的总数在1200至1250个逻辑门之内。
示例22包括示例21所述的替代盒,其包括或排除可选的特征。在此示例中,所述替代位是通过迭代地搜索多个区域以寻找替代逻辑积来导出的。
示例23包括示例21至22中任一项所述的替代盒,其包括或排除可选的特征。在此示例中,所述逻辑函数进一步包括混合列乘法运算,其中所述混合列乘法运算包括多个因子,所述多个因子与所述S-盒轮的输出进行“异或”(XOR)以获得缩放的16字节输出。
示例24包括示例21至23中任一项所述的替代盒,其包括或排除可选的特征。在此示例中,通过以下操作来最小化所述逻辑函数:将所述S-盒函数表达为蕴含项集合、搜索所述蕴含项集合以寻找基本蕴含项和选定蕴含项、以及将所述S-盒函数表达为所述基本蕴含项和所述选定蕴含项。
示例25包括示例21至24中任一项所述的替代盒,其包括或排除可选的特征。在此示例中,所述逻辑函数的输出被进行“异或”以导出8位输出。
尽管参考图1-5中的框图和流程图描述了所公开主题的示例实施例,但是本领域普通技术人员将容易理解,备选地可以使用实现所公开主题的许多其他方法。例如,流程图中框的执行顺序可以被改变,和/或所描述的框/流程图中的一些框可以被改变、消除或组合。
在前面的描述中,已经描述了所公开主题的各个方面。为了解释的目的,阐述了特定数量、系统和配置以便提供对该主题的透彻理解。然而,得益于本公开的本领域技术人员将明白,没有特定细节也可以实施该主题。在其它实例中,众所周知的特征、组件或模块被省略、简化、组合或拆分,以免模糊所公开主题。
所公开主题的各种实施例可以用硬件、固件、软件或其组合实现,并且可以通过参考或结合程序代码(诸如指令、函数、过程、数据结构、逻辑、应用程序、用于模拟、仿真的设计表示或格式以及设计的制作)来描述,该程序代码当由机器访问时,使得机器执行任务、定义抽象数据类型或低级硬件上下文或产生结果。
程序代码可以使用硬件描述语言或另一种功能描述语言(其在实质上提供了所设计的硬件预期如何执行的模型)来表示硬件。程序代码可以是汇编语言或机器语言或硬件定义语言,或者是可被编译和/或解释的数据。更进一步,在本领域中常见的是,以一种形式或另一种形式将软件称为采取行动或导致结果。这种表达仅仅是陈述处理系统执行程序代码的一种速记方式,该处理系统使处理器执行动作或产生结果。
程序代码可以被存储在例如易失性和/或非易失性存储器中,诸如存储装置和/或关联的机器可读或机器可访问介质,包括固态存储器、硬驱动器、软盘、光学存储装置、磁带、闪存、存储条、数字视频盘、数字多功能盘(DVD)等,以及更奇特的介质,诸如机器可访问的生物状态保存存储装置。机器可读介质可以包括用于存储、传送或接收以机器可读形式的信息的任何有形机构,诸如天线、光纤、通信接口等。程序代码可以以分组、串行数据、并行数据等形式传送,并且可以以压缩或加密的格式被使用。
程序代码可以在可编程机器上执行的程序中实现,可编程机器诸如移动或固定计算机、个人数字助理、机顶盒、蜂窝电话和寻呼机以及其他电子装置,各包括处理器、处理器可读的易失性和/或非易失性存储器、至少一个输入装置和/或一个或多个输出装置。程序代码可以被应用于使用输入装置录入的数据,以执行所描述的实施例,并生成输出信息。输出信息可以被应用于一个或多个输出装置。本领域的普通技术人员可以理解,所公开的主题的实施例可以用各种计算机系统配置来实施,这些配置包括多处理器或多核处理器系统、小型计算机、大型计算机以及可以嵌入到几乎任何装置中的普遍或微型计算机或处理器。所公开主题的实施例也可以实施在分布式计算环境中,其中任务可以由通过通信网络链接的远程处理装置来执行。
尽管操作可以被描述为顺序过程,但是其中一些操作实际上可以并行地、并发地和/或在分布式环境中执行,并且其中程序代码被本地和/或远程存储以供单处理器或多处理器机器访问。此外,在一些实施例中,在不脱离所公开主题的精神的情况下,可以重新安排操作的顺序。程序代码可以由嵌入式控制器使用或与嵌入式控制器结合使用。
虽然所公开主题已经参考说明性实施例进行了描述,但是此描述不意图以限制性意义来理解。对所公开主题所属领域的技术人员来说显而易见的说明性实施例的各种修改以及该主题的其他实施例的各种修改被认为处于所公开主题的范围内。
Claims (25)
1. 一种实现高级加密标准(AES)替代盒(S-盒)加密的设备,包括:
S-盒逻辑函数,其中所述S-盒逻辑函数将状态作为输入,并且是8位至8位逻辑函数,并且其中所述S-盒逻辑函数被最小化,使得S-盒轮包括九个与非(NAND)级,并且所最小化的S-盒逻辑函数的逻辑积的重复被消除;以及
混合列乘法运算,其中所述混合列乘法运算包括多个因子,所述多个因子与所述S-盒轮的输出进行“异或”(XOR)以获得缩放的16字节输出。
2.如权利要求1所述的设备,其中具有所述S-盒逻辑函数和所述混合列乘法运算的AES轮包括九个NAND级和五个XOR级。
3.如权利要求1或2所述的设备,其中所述混合列乘法运算与所述S-盒逻辑函数组合,并且所组合的所述S-盒逻辑函数被最小化,使得AES轮包括九个NAND级和三个XOR级,并且所最小化的S-盒逻辑函数的逻辑积的重复被消除。
4.如权利要求1、2或3所述的设备,其中所述缩放的16字节输出的列被进行“异或”以导出8位输出。
5.如权利要求1、2、3或4所述的设备,其中最小化所述S-盒逻辑函数包括:
将所述S-盒函数表达为蕴含项集合;
搜索所述蕴含项集合以寻找基本蕴含项和选定蕴含项;以及
将所述S-盒函数表达为所述基本蕴含项和所述选定蕴含项。
6.如权利要求1、2、3、4或5所述的设备,其中所述混合列乘法运算与所述S-盒逻辑函数组合,并且最小化所组合的所述S-盒逻辑函数包括:
将所组合的S-盒函数表达为蕴含项集合;
搜索所述蕴含项集合以寻找基本蕴含项和选定蕴含项;以及
将所组合的S-盒函数表达为所述基本蕴含项和所述选定蕴含项。
7.如权利要求1、2、3、4、5或6所述的设备,其中通过迭代地搜索多个区域以寻找替代逻辑积来消除所最小化的S-盒逻辑函数的逻辑积的重复。
8. 如权利要求1、2、3、4、5、6或7所述的设备,其中所述多个因子从固定多项式获得,使得所述状态的列被评估为GF(28)上的多项式,并与所述固定多项式进行模X4 + 1相乘。
9.如权利要求1、2、3、4、5、6、7或8所述的设备,其中最小化所述S-盒逻辑函数是迭代过程,当基本素数集合变得等于所述S-盒逻辑函数的素数集合时,所述迭代过程结束。
10.如权利要求1、2、3、4、5、6、7、8或9所述的设备,其中所述S-盒逻辑函数在处理核处加密数据,并将所加密的数据传送到L1高速缓存。
11.一种实现高级加密标准(AES)替代盒(S-盒)的方法,包括:
找到S-盒逻辑函数的素数蕴含项;
从所述S-盒函数的所述素数蕴含项确定基本蕴含项;
最小化所述基本蕴含项,并找到选定蕴含项;
从所述基本蕴含项和所述选定蕴含项中移除重复以获得最终蕴含项;
将所述S-盒逻辑函数表达为所述最终蕴含项;以及
将表达为最终蕴含项的所述S-盒逻辑函数按来自混合列乘法运算的因子进行缩放。
12.如权利要求11所述的方法,其中所述S-盒逻辑函数和所述逆混合列乘法运算包括九个NAND级和五个XOR级。
13.如权利要求11或12所述的方法,其中所述混合列乘法运算与所述S-盒逻辑函数组合,并且所组合的所述S-盒逻辑函数被最小化,使得AES轮包括九个NAND级和三个XOR级,并且所最小化的S-盒逻辑函数的逻辑积的重复被消除。
14.如权利要求11、12或13所述的方法,其中所述缩放的S-盒逻辑函数的输出的列被进行“异或”以导出8位输出。
15.如权利要求11、12、13或14所述的方法,其中最小化所述基本蕴含项并找到选定蕴含项包括:
将所述S-盒函数表达为蕴含项集合;
搜索所述蕴含项集合以寻找基本蕴含项和选定蕴含项;以及
将所述S-盒函数表达为所述基本蕴含项和所述选定蕴含项。
16.如权利要求11、12、13、14或15所述的方法,其中所述混合列乘法运算与所述S-盒逻辑函数组合,并且最小化所组合的所述S-盒逻辑函数包括:
将所组合的S-盒函数表达为蕴含项集合;
搜索所述蕴含项集合以寻找基本蕴含项和选定蕴含项;以及
将所组合的S-盒函数表达为所述基本蕴含项和所述选定蕴含项。
17.如权利要求11、12、13、14、15或16所述的方法,其中通过迭代地搜索多个区域以寻找替代逻辑积来移除所最小化的S-盒逻辑函数的逻辑积的重复。
18. 如权利要求11、12、13、14、15、16或17所述的方法,其中所述多个因子从固定多项式获得,使得所述状态的列被评估为GF(28)上的多项式,并与所述固定多项式进行模X4 + 1相乘。
19.如权利要求11、12、13、14、15、16、17或18所述的方法,其中所述S-盒逻辑函数在处理核处加密数据,并将所加密的数据传送到L1高速缓存。
20.如权利要求11、12、13、14、15、16、17、18或19所述的方法,其中所述S-盒逻辑函数要加密存储在计算装置的寄存器中的数据。
21.一种替代盒(S-盒),包括:
逻辑函数,其中所述逻辑函数包括输入位和替代位,并且所述逻辑函数由九个或更少的逻辑级表达,并且逻辑门的总数在1200至1250个门之内。
22.如权利要求21所述的S-盒,其中所述替代位是通过迭代地搜索多个区域以寻找替代逻辑积来导出的。
23.如权利要求21或22所述的S-盒,其中所述逻辑函数进一步包括混合列乘法运算,其中所述混合列乘法运算包括多个因子,所述多个因子与所述S-盒轮的输出进行“异或”(XOR)以获得缩放的16字节输出。
24.如权利要求21、22或23所述的S-盒,其中通过以下操作来最小化所述逻辑函数:将所述S-盒函数表达为蕴含项集合、搜索所述蕴含项集合以寻找基本蕴含项和选定蕴含项、以及将所述S-盒函数表达为所述基本蕴含项和所述选定蕴含项。
25.如权利要求21、22、23或24所述的S-盒,其中所述逻辑函数的输出被进行“异或”以导出8位输出。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/369,103 US11444748B2 (en) | 2019-03-29 | 2019-03-29 | Ultra-low latency advanced encryption standard |
US16/369103 | 2019-03-29 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111756520A true CN111756520A (zh) | 2020-10-09 |
Family
ID=67299500
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010128964.XA Pending CN111756520A (zh) | 2019-03-29 | 2020-02-28 | 超低时延高级加密标准 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11444748B2 (zh) |
EP (1) | EP3716524B1 (zh) |
CN (1) | CN111756520A (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11444748B2 (en) * | 2019-03-29 | 2022-09-13 | Intel Corporation | Ultra-low latency advanced encryption standard |
JP7383985B2 (ja) * | 2019-10-30 | 2023-11-21 | 富士電機株式会社 | 情報処理装置、情報処理方法及びプログラム |
US11569980B2 (en) * | 2019-11-20 | 2023-01-31 | International Business Machines Corporation | Combined SBox and inverse SBox cryptography |
US12099997B1 (en) | 2020-01-31 | 2024-09-24 | Steven Mark Hoffberg | Tokenized fungible liabilities |
KR20220146115A (ko) * | 2021-04-23 | 2022-11-01 | 삼성에스디에스 주식회사 | 키 스트림 생성 방법 및 장치 |
CN114826728B (zh) * | 2022-04-21 | 2024-03-15 | 北京中宇万通科技股份有限公司 | 设备认证方法、物联网终端设备、电子设备以及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8538015B2 (en) * | 2007-03-28 | 2013-09-17 | Intel Corporation | Flexible architecture and instruction for advanced encryption standard (AES) |
CN103391186B (zh) | 2013-06-27 | 2016-02-24 | 清华大学 | 一种实现aes算法中s盒和逆s盒替换的方法 |
US9843441B2 (en) | 2013-09-24 | 2017-12-12 | Intel Corporation | Compact, low power advanced encryption standard circuit |
US11444748B2 (en) * | 2019-03-29 | 2022-09-13 | Intel Corporation | Ultra-low latency advanced encryption standard |
-
2019
- 2019-03-29 US US16/369,103 patent/US11444748B2/en active Active
-
2020
- 2020-02-24 EP EP20159145.0A patent/EP3716524B1/en active Active
- 2020-02-28 CN CN202010128964.XA patent/CN111756520A/zh active Pending
-
2022
- 2022-06-08 US US17/835,543 patent/US11895221B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3716524A3 (en) | 2020-12-09 |
US20220407680A1 (en) | 2022-12-22 |
EP3716524B1 (en) | 2024-08-07 |
US11444748B2 (en) | 2022-09-13 |
US11895221B2 (en) | 2024-02-06 |
US20190229889A1 (en) | 2019-07-25 |
EP3716524A2 (en) | 2020-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11895221B2 (en) | Ultra-low latency advanced encryption standard | |
EP3839788A1 (en) | Bit-length parameterizable cipher | |
EP3468147B1 (en) | Method for constructing secure hash functions from bit-mixers | |
US8855302B2 (en) | Apparatus and method for Skein hashing | |
Rahimunnisa et al. | FPGA implementation of AES algorithm for high throughput using folded parallel architecture | |
US9503256B2 (en) | SMS4 acceleration hardware | |
US11606189B2 (en) | Method and apparatus for improving the speed of advanced encryption standard (AES) decryption algorithm | |
US20170373836A1 (en) | AES Hardware Implementation | |
JP2003015522A (ja) | 暗号回路 | |
US10536264B2 (en) | Efficient cryptographically secure control flow integrity protection | |
US11838403B2 (en) | Method and apparatus for an ultra low power VLSI implementation of the 128-bit AES algorithm using a novel approach to the shiftrow transformation | |
CN110336661A (zh) | Aes-gcm数据处理方法、装置、电子设备及存储介质 | |
US20060018477A1 (en) | Method apparatus and system of performing one or more encryption and/or decryption operations | |
Aagaard et al. | WAGE: An authenticated cipher | |
Arrag et al. | Design and Implementation A different Architectures of mixcolumn in FPGA | |
Sideris et al. | Hardware acceleration of the aes algorithm using nios-ii processor | |
Iyer et al. | Efficient hardware architectures for AES on FPGA | |
KR20050092698A (ko) | 라인달 블록 암호의 서브바이트 함수를 실행하는 장치 및방법과 데이터 암호화 및 해독 장치 | |
KR102498133B1 (ko) | 모듈러 곱셈 연산을 수행하는 연산 장치 및 방법 | |
Lee et al. | Lightweight and low-latency AES accelerator using shared SRAM | |
Daoud et al. | High-level synthesis optimization of aes-128/192/256 encryption algorithms | |
US11101824B2 (en) | Encryption device and decryption device, and operation method thereof | |
Khalid et al. | RunFein: a rapid prototyping framework for Feistel and SPN-based block ciphers | |
Kong et al. | A Very Compact AES‐SPIHT Selective Encryption Computer Architecture Design with Improved S‐Box | |
Nacci et al. | An open-source, efficient, and parameterizable hardware implementation of the AES algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |