Sm4加速处理器、方法、系统和指令的制作方法

文档序号:9551037阅读:847来源:国知局
Sm4加速处理器、方法、系统和指令的制作方法
【技术领域】
[0001] 本文所述的多个实施例总体涉及处理器。具体地说,本文所述的多个实施例一般 涉及在处理器中执行密码术。
【背景技术】
[0002] 密码学是通常用于保护计算机系统和其他电子设备中的机密信息或秘密信息的 技术。密码学一般涉及使用密码(cryptologic)算法和密码密钥来保护信息。例如,可执 行加密(encryption)(有时也称为密码操作(cipher)),在加密中,使用加密密钥(例如,位 串)对未经加密的或明文输入数据(例如,表示文本、数字、可理解字符等的位串)执行由 密码算法所指定的一系列变换或操作,以便产生经加密的数据。有时也将该经加密的数据 称为密文或密码数据。经加密的数据通常是不可理解的。在不知晓密码密钥的情况下,从 经加密数据来确定未经加密的明文数据一般是不太可能的,或者至少并非实际可行的。如 果知晓了密码密钥,则可对经加密的数据执行解密(decryption)(有时也称为逆向密码操 作(inversecipher))以重新产生对应的明文或未经加密的数据。在解密期间执行的变换 或操作基本上可以是加密期间所执行的那些变换或操作的逆转。
[0003]SM4是由中国政府批准在无线网络中使用的密码算法。SM4之前被称为SMS4。 SM4密码算法是块密码操作算法。输入数据(也被称为状态)、输出数据和密码密钥各自 是128位的。通过三十二轮执行对数据的加密。每一轮涉及用于将输入数据数据变换为 经加密的数据的多个不同的操作或变换。将具有类似变换的三十二轮用于解密数据。也 有用于密钥扩展的三十二轮,在其中生成用于不同的加密和解码轮的轮密钥。如果需要, SM4密码算法的进一步细节可在由SunMicrosystems公司的WhitfieldDiffie和索诺玛 州立大学的GeorgeLedin翻译并排版的文档 "SM4EncryptionAlgorithmforWireless NetW〇rkS"( "用于无线网络的SM4加密算法")(2008年5月15日,版本1.03)中得到。
[0004] 一个挑战在于,实现SM4密码算法一般是趋于计算密集型的。结果SM4密码算法 的软件实现一般容易性能不佳。该不佳的性能至少部分地由于需要执行的大量操作以及需 要执行的相对应的大量指令。通常,每一个单轮可获取若干条到许多条指令。此外,回想一 下,对于加密、解密和密钥扩展中的每一个都需要三十二轮。
【附图说明】
[0005] 通过参考以下描述以及用于说明多个实施例的附图,可最佳地理解本发明。在附 图中:
[0006]图1是包括一条或多条SM4加速指令的指令集的实施例的框图。
[0007] 图2是可用于执行SM4加速指令的实施例的处理器实施例的框图。
[0008]图3是执行SM4加速指令的实施例的方法的实施例的流程框图。
[0009] 图4是SM4四密码轮操作的实施例的框图。
[0010] 图5是SM4四密钥扩展轮操作的实施例的框图。
[0011] 图6是SM4执行单元的示例实施例的框图。
[0012] 图7是SM4单轮执行逻辑的示例实施例的框图。
[0013] 图8A是用于SM4四轮密码操作指令的指令格式和用于SM4四轮密钥扩展指令的 指令格式的实施例的框图。
[0014] 图8B是针对用于执行四轮的密码操作和四轮的密钥扩展两者的单条SM4加速指 令的指令格式的实施例的框图。
[0015]图9A是示出有序流水线的实施例以及寄存器重命名的无序发布/执行流水线的 实施例的框图。
[0016] 图9B是处理器核的实施例的框图,该处理器核包括耦合到执行引擎单元的前端 单元,并且前端单元和执行引擎单元两者都耦合到存储器单元。
[0017] 图10A是单个处理器核以及它与管芯上互连网络的连接及其第二级(L2)高速缓 存的本地子集的实施例的框图。
[0018] 图10B是图10A的处理器核的部分的展开图的实施例的框图。
[0019] 图11是可具有多于一个的核、可具有集成存储器控制器并且可具有集成图形器 件的处理器的实施例的框图。
[0020] 图12是计算机架构的第一实施例的框图。
[0021] 图13是计算机架构的第二实施例的框图。
[0022] 图14是计算机架构的第三实施例的框图。
[0023] 图15是芯片上系统架构的实施例的框图。
[0024]图16是根据本发明的多个实施例的使用软件指令转换器将源指令集中的二进制 指令转换成目标指令集中的二进制指令的框图。
【具体实施方式】
[0025] 本文中所公开的是SM4加速指令、用于执行这些指令的处理器、在处理或执行这 些指令时由处理器执行的方法以及包含一个或多个用于处理或执行这些指令的系统。在以 下描述中,阐述多个特定细节(例如,特定指令操作、数据格式、操作数之内的数据的安排、 处理器配置、微架构细节、操作序列等)。然而,在没有这些特定细节的情况下,也可实施多 个实施例。在其他实例中,未详细示出公知的电路、结构和技术,以避免使对本说明书的理 解模糊。
[0026] 图1是包括一条或多条SM4加速指令102的指令集100的框图。SM4加速指令可 有助于加速SM4密码算法的实现。该指令集是处理器的指令集架构(ISA)的部分,并且包括 处理器操作以执行的原生指令。该指令集中的指令表示提供给处理器以供执行的宏指令、 汇编语言指令或机器层级指令。这些指令与通过对指令集中的多条指令进行解码而得到的 微指令、微操作或其他指令形成对比。
[0027] 在一些实施例中,该SM4加速指令102可包括SM4四密码操作轮指令104。在密码 操作(例如,加密和解密)期间,SM4算法使用轮函数(F)。在方程1中示出该轮函数(F):
[0028] X1+4=F(XX1+1,X1+2,X1+3,rl〇 方程 1
[0029] =XxXORT(X1+1X0RX1+2X0RX1+3X〇Rrkx)
[0030] 符号"XOR"表示可对这些32位的值执行的按位的异或(XOR)操作。项Xi表示轮 i的32位状态片(pieceofstate),Xi+1表示轮(i+1)的32位状态片,以此类推。项rki表示轮i的32位轮密钥。最初,可将128位的输入块(例如,将加密的明文数据的128位) 指定为四个32位元素(Χο,ΧρΧ^Χ;^。可按照大字节存储顺序(bigendianorder)来安排 这些元素。该轮函数(F)用于执行三十二轮(例如,用于i= 0、1、2、…、31)。具有代表性 的是,在第一轮期间,可通过对?(\31,&,&,4。)求值来确定32位的结果乂 4。在三十二轮 加密之后,(X2S,X29,X3。,X31)表示对应于128位的数据块(X。,XuX2,X3)的128位的经加密数 据。
[0031] 注意,方程1具有函数T(x)。T(x)被称为混合-替换(mixer-substitution)函 数。T(X)从32位的输入中生成32位的输出。如方程2中所示,混合-替换函数T(X)包括 两个替换函数:
[0032] T(x) =L(τ(X))方程 2
[0033] 函数τ(χ)是"非线性替换"函数。函数L(B)是"线性替换"函数。
[0034] 方程3表示非线性替换函数τ(χ)的操作:
[0035] τ(χ) =(Sbox(a〇),Sbox(a^ ,Sbox(a2),Sbox(a3))方程 3
[0036] τ(χ)将替换盒(S盒(Sbox))应用于32位的输入值x。可将该32位的值x逻辑 地分割为四个8位的片段或字节arapajPa3。可使at^a^ajPa3中的每一个通过S盒。 该S盒可获取相关联的8位片段作为输入,对输入8位片段执行非线性替换以生成替代或 替换的8位片段,并且输出替代或替换的8位片段。作为示例,可将该S盒实现为固定查 找表。可使用该输入8位片段以便在该查找表中查找对应的输出8位片段。例如,该输入 8位片段的一部分可选择行,该输入8位片段的另一部分可选择列,并且所选择的行和所选 择的列可标识将用作输出字节的字节。可串接这四个输出8位片段以产生32位的值B。该 32位的值B可表示四个经串接的8位片段(b。,&b2,b3)。通过方程4示出B和τ(χ)之间 的关系:
[0037] B= (b。,b!,b2,b3) =τ(χ)方程 4
[0038] 如方程2中所示,可对非线性替换函数τ(χ)的32位的结果Β执行线性替换函数 L(B)。在方程5中示出用于加密和/或解密的该线性替换函数L(B):
[0039] L(B) =BX0R(B〈〈〈2)X0R(B〈〈〈10)
[0040] X0R(B〈〈〈18)X0R(B〈〈〈24)方程 5
[0041] 符号表示将32位的值左循环或"循环偏移"i位。例如,B〈〈〈18表示将Β 左循环18位。
[0042] 在加密期间,可在三十二轮(例如,i= 0、1、…、31)中的每一轮期间执行方程1 所表示的轮函数(F)(例如,包括混合-替换函数Τ(χ),其具有由方程3给出的非线性替换 函数τ(χ)和由方程5给出的线性替换函数UB))。在这三十二轮之后,可将该明文的128 位输入块(X。,Xi,Χ2,Χ3)的经加密的值或密文值指定为(Y。,YdΥ2,Υ3)。(Y。,YdΥ2,Υ3)等于可 被指定为(Χ35,Χ34,Χ33,Χ32)的(Χ32,Χ33,Χ34,Χ35)的逆向替换。
[0043] 在解密期间,可通过使用由方程1所表示的相同的轮函数(F)(例如,包括混 合-替换函数Τ(χ),其具有由方程3给出的非线性替换函数τ(χ)和由方程5给出的线性 替换函数L(B))对块解密,但是逆转使用轮密钥所遵照的顺序。也就是说,算法的加 密和解密执行基本相同的操作,区别在于,逆转使用轮密钥所遵循的顺序。例如,用于加密 的密钥顺序可以是首先为rk。、然后是rki,…,并且最后是rk31,而用于解密的密钥顺序可 以是首先为rk31,然后是rk3。,…,并且最后是rk。。
[0044] 在一些实施例中,SM4四密码操作轮指令可对全部或至少基本上全部的四密码操 作(例如,加密或解密)轮求值来生成各自对应于不同的单个顺序的密码操作轮的四个单 轮结果。例如,在一些实施例中,在这四轮中的每一轮期间,该SM4四密码操作轮指令可对 全部或至少基本全部方程1-5求值。例如,在一些实施例中,在这四轮中的每一轮期间,该 SM4四密码操作轮指令可对由方程1给出的四个X0R操作、由方程3给出的非线性替换函 数τ(X)(例如,包括S盒查找表)、由方程5给出的线性替换函数L(B)的四个X0R和四个 左循环中的全部或至少基本上全部求值。应当理解,尽管通过SM4四密码操作轮指令的界 限之内的这些操作中的至少多数(即,多于50% )、至少大多数(即,多于80% )、基本全部 (例如,至少95% )或全部,一般可改善性能,但是在一些实施例中,可以可选地在该SM4四 密码操作轮指令的界限之外执行这些操作中的某些(例如,可在该指令之外执行一些X0R 或循环操作,提供中间结果作为输入)。
[0045] 再次参考图1,在一些实施例中,SM4加速指令102可包括可选的SM4四密钥扩展 轮指令106,但这不是必需的。SM4算法的另一部分是密钥扩展或生成。在密钥扩展期间, 生成作为对密码操作(例如,加密和/或解密)轮的输入(例如,对由方程1表示的F函数 的输入)所需要的轮密钥或扩展密钥。
[0046] 可通过算法所定义的128位加密密钥"MK"、128位的系统参数"FK"和三十二个 密钥生成常数(CK。,(?,…CK31)来生成三十二个轮密钥(rk。,rh,。可将128位的 加密密钥MK表示为四个32位片段(MK。,MLMK2,MK3)。可将系统参数FK表示为四个32位 系统参数片段(FKmFUI^Fig。按照十六进制计数法,这些系统参数片段可以是FKq = (aSblbacehFK!: (56aa3350),FK2= (677d9197),并且FK3= (b27022dc)。最初,可根据 方程6来计算四个32位的片段(K。,1,K2,K3)。
[0047] (Κ〇,Κ1;Κ2,Κ3) = (MK〇XORFK〇,MK^ORFK^ 方程 6
[0048] MK2X0RFK2,MK3X0RFK3)
[0049] 可根据由方程7所表示的密钥扩展轮函数(F')来生成三十二个轮密钥。
[0050] rk1=K1+4=F'(KK1+1,K1+2,K1+3, 0〇 方程 7
[0051] =K,XORΤ? (K1+1X0RK1+2X0RK1+3X0RCKX)
[0052] 可对方程7求值一次以生成一轮密钥扩展的单个结果(例如,轮密钥。方程 7的密钥扩展轮函数(F')与方程1的密码操作轮函数(F)类似。一个例外在于,方程7的 密钥扩展轮函数(F')具有比方程1的密码操作轮函数(F)的混合-替换函数T(x)略有不 同的混合-替换函数Τ'(X)。具体而言,密钥扩展混合-替换函数Τ'(X)使用与方程5的 密码操作线性替换函数L(B)不同的密钥扩展线性替换函数L'(Β)。在方程8中示出密钥 扩展线性替换函数L'(B):
[0053] L'(B) =BX0R(B〈〈〈13)X0R(B〈〈〈23)方程 8
[0054] 如所能看到的那样,通过将方程5与方程8比较,与方程5的密码操作线性替换函 数L(B)相比,密钥扩展线性替换函数L'(B)使用不同的循环量,少两个X0R操作,并且少两 个循环操作。
[0055] 在一些实施例中,SM4四密钥扩展轮指令可对全部或至少基本上全部的四个密钥 扩展轮求值以生成各自对应于不同的单个顺序的密钥扩展轮的四个轮密钥或扩展密钥。例 如,在一些实施例中,在这四轮中的每一轮期间,该SM4四密码操作轮指令可对方程7、2-4 和8中的全部或至少基本上全部求值。例如,在一些实施例中,在这四轮中的每一轮期间, 该SM4四密码操作轮指令可对由方程7给出的四个XOR操作中的全部或至少基本上全部求 值,可对由方程3给出的非线性替换函数τ(X)(例如,包括S盒查找表)中的全部或至少基 本上全部求值,并且可对由方程8给出的线性替换函数L'(Β)的两个XOR和两个左循环中 的全部或至少基本上全部求值。应当理解,尽管通过SM4四密钥扩展轮指令的界限之内的 这些操作中的至少多数(即,多于50%)、至少大多数(S卩,多于80%)、基本全部(例如, 至少95% )或全部,一般可改善性能,但是在一些实施例中,可以可选地在该SM4四密钥扩 展轮指令的界限之外执行这些操作中的某些(例如,可在该指令之外执行一些XOR或循环 操作,提供中间结果作为输入)。
[0056] 图2是可用于执行SM4加速指令202的实施例的处理器210的实施例的框图。在 一些实施例中,该处理器可以是通用处理器(例如,通常在台式计算机、膝上型计算机或其 他计算机中所使用类型的中央处理单元(CPU)或其他通用处理器)。在一个方面,使用通用 处理器的指令可有助于避免使用诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC)之 类的专用的密码专用硬件的需要,使用这些专用硬件将容易向实现方式增加成本、功耗和/ 或尺寸。或者,该处理器可以是专用处理器。合适的专用处理器的示例可包括但不限于,密 码处理器、密码协处理器、通信处理器、网络处理器、图形处理器、协处理器、嵌入式处理器、 数字信号处理器(DSP),等等。该处理器可以是各种复杂指令集计算(CISC)处理器、各种精 简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器中的任何处理器,可以是上述 各项的各种混合,可具有不同指令集(例如,在不同的核中)的组合,或者可以是其他类型 的处理器。
[0057]在操作期间,处理器210可接收SM4加速指令202。在一些实施例中,该SM4加速 指令可以是SM4四密码操作轮指令(例如,指令104),或者在其他实施例中,可以是SM4四 密钥扩展轮指令(例如,指令106)。可从指令取出单元、指令队列等接收该SM4加速指令。 该SM4加速指令可表示处理器的指令集的宏指令、汇编语言指令、机器代码指令或其他指 令或控制信号。
[0058]在一些实施例中,该SM4加速指令可显式地指定(例如,通过一个或多个字段或一 组位)或以其他方式指示(例如,隐式地指示)一个或多个源紧缩数据操作数118、122。在 一些实施例中,该一个或多个
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1