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