[go: up one dir, main page]

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 PDF

Info

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
Application number
TW097108905A
Other languages
English (en)
Other versions
TWI390401B (zh
Inventor
Martin Dixon
Srinivas Chennupaty
Shay Gueron
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of TW200903254A publication Critical patent/TW200903254A/zh
Application granted granted Critical
Publication of TWI390401B publication Critical patent/TWI390401B/zh

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details 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)

  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 -
TW097108905A 2007-03-14 2008-03-13 利用單一指令以多模式執行先進加密標準加解密的方法、系統與處理器 TWI390401B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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