欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

Sm4加速處理器、方法、系統和指令的制作方法

文檔序號:9551037閱讀:873來源:國知局
Sm4加速處理器、方法、系統和指令的制作方法
【技術領域】
[0001] 本文所述的多個實施例總體涉及處理器。具體地說,本文所述的多個實施例一般 涉及在處理器中執(zhí)行密碼術。
【背景技術】
[0002] 密碼學是通常用于保護計算機系統和其他電子設備中的機密信息或秘密信息的 技術。密碼學一般涉及使用密碼(cryptologic)算法和密碼密鑰來保護信息。例如,可執(zhí) 行加密(encryption)(有時也稱為密碼操作(cipher)),在加密中,使用加密密鑰(例如,位 串)對未經加密的或明文輸入數據(例如,表示文本、數字、可理解字符等的位串)執(zhí)行由 密碼算法所指定的一系列變換或操作,以便產生經加密的數據。有時也將該經加密的數據 稱為密文或密碼數據。經加密的數據通常是不可理解的。在不知曉密碼密鑰的情況下,從 經加密數據來確定未經加密的明文數據一般是不太可能的,或者至少并非實際可行的。如 果知曉了密碼密鑰,則可對經加密的數據執(zhí)行解密(decryption)(有時也稱為逆向密碼操 作(inversecipher))以重新產生對應的明文或未經加密的數據。在解密期間執(zhí)行的變換 或操作基本上可以是加密期間所執(zhí)行的那些變換或操作的逆轉。
[0003]SM4是由中國政府批準在無線網絡中使用的密碼算法。SM4之前被稱為SMS4。 SM4密碼算法是塊密碼操作算法。輸入數據(也被稱為狀態(tài))、輸出數據和密碼密鑰各自 是128位的。通過三十二輪執(zhí)行對數據的加密。每一輪涉及用于將輸入數據數據變換為 經加密的數據的多個不同的操作或變換。將具有類似變換的三十二輪用于解密數據。也 有用于密鑰擴展的三十二輪,在其中生成用于不同的加密和解碼輪的輪密鑰。如果需要, SM4密碼算法的進一步細節(jié)可在由SunMicrosystems公司的WhitfieldDiffie和索諾瑪 州立大學的GeorgeLedin翻譯并排版的文檔 "SM4EncryptionAlgorithmforWireless NetW〇rkS"( "用于無線網絡的SM4加密算法")(2008年5月15日,版本1.03)中得到。
[0004] 一個挑戰(zhàn)在于,實現SM4密碼算法一般是趨于計算密集型的。結果SM4密碼算法 的軟件實現一般容易性能不佳。該不佳的性能至少部分地由于需要執(zhí)行的大量操作以及需 要執(zhí)行的相對應的大量指令。通常,每一個單輪可獲取若干條到許多條指令。此外,回想一 下,對于加密、解密和密鑰擴展中的每一個都需要三十二輪。
【附圖說明】
[0005] 通過參考以下描述以及用于說明多個實施例的附圖,可最佳地理解本發(fā)明。在附 圖中:
[0006]圖1是包括一條或多條SM4加速指令的指令集的實施例的框圖。
[0007] 圖2是可用于執(zhí)行SM4加速指令的實施例的處理器實施例的框圖。
[0008]圖3是執(zhí)行SM4加速指令的實施例的方法的實施例的流程框圖。
[0009] 圖4是SM4四密碼輪操作的實施例的框圖。
[0010] 圖5是SM4四密鑰擴展輪操作的實施例的框圖。
[0011] 圖6是SM4執(zhí)行單元的示例實施例的框圖。
[0012] 圖7是SM4單輪執(zhí)行邏輯的示例實施例的框圖。
[0013] 圖8A是用于SM4四輪密碼操作指令的指令格式和用于SM4四輪密鑰擴展指令的 指令格式的實施例的框圖。
[0014] 圖8B是針對用于執(zhí)行四輪的密碼操作和四輪的密鑰擴展兩者的單條SM4加速指 令的指令格式的實施例的框圖。
[0015]圖9A是示出有序流水線的實施例以及寄存器重命名的無序發(fā)布/執(zhí)行流水線的 實施例的框圖。
[0016] 圖9B是處理器核的實施例的框圖,該處理器核包括耦合到執(zhí)行引擎單元的前端 單元,并且前端單元和執(zhí)行引擎單元兩者都耦合到存儲器單元。
[0017] 圖10A是單個處理器核以及它與管芯上互連網絡的連接及其第二級(L2)高速緩 存的本地子集的實施例的框圖。
[0018] 圖10B是圖10A的處理器核的部分的展開圖的實施例的框圖。
[0019] 圖11是可具有多于一個的核、可具有集成存儲器控制器并且可具有集成圖形器 件的處理器的實施例的框圖。
[0020] 圖12是計算機架構的第一實施例的框圖。
[0021] 圖13是計算機架構的第二實施例的框圖。
[0022] 圖14是計算機架構的第三實施例的框圖。
[0023] 圖15是芯片上系統架構的實施例的框圖。
[0024]圖16是根據本發(fā)明的多個實施例的使用軟件指令轉換器將源指令集中的二進制 指令轉換成目標指令集中的二進制指令的框圖。
【具體實施方式】
[0025] 本文中所公開的是SM4加速指令、用于執(zhí)行這些指令的處理器、在處理或執(zhí)行這 些指令時由處理器執(zhí)行的方法以及包含一個或多個用于處理或執(zhí)行這些指令的系統。在以 下描述中,闡述多個特定細節(jié)(例如,特定指令操作、數據格式、操作數之內的數據的安排、 處理器配置、微架構細節(jié)、操作序列等)。然而,在沒有這些特定細節(jié)的情況下,也可實施多 個實施例。在其他實例中,未詳細示出公知的電路、結構和技術,以避免使對本說明書的理 解模糊。
[0026] 圖1是包括一條或多條SM4加速指令102的指令集100的框圖。SM4加速指令可 有助于加速SM4密碼算法的實現。該指令集是處理器的指令集架構(ISA)的部分,并且包括 處理器操作以執(zhí)行的原生指令。該指令集中的指令表示提供給處理器以供執(zhí)行的宏指令、 匯編語言指令或機器層級指令。這些指令與通過對指令集中的多條指令進行解碼而得到的 微指令、微操作或其他指令形成對比。
[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位的值執(zhí)行的按位的異或(XOR)操作。項Xi表示輪 i的32位狀態(tài)片(pieceofstate),Xi+1表示輪(i+1)的32位狀態(tài)片,以此類推。項rki表示輪i的32位輪密鑰。最初,可將128位的輸入塊(例如,將加密的明文數據的128位) 指定為四個32位元素(Χο,ΧρΧ^Χ;^。可按照大字節(jié)存儲順序(bigendianorder)來安排 這些元素。該輪函數(F)用于執(zhí)行三十二輪(例如,用于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??蓪⒃?2位的值x邏輯 地分割為四個8位的片段或字節(jié)arapajPa3??墒筧t^a^ajPa3中的每一個通過S盒。 該S盒可獲取相關聯的8位片段作為輸入,對輸入8位片段執(zhí)行非線性替換以生成替代或 替換的8位片段,并且輸出替代或替換的8位片段。作為示例,可將該S盒實現為固定查 找表??墒褂迷撦斎?位片段以便在該查找表中查找對應的輸出8位片段。例如,該輸入 8位片段的一部分可選擇行,該輸入8位片段的另一部分可選擇列,并且所選擇的行和所選 擇的列可標識將用作輸出字節(jié)的字節(jié)??纱舆@四個輸出8位片段以產生32位的值B。該 32位的值B可表示四個經串接的8位片段(b。,&b2,b3)。通過方程4示出B和τ(χ)之間 的關系:
[0037] B= (b。,b!,b2,b3) =τ(χ)方程 4
[0038] 如方程2中所示,可對非線性替換函數τ(χ)的32位的結果Β執(zhí)行線性替換函數 L(B)。在方程5中示出用于加密和/或解密的該線性替換函數L(B):
[0039] L(B) =BX0R(B〈〈〈2)X0R(B〈〈〈10)
[0040] X0R(B〈〈〈18)X0R(B〈〈〈24)方程 5
[0041] 符號表示將32位的值左循環(huán)或"循環(huán)偏移"i位。例如,B〈〈〈18表示將Β 左循環(huán)18位。
[0042] 在加密期間,可在三十二輪(例如,i= 0、1、…、31)中的每一輪期間執(zhí)行方程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))對塊解密,但是逆轉使用輪密鑰所遵照的順序。也就是說,算法的加 密和解密執(zhí)行基本相同的操作,區(qū)別在于,逆轉使用輪密鑰所遵循的順序。例如,用于加密 的密鑰順序可以是首先為rk。、然后是rki,…,并且最后是rk31,而用于解密的密鑰順序可 以是首先為rk31,然后是rk3。,…,并且最后是rk。。
[0044] 在一些實施例中,SM4四密碼操作輪指令可對全部或至少基本上全部的四密碼操 作(例如,加密或解密)輪求值來生成各自對應于不同的單個順序的密碼操作輪的四個單 輪結果。例如,在一些實施例中,在這四輪中的每一輪期間,該SM4四密碼操作輪指令可對 全部或至少基本全部方程1-5求值。例如,在一些實施例中,在這四輪中的每一輪期間,該 SM4四密碼操作輪指令可對由方程1給出的四個X0R操作、由方程3給出的非線性替換函 數τ(X)(例如,包括S盒查找表)、由方程5給出的線性替換函數L(B)的四個X0R和四個 左循環(huán)中的全部或至少基本上全部求值。應當理解,盡管通過SM4四密碼操作輪指令的界 限之內的這些操作中的至少多數(即,多于50% )、至少大多數(即,多于80% )、基本全部 (例如,至少95% )或全部,一般可改善性能,但是在一些實施例中,可以可選地在該SM4四 密碼操作輪指令的界限之外執(zhí)行這些操作中的某些(例如,可在該指令之外執(zhí)行一些X0R 或循環(huán)操作,提供中間結果作為輸入)。
[0045] 再次參考圖1,在一些實施例中,SM4加速指令102可包括可選的SM4四密鑰擴展 輪指令106,但這不是必需的。SM4算法的另一部分是密鑰擴展或生成。在密鑰擴展期間, 生成作為對密碼操作(例如,加密和/或解密)輪的輸入(例如,對由方程1表示的F函數 的輸入)所需要的輪密鑰或擴展密鑰。
[0046] 可通過算法所定義的128位加密密鑰"MK"、128位的系統參數"FK"和三十二個 密鑰生成常數(CK。,(?,…CK31)來生成三十二個輪密鑰(rk。,rh,??蓪?28位的 加密密鑰MK表示為四個32位片段(MK。,MLMK2,MK3)??蓪⑾到y參數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)使用不同的循環(huán)量,少兩個X0R操作,并且少兩 個循環(huán)操作。
[0055] 在一些實施例中,SM4四密鑰擴展輪指令可對全部或至少基本上全部的四個密鑰 擴展輪求值以生成各自對應于不同的單個順序的密鑰擴展輪的四個輪密鑰或擴展密鑰。例 如,在一些實施例中,在這四輪中的每一輪期間,該SM4四密碼操作輪指令可對方程7、2-4 和8中的全部或至少基本上全部求值。例如,在一些實施例中,在這四輪中的每一輪期間, 該SM4四密碼操作輪指令可對由方程7給出的四個XOR操作中的全部或至少基本上全部求 值,可對由方程3給出的非線性替換函數τ(X)(例如,包括S盒查找表)中的全部或至少基 本上全部求值,并且可對由方程8給出的線性替換函數L'(Β)的兩個XOR和兩個左循環(huán)中 的全部或至少基本上全部求值。應當理解,盡管通過SM4四密鑰擴展輪指令的界限之內的 這些操作中的至少多數(即,多于50%)、至少大多數(S卩,多于80%)、基本全部(例如, 至少95% )或全部,一般可改善性能,但是在一些實施例中,可以可選地在該SM4四密鑰擴 展輪指令的界限之外執(zhí)行這些操作中的某些(例如,可在該指令之外執(zhí)行一些XOR或循環(huán) 操作,提供中間結果作為輸入)。
[0056] 圖2是可用于執(zhí)行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
清水县| 石屏县| 黎川县| 佛山市| 荔波县| 绍兴县| 越西县| 南江县| 泰州市| 昌乐县| 临沂市| 湖南省| 鄂尔多斯市| 临沧市| 邵东县| 云浮市| 集安市| 潼关县| 大冶市| 资阳市| 梅州市| 措美县| 弥勒县| 荆门市| 翼城县| 大城县| 锦州市| 乌恰县| 台山市| 格尔木市| 剑川县| 昌都县| 塔城市| 呼和浩特市| 宽城| 师宗县| 海晏县| 偃师市| 上饶市| 陇西县| 洪江市|