200531494 九、發明說明: 【發明所屬之技術領域】 本發明係有關於微電子領域, 置及方法 (throughput) 具有微指令最佳化順序之計算巢置' 2 <有關於一種可在 法,藉以增加此計算裝置之產^行密碼運算的裝 【先前技術】 早期之電腦糸統係獨立操作t 此,執行於此電腦系統中之應用程他電腦系統之外,據 非儲存於此電腦系統,就是由應用^所需之輸入資料,若 提供;而應用程式執行結果及產生=式咬計人員在執行時 般為列印輸出之紙張,或者是寫入场^出資料,其形式一 系統其他類型之儲存裝置之檔案。輪J二磁碟或是此電腦 相同電腦系統中執行之應用程式之^ h案可當成之後在 出資料先前被儲存成槽案於可移除h案,或者,當輸 時,其也可以提供給不同但相容之Ί^輪送之儲存裝置 用。在這些早期的系統,保護機密次=系統之應用程式使 且在其他資訊安全措施中,密碼應^二,需求係公認,旅 防止機密資訊未被授權揭露。這王式被發展及應用以 或解密的方式在儲存裝置中儲碼程式一般係以加密 其後沒幾年,使用者開始發由、的輪出貝料。 以提供資訊共享存取的好處,^由網路將電腦連接玎 以及資料傳輸協定等均發展成僅、罔路架構、操作系統、 能力,更是其顯著的特徵。^列如:支援存取共享資料的 以在不同工作站或網路檔案 二用者的電腦工作站玎 際網路獲得新聞及其他資I、, f存取檔案,或者利用網 傳送及接收電子訊息(如m者、對數以百計的其他電腦 系統連接並提供信用卡或銀行資訊以^者買=銷s:: 200531494 廳、機場或其他公共場合利用無線網路進行上述之任何 動、。因此’保護機密資料及傳輸免於未授權揭露的需求 急速,成長’而在某些特定的狀況下,使用者被迫保護复 機密貢料的情況也大大的增加。目前新條通常集在 資訊安全問題,例如垃圾郵件(spam)、駭客、身^ 益=、反向工紅二惡作劇以及信用卡詐騙等係公眾所關连 的刖幾名。而當14些從各方面侵人私人領域的動機 ^錯誤到有賴_路攻擊,負責的執行單位以新法律、 嚴厲的執以及公,教育節目回應。然而,這些回應並未 有效遏止危及電腦|訊的浪潮。昔日是政府、金融機構、 軍方所專注關切的間諜,現在對—般人而言也已成為重要 的問題;間諜讀取他們的電子郵件或從他們的家用電腦存 取他們檢查帳戶的交易。在商業之前,熟悉該項技藝者可 察知從小到大的社團法人目前應用其資源卓越的部分以 保護財產貧訊。 資訊安全領域提供我們技術及裝置以加密資料,並使 其僅能由指定的個體加以解碼,此為所知的密碼 (cryptography)。當特別應用於保護儲存或傳輸於電腦之 間的資訊時,密碼最常被應用於轉換機密資料(稱為“明 文”;plaintext或cleartext)成為難以理解的形式(稱為 “密文”;ciphertext)。轉變明文成為密文的轉換過程稱為 加密(encryption; enciphering; ciphering),而轉變密 文回明文的反尚轉換過程稱為解密(decryption; deciphering; inverse ciphering)。 在密碼學的領域中’幾種程序及協定已發展到允許使 用者不須具備許多知識及努力即可執行密碼運算,並且針 對這些使用者使其可以傳輸或者提供其加密形式的資訊 產品給不同的使用者。連同加密資訊,傳送者通常會提供 接收者一“密碼鑰匙(cryptographic key)”以使接收者可 200531494 以解碼所加密的資訊,因此使得接收者能夠恢復或者獲得 存取未加密的原始資訊。热悉该項技藝者可察知這些程序 及協定一般係以暗語(passwor$保護、數學演算法以及 應用程式特別設計的形式加以實現以加密及解密機密資 訊。 幾種類型的演算法目前使用於加密及解密資料。演算 法根據上述一類型(例如一種RSA演算法,公開鑰匙密碼 演算法)利用兩密碼錄延(一公開錄匙(Public key)與一私 人输匙(private key)),加密或解密資料。根據一些公開 鑰匙演算法,接收者的公開錄匙係被傳送者用來加密傳送 給接收者的資料,因為有一數學關係存在於使用者的公開 錄匙與私人输匙之間’因此接收者必須利用其私人输匙解 密此傳輸以恢復此資料。雖然這類型的密碼演算法廣泛使 用於現今,但其加密及解密的運算卻是極慢甚至於少量的 資料。一第二類型的演算法,如所知的對稱餘匙演算法, 提供同量等级的資料安全並且可以較快執行。這些演算法 稱為對稱鑰匙演算法,因為他們對加密及解密資訊使用單 一密碼錄匙。在公開區段’目前有三種盛行單一錄匙 (single-key)岔碼演算法:資料加密標準(Data Encryption Standard; DES)、三重資料加密標準 (Triple DES)以及進階加密標準(Advanced Encryption
Standard; AES)。因為這些演算法保護機密資料的強 度,美國政府機關目前正使用這些演算法,但熟悉該項技 藝者預期這呰演算法中至少一個演算法,在不久的將來會 變成商業及并g方父易的標準。根據所有這些對稱輪匙演 算法,明文及密文被劃分在指定大小中的區塊以進行加密 及解密。例如:進階加密標準執行密碼運算於128位元 區塊的大小’並且使用128位元、192位元以及256位 元的密碼鑰匙長度。其他對稱鑰匙演算法,例如Rijndael 200531494
Cipher也允許192位元以及256位元的資料區塊二據 此,就一區塊加密速算而言,一 1024位元的明文办心加 密成8個128位元的區塊。 所有對稱錄匙演算法利用相同形式的次運异以1^ 一區塊的明文,並真根據許多更常被應用的對稱鑰, 法,一初始密碼鑰匙被擴展成複數個鑰匙(例如:/鑰匙, 排程”),每一鑰匙係用以當成次運算的一對應密碼“回合” 且執行於明文區塊。例如··錄匙排程的第一鑰匙係伟以執 行次運算的第一密痛回合於明文區塊,第一回合的結果係 用以當成第二回合的輸入,其中第二回合利用鑰匙耕程的 第二錄匙以產生第二結果,並且一具體指定數量後來的回 合執行產生一最終回合結果,即密文本身。根據進階加密 標準演算法,在每〆回合的次運算係參照於文獻中的次位 元組(或 S-box)、移列(ShiftRows)、混欄(MixColums) 以及加入回合鍵(AddRoundKey)等。一區塊密文的解密 係類似的處理並伴隨例外的執行在每一回合,且回合的最 終結果係一區塊的明文,上述之例外係指密文輸入反加密 及反次運算執行(例如:Inverse MixColumns、Inverse ShiftRows) 〇 資料加密標準及三重資料加密標準演算法利用不同 特定的次運算,但是這些次運算係類似進階加密標準演算 法的次運算,因為其利用相似的方式以轉換一區塊的明文 成為一區塊的密文。 執行密碼運算於多連續的文字區塊,所有對稱鑰匙演 算法利用相同類別的模式,這些模式包含電子密碼本 (electronic code book; ECB)模式、密碼區塊鏈結 (cipher block chaining; CBC)模式、密碼反饋模式 (cipher feedback; CFB)以及輸出反饋模式(〇utput 200531494 feedback; OFB)。這些模式中有些利用一附加初始化向 量於執行次運算期間,有些使用執行於第一區塊明文之第 一位置密碼回合的密文輸出當成附加的輸入給執行於第 二區塊明文之第二位置密碼回合。除此,本應用的領域對 現今對稱鑰匙密碼演算法所應用的每一密碼演算及次運 算提供更深層的討論。就具體指定執行標準而言,讀者可 由美國聯邦資訊處理標準公告 46-3 (Federal Information Processing Standards Publication; FIPS-46-3),1999年10月25曰出版,得到資料加密 標準及三重資料加密標準的詳細探討;以及美國聯邦資訊 處理標準公告197 (FIPS-197),2001年11月26曰出 版,得到進階加密標準的詳細探討。上述提及的兩種標準 係由美國國家標準暨技術局(National Institute of Standards and Technology; NIST)所發布及主張,在 此列為參考以供本發明所有意圖及目的之說明。除上述所 提及的標準,教導(tutorial)、白皮書、套件(toolkit)以及 資源文章均可透過網際網路http: / /csrc.nist.gov/在 NIST的電腦資源安全中心(Computer Security Resource Center; CSRC)獲得。 熟悉該項技藝者可察知有許多的應用程式能夠執行 在可以執行密碼運算(例如:加密及解密)的電腦系統。實 際上,某些操作系統(例如:微軟Window XP、Linux) 提供直接加密/解密的服務於密碼基元(primitive)、密碼 應用程式介面以及諸如此類的形式。然而,本發明人已觀 察到現今電腦密碼技術在某些方面的缺陷,因此藉由第一 圖強調及討論這些缺陷。 第一圖係現今電腦密碼應用之方塊圖100。方塊圖 100描繪第一電腦工作站101連接區域網路(local area network) 105,且區域網路105也連接第二電腦工作站 200531494 102、網路樓案儲存裝置(network file storage device) 106、第一路由器(first router) 107或其他介面形式到 廣域網路(wide area network,WAN) 110 (例如:網際 網路)以及像是符合IEEE 802.11的無線網路路由器 (wireless network router) 108,筆記型電腦(laptop computer) 104則是透過無線網路109與無線路由器 108成為介面。在廣域網路110方面,第二路由器 (second router) 111提供介面給第三電腦工作站1〇3。 如上概述,現今的使用者在工作期間面臨許多次的電 腦資訊安全問題。例如:在現今多工(multi-tasking)操 作系統的控制下,使用者工作站101可以同時執行多個 任務(task)且每一任務要求密碼運算。使用者工作站101 要求執行加密/解密應用程式(encryption/decryption application) 112 (無論是操作系統的一部分或是由操作 系統所引動(invoke))以儲存區域檔案於網路檔案儲存裝 置106,在檔案儲存的同時,使用者可以傳送一加密訊息 給在工作站102的第二使用者,其中工作站102也要求 執行加密/解密應用程式112的一範例,而加密訊息可能 是即時(例如:即時訊息)或者是非即時(例如:電子郵件)。 此外,使用者可以透過廣域網路110從工作站103存取 或提供其金融資料(例如:信用卡號、金融交易等)或者其 他形式的機密資料。工作站103也可以代表是家庭辦公 或其他遠端電腦103,其可以讓工作站101的使用者離 開辦公室時用以存取區域網路105的任何共享資源 101、102、106、107、108以及109。上述提及的每 一活動均要求引動加密/解密應用程式112的相對範 例,並且無線網路109目前普遍地提供於咖啡店、機場、 學校以及其他公眾場所,因而促使使用者筆記型電腦104 不僅對其他使用者傳送/接收的訊息進行加密/解密,並 200531494 且也對透過無線網路109到無線路由器 進行加密及解密。 〜听百通訊 熟=項技藝者可因此察知在工作站l〇i_i〇 在最近的將來有可能同時執二= 本發明人注意到上述電腦系統1〇1_ 的至少-範例以執行以ΪΪ 方法的限制。例如:透過程式規劃的軟體執行一 就比透過硬體執行相同功能還慢 曰·^月匕 ^綾執仃,亚且岔碼運鼻的參數(例如:明文、宓、 式以及鑰匙等)必須透過操作系 ς ^ ^二為完成㈣運算所引動的範例f Γ 解^應Π塊5丨動許多回合的次運算^密 處速度產生不利的影響。熟悉該項技蔽者 rai ; ί ί ί t #°;ΐ;^ ^ ^ ^ ^ ^ ^ ^ 曰相田於,、傳达未加岔電子郵件訊息的五倍。 八沾Ϊ 1卜’ I前的技術受限於操作系統介人的延遲。大邱 :矛系統的元件或外掛應用程式以完乂上i之 系統因中斷及其他正在執行應用程式的請 贫碼ΐί往月人注意到在現今電腦系統101_1〇4的 二ΐ r i目f似於微處理機尚未有浮點單元時的浮點 子#。早』的>子點單元運算係由軟體所執行,因此執 12 200531494 行的非常慢;同浮點運算,由軟體執行的密碼運算也是極 慢。當浮點技術更進一步發展,浮點輔助處理器提供浮點 指令以供執行,這些浮點辅助處理器執行浮點運算比軟體 執行快了許多,但卻增加了系統的成本。相同地,密碼輔 助處理器目前以附加在電路板或以外接裝置與主處理器 透過並列埠或其他介面匯流排(例如:USB)成為介面的形 式存在,這些輔助處理器能使密碼運算的完成比由純軟體 所執行的快了許多。但密碼共同處理器給系統配置增加了 成本,需要額外的電源、而且降低了系統之可靠性。由於 資料通路不像主微處理器那樣在同一模組上,所以密碼共 同處理器的執行乃更易被監聽。 因此本發明人確認將密碼硬體加入現今微處理器的 需要,藉此,要求密碼運算的應用程式可藉由一單獨、基 元(atomic)的密碼指令指示微處理器執行密碼運算。本發 明人也確認應以此功能限定操作系統介入及管理的要 求,並且期望密碼指令可以使用於應用程式的權限層級 (privilege level)以及密碼硬體可相稱(comport with)於 現今微處理器的一般架構,並且密碼硬體及相關聯的密碼 指令可支援相容先前的操作系統及應用程式。更期望的是 提供執行密碼運算的裝置及方法,其可阻止未授權的監 視;其可支援及可程式化有關多密碼演算;其可支援核對 及測試實體特定的密碼演算;其可允許使用者提供鑰匙也 可自行產生錄匙;其支援多資料區塊大小及鑰匙長度(key size);其提供有效率的多資料區塊管線處理;以及其提 供可程式化區塊加密/解密模式如電子密碼本模式、密碼 區塊鏈結模式、密碼反饋模式以及輸出反饋模式。 【發明内容】 13 200531494 本發明係用以解決上述習知技藝中的問題及缺點。本 發明提供一較佳的技術以執行密碼運算於一微處理器中。 本發明之一較佳實施例,提供一種執行密碼運算之裝 置,而此裝置係包含一密碼指令電路,其用以產生一密碼 指令,以及一轉譯邏輯電路(translation logic)。上述之 密碼指令係由一計算裝置接收並將其當成在此計算裝置 上執行指令流的一部分,並且此密碼指令指定複數個密碼 運算其中之一。上述之轉譯邏輯電路係操作性地耦合於上 述之密碼指令電路並且將上述之密碼指令轉譯成微指 令,此微指令係用以在指示計算裝置儲存對應第一輸入文 字區塊的輸出文字區塊之前,指示計算裝置載入第二輸入 文字區塊並對此第二輸入文字區塊執行密碼運算。因此, 在對第二輸入文字區塊執行密碼運算期間,上述之輸出文 字區塊可以被儲存。 本發明之一較佳實施例,提供一種執行密碼運算之裝 置,此裝置包含配置用以轉譯一密碼指令成一序列 (sequence)微指令(micro instructions)的轉譯邏輯電 路。此序列的微指令包含一第一微指令及一第二微指令。 上述之第一微指令指示(direct)載入一第二輸入文字區塊 並且執行一密碼運算於此第二輸入文字區塊。上述之第二 微指令指示儲存一第一輸出文字區塊,此第一輸出文字區 塊根據執行的密碼運算對應於一第一輸入文字區塊。上述 之轉譯邏輯電路發佈(issue)第一微指令後發佈第二微指 令0 本發明之一較佳實施例,提供一種在一元件執行密碼 運算之方法,此方法包含轉譯一密碼指令成一第一微指令 及一第二微指令,其中此密碼指令指定(prescribes)複數 個密碼運算其中之一的執行。上述之第一微指令指示 14 200531494 碼 (issue)上述之筮一外扣人从 入h 1布 繁户人之ί一 令給一密碼單元後,發佈上述之 入Γ二‘ I =上社、碼單几;藉此在此密碼運算對此第二輪 子时*行期間,此輪出文字區塊可以被儲存。 人—第二輪人文字區塊並且執行此密 ::Γ- ϊ:ϊ;文ί區塊,上述之第二微指令^ 行的此運ΐ H子區塊’此第—輸出文字區塊根據執 ==ΐΐ:對氕:第-輸入文字區塊;以及4 【實施方式】 用及ί i二=子而,,用文中特定應 々欠括欲对你月所歹舉之例子。然而,貫施例中所提及 可I用二豆#叙以彰顯與習知技術之不同處,此一般原則 施=。貫施例中。因此,本發明並非限定於特定實 缻所討論的密碼運算及現今電腦系統用以加/ 加以討論。本發=供ms據第三圖到第十六圖 管的驻署另古t梃種在現今電腦系統中執行密碼運 ^爭、、2 ΐ 1·、+、/ ,其透過主要機制展現優秀的性能特徵並 ,Υ所提及的目標,像是限制操作系統的干預、 錢的相容性、演算法及模式的可程式性、 的夕貢料區塊管線操作’防止駭客入侵 性等等。 凊參第二圖,方塊圖200描繪當今電腦系統中執 行密碼運算的技術。方塊圖200包含一料虛採哭9ηΊ, 其操取指令及從系統記憶體中:稱t吏/用二 (application mem0IT) 203存取應用程式相關的資料, 而程式控制及應用記憶體203中資料的存取通常是由屬 15 200531494 於系統記憶體保護範圍的操作系統軟體(operating system software) 202所管理。如上所述’當一執行應 用程式(例如:電子郵件程式或檔案儲存程式)要求執行密 碼運算時,此執行應用程式必須藉由指示(direct)微處理 器201執行相當數量的指令以完成密碼運算。這些指令 可能是執行應用程式本身的子程式’也可能是連結到此執 行應用程式的外掛應用程式,或者是由操作系統202所 提供的服務。姑且不論他們的關聯性,熟悉該項技藝者可 察知這些指令將駐於某些指定或分派的記憶體範圍。為達 討論目的,這些記憶體範圍顯示在應用記憶體203並且 包含一密碼錄匙產生應用程式(key generation application) 204,其中密碼鑰匙產生應用程式204產 生或接收一密碼输匙並且擴展此錄匙成一使用於密碼回 合運算中的錄匙排程(key schedule) 205。就多區塊加密 運算而言’區塊加密應用程式(encryption application) 20ό被引動(invoke)。加密應用程式206執行存取明文 (plaintext)區塊210、鑰匙排程205以及密碼參數 (cryptographic parameters) 209 的指令,其中密碼參 數209係進一步指示明確的密碼運算,如模式、鑰匙排 程位置等’且在要求特定模式時,加密應用程式2〇6也 可存取初始向1 (initialization vector) 208。加密應用 206執行其内的指令以產生對應的密文(ciphertext)區塊 2 11。同理’區塊解密應用程式(decrypti〇ri application) 207被引動以執行區塊解密運算。解密應用程式2〇7執 行存取密文區塊211、鑰匙排程205以及密碼參數209 ^指令’其中密碼參數2〇9係進一步指示明確的密碼運 ^ ’並且在要求特定模式時,也可存取初始向量208。解 密應用程式207執行其内的指令以產生對應的明文區塊 16 210 ° 200531494 值得注意的是必須執行相當數量的指令以產生密碼 鑰匙及加密或解密文字區塊。上述提及的FIPS說明書包 含許多虛擬碼致能相當數量指令之範例,因此,熟悉該項 技藝者可察知一個簡單的加密運算將要求數以百計的指 令,並且每一指令須經由微處理器201執行以完成所要 求的密碼運算。並且,完成密碼運算的指令執行對正在執 行的應用程式之主目的(例如:檔案管理、即時訊息、電 子郵件、遠端檔案存取、信用卡交易)而言一般係屬多餘, 結果讓使用者誤為目前執行的應用程式執行效率不佳。至 於獨立或外掛的加密及解密應用程式206及207,這些 應用程式206及207的引動及管理也必須服從操作系統 202的其他請求,例如支援中斷、例外(exception)以及 更惡化之問題的類似事件。並且電腦系統所要求每一同時 的密碼運算,密碼鑰匙產生應用程式204、解密應用程式 207及初始向量208的個別實例必須被配置在應用記憶 體203,且預期由微處理器201所要求執行之同時密碼 運算的數目也將隨時間而增加。 本發明人注意到目前電腦系統密碼技術的問題與限 制,並且確認在微處理器中提供執行密碼運算之裝置及方 法的需要。藉此,本發明提供一微處理器及相關的方法, 透過其内的密碼單元執行密碼運算,此密碼單元係藉由單 一密碼指令的程式執行密碼運算。本發明現在將以第三圖 到弟十二圖為參考加以討論。 請參照第三圖,其為本發明一較佳實施例執行密碼運 算之微處理器的方塊圖300。方塊圖300描繪一微處理 器301,其透過記憶體匯流排(memory bus) 319與系統 記憶體(system memory) 321輕合連接,且微處理器 30 1包含從指令暫存器接收指令的一轉譯邏輯電路 (translation logic) 303。轉譯邏輯電路303包含邏輯電 17 200531494 路、裝置或微碼(例如··微指令或本機指令),或邏輯電路、 裝置或微碼的組合,或用以轉譯指令成為指令相關序列的 等效元件。這些在轉譯邏輯電路303中執行轉譯的元件 可能與在微處理器301中執行其他功能的電路、微碼共 用,而根據本應用的範圍,微碼是對照至少一個微指令的 術語。一微指令(也可參照成一本機指令)係一單元層級執 行的一指令,例如微指令係由精簡指令集電腦(reduced instruction set computer; RISC)微處理器直接執行。 至於複雜指令集電腦(complex instruction set computer; CISC)微處理器,如x86相容的微處理器, 其x86指令被轉譯為關聯的微指令並且由複雜指令集電 腦微處理器中的單元直接執行。轉譯邏輯電路303耦合 微指令仔列(micro instruction queue) 304,且此微指 令仔列304具有複數個微指令通道(micro instruction entries) 305、306。微指令由微指令佇列304提供給包 含一暫存器組(register file) 307的暫存階段邏輯電路, 而此暫存器組307包含複數個暫存器(register) 308-313’其内容在執行一指定的密碼運算前就已建立。 暫存器308-313指到系統記憶體321中含有執行指定密 碼運算資料的對應位置323-327。暫存階段耦合到載入 邏輯電路(load logic) 314,此載入邏輯電路314係與取 回資料以執行指定密碼運异的資料快取(data cache) 315成介面,而此資料快取315藉由資料匯流排319耦 a到糸統&己憶體32 1。執行邏輯電路(execution logic) 328耦合到載入邏輯電路314並且執行由前面階段傳來 之微指令所指定的運算。執行邏輯電路328包含邏輯電 路、裝置或微碼(例如··微指令或本機指令),或邏輯電路、 I置或微碼的組合,或用以執行由指令指定之運算的等效 元件。這些在執行邏輯電路328中執行運算的元件可能 18 200531494 與在微處理器301中執行其他功能的電路、微碼共用。 執行邏輯電路包含密媽單元(crypt〇graphy unit) 316, 此密碼單元316接收從載入邏輯電路314被要求執行指 定密碼運算的資料。微指令指示密碼單元316執行指定 岔碼運异於複數個輸入文字區塊(input text) 326以產生 相對應複數個輸出文字區塊(output text) 327。密碼單 元316包含邏輯電路、裝置或微碼(例如:微指令或本機 指令I或邏輯電路、裝置或微碼的組合,或用以執行密 碼運算的等效元件。這些在密碼單元316中執行運算的 元件可能與在微處理器301中執行其他功能的電路、微 碼共用。在一實施例中,密碼單元316並列操作與在執 行邏輯電路328内的其他執行單元(未繪出),例如整數單 元、浮點數單元荨。在本應用範圍一“單元”的實施係包含 邏輯電路、裝置或微碼(例如:微指令或本機指令),或邏 輯電路、裝置或微碼的組合,或用以執行指定功能或指定 運异的等效元件。這些在特定單元中執行指定功能或指定 運异的元件可能與在微處理器301中執行其他功能的電 路、微碼共用。例如:一實施例中,一整數單元包含邏輯 電路、裝置或微碼(例如:微指令或本機指令),或邏輯電 路、裝置或微碼的組合,或用以執行整數指令的等效元 件;一浮點單元包含邏輯電路、裝置或微碼(例如:微指 令或本機指令),或邏輯電路、裝置或微碼的組合,或用 以執行浮點指令的等效元件;則在整數單元中執行整數指 令的元件可能與在浮點單元中執行浮點指令的其他電 路、微碼等共用。在一與x8 6架構相容的實施例中,密 碼單元316與整數單元、浮點單元、多媒體延伸集 (Mathematic Matrix Extension; MMX)單元、串流延伸 集(Streaming SIMD Extensions; SSE)單元並列操作。 根據本應用範圍’當^一貫施例可以正確執行設計給χ8 6 19 200531494 微處理器執行之大部分應用程式時,此實施例係與x86 架構相容’ 一應用程式正確執行而得到其預期的結果。替 代χ86/相容實施例預期密碼單元並列操作與先前提及的 x86執行單元之子集。密碼單元316耦合到儲存邏輯電 路317並且提供相對應複數個輸出文字區塊327,而此 儲存邏輯電路317也耦合到指定輸出文字資料327給系 統記憶體321儲存的資料快取315。此資料快取315耦 合到寫回邏輯電路(write back logic) 3 18,而當所指定 的密碼運算完成時,寫回邏輯電路318更新在暫存器組 307中的暫存器3〇8-313。在一實施例中,微指令與時 脈"ia號電路(未繪出)同步經過每一個上述所提及之邏輯 電路階段 302、303、304、307、314、316-318 以使 運算可以同時執行而相似於在線執行運算。 在系統記憶體321中,一要求指定密碼運算的應用 程式可以直接指示微處理器301透過單一密碼指令322 (參照用以說明的密碼指令(XCRYPT instruction) 322) 執行此運算。在一複雜指令集電腦微處理器實施例中,密 碼指令322包含一指定密碼運算的微指令。在一實施例 中’密碼指令322利用一存在指令集架構中的一空閒或 未使用指令運算碼。在一 x86架構相容的實施例中,密 碼指令322係一 4位元組指令包含一 x86重複前置(REP prefix)(如0xF3)、兩位元組未使用x86運算碼(opcode) (如0x0FA7)、一位元組有關於一指定區塊密碼模式以應 用於執行一指定密碼運算。在一實施例中,根據本發明的 密碼指令322可以在系統權限供給應用程式的層級執 行’因而可以程式規劃於指令的程式流以提供給微處理器 301不論是由應用程式直接或在操作系統32〇的控制 下。因為僅有一密碼指令322指示微處理器301執行指 定的密碼運算,而運算的完成對操作系統320應是顯而 20 200531494 易見。 在操作中,操作系統320引動一應用程式以執行於 微處理器301。如部分指令流於應用程式的執行期間’一 密碼指令322從系統記憶體321提供給擷取邏輯電路 (fetch logic) 302。然而,在密碼指令322執行之前,在 程式流的指令指示微處理器301初始化暫存器308-312 的内容以使他們指到系統記憶體32 1中的位置 323-327,其包含一密碼控制字組(cryptographic control word) 323、一 初始密瑪錄匙(initial cryptographic key) 324 或一錄匙排程(key schedule) 324、一 初始向量(initialization vector) 325(如果需 要)、運算用的輸入文字(input text) 326、以及輸出文字 (output text) 327。在執行密碼指令322之前須先初始 化暫存器308-312,因為密碼指令322與一附加於暫存 為308-312之含有區塊計數的暫存器3 13,其中區塊計 數係在輸入文字326區塊加密或解密資料區塊的數目。 f此轉譯邏輯電路303從擷取邏輯電路3〇2取回密碼指 if轉譯成一序列相對應的微指令以指示微處理器 於柏ΐ t Ϊ =密碼運算。一第一複數個微指令3〇5_306 ί列1v指示密碼單^316從載入邏輯 =產生相對庫^貝秘料/^且,始執行指定數目的密碼回合 儲存於系铋的輪出資料,提供藉由資料快取315 路317'。、= 1 J的輸出文,327給儲存邏輯電 列中,指示在微處理!料)於相對應微指令序 其他未完成指定密碼運算tj!1行單元(未繪出)執行 時結果及計數之非架構二而的運异,例如:管理包含暫 文字指標暫存器未繪出)、更新輸出及輸入 密/解密初始向量指伊勒,=輪入文字區塊326之加 ^ ^ (initialization vector 21 200531494 pointer register) 310(如果需要)、處理未處理的中斷等 等。在一實施例中,暫存器308-313係架構性暫存器。 架構性暫存器308-313係為實現特定微處理器之指令集 架構(instruction set architecture,ISA)中所定義的一 種暫存器。 在一實施例中,密碼單元316分成複數個階段因此 允許相繼輸入文字區塊326的管線處理。而另一替代實 施例是單階段密碼單元316。一第三實施例係關注於一兩 階段密碼單元316,其可管線處理兩個相繼輪入文字區塊 326。根據所有的實施例,密碼單元316係以緩衝微指令 及輸入文字區塊326,並且在儲存對應前一輸入文字區塊 326的輸出文字區塊327時,執行指定的密碼運算於隨 後的輸入文字區塊326。為藉由密碼單元將文字區塊 326-327的生產量最大化,因此微指令3〇5_3〇6係用以 指示載入隨後的輸入文字區塊,並在對應前一輸入文字區 塊3^6的輸出文字區塊327被儲存之前,執行指定的密 碼運异。如此之順序考慮到文字區塊326_327有效率的 管線處理,並且也將在之後更加詳細的探討。 第:圖的方塊圖300教示本發明所需之元件,因此 省略許夕在現今微處理器301中的邏輯以求圖示之簡 悉該項技藝者可察知現今特定實%的微處理 含許多階段及邏輯魏,在此為圖示之簡潔 刀:併。例如:載入邏輯電路314在-快取線 以嵌入隨一快取介面階段的-位址產生 卜I一一ί且應注意的是,在複數個輸入文字區塊 326上之一元全密碼運算,係根 322的運算對操作李綠32〇沾本t "月猎 -i匕糸、、先2〇的考量係顯而易見,並且單 一 丁係藉由與微處理器301中其他執行單 π並㈣作及協調的密碼單元316所完成。本發明密碼 22 200531494 單元316在實施組態中的替代實施例係類似前幾年微處 理器中浮點單元的硬體。密碼單元316的操作及相關密 碼指令322係完全相容先前操作系統及程式同時操作, 並且也將在之後更加詳細的彳朱讨。 請參照第四圖,其為本發明之一基元(atomic)密馬指 令4 0 0貫施例的方塊圖。密碼指令4 0 0包含一選項前置 欄位(optional prefix field) 401、一 重複前置攔位 (repeat prefix field) 402、一運算碼攔位(opcode field) 403、一 區塊密碼模式(block cipher mode)欄位 4〇4。 在一實施例中,攔位401-404的内容相稱於χ86指令集 架構,而其替代的實施例可考慮相容於其他指令集架構二 操作上,選項前置攔位401在許多指令集架構中係 用以致能(enable)或禁能(disable)部分主要微處理器的 處理特徵,像是指示16位元或32位元的運算、指示處 理或存取特定的記憶體區段等。重複前置欄位402係g 以指示由密碼指令400所指定的密碼運算係在複數個輪 ^資料區塊(如明文或密文)完成。重複前置攔位4〇2也^ 示一相稱微處理機利用其内複數個架構暫存器的内容: 成才曰標指到系統圮憶體中含有完成指定密碼運算所㊆炎 數的位置。如上所述,在一 x86相容實施例中了 置攔位402的值是0XF3,並且根據χδ6架構協定= 碼指令與x86重複字串指令,如REP M〇v,在 二 常相似。例如:當本發明由一 χ86相& 非 執行時’重複前置欄位402係參照一儲^架二 ,CX中之區塊計數變數、-儲存在暫存器 ^ 位址指標(指到輸人資料以供密碼運管 料)。在x86相容的一實施例中,本 輸出貝 字串之指令的概念成為更可參⑻展傳統重複 〃 “、、储存在暫存器EDX中 23 200531494
之控制字組指標、_ 標以及一儲存在暫存 指定密碼模式要求)。 運算碼攔位403指定微處理器完成一密管 密碼運算係由控制字組指標所隱示參照儲存在 的-控制字組。本發明認為運算碼值的較佳選擇係 令集架構中一空閒或未使用的運算碼值,藉此在一 : 處理器中保留與先前操作系統及應用軟體的相容。例 如上所述,一 x86相容實施例的運算碼欄位4〇3使1用 0x0FA7以指示執行指定的的密碼運算。區塊密碼模式攔 位404指示特定的區塊密碼模式以供特定的密瑪運管使 用,並且將參照第五圖加以探討。 π 弟五圖係第四圖基元密碼運算指令之區塊密碼模式 攔位範例值的表格500。值0xC8指示使用電子密碼本^ 式完成密碼運算;值〇xD〇指示使用密碼區塊鏈結方式完 成密碼算;值〇xEO指示使用密碼反饋方式完成密碼運 算;以及值0xE8指示使用輸出反饋方式完成密碼運算。 區塊密碼模式欄位404其他所有的值係保留,而這些模 式係描述於上述所提及的FIPS的文件中。 請參照第六圖,其為本發明一較佳實施例在一 x86 相容微處理器600中較詳細的密碼單元617的實施例方 塊圖。微處理器600包含擷取邏輯電路(fetch logic) 601 用以從記憶體(未繪出)擷取指令以供執行。擷取邏輯電路 601係耦合到轉譯邏輯電路(translation logic) 602,而 轉譯邏輯電路602包含邏輯電路、裝置或微碼(例如:微 指令或本機指令),或邏輯電路、裝置或微碼的組合,或 用以轉譯指令成為相關序列微指令的等效元件。這些在轉 譯邏輯電路602中執行轉譯的元件可能與在微處理器 24 200531494 600中執行其他功能的電路、微碼共用。轉譯邏輯電路 602包含一轉譯器(translator) 603,而此轉譯器603係 耦合到一微碼唯讀記憶體(microcode ROM) 604。中斷 邏輯電路(interrupt logic) 626藉由匯流排634耦合到 轉譯邏輯電路602。複數個軟體及硬體中斷信號627係 由指示未處理中斷給轉譯邏輯電路602的中斷邏輯電路 626處理。轉譯邏輯電路602耦合到微處理器600相繼 的階段包含一暫存階段(register stage) 605、定址階段 (address stage) 606、載入階段(l〇ad stage) 607、執 行階段(execution stage) 608、儲存階段(store stage) 618、以及寫回階段(wrke back stage) 619。每一相繼 階段包含邏輯電路以完成由擷取邏輯電路6〇1所提供相 關才曰令執行的特定功能,如先前在第三圖的微處理器中所 討論參照類似名稱的元件。描繪在第六圖中χ86相容微 處理器600之實施例係以在執行階段6〇8中之執行邏輯 迅路(execution logic) 632為特徵,其包含平行執行單 兀 610、612、614、616、617。一整數單元 610 從微 指令佇列609接收執行整數微指令;一浮點單元612從 微指令佇列611接收執行浮點數微指令;一多媒體延伸 =元614從微指令㈣613接收執行多媒體延伸集微 J :、’ 一串流延伸集單元616從微指令仔列615接收執 订串流延伸集微指令。在本發明之一 χ86實施例,一密
St 藉由:載入匯流排620、一暫停(sta11)信號 :6 2 ΐ,:儲存匯流排62 2耦合到串流延伸集單 :615。饴之617共用串流延伸集單元的微指令佇 二例可將密碼單元617獨立並聯操作 (EFLA二以/ 614。整數單元610耦合到- mm)暫存器624,此旗標暫存器包含-X 而此位元625的狀態係、配置用以指示密碼 25 200531494 運算是否正在處理。在一實施例中,此χ位元625係一 x86旗標暫存器624的第30位元。此外,整數單元610 存取一機器特殊暫存器(machine specific register) 628以評估一 E位元629的狀態,而此E位元629的狀 態指示密碼單元617是否位於微處理器600。整數單元 610也存取一 D位元631於一特徵控制暫存器(feature control register) 630,以致能或禁能密碼單元617。如 第二圖的微處理器301實施例,第六圖的微處理器6〇〇 以必要元件為特徵教示本發明一 X86相容實施例的内 容,並且為求圖示簡潔而合併或省略微處理器的其他元 件。熟悉該項技藝者可察覺用以完全介面的其他元件,像 是資料快取、匯流排介面單元、時脈產生以及分配邏輯 等,均未繪出。 在操作中,指令是由擷取邏輯電路601從記憶體(未 繪出)擷取並且與一時脈信號(未繪出)同步提供給轉譯邏 輯電路602。轉譯邏輯電路602轉譯每個指令成為一相 對應序列的微指令,其與時脈信號同步持續地提供給微處 理機600的後續階段605-608、618、619。在一序列 微指令中的每一個微指令指示一個次運算的執行,而次運 1 算被要求完成由一相對指令所指定的一整體運算,例如位 址階段606產生一位址、暫存階段605從指定暫存器(未 繪出)恢復的兩運算元在整數單元内相加、藉由儲存邏輯 電路618儲存執行單元610、612、614、616、617其 中之一所產生的結果於記憶體等。根據轉譯中的指令,^ 譯邏輯電路602利用轉譯器603直接產生一序列^微指 令,或是從微碼唯讀記憶體604擷取此序列,或是 轉澤器60 3直接產生此序列的部份並且從微碼唯讀f己恨、 體604擷取此序列剩下的部分。微指令透過微處理&Π6(^ 的相繼階段605-608、618、619持續地與時脈同步進 26 200531494 :立ΐίϊ=執行階段608 ’執行邏輯電路632連 同其運异兀(在暫存階段6〇5從暫存器所恢復,或在位址 階段606由邏輯電路所產生,或藉由載入邏輯電路從 料快取所恢復),藉由放置微指令在一對應的微指令佇列 6〇9 、613、615而將其依指定路線傳送給一指定 執行單元610、612、614、616、617。執行單元61〇、 6/2、614、616、617執行微指令並提供結果給儲存階 段618。在一實施例,微指令包含欄位指示其是否 其它運异並列執行。 /、 源亢則所述之擷取一個密碼指令,轉譯邏輯電路 6〇2產生相關微指令,其指示在微處理器60◦後繼階段 618,619中的邏輯電路執行指定的密碼運 J踩ΐ此,—第—複數個相關微指令係直接依路徑傳送至 並且指示密碼單元617由载入匯流排620 a认二 或载入一區塊的輸入資料並且開始執行沪宗叙 產,-區塊的輸 於記憶體:子排622將所產生=塊輪出資料儲存 指令係用以々酬三圖所;二匕訌複數個_ 區塊的有“ίΓ碼单元6有達到多資料 係用以確定》^作。更精確地’第一稷數個相關微指令 區塊之前土儲存對應前一輸入文字區塊的-輸出文字 出文字—相繼的輸入文字區塊已被載入。這使得卷 的輸入:字被儲存時,-指定密碼操作執行於此 I亓:=二複數個相關微指令依其路徑傳送至复夕奋― =二=12、614、616以執行其它次運算=^1 試、致二定密瑪運算之必需,例如E位元629'ί、則 :佳一由肊〇位元631、設定χ位元625以指示齊測 订、在暫存階段605更新暫存(例如,計數暫^作 27 200531494 ^電路626^存%輸出文字指標暫存器)、由中斷邏 微指令係用以ίίΪ中斷信號電路627的處理等。相關 入資料,其藉由的最㈣行於多區塊輸 令成為介面,因=早軍=之序列中的整數單元微指 微指令係包含於相 單元運算並行完成。 號電路627恢指 曰:允許或並從待處理中斷信 提供於X 8 6 ^為H對密碼參數的指標與資料係 並且當從,斷1 暫;^時,其狀態被保存, 指令測試X位元6 破恢復。當從中斷返回,微 行。如果是,當中n悲二決,是否一密碼運算在進 輸人資料區運算重覆於處理中之特別 路627 ^ t f旨令係用“允許在處理中斷信3 碼1的指標暫存器及中間的結果子W上之一序列密 、軍从Γ ί照第七圖,其為第六圖之微處理时士 α 一 ,之乾例微指令_欄位的方塊圖。^不密碼次 二微運异碼攔位(micr。GpcGde 7Μ包含 态欄位(data register field) 7〇 ,一貧料暫存 (register field) 703。微運算石馬搁位7〇及:^器攔位 疋次運算並且指定邏輯電路於微處理哭-特 段以執行次運算。微運算碼攔位 =或多階 本發明的-密碼單元執行指示的微指令的匕,定根據 兩個指定的值。一第一值載入(XL〇AD)指=‘有 體位置恢復,而其位址係由資料暫存器攔位、7〇^ ^憶 指稱之一架構暫存器的内容所指定。這資 内容所 存态欄位703内容所具體指定密碼單元内一=到由暫 這恢復的資料(例如:密碼鑰匙資料、控_厂暫存器。 字資料、初始向量)係提供給密碼單元。‘二=、輸人文 的第二值儲存(XSTOR)指出由密碼單元^ |攔位7〇1 |座生的資料 28 200531494 存在一記憶位置,而I杨 ,,稱之一架構暫“的内容戶:,存器,位 階段貫施例,暫存器攔位 曰^在牷碼單元〆夕 料區塊之一儲存於記愔靜 J1内容指示複數個輸出資 (data field) 704内的碼單區塊係由資料棚^ 存取。根據本發明密碼單亓 ^供以供儲存邏輯電路 體的細節,將參照第八圖入和儲存微指令更具 口汉乐九圖加以討論。 請參照第八圖,:M:兔笛 703 1°^ 係產生回應一密碼指令的轉 =所述,一序列微指令 數個微指令,其得、由微處理器中^ f仃,以及-第1 如更新計數器、暫時儲存器^ c、示次運算’例 態位元於機器指定暫存器等。^一、—子态、測試並設定狀 資料、密碼參數以及輪^資料個,令提供錄巧 元產生鑰匙排程(或載入從記,匕‘^_兀並且指示密碼单 入並加密(或解密)輸入文字資7 _ u设的鑰匙排程)以載 料。-載人微指令提供給密碼單元輸出文字資 載入:密碼鑰匙或鑰匙排程=以組盤身欠 入文字資料並指示密碼單元開始一4fi、載, 微指令在暫存器攔位703之值 疋广馬運异。一載入 入一控制字組到其内部控制字組係^不密碼單元载 管線在暫存階段的一架構行 記憶體中儲存控制字組的位址暫存裔存取 成為-實體位址以供記憶體存取。位址 取控制字組、然後傳給密碼單電路攸快取掏 0 b 010指示密碼單元載人由 Η樣^ ’暫存器攔位值 文字資料,並且在載入之後開始指定的密 29 200531494 =字組,輸入資料由儲存在架構暫存器中所儲存的一暫存 器存取。值ObOlO指示載入由資料欄位7〇4所提供二 入資料給内部暫存器輸入q。载入到輸入4暫存^資 料不是輪入文字資料(當管線處理時)就是一初始向^。值 Ob^lO及Gbll\分別指示密碼單元載人—密碼輪匙或使 用者產生躲,,巾匙之較低及較高位元。根據本應 用,使用者係疋義成執行一特定功能或特定運算,^ 者可具體化成-應用程式一操作系統一機器或者= 人0 在-實施例中’暫存器攔位值〇Μ〇〇及〇 慮:密碼單—元有兩階段’藉此,可以管線處理 = 文字區塊育料。因此對管線處理相巴: 言’-第一載入,令執行提供一第一區塊的 料=輸入-1’接者執仃-第二載入微指令提供 免 的輸入文字貢料給輸入-〇,並且遂 弟—£塊 定的密碼運算。當-使用者產生始執行指 碼運算時,對應使用者產生;= 微指令係依設定路徑傳送給穷^數里的載入 入此錄匙排程中每-回碼早7^’此㈣單元指示載 在載入微指令中暫存器攔位7Q3其他所有的值係保 請參照第九圖’其為第七m妙六 暫存器攔位7〇3的值之表格。_;存子^令格式700 給密碼單元,以指示其提供所吝斗Α认曰7係發布(iSSUe 邏輯電路,儲存於記憶體中纟3暫㊣塊給儲存 供的位址。據此,本發明的轉譯邏路^^02, 文字區塊所發布之一儲存微指令係 二寺疋的輸出 文字區塊所發布之-儲存微指令之:、、、存、=應輸入 伋瞀存器攔位703 留 30 200531494 之值Ob 100係指示密瑀單元提供關聯其内& 存器給儲存邏輯儲存。輸出-〇的内容與輪邠的輸出-〇暫 供給輸入-0係相關聯。同理,參照暫存入文字區塊提 之内部輸出-1暫存器係與輸入文字資料提^位值〇b 101 關聯。據此,跟隨在鑰匙及控制字組資料載、給輸入-1相 個輸入文字區塊可以被管線輸送,係透過g入^後,複數 布密碼微指令载入·輪入-1、載入·輸入(馬單元依序發 指示密碼單元開始密碼運算)、儲存·輪出,入·輪入-〇也 -〇、載入·輸入-1、載入·輸入-〇 (開始下、儲存·輸出 塊運算)等等。 雨個輸入文字區 請參照第十圖,其為本發明指定密喝 控制字組1000格式的方塊圖。控制字組1广參數之範例 者程式設計於記憶體,並且在執行密碼運曾係由使用 組1000的指標提供給相稱微處理哭斤之刖,控制字 器。據此,當部分序列的微指令對應到:穷的·^構暫存 載人微指令被發布以指示微處理器去读二汐,々一 構暫存器、從記憶體(快取)恢復控制字組二 控制字組1000到密碼單元的内部控 以及載入 字組誦包含一保留(RSVD)攔位1001暫2匙= (KSIZE)欄位1002、一加密/解密(E g 一 ' ^^ϋ(ΚΟΕΝ),^ ;Tl〇〇T:"(^ ^ 1006 ^-^^(RCNT, 保留攔位1001所有的值係保 刚2的内^指示-用以完成加密或解密之㈣錄匙的 大小。在一=把例中,鑰匙大小欄位1〇〇2不是指示一 128位兀錄匙、-192位元鑰匙,就是指示—256位元 錄匙丄加”解密齡U)〇3指出密碼運算係加_運算或 指出役碼運鼻係解密運算。料產生攔位i,指示在記 31 200531494 憶體中係使用者產生之鑰匙排程或在記憶體中係單一密 碼鑰匙;如果為單一鑰匙時,微指令發布給密碼單元與密 碼鑰匙以指示單元根據演算欄位1006之内容所具體指 定的密碼演算以擴展鑰匙成為一鑰匙排程。在一實施例, 演算欄位1006之特定值具體指示資料加密標準演算 法、三重資料加密標準演算法或者進階加密標準演算法如 先前所述之討論。替代實施例可考慮其他密碼演算法,例 如 Rijndael Cipher、Twofish Cipher 等。回合計算欄 位1007的内容指示一數量的密碼回合,其根據具體指示 的演算法完成於每一輸入文字區塊。雖然上述提及的標準 指示每一輸入文字區塊固定前置數量的密碼回合,但回合 計算欄位1007允許一程式設計者從標準指示修改回合 的數量。在一實施例中,程式設計者可指定每一區塊從 0-15回合。最後,中間結果欄位1004指示是否一輸入 文字區塊的加密/解密,是根據演算欄位1006所指定之 密碼演算法,以回合計算攔位1007所指定回合的數量執 行,或者加密/解密是根據演算欄位1006所指定之密碼 演算法,以回合計算攔位1007所指定回合的數量執行, 而其最終回合的執行代表一中間結果而不是一最終結 果。熟悉該項技藝者可察知許多密碼演算法除了最終回合 的次運算之外係執行相同的次運算於每一回合。因此程式 設計中間結果欄位1004提供中間結果而不是最後結 果,藉此,允許程式設計者可核對演算法實現之中間的步 驟。例如··獲得增加的中間值以核對演算法實行,假設, 執行一回合的加密於一文字區塊,然後執行兩回合於相同 文字區塊,然後三回合等。提供可程式化回合及中間值結 果的功能可讓使用者檢查密碼執行、除錯以及達到改變鑰 匙結構及回合計數。 請參照第十一圖,其為本發明之一密碼單元1100的 32 200531494 較佳實施例方塊圖。密碼單元mQ包含—微 (m1Cro opcode register) U03 ’ 此微指令暫 透過一微指令匯流排1114接收密瑪微指人° 〇3 ^存微指令)。密碼單元11GG也包含 (control word register) 1104、一 笛一认 _ 存态 二—/二輸入(輸入-1)暫 鑰咗(鑰匙-〇)暫存器1107以及—筮—从外〜 弟
存器11〇8。資料透過一載入匯流排(1〇二餘二(=)J 供,暫存器11〇4-11〇8,如微指令暫存器U人1上提 入微指令内容所指定。而輸入_0與“入 J二, 算期間,致罐錄Μ字碼運 1101輕合到所有的暫存器1103_1108f23電路 „遺機存取記憶體(RAM) 110 以密 1101提供—暫停信號(stal 電路 ί結果給-第-輸出(輸出-0)暫存哭士提供區 出(輪出-1)暫存器111〇。輸出暫 第二輪 ,存匯流排1212將内容依指定ϋ ~ 10透過— 處理器中的相繼階段。密碼單元i 在一相稱微 區塊執行密碼運算時,致 的輸入文字 11〇9-111〇的資料。在一者力f/l儲存处輸出暫存器 :32位元大小,並且其餘:存器1103 位7L暫存器。 ▼评-1104-1110皆為128 暫存器=1,^’=^5料一起連續提供給微指令 或輸入暫存器二;:^”存器W、 1107-1108之_。來昭 々或鑰匙暫存器 中,控制字組藉由—載二微於C第,圖討論的實施例 戟入娀各令載入到控制字組暫存器 33 200531494 載入。當—鍮匙或鑰匙排私經由連續的載入微指令 此提供i指定的輪密碼输匙載入時’一載入微指令因 元密碼輪起ίϊϊ i/Hi107。當〆大於128位 暫存器11Π7 、载入微扣7因此提供給指定的鑰匙 匙―1暫並且連同一載入微指令提供給指定的鑰 連續载㈣載入時, 憶體1102 ίίί士載入且依序被放置在輸匙隨機存取記 字資料(如果、νΓ右2目4對應的密碼回合使用。隨此,輸入文 U06,如果:初始向量)载入到輸入]暫存器 到輸入q暫存匕:始向量,則經由-載入微指令载入 微指令指ΐί^η06ί輸入-0暫存器1105的1入 器1105 /1碼早70以载入輸入文字資料給輸入-〇暫存 資料勃」~並且開始在輸入4暫存器U05内的輪入文字 所It订您碼回合,其根據控制字組暫存器1104之内ί 、的參數使用在輸入q或在兩輸入暫存哭 始^ -1106 (當輸入資料係管線處理)中的初始向量。: f收到指定輸人-〇暫存器1105的载人微指令,區塊^ ·’、、邏^電路1101開始執行由控制字組内容所指定的二 碼運异。當單一密碼鑰匙要求擴展,區塊密碼邏輯電& u〇i產生鑰匙排程中的每一鑰匙並將以儲存在鑰匙隨機 存取記憶體1102。姑且不論是否由區塊密碼邏輯電路 11〇1產生一餘匙排輕戒者疋從記憶體中載入錄匙排程, 第一回合的鑰匙係快取儲存於區塊密碼邏輯1101中以 使得第一區塊密瑪政合可以不用存取鑰匙隨機存取記憶 體1102而處理。〆俜初,始化後,區塊密碼邏輯電路 繼續執行指定的密旛逢#於一或多個輪入文字區塊直到 運算完成;且連續從鐵匙存取記憶體1102類取回合 輸匙如所應用的密痛濟异要求。密碼料1100執行 34 200531494 一指定區塊密喝運算 入文字區塊透4 二文Γ,塊,而相繼的輪 密。當一儲存微扑八热广^载入及儲存微指令加密/解 ώ -0 ^ It * -1 ) ^ΓΛ^Β 5 ^^ ^ ^ ^ t # (#1 ^ 顯示暫停信號iHr/t’/1區塊密碼邏輯電路1101 相對應之輸出暫;
存i llitli日守會顯示暫停信號1113,但由於輸入暫 瑪i元linn ^允許輸入文字區塊的緩衝,因此透過密 載入及儲存❹有區塊管線處理係藉由順序化 她s 7,使得在隨後輪入文字區塊的密碼運算 w疋在要未儲存資料於輸出暫存器1109-1110時執行。 〜狄照第十二圖,其為本發明執行有關進階加密標準 心、/毪碼運异之一區塊密碼邏輯電路12〇〇實施例的 方塊圖&塊也、碼邏輯電路12qq包含一回合引擎(r〇un(j engine) 1220,此回合引擎1220透過匯流排 1211-1214及匯流排1216-1218耦合到一回合引擎控 制荔(round engine controller) 1210。回合引擎控制器 1210包含一儲存邏輯電路(Store logic) 1230,並且存取 一微指令暫存器(micro instruction register) 1201、控 制字組暫存器(control word register) 1202、第一餘匙 (鑰匙-〇)暫存器1203以及第二鑰匙(鑰匙-1)暫存器1204 以存取鑰匙資料、微指令以及所指示密碼運算的參數。輪 入暫存器1205-1206的内容提供給回合引擎1220並且 回合引擎1220提供相對應輸出文字給輸出暫存器 1207-1208。輸出暫存器1207-1208透過匯流排 1216-1217也耦合到回合引擎控制器1210,以致能回 合引擎控制器存取每一相繼密碼回合的結果,而此結果係 透過ΝΕΧΉΝ匯流排1218提供給回合引擎1220下一密 35 200531494 碼回合。鑰匙隨機存取記憶體(未繪出)中的密碼鑰匙係透 過鑰匙隨機存取記憶體匯流排1215存取。加密/解密匯 流排(ENC/DEC bus) 1211之信號指示回合引擎利用次 運算執行不是加密(例如S-Box)就是解密(例如反向 S-Box)。回合計算匯流排(rndc〇n bus) 1212的内容 指示回合引擎1220執行不是一第一進階加密標準回 合、一中間進階加密標準回合就是一最後進階加密標準回 合。鑰匙匯流排1213用以提供每一回合鑰匙給回合引擎 1220在其對應的回合執行時。 回合引擎1220包含第一錄匙互斥或(x〇R)邏輯電路 1221 ’此第一餘匙互斥或邏輯電路1221耗合到一第一 暫存器(暫存-〇) 1222,此第一暫存器1222耦合到S_B〇x 邏輯電路1223,此S-Box邏輯電路1223耦合 (Shift Row)邏輯電路1224,此移列邏輯電路12 到一第二暫存器(暫存1225,此第二暫存器122^二 合到混欄(Mix Col_)邏輯電路1226,錢 j 1226耦合到一第三暫存器(暫存_2) 1227。第一 或邏輯電路1221、S-Box邏輯電路1223 ^ 路1224以及混攔邏輯電路1226係用以執 入文字資料,像是具體指定料前討論的 FIPS標準。混攔邏輯電路1226在中間回人‘力二$準 使用藉由錄匙匯流排1213所提供的回合餘^ 配置以執行進階加密標準互斥或功能於輪入 二寸加 匙互斥或邏輯電路1221、S-B0X邏輯電路12=弟一錄 邏輯電路1224以及混攔邏輯電路1226在— 、―移列 密匯流排(ENC / DEC bus) 12 i χ的狀態指=加=^ 用以執行其相對之反向進階加密標準次運 間。熟悉該項技藝者可察知中間回合資料係 暫存器㈣2内容所指定的具體區塊加密 36 200531494
Ξ二。初始向量資料(如果要求)透過NEXTIN 匯抓排1218提供給回合引擎122〇。 -第2=2示2實施例中’回合引擎分為兩階段: (暫存-1) litΪ:暫存器(暫存-〇)1222與第二暫存器 第一暫存态(暫存-2) 1227。中間回合資料同牛」 “Γίίί-出階段間管線處理。當一區塊的輪又ί “ 關聯的輸出資料放置於相對應輸出暫 1230 _ 回應到一儲存微指令,儲存邏輯電路
=顯不儲存匯流排1214之信號,以通知 J !220指定輸出暫存器12〇7_12()8 會出)。如果隨後的輸入文字區塊已以; ,5_12!6 ’且當回合引擎1220正在處理隨後 冲,入文字區塊時,輪出暫存器12〇7_12〇8則可以 =。根據本發明之更具體描述’如何安 資S區塊管線處理有效率,將更具體參照ΪΪ 一圖到第十六圖加以討論。 十 穷碼:參ϊϋΐ:其為本發明微指令流之-實施例對 ^碼早兀之一早階貫施例的表格1300。如上述,一于匕 ϊ:ίί一亨τ以處理—輸入文字區塊。然而,此單階i 圖)係配置於相同方法,也就是當回以;j 暫存器允許緩‘ J密碼運算時,輸出暫存⑽5=^ 輸入資料區塊的輸出區塊儲存。/本/f致月匕對4目所 並沒有先前職及有令流 就本發明教示的目的而言,—狀《令載&“ 37 200531494 於〇二執/于需要兩個管線時脈週期。— 輸入暫存器〇,回合引動二 但輪入資料#λ 合引擎須2〇個時脈比較目的 期間,一館存指令錯存.輸出_0係的輪出區塊Γ, 入並且回人引筚二然後在兩個週期後,/入~0在 的輪出資i r抽汗〇執行,因此在週期日士 =入資料载 吉if =枓區塊。相對應的儲存指令儲存/產生一對應 ”的輸出資料區塊備妥,因此^出-0係暫停 !儲^ =的載入指令載入.輸入-0係暫停在先2i完成儲 m之後直到儲存完成,因此在週存指 /又有載入隨後的輸入文字區塊。 巧功26之前 所述,這種载入-儲存-載入-儲存微指入Us & °^ ΐί 鬼執仃在碼運异而g,每個區塊需要24週期。、 請芩照第十四圖,其為本發明微指令流程之無 例對密碼單元之單階實施例的表格1400。對比i日/第= 二論的微指令流程’此替代微指令流程實施;利用 了早階密碼單元的有利特性。就比敉目的而言, 引擎執行載入指令載入.輪入_0、儲存指令儲存輪出0 = 時脈週期的數目與參照第十三圖所討論的 根據此替代微指令流實施例,當/第一栽入指八載入· =入j在週期〇提供給密碼單元,然後在兩個週& ,入貧料載入並且回合引擎開始執行,因此在週期22時 /生一對應的輸出資料區塊。然而,因為輸入資 緩 衝,因此轉譯邏輯電路在週期4完成發布一第二載入指令 38 200531494 載入·輸入-0以載入一隨後的輸入文字區塊。在隨後輸入 文字區塊執行的密碼運算係暫停直到一對應第一輸入文 字區塊的輸出文字區塊產生(週期22),但是隨後的輸入文 字區塊在週期4已緩衝儲存,因此其密碼運算可以在週期 23開始並在週期42完成。對應第一輸入區塊的輸出文 字之儲存指令儲存.輸出-0係由轉譯邏輯在隨後區塊載入 指令載入·輸入-0之後所提供。此儲存指令儲存·輸出-〇 係暫停直到相對應的輸出資料區塊在週期22備妥,但在 週期24完成儲存。一隨後的載入指令載入·輸入-0係暫 停在先前儲存指令儲存.輸出-〇之後直到儲存完成,因此 在週期26之前沒有載入隨後的輸入文字區塊。藉由回合 引擎而將兩週期轉入隨後輸入文字區塊的處理。藉由最初 執行兩個載入,這種微指令順序可以得利於密碼單元先前 所提及的特性,因此增加多區塊之每個區塊的產量成20 週期。儲存一輸出區塊所需的這兩個時脈週期係有效合併 於一隨後輸入文字區塊密碼運算的執行。此外,載入隨後 輸入文字區塊所需的的兩個週期係合併於目前輸入文字 區塊密碼運算的執行期間。 請參照第十五圖,其為本發明微指令流之一實施例對 密碼單元之兩階實施例的表格1500。兩階實施例係具體 討論對照於第十二圖,並且其可以在回合引擎的週期處理 兩個相繼的輸入資料區塊。如同表格1300的單階實施例 流程,表格1500的流程在密碼單元中並未從其特徵中獲 利以合併時脈週期。就比較目的而言,透過回合引擎執行 載入指令載入·輸入-0、儲存指令儲存·輸出-0以及密碼運 算之時脈週期的數目與參照第十三圖、第十四圖所討論的 實施例係相同。如上所述,暫存器1執行載入指令載入· 輸入-1係僅僅載入輸入資料至輸入暫存器1 ; 一載入.輸 入-0暫存器執行載入輸入文字資料至輸入暫存器0,並且 39 200531494 透過回合引擎初始處理在輸入暫存器〇及1内的輸入資 料。因為回合引擎的發動(staged),因此完成在兩輸入暫 存器中輸入資料的加密/解密僅須20個時脈週期。 因此,轉譯邏輯發布一載入.輸入-1微指令跟隨一載 入·輸入-0指令。載入·輸入-1在週期2完成而載入·輸入 -0在週期4完成,並且回合引擎在週期5開始處理兩輸 入文字區塊且在週期24完成。兩隨後的儲存指令儲存· 輸出-1、儲存·輸出-0係暫停直到週期24待其對應的輸 入資料文字區塊處理完成,在週期24暫停解除,其允許 在週期28完成儲存。因為沒有其他輸入資料缓衝儲存, 因此兩隨後載入指令載入·輸入-0、載入.輸入-1係暫停直 到儲存完成。因此隨後輸入文字區塊的載入發生於週期 29-32之間,並且由回合弓丨擎在週期33-52之間處理這 些區塊。 相同於參照第十三圖單階密碼單元所討論微指令的 載入-儲存-載入-儲存順序’表格15的載入-載入-儲存-儲存-載入-載入-儲存-儲存順序,並沒有從支援有效率資 料區塊處理之密碼單元的特性中取得好處。結果,在兩階 密碼單元執行密碼運算於多資料區塊,每兩個區塊需要 28週期。 請參照第十六圖,其為本發明微指令流之另一實施例 對密碼單元之兩階實施例的表格1600。對比參照第十五 圖所討論的微指令流,此表格1600之替代微指令流實施 例利用了兩階密碼單元的有利特性。就比較目的而言,透 過回合引擎執行載入指令載入.輸入-0、儲存指令儲存.輸 出-0以及密碼運算之時脈週期的數目與參照第十五圖所 討論的實施例係相同。 根據此替代微指令流實施例,當一第一載入指令載入· 200531494 入指令載2 提供給密碼單元以及跟著提供一第- φ 並且回合引擎開始執行,因此在週期上士 貝料戴入 f出貢料區塊。然而,因為輸入資料可以J衝對應的 Γ二載輪二二隼二 ίίίί,入. 別對ΐ"兩第t文字區塊執行的密碼運算係暫停直s i栽 應兩第—輪入文字區塊的兩輸出 二直到兩分 因ί’以f運的,入文字區塊在週期已緩衝 =期 六认》 輪入文字區塊的兩輪出文牢夕紗七… ^ 、儲存.輪出_〇係由轉譯邏輯電路在P彳1 令儲 2 J载入.輸入]、載入.輸入·〇 後區塊載 ίίί·,出+儲存.輸出-〇係暫停直至仏 二;3期24備妥’但在週期28完成』5 =資 i初執週期轉入隨,輸入文字區塊的處理:ί: 么 個載入,這種微指令順序可以得刹认6 曰由 2 及儲的广二生,因此增加多區塊之每個區塊Γ】ί ί 併於 ^ i /tt 1 你後輸入文字區塊密碼運算的執行。此休2 兩於雨入文字區塊所需的的四個週期係合併於目隨 兩輸入文字區_碼運算的執行期間。°㈣目則輪入 =本發明及其目的、特徵與優點已詳細 二,例也應包含於本發明。例如:本發明苗 f二 ;术構之實施例討論長度’然而這些討論已 ii日日因4 χδ6架構容易理解且提供足夠的以Ϊ :’例如:PowerPC、刪及諸如此類;集:f的:施 新的指令集架構。 貝寺此外退有全 41 200531494 本發明更包含電腦系統中微理器外其他元件之 運算的執行,例如,根據本發明的密碼指令可以容碼 應用在一密碼單元的〆實施例,此實施例並非如微處理j 部分相同的整合電路,其執行方式如部分電腦系 ^ 明之如此的實施例係為了併入圍繞在微處理器、的曰曰, 北橋、南僑),或當一處理器用於執行密碼運算日f,= 密碼指令係由主要微處理器移轉(hand off)給此哭7 本發明可應用於内嵌控制器、工業控制器、信號處理;、 陣列處理器以及任何相似處理資料之裝置。本發明也;人 施例僅含有執行密碼運算所必需的元件。如此的 執行密碼運算’也確實提供低成本、低電源,^ 糸統中的加密/解密處理器。為求簡明,本發明將 沒二9代的處理元件參照成上述之處理器。 外,雖然本發明提及128位元區塊,但是許多不 智大小可以透過改變暫存器的大小而被應用,其中 子裔傳运輸入資料、輸出資料、鑰匙以及控制字組。 玄挪^且,雖然本應用顯著以資料加密標準、三重資料加 以及進階加密標準演算法為其特徵,但本發明也包 夕人知的區塊密碼演算法,例如:MARS密碼、 贫、扯1雄碼、TW〇fiSh密碼、Blowfish 密碼、Serpent RC6密碼。足以理解的是,本發明提供在微處 ^用,塊密碼的褒置及支援 塊 在碼運异可透過單一指令的執行而引動。 以執ί i塊力11塊密碼演算及其相關技術 形式的密碼也包但是除了區塊密碼之外其他 是,提供—單―指令應用範圍之内。可足以觀察的 理器執行-密碼運算,=,使用者可指示一相稱的微處 例如:加密或解密,其中微處理器 42 200531494 包含一密碼單元,此密碼單元依指示完成指令所指定的密 碼功能。 並且,在此所討論的回合引擎提供一兩階裝置可管線 處理兩區塊的輸入資料,但其他實施例也可考慮多於兩階 段裝置。階段的分配對支援更多輸入資料區塊的管線處 理,將發展協調相稱微處理器中其他階段的分配。 最後,雖然本發明具體討論支援複數個演算法之一單 獨密碼單元,但是本發明也提供理解在一相稱微處理器中 與其他執行單元並列操作耦合的多密碼單元,而每一多密 碼單元係配置用以執行一具體指定的密碼演算,例如:一 第一單元係配置用以執行進階加密標準演算法、一第二單 元係配置用以執行資料加密標準演算法等。 以上所述僅為本發明之較佳實施例而已,並非用以限 定本發明之申請專利範圍;凡其他為脫離本發明所揭示之 精神下所完成之等效改變或修飾,均應包含在下述之申請 專利範圍。 【圖式簡單說明】 第一圖係現今密碼應用的方塊圖; 第二圖係執行密碼運算技術的方塊圖; 第三圖係本發明實施例中執行密碼運算之微處理器裝置 的方塊圖; 第四圖係本發明實施例中之基元(atomic)密碼指令實施 例的方塊圖; 第五圖係第四圖之基元密碼指令區塊加密模式欄位值之 範例的表格; 43 200531494 ίί圖係本發明在Χδ6相容微處理器中之密碼單元的方 指令‘I:方、:ί撻處理”指示密碼次運算之範例微 第八圖係第七圖之載人微指令暫存攔位值格式的表格,· 第九圖係第七圖之儲存微指令暫存攔位值格式的表格; 本發明指定密碼運算參數之控制字組格式:例 第十一圖係本發明之一較佳實施密碼單元的方塊圖; 第十二圖係本發明執行有關進階加密標準(Α Ε管 碼運算之一區塊加密邏輯電路實施例的方塊圖;八山 第十三圖係本發明微指令流之一實施例 階實施例的表格; ^早疋之早 第十四圖係本發明微指令流之另一實施例對密碼 單階實施例的表格; 之 第十五圖係本發明微指令流之一實施例對密 階實施例的表格;以及 早兀之兩 第十六圖係本發明微指令流之另一實施例對密碼一 兩階實施例的表格。 70 【主要元件符號說明】 100電腦密碼應用之方塊圖 101、102、103電腦工作站 104 筆記型電腦 105 區域網路 44 200531494 106 108 110 200 201 203 204 205 207 209 211 300 301 303 305 307 309 311 313 315 317 加密/解密應用程式 網路檔案儲存裝置107、m路由器 無線網路路由器109無線網路 廣域網路 112 操作系統 岔碼運算執行技術之方塊圖 微處理器 202 應用記憶體 206 加密應用程式 208 初始向量 210 明文 器之方塊圖 302 擷取邏輯電路 304 微指令仲列 306 載入指令 308 控制字組指標 310 初始向量指標 312 輪出文字指標 314 载入邏輯電路 316 密碼單元 318 寫回邏輯電路 岔碼錄匙產生應用程式 錄匙排程 解密應用程式 密碼參數 密文 執行密碼運算微處: 微處理器 轉譯邏輯電路 儲存指令 暫存器組 輪匙指標 輸入文字指標 區塊計數 資料快取 儲存邏輯電路 45 200531494 319 記憶體匯流排 320 操作系統 321 糸統記憶體 322 密碼指令 323 密碼控制字組 324 初始密碼錄匙或錄匙排程 325 初始向量 326 輸入文字 327 輸出文字 328 執行邏輯電路 400 密碼指令 401 選項前置欄位 402 重複前置欄位 403 運算碼欄位 404 區塊密碼模式攔位 500 區塊密碼模式欄位值之表格 600 微處理器 601 擷取邏輯電路 602 轉譯邏輯電路 603 轉譯器 604 微碼唯讀記憶體 605 暫存階段 606 定址階段 607 載入階段 608 執行階段 609 、611、613、615 微佇列 610 整數單元 612 浮點單元 614 多媒體延伸集單元 616 串流延伸集單元 617 密碼單元 618 儲存階段 619 寫回階段 620 載入匯流排 621 暫停信號匯流排 622 儲存匯流排 46 200531494 624 626 628 630 632 700 702 800 90010001002 1004 100611001102 1104 11071111 11131200 旗標暫存器 中斷邏輯電路 枝器特殊暫存号 特试控制暫存器 執行邏輯電路 微指令 資料暫存器攔位 625 X位元 627 中斷信號 629 Ε位元 631 D位元 634 匯流排 701 微運算碼攔位 ^ 703暫存器攔位 載入微指令暫存器攔位值之表格 儲存微指令暫存_位值之表格 控制字組格式 鑰匙大小攔位 中間結果攔位 演算攔位 密碼單元 鑰匙隨機存取記憶 控制字組暫存器 、1108輪匙暫存器 載入匯流排 暫停信號 區塊密碼邏輯電路之方塊圖 1001保留攔位 1003加密/解密攔位 1005鑰匙產生攔位 1007回合計算攔位 1101區塊密瑪邏輯電路 體1103微指令暫存器 1105、1106輸入暫存器 1109、1110輸出暫存器 U12儲存匯流排 Η14微指令匯流排 1201微指令暫存器 1202控制字組暫存器 47 200531494 1203、1204擒典暫存器 1207、1208輸出暫存器 1211加密/解密匯流排 1205、1206輸入暫存器 1210回合引擎控制器 1212回合計算匯流排 m3鑰匙匯流排 1214儲存匯流排 1215鑰匙隨機存取記憶體匯流排 1216、1217 匯流排 1218 NEXTIN 匯流排 132〇回合引擎 S-ΒΟΧ邏輯電路 第二暫存器 第三暫存器 1221第一鑰匙互斥或邏輯電與 1222第一暫存器 122 12: 1224移列邏輯電路 1226混攔邏輯電路 1230儲存邏輯電路 1500 1600 後碼單元兩階實 始、瑪單元兩階實 格 施例之一微指令流實施例之表格 施例之另一微指令流實施例之表 48