TWI390401B - 利用單一指令以多模式執行先進加密標準加解密的方法、系統與處理器 - Google Patents
利用單一指令以多模式執行先進加密標準加解密的方法、系統與處理器 Download PDFInfo
- Publication number
- TWI390401B TWI390401B TW097108905A TW97108905A TWI390401B TW I390401 B TWI390401 B TW I390401B TW 097108905 A TW097108905 A TW 097108905A TW 97108905 A TW97108905 A TW 97108905A TW I390401 B TWI390401 B TW I390401B
- Authority
- TW
- Taiwan
- Prior art keywords
- encryption
- aes
- instruction
- result
- operand
- Prior art date
Links
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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- 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/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Executing Machine-Instructions (AREA)
Description
本發明有關於利用單一指令以多模式執行先進加密標準加解密的方法、系統與處理器。
本發明之實施法大致關係於處理器,更明確地說,係有關於使得處理器執行先進加密標準(AES)加解密的指令。
AES為由國家標準技術協會所訂定的先進加密標準,並被界定於FIPS公告197中。AES可以具有各種鑰大小。其中有3種可接受鑰尺寸:128位元、192位元及256位元。AES加密採用128位元明文輸入及一鑰,然後產生128位元之密文(例如被以AES加密之明文)輸出。同樣地,AES解密行相反操作,其中以128位元密文及一鑰以產生128位元之明文。
AES可以用於很多模式之運算中。一種最常用模式為所謂加密區塊鏈(CBC)模式。另一次常用模式為所謂電子加密簿(ECB)模式。也有其他模式,例如所謂之計數器模式(STR),其在概念上係類似於ECB。
在計算系統中,我們想要使用於處理器之一或多數指令係專用於AES加密及/或解密。
以下詳細說明係參考附圖加以進行。相同元件符號在不同圖式中之相同或類似元件。在以下說明中,為了解釋及非限定目的,特定細節例如特定結構、架構、介面、技術等加以說明,以提供對本發明之各種態樣的完全了解。然而,可以為熟習於本技藝者所了解,利用本發明之各種態樣可以被實施在其他沒有這些特定細節的例子中。在部份例子中,已知裝置、電路、及方法的說明係被省略,以避免不必要地限制本發明之說明於這些不必要細節中。
本案描述包含有用以執行AES加密及/或解密之處理器指令的方法、設備與系統。
兩項此指令為:
AESENCRYPT(arg1)xmmdestination,(arg2)xmmsource/memory
AESDECRYPT(arg1)xmmdestination,(arg2)xmmsource/memory
在加密時,xmmsource/memory供給予以使用之明文,及xmmdestination將會是密文。在解密時,角色相反,源為密文,及目的地為明文。在部份實施法中,兩運算元均可以用於加密或解密,並將如以下所述。在兩情形下,經由使用一或多數128位元隱含暫存器(例如,以下所詳述之XMM0&XMM1),加密鑰被供給AESENCRYPT及/或AESDECRYPT指令。
雖然以下之很多說明係針對加密指令,即AESENCRYPT,但熟習於本技藝者可以了解,解密,即AESDECRYPT也可以以類似於解密方式加以替代及/或使用。主要描述AESENCRYPT係主澄清及容易說明起見,並不是表示指令較其他指令重要。
圖1顯示依據本發明實施例之電腦系統100。電腦系統100包含一內連線101,用以傳送資訊。內連線101可以包含多投匯流排、一或多數點對點內連線、或兩者之組合,及其他通訊硬體及/或軟體。
圖1顯示一耦接至內連線101之處理器109,用以處理資訊。處理器109表示任意類型架構之中央處理單元,其包含CISC或RISC類型之架構者。
電腦系統100更包含一隨機存取記憶體(RAM)或其他動態儲存裝置(稱為主記憶體104),耦接至內連線101,用以儲存予以為處理器109所執行之資訊及指令。主記憶體104也可以用以儲存指令為處理器109所執行之暫時變數或其他中間資訊。
處理器109也包含耦接至內連線101之唯讀記憶體(ROM)106、及/或其他靜態儲存裝置,用以儲存靜態資訊及處理器109之指令。資料儲存裝置107也耦接至內連線101,用以儲存資訊及指令。
圖1同時也顯示處理器109,其包含一執行單元130、
一暫存器檔150、一快取160、一解碼器165、及一內部內連線170。當然,處理器109包含其他電路,其對於了解本發明並不必要。
解碼器165也用以解碼為處理器109所接收之指令及執行單元130係用以執行為處理器109所接收之指令。除了在一般目的處理器中所執行之辨識指令外,解碼器165及執行單元130認出用以執行AES加密或解密(AESENCRYPT或AESDECRYPT)運算的指令。解碼器165及執行單元130認出用以對兩緊縮(packed)及未緊縮(unpacked)資料執行AESENCRYPT或AESDECRYPT運算的指令。
執行單元130也為內部內連線170所耦接至暫存器檔150。再者,內部內連線170不必然是一多投匯流排,在另一實施例中,也可以是一點對點內連線或其他類型之通訊通道。
暫存器檔150代表用以儲存資訊,包含資料的處理器109之儲存區。可以了解的是,本發明之一態樣為用以對緊縮或未緊縮資料,執行AESENCRYPT或AESDECRYPT運算的指令實施例。依據本發明此態樣,用以儲存資料的儲存區並不重要。然而,暫存器檔150的實施例係隨後參考圖2加以描述。
執行單元130係耦接至快取160及解碼器165。快取160係用以由例如主記憶體104快取資料及/或控制信號。解碼器165係用以將為處理器109所接收之指令解碼為控
制信號及/或微碼輸入點。這些控制信號及/或微碼輸入點可以由解碼器165傳送至執行單元130。
回應於這些控制信號及/或微碼輸入點,執行單元130執行適當運算。例如,假如AESENCRYPT或AESDECREYPT指令被接收,則解碼器165使得執行單元130執行所需之加密或解密。至少部份實施例中,執行單元130可以使用一或更多鑰(例如見密碼電路145),加密或解密128位元之明文或密文。
解碼器165可以使用任意數量之不同機制(例如查看表、硬體實施法、PLA等等)加以實施。因此,雖然於此以一連串若/則(if/then)宣告表示解碼器165及執行單元130之各種指令之執行,但可以了解的是,指令的執行並不必要一連串之若/則宣告之處理。相反地,任何邏輯上執行此若/則處理的機制均被認為在本發明之範圍內。
圖1額外顯示一資料儲存裝置107(例如,一磁碟、光碟、及/或其他機器可讀取媒體)可以被耦接至電腦系統100者。另外,資料儲存裝置107係被顯示以包含用以為處理器109所執行之碼195。碼195可以包含AESENCRYPT或AESDECRYPT指令142的一或多數實施例,這些係可以被寫入,以使得處理器109以AESCRYPT或AESDECRYPT指令142執行任意數量之安全相關目的之位元AES加密或解密。
電腦系統100也可以經由內連線101耦接至一顯示裝置121,用以顯示資訊至一電腦使用者。顯示裝置121可
以包含特定於圖形描繪裝置之一框緩衝器、液晶顯示器(LCD)、及/或平面顯示器。
包含文數字及其他鍵的輸入裝置122可以耦接至內連線101,用以傳送資訊及命令選擇至處理器109。另一類型之使用者輸入裝置係為游標控制123,例如,一滑鼠、軌跡球、一光筆、一觸控螢幕、或一游標方向鍵,用以傳送方向資訊及命令選擇至處理器109,及用以在顯示裝置121上控制游標移動。此輸入裝置典型在兩軸上具有兩自由度,一第一軸(例如x)及一第二軸(例如y),這允許裝置指明在一平面中之位置。然而,本發明不應被限制至這些只具有兩自由度的輸入裝置。
其他可以耦接至101之裝置為硬拷貝裝置124,其可以用以列印指令、資料或其他資訊於例如紙張、軟片或其他類型媒體之媒體上。另外,電腦系統100可以耦接至用以聲音記錄、及/或播放之裝置,例如,音訊數位器可以耦接至一麥克風,用以記錄資訊。再者,裝置125可以包含一喇叭,耦接至一數位至類比(D/A)轉換器,用以播放數位聲音。
電腦系統100可以為電腦網路(例如LAN)中之終端。電腦系統100然後可以為電腦網路之電腦子系統。電腦系統100可選用地包含一視訊數位裝置126及/或一通訊裝置190(例如一串列通訊晶片、一無線界面、一乙太晶片或一數據機,其提供與外部裝置或網路的通訊)。視訊數位裝置126然後可以用以捕捉視訊影像,該等影像可以被傳
送至電腦網路上之其他裝置。
至少一實施例中,處理器109支援一指令集,其係相容於現行由美國加州聖塔卡拉之英特爾公司所製造之處理器(例如英特爾Pentium處理器、英特爾ProPentium處理器、英特爾Pentium II處理器、英特爾Pentium III處理器、英特爾Pentium4處理器、英特爾Itanium處理器、英特爾Itanium2處理器、或其他英特爾Core Duo處理器)。結果,處理器109可以除了本發明之運算外,也可以支援行處理器運算。處理器109可以適用以製造於一或多數製程術中,並以足夠細節在機器可讀取媒體上表示,並適用以促成此製造。雖然本發明係加入x86為主指令集加以描述,但其他實施例中也可以將本發明加入其他指令集中。例如,本發明可以使用x86為主指令集以外之指令集,來加入64位元處理器中。
圖2為依據本發明另一實施例之處理器的暫存器檔。暫存器檔150可以用以儲存資訊,資訊包含控制/狀態資訊、整數資料、浮點資料及緊縮資料。在圖2所示之實施例中,暫存器檔150包含整數暫存器201、暫存器209、狀態暫存器208、延伸暫存器210、及指令指標暫存器211。狀態暫存器208、指令指標暫存器211、整數暫存器201、暫存器209均耦接至內部內連線170。另外,延伸暫存器210也耦接至內部內連線170。內部內連線170可以但並不必然為一多投匯流排。內部內連線170也可以是任意其他類型之通訊通道,包含點對點內連線。
至少一實施例中,延伸暫存器210係用以緊縮整數資料及緊縮浮點資料。在其他實施例中,延伸暫存器210可以用以純量資料、緊縮布林資料、緊縮整數資料及/或緊縮浮點資料。當然,也可以實施其他實施例,以保有更多或更少之整數集,在每一集中之更多或更少暫存器或在每一暫存器中之更多或更少資料儲存位元均不會脫離本發明之範圍。
至少部份實施例中,整數暫存器201係被實施為32位元,暫存器209係被實施為80位元(所有8位元用以儲存浮點資料,而只有64位元被用於緊縮資料)及延伸暫存器210被實施以儲存128位元。另外,延伸暫存器210可以包含8暫存器,XR0213a至XR7213h。XR0213A、XR1213B及XR2213c係為暫存器210中之個別暫存器例子。例如,128位元延伸暫存器210可以被使用以提供AESENCRYPT指令之一或兩運算元,並可以用以提供AESENCRYPT指令所用之一或兩隱含暫存器(例如XMM0&XMM1)。
另一實施例中,整數暫存器201各包含64位元,延伸暫存器210各包含64位元及延伸暫存器210包含16暫存器。對於一實施例中,延伸暫存器210的兩暫存器可以操作為一對。對於另一實施例中,延伸暫存器210包含32暫存器。
圖3概念上顯示用於ECB模式中之AES加密指令(AESENCRYPT Arg1、Arg2)310。如所示,AESENCRYPT310具有兩運算元,其一為Arg2,用以供給予以加密之明文。被加密之密文係被寫入AESENCRYPT310之Arg1。加密鑰係由一或更多之隱含128位元暫存器XMM0及XMM1供給。例如,如果加密鑰長度為128位元,則其可以為XMM0之一所供給。於此時,另一暫存器XMM1可以使用於另一容量,並將參考圖4所述。
可以由圖3看出,AESENCRYPT310係藉由以一鑰加密來自Arg2的明文加密,而用於ECB模式中。一決定AESENCRYPT310操作於哪一模式之設計,使用運算元,以決定該模式。在一實施法中,AESENCRYPT310在加密結果與該鑰前,互斥或(XOR)運算其運算元Arg1及Arg2。此設計將進一步參考圖4加以描述,完成一或二輸入至AESENCRYPT310。如果只想要一輸入,例如圖3所示之用於ECB模式之Arg2的話,則另一運算元Arg1將被設為0,使得AESENCRYPT310之XOR只得到第一運算元Arg2,作為該鑰的加密。此XOR設計可以如何用於CBC及CTR模式將參考圖5至圖9加以進一步說明。
除了兩運算元Arg1及Arg2外,用以決定AESENCRYPT310將操作哪一模式的另一設計(未顯示)可以使用AESENCRYPT310指令中之立即位元組。不同於運算元被互斥或閘運算,此第二設計可以根據立即位元組的
內容,指明如何及/或是否使用AESENCRYPT310的一或兩運算元。此兩設計外之其他設計也是有可能並可以想出,以使得單一、兩運算元指令,如AESENCRYPT310(或AESDECRYPT)被用於多個不同模式(例如ECB、CBC、CTR等)之中。
圖4顯示在ECB模式中使用AESENCRYPT310的例示碼(例如,當其為處理器190所執行時構成一方法)410。首先,加密鑰被載入(經由MOV指令或類似指令)一隱含暫存器XMM0。再者,一值(例如16)被(經由MOV指令或類似指令)載入另一暫存器ECX,以將128位元區塊的明文數量設定至AES加密。此為128位元所乘之值可以以碼410指明予以加密之明文的總長度。在啟始後,包含AESENCRYPT310的迴路可以被執行ECX次。
在迴路內,第二隱含暫存器XMM1係被藉由載入零的值,而被清除,以用於ECB模式。如上所述,當被互斥或閘運算AESENCRYPT310與第二運算元時,此零的值產生第二運算元,這在ECB模式操作中之想要結果。回到下一指令,AESENCRYPT310採用Plainmemory[ECX]中之明文;以在XMM0中之鑰加密明文;及將結果寫入第二隱含暫存器XMM1中。再者,在XMM1中之密文被儲存至Ciphermemory[ECX]及在跳回至迴路開始處之前,ECX中之迴路值被減量。
在下一迴路中,XMM1再次被清除前一128位元之加密結果。以此方式,AESENCRYPT310令用以減量值之
Plainmemory[ECX]之單一輸入為在XMM0中之鑰所加密。碼410的迴路執行可以持續,直到為加入至ECX之啟始值所指明之明文的所有方塊在ECB模式中被AES加密為止。
圖5概念上顯示用於CBC模式中之AES加密指令(AESENCRYPT Arg1、Arg2)310。如所示,AESENCRYPT310具有兩運算元,其一為Arg2,用以供給予以加密之明文。在CBC模式中,另一運算元Arg1提供來自先前加密區塊中之所謂”舊”密文,其係在加密前,為AESENCRYPT310所與明文作互斥或閘運算。加密鑰然後由隱含128位元暫存器XMM0及XMM1之一或多者供給。用於現行區塊之加密密文被重寫於AESENCRYPT310之Arg1上。
圖6概念上顯示用於CBC模式之兩加鏈AES加密指令600。此圖示出CBC模式之暫時本質(第一次操作出現在圖左),其中前一加密區塊的結果被與新明文作互斥或閘運算。此較ECB模式產生更多隨機密文(例如在ECB模式中,在相同鑰時,相同明文區塊將加密至相同密文區塊)。在圖6所示之CBC模式中,用於明文之給定區塊的密文取決於前一回合之密文結果。
圖7顯示使用CBC模式中之AES加密指令的例示碼(例如,當為處理器190所執行時構成一方法)710。首先,加密鑰被載入(經由MOV指令或類似指令)一隱含暫存器XMM0。再者,一值(例如16,但此值可以更高或更低)被(
經由MOV指令或類似指令)載入另一暫存器ECX,以將128位元區塊的明文數量設定至AES加密。此為128位元所乘之值可以以碼710指明予以加密之明文的總長度。同時,第一次通過該迴路後,XMM11可以藉由載入零而被清除,因為由一前區塊沒有密文,其組合以明文的第一區塊。在啟始後,包含AESENCRYPT310的迴路可以被執行ECX次。
在迴路內,AESENCRYPT310採用在Plainmemory[ECX]中之明文,將之與在XMM1中之值作互斥或閘運算(例如第一次通過迴路為零);加密XOR之結果與在XMM0中之鑰;及將結果寫至第二隱含暫存器XMM1中,並放在已經寫入之值上。再者,在XMM1中之密文被儲存至Ciphermemory[ECX]及在ECX中之迴路值在跳回至迴路開始處之前被減量。
在下一迴路中,與ECB模式不同,用於XMM1之前一128位元的非零密文結果並未清除。相反地,其在以該鑰加密前,依據CBC模式,其再次被AESENCRYPT310進行與明文之下一區塊的XOR運算。以此方式,AESENCRYPT310具有在ECX中之用以減量值之Plainmemory[ECX]之雙倍輸入及來自前一迴路之在XMM1中之密文值。AESENCRYPT310指令XOR運算1兩輸入並加密結果與在XMM0中之鑰。碼410中的迴路執行可以持續,直到為加入至ECX之啟始值所指明之明文的所有方塊在CBC模式中被AES加密為止。
上述設計與系統可以有利地使用單一、兩運算元指令,執行CBC模式與ECB模式加密。此指令允許在最常用兩模式中,完成AES之更緊密迴路。此指令配合有限量之運算元,並將最常用之AES移入單一指令,該單一指令仍支援第二最常用者。
圖8概念上顯示用於CTR模式中之AES加密指令(AESENCRYPT Arg1、Arg2)810。如示,AESENCRYPT810具有兩運算元,其一Arg2供給予以加密之計數器值。在CTR模式中,另一運算元Arg1提供予以加密之明文,其在加密後為AESENCRYPT810所與明文作XOR運算。加密鑰由一或一或更多隱含128位元暫存器XMM0及XMM1供給。用9於現行區塊之加密密文係被重寫於AESENCRYPT810的Arg1上。
圖9顯示用於CTR模式中之AES加密指令的例示碼(例如當為處理器190所執行時為一方法)910。首先,加密鑰(經由MOV指令或類似指令)被載入一隱含暫存器XMM0。再者,一值(例如16,但此數值可以更高或更低)可以被(經由MOV指令或類似指令)載入另一暫存器ECX,以設定128位元區塊的明文的數量為AES加密。此為128位元所乘之值可以指明為碼910所加密之明文的總長度。再者,一計數值係(經由MOV指令或類似指令)所載入另一XMM暫存器(例如XMM4)。在啟始後,包含AESENCRYPT810之迴路可以執行ECX次。
在迴路內,AESENCRYPT810採用一計數值並將實際
加密計數器值,然後執行與明文資料的XOR運算,以產生密文。再者,在XMM3中之密文被儲存至Ciphermemory[ECX]及在ECX中之迴路值在跳回迴路開始處前被減量。隨後,計數器被適當調整(經由一ADD、MUL、或其他指令)。迴路然後相同於ECB模式方式進行。
一或多數實施法之前述說明提供了顯示與說明,但並不是想要限制本發明之範圍至所述之精細形式。各種修改與變化係可以在本案教導下完成並可以由本案之各種實施法完成。
例如,雖然AES加密及解密已經被描述為128位元鑰,但在FIPS公開197中之NIST標準允許192位元及256位元鑰。在此時,XMM1可以用於在192位元或256位元鑰中之另外64位元或128位元。在此時,部份其他128位元暫存器(例如XMM2、XMM3等等)可以被使用以替代碼410或碼710或碼910中之XMM1(或只要碼中內佇有AESENCRYPT或AESDECRYPT),因為鑰的一部份被內佇在XMM1中。
雖然AESENCRYPT已經被描述,但AESDECRYPT Arg1、Arg2可以類似地使用於支援在ECB模式、CTR模式及CBC模式中之AES解密。熟習於本技藝者將了解,在ECB模式中使用AESDECRYPT係相當地直接,而CBC模式可以附帶有其他計算,例如在加密時,為AESENCRYPT所執行之XOR運算的反轉或相反。
應了解的是,雖然AESENCRYPT及AESDECRYPT如何執行AES演算法的細節並未被顯示出,但這些係為熟習於加密技藝者的能力範圍內。該特定實施法易於充分利用執行有AESENCRYPT及AESDECRYPT之特定處理器190。在部份實施法中,這些指令係充分利用最快速執行之機器語言。此充分利用的細節並未特別適當於所主張的發明,為了清楚解釋起見,部份細節已經被省略。
在本案說明中所用之元件、動作或指令應被建構為本案重點。因此,如在此所述,”一”想要包含一或多數項。可以對本案之上述實施法完成各種不脫離本明精神與原理之修改與變化。所有此些修改與變化係想要包含在本案之範圍與以下申請專利範圍保護範圍內。
100‧‧‧電腦系統
101‧‧‧內連線
104‧‧‧主記憶體
106‧‧‧唯讀記憶體
107‧‧‧資料儲存裝置
109‧‧‧處理器
121‧‧‧顯示裝置
122‧‧‧輸入裝置
123‧‧‧游標控制
124‧‧‧硬拷貝裝置
125‧‧‧播放裝置
126‧‧‧視訊數位化裝置
130‧‧‧執行單元
142‧‧‧指令
145‧‧‧密碼電路
150‧‧‧暫存器檔
160‧‧‧快取
165‧‧‧解碼器
170‧‧‧內部內連線
190‧‧‧通訊裝置
195‧‧‧碼
201‧‧‧整數暫存器
213a-h‧‧‧暫存器
208‧‧‧狀態暫存器
209‧‧‧暫存器
210‧‧‧延伸暫存器
211‧‧‧指令指標暫存器
圖1為依據部份實施法之例示計算系統;圖2為依據部份實施法之一處理器的暫存檔;圖3為概念上顯示用於ECB模式之AES加密指令;圖4為ECB模式中之AES加密指令之例示碼;圖5為概念上顯示用於CBC模式中之AES加密指令;圖6為概念上顯示用於CBC模式之兩加鏈AES加密指令;圖7顯示使用於CBC模式中之AES加密指令之例示碼;圖8概念上顯示用於CTR模式中之AES加密指令;及
圖9顯示用於CTR模式中之AES加密指令之例示碼。
100‧‧‧電腦系統
101‧‧‧內連線
104‧‧‧主記憶體
106‧‧‧唯讀記憶體
107‧‧‧資料儲存裝置
109‧‧‧處理器
121‧‧‧顯示裝置
122‧‧‧輸入裝置
123‧‧‧游標控制
124‧‧‧硬拷貝裝置
125‧‧‧播放裝置
126‧‧‧視訊數位化裝置
130‧‧‧執行單元
142‧‧‧指令
145‧‧‧密碼電路
150‧‧‧暫存器檔
160‧‧‧快取
170‧‧‧內部內連線
190‧‧‧通訊裝置
195‧‧‧碼
Claims (18)
- 一種儲存有指令之機器可讀取非暫時儲存媒體,如果該指令為一機器所執行時,使得該機器執行一方法,該方法包含:組合該指令之第一運算元與該指令之第二運算元,以產生一結果,其中該指令係予以被用於多模式的先進加密標準(AES)運算中;依據AES演算法,使用一由隱含暫存器所供給的鑰加密該結果,以產生一加密結果;及將該加密結果放置於該指令之該第一運算元的位置內。
- 如申請專利範圍第1項所述之媒體,其中該組合包含:互斥或運算該指令之該第一運算元與該指令的該第二運算元,以產生該結果。
- 如申請專利範圍第1項所述之媒體,其中該加密包含:自一或更多預定暫存器,取得該鑰。
- 如申請專利範圍第3項所述之媒體,其中該鑰長度為128位元、192位元、或256位元。
- 如申請專利範圍第1項所述之媒體,其中該第二運算元係為長度128位元之予以加密之明文。
- 如申請專利範圍第5項所述之媒體,其中該第一運算元在該AES運算的第一模式中為零。
- 如申請專利範圍第6項所述之媒體,其中該第一運算元為來自以該AES運算的第二模式之先前加密運算之先前加密結果。
- 一種執行加密之處理器,包含:一第一邏輯,回應於包含第一運算元及第二運算元並可用於多數先進加密標準(AES)模式之單一指令,以邏輯地組合為該第二運算元所供給的明文值與為該第一運算元所供給的第二值,以產生組合結果,並使用AES演算法及由隱含暫存器所供給的鑰,加密該組合之結果,以產生一加密結果,其中該第一運算元係用以決定該多數AES模式之一模式。
- 如申請專利範圍第8項所述之處理器,其中該第一邏輯被安排以互斥或(XOR)運算該明文值與該第二值,以產生組合之結果。
- 如申請專利範圍第8項所述之處理器,更包含:第一暫存器,儲存該第二值;及第二暫存器,儲存該鑰。
- 如申請專利範圍第10項所述之處理器,其中該第一邏輯被安排以儲存該加密結果於該第一暫存器中。
- 如申請專利範圍第10項所述之處理器,其中該第二值取決於該多數AES模式的該模式而為一先前加密結果或零。
- 如申請專利範圍第8項所述之處理器,其中該明文值與該加密結果各個長度為128位元。
- 一種加密資料的系統,包含:一記憶體,儲存一先進加密標準(AES)加密指令,該指令具有能以至少兩模式,加密資料的兩運算元;及一處理器,執行該AES加密指令,其中在第一模式中並反應於該AES加密指令,該處理器:執行第一迴路以清除第一運算元,邏輯地組合從計數器值所指明之第一記憶體的位置取得的第二運算元所供給之明文值與為該第一運算元所供給之第二值,以產生組合結果,使用AES演算法與鑰以加密該組合結果,以產生加密結果,儲存該加密結果於該計數器值所指明的第二記憶體的位置,減量該計數器值,及再執行該第一迴路,直到該計數器值到達預定值為止;及其中在第二模式中並反應於該AES加密指令,該處理器:清除該第一運算元,及隨後執行第二迴路,以邏輯地組合該明文值與該第二值,以產生該組合結果,使用該AES演算法與該鑰加密該組合結果,以產生該加密結果,儲存該加密結果於該計數器值所指明的該第二記憶體的位置,減量該計數器值,及再執行該第二迴路直到該計數器值到達預定值為止。
- 如申請專利範圍第14項所述之系統,其中該AES 加密指令只有兩運算元。
- 如申請專利範圍第14項所述之系統,其中該至少兩模式包含電子加密簿模式、計數器模式或加密區塊鏈模式之兩者。
- 如申請專利範圍第14項所述之系統,其中該AES加密指令以該至少兩模式之哪一模式加密資料係根據該兩運算元之一的值。
- 如申請專利範圍第14項所述之系統,其中該AES加密指令以該至少兩模式之哪一模式加密資料係根據有關於該AES加密指令之一立即位元組。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US11/724,005 US8538012B2 (en) | 2007-03-14 | 2007-03-14 | Performing AES encryption or decryption in multiple modes with a single instruction |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW200903254A TW200903254A (en) | 2009-01-16 |
| TWI390401B true TWI390401B (zh) | 2013-03-21 |
Family
ID=39328229
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW097108905A TWI390401B (zh) | 2007-03-14 | 2008-03-13 | 利用單一指令以多模式執行先進加密標準加解密的方法、系統與處理器 |
Country Status (7)
| Country | Link |
|---|---|
| US (3) | US8538012B2 (zh) |
| JP (1) | JP4767985B2 (zh) |
| KR (3) | KR20080084752A (zh) |
| CN (2) | CN103957100B (zh) |
| DE (1) | DE102008014359B4 (zh) |
| GB (1) | GB2447563B (zh) |
| TW (1) | TWI390401B (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI828934B (zh) * | 2019-08-06 | 2024-01-11 | 南韓商Ictk控股有限公司 | 處理器、處理器的操作方法及包括其的電子裝置 |
Families Citing this family (19)
| 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) |
| US8447796B2 (en) * | 2008-11-25 | 2013-05-21 | Intel Corporation | Apparatus with a vector generation unit and encoder for receiving first and second inputs to generate at least significant zero (LSZ) |
| EP2196937A1 (en) * | 2008-12-15 | 2010-06-16 | Thomson Licensing | Methods and devices for instruction level software encryption |
| US8549264B2 (en) | 2009-12-22 | 2013-10-01 | Intel Corporation | Add instructions to add three source operands |
| US9990201B2 (en) * | 2009-12-22 | 2018-06-05 | Intel Corporation | Multiplication instruction for which execution completes without writing a carry flag |
| US9003170B2 (en) | 2009-12-22 | 2015-04-07 | Intel Corporation | Bit range isolation instructions, methods, and apparatus |
| US8214598B2 (en) * | 2009-12-22 | 2012-07-03 | Intel Corporation | System, method, and apparatus for a cache flush of a range of pages and TLB invalidation of a range of entries |
| EP2717511A1 (en) * | 2012-10-05 | 2014-04-09 | Nagravision S.A. | Method and device for digital data blocks encryption and decryption |
| DE102013205166A1 (de) * | 2013-03-22 | 2014-09-25 | Robert Bosch Gmbh | Verfahren zum Erzeugen einer Einwegfunktion |
| US9513913B2 (en) | 2014-07-22 | 2016-12-06 | Intel Corporation | SM4 acceleration processors, methods, systems, and instructions |
| US9467279B2 (en) | 2014-09-26 | 2016-10-11 | Intel Corporation | Instructions and logic to provide SIMD SM4 cryptographic block cipher functionality |
| US10110566B2 (en) * | 2015-07-21 | 2018-10-23 | Baffle, Inc. | Systems and processes for executing private programs on untrusted computers |
| WO2018106570A1 (en) | 2016-12-09 | 2018-06-14 | Cryptography Research, Inc. | Programmable block cipher with masked inputs |
| CN108777611B (zh) * | 2018-05-11 | 2021-06-18 | 吉林大学 | 基于双密钥流密码的双向链表顺序加密解密方法 |
| GB2582900A (en) | 2019-03-18 | 2020-10-14 | Pqshield Ltd | Cryptography using a cryptographic state |
| WO2021025490A1 (ko) * | 2019-08-06 | 2021-02-11 | 주식회사 아이씨티케이 홀딩스 | 프로세서, 프로세서의 동작 방법 및 이를 포함한 전자 장치 |
| GB201911802D0 (en) | 2019-08-16 | 2019-10-02 | Pqshield Ltd | Lattice Coprocessor |
| CN115378593B (zh) * | 2021-05-18 | 2025-12-30 | 意法半导体股份有限公司 | 处理系统以及对应的操作方法 |
| GB2608999A (en) | 2021-07-15 | 2023-01-25 | Pqshield Ltd | Cryptographic system for post-quantum cryptographic operations |
Family Cites Families (49)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3547474B2 (ja) | 1994-03-22 | 2004-07-28 | 富士通株式会社 | 暗号演算回路 |
| AU728942B2 (en) * | 1995-06-30 | 2001-01-18 | Canon Kabushiki Kaisha | A communication apparatus and a communication system |
| US6118870A (en) * | 1996-10-09 | 2000-09-12 | Lsi Logic Corp. | Microprocessor having instruction set extensions for decryption and multimedia applications |
| US6704871B1 (en) * | 1997-09-16 | 2004-03-09 | Safenet, Inc. | Cryptographic co-processor |
| US6324288B1 (en) * | 1999-05-17 | 2001-11-27 | Intel Corporation | Cipher core in a content protection system |
| US6973187B2 (en) * | 2000-01-31 | 2005-12-06 | Vdg, Inc. | Block encryption method and schemes for data confidentiality and integrity protection |
| US7106860B1 (en) * | 2001-02-06 | 2006-09-12 | Conexant, Inc. | System and method for executing Advanced Encryption Standard (AES) algorithm |
| US6937727B2 (en) * | 2001-06-08 | 2005-08-30 | Corrent Corporation | Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels |
| US7280657B2 (en) * | 2001-06-13 | 2007-10-09 | Itt Manufacturing Enterprises, Inc. | Data encryption and decryption system and method using merged ciphers |
| JP3851115B2 (ja) * | 2001-06-28 | 2006-11-29 | 富士通株式会社 | 暗号回路 |
| US7289524B2 (en) * | 2001-10-04 | 2007-10-30 | Bbn Technologies Corp. | Execution unit for a network processor |
| GB2374260B (en) * | 2001-10-12 | 2003-08-13 | F Secure Oyj | Data encryption |
| US7508937B2 (en) * | 2001-12-18 | 2009-03-24 | Analog Devices, Inc. | Programmable data encryption engine for advanced encryption standard algorithm |
| DE10201449C1 (de) * | 2002-01-16 | 2003-08-14 | Infineon Technologies Ag | Rechenwerk, Verfahren zum Ausführen einer Operation mit einem verschlüsselten Operanden, Carry-Select-Addierer und Kryptographieprozessor |
| US7221763B2 (en) * | 2002-04-24 | 2007-05-22 | Silicon Storage Technology, Inc. | High throughput AES architecture |
| CA2486713A1 (en) * | 2002-05-23 | 2003-12-04 | Atmel Corporation | Advanced encryption standard (aes) hardware cryptographic engine |
| US20030223581A1 (en) * | 2002-05-30 | 2003-12-04 | Bedros Hanounik | Cipher block chaining unit for use with multiple encryption cores |
| US6950517B2 (en) * | 2002-07-24 | 2005-09-27 | Qualcomm, Inc. | Efficient encryption and authentication for data processing systems |
| WO2004015916A1 (ja) | 2002-08-08 | 2004-02-19 | Matsushita Electric Industrial Co., Ltd. | 暗号化復号化装置及び方法、暗号化装置及び方法、復号化装置及び方法、並びに送受信装置 |
| US20040047466A1 (en) * | 2002-09-06 | 2004-03-11 | Joel Feldman | Advanced encryption standard hardware accelerator and method |
| US20040202317A1 (en) * | 2002-12-20 | 2004-10-14 | Victor Demjanenko | Advanced encryption standard (AES) implementation as an instruction set extension |
| US7336783B2 (en) * | 2003-01-24 | 2008-02-26 | Samsung Electronics, C., Ltd. | Cryptographic systems and methods supporting multiple modes |
| KR100583635B1 (ko) | 2003-01-24 | 2006-05-26 | 삼성전자주식회사 | 다수의 동작 모드들을 지원하는 암호화 장치 |
| JP3818263B2 (ja) | 2003-01-28 | 2006-09-06 | 日本電気株式会社 | Aes暗号処理装置、aes復号処理装置、aes暗号・復号処理装置、aes暗号処理方法、aes復号処理方法、および、aes暗号・復号処理方法 |
| US7337314B2 (en) * | 2003-04-12 | 2008-02-26 | Cavium Networks, Inc. | Apparatus and method for allocating resources within a security processor |
| US7542566B2 (en) | 2003-04-18 | 2009-06-02 | Ip-First, Llc | Apparatus and method for performing transparent cipher block chaining mode cryptographic functions |
| US7532722B2 (en) | 2003-04-18 | 2009-05-12 | Ip-First, Llc | Apparatus and method for performing transparent block cipher cryptographic functions |
| US7925891B2 (en) | 2003-04-18 | 2011-04-12 | Via Technologies, Inc. | Apparatus and method for employing cryptographic functions to generate a message digest |
| US8060755B2 (en) | 2003-04-18 | 2011-11-15 | Via Technologies, Inc | Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine |
| US7392399B2 (en) * | 2003-05-05 | 2008-06-24 | Sun Microsystems, Inc. | Methods and systems for efficiently integrating a cryptographic co-processor |
| WO2004112309A1 (en) * | 2003-06-16 | 2004-12-23 | Electronics And Telecommunications Research Institue | Rijndael block cipher apparatus and encryption/decryption method thereof |
| EP1642206B1 (en) * | 2003-07-07 | 2017-12-20 | Irdeto B.V. | Reprogrammable security for controlling piracy and enabling interactive content |
| US7421076B2 (en) * | 2003-09-17 | 2008-09-02 | Analog Devices, Inc. | Advanced encryption standard (AES) engine with real time S-box generation |
| US7921300B2 (en) * | 2003-10-10 | 2011-04-05 | Via Technologies, Inc. | Apparatus and method for secure hash algorithm |
| TWI244299B (en) | 2004-01-07 | 2005-11-21 | Admtek Inc | Method for implementing advanced encryption standards by a very long instruction word architecture processor |
| EP2099154A3 (en) * | 2004-02-05 | 2010-01-27 | Research In Motion Limited | On-chip storage, creation, and manipulation of an encryption key |
| CN1677921A (zh) | 2004-03-31 | 2005-10-05 | 华为技术有限公司 | 通过可编程器件实现数据加密的方法 |
| TWI268686B (en) * | 2004-04-16 | 2006-12-11 | Via Tech Inc | Apparatus and method for performing transparent cipher block chaining mode cryptographic functions |
| JP4447977B2 (ja) * | 2004-06-30 | 2010-04-07 | 富士通マイクロエレクトロニクス株式会社 | セキュアプロセッサ、およびセキュアプロセッサ用プログラム。 |
| US7496196B2 (en) * | 2004-06-30 | 2009-02-24 | Intel Corporation | Method apparatus and system of performing one or more encryption and/or decryption operations |
| US7783037B1 (en) * | 2004-09-20 | 2010-08-24 | Globalfoundries Inc. | Multi-gigabit per second computing of the rijndael inverse cipher |
| JP4734906B2 (ja) * | 2004-12-07 | 2011-07-27 | ソニー株式会社 | 情報処理装置、情報記録媒体、および情報処理方法、並びにコンピュータ・プログラム |
| WO2006112114A1 (ja) * | 2005-03-31 | 2006-10-26 | Matsushita Electric Industrial Co., Ltd. | データ暗号化装置及びデータ暗号化方法 |
| US7606363B1 (en) * | 2005-07-26 | 2009-10-20 | Rockwell Collins, Inc. | System and method for context switching of a cryptographic engine |
| JP4890976B2 (ja) * | 2005-08-31 | 2012-03-07 | キヤノン株式会社 | 暗号処理装置 |
| DE602005022001D1 (de) * | 2005-11-08 | 2010-08-05 | Irdeto Access Bv | Verfahren zur Verschlüsselung und Entschlüsselung von Dateneinheiten |
| US8189774B2 (en) * | 2006-01-06 | 2012-05-29 | Fujitsu Semiconductor Limited | Processors for network communications |
| US7831039B2 (en) * | 2006-06-07 | 2010-11-09 | Stmicroelectronics S.R.L. | AES encryption circuitry with CCM |
| US7769166B2 (en) * | 2006-08-24 | 2010-08-03 | Lsi Corporation | Dual mode AES implementation to support single and multiple AES operations |
-
2007
- 2007-03-14 US US11/724,005 patent/US8538012B2/en not_active Expired - Fee Related
-
2008
- 2008-03-13 JP JP2008064272A patent/JP4767985B2/ja not_active Expired - Fee Related
- 2008-03-13 TW TW097108905A patent/TWI390401B/zh not_active IP Right Cessation
- 2008-03-14 GB GB0804870A patent/GB2447563B/en not_active Expired - Fee Related
- 2008-03-14 KR KR1020080024067A patent/KR20080084752A/ko not_active Ceased
- 2008-03-14 CN CN201410197191.5A patent/CN103957100B/zh not_active Expired - Fee Related
- 2008-03-14 CN CN200810096342.2A patent/CN101272238B/zh not_active Expired - Fee Related
- 2008-03-14 DE DE102008014359A patent/DE102008014359B4/de not_active Expired - Fee Related
-
2010
- 2010-06-23 KR KR1020100059386A patent/KR101302799B1/ko not_active Expired - Fee Related
-
2013
- 2013-03-08 US US13/790,748 patent/US9325498B2/en not_active Expired - Fee Related
- 2013-05-20 KR KR1020130056494A patent/KR101394710B1/ko not_active Expired - Fee Related
-
2016
- 2016-03-24 US US15/079,305 patent/US20160261406A1/en not_active Abandoned
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI828934B (zh) * | 2019-08-06 | 2024-01-11 | 南韓商Ictk控股有限公司 | 處理器、處理器的操作方法及包括其的電子裝置 |
Also Published As
| Publication number | Publication date |
|---|---|
| GB2447563B (en) | 2009-09-30 |
| KR20080084752A (ko) | 2008-09-19 |
| KR20130076834A (ko) | 2013-07-08 |
| DE102008014359B4 (de) | 2011-08-25 |
| CN103957100A (zh) | 2014-07-30 |
| US20160261406A1 (en) | 2016-09-08 |
| JP4767985B2 (ja) | 2011-09-07 |
| KR101302799B1 (ko) | 2013-09-03 |
| GB0804870D0 (en) | 2008-04-16 |
| CN101272238A (zh) | 2008-09-24 |
| GB2447563A (en) | 2008-09-17 |
| KR101394710B1 (ko) | 2014-05-15 |
| US9325498B2 (en) | 2016-04-26 |
| CN101272238B (zh) | 2014-06-04 |
| DE102008014359A1 (de) | 2008-10-16 |
| CN103957100B (zh) | 2018-10-16 |
| JP2008283672A (ja) | 2008-11-20 |
| US20080229116A1 (en) | 2008-09-18 |
| US8538012B2 (en) | 2013-09-17 |
| US20130202106A1 (en) | 2013-08-08 |
| TW200903254A (en) | 2009-01-16 |
| KR20100082748A (ko) | 2010-07-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI390401B (zh) | 利用單一指令以多模式執行先進加密標準加解密的方法、系統與處理器 | |
| US11563556B2 (en) | Architecture and instruction set for implementing advanced encryption standard (AES) | |
| JP4684550B2 (ja) | 多数の動作モードを支援する暗号化装置 | |
| CN104126174B (zh) | 执行groestl散列的指令 | |
| JP4551802B2 (ja) | プロセッサ、メモリ、コンピュータシステムおよびデータ転送方法 | |
| US9503256B2 (en) | SMS4 acceleration hardware | |
| CN101120349A (zh) | 带有流中数据加密/解密的存储器系统 | |
| TW201842442A (zh) | 用以在256位元資料路徑中執行jh密碼雜湊技術之指令(一) | |
| JP2000295211A (ja) | データ記憶装置、データ処理システム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM4A | Annulment or lapse of patent due to non-payment of fees |