TW200903254A - Performing AES encryption or decryption in multiple modes with a single instruction - Google Patents
Performing AES encryption or decryption in multiple modes with a single instruction Download PDFInfo
- Publication number
- TW200903254A TW200903254A TW097108905A TW97108905A TW200903254A TW 200903254 A TW200903254 A TW 200903254A TW 097108905 A TW097108905 A TW 097108905A TW 97108905 A TW97108905 A TW 97108905A TW 200903254 A TW200903254 A TW 200903254A
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- encryption
- result
- processor
- aes
- 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
200903254 九、發明說明 【發明所屬之技術領域】 本發明有關於利用單一指令以多模式執行先進加密標 準加解密的方法、系統與處理器。 【先前技術】 本發明之實施法大致關係於處理器’更明確地說,係 有關於使得處理器執行先進加密標準(AES)加解密的指令 〇 AE S爲由國家標準技術協會所訂定的先進加密標準, 並被界定於FIPS公告197中。AES可以具有各種鑰大小 。其中有3種可接受鑰尺寸:128位元、192位元及256位 元。AES加密採用128位元明文輸入及一鑰,然後產生 128位元之密文(例如被以AES加密之明文)輸出。同樣地 ,AES解密行相反操作,其中以128位元密文及一鑰以產 生1 2 8位元之明文。 AES可以用於很多模式之運算中。—種最常用模式爲 所謂加密區塊鏈(C B C )模式。另一次常用模式爲所謂電子 加密簿(ECB)模式。也有其他模式,例如所謂之計數器模 式(S T R),其在槪念上係類似於£ c B。 在計算系統中’我們想要使用於處理器之一或多數指 令係專用於A E S加密及/或解密。 【發明內容與實施方式】 -5- 200903254 以下詳細說明係參考附圖加以進行。相同元件符號在 不同圖式中之相同或類似元件。在以下說明中,爲了解釋 及非限疋目的’特疋細自卩例如特定結構、架構、介面、技 術等加以說明,以提供對本發明之各種態樣的完全了解。 然而’可以爲熟習於本技藝者所了解’利用本發明之各種 悲f永可以被實施在其他沒有這些特定細節的例子中。在部 份例子中’已知裝置、電路、及方法的說明係被省略,以 避免不必要地限制本發明之說明於這些不必要細節中。 槪要 本案描述包含有用以執行A E S加密及/或解密之處理器 指令的方法、設備與系統。 兩項此指令爲: A E S E N C R Y P T (a r g 1 ) X m m d e s t i n a t i ο π » (arg2)xmnisourcc /memory AESDECRYPT(argl )xmmdestination * (arg2)xmtnsource / memory 在加密時,x m m s o u r c e / m e m o r y 供給予以使用之明文, 及xmmdestination將會是密文。在解密時,角色相反,源 爲密文’及目的地爲明文。在部份實施法中,兩運算元均 可以用於加密或解密’並將如以下所述。在兩情形下,經 由使用一或多數128位元隱含暫存器(例如,以下所詳述 之 XMM0&XMM1)’加密鏡被供給 AESENCRYPT及/或 AESDECRYPT 指令。 200903254 雖然以下之很多說明係針對加密指令,即 AESENCRYPT,但熟習於本技藝者可以了解,解密,即 AESDECRYPT也可以以類似於解密方式加以替代及/或使 用。主要描述AESENCRYPT係主澄清及容易說明起見, 並不是表示指令較其他指令重要。 電腦系統 圖1顯示依據本發明實施例之電腦系統1 0 0。電腦系 統1 0 0包含一內連線1 0 1,用以傳送資訊。內連線1 〇 1可 以包含多投匯流排、一或多數點對點內連線、或兩者之組 合,及其他通訊硬體及/或軟體。 圖1顯示一耦接至內連線1 0 1之處理器1 0 9,用以處 理資訊。處理器1 〇 9表示任意類型架構之中央處理單元, 其包含CISC或RISC類型之架構者。 電腦系統100更包含一隨機存取記憶體(RAM)或其他 動態儲存裝置(稱爲主記憶體1 04),耦接至內連線1 0 1,用 以儲存予以爲處理器1 09所執行之資訊及指令。主記憶體 1 04也可以用以儲存指令爲處理器1 09所執行之暫時變數 或其他中間資訊。 處理器1 09也包含耦接至內連線1 〇 1之唯讀記憶體 (ROM) 1 06、及/或其他靜態儲存裝置,用以儲存靜態資訊 及處理器1 09之指令。資料儲存裝置1 〇7也耦接至內連線 1 0 1,用以儲存資訊及指令。 圖1同時也顯示處理器1〇9,其包含一執行單元130、 200903254 一暫存器檔150、一快取160、一解碼器165、及一內部內 連線1 7 0。當然,處理器1 0 9包含其他電路,其對於了解 本發明並不必要。 解碼器165也用以解碼爲處理器109所接收之指令及 執行單元1 3 0係用以執行爲處理器1 09所接收之指令。除 了在一般目的處理器中所執行之辨識指令外,解碼器1 65 及執行單元 130認出用以執行 AES 加密或解密 (AESENCRYPT或AESDECRYPT)運算的指令。解碼器165 及執行單元130認出用以對兩緊縮(packed)及未緊縮 (unpacked)資料執行 AESENCRYPT 或 AESDECRYPT 運算 的指令。 執行單元1 3 0也爲內部內連線1 70所耦接至暫存器檔 1 50。再者,內部內連線1 70不必然是一多投匯流排,在 另一實施例中,也可以是一點對點內連線或其他類型之通 訊通道。 暫存器檔150代表用以儲存資訊,包含資料的處理器 1 〇 9之儲存區。可以了解的是,本發明之—態樣爲用以對 緊縮或未緊縮資料,執行AESENCRYPT或AESDECRYPT 運算的指令實施例。依據本發明此態樣,用以儲存資料的 儲存區並不重要。然而,暫存器檔150的實施例係隨後參 考圖2加以描述。 執行單元1 3 0係耦接至快取1 6 0及解碼器丨6 5。快取 1 6 0係用以由例如主記憶體丨〇 4快取資料及/或控制信號。 解碼器1 6 5係用以將爲處理器1 〇 9所接收之指令解碼爲控 200903254 制信號及/或微碼輸入點。這些控制信號及/或微碼輸入點 可以由解碼器165傳送至執行單元130。 回應於這些控制信號及/或微碼輸入點,執行單元1 3 0 執行適當運算。例如,假如 AESENCRYPT 或 AESDECREYPT指令被接收,貝IJ解碼器165使得執行單元 1 3 0執行所需之加密或解密。至少部份實施例中,執行單 元1 3 0可以使用一或更多鑰(例如見密碼電路1 4 5 ),加密 或解密1 2 8位元之明文或密文。 解碼器1 6 5可以使用任意數量之不同機制(例如查看表 、硬體實施法、PLA等等)加以實施。因此,雖然於此以 一連串若/則(if/then)宣告表示解碼器165及執行單元130 之各種指令之執行,但可以了解的是,指令的執行並不必 要一連串之若/則宣告之處理。相反地,任何邏輯上執行 此若/則處理的機制均被認爲在本發明之範圍內。 圖1額外顯示一資料儲存裝置1 〇7(例如,一磁碟、光 碟、及/或其他機器可讀取媒體)可以被耦接至電腦系統 1〇〇者。另外,資料儲存裝置107係被顯示以包含用以爲 處理器 109 所執行之碼 195。碼 195 可以包含 AESENCRYPT或AESDECRYPT指令142的一或多數實施 例,這些係可以被寫入,以使得處理器1 0 9以A E S C R Y P T 或AESDECRYPT指令1 42執行任意數量之安全相關目的 之位元A E S加密或解密。 電腦系統1 〇 〇也可以經由內連線1 0 1耦接至一顯示裝 置121’用以顯示資訊至一電腦使用者。顯示裝置121可 -9- 200903254 以包含特定於圖形描繪裝置之一框緩衝器、液晶顯示器 (LCD)、及/或平面顯示器。 包含文數字及其他鍵的輸入裝置122可以耦接至 線1 〇 1,用以傳送資訊及命令選擇至處理器1 09。另—類 型之使用者輸入裝置係爲游標控制1 2 3,例如,—渭·胃、 軌跡球、一光筆、一觸控螢幕、或一游標方向鍵,用以傳 送方向資訊及命令選擇至處理器109,及用以在顯示裝g 121上控制游標移動。此輸入裝置典型在兩軸上具有兩自 由度,一第一軸(例如X )及一第二軸(例如y ),這允許裝置 指明在一平面中之位置。然而’本發明不應被限制至這些 只具有兩自由度的輸入裝置。 其他可以耦接至101之裝置爲硬拷貝裝置124,其可 以用以列印指令、資料或其他資訊於例如紙張、軟片或其 他類型媒體之媒體上。另外’電腦系統丨0 0可以耦接至用 以聲音記錄、及/或播放之裝置,例如,音訊數位器可以 親接至一麥克風’用以記錄資訊。再者,裝置125可以包 含一喇叭’耦接至一數位至類比(D/A)轉換器,用以播放 數位聲音。 電腦系統1 00可以爲電腦網路(例如LAN)中之終端。 電腦系統1 00然後可以爲電腦網路之電腦子系統。電腦系 統100可選用地包含—視訊數位裝置126及/或一通訊裝 置1 90(例如一串列通訊晶片、—無線界面、一乙太晶片或 一數據機’其提供與外部裝置或網路的通訊)。視訊數位 裝置1 26然後可以用以捕捉視訊影像,該等影像可以被傳 -10- 200903254 送至電腦網路上之其他裝置。 至少一實施例中,處理器109支援一指令集,其係相 容於現行由美國加州聖塔卡拉之英特爾公司所製造之處理 器(例如英特爾Pentium處理器、英特爾ProPentium處理 器、英特爾Pentium II處理器、英特爾Pentium III處理 器、英特爾Pentium4處理器、英特爾Itanium處理器、英 特爾Itanium2處理器、或其他英特爾Core Duo處理器)。 結果’處理器109可以除了本發明之運算外,也可以支援 行處理器運算。處理器109可以適用以製造於一或多數製 程術中,並以足夠細節在機器可讀取媒體上表示,並適用 以促成此製造。雖然本發明係加入x86爲主指令集加以描 述,但其他實施例中也可以將本發明加入其他指令集中。 例如’本發明可以使用x86爲主指令集以外之指令集,來 加入64位元處理器中。 圖2爲依據本發明另一實施例之處理器的暫存器檔。 暫存器檔1 5 0可以用以儲存資訊,資訊包含控制/狀態資 訊、整數資料、浮點資料及緊縮資料。在圖2所示之實施 例中,暫存器檔150包含整數暫存器201、暫存器209、 狀態暫存器2 〇 8、延伸暫存器2 1 〇、及指令指標暫存器2 1 1 。狀態暫存器2 0 8、指令指標暫存器2 1 1、整數暫存器2 0 1 、暫存器2 0 9均耦接至內部內連線1 7 0。另外,延伸暫存 器2 1 0也耦接至內部內連線1 7 〇。內部內連線丨7 0可以但 並不必然爲一多投匯流排。內部內連線1 7 0也可以是任意 其他類型之通訊通道,包含點對點內連線。 -11 - 200903254 至少一實施例中’延伸暫存器210係用以緊縮整數資 料及緊縮浮點資料。在其他實施例中,延伸暫存器210可 以用以純量資料、緊縮布林資料、緊縮整數資料及/或緊 縮浮點資料。當然,也可以實施其他實施例,以保有更多 或更少之整數集’在每一集中之更多或更少暫存器或在每 一暫存器中之更多或更少資料儲存位元均不會脫離本發明 之範圍。 至少部份實施例中,整數暫存器20 1係被實施爲3 2位 元’暫存器209係被實施爲80位元(所有8位元用以儲存 浮點資料,而只有64位元被用於緊縮資料)及延伸暫存器 2 1 〇被實施以儲存1 2 8位元。另外,延伸暫存器2 1 0可以 包含 8 暫存器,XR〇213a 至 XR7213h。XR0213A、 XR1213B及XR2213C係爲暫存器210中之個別暫存器例 子。例如,1 2 8位元延伸暫存器2 1 0可以被使用以提供 AESENCRYPT指令之一或兩運算元,並可以用以提供 AESENCRYPT指令所用之一或兩隱含暫存器(例如 ΧΜΜ0&ΧΜΜ 1)。 另一實施例中,整數暫存器201各包含64位元’延伸 暫存器210各包含64位元及延伸暫存器210包含16暫存 器。對於一實施例中,延伸暫存器210的兩暫存器可以操 作爲一對。對於另一實施例中,延伸暫存器2 1 0包含3 2 暫存器。 AES加密及/或解密運算 -12- 200903254 圖3槪念上顯示用於ECB模式中之AES加密指令 (AESENCRYPT Arg 1 、 Arg2) 3 10 〇 如 所示, AESENCRYPT3 10具有兩運算元,其一爲Arg2,用以供給 予以加密之明文。被加密之密文係被寫入 AESENCRYPT310之 Arg 1。加密鑰係由—或更多之隱含 1 2 8位元暫存器X Μ Μ 0及X Μ Μ 1供給。例如,如果加密鑰 長度爲128位元,則其可以爲ΧΜΜ0之一所供給。於此時 ,另一暫存器ΧΜΜ1可以使用於另一容量,並將參考圖4 所述。 可以由圖3看出,AESENCRYPT3 10係藉由以一鏡力口 密來自 A r g 2的明文加密,而用於E C Β模式中。一決定 AESENCRYPT3 1 0操作於哪一模式之設計,使用運算元, 以決定該模式。在一實施法中’ AESENCRYPT310在加 密結果與該鑰前,互斥或(XOR)運算其運算元Arg 1及 Arg2。此設計將進一步參考圖4加以描述,完成一或二輸 入至AESENCRYPT310。如果只想要—輸入’例如圖3所 示之用於ECB模式之Arg2的話’則另一運算元Arg1將 被設爲〇’使得AESENCRYPT310之X〇R只得到第一運算 元Arg2,作爲該鑰的加密。此X0R設計可以如何用於 CBC及CTR模式將參考圖5至圖9加以進一步說明。 除了兩運算元Argl及Arg2外’用以決定 AESENCRYPT310將操作哪—模式的另一設§十(未顯兩)可 以使用AE SEN CRY PT3 1 0指令中之中間位元組。不同於運 算元被互斥或閘運算,此第二設計可以根據中間位元組的 -13- 200903254 內容,指明如何及/或是否使用 AESENCRYPT310的一或 兩運算元。此兩設計外之其他設計也是有可能並可以想出 ,以使得單一、兩運算元指令’如 AESENCRYPT310(或 AESDECRYPT)被用於多個不同模式(例如 ECB、CBC、 CTR等)之中。 圖4顯示在ECB模式中使用AESENCRYPT3 10的例示 碼(例如,當其爲處理器1 9 0所執行時構成一方法)4 1 〇。首 先,加密鑰被載入(經由MOV指令或類似指令)一隱含暫 存器ΧΜΜ0。再者,一値(例如16)被(經由MOV指令或類 似指令)載入另一暫存器ECX ’以將128位元區塊的明文 數量設定至AE S加密。此爲1 2 8位元所乘之値可以以碼 41 0指明予以加密之明文的總長度。在啓始後,包含 AESENCRYPT310的迴路可以被執行ECX次。 在迴路內,第二隱含暫存器XMM1係被藉由載入零的 値,而被清除,以用於ECB模式。如上所述,當被互斥 或閘運算AESENCRYPT3 10與第二運算元時,此零的値產 生第二運算元,這在ECB模式操作中之想要結果。回到 下一指令, AESENCRYPT3 1 0 採用 P1 ai nm e m o r y [ E C X ]中 之明文;以在XMMO中之鑰加密明文;及將結果寫入第二隱 含暫存器XMM1中。再者’在XMM1中之密文被儲存至 Ciphermemory[ECX]及在跳回至迴路開始處之前,ECX中 之迴路値被減量。 在下一迴路中,XMM1再次被清除前一 128位元之加 密結果。以此方式,AESENCRYPT3 10令用以減量値之 -14- 200903254
Plainmemory[ECX]之單一輸入爲在ΧΜΜ0中之鏡所加密。 碼4 1 0的迴路執行可以持續,直到爲加入至E C X之啓始 値所指明之明文的所有方塊在ECB模式中被AES加密爲 止。 圖5槪念上顯示用於CBC模式中之 AES加密指令 (AESENCRYPT Argl、Arg2)310。如所示, AESENCRYPT310具有兩運算元,其一爲Arg2,用以供給 予以加密之明文。在CBC模式中,另一運算元Argl提供 來自先前加密區塊中之所謂”舊”密文,其係在加密前,爲 AESENCRYPT310所與明文作互斥或閘運算。加密鑰然後 由隱含128位元暫存器XMMO及XMM1之一或多者供給 。用於現行區塊之加密密文被重寫於AESENCRYPT310之 Argil。 圖6槪念上顯示用於CBC模式之兩加鏈AES加密指令 600。此圖示出CBC模式之暫時本質(第一次操作出現在圖 左),其中前一加密區塊的結果被與新明文作互斥或閘運 算。此較ECB模式產生更多隨機密文(例如在ECB模式中 ,在相同鑰時,相同明文區塊將加密至相同密文區塊)。 在圖6所示之CBC模式中,用於明文之給定區塊的密文 取決於前一回合之密文結果。 圖7顯示使用CBC模式中之AES加密指令的例示碼( 例如,當爲處理器190所執行時構成一方法)710。首先, 加密鑰被載入(經由MOV指令或類似指令)一隱含暫存器 X Μ Μ 0。再者,一値(例如1 6,但此値可以更高或更低)被( -15- 200903254 經由MOV指令或類似指令)載入另一暫存器ECX,以將 1 2 8位元區塊的明文數量設定至a e S加密。此爲1 2 8位元 所乘之値可以以碼7 1 0指明予以加密之明文的總長度。同 時,第一次通過該迴路後,XMM11可以藉由載入零而被 清除,因爲由一前區塊沒有密文,其組合以明文的第一區 塊。在啓始後,包含AESENCRYPT3 10的迴路可以被執行 ECX 次。 在迴路內,AESENCRYPT310 採用在 Plainmemory [ECX]中之明文,將之與在XMM1中之値作互斥或閘運算( 例如第一次通過迴路爲零);加密XOR之結果與在ΧΜΜ0 中之鑰;及將結果寫至第二隱含暫存器XMM1中,並放在 已經寫入之値上。再者,在 XMM1中之密文被儲存至 Ciphermem〇ry[ECX]及在ECX中之迴路値在跳回至迴路開 始處之前被減量。 在下一迴路中,與ECB模式不同,用於XMM1之前一 1 2 8位元的非零密文結果並未清除。相反地’其在以該鑰 加密前,依據CBC模式,其再次被AESENCRYPT310進 行與明文之下一區塊的 XOR 運算。以此方式, AESENCRYPT3 1 0 具有在 ECX 中之用以減量値之 Plainmemory[ECX]之雙倍輸入及來自前一迴路之在XMM1 中之密文値。AESENCRYPT310指令XOR運算1兩輸入並 加密結果與在X Μ Μ 0中之鑰。碼4 1 0中的迴路執行可以持 續,直到爲加入至E C X之啓始値所指明之明文的所有方 塊在CBC模式中被AES加密爲止。 -16- 200903254 上述設計與系統可以有利地使用單一、兩運算元指令 ,執行CBC模式與ECB模式加密。此指令允許在最常用 兩模式中,完成AES之更緊密迴路。此指令配合有限量之 運算元,並將最常用之AES移入單一指令,該單一指令仍 支援第二最常用者。 圖8槪念上顯示用於CTR模式中之AES加密指令 (AESENCRYPT Argl、Arg2)810。如示,AESENCRYPT810 具有兩運算元,其一Arg2供給予以加密之計數器値。在 CTR模式中,另一運算元Argl提供予以加密之明文,其 在加密後爲AESENCRYPT810所與明文作XOR運算。加 密鑰由一或一或更多隱含128位元暫存器ΧΜΜ0及XMM1 供給。用 9 於現行區塊之加密密文係被重寫於 AESENCRYPT810 的 Argl 上。 圖9顯示用於CTR模式中之AES加密指令的例示碼( 例如當爲處理器1 90所執行時爲一方法)9 1 0。首先,加密 鑰(經由MOV指令或類似指令)被載入一隱含暫存器ΧΜΜ0 。再者,一値(例如1 6,但此數値可以更高或更低)可以被 (經由MOV指令或類似指令)載入另一暫存器ECX,以設 定128位元區塊的明文的數量爲AES加密。此爲128位元 所乘之値可以指明爲碼9 1 0所加密之明文的總長度。再者 ,一計數値係(經由MOV指令或類似指令)所載入另一 XMM 暫存器(例如 XMM4)。在啓始後,包含 AESENCRYPT810之迴路可以執行ECX次。 在迴路內,AESENCRYPT810採用一計數値並將實際 -17- 200903254 加密計數器値’然後執行與明文資料的χ 0 R運算,以產 生密文。再者’在 XMM3中之密文被儲存至
CiphermemorytECX]及在ECX中之迴路値在跳回迴路開始 處前被減量。隨後,計數器被適當調整(經由—ADD、 MUL、或其他指令)。迴路然後相同於ECB模式方式進行 〇 一或多數實施法之前述說明提供了顯示與說明,但並 不是想要限制本發明之範圍至所述之精細形式。各種修改 與變化係可以在本案教導下完成並可以由本案之各種實施 法完成。 例如,雖然AE S加密及解密已經被描述爲丨2 8位元鑰 ,但在FIPS公開197中之NIST標準允許192位元及256 位元鑰。在此時,XMM1可以用於在192位元或256位元 鏡中之另外6 4位元或1 2 8位元。在此時,部份其他1 2 8 位元暫存器(例如XMM2、XMM3等等)可以被使用以替代 碼410或碼710或碼910中之XMM1(或只要碼中內佇有 AESENCRYPT或AESDECRYPT),因爲鑰的一部份被內佇 在XMM1中。 雖然 AESENCRYPT已經被描述,但 AESDECRYPT Argl、Arg2可以類似地使用於支援在ECB模式、CTR模 式及CBC模式中之AES解密。熟習於本技藝者將了解, 在ECB模式中使用AESDECRYPT係相當地直接,而CBC 模式可以附帶有其他計算,例如在加密時,爲 AESENCRYPT所執行之XOR運算的反轉或相反。 -18- 200903254 應了解的是,雖然AESENCRYPT及AESDECRYPT如 何執行A E S演算法的細節並未被顯示出,但這些係爲熟習 於加密技藝者的能力範圍內。該特定實施法易於充分利用 執行有AESENCRYPT及A E S D E C R Y P T之特定處理器190 。在部份實施法中’這些指令係充分利用最快速執行之機 器語Η。此充分利用的細節並未特別適當於所主張的發明 ,爲了清楚解釋起見,部份細節已經被省略。 在本案說明中所用之元件、動作或指令應被建構爲本 案重點。因此’如在此所述,” 一”想要包含一或多數項。 可以對本案之上述實施法完成各種不脫離本明精神與原理 之修改與變化。所有此些修改與變化係想要包含在本案之 範圍與以下申請專利範圍保護範圍內。 【圖式簡單說明】 圖1爲依據部份實施法之例示計算系統; 圖2爲依據部份實施法之一處理器的暫存檔; 圖3爲槪念上顯示用於ECB模式之AES加密指令; 圖4爲ECB模式中之AES加密指令之例示碼; 圖5爲槪念上顯示用於CBC模式中之AES加密指令; 圖6爲槪念上顯示用於C B C模式之兩加鏈AE S加密指 令; 圖7顯示使用於C B C模式中之A E S加密指令之例示碼 圖8槪念上顯示用於CTR模式中之AES加密指令;及 -19- 200903254 圖9顯示用於CTR模式中之AES加密指令之例示碼 【主要元件符號說明】 1 0 0 :電腦系統 1 〇 1 :內連線 104 :主記憶體 1 0 6 :唯讀記憶體 1 0 7 :資料儲存裝置 1 〇 9 :處理器 1 2 1 :顯示裝置 1 22 :輸入裝置 1 2 3 :游標控制 124 :硬拷貝裝置 1 2 5 :播放裝置 126 :視訊數位化裝置 1 3 0 :執行單元 142 :指令 1 4 5 :密碼電路 150 :暫存器檔 1 6 0 :快取 1 6 5 :解碼器 1 7 〇 :內部內連線 1 9 0 :通訊裝置 195 :碼 -20 - 200903254 201 :整數暫存器 213a-h :暫存器 2 0 8 :狀態暫存器 209 :暫存器 2 1 0 :延伸暫存器 2 1 1 :指令指標暫存器
Claims (1)
- 200903254 十、申請專利範圍 1. 一種儲存有指令之機器可讀取媒體,如果該指令爲 一機器所執行時,使得該機器執行一方法,該方法包含: 組合該指令之第一運算元與該指令之第二運算元,以 產生一結果; 依據先進加密標準(AES)演算法,使用一鑰加密該結果 ,以產生一加密結果;及 將該加密結果放置於該指令之該第一運算元的一位置 內。 2 .如申請專利範圍第1項所述之媒體,其中該組合包 含: 互斥或運算該指令之該第一運算元與該指令的該第二 運算元,以產生該結果。 3 .如申請專利範圍第1項所述之媒體,其中該加密包 含: 自一或更多預定暫存器,取得該鑰。 4 .如申請專利範圍第3項所述之媒體,其中該鑰長度 爲128位元、192位元、或256位元。 5 .如申請專利範圍第1項所述之媒體,其中該第二運 算元係爲長度1 2 8位元之予以加密之明文。 6 .如申請專利範圍第5項所述之媒體,其中該第一運 算元爲零。 7 .如申請專利範圍第5項所述之媒體,其中該第一運 算元爲來自一先前加密運算之先前加密結果。 -22- 200903254 8 . —種執行加密之處理器’包含: 一第一邏輯,邏輯地組合一明文値與一第二値’以產 生組合結果,並使用一先進加密標準(AES)演算法及一鑰 ,加密所組合之結果,以產生一加密結果。 9 .如申請專利範圍第8項所述之處理器,其中該第一 邏輯被安排以互斥或(x〇R)運算該明文値與該第二値’以 產生組合之結果。 10.如申請專利範圍第8項所述之處理器,更包含: 第一暫存器,儲存該第二値;及 第二暫存器,儲存該鑰。 1 1 .如申請專利範圍第1 0項所述之處理器,其中該第 一邏輯被安排以儲存該加密結果於該第一暫存器中。 1 2 .如申請專利範圍第1 0項所述之處理器,其中該第 二値爲一先前加密結果或零。 1 3 .如申請專利範圍第8項所述之處理器,其中該明文 値與該加密結果各個長度爲1 2 8位元。 1 4 . 一種加密資料的系統,包含: 一記憶體,儲存一先進加密標準(AES)加密指令,該指 令具有能以至少兩模式,加密資料的兩運算元;及 一處理器,執行該AES加密指令。 15.如申請專利範圍第14項所述之系統,其中該AES 加密指令只有兩運算元。 1 6 ·如申請專利範圍第1 4項所述之系統,其中該至少 兩模式包含電子加密簿模式、計數器模式或加密區塊鏈模 -23- 200903254 式之兩者。 17_如申請專利範圍第14項所述之系統,其中該AES 加密指令以該至少兩模式之哪一模式加密資料係根據該兩 運算兀之一的値。 1 8 .如申請專利範圍第1 4項所述之系統,其中該a E S 加密指令以該至少兩模式之哪一模式加密資料係根據有關 於該A E S加密指令之一中間位元組。 19.一種解密資料之系統,包含: 一記憶體,儲存先進加密標準(A E S )解密指令,該指令 具有兩運算元’該解密指令能解密在至少兩模式中之資料 ;及 一處理器,執行該AE S解密指令。 2〇·如申請專利範圍第19項所述之系統,其中該aES 解密指令只有兩運算元。 21 如申請專利範圍第1 9項所述之系統,其中該至少 兩模式包曰笔子加密溥模式、計數器模式或加密區塊鏈模 式之兩者。 2 2 ·如申請專利範圍第1 9項所述之系統,其中該aE S 解松、指令以該至少兩模式之哪一模式解密資料係根據該兩 運算兀之一的値。 24 -
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 true TW200903254A (en) | 2009-01-16 |
| TWI390401B 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) |
Families Citing this family (20)
| 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 | 주식회사 아이씨티케이 홀딩스 | 프로세서, 프로세서의 동작 방법 및 이를 포함한 전자 장치 |
| KR20210018130A (ko) * | 2019-08-06 | 2021-02-17 | 주식회사 아이씨티케이 홀딩스 | 프로세서, 프로세서의 동작 방법 및 이를 포함한 전자 장치 |
| 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
Also Published As
| Publication number | Publication date |
|---|---|
| GB2447563B (en) | 2009-09-30 |
| TWI390401B (zh) | 2013-03-21 |
| 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 |
| KR20100082748A (ko) | 2010-07-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TW200903254A (en) | Performing AES encryption or decryption in multiple modes with a single instruction | |
| US10560259B2 (en) | Architecture and instruction set for implementing advanced encryption standard (AES) | |
| TW200421098A (en) | Cryptographic apparatus for supporting multiple modes | |
| US7529366B2 (en) | Block encoding/decoding method, circuit, and device | |
| JP5118494B2 (ja) | イン−ストリームデータ暗号化/復号の機能を有するメモリシステム | |
| JP2008524969A5 (zh) | ||
| JP2000295211A (ja) | データ記憶装置、データ処理システム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM4A | Annulment or lapse of patent due to non-payment of fees |