执行groestl散列的指令的制作方法

文档序号:6485517阅读:163来源:国知局
执行groestl散列的指令的制作方法
【专利摘要】描述了一种方法。该方法包括执行对状态矩阵执行一个或多个与2的伽罗瓦域(GF)相乘运算的指令以及执行用异或(XOR)函数将所述一个或多个与2的GF相乘运算的结果进行组合以生成结果矩阵的指令。
【专利说明】执行GROESTL散列的指令 发明领域
[0001] 本公开涉及加密算法,尤其涉及Groestl安全散列算法。

【背景技术】
[0002] 密码术(Cryptology)是一种依赖算法和密钥来保护信息的工具。该算法是复杂 的数学算法,而密钥是位串。存在两种基本的密码术系统类型:秘密密钥系统和公开密钥 系统。秘密密钥系统(也被称为对称系统)具有两方或更多方共享的单一密钥("秘密密 钥")。该单一密钥既被用来将信息加密,也被用来将信息解密。
[0003] 由国家标准和技术委员会(NIST)作为联邦信息处理标准(FIPS) 197发布的先进 加密标准(AES)是一种秘密密钥系统。AES是能够将信息加密和解密的对称块密码(block cipher)。Groestl算法是一种基于AES的迭代散列函数,其具有从两个固定的大的不同的 置换(P和Q)构造的压缩函数。
[0004] 该压缩函数(f)被经由P和Q的置换来定义,使得:f (h,m) =P(h X0R m)X0R Q(m) X0R h,其中函数P和Q是置换函数,而是hg是输入状态,1?是消息块输入,而h是结果状 态。加密(密码)使用该秘密密钥(密码密钥)执行一系列变换来将被称为"明文"的可理 解数据变换为被称为"密文"的不可理解形式。密码中的变换可包括:(1)使用异或(X0R) 运算向该状态(二维字节数组)添加轮次常数(从P函数和Q函数推出的值);(2)使用非 线性字节代换表(S-Box)处理该状态;(3)将该状态的最后三行循环移位不同的偏移量;以 及(4)取该状态的所有的列并将这些列的数据(彼此独立地)混合以产生新的列。
[0005] 解密(逆向密码)使用该密码密钥执行一系列变换来将"密文"块变换为相同大 小的"明文"块。逆向密码中的变换是该密码中的变换的逆反。
[0006] Groestl算法用10个或14个连续的轮次将明文变换为密码文本或将密文变换为 明文,轮次的数量取决于密钥的长度。
[0007] 附图简沭
[0008] 结合以下附图,从以下详细描述可获得对本发明更好的理解,其中:
[0009] 图1是图解系统的一个实施例的框图;
[0010] 图2是图解处理器的一个实施例的框图;
[0011] 图3是图解紧缩数据寄存器的一个实施例的框图;
[0012] 图4A和4B图解了图解由MUL_BYTE_GF2指令和MIX_BYTE_X0R指令执行的过程的 一个实施例的流程图;
[0013] 图5是根据本发明的一个实施例的寄存器架构的框图;
[0014] 图6A是根据本发明的多个实施例的单CPU核,连同其到管芯上互连网络的连接及 其本地2级(L2)高速缓存子集,的框图;
[0015] 图6B是根据本发明的多个实施例的CPU核的一部分的剖视图;
[0016] 图7是图解根据本发明的多个实施例的示例性无序架构的框图;
[0017] 图8是根据本发明的一个实施例的系统的框图;
[0018] 图9是根据本发明的一实施例的第二系统的框图;
[0019] 图10是根据本发明的一实施例的第三系统的框图;
[0020] 图11是根据本发明的一实施例的片上系统(SoC)的框图;
[0021] 图12是根据本发明的多个实施例的带有集成存储器控制器和图形元件的单核处 理器和多核处理器的框图;以及
[0022] 图13是对照根据本发明的多个实施例的使用软件指令转换器来将源指令集中的 二进制指令转换为目标指令集中的二进制指令的框图。
[0023] 详细描沭
[0024] 在下面的描述中,出于解释目的阐述了众多具体细节以便提供对本发明的完全理 解。然而对于本领域技术人员显然的是,没有这些具体细节中的一些细节也可实践本发明。 在其他实例中,公知的结构和设备以框图形式示出以避免湮没本发明的基础概念。
[0025] 说明书中对"一个实施例"或"一实施例"的引用旨在指示结合该实施例所述的特 定特征、结构、或特性被包括在本发明的至少一个实施例中。在说明书各处出现的短语"在 一个实施例中"不一定全部指相同实施例。
[0026] 描述了一种包括用于处理Groestl安全散列算法的指令的机制。如同上面讨论 的,Groestl算法是一种基于在AES标准中指定的Ri jindael算法的加密散列函数。该AES 标准包括提供用于在通用处理器中执行AES加密和解密的指令集扩展的指令集(例如,AES 指令集)。
[0027] 该AES指令集是对x86指令集架构(ISA)的扩展,其改善了使用该AES算法的应 用的速度。根据一个实施例,该AES指令集扩展被实现以执行Groestl算法。图1是系统 100的一个实施例的框图,该系统包括用于在通用处理器中执行Groestl加密和解密的AES 指令集扩展。
[0028] 系统100包括处理器101、存储器控制器中枢(MCH) 102、以及输入/输出(1/0)控 制器中枢(ICH) 104。MCH 102包括控制处理器101和存储器108之间的通信的存储器控制 器106。处理器101和MCH 102通过系统总线116通信。
[0029] 处理器101可以是多种处理器中的任何一者,所述多种处理器诸如是:单核 Intel? Pentium IV?处理器、单核Intel Celeron处理器、Intel? XScale处理器或多核处 理器(诸如 Intel? Pentium D、Intel? Xeon? 处理器、Intel? Core? i3, i5, i7, 2 Duo 及 Quad、Xeono^、丨tanium?处理器)、或任何其他类型的处理器。
[0030] 存储器108可以是动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、 同步动态随机存取存储器(SDRAM)、双数据率2 (DDR2) RAM或Rambus动态随机存取存储器 (RDRAM)或任何其他类型的存储器。
[0031] ICH 104可使用高速芯片到芯片互连114(诸如直接媒体接口(DMI))耦合于MCH 102。DMI支持经由两个单向通道的2千兆比特/秒并发传输速率。
[0032] ICH 104可包括用于控制与耦合至ICH 104的至少一个存储设备112的通信的存 储1/0控制器110。该存储设备可以例如是盘驱动器、数字视频盘(DVD)驱动器、紧致盘 (⑶)驱动器、独立盘冗余阵列(RAID)、磁带驱动器或其他存储设备。ICH 104可使用诸如串 行附接小型计算机系统接口(SAS)或串行先进技术附接(SATA)之类的串行存储协议通过 存储协议互连118与存储设备112通信。
[0033] 在一个实施例中,处理器101包括用于执行Groestl加密和解密运算的Groestl 函数103。Groestl函数103可被用来加密或解密存储器108中存储的和/或存储设备112 中存储的信息。
[0034] 图2是图解了处理器101的一个实施例的框图。处理器101包括用于解码从1级 (L1)指令高速缓存202接收的处理器指令的取回和解码单元202。要用于执行该指令的数 据可被存储在寄存器文件208中。在一个实施例中,寄存器文件208包括被AES指令用来 存储供该AES指令使用的数据的多个寄存器。
[0035] 图3是寄存器文件208中的紧缩数据寄存器的适当集合的示例实施例的框图。所 示紧缩数据寄存器包括32个512位紧缩数据或矢量寄存器。这32个512位寄存器被标记 为ΖΜΜ0到ZMM31。在所示实施例中,这些寄存器中的较低的16个寄存器(即ZMM0-ZMM15) 的较低阶的256位被混叠或覆盖在被标记为YMM0-YMM15的相应的256位紧缩数据或矢量 寄存器中,然而不要求如此。
[0036] 类似地,在所示实施例中,YMM0-YMM15的较低阶128位被混叠或覆盖在被标记为 XMM0-XMM1的相应的128位紧缩数据或矢量寄存器上,然而也不要求如此。512位寄存器 ΖΜΜ0到ZMM31能够操作以保存512位紧缩数据、256位紧缩数据、或128位紧缩数据。
[0037] 256位寄存器YMM0-YMM15能够操作以保存256位紧缩数据或128位紧缩数据。128 位寄存器XMM0-XMM1能够操作以保存128位紧缩数据。这些寄存器中的每个寄存器可被用 于存储紧缩浮点数据或紧缩整数数据。支持不同的数据元素大小,包括至少8位字节数据、 16位字数据、32位双字或单精度浮点数据、以及64位四字或双精度浮点数据。紧缩数据寄 存器的替代实施例可包括不同数量的寄存器、不同大小的寄存器,并且可以或可以不在较 小的寄存器上混叠较大的寄存器。
[0038] 参考图2,取回和解码单元202从L1指令高速缓存202取回宏指令,解码所述宏指 令并且将所述宏指令分解为被称为微操作(Pops)的简单操作。执行单元210调度并执行 所述微操作。在所示实施例中,执行单元210中的Groestl函数103包括用于AES指令的 微操作。退役单元212将所执行的指令的结果写到寄存器或存储器。
[0039] 函数103执行压缩函数f(h,m) =P(h X0R m)X0R Q(m)X0R h,其中置换P和Q是 使用多个轮次R来设计的,其包括多个轮次变换。在Groestl函数103中,针对每个置换定 义全部4个轮次变换。所述变换对被表示为8位字节的矩阵(例如,矩阵A)的状态操作。 在一个实施例中,该矩阵具有8行和8列。然而,其他实施例可实现其他变型(例如,8行和 16 列)。
[0040] 在一个实施例中,Groestl函数103所执行的变换序列包括 AddRoundConstant (AC)变换、SubBytes 变换、ShiftBytes 变换和 MixBytes 变换。
[0041] AC变换向状态矩阵A添加轮次相关常数(例如,A - A X0R c[i],其中c[i]是在 轮次i中使用的轮次常数)。P和Q具有不同的轮次常数。
[0042] SubBytes变换用另一值取代该状态矩阵中的每个字节。使用非线性字节取代表 (S-Box)处理该状态。SubBytes是通过将S-box变换应用于该16个字节中的每个字节来 定义的16字节到16字节(逐字节)变换。
[0043] S-box变换可经由如下的查找表来表示:对查找表的输入是字节B[7:0],其中X和 y表示低和高半字节x[3:0] =B[7:4],y[3:0] =B[3:0]。输出字节在该表中被编码为用 16(H)进制表示的2数位数。在一个实施例中,AES-NI指令集提供了用于为Groestl执行 SubBytes的精确功能。在这种实施例中,使用AES-NI指令AESENCLAST来计算SubBytes变 换。
[0044] ShiftBytes变换将一行内的字节向左循环移位多个位置。在一个实施例中, ShiftBytes实现AES-NI指令PSHUFB以对XMM寄存器中的字节快速重新排序。
[0045] 当P和Q矩阵是以XMM/YMM寄存器中的行组织的时,AC和ShiftBytes操作不是 计算密集的,而使用AES-NI指令AESENCLAST可以同时为高达16个字节计算SubBytes操 作。从而,AES指令集中的复杂度和循环的大部分是由MixBytes操作带来的。
[0046] MixBytes变换将该矩阵中的每一列独立地进行变换。MixBytes实现有限字段 F256,其是经由对F2的不可化简多项式X8 X0R X4 X0R X3 X0R X X0R 1来定义的。状态矩阵 A的字节可被看作F256的元素,(例如,作为系数为{0, 1}的最高为7次的多项式)。每个字 节的最低有效位确定x°的系数等。
[0047] MixBytes将矩阵A的每一列乘以F256中的常数8 X 8矩阵B。从而,整个矩阵A上 的变换可被写为矩阵乘法:A - B X A。在一个实施例中,矩阵B是循环行列式(例如,每一 行等于将上一行向右轮转一个位置,并被指定为:
[0048]

【权利要求】
1. 一种用于在计算机处理器中执行过程的方法,包括: 执行对状态矩阵执行一个或多个与2的伽罗瓦域(GF)相乘运算的指令;以及 执行用异或(XOR)函数将所述一个或多个与2的GF相乘运算的结果进行组合以生成 结果矩阵的指令。
2. 如权利要求1所述的方法,其特征在于,还包括在执行组合结果的指令前执行对所 述状态矩阵第二次执行与2的GF相乘运算的指令。
3. 如权利要求1所述的方法,其特征在于,执行所述一个或多个与2的GF相乘运算包 括: 将所述状态矩阵的行存储在第一寄存器中; 对存储在所述第一寄存器中的每一行执行与2的GF相乘运算;以及 将所述与2的GF相乘运算的结果存储在第二寄存器中。
4. 如权利要求3所述的方法,其特征在于,执行所述一个或多个与2的GF相乘运算进 一步包括对于值为1的每个最1?有效位执行XOR运算。
5. 如权利要求1所述的方法,其特征在于,执行所述一个或多个与2的GF相乘运算进 一步包括: 对存储在所述第二寄存器中的每一行执行与2的第二次GF相乘运算;以及 将所述与2的第二次GF相乘运算的结果存储在第三寄存器中。
6. 如权利要求5所述的方法,其特征在于,执行组合所述一个或多个与2的GF相乘运 算的结果的指令包括使用存储在所述第一、第二和第三寄存器中的数据作为源操作数来组 合所述状态矩阵的因子。
7. 如权利要求6所述的方法,其特征在于,所述结果矩阵被存储在所述第一寄存器中。
8. 如权利要求5所述的方法,其特征在于,所述状态矩阵是8位条目的8x8矩阵。
9. 如权利要求5所述的方法,其特征在于,所述第一、第二和第三寄存器是512位寄存 器。
10. 如权利要求2所述的方法,其特征在于,所述状态矩阵是8位条目的8x16矩阵。
11. 如权利要求8所述的方法,其特征在于,进一步包括: 执行对所述状态矩阵的第二个一半执行与2的GF相乘运算的指令;以及 执行对所述状态矩阵的所述第二个一半第二次执行与2的GF相乘运算的指令。
12. -种装置,包括: 多个数据寄存器;以及 与所述多个数据寄存器耦合的执行单元,所述执行单元执行对状态矩阵执行一个或多 个与2的伽罗瓦域(GF)相乘运算的指令以及用异或(XOR)函数将所述一个或多个与2的 GF相乘运算的结果进行组合以生成结果矩阵的指令。
13. 如权利要求12所述的装置,其特征在于,在执行组合结果的指令前所述执行单元 执行对所述状态矩阵第二次执行与2的GF相乘运算的指令。
14. 如权利要求12所述的装置,其特征在于,执行所述一个或多个与2的GF相乘运算 包括将所述状态矩阵的行存储在第一寄存器中,对存储在所述第一寄存器中的每一行执行 与2的GF相乘运算,以及将所述与2的GF相乘运算的结果存储在第二寄存器中。
15. 如权利要求14所述的装置,其特征在于,执行所述一个或多个与2的GF相乘运算 进一步包括对于值为1的每个最商有效位执行XOR运算。
16. 如权利要求12所述的装置,其特征在于,执行所述一个或多个与2的GF相乘运算 进一步包括对存储在所述第二寄存器中的每一行执行与2的第二次GF相乘运算,以及将所 述与2的第二次GF相乘运算的结果存储在第三寄存器中。
17. 如权利要求16所述的装置,其特征在于,执行组合所述一个或多个与2的GF相乘 运算的结果的指令包括使用存储在所述第一、第二和第三寄存器中的数据作为源操作数来 组合所述状态矩阵的因子。
18. 如权利要求17所述的装置,其特征在于,所述结果矩阵被存储在所述第一寄存器 中。
19. 如权利要求16所述的装置,其特征在于,所述状态矩阵是8位条目的8x8矩阵。
20. 如权利要求13所述的装置,其特征在于,所述状态矩阵是8位条目的8x16矩阵。
21. 如权利要求20所述的装置,其特征在于,所述执行单元进一步执行对所述状态矩 阵的第二个一半执行与2的GF相乘运算的指令以及执行对所述状态矩阵的所述第二个一 半第二次执行与2的GF相乘运算的指令。
22. -种系统,包括: 互连; 与所述互连耦合的处理器,所述处理器执行对状态矩阵执行一个或多个与2的伽罗瓦 域(GF)相乘运算的指令以及用异或(XOR)函数将所述一个或多个与2的GF相乘运算的结 果进行组合以生成结果矩阵的指令。 与所述互连耦合的动态随机存取存储器(DRAM)。
23. 如权利要求22所述的系统,其特征在于,在执行组合结果的指令前,所述处理器执 行对所述状态矩阵第二次执行与2的GF相乘运算的指令。
24. 如权利要求12所述的装置,其特征在于,执行所述一个或多个与2的GF相乘运算 包括将所述状态矩阵的行存储在第一寄存器中,对存储在所述第一寄存器中的每一行执行 与2的GF相乘运算,将所述与2的GF相乘运算的结果存储在第二寄存器中,对存储在所述 第二寄存器中的每一行执行与2的第二次GF相乘运算,将所述与2的第二次GF相乘运算 的结果存储在第三寄存器中。
25. 如权利要求24所述的系统,其特征在于,执行组合所述一个或多个与2的GF相乘 运算的结果的指令包括使用存储在所述第一、第二和第三寄存器中的数据作为源操作数来 组合所述状态矩阵的因子。
26. 如权利要求22所述的系统,其特征在于,所述处理器进一步执行对所述状态矩阵 的第二个一半执行与2的GF相乘运算的指令以及执行对所述状态矩阵的所述第二个一半 第二次执行与2的GF相乘运算的指令。
27. 一种制品,包括: 机器可读介质,包括一个或多个固态数据存储材料,所述机器可读存储介质存储指令, 当执行所述指令时,使得处理器: 对状态矩阵执行一个或多个与2的伽罗瓦域(GF)相乘运算;以及 用异或(XOR)函数将所述一个或多个与2的GF相乘运算的结果进行组合以生成结果 矩阵。
28. 如权利要求27所述的制品,其特征在于,所述机器可读存储介质存储在被执行时 进一步使得所述处理器在执行组合结果的指令前,执行对所述状态矩阵第二次执行与2的 GF相乘运算的指令。
29. 如权利要求28所述的制品,其特征在于,执行所述一个或多个与2的GF相乘运算 进一步包括对存储在所述第二寄存器中的每一行执行与2的第二次GF相乘,以及将所述与 2的第二次GF相乘运算的结果存储在第三寄存器中。
30. 如权利要求29所述的制品,其特征在于,执行组合所述一个或多个与2的GF相乘 运算的结果的指令包括使用存储在所述第一、第二和第三寄存器中的数据作为源操作数来 组合所述状态矩阵的因子。
【文档编号】G06F13/14GK104126174SQ201180076443
【公开日】2014年10月29日 申请日期:2011年12月22日 优先权日:2011年12月22日
【发明者】G·M·沃尔里齐, K·S·雅普, V·戈帕尔, J·D·吉尔福德, E·奥兹图科, S·M·格尔雷, W·K·费格哈利, M·G·迪克森 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1