專利名稱:可設定密碼金鑰大小的微處理器裝置及方法
技術領域:
本發(fā)明是關于微電子領域,更特定是關于一種用以在一計算裝置中執(zhí)行密碼運算的裝置及方法,其允許密碼金鑰的大小用以在指令階層被程式化。
背景技術:
早期的電腦系統(tǒng)與其它電腦系統(tǒng)是以獨立方式運作,因為其上執(zhí)行的應用程式的所需輸入資料(資料即數(shù)據(jù),以下均稱為資料)非位于其中則為應用程式設計者在執(zhí)行時提供之。當應用程式被執(zhí)行時,其將產(chǎn)生輸出資料,且輸出資料一般為書面輸出資料形式或被寫至磁帶、光碟或電腦系統(tǒng)的其它類型大量儲存裝置的檔案形式。接著,輸出資料檔案可作為同一電腦系統(tǒng)中下一應用程式的輸入檔案;或當輸出資料檔案是先存于一可移動式或可攜式大量儲存裝置中時,其甚至可作為另一不同但相容的電腦系統(tǒng)中應用程式的輸入檔案。在這些早期電腦系統(tǒng)上,逐漸了解保護敏感資訊的需求,并且在其他資訊安全措施中,密碼程序是被發(fā)展及利用來保護未授權揭露的敏感資料。一般來說,這些密碼程式對存于儲存裝置的輸出資料加以加密及解密。
不久后,使用者開始發(fā)現(xiàn)網(wǎng)路電腦具有共用資訊的優(yōu)點,因此網(wǎng)路架構、作業(yè)系統(tǒng)及資料傳輸協(xié)定齊步發(fā)展,使得資料不僅可以共享,資料的共享更具突出的功能。舉例而言,現(xiàn)今的電腦工作站使用者普遍可取得不同工作站或網(wǎng)路檔案伺服器上的檔案,或可使用網(wǎng)際網(wǎng)路而取得新聞及其它資訊,或可在眾多電腦之間來回發(fā)送及接收電子訊息(即電子郵件),或可與販售商電腦系統(tǒng)相連而提供信用卡或銀行業(yè)務資訊以向該販售商訂購產(chǎn)品,或可在餐廳、機場或其它公眾場合使用無線網(wǎng)路而進行上述任何一項的動作。因此,敏感資料的免于未經(jīng)授權公開的必要性不言可喻,使用者在使用電腦期間不得不對其敏感資料進行保護之例亦不勝枚舉。由各種新聞標題不難得知,當前關于電腦資訊安全的種種駭人聽聞的議題皆浮上臺面,如垃圾郵件、網(wǎng)路駭客、身份竊取、反向工程、網(wǎng)路詐欺及信用卡詐騙等與民眾相關的種種手段的出現(xiàn)等。而因為這些預謀的網(wǎng)路恐怖主義,以不正的手段入侵個人隱私范圍的影響,故相關權責單位已以各項新法律、嚴厲條款及公眾教育等條款反擊之;然而,該等因應措施皆未在遏阻此一電腦資訊危機上達到有效成果,因此該項過去僅為政府、金融機構、軍事單位及間諜人士所關注的議題,如今已成為一般利用家用電腦而讀取電子郵件或進行帳戶交易的民眾所不得加以警戒的一大問題。電腦網(wǎng)路從業(yè)技術人員亦不難理解,現(xiàn)存大小公司在商業(yè)交易上皆需投注相當大部份的資源在其私有資訊的保護上。
在訊息安全范疇方面,已經(jīng)逐漸發(fā)展出一些技術與裝置可以讓訊息只能夠會被特定的對象所接收了解,即所謂的密碼學(cryptography)。當特別應用于保護資訊時,其為在電腦之間儲存或傳送時,加密使用于傳送敏感的訊息,已知的如“明文”(cleartext)或“本文”(plaintext)至不能了解的形式,例如“密文”(ciphertext),明文轉換至密文的傳送過程稱“加密(encryption)”、“譯成密碼(enciphering)”、或“密碼化(ciphering)”,且密文轉換至明文的傳送過程稱“解密(decryption)”、“解除密碼(deciphering)”、或“轉換密碼(inverse ciphering)”。
在密碼范疇中,建立數(shù)個步驟及規(guī)則,來允許使用者不需要高度知識或努力來完成密碼運算,且使這些使用者能夠傳送或以其他方式如加密形式提供其訊息給其他使用者。順著加密訊息,傳送者一般提供接受者一個不能使接受者解除加密訊息的“密碼金鑰”,因此接受者不能夠移除或以其他方式增加未加密原始訊息的存取。一種技術將這些步驟或規(guī)則采取密碼保護、數(shù)學運算及特別設計的應用程式形式將高敏感度訊息加密或解密。一些演算法類別使用于將資料加密或解密。在此提及的第一類演算法類別(如公共金鑰(public key)密碼演算法RSA演算法)利用兩種密碼金鑰(一種公共金鑰及一種私人金鑰(private key))來將資料加密或解密。提及一些公共金鑰演算法,一種公共金鑰利用來傳送給接受者的資料加密。在使用者公共金鑰及私人金鑰兼有一個數(shù)學演算關系,接受者必須利用其私人金鑰將傳送資料解密以恢復資料。雖然此類密碼演算法在今日廣泛被使用,但加密及解密演算法速度仍然過慢,即使只加密與解密少量資料。第二類演算法,如對稱金鑰演算法(symmetric key algorithms),提供相當程度的資料安全,且速度更快。這些演算法稱為對稱金鑰演算法,因為其使用密碼金鑰于加密及解密訊息。有三種公共習知的主要密碼金鑰演算法資料加密標準(data encryption standard,DES)演算法、三重資料加密標準(TripleDES)演算法,以及進階加密標準(advanced encryption standard,AES)演算法。因為這些演算法強度保護高敏感度資料,其現(xiàn)在由美國政府及其代理機構使用。但可以預期,這些技術中的至少一個將在未來成為商業(yè)或私人傳送標準。根據(jù)這些對稱金鑰演算法,明文及密文是分別被區(qū)隔于一個特殊的大小來加密或解密。舉例,在128位元大小區(qū)間的進階加密標準完整密碼演算法,且使用128、192及256位元的密碼金鑰。其他對稱金鑰演算法允許192及256位元資料組的進階加密標準。提及區(qū)塊加密運算,一種1024位元明文訊息為如八個128位元組加密。
全部的對稱金鑰演算法利用相同形式的子運算,將一明文區(qū)塊加密。且提及一般更常使用的對稱金鑰演算法,一種最初密碼金鑰擴展多種金鑰(如一種“金鑰目錄”),每一個如符合子運算密碼“回合”(round)在明文區(qū)塊中完成。舉例,金鑰目錄的第一金鑰使用來完成在明文區(qū)塊上次運算的第一密碼回合,其中第二密碼回合利用金鑰目錄的第二金鑰來產(chǎn)生第二結果。一種特定數(shù)量的次單元回合被完成來產(chǎn)生一個密文自身的最終回結果。進階加密標準演算法的每一回合中的子運算,尚有次位元(或S-box)、移列(ShiftRows)、混欄(MixColum)、加入回合鍵(AddRoundKey)等術語。每一回合期間,一種密文區(qū)塊解密完成,除了完成密文輸入轉換密碼以及轉換子運算(如混欄、移列),每一回合最終結果為明文區(qū)塊。
資料加密標準及三重資料加密標準演算法使用不同規(guī)格的子運算,但子運算與進階加密標準演算法類似,因為子運算將明文區(qū)塊轉換成密文區(qū)塊時是以類似方式為之。
在多重連續(xù)測試組上完成密碼操作,全部對稱金鑰運算利用相同的模式。這些模式包括電子密碼書(electronic code book、ECB)模式、密文區(qū)塊串列(cipher block chaining、CBC)模式、密文回授(cipher feedback、CFB)模式、及輸出回授(output feedback、OFB)模式。在子運算完成期間,一些模式利用一種附加初始化向量且一些使用完成于第一明文區(qū)塊加密第一位置的密文輸出,如一種附加輸入至完成于第二明文區(qū)塊的加密第二位置。更多的相關技術細節(jié),可以參見Federal Information Processing StandardsPublication 46-3(FIPS-46-3),1999年10月25日,其詳細討論了資料加密標準、三重資料加密標準;以及參見FIPS-197,2001年11月26日,其對進階加密標準作了詳細的解釋。前述的標準規(guī)則是由國家標準科技研究所(National Institute of Standards and Technology,NIST)頒布及主張。此外,個別的指令、白皮書、套裝工具及對策可以參考國家標準科技研究所的電腦安全應變中心(CSRC),網(wǎng)址為http//csrc.nist.gov/。
熟習該項技術者皆能夠了解多種應用程式可在得以執(zhí)行密碼運算(密碼及解密)的電腦系統(tǒng)上被執(zhí)行,事實上某些作業(yè)系統(tǒng)(如Microsoft、WindowsXP、及Linux等)即以密碼相關原始形式提供直接的密碼及解密服務。然而,本案發(fā)明人已觀察得知目前的電腦密碼相關技術在某些層面上仍顯不足,讀者可參閱圖1即可了解不足之處,其不足之處并在后文中有所討論。
請參閱圖1所示,是一說明現(xiàn)今電腦密碼應用技術的方塊圖。方塊圖100顯示一第一電腦工作站101及一區(qū)域網(wǎng)路105相接,一第二電腦工作站102、一網(wǎng)路檔案儲存裝置106、一第一路由器107或其他與廣域網(wǎng)路(WAN)110如網(wǎng)際網(wǎng)路及一個無線網(wǎng)路路由器108如IEEE標準802.11形成的介面亦與區(qū)域網(wǎng)路105連結。一膝上型電腦104經(jīng)由一無線網(wǎng)路109與無線路由器108以介面相接,一第二路由器111則在廣域網(wǎng)路110的另一點上提供與一第三電腦工作站相接的介面。
如前文中所略為提及的,現(xiàn)今使用者在工作期間正面臨嚴重的電腦資訊安全性問題。舉例而言,在現(xiàn)今多任務作業(yè)系統(tǒng)控制下,工作站101的使用者可同時執(zhí)行多項工作,且每一項工作皆需加以密碼運算。工作站101的使用者需執(zhí)行一加密/解密應用程式112(不論應用程式是整合于作業(yè)系統(tǒng)中或為作業(yè)系統(tǒng)所喚起執(zhí)行皆然),以將其工作站101上的檔案儲存至網(wǎng)路檔案儲存裝置106中。在執(zhí)行檔案儲存的同時,使用者可將一加密訊息傳送予一在工作站102的第二使用者,第二使用者同樣需要執(zhí)行加密/解密應用程式112,其中加密訊息的提供可為即時(如一同步訊息)或非即時者(即電子郵件)形式。此外,使用者可在工作站103透過廣域網(wǎng)路110而使用或提供其金融資料(如信用卡號及金融交易等)或其它形式敏感資料。當走出公司進入任何一個在區(qū)域網(wǎng)路105上的分享資源101,102,106,107,108,109工作站101,使用者使用第三電腦工作站103可代表家用電腦或遠距電腦103。每一個前述的動作需要一個符合執(zhí)行加密/解密操作112的例子。此外,無線網(wǎng)路109現(xiàn)在常態(tài)性的提供于咖啡店、機場、學校及其他公共場所,因此激起了筆記型電腦104使用者對他/她的訊息傳送到/接收自其他使用者,和經(jīng)由無線網(wǎng)路109至無線路由器108加密或解密所有訊息的即時加密/解密的需求。
習知技術的技術人員可以了解,每一個上述活動都需要在工作站101-104上做密碼運算,也就相應有執(zhí)行一個立即的加密/解密操作112的需求。因此,電腦101-104進一步可能同時完成數(shù)百個密碼運算。
無論如何,存在一些在電腦系統(tǒng)101-104上執(zhí)行至少一個以上立即的加密/解密操作112而完成密碼運算的方法限制。舉例而言,經(jīng)由一個軟件程式完成一個前述功能相對比經(jīng)由硬體完成相同功能執(zhí)行慢。每一個加密/解密操作112都需要一段時間,并且正在電腦101-104上執(zhí)行的現(xiàn)行程式可能在這段時間內(nèi)必須暫停執(zhí)行,且密碼操作(如明文,密文,模式,金鑰等)參數(shù)必須通過操作系統(tǒng)至加密/解密操作112,執(zhí)行密碼運算。且因為密碼運算必須包括特殊組別資料幾回子運算,加密/解密操作112執(zhí)行包括執(zhí)行多個電腦延伸指令,因此全部系統(tǒng)操作速度有不利的影響。如一般習知技術人員所能查覺,在MicrosoftOutlook傳送一個小的加密電子郵件會較傳送一個未加密電子郵件慢5倍。此外,目前的密碼相關技術因作業(yè)系統(tǒng)的介入而有延遲,大部份的應用程式不提供整合式的金鑰產(chǎn)生或加密及解密元件(components),他們執(zhí)行作業(yè)系統(tǒng)的元件或內(nèi)嵌應用程式以完成這些任務。而作業(yè)系統(tǒng)是按照其他正在執(zhí)行應用程式的需求及中斷進行調度。再者,本案發(fā)明人已提及現(xiàn)今電腦系統(tǒng)101-104上密碼運算的完成非常類似微處理器中使用專用浮點單位前的浮點數(shù)學運算;早期的浮點運算是以軟件完成,故其執(zhí)行速度相當緩慢,經(jīng)由軟件所為的密碼運算亦是令人無法接受地緩慢。隨著浮點技術的進一步發(fā)展,浮點指令是在浮點共處理器中執(zhí)行,浮點共處理器執(zhí)行浮點運算的速度遠快于以軟件方式執(zhí)行者,但如此卻也增加系統(tǒng)的成本。同樣地,現(xiàn)今的密碼共處理器以插卡或外部裝置的形式出現(xiàn);當以外部裝置形式出現(xiàn)時,密碼共處理器是經(jīng)由平行埠或其它介面匯流排(如USB)(匯流排即總線,以下均稱為匯流排)以介面與一主處理器相接。當然,共處理器確能使密碼運算遠快于純軟件執(zhí)行者,但密碼用共處理器增加了系統(tǒng)設置的成本,并需要額外的電源并降低了系統(tǒng)的整體可靠度。另外,密碼用共處理器的執(zhí)行不能防止窺探,因為資料通道不與主微處理器處于同一晶片之故。
因此,本案發(fā)明人了解到現(xiàn)今的微處理器需要有專用密碼相關硬體的存在,以使一需加以密碼運算的應用程式可令微處理器經(jīng)由單獨的、基本單元密碼指令電路指示微處理器執(zhí)行密碼運算,而密碼指令電路提供至少一個密碼指令。此外,密碼指令亦以在應用程式中具有優(yōu)先被使用權為更佳,且專用密碼硬體以與現(xiàn)今微處理器的常用架構相容為更佳。同時密碼硬體和相關密碼指令要提供與先前作業(yè)系統(tǒng)和程式的相容的方式。最主要的是提供一種執(zhí)行密碼運算的裝置和方法,使有效抵御未授權的監(jiān)聽,并能支援多種密碼演算法,支援對在其中實施的特殊密碼演算法進行驗證和測試,允許使用者提供的金鑰和自行產(chǎn)生的金鑰,支援多重的資料塊大小和金鑰長度,提供可編程的區(qū)塊加密/解密模式,即如電子密碼書模式、密文區(qū)塊串列、密文回授模式和輸出回授模式等,并且在使用上述可編程區(qū)塊加密/解密模式時能夠對大量資料有效執(zhí)行多種資料區(qū)塊大小及多種位元大小的密碼金鑰。
在現(xiàn)有技術中微處理器內(nèi)缺乏獨立的處理密碼加密及解密的硬體裝置,而是經(jīng)由軟件或借用微處理器內(nèi)浮點運算單元或利用外部裝置如經(jīng)由平行埠、或USB等其他介面匯流排將微處理器相接的密碼用共處理器,來作金鑰的加密及解密運算。但是,經(jīng)由軟件來做加密及解密運算執(zhí)行速度相當緩慢;借用微處理器內(nèi)浮點運算單元來做加密及解密運算會增加系統(tǒng)成本亦會拖累系統(tǒng);采用外部裝置的密碼用共處理器除了增加系統(tǒng)設置成本之外,亦需額外電源并降低系統(tǒng)整體可靠度,另外,該密碼用共處理器的資料通道不與主微處理器處於同一晶片,故其執(zhí)行不能防止窺探,保密性不足。
發(fā)明內(nèi)容
本發(fā)明的目的在于,提供一種新的可設定密碼金鑰大小的微處理器裝置,所要解決的技術問題是使其微處理器裝置包含一密碼指令電路及一執(zhí)行邏輯電路。該密碼指令電路,用以產(chǎn)生一密碼指令,該密碼指令是為一計算裝置所接收,并屬于在該計算裝置上執(zhí)行的一指令流的一部份,其中該密碼指令指定該等密碼運算之一者,且該密碼指令指定復數(shù)個密碼金鑰大小之一;該執(zhí)行邏輯電路,在運算上耦合至該密碼指令電路,并被設定以執(zhí)行被指定的密碼運算,該執(zhí)行邏輯電路包括一金鑰大小控制器,用以在被指定的密碼運算執(zhí)行期間使用被指定的密碼金鑰大小,以解決現(xiàn)有微處理器內(nèi)缺乏處理密碼運算專用的密碼指令電路與執(zhí)行邏輯電路硬件,從而更加適于實用。
本發(fā)明的另一目的在于,提供一種新的可設定密碼金鑰大小的微處理器裝置,所要解決的技術問題是使其微處理器裝置包含一密碼單元以及一金鑰大小控制邏輯電路,該密碼單元,位于一裝置中,該密碼單元被設定在接收一指令流內(nèi)的一密碼指令后執(zhí)行該等密碼運算之一者,其中該指令流預定被指定的密碼運算,且該密碼指令亦預定一當于執(zhí)行被指定的密碼運算所使用的金鑰大小;該金鑰大小控制邏輯電路,是運算地耦合于該密碼單元,并被設定以令該裝置在執(zhí)行被指定的密碼運算時使用該金鑰大小,以解決現(xiàn)有微處理器內(nèi)缺乏處理密碼運算專用的并具有優(yōu)先被使用權的密碼指令電路與金鑰大小控制邏輯電路硬件,從而更加適于實用。
本發(fā)明的再一目的在于,提供一種可設定密碼金鑰大小的方法,所要解決的技術問題是使其微處理器接收一密碼指令,該密碼指令預定復數(shù)個密碼運算之一者執(zhí)行期間的密碼金鑰大小;以及在執(zhí)行被指定的密碼運算時使用該密碼金鑰大小,以解決現(xiàn)有有微處理器內(nèi)缺乏處理密碼運算專用的接收一密碼指令與執(zhí)行被指定的密碼運算時使用該密碼金鑰大小等方法,從而更加適于實用。
本發(fā)明的目的及解決其技術問題是采用以下技術方案來實現(xiàn)的。依據(jù)本發(fā)明提出的一種可設定密碼金鑰大小的微處理器裝置,其包括一密碼指令電路,用以產(chǎn)生一密碼指令,該密碼指令是為一計算裝置所接收,并屬于在該計算裝置上執(zhí)行的一指令流的一部份,其中該密碼指令指定該等密碼運算之一者,且該密碼指令指定復數(shù)個密碼金鑰大小之一者;以及執(zhí)行邏輯電路,在運算上耦合至該密碼指令電路,并被設定以執(zhí)行被指定的密碼運算,該執(zhí)行邏輯電路包括一金鑰大小控制器,用以在被指定的密碼運算執(zhí)行期間使用被指定的密碼金鑰大小。
本發(fā)明的目的及解決其技術問題還采用以下技術措施來進一步實現(xiàn)。
前述的裝置,其中所述的被指定的密碼運算更包括一加密運算,該加密運算包括對復數(shù)個明文區(qū)塊加以加密的運算,以產(chǎn)生對應的復數(shù)個密文區(qū)塊;以及一解密運算,該解密運算包括對復數(shù)個密文區(qū)塊加以解密的運算,以產(chǎn)生對應的復數(shù)個明文區(qū)塊。
前述的裝置,其中所述的被指定的密碼金鑰大小為128位元、192位元或256位元。
前述的裝置,其中所述的金鑰大小控制器被用以解譯該密碼指令所參考的一控制字組中的一金鑰大小欄位。
前述的裝置,其中所述的密碼指令的預定是依x86指令格式。
前述的裝置,其中所述的密碼指令參考該計算裝置中復數(shù)個暫存器。
前述的裝置,其中所述的該等暫存器包括一第一暫存器,該第一暫存器的內(nèi)容包括一第一指標,該第一指標指向一第一記憶體位址,該第一記憶體位址明定一第一記憶體位置,用以對復數(shù)個輸入文字區(qū)塊進行存取,其中該等輸入文字區(qū)塊是被用以成該等密碼運算;一第二暫存器,該第二暫存器的內(nèi)容包括一第二指標,該第二指標指向一第二記憶體位址,該第二記憶體位址明定一第二記憶體位置,用以儲存對應的復數(shù)個輸出文字區(qū)塊,該等對應的復數(shù)個輸出文字區(qū)塊是為在復數(shù)個輸入文字區(qū)塊執(zhí)行被指定的密碼運算所產(chǎn)生的結果;一第三暫存器,該第三暫存器的內(nèi)容指出復數(shù)個輸入文區(qū)塊中的某幾個區(qū)塊;一第四暫存器,該第四暫存器的內(nèi)容包括一第三指標,該第三指標指向一第三記憶體位址,該第三記憶體位址明定一第三記憶體位置,用以存取完成被指定的密碼運算所需的密碼金鑰資料;一第五暫存器,該第五暫存器的內(nèi)容包括一第四指標,該第四指標指向一第四記憶體位址,該第四記憶體位址明定一第四記憶體位置,該第四記憶體位置包括該起始向量位置,該起始向量位置對應的內(nèi)容包括一起始向量或該起始向量的等效者,用以完成被指定的密碼運算;以及一第六暫存器,該第六暫存器的內(nèi)容包括一第五指標,該第五指標指向一第五記憶體位址,該第五記憶體位址用以明定一第五記憶體位址,用以存取一控制字組以完成被指定的密碼運算,其中該控制字組預定被指定的密碼運算的密碼參數(shù),且其中該控制字組包括一金鑰大小欄位,該金鑰大小欄位被設定以明定被指定的密碼金鑰大小在被指定的密碼運算執(zhí)行時的大小。
前述的裝置,其中所述的密碼金鑰資料包括一密碼金鑰,該密碼金鑰包括多數(shù)個位元,該多數(shù)個位元是依被指定的密碼金鑰大小而定;以及一使用者產(chǎn)生的密碼金鑰排程。
前述的裝置,其中所述的執(zhí)行邏輯電路包括一密碼單元,該密碼單元被設定用以對復數(shù)個輸入文字區(qū)塊的每一者執(zhí)行復數(shù)個密碼回合,以產(chǎn)生對應的復數(shù)個輸出文字區(qū)塊的每一者,其中被指定的密碼金鑰大小為一控制字組所預定,其中該控制字組被提供予該密碼單元中該金鑰大小控制器。
本發(fā)明的目的及解決其技術問題還采用以下技術方案來實現(xiàn)。依據(jù)本發(fā)明提出的一種可設定密碼金鑰大小的微處理器裝置,其包括一密碼單元,位于一裝置中,該密碼單元被設定在接收一指令流內(nèi)的一密碼指令后執(zhí)行該等密碼運算之一者,其中該指令流預定被指定的密碼運算,且該密碼指令亦預定一當于執(zhí)行被指定的密碼運算所使用的金鑰大小;以及金鑰大小控制邏輯電路,是運算地耦合于該密碼單元,并被設定以令該裝置在執(zhí)行被指定的密碼運算時使用該金鑰大小。
本發(fā)明的目的及解決其技術問題還采用以下技術措施來進一步實現(xiàn)。
前述的裝置,其中所述的金鑰大小為128位元、192位元或256位元。
前述的裝置,其中所述的金鑰大小控制邏輯電路被設定以解譯一在一為該密碼指令參考的控制字組中的一金鑰大小欄位。
前述的裝置,其中所述的密碼指令的預定是依該x86指令格式。
本發(fā)明的目的及解決其技術問題還采用以下技術方案來實現(xiàn)。依據(jù)本發(fā)明提出的一種可設定密碼金鑰大小的方法,其包括下列步驟接收一密碼指令,該密碼指令預定復數(shù)個密碼運算之一者執(zhí)行期間的密碼金鑰大小;以及在執(zhí)行被指定的密碼運算時使用該密碼金鑰大小。
本發(fā)明的目的及解決其技術問題還采用以下技術措施來進一步實現(xiàn)。
前述的方法,其中所述的接收步驟包括經(jīng)由一在一為該密碼指令參考的控制字組中的一欄位以明定該金鑰密碼大小的步驟。
前述的方法,其中所述的接收步驟包括依該x86指令格式預定該密碼指令。
前述的方法,其中所述的明定步驟包括預定128位元、預定192位元或預定256位元為該密碼金鑰大小。
本發(fā)明與現(xiàn)有技術相比具有明顯的優(yōu)點和有益效果。由以上技術方案可知,本發(fā)明的主要技術內(nèi)容如下本發(fā)明的提出是用以解決現(xiàn)有習知技術中上述及其它的問題與缺點等,其提出一種在一微處理器中執(zhí)行密碼運算的優(yōu)異技術。在本發(fā)明的一較佳實施例中,提出一種執(zhí)行密碼運算的裝置,該裝置包括一密碼指令電路及一執(zhí)行邏輯電路,密碼指令電路提供一密碼指令,而密碼指令為一計算裝置接收,并屬于計算裝置所執(zhí)行的指令流的一部份。密碼指令指定多個密碼運算之一,并指定多種密碼金鑰大小之一。在運算上,執(zhí)行邏輯電路耦合至密碼指令電路,并執(zhí)行被指定的密碼運算。在執(zhí)行被指定密碼運算時,執(zhí)行邏輯電路具有一密碼金鑰大小控制器,而此控制器使用被指定的密碼金鑰大小。
本發(fā)明的另一較佳實施例為一種執(zhí)行密碼運算的裝置,該裝置具有一密碼單元及一金鑰大小控制邏輯電路,其中密碼單元位于一裝置中,并在接收一指令流中一密碼指令后執(zhí)行多個密碼運算之一,其中指令流中的密碼指令指定被指定的密碼運算。此外,密碼指令在執(zhí)行被指定的密碼運算時亦預定一待使用的金鑰大小。在運算時,金鑰大小控制邏輯電路耦合于密碼單元內(nèi),并使裝置在進行被指定的密碼運算時使用被預定的金鑰大小。
本發(fā)明的一較佳實施例為一種在一裝置中執(zhí)行密碼運算的方法,該方法包括接收一密碼指令,此被接收的密碼指令指定多個密碼運算的某一者在執(zhí)行期間所用的密碼金鑰大小,該方法也包括使用被指定的密碼金鑰大小于被指定的密碼運算被執(zhí)行的期間。
經(jīng)由上述可知,本發(fā)明是有關于一種可設定密碼金鑰大小的微處理器裝置及方法,是一種在一計算裝置中利用可程式化密碼金鑰大小對復數(shù)個輸入資料區(qū)塊執(zhí)行密碼運算的裝置及方法。例如,一種執(zhí)行密碼運算的裝置,該裝置包括密碼指令電路及執(zhí)行邏輯電路,該密碼指令電路是提供至少一密碼指令,通過一計算設備接收以作為在計算設備上執(zhí)行一指令流的部分。密碼指令電路指定復數(shù)個密碼運算之一者,并亦指定復數(shù)種密碼金鑰大小之一者。在運算上,執(zhí)行邏輯電路耦合至密碼指令電路,并執(zhí)行被指定的密碼運算。執(zhí)行邏輯電路具有一密碼金鑰大小控制器,該控制器在執(zhí)行被指定的密碼運算期間使用被指定的密碼金鑰大小。
借由上述技術方案,本發(fā)明提供可設定密碼金鑰大小的微處理器裝置及方法至少具有下列優(yōu)點本發(fā)明提供微處理器所需要的專用的密碼相關硬體,可以便一需加以密碼運算的應用程式可令微處理器經(jīng)由單獨的、基本單元密碼指令電路指示微處理器執(zhí)行密碼運算,而密碼指令電路提供至少一個密碼指令,可以解決現(xiàn)有微處理器內(nèi)缺乏處理密碼運算專用的密碼指令電路與執(zhí)行邏輯電路硬件。
此外,密碼指令亦以在應用程式中具有優(yōu)先被使用權為更佳,且專用密碼硬體以與現(xiàn)今微處理器的常用架構相容為更佳。同時密碼硬體和相關密碼指令要提供與先前作業(yè)系統(tǒng)和程式的相容的方式,可以解決現(xiàn)有微處理器內(nèi)缺乏處理密碼運算專用的并具有優(yōu)先被使用權的密碼指令電路與金鑰大小控制邏輯電路硬件,可以提高系統(tǒng)操作速度。
另外,本發(fā)明提供一種可設定密碼金鑰大小的微處理器裝置,可使其有效的抵御未授權的監(jiān)聽,并能支援多種密碼演算法,支援對在其中實施的特殊密碼演算法進行驗證和測試,允許使用者提供的金鑰和自行產(chǎn)生的金鑰,支援多重的資料塊大小和金鑰長度,提供可編程的區(qū)塊加密/解密模式,即如電子密碼書模式、密文區(qū)塊串列、密文回授模式和輸出回授模式等,并且在使用上述可編程區(qū)塊加密/解密模式時能夠對大量資料有效的執(zhí)行多種資料區(qū)塊大小及多種位元大小的密碼金鑰。
綜上所述,本發(fā)明可設定密碼金鑰大小的微處理器裝置及方法,具有上述諸多的優(yōu)點及實用價值,并在同類裝置及方法中未見有類似的結構設計及方法公開發(fā)表或使用而確屬創(chuàng)新,其不論在產(chǎn)品結構、方法或功能上皆有較大改進,在技術上有較大進步,并產(chǎn)生了好用及實用的效果,且較現(xiàn)有的微處理器裝置及微處理器運算方法具有增進的多項功效,從而更加適于實用,而具有產(chǎn)業(yè)的廣泛利用價值,誠為一新穎、進步、實用的新設計。
上述說明僅是本發(fā)明技術方案的概述,為了能夠更清楚了解本發(fā)明的技術手段,而可依照說明書的內(nèi)容予以實施,并且為了讓本發(fā)明的上述和其他目的、特征和優(yōu)點能夠更明顯易懂,以下特舉較佳實施例,并配合附圖,詳細說明如下。
圖1是一說明現(xiàn)今密碼相關應用的方塊圖。
圖2是一說明執(zhí)行密碼運算的技術的方塊圖。
圖3是一代表本發(fā)明用以執(zhí)行密碼運算的微處理器裝置的方塊圖。
圖4是本發(fā)明的基本單元密碼指令實施例的方塊圖。
圖5是本發(fā)明的一與x86相同的微處理器內(nèi)一密碼單元的方塊圖。
圖6是一使圖5的微處理器內(nèi)進行密碼相關子運算的微指令范例中的欄位圖。
圖7是預定本發(fā)明的一密碼運算的密碼相關參數(shù)的控制字元格式范例的方塊圖。
圖8是說明本發(fā)明中一密碼單元范例細節(jié)的方塊圖。
圖9是一說明本發(fā)明的一執(zhí)行進階加密標準的密碼運算的區(qū)塊密碼邏輯電路實施例的方塊圖。
圖10是一說明本發(fā)明用以在一中斷事件期間保存密碼相關參數(shù)狀態(tài)的方法的流程圖。
圖11是一說明本發(fā)明用以在對復數(shù)個輸入資料區(qū)塊執(zhí)行一密碼運算,且至少一中斷事件發(fā)生之時使用一使用者預定密碼金鑰大小的方法的框圖。
主要元件符號說明100方塊圖 101第一電腦工作站102第二電腦工作站 103工作站(遠端電腦)104工作站 106網(wǎng)路檔案儲存裝置107第一路由器 108無線網(wǎng)路路由器109無線網(wǎng)路110廣域網(wǎng)路111第二路由器 112加密/解密應用程式200方塊圖201微處理器202作業(yè)系統(tǒng)軟件203程式記憶體 204密碼金鑰產(chǎn)生應用程式205金鑰排程206加密應用程式207解密應用程式208起始向量209密碼參數(shù)210明文區(qū)塊211密文區(qū)塊300方塊圖301微處理器302指令暫存器303轉換邏輯電路304微指令佇列
305微指令儲存表目306微指令載入表目307暫存器組 308控制指標暫存器309金鑰指標暫存器310起始向量指標暫存器311輸入指標暫存器312輸出指標暫存器313區(qū)塊計數(shù)暫存器314負載邏輯電路315記憶體316密碼使用單元317儲存邏輯電路 318寫回邏輯電路319記憶體匯流排 320作業(yè)系統(tǒng)321記憶體322密碼指令323密碼控制字組 324起始密碼金鑰;金鑰排程325起始向量 326輸入文字區(qū)域327記憶體位置328執(zhí)行邏輯電路400基本單元密碼指令 401選擇性前置欄位402重復前置欄位 403運算碼欄位404區(qū)塊密文模式欄位600微處理器 601提取邏輯電路602轉換邏輯電路 603轉換器604微碼只讀記憶體605暫存器階級606位址階級 607負載階級608執(zhí)行階級 609微指令佇列610平行執(zhí)行單元(整數(shù)單元)611微指令佇列612平行執(zhí)行單元 613微指令佇列614平行執(zhí)行單元 615微指令佇列616平行執(zhí)行單元 617密碼單元618儲存階級 619寫回階級620負載匯流排621暫停訊號622儲存匯流排624暫存器625X位元 626中斷邏輯電路627軟件及硬體中斷訊號628轉換邏輯電路629E位元 630特征控制暫存器631D位元 632執(zhí)行邏輯電路
640 金鑰生成邏輯電路700 格式701 微運算碼欄位702 資料暫存器欄位703 暫存器欄位 704 資料欄位1000控制字組格式1001保留欄位1002資料區(qū)塊大小欄位1003金鑰大小欄位1004密碼/解密欄位 1005中間結果欄位1006金鑰生成欄位1007演算法欄位1008合計數(shù)RCNT欄位 1200密碼單元1201密碼金鑰隨機存取記憶體 1202金鑰隨機存取記憶體1203微運算碼暫存器 1204控制字組暫存器1205輸入-0暫存器1206輸入-1暫存器1207金鑰-0暫存器1208金鑰暫存器1209輸出暫存器 1210輸出暫存器1211載入?yún)R流排 1212儲存匯流排1213拖延訊號1214微指令匯流排1300區(qū)塊密文邏輯電路1301微指令暫存器1302控制字組暫存器 1303金鑰-0暫存器1304金鑰-1暫存器1305輸入暫存器1306輸入暫存器 1307暫存器1308暫存器 1310回合引擎控制器1311匯流排 1312匯流排1313匯流排 1314匯流排1315匯流排 1316匯流排1317匯流排 1318匯流排1319匯流排 1320合引擎1321金鑰互斥邏輯電路1322第一暫存器暫存-01323S-box邏輯電路 1324位移邏輯電路1325第二暫存器暫存-11326混合列邏輯電1327第三暫存器 1330金鑰大小控制器1402開始1404中斷?1406清除位元1408儲存架構性暫存器1410中斷處理1412完成
1502開始 1504載入輸入?yún)^(qū)塊(預定者)并開始1506X位元已設定 1508載入控制字組并重置1510設定192位元金鑰用的回合引擎 1512載入/拓展金鑰排程1514密碼金鑰大小? 1516載入/拓展金鑰排程1518設定256位元金鑰用的回合引擎 1520載入/拓展金鑰排程1522載入輸入?yún)^(qū)塊(再次)并更新 1524產(chǎn)生輸出區(qū)塊1526儲存輸出區(qū)塊至記憶體 1528更新區(qū)塊計數(shù)器及指標1530區(qū)塊計數(shù)器為01532載入輸入?yún)^(qū)塊并開始1534完成具體實施方式
為更進一步闡述本發(fā)明為達成預定發(fā)明目的所采取的技術手段及功效,以下結合附圖及較佳實施例,對依據(jù)本發(fā)明提出的可設定密碼金鑰大小的微處理器裝置及方法其具體實施方式
、結構、方法、步驟、特征及其功效,詳細說明如后。
以下說明是針對本發(fā)明的一特定應用及其需求而進行的,用以使熟習該項技術的技術人員能夠制造及使用本發(fā)明,但是熟習該項技術者可輕易對所述的較佳實施例加以各種變化,且所述的基本原理可以應用至其它的實施例上。因此,本發(fā)明的范圍不僅限于該等已述的特定實施例,其范圍當視為不違本文中所提原理及新穎特征的最大范圍。
在前述對于密碼運算及用于現(xiàn)今電腦系統(tǒng)以對資料加密及解密的技術的習知部份討論后,以下將配合圖2對這些技術及其限制繼續(xù)做討論。接著,本發(fā)明的說明將配合圖3至圖11的圖式而進行說明。本發(fā)明提出一種用以在一現(xiàn)今電腦系統(tǒng)中執(zhí)行密碼運算的裝置及方法,其在各種常用機制上具有優(yōu)異性能,并滿足上述限制作業(yè)系統(tǒng)介入、自動化、結構相容性、演算法及模式的可程式化特性、防止駭客入侵及可測試性的目的。
現(xiàn)請參閱圖2所示,該圖所示為一說明在一現(xiàn)今電腦系統(tǒng)中如前述般執(zhí)行密碼運算的技術的方塊圖,方塊圖200包括一微處理器(microprocessor)201,該微處理器201用以提取指令電路及處理與一應用程式相關的資料,其中該等指令電路及資料是位于一稱作應用程式記憶體203(記憶體即存儲介質,存儲器,內(nèi)存,以下均稱為記憶體)的一系統(tǒng)記憶體區(qū)域,而應用程式記憶體(application memory)203中資料的程式控制及動作一般由系統(tǒng)記憶體的一受保護區(qū)域中的作業(yè)系統(tǒng)軟件(operatingsystem)202控管。指令電路提供至少一指令,其用來指示一密碼操作,而指令電路包括邏輯電路、裝置或微碼(即微指令或本機指令(nativeinstruction))、或是一個邏輯電路、裝置或微碼的組合,由于指令電路并非為本發(fā)明的重點,故在此不再對此作詳細說明。如上所述,若一執(zhí)行應用程式(如一電子郵件程式或一檔案儲存程式)需進行密碼運算,則執(zhí)行應用程式必須藉微處理器201執(zhí)行相當數(shù)量的指令方能完成密碼運算,其中該等指令可為執(zhí)行應用程式本身中的副程式,如可為與執(zhí)行應用程式相連接的外掛應用程式,或可為作業(yè)系統(tǒng)202提供的服務。不管該等指令的形式究為何,熟習該項技術者皆能了解指令皆存于指定或分配的記憶體區(qū)域中。為達到說明之效,該等記憶體區(qū)域顯示于應用記憶體203中,且包括一密碼金鑰產(chǎn)生應用程式(cryptographic key generation application)204,其中該密碼金鑰產(chǎn)生應用程式204一般產(chǎn)生或接收一密碼金鑰,并將該金鑰拓展成一金鑰排程(key schedule)205,以為密碼子運算所用。
在一多區(qū)塊加密運算進行時,一區(qū)塊加密應用程式(encryptionapplication)206需先被引動,以執(zhí)行取得明文(plaintext)區(qū)塊210、金鑰排程205、諸如模式、密鑰表位置等更為詳細加密操作的密碼參數(shù)(cryptographic parameters)209。若為規(guī)格中模式所需,加密應用程式206亦會使用一起始向量(initalization vector)208。在執(zhí)行其中的指令后,加密應用程式206產(chǎn)生對應的密文(ciphertext)區(qū)塊211,而一區(qū)塊解密應用程式(decryption application)207亦同樣被引動以執(zhí)行區(qū)塊解密運算,即執(zhí)行取得密文區(qū)塊211、金鑰排程205、諸如模式、密鑰表位置等更為詳細解密操作的密碼參數(shù)(cryptographic parameters)。若為規(guī)格中模式所需,解密應用程式207亦會使用一起始向量208。在執(zhí)行其中的指令后,解密應用程式207產(chǎn)生對應的明文區(qū)塊210。
需加以強調的是,在產(chǎn)生密碼金鑰及對文字區(qū)塊加以加密及解密時,所需執(zhí)行的指令數(shù)目相當多;上述FIPS規(guī)格中包括諸多可形成數(shù)量相當?shù)男杓庸烙嬛噶畹奶摂M碼范例,故熟習該項技術者皆了解一項簡單的區(qū)塊密碼運算需數(shù)百個指令方能完成,且該等指令的每一者皆須由微處理器201加以執(zhí)行方能完成所要求的密碼運算。再者,對于現(xiàn)有執(zhí)行應用程式的主要目的(如檔案管理、即時訊息功能、電子郵件功能、遠端檔案取得及信用卡交易等)而言,執(zhí)行指令以完成密碼運算一般被視為不必要的功能,因此現(xiàn)有執(zhí)行應用程式的使用者感到現(xiàn)有執(zhí)行應用程式的執(zhí)行效率不足。
若所用的應用程式為獨立或外掛加密/解密應用程式206、207,則該等應用程式206、207的引動及控管亦須符合作業(yè)系統(tǒng)202的其它要求,如支援中斷、異常及類似使問題惡化的事件等。甚者,對于每一同時在一電腦系統(tǒng)中進行的密碼運算而言,應用程式204、206、207的獨立執(zhí)行個體必須在記憶體203中配以其空間,且可預見需同時為一微處理器201執(zhí)行的密碼運算數(shù)將持續(xù)隨時間增加,如前文已描述者。
本案發(fā)明人已提到目前電腦系統(tǒng)的密碼技術所存有的問題與限制,并亦了解到提出在一微處理器中執(zhí)行密碼運算、且程式的執(zhí)行不會有延遲的裝置及方法的必要性,因此本發(fā)明提出一種經(jīng)由一專用密碼使用單元執(zhí)行密碼運算的微處理器裝置及方法,其中專用密碼單元設于微處理器中,且密碼單元是經(jīng)由一單一密碼指令的程式化而被致動以執(zhí)行密碼運算。以下,本發(fā)明將配合參閱圖3至圖11繼續(xù)進行說明。
請參閱圖3所示,圖中所示為一本發(fā)明用以執(zhí)行密碼運算與微處理器裝置相關的方塊圖,方塊圖300中顯示微處理器(microprocessor)301經(jīng)由一記憶體匯流排(memory bus)319耦合至一系統(tǒng)記憶體(system memory)321,其包括用以自一指令暫存器(instruction register)302接收指令的轉換邏輯電路(translation logic)303,轉換邏輯電路303包括邏輯電路、電路、裝置或微碼(即微指令或自然指令)、或邏輯電路、電路、裝置或微碼的組合,或其它用以將指令轉換成相關微指令序列的等效元件。該等用以在轉換邏輯電路303中執(zhí)行轉換工作的元件可為其它電路、微碼等用以在微處理器301中執(zhí)行其它功能者所共用。就本發(fā)明的范圍而言,微碼一詞用以代表至少一微指令,而微指令(亦稱作本機指令)的層級是屬于一單元執(zhí)行者。舉例而言,微指令直接為一精簡指令集(reduced instructionset computer,RISC)微處理器所執(zhí)行。以一如x86相容的微處理器等復雜指令集電腦(complex instruction set computer,CISC)微處理器而言,x86指令被轉換成相關的微指令,且相關的微指令直接為一復雜指令集電腦微處理器中至少一單元執(zhí)行。另外,轉換邏輯電路303耦合至一微指令列(micro instruction queue)304,并具有復數(shù)個微指令入口(microinstruction entries)305、306,微指令由微指令列304提供至包括一暫存器組(register file)307的暫存器級邏輯電路,其中暫存器組307具有復數(shù)個暫存器308-313,該等暫存器308-313的內(nèi)容是建立于一指定的密碼運算執(zhí)行之前。暫存器308-312指向記憶體321中的對應位置323-327,該等位置323-327包括執(zhí)行被指定的密碼運算所需的資料。暫存器級耦合至負載邏輯電路(load logic)314,負載邏輯電路314則以介面與一資料快取記憶體(data cache)315相接,以取得執(zhí)行指定的密碼運算所需的資料。資料快取記憶體315經(jīng)由記憶體匯流排319與記憶體321相耦合,執(zhí)行邏輯電路(execution logic)328耦合至負載邏輯電路314,并執(zhí)行送來的微指令指定的運算,其包括邏輯電路、裝置或微碼(即微指令或本機指令),或為邏輯電路、裝置或微碼的組合,或其它用以執(zhí)行指令所指定的運算的等效元件,其中該等用以執(zhí)行執(zhí)行邏輯電路328中運算的元件可為其它電路及微碼等用以在微處理器301中執(zhí)行其它功能者所共用。執(zhí)行邏輯電路328包括一密碼單元(cryptography unit)316,密碼單元316自負載邏輯電路314接收執(zhí)行被指定的密碼運算所需的資料,微指令使密碼單元316對復數(shù)個輸入文字區(qū)塊(input text)326執(zhí)行指定的密碼運算,以產(chǎn)生對應的復數(shù)個輸出文字區(qū)塊(output text)327。密碼單元316包括邏輯電路、裝置或微碼(即微指令或本機指令),或為邏輯電路、裝置或微碼的組合,或其它用以執(zhí)行密碼運算的等效元件,其中該等用以在密碼單元316中執(zhí)行密碼運算的元件可為其它電路及微碼等用以在微處理器301中執(zhí)行其它功能者所共用。在一實施例中,密碼單元316在執(zhí)行邏輯電路328中與其它執(zhí)行單元(圖中未繪示)平行運算,其中執(zhí)行邏輯電路328可為整數(shù)單元及浮點單元等。一本發(fā)明范圍所對應的“單元”實施例包括邏輯電路、裝置或微碼(即微指令或本機指令)的組合,或其它用以執(zhí)行既定功能或動作的等效元件,其中該等用以在一特定單元中執(zhí)行其它功能或動作的元件可以為其它電路及微碼等用以在微處理器301中執(zhí)行其它功能者所共用。舉例而言,一實施例中的一整數(shù)單元包括邏輯電路、裝置或微碼(即微指令或本機指令)的組合,或其它用以執(zhí)行整數(shù)指令的等效元件。一浮點單元包括邏輯電路、裝置或微碼(即微指令或本機指令)的組合,或其它用以執(zhí)行浮點指令的等效元件,其中該等用以在整數(shù)單元中執(zhí)行整數(shù)指令的元件可為其它電路及微碼等用以在該浮點單元中執(zhí)行浮點指令者所共用。
在一與x86架構相容的實施例中,密碼使用單元316與一x86整數(shù)單元、一x86浮點(floating point unit)單元、一x86多媒體延伸集(Multi-media Extensions,MMX)單元及一x86串流延伸集(Streaming SIMDExtensions,SSE)單元平行運作。以本發(fā)明的范圍而言,一可正確執(zhí)行大部份設計以在一x86微處理器中執(zhí)行的應用程式的實施例皆屬與x86架構相容,而一應用程式得以正確執(zhí)行是指其可獲致所欲結果。在其它的x86相容實施例中,密碼單元是與前述x86執(zhí)行單元組成的子集合平行運作,其中密碼單元316耦合至儲存邏輯電路317,并提供對應的復數(shù)個輸出文字區(qū)塊327。此外儲存邏輯電路317亦耦合至自資料快取記憶體315,該快取記憶體315將輸出文字資料327轉送至系統(tǒng)記憶體321以進行儲存。儲存邏輯電路317耦合至寫回邏輯電路318,寫回邏輯電路318在指定的密碼運算完成時更新暫存器組307中的暫存器308-313。在另一實施例中,微指令與一時脈訊號(圖中未顯示)同步流過上述邏輯電路階級302、303、304、307、314、316-318的每一者,因此運算動作可同時以大致類似于一組合線上執(zhí)行的動作的方式執(zhí)行。
在系統(tǒng)記憶體321中,需執(zhí)行指定的密碼運算的應用程式可令微處理器301經(jīng)由一單一密碼指令(cryptographic instruction)322執(zhí)行密碼運算。為使說明便于進行,單一密碼指令322在此處稱作一密碼指令322。在一復雜指令集電腦實施例中,密碼指令322包括一指定一密碼運算的微指令。在一實施例中,密碼指令322使用在一現(xiàn)存指令集架構中一閑置或不用的指令運算碼。在一x86相容的實施例中,密碼指令322為一4位元組指令,其包括一x86重復前置(REP)(即0xF3),接著為未使用的2位元組x86運算碼(如0x0FA7),再接著為一用以說明在一指定的密碼運算期間所用的區(qū)塊密碼模式的位元組。在一實施例中,本發(fā)明的密碼指令322的執(zhí)行層級可為應用程式所提供的系統(tǒng)優(yōu)先層級,并因可被程式化成一指令構成的程式流,程式流直接為一應用程式送至微處理器301,或經(jīng)由作業(yè)系統(tǒng)320的控制而送至微處理器301。由于使微處理器301執(zhí)行指定的密碼運算的指令322僅需為一者,因此該運算的完成可完全為作業(yè)系統(tǒng)320所知。
在實際運作中,作業(yè)系統(tǒng)320引動一應用程式,以在微處理器301中執(zhí)行,且在應用程式執(zhí)行的時指令流中一密碼指令322由記憶體321送至提取邏輯電路302。然而在密碼指令322執(zhí)行之前,程式流中指令使微處理器301對暫存器308-312內(nèi)容起始化,以使暫存器308-312內(nèi)容指向記憶體321中包括一密碼控制字組(cryptographic control word)323、一起始密碼金鑰(initial cryptographic key)324或一金鑰排程(key schedule)324、一起始向量(initialization vector)325(若為所需時)、運算所用輸入文字326及輸出文字327的位置323-327。在執(zhí)行密碼指令322之前需要起始化暫存器308-312的原因為密碼指令322實際上是參考暫存器308-312及一包括一區(qū)塊計數(shù)功能的外加暫存器313而為,而外加暫存器313計數(shù)之值為輸入文字區(qū)域326中待加加密或解密的區(qū)塊數(shù)。因此,轉換邏輯電路303自提取邏輯電路302取得密碼指令,并將其轉換成一對應微指令序列,以使微處理器301執(zhí)行被指定的密碼運算。在該對應微指令序列中一第一組復數(shù)個微指令305-306,使密碼單元316載入負載邏輯電路314所送出的資料,并開始執(zhí)行被指定數(shù)目的密碼梯次,以產(chǎn)生一對應輸出資料區(qū)塊,并提供對應輸出資料區(qū)塊至儲存邏輯電路317,以經(jīng)由資料快取記憶體315儲存于記憶體321的輸出文字區(qū)域327中。在該對應微指令序列中一第二組復數(shù)個微指令(圖中未顯示)使微處理器301中其它執(zhí)行單元(圖中未顯示)執(zhí)行其它完成被指定的密碼運算所需的動作,如對包括暫時結果及計數(shù)值的非架構式暫存器(圖中未顯示)、輸入及輸出指標暫存器311-312的更新、輸入文字區(qū)塊326的加密及解密后起始向量指標暫存器310的更新(若為所需)及未受處理的中斷的處理等。在一實施例中,暫存器308-313為架構式暫存器,其中架構式暫存器308-313是指定義于特定執(zhí)行的微處理所用的指令集架構(instruction set architecture,ISA)中的暫存器。
在一實施例中,密碼單元316被分作復數(shù)階級,以能對后續(xù)輸入文字區(qū)塊326進行管線式處理。
圖3中300為用以說明本發(fā)明所需的元件,故現(xiàn)今微處理器301中所用的多種邏輯電路為顧及說明清楚而在方塊圖300中省略。然而,熟習該項技術者皆能了解現(xiàn)今微處理器301包括諸多階級邏輯電路元件,端視其特定應用而定,且其中一些階級及邏輯電路元件在本案中已整合在一起,以使說明較為簡潔。舉例而言,負載邏輯電路314可整合以一位址產(chǎn)生階級,接著可有一快取記憶體介面階級,并接著可有一快取記憶體線對位階級。然而必須特別說明的是,對復數(shù)個輸入文字區(qū)塊326所為的密碼運算完整動作需經(jīng)由一單一指令322為之,該單一指令322的動作為作業(yè)系統(tǒng)320所知,其執(zhí)行則是經(jīng)由一專用密碼單元316完成,其中專用密碼單元316的運作與微處理器301中其它執(zhí)行單元平行且一致進行。此外,本案發(fā)明人提出不同的密碼單元316實施例,其與數(shù)年前提出的微處理器中專用浮點單元類似,其與相關的密碼指令322的運作完全與作業(yè)系統(tǒng)320及應用程式的動作相容,以下將有更詳細的介紹。
現(xiàn)請參閱圖4所示,圖中所示為一用以說明本發(fā)明的一基本單元密碼指令400實施例的方塊圖。密碼指令400包括一可選擇性前置欄位(optional prefix field)401,然后是一重復前置欄位(repeat prefixfield)402,隨后是一運算碼欄位(opcode field)403,最后是一區(qū)塊密文模式欄位(block cipher mode field)404。在一實施例中,欄位401-404的內(nèi)容與x86指令集架構相容。在其它不同實施例中,欄位401-404的內(nèi)容與其它指令集架構相容。
在運作時,可選擇性前置欄位401用于諸多指令集架構中,以啟動或關閉一主微處理器的某些特定處理能力,如進行16位元或32位元的運算及處理或使用特定的記憶體區(qū)塊等。重復前置欄位402指出密碼指令400所指定的密碼運算需對復數(shù)個輸入資料(即明文或密文)區(qū)塊而為,并令一相容微處理器將其中復數(shù)個架構式暫存器的內(nèi)容作為系統(tǒng)記憶體中位置的指標,其中位置是指包括完成既定密碼運算所需的密碼資料及參數(shù)。如上所述,重復前置欄位402的值在一x86相容的實施例中為0xF3;且根據(jù)x86架構協(xié)定而言,密碼指令的形式非常類似于REP.MOVS等x86重復串指令。舉例而言,當以本發(fā)明的x86相同微處理器實施例為之時,重復前置欄位實際上是參考一存于架構式暫存器ECX中的區(qū)塊計數(shù)變數(shù)、一存于暫存器ESI中的來源位址指標(指向該密碼運算對應的輸入資料)及一存于暫存器EDI中的目的位址指標(指向記憶體中的輸出資料區(qū)域)。在一x86相容實施例中,本發(fā)明更將傳統(tǒng)的重復串指令概念拓展成更參考一存于暫存器EDX中的控制字組指標、一存于暫存器EBX中的密碼金鑰指標及一存于暫存器EAX中指向一起始向量的指標(若為指定密文模式所需)。
運算碼欄位403指定微處理器完成進一步為一記憶體中一控制字組所明定的密碼運算,其中控制字組經(jīng)由控制字組指標而被參考。本發(fā)明中,較佳的運算碼值403為一現(xiàn)存指令集架構中閑置或未使用的運算碼值之一,用以維持一與作業(yè)系統(tǒng)及應用軟件相容的微處理器的相容性。舉例而言,前述之一與x86相容的運算碼欄位403實施例使用值0x0FA7以進行既定密碼運算的執(zhí)行,區(qū)塊密文模式欄位404預定在既定密碼運算期間使用特定區(qū)塊密文模式,以下將配合表格進行說明。
請參閱下列表格1所示,其為圖4的基本單元密碼指令所用的區(qū)塊密文模式欄位值范例構成的表格
表格1在上述的表格1中,值0xC8預定以電子密碼書模式完成密碼運算,值0XD0預定以密文區(qū)塊串列模式完成密碼運算,值0xE0預定以密文回授模式完成密碼運算,而值0xE8預定以輸出回授模式完成密碼運算。另外,區(qū)塊密文模式欄位404的所有其它值皆受保留,該等模式的描述可見于前述FIPS文件的內(nèi)容。
請參閱圖5所示,其為一說明本發(fā)明中一x86相容微處理器600中密碼單元617的方塊圖。其中,微處理器600包括提取邏輯電路(fetch logic)601,提取邏輯電路601自記憶體(圖中未顯示)提取指令以為執(zhí)行,其并耦合至轉換邏輯電路(translation logic)602。轉換邏輯電路602包括邏輯電路、裝置或微碼(即微指令或本機指令),或為邏輯電路、裝置或微碼的組合,或為其它用以將指令轉換成相關微指令序列的等效元件。該等用以在轉換邏輯電路602中執(zhí)行轉換的元件可為其它電路及微碼等所共用,以在微處理器600中執(zhí)行其它功能。轉換邏輯電路602包括金鑰生成(keygen)邏輯電路640,金鑰生成邏輯電路640耦合至一轉換器(translator)603及一微碼只讀記憶體(ROM)604。中斷邏輯電路(interrupt logic)626經(jīng)由匯流排628耦合至轉換邏輯電路602。復數(shù)個軟件及硬體中斷訊號627為中斷邏輯電路626處理,中斷邏輯電路606可指出目前對轉換邏輯電路628的尚未受處理的中斷。轉換邏輯電路602耦合至微處理器600接續(xù)階級,包括一暫存器階級605、位址階級606、負載階級607、執(zhí)行階級608、儲存階級618及寫回階級619。接續(xù)階級的每一者皆包括用以完成指令執(zhí)行相關的特定功能的邏輯電路,其中指令是指以圖3中微處理器內(nèi)類似零組件標號配合說明的提取邏輯電路601所提供。圖5中所示x86相容實施范例微處理器600顯示執(zhí)行階級608中的執(zhí)行邏輯電路(execution logic)632,其包括平行執(zhí)行單元610、612、614、616、617。一整數(shù)單元610自微指令佇列609接收執(zhí)行用整數(shù)微指令。微指令佇列613接收執(zhí)行用多媒體延伸集微指令。一串流延伸集單元616自微指令列615接收執(zhí)行用串流延伸集微指令。在所示x86實施范例中,密碼單元617經(jīng)由一負載匯流排(load bus)620、一暫停訊號(stall signal)621及儲存匯流排(store bus)622耦合至串流延伸集單元616,并共用串流延伸集單元的微指令列615。另一不同實施例中,密碼單元617以與單元610、612及614相似的獨立平行方式運作,整數(shù)單元610耦合至一x86旗標暫存器(EFLAGS)624,其中旗標暫存器624包括一X位元625,用以指出密碼運算是否正執(zhí)行中。在一實施例中,X位元625為一x86旗標暫存器624的第30位元。此外,整數(shù)單元610藉使用一機器特殊暫存器(machine specific register)628而推估一E位元629的狀態(tài),其中E位元629的狀態(tài)指出微處理器600中是否存在密碼單元617。此外,整數(shù)單元610亦得使用一特征控制暫存器(feature controlregister)630中的一D位元631,以啟動或關閉密碼單元617。至于圖3中的微處理器301實施例,圖5中微處理器600已顯示教示本發(fā)明所需要的主要元件,該等元件并說明于一x86相容實施例的敘述內(nèi)容中,該微處理器中的其它元件則已整合顯示或省略未示,用以使圖面說明較為簡潔。熟習該項技術者皆知完成該介面需有其它元件的存在,如一資料快取記憶體(圖中未顯示)、匯流排介面單元(圖中未顯示)及時脈產(chǎn)生與分配邏輯電路(圖中未顯示)等。
在實際運作中,指令自記憶體(圖中未顯示)中的提取是由提取邏輯電路601進行,且提取動作的進行是在一送至轉換邏輯電路602的時脈訊號同步進行。轉換邏輯電路602將每一指令轉換成一對應微指令序列,該微指令序列依序同步于該時脈訊號送至微處理器600的后級605-608、618、619中。一序列微指令中的每一微指令使一需完成一整體運算所需子運算受到執(zhí)行,其中整體運算是為一對應指令所預定,如由位址階級606產(chǎn)生一位址、整數(shù)單元610中已自暫存器階級605中預定暫存器(圖中未顯示)中取得的二運算元的相加、以及記憶體中執(zhí)行單元610、612、614、616、617之一者藉儲存邏輯電路618產(chǎn)生的結果的儲存等。依照正轉換中指令的不同,轉換邏輯電路602使用轉換器603以直接產(chǎn)生微指令序列,或自微碼只讀記憶體604提取該序列,或使用轉換器603而直接產(chǎn)生該序列的一部份,并自微碼只讀記憶體604中提取該序列的剩余部份,其中該等微指令相繼以同步于該時脈的方式在接續(xù)階級605-608、618、619中行進。當?shù)诌_執(zhí)行階級608時,該等微指令及其運算元(自暫存器階級605中暫存器取得,或為位址階級606中邏輯電路所產(chǎn)生,或為負載邏輯電路608自一資料快取記憶體中取得)為執(zhí)行邏輯電路632轉送至一指定執(zhí)行單元610、612、614、616、617,且轉送的方式為置放該等微指令于一對應的微指令列609、611、613、615中。接著,執(zhí)行單元610、612、614、616、617執(zhí)行該等微指令,并將結果送至儲存階級618中。在一實施例中,該等微指令包括指出其是否可與其它動作平行執(zhí)行的欄位。
當一上述密碼指令被提取時,轉換邏輯電路602產(chǎn)生相關的微指令以使微處理器600中接續(xù)階級605-608、618、619中的邏輯電路執(zhí)行指定的密碼運算,該等相關微指令的結構部份由控制字組暫存器308中內(nèi)容所指的控制字組323中一金鑰生成欄位值所決定,以下將有更詳細的說明。舉例而言,若金鑰生成欄位值指定在一預定密碼運算中將使用一使用者產(chǎn)生的金鑰排程,則金鑰生成邏輯電路640將建構相關微指令序列而使微處理器600自特定記憶體位置324取得使用者產(chǎn)生的金鑰排程,并將使用者產(chǎn)生的金鑰排程載入密碼單元617的金鑰隨機存取記憶體內(nèi)(以下將有更詳細的說明),并在指定的密碼運算的執(zhí)行期間使用使用者產(chǎn)生的金鑰排程,其中特定記憶體位置324是為金鑰指標暫存器309中內(nèi)容所指者。若金鑰生成欄位值指定一金鑰排程將以一所提供的密碼金鑰自動產(chǎn)生,則金鑰生成邏輯電路640將建構相關的微指令序列以令微處理器600自記憶位置324取得所提供的密碼金鑰,并將該金鑰載入密碼使用單元617中金鑰隨機存取記憶體中,并將該金鑰拓展成一金鑰排程,并在預定密碼運算執(zhí)行期間使用經(jīng)拓展的金鑰排程,其中記憶位置324是為金鑰指標暫存器309內(nèi)容所指者。該密碼金鑰的大小得加程式化,藉由在該控制字組中建立一金鑰大小欄位值即可達該可程式化目的。在一實施例中,金鑰大小欄位值可預定使用128位元的密碼金鑰、192位元的密碼金鑰及256位元的密碼金鑰。
因此,一第一組復數(shù)個相關微指令直接被送至密碼單元617,并令密碼單元617載入負載匯流排620上的資料,或在入一輸入資料區(qū)塊及開始執(zhí)行預定數(shù)量的密碼回合而形成一輸出資料區(qū)塊,或提供一經(jīng)形成的輸出資料區(qū)塊于儲存匯流排622上而為儲存邏輯電路618存于記憶體中。一第二組復數(shù)個相關微指令被送至其它執(zhí)行單元610、612、614、616中,以執(zhí)行其它完成預定密碼運算所需的子動作,如E位元629的測試、致能D位元631、設定X位元625以指出一密碼運算正進行中、更新暫存器級605中暫存器(如計數(shù)暫存器、輸入文字指標暫存器及輸出文字指標暫存器)及中斷邏輯電路626所指出的中斷627的處理等。該等相關微指令被排列,以達到多輸入資料區(qū)塊的經(jīng)明定密碼運算的最佳效能,其方式為插置整數(shù)單元微指令于密碼單元微指令序列中,以使整數(shù)運算可與密碼使用單元運算同步完成。微指令是包括于相關微指令中,用以使未處理的中斷627的進行與回復。由于該等指向密碼參數(shù)及資料的指標的全部皆設于x86架構式暫存器中,因此它們的狀態(tài)在中斷時會被儲存,且自中斷返回之時獲得回復。當一自一中斷返回時(即每當由一個中斷返回的時候),微指令測試X位元625的狀態(tài)以判斷是否一密碼運算刻正進行中。若判斷結果為是,則運算反復對該中斷發(fā)生時受處理的輸入資料區(qū)塊進行。該等相關微指令被排列,用以使指標暫存器及對一序列輸入文字區(qū)塊所為的一序列區(qū)塊密碼運算的過渡結果得在處理中斷627前受到更新。
請參閱圖6所示,圖中說明一用以令圖5微處理器進行密碼子運算的微指令700范例中的欄位。該圖中,微指令(micro instruction)700包括一微運算碼欄位(micro opcode field)701、一資料暫存器欄位(dataregister field)702及一暫存器欄位(register field)703。微運算碼欄位701明定一待受執(zhí)行的子運算,并指定微處理器600的至少一階級中邏輯電路以執(zhí)行子運算,其中微運算碼欄位701中的值指定微指令為本發(fā)明的密碼單元執(zhí)行。在一實施例中,微運算碼欄位701有二值,其中第一值“載入(XLOAD)”指定資料將從一架構性暫存器內(nèi)容所明定的記憶體位址中取得,其中架構性暫存器為資料暫存器欄位702的內(nèi)容所指者,而該資料接著被載入密碼單元中一暫存器,暫存器則為暫存器欄位703內(nèi)容所明定者,且上述所取得的資料(如密碼金鑰資料、控制字組、輸入文字資料及起始向量等)被送至密碼單元。微運算碼欄位701的第二值“儲存(XSTOR)”指定密碼單元所產(chǎn)生的資料當被儲存于一由一架構性暫存器內(nèi)容所指的記憶位址中,其中架構性暫存器由資料暫存器欄位702的內(nèi)容所標定。在一多階級密碼單元實施例中,暫存器欄位703的內(nèi)容預定復數(shù)個輸出資料區(qū)塊之一者儲存于記憶體中,輸出資料區(qū)塊為資料欄位704中密碼單元所提供,用以為儲存邏輯電路所動作。以下針對本發(fā)明的密碼單元所執(zhí)行的載入及載入微指令進行更詳細的說明,其中將配合表格2及表格3進行說明。
接續(xù)請參閱下列表格2所示
表格2在上述的表格2中,用以說明圖6中格式700的載入微指令的暫存器欄位703。如前面所述,一微指令序列在一密碼指令轉換后產(chǎn)生,微指令序列包括一第一組復數(shù)個微指令及一第二組復數(shù)個微指令,其中第一組復數(shù)個微指令為密碼單元所執(zhí)行,而第二組復數(shù)個微指令則為微處理器中密碼單元外的至少一平行功能單元所執(zhí)行,并使計數(shù)器更新、暫時暫存器、架構性暫存器、機器特殊暫存器的狀態(tài)位元的測試及設定等子動作進行。第一組復數(shù)個指令提供金鑰資料及密碼參數(shù),并輸入資料至密碼單元而令的產(chǎn)生金鑰排程(或載入已自記憶體取得的金鑰排程),以載入并加密(或解密)輸入文字資料,并儲存輸出文字資料。此外,一載入微指令被送至密碼單元以載入控制字組資料、載入一密碼金鑰或金鑰排程、載入起始向量資料、載入輸入文字資料及載入輸入文字資料,并令密碼單元開始進行一指定的密碼運算。此時,一載入微指令的暫存器欄位703值0b010令密碼單元載入一控制字組至其內(nèi)部控制字組暫存器中。當微指令在管線中進行時,經(jīng)由使用一暫存器階級中的架構性控制字組指標暫存器內(nèi)容可得控制字組儲存的記憶體位址。記憶邏輯電路將位址轉換成一記憶體存取的實際位址;負載邏輯電路自快取記憶體取得控制字組,并將控制字組置入資料欄位704中,且控制字組接著被送至密碼單元。同樣地,暫存器欄位值0b100令密碼單元載入資料欄位704中輸入文字資料,接著開始預定的密碼運算。輸入資料的存取是經(jīng)由一存于一架構性暫存器中的一指標為之,此與控制字組者相當。值0b101令資料欄位704中輸入資料載入內(nèi)部暫存器IN-1中,該等資料可為輸入文字資料(在管線作業(yè)時)或起始向量;值0b110及0b111則令密碼單元分別載入一密碼金鑰或使用者產(chǎn)生的金鑰排程中一金鑰的低及高位元。在本發(fā)明中,使用者的定義為執(zhí)行一特定功能或動作者,其可體現(xiàn)應用程式、作業(yè)系統(tǒng)、機器或人等。在一個實施例中,使用者生成密鑰表是由應用程式建立的。在一可替代的實施例中,使用者生成密鑰表是由人所建立的。
在一實施例中,暫存器欄位值為0b100及0b101時,一密碼單元分為二階級,用以使后續(xù)輸入文字資料區(qū)塊可加管線管理。因此,在欲執(zhí)行后續(xù)二輸入資料區(qū)塊時,一第一載入微指令先執(zhí)行以提供一第一輸入文字資料至輸入-1(IN-1),接著一第二載入微指令執(zhí)行以將一第二輸入文字資料至輸入-0(IN-0),并令指令單元開始執(zhí)行預定的密碼運算。
若密碼運算執(zhí)行所根據(jù)者為使用者產(chǎn)生的金鑰排程時,多數(shù)個對應該使用者產(chǎn)生的金鑰排程中金鑰的多數(shù)個載入微指令被送至密碼單元,以令單元載入金鑰排程中的的每一回合金鑰。
載入微指令中暫存器欄位703的所有其它值皆被保留。
請參閱下列的表格3所示,在表格中顯示圖6所示格式700的載入微指令的暫存器欄位703。
表格3一載入微指令被送至密碼單元以令其提供一所產(chǎn)生(經(jīng)密碼或解密)的輸出文字區(qū)塊至儲存邏輯電路中,以儲存于記憶體中位址欄位702所指定的位置。因此,本發(fā)明的轉換邏輯電路先發(fā)出一對一特定輸出文字區(qū)塊動作的載入微指令,接著再發(fā)出一對其對應輸入文字區(qū)塊動作的載入微指令。暫存器欄位703的值0b100令密碼單元提供與其內(nèi)部輸出輸出-0(OUT-0)暫存器相關的輸出文字區(qū)塊至儲存邏輯電路中以供儲存,輸出-0的內(nèi)容與送至輸入-0的輸入文字區(qū)塊相關。同樣地,暫存器欄位值所參考的內(nèi)部輸出-1暫存器的內(nèi)容與送至輸入-1的輸入文字資料相關。因此,復數(shù)個輸入文字區(qū)塊在載入金鑰及控制字組資料后可在密碼單元中加以管線管理,藉由以載入.輸入-1、載入.輸入-0(載入.輸入-0令密碼單元同樣開始執(zhí)行密碼運算)、載入.輸出-1、載入.OUT-0、載入.輸入-1、載入.輸入-0(開始進行后續(xù)二輸入文字區(qū)塊的動作)等的順序發(fā)出密碼微指令的方式即可達成。
請參閱圖7所示,該圖說明本發(fā)明中一用以預定密碼運算的密碼參數(shù)的控制字組1000格式(control word format)??刂谱纸M1000由一使用者程式化至記憶體中,且其指標在密碼運算執(zhí)行之前被送至一相容微處理器中一架構性暫存器。因此,一對應一經(jīng)提供的密碼指令電路的微指令序列中的一載入微指令被送出,以令微處理器讀取含指標的架構性暫存器,以將指標轉換成一實際記憶體位址,藉以自記憶體(快取記憶體)取得控制字組1000,并將控制字組1000載至密碼單元的內(nèi)部控制字組暫存器中。而密碼指令電路提供至少一密碼指令,其用來指示一密碼運算,而指令電路包括邏輯電路、裝置或微碼(即微指令或本機指令(native instruction))、或是一個邏輯電路、裝置或微碼的組合,由于該指令電路并非為本發(fā)明的重點,故在此不再對其作詳細說明。控制字組1000包括一代表保留(RSVD)欄位1001、一資料區(qū)塊大小(DSIZE)欄位1002、一金鑰大小(KSIZE)欄位1003、一加密/解碼(E/D)欄位1004、一中間結果(IRSLT)欄位1005、一金鑰產(chǎn)生(KGEN)欄位1006、一演算法(ALG)欄位1007及一回合計數(shù)(RCNT)欄位1008。
保留欄位1001的所有值皆受保留。資料區(qū)塊大小欄位1002的內(nèi)容預定加密及解密執(zhí)行時所用的輸入及輸出文字區(qū)塊大小。在一實施例中,資料區(qū)塊大小欄位1002預定區(qū)塊大小為128位元、192位元或256位元。金鑰大小欄位1003的內(nèi)容預定密碼及解密進行時所用的密碼金鑰的大小。在一實施例中,金鑰大小欄位1003預定金鑰的大小為128位元、192位元或256位元。加密/解碼欄位1004明定密碼運算是否當用于一加密或解密運算當中。金鑰產(chǎn)生欄位1006指出使用者產(chǎn)生的金鑰排程是否存于記憶體中,或一單一密碼金鑰是否存于記憶體中。若一單一密碼金鑰確實存在,那么微指令及密碼金鑰被發(fā)送至密碼使用單元,以令該單元將該金鑰拓展成為一依密碼演算法所得的金鑰排程,其中密碼演算法為演算法欄位1007中內(nèi)容所明定者。在一實施例中,演算法欄位1007的明定值明定使用前述的數(shù)據(jù)加密標準演算法、三重數(shù)據(jù)加密標準演算法或進階加密標準演算法。其余不同實施例中,采用的演算法為Rijndael Cipher及Twofish Cipher演算法等?;睾嫌嫈?shù)欄位1008的內(nèi)容預定使用的演算法在對每一輸入文字區(qū)塊運算時所用的密碼回合數(shù);雖然上述演算法所用標準對于每一輸入文字區(qū)塊是使用預定固定演算回合數(shù),但程式設計者可利用回合計數(shù)欄位1008來改變該等標準所明定的回合數(shù)。在一實施例中,程式設計者對于每一區(qū)塊得設定0至15等的不同回合。最后,中間結果欄位1005的內(nèi)容明定一輸入文字區(qū)塊是否當執(zhí)行依演算法欄位1007中明定的密碼演算法標準所為的回合計數(shù)欄位1008中明定回合數(shù),或是否密碼/解密是否該依回合計數(shù)欄位1008中明定的回合數(shù)加以執(zhí)行,其中該所執(zhí)行的最后一回合代表一過渡結果而非一最終結果,此為演算法欄位1007中明定演算法的特征。熟習該項技術者皆了解諸多演算可在每一回合中執(zhí)行相同的子運算,但在最后一回合所為者則不同。因此,若中間結果欄位1005被程式化成提供以過渡結果而非最終結果有其優(yōu)點,因其可令程式設計者確認所為演算法的中間步驟。舉例而言,藉漸進過渡結果確認演算法性能的作法可利用對一文字區(qū)塊加以一密碼回合、接著對該相同文字區(qū)塊執(zhí)行以二回合、并接著執(zhí)行三回合等方式而達成。
請參閱下列的表格4所示,其用以說明圖7的控制字組1000的金鑰大小欄位1003的范例值
表格4其中,值“00”令計算裝置以一128位元密碼金鑰大小執(zhí)行一預定密碼運算,值“01”令計算裝置以一192位元密碼金鑰大小執(zhí)行預定密碼運算,值“01”令計算裝置以一256位元密碼金鑰大小執(zhí)行預定密碼運算,其余的值則受保留。
請參閱圖8所示,其是為說明本發(fā)明的密碼單元的范例的方塊圖。在圖中,該密碼單元1200包括一微運算碼暫存器1203,其經(jīng)由一微指令匯流排(micro instruction bus)1214接收密碼微指令(即載入及儲存微指令),并具有一控制字組暫存器(control word register)1204、一輸入-0暫存器1205、輸入-1暫存器1206、一金鑰-0暫存器1207以及一金鑰-1暫存器1208。依照微指令暫存器1203中一載入微指令的內(nèi)容所預定者,資料經(jīng)由一載入?yún)R流排1211送至暫存器1204-1208。此外,密碼單元1200亦包括區(qū)塊密文邏輯電路(block cipher logic)1201,該邏輯電路1201耦合至暫存器1203-1208的每一者,并亦耦合至密碼金鑰隨機存取記憶體隨機存取記憶體(cryptographic key RAM)1202。此外,區(qū)塊密文邏輯電路1201還提供一暫停訊號(stall signal)1213,并亦提供區(qū)塊結果至一輸出-0暫存器1209及一輸出-1暫存器1210。該輸出暫存器1209-1210將其內(nèi)部所存內(nèi)容經(jīng)由一儲存匯流排(store bus)1212送至一相容微處理器的后級中。在一實施例中,微運算碼暫存器1203的大小為32位元,暫存器1204、1207及1208的大小為128位元,而暫存器1205-1206及1209-1210的大小則為256位元。
密碼微指令可與控制字組暫存器1204預定的資料選擇性依序提供至微指令暫存器1203、輸入暫存器1205-1206中其一、或金鑰暫存器1207-1208中其一。在表格2及表格3所示的實施例中,一控制字組經(jīng)由一載入微指令而被載至控制字組暫存器1204中,接著密碼金鑰或金鑰排程經(jīng)由后續(xù)載入微指令而被載入。若當被載入的密碼金鑰為128位元者,則一載入微指令用以指定暫存器金鑰-0 1207。若當被載入的密碼金鑰大于128位元,則一載入微指令指定暫存器金鑰-0 1207,且一載入微指令指定暫存器金鑰-11208。若當被載入者為一使用者產(chǎn)生的金鑰排程,則后續(xù)載入微指令指定暫存器金鑰-0 1207。被載入的金鑰排程中金鑰的每一者依順序置放于金鑰隨機存取記憶體1202中,以供其相對金鑰回合執(zhí)行之時所用。之后,輸入文字資料(若不需使用起始向量),被載至輸入-1暫存器1206。若使用起始向量,則其被經(jīng)由一載入微指令載至輸入-1暫存器1206。一送至輸入-0暫存器1205的微指令令密碼單元將輸入文字資料載至輸入-0暫存器1205,并開始利用輸入-1中或二輸入暫存器1205-1206中(當輸入資料正處管線處理之時)起始向量對暫存器輸入-0 1205中輸入文字資料執(zhí)行以密碼回合,其中密碼回合的執(zhí)行是依控制字組暫存器1204中內(nèi)容所提供的參數(shù)進行。當一接收及一指定輸入-0 1205的載入微指令時,區(qū)塊密文邏輯電路1201開始執(zhí)行控制字組內(nèi)容預定的密碼運算。若一單一密碼金鑰需加以拓展時,區(qū)塊密文邏輯電路1201產(chǎn)生金鑰排程中的每一者,并將其儲存于金鑰隨機存取記憶體1202。不論區(qū)塊密文邏輯電路1201是否產(chǎn)生一金鑰排程或金鑰排程是否自記憶體中載出,第一回合所用金鑰在區(qū)塊密文邏輯電路1201皆被加以快取,以使第一區(qū)塊密碼回合可在不需使用金鑰隨機存取記憶體1202的條件下進行。區(qū)塊密文邏輯電路1201在一經(jīng)起動后即持續(xù)對至少一輸入文字區(qū)塊執(zhí)行預定密碼運算,直至該運算完成止。接著,自金鑰隨機存取記憶體1202中提取所用密碼演算法所需的回合金鑰。密碼單元1200對受指定的輸入文字區(qū)塊加以明定的區(qū)塊密碼運算,后續(xù)輸入文字區(qū)塊經(jīng)由相對的后續(xù)載入及儲存微指令的執(zhí)行而被加密碼或解密。當一儲存微指令被執(zhí)行時,若預定的輸出資料(即輸出-0或輸出-1)尚未完全產(chǎn)生,則區(qū)塊密文邏輯電路1201發(fā)出拖延訊號1213。一旦輸出資料已經(jīng)產(chǎn)生并被置入一對應輸出暫存器1209-1210中,則該暫存器1209-1210的內(nèi)容被傳送至儲存匯流排1212。
請參閱圖9所示,其為一說明本發(fā)明用以依進階加密標準執(zhí)行密碼運算的區(qū)塊密文邏輯電路1300實施范例的方塊圖。區(qū)塊密文邏輯電路1300包括一回合引擎(round engine)1320,回合引擎1320經(jīng)由匯流排1311-1314及匯流排1316-1318耦合至一回合引擎控制器(round engine controller)1310,并包括一金鑰大小控制器(key size controller)1330,并藉使用一微指令暫存器(micro instruction register)1301、控制字組暫存器(control word register)1302、金鑰-0暫存器1303及金鑰-1暫存器1304而存取金鑰資料、微指令及所進行的密碼運算的參數(shù)。輸入暫存器1305-1306的內(nèi)容被送至回合引擎1320,且回合引擎1320提供對應輸出文字至輸出暫存器1307-1308。該輸出暫存器1307-1308亦經(jīng)由匯流排1316-1317耦合至回合引擎控制器1310,以令回合引擎控制器可使用每一后續(xù)密碼回合的結果,其中,該等結果經(jīng)由匯流排NEXTIN 1318而送至一下一密碼回合。金鑰隨機存取記憶體(圖中未顯示)中的密碼金鑰經(jīng)由匯流排1315而被存取;加密/解密訊號1311令回合引擎使用子運算而執(zhí)行密碼(如S-Box)或解密(如反向S-Box);回合(RNDCON)匯流排1312的內(nèi)容令回合引擎1320執(zhí)行一第一AES回合、一中間進階加密標準回合或一最后進階加密標準回合。根據(jù)一預定所用密碼金鑰的控制字組中一金鑰大小欄位的內(nèi)容,金鑰大小控制器1330經(jīng)由金鑰大小匯流排1319明定密碼金鑰的大小。若金鑰排程將以自動方式產(chǎn)生,則回合引擎控制器1310發(fā)出金鑰生成訊號1314而令回合引擎1320使用經(jīng)由匯流排1313提供的金鑰產(chǎn)生的一金鑰排程,其中該金鑰的大小由金鑰大小1319明定,且金鑰匯流排1313亦用以將每一對應執(zhí)行的回合金鑰提供與回合引擎1320。在一實施例中,金鑰大小匯流排1319的值指示金鑰大小為128位元、192位元或256位元。
回合引擎1320包括第一金鑰互斥(XOR)邏輯電路1321,該互斥邏輯電路1321耦合至一第一暫存器暫存-0 1322。該第一暫存器1322耦合至S-box邏輯電路1323,該S-box邏輯電路1323耦合至移列(Shift Row)邏輯電路1324,移列邏輯電路1324耦合至一第二暫存器暫存-1 1325,該第二暫存器1325則耦合至混欄(Mix Column)邏輯電路1326,混欄邏輯電路耦合至一第三暫存器暫存-2 1327。第一金鑰邏輯電路1321、S-box邏輯電路1323、移列邏輯電路1324及混欄邏輯電路1326被設定以對輸入文字資料執(zhí)行類似名稱的子運算,該等當執(zhí)行的子運算明定于上述進階加密標準FIPS標準中。此外,欄邏輯電路1326亦被設定以在所需的中間回合期間對輸入資料執(zhí)行進階加密標準互斥功能,其中功能的執(zhí)行是利用經(jīng)由金鑰匯流排1313所提供的回合金鑰。第一金鑰邏輯電路1321、S-box邏輯電路1323、移列邏輯電路1324及混欄邏輯電路1326亦被設定以在解密期間執(zhí)行其對應反進階加密標準子運算,且該解密動作是經(jīng)由加密/解密訊號1311的狀態(tài)而啟動。熟習該項技術者皆能了解中間回合資料的依據(jù)特定區(qū)塊密碼模式而送回至回合引擎1320是為控制字組暫存器1302所明定。起始向量資料(若需要)經(jīng)由匯流排NEXTIN 1318而送至回合引擎1320。
在圖9所示實施例中,回合引擎被分作二階級,即一位于暫存-0 1322及暫存-1 1325間的第一階級及一位于暫存-1 1325及暫存-2 1327間的第二階級。中間回合資料在二階級之間受管線管理,且管線控管是與一時脈訊號(圖中未顯示)同步為之。當對一輸入資料區(qū)塊的一密碼運算動作完成時,相關輸出資料被置入一對應輸出暫存器1307-1308中。當一儲存微指令被執(zhí)行時,一指定輸出暫存器1307-1308即被送至一儲存匯流排(圖中未顯示)上。
請參閱圖10所示,圖中所示為一說明本發(fā)明的一用以在中斷發(fā)生時保存密碼參數(shù)狀態(tài)的方法的流程圖。該流程起始于方塊1402,此時一指令流為一微處理器執(zhí)行,其中指令流不需包括本案中所述密碼指令。接著,流程往決策方塊1404移動。
在決策區(qū)塊1404時,一中斷事件(如可遮罩中斷、非可遮罩中斷、頁錯誤、工作切換等)是否正發(fā)生中將受判斷,此時該指令流中需有一改變而形成一指令流(“中斷處理者”)以處理該中斷事件。若中斷確實正進行中,該流程往區(qū)塊1406前進;若否,則該流程在決策方塊1404上反復判斷直至一中斷事件發(fā)生,其中在反復判斷期間指令執(zhí)行的動作持續(xù)進行。
在方塊1404時,由于在將程式控制權傳送至一對應中斷處理者之前已經(jīng)有一中斷事件發(fā)生,故本發(fā)明的中斷邏輯電路對一旗標暫存器中的X位元加以清除,如此可確保若在中斷處理者處返回時一區(qū)塊密碼運算正進行中、至少一中斷事件的發(fā)生將被指出且控制字組資料及金鑰資料必須在持續(xù)進行區(qū)塊密碼運算之前再被載入,其中密碼運算所針對的輸入資料區(qū)塊為輸入指標暫存器內(nèi)容所指者。
在方塊1408時,包括與本發(fā)明的區(qū)塊密碼運算性能相關的指標及計數(shù)器架構性暫存器被存至記憶體中。熟習該項技術者皆能了解,現(xiàn)今資料計算裝置中架構性暫存器的儲存典型上是在傳送控制至中斷處理者之前為之,因此本發(fā)明提出本資料架構態(tài)樣以令中斷事件發(fā)生整個過程中具有執(zhí)行透明度。在暫存器被儲存后,流程前進至方塊1410。
在方塊1410時,程式流被送至中斷處理者處。接著,流程前進至方塊1412。
該方法在行進至方塊1412時結束。熟習該項技術者皆能了解圖10的方法在于中斷處理者處返回時在方塊1402處再度開始。
請參閱圖11所示,圖中所示為一用以說明本發(fā)明的利用一使用者預定密碼金鑰大小而于至少一中斷事件發(fā)生之時對復數(shù)個輸入資料區(qū)塊執(zhí)行一密碼運算的方法的流程圖1500。為使說明較為清楚,依據(jù)區(qū)塊密文模式執(zhí)行的需要對區(qū)塊間(如輸出回授模式及密文回授模式等之間)起始向量等效者加以更新,及儲存的明定密碼運算流程(圖中未顯示),但該等其它區(qū)塊密文模式亦為本發(fā)明的方法所涵蓋。
流程開始于方塊1502,此時一本發(fā)明的密碼指令使一密碼運算開始執(zhí)行。密碼指令的執(zhí)行可為一第一執(zhí)行,或可為一第一執(zhí)行之后的執(zhí)行,因為一中斷事件造成執(zhí)行中斷之故,其中中斷事件對執(zhí)行的中斷使得程式控制權在一中斷處理者已執(zhí)行之后傳送回至密碼指令。接著,流程行進至方塊1504。
在方塊1504時,一本發(fā)明的輸入指標暫存器內(nèi)容所指的一記憶體資料區(qū)塊自記憶體中載出,且一預定密碼運算即開始。在一預定實施例中,執(zhí)行預定密碼運算的密碼金鑰大小為128位元,且指令需執(zhí)行以在發(fā)出密碼指令之前清除X位元。在一x86相容且一x86旗標暫存器使用30位元的實施例中,X位元可藉執(zhí)行一PHSDFD指令,并再接著執(zhí)行一POPFD指令而受清除。然而,熟習該項技術者皆知在其它不同實施例中其它指令必須用以清除X位元。在一實施例中,預定的密碼運算根據(jù)進階加密標準演算法開始進行。接著,流程行進至決策方塊1506。
在決策方塊1506時,一旗標暫存器中X位元是否為設定狀態(tài)被加判斷。若X位元被設定,則控制字組及以被載進本發(fā)明的密碼使用單元的金鑰排程之值成立;若X位元被清除,則控制字組及以被載進本發(fā)明的密碼單元的金鑰排程之值不成立。如上述配合圖10所略為提及者,X位元在一中斷事件發(fā)生之時被清除。若X位元被設定,則流程行進至方塊152;若X位元被清除,則流程行進至方塊1508。
在方塊1508時,由于一被清除的X位元已指出一中斷事件已發(fā)生或一新控制字組及(或)金鑰資料將被載入,因此一控制字組自記憶體中載出。在一實施例中,控制字組的載入使密碼單元不執(zhí)行預定密碼運算,如上述配合方塊1504所載述者。在本實施范例中方塊1504中一密碼運算的開始可使多個依電子密碼書模式進行的128位元區(qū)塊密碼運算得到最佳化,其方式為假設一目前的控制字組及金鑰資料將被使用、且利用一128位元金鑰對128位元輸入?yún)^(qū)塊所為的電子密碼書模式為最常用的區(qū)塊密文模式。因此,目前輸入資料區(qū)塊被載入,且在核對決策方塊1506中X位元狀態(tài)之前開始的密碼運算被重設。接著,流程行進至決策方塊1514。
在決策方塊時,方塊1508處取得的控制字組的KSIZE欄位被依據(jù)以決定預定密碼運算執(zhí)行之時當受使用的金鑰大小。若金鑰大小欄位值預定為一192位元的金鑰,那么流程行進至方塊1510;若金鑰大小欄位值預定為一128位元的金鑰,那么流程行進至方塊1516;若金鑰大小欄位值預定為一256位元金鑰,則流程行進至方塊1518。
在方塊1512時,密碼金鑰資料自記憶體中載出。根據(jù)控制字組中金鑰生成及金鑰大小欄位的狀態(tài),金鑰資料非完全載自記憶體(即一使用者產(chǎn)生的金鑰排程)即一起始金鑰被載入,并被拓展成一金鑰排程。接著,流程行進至方塊1522。
在方塊1516時,由于區(qū)塊密文邏輯電路中匯流排金鑰大小預定一128位元密碼金鑰,此時所需進行者為載入/拓展密碼金鑰資料,如上述配合方塊1512所述者。接著,流程行進至方塊1522。
在方塊1518時,本發(fā)明的區(qū)塊密文邏輯電路中匯流排金鑰大小被設定,以令其回合引擎利用一256位元密碼金鑰執(zhí)行密碼運算。接著,流程行進至方塊1520。
在方塊1520時,密碼金鑰資料如上述配合方塊1512說明的方式加以載入/拓展。接著,流程行進至方塊1522。
在方塊1518時,方塊1504所指的輸入?yún)^(qū)塊再度被載入,且密碼運算依最新載入的控制字組及金鑰排程開始進行,其中此時的載入是依控制字組中DSIZE欄位值明定的區(qū)塊大小進行。
在方塊1524時,一大小對應于被載入輸入?yún)^(qū)塊的輸出區(qū)塊被產(chǎn)生。當進行加密動作時,輸入?yún)^(qū)塊為一未加密文件區(qū)塊,且該輸出區(qū)塊為一對應密文區(qū)塊。當進行解密動作時,輸入?yún)^(qū)塊為一密文區(qū)塊,且輸出區(qū)塊為一對應未加密文件區(qū)塊。接著,流程行進至方塊1528。
在方塊1528時,輸入及輸出區(qū)塊指標暫存器改變成指向下一輸入及輸出資料區(qū)塊,且是依控制字組中資料區(qū)塊大小欄位值為之。此外,區(qū)塊計數(shù)器暫存器的內(nèi)容被改變成指出目前輸入資料區(qū)塊的密碼運算的完成。在配合圖11討論的實施例中,區(qū)塊計數(shù)器暫存器值被遞減。不過,熟習該項技術者皆知其它不同實施例可對區(qū)塊計數(shù)器暫存器的內(nèi)容可加操縱及測試,以亦能對輸入文字區(qū)塊加以管線式執(zhí)行。接著,流程行進至決策區(qū)塊1530。
在決策區(qū)塊1530時,一輸入資料區(qū)塊是否當繼續(xù)加以運算被受判斷。在此處所述實施例中,區(qū)塊計數(shù)器被用以判斷其值是否等于零。若無任何區(qū)塊當被執(zhí)行時,則流程行進至方塊1534;若一區(qū)塊當被繼續(xù)執(zhí)行,則流程行進至方塊1532。
在方塊1532時,一為輸入指標暫存器內(nèi)容所指的下一輸入資料區(qū)塊被載入。接著,流程行進至方塊1524。
該方法在行進至方塊1534時結束。
本發(fā)明的目的、特征及優(yōu)點已經(jīng)詳述于上,但其它實施例亦屬于本發(fā)明包括的范圍。舉例而言,本發(fā)明的與x86架構相容的實施例已經(jīng)詳盡描述于上,由于x86架構為一般技術人員所廣泛了解,故對其的討論可用以教示本發(fā)明的其它部份。亦即,本發(fā)明的范圍擴及PowerPC、MIPS等其它指令集架構,并亦適用于其它全新的指令集架構。
甚者,本發(fā)明的密碼運算亦可在一計算系統(tǒng)中微處理器本身以外的控制元件中進行,如可在計算系統(tǒng)中一不同于微處理器所在集成電路上的一密碼單元上進行,該等實施例可依序整合于一圍繞一微處理的晶片組(如北橋及南橋)中,或可構成一專用以執(zhí)行密碼運算的處理器,此時密碼指令由一主微處理器被送至處理器中。本發(fā)明亦可用于嵌入式控制器、工業(yè)控制器、訊號處理器、陣列處理器以及各種可用以處理資料的類似裝置中。此外,本發(fā)明亦包括一僅具有上述中該等用以執(zhí)行密碼運算所必須的控制元件的實施例。以上述方式呈現(xiàn)的裝置確實可將執(zhí)行密碼運算的低成本及低功率代用方式單由一通訊系統(tǒng)中一加密/解密處理器等實施之。為便于說明,本案發(fā)明人將上述該等不同處理元件統(tǒng)稱作處理器。
此外,雖然上述說明中本發(fā)明是以128位元區(qū)塊作為代表說明,其它各種不同區(qū)塊大小亦可使用之,僅需改變攜帶輸入資料、輸出資料、金鑰及控制字組的暫存器的大小即可達成。
再者,雖然資料加密標準、三重資料加密標準及進階加密標準的特征已在本案中詳述,但本案發(fā)明人當特別說明,本發(fā)明實際上亦包括一般所較不常用的區(qū)塊密文演算法,如MARS密文、Rijndael密文、Twofish密文及Blowfish密文、Serpent密文及RC6密文。在詳閱過上述說明后,本發(fā)明的專用區(qū)塊密碼使用裝置及微處理器中的支援方法必足為一般所了解,其中極微區(qū)塊密碼運算可經(jīng)由對一單一指令的執(zhí)行而被引動動作。
此外,雖然本發(fā)明已針對區(qū)塊密碼演算法及執(zhí)行區(qū)塊密碼功能的相關技術進行說明,但本發(fā)明實則包括區(qū)塊密碼的其它密碼使用形式。讀者亦不難理解使用者可藉單一指令的執(zhí)行而令一相容微處理器在包括一專用密碼使用單元的條件下執(zhí)行加密或解密等密碼運算,其中專用密碼單元是用以完成指令所預定的密碼功能。
甚者,本案中所述回合引擎可提供一二階級裝置以對二輸入資料區(qū)塊進行管線式處理,本案發(fā)明人當特別說明超過三階級的實施例亦存在之??梢灶A見的是,支援多輸入資料區(qū)塊的管線式處理工作的分級方式可隨一相容微處理器中其它階級的切分技術的提升而演進。
最后,本發(fā)明已經(jīng)詳述支援復數(shù)個區(qū)塊密碼演算法的密碼單元為單一者,但本發(fā)明的范圍實亦包括多個密碼單元,該等單元在運算上與相容微處理器中其它執(zhí)行單元平行耦合,且皆設定以執(zhí)行一既明定的區(qū)塊密碼演算法。舉例而言,一第一單元設定以執(zhí)行進階加密標準演算法,一第二單元設定以執(zhí)行資料加密標準演算法等。
本發(fā)明已針對特定實施例詳述如上,熟習該項技術者可在不違本發(fā)明的精神及范圍的條件下,對本發(fā)明加以改變或更動,該等改變或更動仍不脫離本發(fā)明的范圍,本發(fā)明的精神及范圍將定義于申請專利范圍中。
以上所述,僅是本發(fā)明的較佳實施例而已,并非對本發(fā)明作任何形式上的限制,雖然本發(fā)明已以較佳實施例揭露如上,然而并非用以限定本發(fā)明,任何熟習本專業(yè)的技術人員,在不脫離本發(fā)明技術方案范圍內(nèi),當可利用上述揭示的方法及技術內(nèi)容作出些許的更動或修飾為等同變化的等效實施例,但是凡是未脫離本發(fā)明技術方案的內(nèi)容,依據(jù)本發(fā)明的技術實質對以上實施例所作的任何簡單修改、等同變化與修飾,均仍屬于本發(fā)明技術方案的范圍內(nèi)。
權利要求
1.一種可設定密碼金鑰大小的微處理器裝置,其特征在于其包括一密碼指令電路,用以產(chǎn)生一密碼指令,該密碼指令是為一計算裝置所接收,并屬于在該計算裝置上執(zhí)行的一指令流的一部份,其中該密碼指令指定該等密碼運算之一者,且該密碼指令指定復數(shù)個密碼金鑰大小之一者;以及執(zhí)行邏輯電路,在運算上耦合至該密碼指令電路,并被設定以執(zhí)行被指定的密碼運算,該執(zhí)行邏輯電路包括一金鑰大小控制器,用以在被指定的密碼運算執(zhí)行期間使用被指定的密碼金鑰大小。
2.根據(jù)權利要求1所述的裝置,其特征在于其中所述的被指定的密碼運算更包括一加密運算,該加密運算包括對復數(shù)個明文區(qū)塊加以加密的運算,以產(chǎn)生對應的復數(shù)個密文區(qū)塊;以及一解密運算,該解密運算包括對復數(shù)個密文區(qū)塊加以解密的運算,以產(chǎn)生對應的復數(shù)個明文區(qū)塊。
3.根據(jù)權利要求1所述的裝置,其特征在于其中所述的被指定的密碼金鑰大小為128位元、192位元或256位元。
4.根據(jù)權利要求1所述的裝置,其特征在于其中所述的金鑰大小控制器被用以解譯該密碼指令所參考的一控制字組中的一金鑰大小欄位。
5.根據(jù)權利要求1所述的裝置,其特征在于其中所述的密碼指令的預定是依x86指令格式。
6.根據(jù)權利要求1所述的裝置,其特征在于其中所述的密碼指令參考該計算裝置中復數(shù)個暫存器。
7.根據(jù)權利要求6所述的裝置,其特征在于其中所述的該等暫存器包括一第一暫存器,該第一暫存器的內(nèi)容包括一第一指標,該第一指標指向一第一記憶體位址,該第一記憶體位址明定一第一記憶體位置,用以對復數(shù)個輸入文字區(qū)塊進行存取,其中該等輸入文字區(qū)塊是被用以成該等密碼運算;一第二暫存器,該第二暫存器的內(nèi)容包括一第二指標,該第二指標指向一第二記憶體位址,該第二記憶體位址明定一第二記憶體位置,用以儲存對應的復數(shù)個輸出文字區(qū)塊,該等對應的復數(shù)個輸出文字區(qū)塊是為在復數(shù)個輸入文字區(qū)塊執(zhí)行被指定的密碼運算所產(chǎn)生的結果;一第三暫存器,該第三暫存器的內(nèi)容指出復數(shù)個輸入文區(qū)塊中的某幾個區(qū)塊;一第四暫存器,該第四暫存器的內(nèi)容包括一第三指標,該第三指標指向一第三記憶體位址,該第三記憶體位址明定一第三記憶體位置,用以存取完成被指定的密碼運算所需的密碼金鑰資料;一第五暫存器,該第五暫存器的內(nèi)容包括一第四指標,該第四指標指向一第四記憶體位址,該第四記憶體位址明定一第四記憶體位置,該第四記憶體位置包括該起始向量位置,該起始向量位置對應的內(nèi)容包括一起始向量或該起始向量的等效者,用以完成被指定的密碼運算;以及一第六暫存器,該第六暫存器的內(nèi)容包括一第五指標,該第五指標指向一第五記憶體位址,該第五記憶體位址用以明定一第五記憶體位址,用以存取一控制字組以完成被指定的密碼運算,其中該控制字組預定被指定的密碼運算的密碼參數(shù),且其中該控制字組包括一金鑰大小欄位,該金鑰大小欄位被設定以明定被指定的密碼金鑰大小在被指定的密碼運算執(zhí)行時的大小。
8.根據(jù)權利要求7所述的裝置,其特征在于其中所述的密碼金鑰資料包括一密碼金鑰,該密碼金鑰包括多數(shù)個位元,該多數(shù)個位元是依被指定的密碼金鑰大小而定;以及一使用者產(chǎn)生的密碼金鑰排程。
9.根據(jù)權利要求1所述的裝置,其特征在于其中所述的執(zhí)行邏輯電路包括一密碼單元,該密碼單元被設定用以對復數(shù)個輸入文字區(qū)塊的每一者執(zhí)行復數(shù)個密碼回合,以產(chǎn)生對應的復數(shù)個輸出文字區(qū)塊的每一者,其中被指定的密碼金鑰大小為一控制字組所預定,其中該控制字組被提供予該密碼單元中該金鑰大小控制器。
10.一種可設定密碼金鑰大小的微處理器裝置,其特征在于其包括一密碼單元,位于一裝置中,該密碼單元被設定在接收一指令流內(nèi)的一密碼指令后執(zhí)行該等密碼運算之一者,其中該指令流預定被指定的密碼運算,且該密碼指令亦預定一當于執(zhí)行被指定的密碼運算所使用的金鑰大??;以及金鑰大小控制邏輯電路,是運算地耦合于該密碼單元,并被設定以令該裝置在執(zhí)行被指定的密碼運算時使用該金鑰大小。
11.根據(jù)權利要求10所述的裝置,其特征在于其中所述的金鑰大小為128位元、192位元或256位元。
12.根據(jù)權利要求10所述的裝置,其特征在于其中所述的金鑰大小控制邏輯電路被設定以解譯一在一為該密碼指令參考的控制字組中的一金鑰大小欄位。
13.根據(jù)權利要求10所述的裝置,其特征在于其中所述的密碼指令的預定是依該x86指令格式。
14,一種可設定密碼金鑰大小的方法,其特征在于其包括下列步驟接收一密碼指令,該密碼指令預定復數(shù)個密碼運算之一者執(zhí)行期間的密碼金鑰大小;以及在執(zhí)行被指定的密碼運算時使用該密碼金鑰大小。
15.根據(jù)權利要求14所述的方法,其特征在于其中所述的接收步驟包括經(jīng)由一在一為該密碼指令參考的控制字組中的一欄位以明定該金鑰密碼大小的步驟。
16.根據(jù)權利要求14所述的方法,其特征在于其中所述的接收步驟包括依該x86指令格式預定該密碼指令。
17.根據(jù)權利要求15所述的方法,其特征在于其中所述的明定步驟包括預定128位元、預定192位元或預定256位元為該密碼金鑰大小。
全文摘要
本發(fā)明是有關于一種可設定密碼金鑰大小的微處理器裝置及方法,是一種在一計算裝置中利用可程式化密碼金鑰大小對復數(shù)個輸入資料區(qū)塊執(zhí)行密碼運算的裝置及方法。例如,一種執(zhí)行密碼運算的裝置,該裝置包括密碼指令電路及執(zhí)行邏輯電路,該密碼指令電路是提供至少一密碼指令,通過一計算設備接收以作為在計算設備上執(zhí)行一指令流的部分。密碼指令電路指定復數(shù)個密碼運算之一者,并亦指定復數(shù)種密碼金鑰大小之一者。在運算上,執(zhí)行邏輯電路耦合至密碼指令電路,并執(zhí)行被指定的密碼運算。執(zhí)行邏輯電路具有一密碼金鑰大小控制器,該控制器在執(zhí)行被指定的密碼運算期間使用被指定的密碼金鑰大小。
文檔編號H04L9/08GK1684409SQ20051005986
公開日2005年10月19日 申請日期2005年3月31日 優(yōu)先權日2004年4月16日
發(fā)明者亨利 G·葛倫, A·克理斯賓 湯姆士, 派克 泰利 申請人:威盛電子股份有限公司