亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

具最佳化區(qū)塊密碼功能的微處理器及方法

文檔序號(hào):7598281閱讀:290來源:國(guó)知局
專利名稱:具最佳化區(qū)塊密碼功能的微處理器及方法
技術(shù)領(lǐng)域
本發(fā)明是有關(guān)于微電子領(lǐng)域,特別是有關(guān)于一種可在具有微指令最佳化順序的計(jì)算裝置中執(zhí)行密碼運(yùn)算的裝置及方法,以增加此計(jì)算裝置的產(chǎn)量(throughput)。
背景技術(shù)
早期的計(jì)算機(jī)系統(tǒng)是獨(dú)立操作于其它計(jì)算機(jī)系統(tǒng)之外,據(jù)此,執(zhí)行于此計(jì)算機(jī)系統(tǒng)中的應(yīng)用程序所需的輸入數(shù)據(jù),若不是儲(chǔ)存于此計(jì)算機(jī)系統(tǒng)就是由應(yīng)用程序設(shè)計(jì)人員在執(zhí)行時(shí)提供;而應(yīng)用程序執(zhí)行結(jié)果所產(chǎn)生的輸出數(shù)據(jù),其形式一般為打印輸出的紙張,或者是寫入磁帶、磁盤或是此計(jì)算機(jī)系統(tǒng)其它類型的儲(chǔ)存裝置的檔案。輸出檔案可以是之后在相同計(jì)算機(jī)系統(tǒng)中執(zhí)行的應(yīng)用程序的輸入檔案,或者,當(dāng)輸出數(shù)據(jù)先前被儲(chǔ)存成檔案于可移除或可輸送的儲(chǔ)存裝置時(shí),其也可以提供給不同但兼容的計(jì)算機(jī)系統(tǒng)的應(yīng)用程序使用。在這些早期的系統(tǒng),保護(hù)機(jī)密信息的需求是公認(rèn),并且在其它信息安全措施中,密碼應(yīng)用程序被發(fā)展及應(yīng)用以防止機(jī)密信息被未授權(quán)揭露。這些密碼程序一般是以攪合(scramble)及解讀(unscramble)在儲(chǔ)存裝置中儲(chǔ)存成檔案的輸出數(shù)據(jù)。
其后沒幾年,使用者開始發(fā)現(xiàn)通過由網(wǎng)絡(luò)將計(jì)算機(jī)連接可以提供信息共享存取的好處,因此網(wǎng)絡(luò)架構(gòu)、操作系統(tǒng)、以及數(shù)據(jù)傳輸協(xié)議等均發(fā)展成不僅支持存取共享數(shù)據(jù)的能力,更是其顯著的特征。例如使用者的計(jì)算機(jī)工作站可以在不同工作站或網(wǎng)絡(luò)文件服務(wù)器存取檔案,或者利用因特網(wǎng)獲得新聞及其它信息,或者對(duì)數(shù)以百計(jì)的其它計(jì)算機(jī)傳送及接收電子訊息(如電子郵件),或者與經(jīng)銷商的計(jì)算機(jī)系統(tǒng)連接并提供信用卡或銀行信息以購買產(chǎn)品,或者在餐廳、機(jī)場(chǎng)或其它公共場(chǎng)合利用無線網(wǎng)絡(luò)進(jìn)行上述的任何活動(dòng)。因此,保護(hù)機(jī)密數(shù)據(jù)及傳輸免于未授權(quán)揭露的需求已急速的成長(zhǎng),而在某些特定的狀況下,使用者被迫保護(hù)其機(jī)密數(shù)據(jù)的情況也大大的增加。目前新聞?lì)^條通常集中在計(jì)算機(jī)信息安全問題,例如垃圾郵件(spam)、駭客、身分盜取、反向工程、惡作劇以及信用卡詐騙等是公眾所關(guān)注之前幾名。而當(dāng)這些從各方面侵入私人領(lǐng)域的動(dòng)機(jī)由無心的錯(cuò)誤到有預(yù)謀的網(wǎng)絡(luò)攻擊,負(fù)責(zé)的執(zhí)行單位以新法律、嚴(yán)厲的執(zhí)行以及公共教育節(jié)目響應(yīng)。然而,這些響應(yīng)并未有效遏止危及計(jì)算機(jī)信息的浪潮。昔日是政府、金融機(jī)構(gòu)、軍方所專注關(guān)切之間諜,現(xiàn)在對(duì)一般人而言也已成為重要的問題;間諜讀取他們的電子郵件或從他們的家用計(jì)算機(jī)存取他們檢查賬戶的交易。在商業(yè)之前,熟悉該項(xiàng)技術(shù)者可察知從小到大的社團(tuán)法人目前應(yīng)用其資源卓越的部分以保護(hù)財(cái)產(chǎn)信息。
信息安全領(lǐng)域提供我們技術(shù)及裝置以編碼數(shù)據(jù),并使其僅能由指定的個(gè)體加以解碼,此為所知的密碼(cryptography)。當(dāng)特別應(yīng)用于保護(hù)儲(chǔ)存或傳輸于計(jì)算機(jī)之間的信息時(shí),密碼最常被應(yīng)用于轉(zhuǎn)換機(jī)密數(shù)據(jù)(稱為“明文”;plaintext或cleartext)成為難以理解的形式(稱為“密文”;ciphertext)。轉(zhuǎn)變明文成為密文的轉(zhuǎn)換過程稱為加密(encryption;enciphering;ciphering),而轉(zhuǎn)變密文回明文的反向轉(zhuǎn)換過程稱為解密(decryption;deciphering;inverse ciphering)。
在密碼學(xué)的領(lǐng)域中,幾種程序及協(xié)議已發(fā)展到允許使用者不須具備許多知識(shí)及努力即可執(zhí)行密碼運(yùn)算,并且針對(duì)這些使用者使其可以傳輸或者提供其編碼形式的信息產(chǎn)品給不同的使用者。連同編碼信息,傳送者通常會(huì)提供接收者一“密碼鑰匙(cryptographic key)”以使接收者可以譯碼所編碼的信息,因此使得接收者能夠恢復(fù)或者獲得存取未編碼的原始信息。熟悉該項(xiàng)技術(shù)者可察知這些程序及協(xié)議一般是以暗語(password)保護(hù)、數(shù)學(xué)算法以及應(yīng)用程序特別設(shè)計(jì)的形式加以實(shí)現(xiàn)以加密及解密機(jī)密信息。
幾種類型的算法目前使用于加密及解密數(shù)據(jù)。算法根據(jù)上述一類型(例如一種RSA算法,公開鑰匙密碼算法)利用兩密碼鑰匙,一公開鑰匙與一私密鑰匙,加密或解密資料。根據(jù)一些公開鑰匙算法,接收者的公開鑰匙是被傳送者用來加密傳送給接收者的數(shù)據(jù),因?yàn)橛幸粩?shù)學(xué)關(guān)系存在于使用者的公開鑰匙與私密鑰匙之間,因此接收者必須利用其私密鑰匙解密此傳輸以恢復(fù)此數(shù)據(jù)。雖然這類型的密碼算法廣泛使用于現(xiàn)今,但其加密及解密的運(yùn)算卻是極慢甚至于少量的數(shù)據(jù)。一第二類型的算法,如所知的對(duì)稱鑰匙算法,提供同量等級(jí)的數(shù)據(jù)安全并且可以較快執(zhí)行。這些算法稱為對(duì)稱鑰匙算法因?yàn)樗麄儗?duì)加密及解密信息使用單一密碼鑰匙。在公開區(qū)段,目前有三種盛行單一鑰匙(single-key)密碼算法數(shù)據(jù)編碼標(biāo)準(zhǔn)(Data EncryptionStandard;DES)、三重DES以及進(jìn)階編碼標(biāo)準(zhǔn)(AdvancedEncryption Standard;AES)。因?yàn)檫@些算法保護(hù)機(jī)密資料的強(qiáng)度,美國(guó)政府機(jī)關(guān)目前正使用這些算法,但熟悉該項(xiàng)技術(shù)者預(yù)期這些算法中一個(gè)或多個(gè)算法在不久的將來會(huì)變成商業(yè)及非官方交易的標(biāo)準(zhǔn)。根據(jù)所有這些對(duì)稱鑰匙算法,明文及密文被劃分在指定大小中的區(qū)塊以進(jìn)行加密及解密。例如AES執(zhí)行密碼運(yùn)算于128位區(qū)塊的大小,并且使用128位、192位以及256位的密碼鑰匙長(zhǎng)度。其它對(duì)稱鑰匙算法,例如Rijndael Cipher也允許192位以及256位的數(shù)據(jù)區(qū)塊。據(jù)此,就一區(qū)塊加密運(yùn)算而言,一1024位的明文訊息加密當(dāng)成8個(gè)128位的區(qū)塊。
所有對(duì)稱鑰匙算法利用相同形式的次運(yùn)算以加密一區(qū)塊的明文,并且根據(jù)許多更常被應(yīng)用的對(duì)稱鑰匙算法,一初始密碼鑰匙被擴(kuò)展成復(fù)數(shù)個(gè)鑰匙(例如一“鑰匙排程”),每一鑰匙是用以當(dāng)成次運(yùn)算的一對(duì)應(yīng)密碼“回合”且執(zhí)行于明文區(qū)塊。例如鑰匙排程的第一鑰匙是用以執(zhí)行次運(yùn)算的第一密碼回合于明文區(qū)塊,第一回合的結(jié)果是用以當(dāng)成第二回合的輸入,其中第二回合利用鑰匙排程的第二鑰匙以產(chǎn)生第二結(jié)果,并且一具體指定數(shù)量后來的回合執(zhí)行產(chǎn)生一最終回合結(jié)果,即密文本身。根據(jù)AES算法,在每一回合的次運(yùn)算是參照于文獻(xiàn)中的SubBytes(或S-box)、ShiftRows、MixColums以及AddRoundKey。一區(qū)塊密文的解密是類似的處理并伴隨例外的執(zhí)行在每一回合,且回合的最終結(jié)果是一區(qū)塊的明文,上述的例外是指密文輸入反加密及反次運(yùn)算執(zhí)行(例如InverseMixColumns、Inverse ShiftRows)。
DES及三重DES利用不同特定的次運(yùn)算,但是這些次運(yùn)算是類似AES的次運(yùn)算,因?yàn)槠淅孟嗨频姆绞揭赞D(zhuǎn)換一區(qū)塊的明文成為一區(qū)塊的密文。
執(zhí)行密碼運(yùn)算于多連續(xù)的文字區(qū)塊,所有對(duì)稱鑰匙算法利用相同類別的模式,這些模式包含電子密碼本(electronic codebook;ECB)模式、密碼區(qū)塊鏈接(cipher block chaining;CBC)模式、密碼反饋模式(cipher feedback;CFB)以及輸出反饋模式(output feedback;OFB)。這些模式中有些利用一附加初始化向量于執(zhí)行次運(yùn)算期間,有些使用執(zhí)行于第一區(qū)塊明文的第一集(set)密碼回合的密文輸出當(dāng)成附加的輸入給執(zhí)行于第二區(qū)塊明文的第二集密碼回合。除此,本應(yīng)用的領(lǐng)域?qū)ΜF(xiàn)今對(duì)稱鑰匙密碼算法所應(yīng)用的每一密碼演算及次運(yùn)算提供更深層的討論。就具體指定執(zhí)行標(biāo)準(zhǔn)而言,讀者可由美國(guó)聯(lián)邦信息處理標(biāo)準(zhǔn)公告46-3(Federal Information Processing Standards Publication;FIPS-46-3),1999年10月25日出版,得到DES及三重DES的詳細(xì)探討;以及美國(guó)聯(lián)邦信息處理標(biāo)準(zhǔn)公告197(FIPS-197),2001年11月26日出版,得到AES的詳細(xì)探討。上述提及的兩種標(biāo)準(zhǔn)是由美國(guó)國(guó)家標(biāo)準(zhǔn)暨技術(shù)局(National Institute ofStandards and Technology;NIST)所發(fā)布及主張,在此列為參考以供本發(fā)明所有意圖及目的的說明。除上述所提及的標(biāo)準(zhǔn),教導(dǎo)(tutorial)、白皮書、套件(toolkit)以及資源文章均可透過因特網(wǎng)http//csrc.nist.gov/在NIST的計(jì)算機(jī)資源安全中心(Computer Security Resource Center;CSRC)獲得。
熟悉該項(xiàng)技術(shù)者可察知有許多的應(yīng)用程序能夠執(zhí)行在可以執(zhí)行密碼運(yùn)算(例如加密及解密)的計(jì)算機(jī)系統(tǒng)。實(shí)際上,某些操作系統(tǒng)(例如微軟Window XP、Linux)提供直接加密/解密的服務(wù)于密碼基元(primitive)、密碼應(yīng)用程序接口以及諸如此類的形式。然而,本發(fā)明人已觀察到現(xiàn)今計(jì)算機(jī)密碼技術(shù)在某些方面的缺陷,因此通過由圖1強(qiáng)調(diào)及討論這些缺陷。
圖1是方塊圖100圖解現(xiàn)今計(jì)算機(jī)密碼應(yīng)用程序。方塊圖100描繪第一計(jì)算機(jī)工作站101連接局域網(wǎng)絡(luò)105,且局域網(wǎng)絡(luò)105也連接第二計(jì)算機(jī)工作站102、網(wǎng)絡(luò)檔案儲(chǔ)存裝置106、第一路由器107或其它接口形式到廣域網(wǎng)絡(luò)110(例如因特網(wǎng))以及像是符合IEEE 802.11的無線網(wǎng)絡(luò)路由器108,筆記型計(jì)算機(jī)104則是透過無線網(wǎng)絡(luò)109與無線路由器108成為接口。在廣域網(wǎng)絡(luò)110方面,第二路由器111提供接口給第三計(jì)算機(jī)工作站103。
如上概述,現(xiàn)今的使用者在工作期間面臨許多次的計(jì)算機(jī)信息安全問題。例如在現(xiàn)今多任務(wù)(multi-tasking)操作系統(tǒng)的控制下,使用者工作站101可以同時(shí)執(zhí)行多個(gè)任務(wù)(task)且每一任務(wù)要求密碼運(yùn)算。使用者工作站101要求執(zhí)行加密/解密應(yīng)用程序112(無論是操作系統(tǒng)的一部分或是由操作系統(tǒng)所引動(dòng)(invoke))以儲(chǔ)存區(qū)域檔案于網(wǎng)絡(luò)檔案儲(chǔ)存裝置106,在檔案儲(chǔ)存的同時(shí),使用者可以傳送一加密訊息給在工作站102的第二使用者,其中工作站102也要求執(zhí)行加密/解密應(yīng)用程序112的一范例,而加密訊息可能是實(shí)時(shí)(例如實(shí)時(shí)訊息)或者是非實(shí)時(shí)(例如電子郵件)。此外,使用者可以透過廣域網(wǎng)絡(luò)110從工作站103存取或提供其金融數(shù)據(jù)(例如信用卡號(hào)、金融交易等)或者其它形式的機(jī)密數(shù)據(jù)。工作站103也可以代表是家庭辦公或其它遠(yuǎn)程計(jì)算機(jī)103,其可以讓工作站101的使用者離開辦公室時(shí)用以存取局域網(wǎng)絡(luò)105的任何共享資源101、102、106、107、108以及109。上述提及的每一活動(dòng)均要求引動(dòng)加密/解密應(yīng)用程序112的相對(duì)范例,并且無線網(wǎng)絡(luò)109目前普遍地提供于咖啡店、機(jī)場(chǎng)、學(xué)校以及其它公眾場(chǎng)所,因而促使使用者筆記型計(jì)算機(jī)104不僅對(duì)其他使用者傳送/接收的訊息進(jìn)行加密/解密,并且也對(duì)透過無線網(wǎng)絡(luò)109到無線路由器108的所有通訊進(jìn)行加密及解密。
熟悉該項(xiàng)技術(shù)者可因此察知在工作站101-104中連同每一要求密碼運(yùn)算的活動(dòng),須有一相對(duì)的要求以引動(dòng)(invoke)加密/解密應(yīng)用程序112的范例,因此計(jì)算機(jī)101-104在最近的將來有可能同時(shí)執(zhí)行數(shù)以百計(jì)的密碼運(yùn)算。
本發(fā)明人注意到上述計(jì)算機(jī)系統(tǒng)101-104通過由引動(dòng)加密/解密應(yīng)用程序112的一或多范例以執(zhí)行密碼運(yùn)算的方法的限制。例如透過程序規(guī)劃的軟件執(zhí)行一指定功能就比透過硬件執(zhí)行相同功能還慢。且每次執(zhí)行加密/解密應(yīng)用程序112時(shí),正在計(jì)算機(jī)101-104執(zhí)行的任務(wù)就必須暫緩執(zhí)行,并且密碼運(yùn)算的參數(shù)(例如明文、密文、模式以及鑰匙等)必須透過操作系統(tǒng)傳送給加密/解密應(yīng)用程序112為完成密碼運(yùn)算所引動(dòng)的范例。并且因?yàn)槊艽a演算須在一指定的數(shù)據(jù)區(qū)塊引動(dòng)許多回合的次運(yùn)算,加密/解密應(yīng)用程序112的執(zhí)行引動(dòng)許多計(jì)算機(jī)指令的執(zhí)行而對(duì)整體系統(tǒng)的處理速度產(chǎn)生不利的影響。熟悉該項(xiàng)技術(shù)者可察知在微軟Outlook傳送少量加密電子郵件訊息的時(shí)間會(huì)相當(dāng)于只傳送未加密電子郵件訊息的五倍。
此外,目前的技術(shù)受限于操作系統(tǒng)介入的延遲。大部分的應(yīng)用程序并無提供完整的鑰匙產(chǎn)生或加密/解密組件;其利用操作系統(tǒng)的組件或外掛應(yīng)用程序以完成上述的任務(wù),此外操作系統(tǒng)因中斷及其它正在執(zhí)行應(yīng)用程序的請(qǐng)求而轉(zhuǎn)移其執(zhí)行。
并且,本發(fā)明人注意到在現(xiàn)今計(jì)算機(jī)系統(tǒng)101-104的密碼運(yùn)算是相類似于微處理機(jī)尚未有浮點(diǎn)單元時(shí)的浮點(diǎn)數(shù)學(xué)運(yùn)算。早期的浮點(diǎn)單元運(yùn)算是由軟件所執(zhí)行,因此執(zhí)行的非常慢;同浮點(diǎn)運(yùn)算,由軟件執(zhí)行的密碼運(yùn)算也是極慢。當(dāng)浮點(diǎn)技術(shù)更進(jìn)一步發(fā)展,浮點(diǎn)輔助處理器提供浮點(diǎn)指令以供執(zhí)行,這些浮點(diǎn)輔助處理器執(zhí)行浮點(diǎn)運(yùn)算比軟件執(zhí)行快了許多,但卻增加了系統(tǒng)的成本。相同地,密碼輔助處理器目前以附加在電路板或以外接裝置與主處理器透過并列端口或其它接口總線(例如USB)成為接口的形式存在,這些輔助處理器能使密碼運(yùn)算的完成比由純軟件所執(zhí)行的快了許多。但是密碼輔助處理器增加系統(tǒng)配備的成本、要求額外的電源以及降低系統(tǒng)的整體可靠度。密碼輔助處理器的實(shí)現(xiàn)對(duì)刻意的窺探而言有其弱點(diǎn),因?yàn)閿?shù)據(jù)信道與主微處理器并不在相同的晶粒(die)上。
因此本發(fā)明人確認(rèn)將密碼硬件加入現(xiàn)今微處理器的需要,通過此,要求密碼運(yùn)算的應(yīng)用程序可通過由一單獨(dú)、基元(atomic)的密碼指令指示微處理器執(zhí)行密碼運(yùn)算。本發(fā)明人也確認(rèn)應(yīng)以此功能限定操作系統(tǒng)介入及管理的要求,并且期望密碼指令可以使用于應(yīng)用程序的權(quán)限層級(jí)(privilege level)以及密碼硬件可相稱(comport with)于現(xiàn)今微處理器的一般架構(gòu),并且密碼硬件及相關(guān)聯(lián)的密碼指令可支持兼容先前的操作系統(tǒng)及應(yīng)用程序。更期望的是提供執(zhí)行密碼運(yùn)算的裝置及方法,其可阻止未授權(quán)的監(jiān)視;其可支持及可程序化有關(guān)多密碼演算;其可支持核對(duì)及測(cè)試實(shí)體特定的密碼演算;其可允許使用者提供鑰匙也可自行產(chǎn)生鑰匙;其支持多數(shù)據(jù)區(qū)塊大小及鑰匙長(zhǎng)度(key size);其提供有效率的多資料區(qū)塊管線處理;以及其提供可程序化區(qū)塊加密/解密模式如ECB、CBC、CFB以及OFB。

發(fā)明內(nèi)容
本發(fā)明目的是用以解決上述現(xiàn)有技術(shù)中的問題及缺點(diǎn)。本發(fā)明提供一較佳的技術(shù)以執(zhí)行密碼運(yùn)算于一微處理機(jī)中。在一實(shí)施例中,提供一種執(zhí)行密碼運(yùn)算的裝置,而此裝置是包含密碼指令及轉(zhuǎn)譯邏輯。上述的密碼指令是由一計(jì)算裝置接收并將其當(dāng)成在此計(jì)算裝置上執(zhí)行指令流的一部分,并且此密碼指令指定一種密碼運(yùn)算。上述的轉(zhuǎn)譯邏輯是操作性地耦合密碼指令且將密碼指令轉(zhuǎn)譯成微指令,此微指令是用以在指示計(jì)算裝置儲(chǔ)存對(duì)應(yīng)第一輸入文字區(qū)塊的輸出文字區(qū)塊之前,指示計(jì)算裝置加載第二輸入文字區(qū)塊并對(duì)此第二輸入文字區(qū)塊執(zhí)行密碼運(yùn)算。因此,在對(duì)第二輸入文字區(qū)塊執(zhí)行密碼運(yùn)算期間,上述的輸出文字區(qū)塊可以被儲(chǔ)存。
本發(fā)明提供一種執(zhí)行密碼運(yùn)算的裝置,此裝置包含配置用以轉(zhuǎn)譯一密碼指令成一序列(sequence)微指令(microinstructions)的轉(zhuǎn)譯邏輯(translation logic)。此序列的微指令包含一第一微指令及一第二微指令。上述的第一微指令指示(direct)加載一第二輸入文字區(qū)塊并且執(zhí)行一密碼運(yùn)算于此第二輸入文字區(qū)塊。上述的第二微指令指示儲(chǔ)存一第一輸出文字區(qū)塊,此第一輸出文字區(qū)塊根據(jù)執(zhí)行的密碼運(yùn)算對(duì)應(yīng)于一第一輸入文字區(qū)塊。上述的轉(zhuǎn)譯邏輯發(fā)布(issue)第一微指令后發(fā)布第二微指令。
本發(fā)明提供一種在一裝置執(zhí)行密碼運(yùn)算的方法,此方法包含轉(zhuǎn)譯一密碼指令成一第一微指令及一第二微指令,其中此密碼指令指定(prescribes)一種密碼運(yùn)算的執(zhí)行。上述的第一微指令指示(direct)此裝置加載一第二輸入文字區(qū)塊并且執(zhí)行此密碼運(yùn)算于此第二輸入文字區(qū)塊,上述的第二微指令指示此裝置儲(chǔ)存一第一輸出文字區(qū)塊,此第一輸出文字區(qū)塊根據(jù)執(zhí)行的此密碼運(yùn)算對(duì)應(yīng)于一第一輸入文字區(qū)塊;以及發(fā)布(issue)上述的第一微指令給一密碼單元后,發(fā)布上述的第二微指令給此密碼單元;通過此在此密碼運(yùn)算對(duì)此第二輸入文字區(qū)塊執(zhí)行期間,此輸出文字區(qū)塊可以被儲(chǔ)存。


圖1是現(xiàn)今密碼應(yīng)用的方塊圖;圖2是執(zhí)行密碼運(yùn)算技術(shù)的方塊圖;圖3是本發(fā)明執(zhí)行密碼運(yùn)算的微處理器裝置的方塊圖;圖4是本發(fā)明的基元(atomic)密碼指令實(shí)施例的方塊圖;圖5是圖4的基元密碼指令區(qū)塊加密模式字段值的范例的表格;圖6是本發(fā)明在X86兼容微處理器中的密碼單元的方塊圖;圖7是圖6的微處理器中指示密碼次運(yùn)算的范例微指令字段的方塊圖;圖8是圖7的XLOAD微指令暫存字段值格式的表格;圖9是圖7的XSTOR微指令暫存字段值格式的表格;圖10是本發(fā)明指定密碼運(yùn)算參數(shù)的控制字組格式范例的方塊圖;圖11是本發(fā)明的一較佳實(shí)施密碼單元的方塊圖;圖12是本發(fā)明執(zhí)行有關(guān)進(jìn)階加密標(biāo)準(zhǔn)(AES)算法密碼運(yùn)算的一區(qū)塊加密邏輯實(shí)施例的方塊圖;圖13是本發(fā)明微指令流的一實(shí)施例對(duì)密碼單元的單階實(shí)施例的表格;圖14是本發(fā)明微指令流的另一實(shí)施例對(duì)密碼單元的單階
具體實(shí)施例方式
本發(fā)明的一些實(shí)施例會(huì)詳細(xì)描述如下。然而,除了詳細(xì)描述外,本發(fā)明還可以廣泛地在其它的實(shí)施例施行,且本發(fā)明的范圍不受限定,其以之后的專利范圍為準(zhǔn)。并且,為提供更清楚的描述及更容易理解本發(fā)明,圖示內(nèi)各部分并沒有依照其相對(duì)尺寸繪圖,某些尺寸與其它相關(guān)尺度的比例已經(jīng)被夸張;不相關(guān)的細(xì)節(jié)部分也未完全繪出,以求圖示的簡(jiǎn)潔。
鑒于上述所討論的密碼運(yùn)算及現(xiàn)今計(jì)算機(jī)系統(tǒng)用以加/解密數(shù)據(jù)的相關(guān)技術(shù),這些技術(shù)及其相關(guān)限制將在圖2中繼續(xù)探討,而接下來本發(fā)明也將根據(jù)圖3到圖16加以討論。本發(fā)明提供一種在現(xiàn)今計(jì)算機(jī)系統(tǒng)中執(zhí)行密碼運(yùn)算的裝置及方法,其透過主要機(jī)制展現(xiàn)優(yōu)秀的性能特征并且更滿足上述所提及的目標(biāo),像是限制操作系統(tǒng)的干預(yù)、先前(legacy)架構(gòu)的兼容性、算法及模式的可程序性、高效率的多數(shù)據(jù)區(qū)塊管線操作,防止駭客入侵以及可測(cè)試性等等。
請(qǐng)參照?qǐng)D2,方塊圖200描繪當(dāng)今計(jì)算機(jī)系統(tǒng)中執(zhí)行密碼運(yùn)算的技術(shù)。方塊圖200包含一微處理器201,其擷取指令及從系統(tǒng)內(nèi)存中一稱為應(yīng)用程序內(nèi)存203存取應(yīng)用程序相關(guān)的數(shù)據(jù),而程控及應(yīng)用程序內(nèi)存203中數(shù)據(jù)的存取通常是由屬于系統(tǒng)內(nèi)存保護(hù)范圍的操作系統(tǒng)軟件202所管理。如上所述,當(dāng)一執(zhí)行應(yīng)用程序(例如電子郵件程序或檔案儲(chǔ)存程序)要求執(zhí)行密碼運(yùn)算時(shí),此執(zhí)行應(yīng)用程序必須通過由指示(direct)微處理器201執(zhí)行相當(dāng)數(shù)量的指令以完成密碼運(yùn)算。這些指令可能是執(zhí)行應(yīng)用程序本身的子程序,也可能是連結(jié)到此執(zhí)行應(yīng)用程序的外掛應(yīng)用程序,或者是由操作系統(tǒng)202所提供的服務(wù)。姑且不論他們的關(guān)聯(lián)性,熟悉該項(xiàng)技術(shù)者可察知這些指令將駐于某些指定或分派的內(nèi)存范圍。為達(dá)討論目的,這些內(nèi)存范圍顯示在應(yīng)用內(nèi)存203并且包含一密碼鑰匙產(chǎn)生應(yīng)用204,其中密碼鑰匙產(chǎn)生應(yīng)用204產(chǎn)生或接收一密碼鑰匙并且擴(kuò)展此鑰匙成一鑰匙排程使用于密碼回合運(yùn)算中。就多區(qū)塊加密運(yùn)算而言,區(qū)塊加密應(yīng)用206被引動(dòng)(invoke)。區(qū)塊加密應(yīng)用206執(zhí)行存取明文(plaintext)區(qū)塊210、鑰匙排程205以及密碼參數(shù)209的指令,其中密碼參數(shù)209是進(jìn)一步指示明確的密碼運(yùn)算,如模式、鑰匙排程位置等,且在要求特定模式時(shí),加密應(yīng)用206也可存取初始向量208。加密應(yīng)用206執(zhí)行其內(nèi)的指令以產(chǎn)生對(duì)應(yīng)的密文(ciphertext)區(qū)塊211。同理,區(qū)塊解密應(yīng)用207被引動(dòng)以執(zhí)行區(qū)塊解密運(yùn)算。區(qū)塊解密應(yīng)用207執(zhí)行存取密文區(qū)塊211、鑰匙排程205以及密碼參數(shù)209的指令,其中密碼參數(shù)209是進(jìn)一步指示明確的密碼運(yùn)算,并且在要求特定模式時(shí),也可存取初始向量208。解密應(yīng)用207執(zhí)行其內(nèi)的指令以產(chǎn)生對(duì)應(yīng)的明文區(qū)塊210。
值得注意的是必須執(zhí)行相當(dāng)數(shù)量的指令以產(chǎn)生密碼鑰匙及加密或解密文字區(qū)塊。上述提及的FIPS說明書包含許多偽碼致能相當(dāng)數(shù)量指令的范例,因此,熟悉該項(xiàng)技術(shù)者可察知一個(gè)簡(jiǎn)單的加密運(yùn)算將要求數(shù)以百計(jì)的指令,并且每一指令須經(jīng)由微處理器201執(zhí)行以完成所要求的密碼運(yùn)算。并且,完成密碼運(yùn)算的指令執(zhí)行對(duì)正在執(zhí)行的應(yīng)用程序的主目的(例如檔案管理、實(shí)時(shí)訊息、電子郵件、遠(yuǎn)程檔案存取、信用卡交易)而言一般是屬多余,結(jié)果讓使用者誤為目前執(zhí)行的應(yīng)用程序執(zhí)行效率不佳。至于獨(dú)立或外掛的加密及解密應(yīng)用206及207,這些應(yīng)用206及207的引動(dòng)及管理也必須服從操作系統(tǒng)202的其它請(qǐng)求,例如支持中斷、例外(exception)以及更惡化問題的類似事件。并且計(jì)算機(jī)系統(tǒng)所要求每一同時(shí)的密碼運(yùn)算,應(yīng)用程序204、207及208的個(gè)別實(shí)例必須被配置在內(nèi)存203,且預(yù)期由微處理器201所要求執(zhí)行的同時(shí)密碼運(yùn)算的數(shù)目也將隨時(shí)間而增加。
本發(fā)明人注意到目前計(jì)算機(jī)系統(tǒng)密碼技術(shù)的問題與限制,并且確認(rèn)在微處理器中提供執(zhí)行密碼運(yùn)算的裝置及方法的需要。通過此,本發(fā)明提供一微處理器及相關(guān)的方法透過其內(nèi)的密碼單元執(zhí)行密碼運(yùn)算,此密碼單元是通過由單一密碼指令的程序行程(program)執(zhí)行密碼運(yùn)算。本發(fā)明現(xiàn)在將以圖3到圖12為參考加以討論。
請(qǐng)參照?qǐng)D3,其為本發(fā)明執(zhí)行密碼運(yùn)算的微處理器的方塊圖300。方塊圖300描繪一微處理器301,其透過內(nèi)存總線319與系統(tǒng)內(nèi)存321耦合連接,且處理器301包含從指令緩存器接收指令的一轉(zhuǎn)譯邏輯303。轉(zhuǎn)譯邏輯303包含邏輯、電路、裝置或微碼(例如微指令或本機(jī)指令),或邏輯、電路、裝置或微碼的組合,或用以轉(zhuǎn)譯指令成為指令相關(guān)序列的等效組件。這些在轉(zhuǎn)譯邏輯303中執(zhí)行轉(zhuǎn)譯的組件可能與在微處理器301中執(zhí)行其它功能的電路、微碼共享,而根據(jù)本應(yīng)用的范圍,微碼是對(duì)照一個(gè)或多個(gè)微指令的術(shù)語。一微指令(也可參照成一本機(jī)指令)是一單元層級(jí)執(zhí)行的一指令,例如微指令是由精簡(jiǎn)指令集計(jì)算機(jī)(reduced instruction set computer;RISC)微處理器直接執(zhí)行。至于復(fù)雜指令集計(jì)算機(jī)(complex instruction setcomputer;CISC)微處理器,如x86兼容的微處理器,其x86指令被轉(zhuǎn)譯為關(guān)聯(lián)的微指令并且由復(fù)雜指令集計(jì)算機(jī)微處理器中的單元直接執(zhí)行。轉(zhuǎn)譯邏輯303耦合微指令隊(duì)列304,且此微指令隊(duì)列304具有復(fù)數(shù)個(gè)通道305、306。微指令由微指令隊(duì)列304提供給包含一臨時(shí)文件307的暫存階段邏輯,而此臨時(shí)文件307包含復(fù)數(shù)個(gè)暫存308-313(register),其內(nèi)容在執(zhí)行一指定的密碼運(yùn)算前就已建立。暫存308-313指到內(nèi)存321中含有執(zhí)行指定密碼運(yùn)算數(shù)據(jù)的對(duì)應(yīng)位置323-327。暫存階段耦合到加載邏輯314,此加載邏輯314是與取回?cái)?shù)據(jù)以執(zhí)行址定密碼運(yùn)算的數(shù)據(jù)快取315成接口,而此數(shù)據(jù)快取315通過由數(shù)據(jù)總線319耦合到內(nèi)存321。執(zhí)行邏輯328偶合到加載邏輯314并且執(zhí)行由前面階段傳來的微指令所指定的運(yùn)算。執(zhí)行邏輯328包含邏輯、電路、裝置或微碼(例如微指令或本機(jī)指令),或邏輯、電路、裝置或微碼的組合,或用以執(zhí)行由指令指定的運(yùn)算的等效組件。這些在執(zhí)行邏輯328中執(zhí)行運(yùn)算的組件可能與在微處理器301中執(zhí)行其它功能的電路、微碼共享。執(zhí)行邏輯包含密碼單元316,此密碼單元316接收從加載邏輯314被要求執(zhí)行指定密碼運(yùn)算的數(shù)據(jù)。微指令指示密碼單元316執(zhí)行指定密碼運(yùn)算于復(fù)數(shù)個(gè)輸入文字區(qū)塊326以產(chǎn)生相對(duì)應(yīng)復(fù)數(shù)個(gè)輸出文字區(qū)塊327。密碼單元316包含邏輯、電路、裝置或微碼(例如微指令或本機(jī)指令),或邏輯、電路、裝置或微碼的組合,或用以執(zhí)行密碼運(yùn)算的等效組件。這些在密碼單元316中執(zhí)行運(yùn)算的組件可能與在微處理器301中執(zhí)行其它功能的電路、微碼共享。在一實(shí)施例中,密碼單元316并列操作與在執(zhí)行邏輯328內(nèi)的其它執(zhí)行單元(未繪出),例如整數(shù)單元、浮點(diǎn)數(shù)單元等。在本應(yīng)用范圍一“單元”的實(shí)施是包含邏輯、電路、裝置或微碼(例如微指令或本機(jī)指令),或邏輯、電路、裝置或微碼的組合,或用以執(zhí)行指定功能或指定運(yùn)算的等效組件。這些在特定單元中執(zhí)行指定功能或指定運(yùn)算的組件可能與在微處理器301中執(zhí)行其它功能的電路、微碼共享。例如一實(shí)施例中,一整數(shù)單元包含邏輯、電路、裝置或微碼(例如微指令或本機(jī)指令),或邏輯、電路、裝置或微碼的組合,或用以執(zhí)行整數(shù)指令的等效組件;一浮點(diǎn)數(shù)單元包含邏輯、電路、裝置或微碼(例如微指令或本機(jī)指令),或邏輯、電路、裝置或微碼的組合,或用以執(zhí)行浮點(diǎn)數(shù)指令的等效組件;則在整數(shù)單元中執(zhí)行整數(shù)指令的組件可能與在浮點(diǎn)數(shù)單元中執(zhí)行浮點(diǎn)數(shù)指令的其它電路、微碼等共享。在一與x86架構(gòu)兼容的實(shí)施例中,密碼單元316并列操作與x86整數(shù)單元、x86浮點(diǎn)數(shù)單元、x86數(shù)學(xué)數(shù)組處理指令(Mathematic Matrix Extension;MMX)單元、x86單指令多數(shù)據(jù)流擴(kuò)展(Streaming SIMD Extensions;SSE)單元。根據(jù)本應(yīng)用范圍,當(dāng)一實(shí)施例可以正確執(zhí)行設(shè)計(jì)給x86微處理器執(zhí)行的大部分應(yīng)用程序時(shí),此實(shí)施例是與x86架構(gòu)兼容,一應(yīng)用程序正確執(zhí)行而得到其預(yù)期的結(jié)果。替代x86兼容實(shí)施例預(yù)期密碼單元并列操作與先前提及的x86執(zhí)行單元的子集。密碼單元316耦合到儲(chǔ)存邏輯317并且提供相對(duì)應(yīng)復(fù)數(shù)個(gè)輸出文字區(qū)塊327,而此儲(chǔ)存邏輯317也耦合到指定輸出文字?jǐn)?shù)據(jù)327給系統(tǒng)內(nèi)存321儲(chǔ)存的數(shù)據(jù)快取315。此數(shù)據(jù)快取315偶合到寫回邏輯318,而當(dāng)所指定的密碼運(yùn)算完成時(shí),寫回邏輯318更新在臨時(shí)文件307中的暫存308-313。在一實(shí)施例中,微指令與時(shí)脈信號(hào)(未繪出)同步經(jīng)過每一個(gè)上述所提及的邏輯階段302、303、304、307、314、316-318以使運(yùn)算可以同時(shí)執(zhí)行而相似于在線執(zhí)行運(yùn)算。
在系統(tǒng)內(nèi)存321中,一要求指定密碼運(yùn)算的應(yīng)用程序可以直接指示微處理器301透過單一密碼指令322(參照用以說明的XCRYPT指令322)執(zhí)行此運(yùn)算。在一CISC實(shí)施例中,XCRYPT指令322包含一指定密碼運(yùn)算的微指令。在一實(shí)施例中,XCRYPT指令322利用一存在指令集架構(gòu)中的一空閑或未使用指令運(yùn)算碼。在一x86架構(gòu)兼容的實(shí)施例中,XCRYPT指令322是一4字節(jié)指令包含一x86前置REP(如0xF3)、兩字節(jié)未使用x86運(yùn)算碼(如0x0FA7)、一字節(jié)有關(guān)于一指定區(qū)塊密碼模式以應(yīng)用于執(zhí)行一指定密碼運(yùn)算。在一實(shí)施例中,根據(jù)本發(fā)明的XCRYPT指令322可以在系統(tǒng)權(quán)限供給應(yīng)用程序的層級(jí)執(zhí)行,因而可以程序規(guī)劃于指令的程序流以提供給微處理器301不論是由應(yīng)用程序直接或在操作系統(tǒng)320的控制下。因?yàn)閮H有一指令322指示微處理器301執(zhí)行指定的密碼運(yùn)算,而運(yùn)算的完成對(duì)操作系統(tǒng)320應(yīng)是顯而易見。
在操作中,操作系統(tǒng)320引動(dòng)一應(yīng)用程序以執(zhí)行于微處理器301。如部分指令流于應(yīng)用程序的執(zhí)行期間,一XCRYPT指令322從內(nèi)存321提供給擷取邏輯302。然而,在XCRYPT指令322執(zhí)行之前,在程序流的指令指示微處理器301初始化暫存308-312的內(nèi)容以使他們指到內(nèi)存321中的位置323-327,其包含一密碼控制字組323、一初始化密碼鑰匙324或一鑰匙排程324、一初始化向量325(如果需要)、運(yùn)算用的輸入文字326、以及輸出文字327。在執(zhí)行XCRYPT指令322之前須先初始化暫存308-312,因?yàn)閄CRYPT指令322與一附加含有區(qū)塊計(jì)數(shù)的暫存313是參照暫存308-312,其中區(qū)塊計(jì)數(shù)是在輸入文字范圍326加密或解密的數(shù)據(jù)區(qū)塊的數(shù)目。因此轉(zhuǎn)譯邏輯303從擷取邏輯302取回XCRYPT指令并且轉(zhuǎn)譯成一序列相對(duì)應(yīng)的微指令以指示微處理器301執(zhí)行指定的密碼運(yùn)算。一第一復(fù)數(shù)個(gè)微指令305-306于相對(duì)應(yīng)微指令序列中,指示密碼單元316從加載邏輯314加載數(shù)據(jù),并且開始執(zhí)行指定數(shù)目的密碼回合以產(chǎn)生相對(duì)應(yīng)區(qū)塊的輸出數(shù)據(jù)提供給儲(chǔ)存邏輯317通過由數(shù)據(jù)快取315儲(chǔ)存于內(nèi)存321中的輸出文字范圍327。一第二復(fù)數(shù)個(gè)微指令(未繪出)于相對(duì)應(yīng)微指令序列中,指示在微處理器301中其它執(zhí)行單元(未繪出)執(zhí)行其它為完成指定密碼運(yùn)算所需的運(yùn)算,例如管理包含暫時(shí)結(jié)果及計(jì)數(shù)的非架構(gòu)暫存(未繪出)、更新輸出及輸入指針緩存器311-312、更新輸入文字區(qū)塊326的加密/解密初始指針緩存器310(如果需要)、處理未處理的中斷等等。在一實(shí)施例中,緩存器308-313是架構(gòu)性的緩存器。架構(gòu)性緩存器308-313是為實(shí)現(xiàn)特定微處理器的指令集架構(gòu)中所定義的一種緩存器。
在一實(shí)施例中,密碼單元316分成復(fù)數(shù)個(gè)階段因此允許相繼輸入文字區(qū)塊326的管線處理。而其相反的實(shí)施例是單階段密碼單元316。一第三實(shí)施例是關(guān)注于一兩階段密碼單元316,其可管線處理兩個(gè)相繼輸入文字區(qū)塊326。根據(jù)所有的實(shí)施例,密碼單元316是裝置以緩沖微指令及輸入文字區(qū)塊326,并且在儲(chǔ)存對(duì)應(yīng)前一輸入文字區(qū)塊326的輸出文字區(qū)塊327時(shí),執(zhí)行指定的密碼運(yùn)算于隨后的輸入文字區(qū)塊326。為透過密碼單元最大化文字區(qū)塊326-327的生產(chǎn)量,微指令305-306因此用以指示加載隨后的輸入文字區(qū)塊,并在對(duì)應(yīng)前一輸入文字區(qū)塊326的輸出文字區(qū)塊327被儲(chǔ)存之前,執(zhí)行指定的密碼運(yùn)算。如此的順序考慮到文字區(qū)塊326-327有效率的管線處理,并且也將在之后更加詳細(xì)的探討。
圖3的方塊圖300教示本發(fā)明所需的組件,因此省略許多在現(xiàn)今微處理器301中的邏輯以求圖標(biāo)的簡(jiǎn)潔。然而,熟悉該項(xiàng)技術(shù)者可察知現(xiàn)今特定實(shí)現(xiàn)的微處理器301是包含許多階段及邏輯,在此為圖標(biāo)的簡(jiǎn)潔而將其部分合并。例如加載邏輯314在一快取線程對(duì)準(zhǔn)階段之后可以嵌入一隨一快取接口階段的一地址產(chǎn)生階段。然而重要且應(yīng)注意的是,在復(fù)數(shù)個(gè)輸入文字區(qū)塊326上的一完全密碼運(yùn)算是根據(jù)本發(fā)明通過由一單一指令322的運(yùn)算對(duì)操作系統(tǒng)320的考量是顯而易見,并且單一指令322的執(zhí)行是通過由與微處理器301中其它執(zhí)行單元并連操作及協(xié)調(diào)的密碼單元316所完成。本發(fā)明密碼單元316在實(shí)施組態(tài)中的替代實(shí)施例是類似前幾年微處理器中浮點(diǎn)單元的硬件。密碼單元316的操作及相關(guān)XCRPYT指令322是完全兼容先前操作系統(tǒng)及程序同時(shí)操作,并且也將在之后更加詳細(xì)的探討。
請(qǐng)參照?qǐng)D4,其為本發(fā)明的一基元(atomic)密碼指令400實(shí)施例的方塊圖。密碼指令400包含一選項(xiàng)(optional)前置字段401、一重復(fù)前置字段402、一運(yùn)算碼字段403、一區(qū)塊密碼模式字段404。在一實(shí)施例中,字段401-404的內(nèi)容相稱于x86指令集架構(gòu),而其替代的實(shí)施例可考慮兼容于其它指令集架構(gòu)。
操作上,前置401在許多指令集架構(gòu)中是用以致能(enable)或禁能(disable)部分主微處理器的處理特征,像是指示16位或32位的運(yùn)算、指示處理或存取特定的內(nèi)存區(qū)段等。重復(fù)前置402是用以指示由密碼指令400所指定的密碼運(yùn)算是在復(fù)數(shù)個(gè)輸入數(shù)據(jù)區(qū)塊(如明文或密文)完成。重復(fù)前置402也隱示一相稱微處理機(jī)利用其內(nèi)復(fù)數(shù)個(gè)架構(gòu)緩存器的內(nèi)容當(dāng)成指針指到系統(tǒng)內(nèi)存中含有完成指定密碼運(yùn)算所需參數(shù)的位置。如上所述,在一x86相容實(shí)施例中,重復(fù)前置402的值是0xF3,并且根據(jù)x86架構(gòu)協(xié)議,密碼指令與x86重復(fù)字符串指令,如REP.MOV,在形式上非常相似。例如當(dāng)本發(fā)明由一x86兼容微處理器實(shí)施例執(zhí)行時(shí),重復(fù)前置是參照一儲(chǔ)存在架構(gòu)緩存器ECX中的區(qū)塊計(jì)數(shù)變量、一儲(chǔ)存在緩存器ESI中的來源地址指針(指到輸入數(shù)據(jù)以供密碼運(yùn)算)以及一儲(chǔ)存在緩存器EDI中的目的地址指針(指到內(nèi)存中的輸出數(shù)據(jù))。在x86相容的一實(shí)施例中,本發(fā)明更擴(kuò)展傳統(tǒng)重復(fù)字符串的指令的概念成為更可參照一儲(chǔ)存在緩存器EDX中的控制字組指針、一儲(chǔ)存在緩存器EBX中的密碼鑰匙指針以及一儲(chǔ)存在緩存器EAX中對(duì)一初始化向量的指針(如果指定密碼模式要求)。
運(yùn)算碼字段403指定微處理器完成一密碼運(yùn)算,此密碼運(yùn)算是由控制字組指標(biāo)所隱示參照儲(chǔ)存在內(nèi)存中的一控制字組。本發(fā)明認(rèn)為運(yùn)算碼值的較佳選擇是存在指令集架構(gòu)中一空閑或未使用的運(yùn)算碼值,通過此在一相稱微處理器中保留與先前操作系統(tǒng)及應(yīng)用軟件的兼容。例如如上所述,一x86兼容實(shí)施例的運(yùn)算碼字段403使用0x0FA7以指示執(zhí)行指定的的密碼運(yùn)算。區(qū)塊密碼模式字段404指示特定的區(qū)塊密碼模式以供特定的密碼運(yùn)算使用,并且將參照?qǐng)D5加以探討。
圖5是圖4基元密碼運(yùn)算指令的區(qū)塊密碼模式字段范例值的表格500。值0xC8指示使用電子密碼本(ECB)方式完成密碼運(yùn)算;值0xD0指示使用密碼區(qū)塊鏈接(CBC)方式完成密碼算;值0xE0指示使用密碼反饋方式(CFB)完成密碼運(yùn)算;以及值0xE8指示使用輸出反饋方式(OFB)完成密碼運(yùn)算。區(qū)塊密碼模式字段404其它所有的值是保留,而這些模式是描述于上述所提及的FIPS的文件中。
請(qǐng)參照?qǐng)D6,其為本發(fā)明在一X86兼容微處理器600中較詳細(xì)的密碼單元617的實(shí)施例方塊圖。微處理器600包含擷取邏輯601用以從內(nèi)存(未繪出)擷取指令以供執(zhí)行。擷取邏輯601是耦合到轉(zhuǎn)譯邏輯602,而轉(zhuǎn)譯邏輯602包含邏輯、電路、裝置或微碼(例如微指令或本機(jī)指令),或邏輯、電路、裝置或微碼的組合,或用以轉(zhuǎn)譯指令成為相關(guān)序列微指令的等效組件。這些在轉(zhuǎn)譯邏輯602中執(zhí)行轉(zhuǎn)譯的組件可能與在微處理器600中執(zhí)行其它功能的電路、微碼共享。轉(zhuǎn)譯邏輯602包含一轉(zhuǎn)譯器603,而此轉(zhuǎn)譯器603是耦合到一微碼只讀存儲(chǔ)器604。中斷邏輯626通過由總線628耦合到轉(zhuǎn)譯邏輯602。復(fù)數(shù)個(gè)軟件及硬件中斷信號(hào)627是由指示未處理中斷給轉(zhuǎn)譯邏輯628的中斷邏輯626處理。轉(zhuǎn)譯邏輯628耦合到微處理器600相繼的階段包含一暫存階段605、地址階段606、加載階段607、執(zhí)行階段608、儲(chǔ)存階段618、以及寫回階段619。每一相繼階段包含邏輯以完成由擷取邏輯601所提供相關(guān)指令執(zhí)行的特定功能,如先前在圖3的微處理器中所討論參照類似名稱的組件。描繪在圖6中x86兼容實(shí)施例600是以在執(zhí)行階段608中的執(zhí)行邏輯632為特征,其包含平行執(zhí)行單元610、612、614、616、617。一整數(shù)單元610從微指令隊(duì)列609接收?qǐng)?zhí)行整數(shù)微指令;一浮點(diǎn)單元612從微指令隊(duì)列611接收?qǐng)?zhí)行浮點(diǎn)數(shù)微指令;一MMX單元614從微指令隊(duì)列613接收?qǐng)?zhí)行MMX微指令;一SSE單元616從微指令隊(duì)列615接收?qǐng)?zhí)行SSE微指令。在展示的x86實(shí)施例,一密碼單元617通過由一加載總線620耦合到SSE單元616、一失速(stall)信號(hào)621以及一儲(chǔ)存總線622。密碼單元617共享SSE單元的微指令隊(duì)列615。一替代實(shí)施例可將密碼單元617獨(dú)立并聯(lián)操作像是單元610、612以及614。整數(shù)單元610耦合到一x86 EFLAGS緩存器624,此EFLAGS緩存器包含一X位625,而此X位625的狀態(tài)是配置用以指示密碼運(yùn)算是否正在處理。在一實(shí)施例中,此X位625是一x86 ELFAGS緩存器624的第30位。此外,整數(shù)單元610存取一機(jī)器指定緩存器以評(píng)估一E位629的狀態(tài),而此E位629的狀態(tài)指示密碼單元617是否位于微處理器600。整數(shù)單元610也存取一D位631于一特征控制緩存器630以致能或禁能密碼單元617。如圖3的微處理機(jī)實(shí)施例301,圖6的微處理機(jī)600以必要組件為特征教示本發(fā)明一x86兼容實(shí)施例的內(nèi)容,并且為求圖示簡(jiǎn)潔而合并或省略微處理器的其它組件。熟悉該項(xiàng)技術(shù)者可察覺用以完全接口的其它組件,像是數(shù)據(jù)快取、總線接口單元、時(shí)脈產(chǎn)生以及分配邏輯等,均未繪出。
在操作中,指令是由擷取邏輯601從內(nèi)存(未繪出)擷取并且與一時(shí)脈信號(hào)(未繪出)同步提供給轉(zhuǎn)譯邏輯602。轉(zhuǎn)譯邏輯602轉(zhuǎn)譯每個(gè)指令成為一相對(duì)應(yīng)序列的微指令,其與時(shí)脈信號(hào)同步持續(xù)地提供給微處理機(jī)600之后續(xù)階段605-608、618、619。在一序列微指令中的每一個(gè)微指令指示一個(gè)次運(yùn)算的執(zhí)行,而次運(yùn)算被要求完成由一相對(duì)指令所指定的一整體運(yùn)算,例如地址階段606產(chǎn)生一地址、暫存階段605從指定緩存器(未繪出)恢復(fù)的兩操作數(shù)在整數(shù)單元內(nèi)相加、通過由儲(chǔ)存邏輯618儲(chǔ)存執(zhí)行單元610、612、614、616、617其中的一所產(chǎn)生的結(jié)果于內(nèi)存等。根據(jù)轉(zhuǎn)譯中的指令,轉(zhuǎn)譯邏輯602利用轉(zhuǎn)譯器603直接產(chǎn)生一序列的微指令,或是從微碼ROM 604擷取此序列,或是利用轉(zhuǎn)譯器603直接產(chǎn)生此序列的部份并且從微碼ROM604擷取此序列剩下的部分。微指令透過微處理機(jī)600的相繼階段605-608、618、619持續(xù)地與時(shí)脈同步進(jìn)行。當(dāng)微指令到達(dá)執(zhí)行階段608,執(zhí)行邏輯632連同其操作數(shù)(在暫存階段605從緩存器所恢復(fù),或在地址階段606由邏輯所產(chǎn)生,或通過由加載邏輯608從數(shù)據(jù)快取所恢復(fù)),通過由放置微指令在一對(duì)應(yīng)的微指令隊(duì)列609、611、613、615而將其依指定路線傳送給一指定執(zhí)行單元610、612、614、616、617。執(zhí)行單元610、612、614、616、617執(zhí)行微指令并提供結(jié)果給儲(chǔ)存階段618。在一實(shí)施例,微指令包含字段指示其是否可以與其它運(yùn)算并列執(zhí)行。
響應(yīng)先前所述的擷取一個(gè)XCRYPT指令,轉(zhuǎn)譯邏輯602產(chǎn)生相關(guān)微指令,其指示在微處理器600后繼階段605-608,618,619中的邏輯執(zhí)行指定的密碼運(yùn)算。據(jù)此,一第一復(fù)數(shù)個(gè)相關(guān)微指令是直接依路徑傳送至密碼單元617并且指示單元617由加載總線620加載數(shù)據(jù),或加載一區(qū)塊的輸入數(shù)據(jù)并且開始執(zhí)行指定數(shù)目的密碼回合以產(chǎn)生一區(qū)塊的輸出數(shù)據(jù),或通過由儲(chǔ)存邏輯618透過儲(chǔ)存總線620將所產(chǎn)生的區(qū)塊輸出數(shù)據(jù)儲(chǔ)存于內(nèi)存。如先前參照?qǐng)D3所述,此第一復(fù)數(shù)個(gè)相關(guān)微指令是用以增加密碼單元617有利的特性以達(dá)到多數(shù)據(jù)區(qū)塊的有效管線操作。更精確地,第一復(fù)數(shù)個(gè)相關(guān)微指令是用以確定在儲(chǔ)存對(duì)應(yīng)前一輸入文字區(qū)塊的一輸出文字區(qū)塊之前,一相繼的輸入文字區(qū)塊已被加載。這使得當(dāng)輸出文字區(qū)塊正在被儲(chǔ)存時(shí),一指定密碼操作執(zhí)行于此相繼的輸入文字區(qū)塊。
一第二復(fù)數(shù)個(gè)相關(guān)微指令依其路徑傳送至其它實(shí)行單元610、612、614、616以執(zhí)行其它次運(yùn)算,其等次運(yùn)算是完成指定密碼運(yùn)算的必需,例如E位629的測(cè)試、致能D位631、設(shè)定X位625以指示密碼操作進(jìn)行中、在暫存階段605更新暫存(例如,計(jì)數(shù)緩存器、輸入文字指針緩存器、輸出文字指針緩存器)、由中斷邏輯626所指示的中斷627的處理等。相關(guān)微指令是用以提供指定密碼運(yùn)算的最佳執(zhí)行于多區(qū)塊輸入數(shù)據(jù),其通過由與密碼單元微指令序列中的整數(shù)單元微指令成為接口,因此整數(shù)運(yùn)算可與密碼單元運(yùn)算并行完成。微指令是包含于相關(guān)微指令以允許或并從待處理中斷627恢復(fù)。因?yàn)樗袑?duì)密碼參數(shù)的指針與數(shù)據(jù)是提供于x86架構(gòu)緩存器,當(dāng)中斷執(zhí)行時(shí),其狀態(tài)被保存,并且當(dāng)從中斷返回,這些狀態(tài)被恢復(fù)。當(dāng)從中斷返回,微指令測(cè)試X位625的狀態(tài)以決定是否一密碼運(yùn)算在進(jìn)行。如果是,當(dāng)中斷發(fā)生時(shí),此運(yùn)算重復(fù)于處理中的特別輸入數(shù)據(jù)區(qū)塊。相關(guān)微指令是用以允許在處理中斷627之前,更新在一序列輸入文字區(qū)塊上的一序列密碼操作的指針緩存器及中間的結(jié)果。
請(qǐng)參照?qǐng)D7,其為圖6的微處理器中指示密碼次運(yùn)算的范例微指令700字段的方塊圖。微指令700包含一微運(yùn)算碼字段701,一數(shù)據(jù)緩存器字段702,以及一緩存器字段703。微運(yùn)算碼字段701指定執(zhí)行一特定次運(yùn)算并且指定邏輯于微處理器600中一或多階段以執(zhí)行次運(yùn)算。微運(yùn)算碼字段701的指定值指定根據(jù)本發(fā)明的一密碼單元執(zhí)行指示的微指令。在一實(shí)施例,有兩個(gè)指定的值。一第一值(XLOAD)指定數(shù)據(jù)從一內(nèi)存位置恢復(fù),而其地址是由數(shù)據(jù)緩存器字段702內(nèi)容所指稱的一架構(gòu)緩存器的內(nèi)容所指定。這數(shù)據(jù)被加載到由緩存器字段703內(nèi)容所具體指定密碼單元內(nèi)的一緩存器。這恢復(fù)的數(shù)據(jù)(例如密碼鑰匙數(shù)據(jù)、控制字組、輸入文字?jǐn)?shù)據(jù)、初始化向量)是提供給密碼單元。微運(yùn)算碼字段701的第二值(XSTOR)指出由密碼單元所產(chǎn)生的數(shù)據(jù)儲(chǔ)存在一記憶位置,而其地址是由數(shù)據(jù)緩存器字段702內(nèi)容所指稱的一架構(gòu)緩存器的內(nèi)容所指定。在密碼單元一多階段實(shí)施例,緩存器字段703的內(nèi)容指示復(fù)數(shù)個(gè)輸出數(shù)據(jù)區(qū)塊的一儲(chǔ)存于內(nèi)存。輸出數(shù)據(jù)區(qū)塊是由數(shù)據(jù)域位704內(nèi)的密碼單元所提供以供儲(chǔ)存邏輯存取。根據(jù)本發(fā)明密碼單元所執(zhí)行XLOAD和XSTOR微指令更具體的細(xì)節(jié),將參照?qǐng)D8及圖9加以討論。
請(qǐng)參照?qǐng)D8,其為圖7的XLOAD微指令格式700緩存器字段703的值的表格。如前所述,一序列微指令是產(chǎn)生響應(yīng)一XCRPYT指令的轉(zhuǎn)譯。此序列微指令包含一第一復(fù)數(shù)個(gè)微指令,其是由密碼單元指示執(zhí)行;以及一第二復(fù)數(shù)個(gè)微指令,其是由微處理器中密碼單元以外的一或多個(gè)并列功能單元所執(zhí)行。第二復(fù)數(shù)個(gè)微指令指示次運(yùn)算,例如更新計(jì)數(shù)器、暫時(shí)儲(chǔ)存、架構(gòu)暫存、測(cè)試并設(shè)定狀態(tài)位于機(jī)器指定緩存器等。第一復(fù)數(shù)個(gè)微指令提供鑰匙數(shù)據(jù)、密碼參數(shù)以及輸入數(shù)據(jù)給密碼單元并且指示密碼單元產(chǎn)生鑰匙排程(或加載從內(nèi)存恢復(fù)的鑰匙排程)以加載并加密(或解密)輸入文字?jǐn)?shù)據(jù),并且儲(chǔ)存輸出文字?jǐn)?shù)據(jù)。一XLOAD微指令提供給密碼單元以加載控制字組數(shù)據(jù)、加載一密碼鑰匙或鑰匙排程、加載初始向量數(shù)據(jù)、加載輸入文字?jǐn)?shù)據(jù)以及加載輸入文字?jǐn)?shù)據(jù)并指示密碼單元開始一指定密碼運(yùn)算。一XLOAD微指令在緩存器字段703的值0b010是指示密碼單元加載一控制字組到其內(nèi)部控制字組緩存器。當(dāng)這微指令進(jìn)行管線處理,在暫存階段的一架構(gòu)控制字組指標(biāo)傳存器存取獲得內(nèi)存中儲(chǔ)存控制字組的地址。地址邏輯轉(zhuǎn)譯此地址成為一實(shí)體地址以供內(nèi)存存取。加載邏輯從快取擷取控制字組,然后傳給密碼單元。同樣地,緩存器字段值0b010指示密碼單元加載由數(shù)據(jù)域位704所提供的輸入文字?jǐn)?shù)據(jù),并且在加載之后開始指定的密碼運(yùn)算。類似控制字組,輸入數(shù)據(jù)由儲(chǔ)存在架構(gòu)緩存器中所儲(chǔ)存的一緩存器存取。值0b010指示加載由數(shù)據(jù)域位704所提供的輸入數(shù)據(jù)給內(nèi)部緩存器IN-1。加載到IN-1緩存器的數(shù)據(jù)不是輸入文字?jǐn)?shù)據(jù)(當(dāng)管線處理時(shí))就是一初始化向量。值0b110及0b111分別指示密碼單元加載一密碼鑰匙或使用者產(chǎn)生鑰匙排程中一鑰匙的較低及較高位。根據(jù)本應(yīng)用,使用者是定義成執(zhí)行一特定功能或特定運(yùn)算,而使用者可具體化成一應(yīng)用程序、一操作系統(tǒng)、一機(jī)器或者一個(gè)人。
在一實(shí)施例中,緩存器字段值0b100及0b101是考慮一密碼單元有兩階段,通過此,可以管線處理相繼的輸入文字區(qū)塊數(shù)據(jù)。因此對(duì)管線處理相繼的輸入資料區(qū)塊而言,一第一XLOAD微指令執(zhí)行提供一第一區(qū)塊的輸入文字?jǐn)?shù)據(jù)給IN-1,接著執(zhí)行一第XLOAD微指令提供一第二區(qū)塊的輸入文字?jǐn)?shù)據(jù)給IN-0,并且指示密碼單元開始執(zhí)行指定的密碼運(yùn)算。
當(dāng)一使用者產(chǎn)生的鑰匙排程被用以執(zhí)行密碼運(yùn)算時(shí),對(duì)應(yīng)使用者產(chǎn)生的鑰匙排程中鑰匙數(shù)量的XLOAD微指令是依設(shè)定路徑傳送給密碼單元,此密碼單元指示加載此鑰匙排程中每一回合鑰匙。
在XLOAD微指令中緩存器字段703其它所有的值是保留。
請(qǐng)參照?qǐng)D9,其為圖7的XSTOR微指令格式700緩存器字段703的值的表格。一XSTOR微指令是發(fā)布(issue)給密碼單元以指示其提供所產(chǎn)生的輸出文字區(qū)塊給儲(chǔ)存邏輯儲(chǔ)存于內(nèi)存中由地址字段702所提供的地址。據(jù)此,本發(fā)明的轉(zhuǎn)譯邏輯為一特定的輸出文字區(qū)塊所發(fā)布的一XSTOR微指令是在為一其所對(duì)應(yīng)輸入文字區(qū)塊所發(fā)布的一XSTOR微指令之后。緩存器字段703的值0b100是指示密碼單元提供關(guān)聯(lián)其內(nèi)部的OUT-0緩存器給儲(chǔ)存邏輯儲(chǔ)存。OUT-0的內(nèi)容與輸入文字區(qū)塊提供給IN-0是相關(guān)聯(lián)。同理,參照緩存器字段值0b101的內(nèi)部output-1緩存器是與輸入文字?jǐn)?shù)據(jù)提供給IN-1相關(guān)聯(lián)。據(jù)此,跟隨在鑰匙及控制字組數(shù)據(jù)加載之后,復(fù)數(shù)個(gè)輸入文字區(qū)塊可以被管線輸送,是透過密碼單元依序發(fā)布密碼微指令XLOAD.IN-1、XLOAD.IN-0(XLOAD.IN-0也指示密碼單元開始密碼運(yùn)算)、XSTOR.OUT-1、XSTOR.OUT-0、XLOAD.IN-1、XLOAD.IN-0(開始下兩個(gè)輸入文字區(qū)塊運(yùn)算)等等。
請(qǐng)參照?qǐng)D10,其為本發(fā)明指定密碼運(yùn)算參數(shù)的范例控制字組1000格式的方塊圖??刂谱纸M1000是由使用者程序設(shè)計(jì)于內(nèi)存,并且在執(zhí)行密碼運(yùn)算之前,控制字組1000的指針提供給相稱微處理器中的一架構(gòu)緩存器。據(jù)此,當(dāng)部分序列的微指令對(duì)應(yīng)到一XCRYPT指令時(shí),一XLOAD微指令被發(fā)布以指示微處理器去讀取包含指針的架構(gòu)緩存器、從內(nèi)存(快取)恢復(fù)控制字組1000以及加載控制字組1000到密碼單元的內(nèi)部控制字組緩存器??刂谱纸M1000包含一保留RSVD字段1001、鑰匙大小KSIZE字段1002、一加密/解密E/D字段1003、一中間結(jié)果IRSLT字段1004、一鑰匙產(chǎn)生KGEN字段1005、一演算ALG字段1006以及一回合計(jì)算RCNT字段1007。
保留字段1001所有的值是保留。KSIZE字段1002的內(nèi)容是指示一用以完成加密或解密的密碼鑰匙的大小。在一實(shí)施例中,KSIZE字段1002不是指示一128位鑰匙、一192位鑰匙,就是指示一256位鑰匙。E/D字段1003指出密碼運(yùn)算是加密運(yùn)算或指出密碼運(yùn)算是解密運(yùn)算。KGEN字段1005指示在內(nèi)存中是使用者產(chǎn)生的鑰匙排程或在內(nèi)存中是單一密碼鑰匙;如果為單一鑰匙時(shí),微指令發(fā)布給密碼單元與密碼鑰匙以指示單元根據(jù)ALG字段1006的內(nèi)容所具體指定的密碼演算以擴(kuò)展鑰匙成為一鑰匙排程。在一實(shí)施例,ALG字段1006的特定值具體指示DES算法、三重DES算法或者AES算法如先前所述的討論。替代實(shí)施例可考慮其它密碼算法,例如Rijndael Cipher、Twofish Cipher等。RCNT字段1007的內(nèi)容指示一數(shù)量的密碼回合,其根據(jù)具體指示的算法完成于每一輸入文字區(qū)塊。雖然上述提及的標(biāo)準(zhǔn)指示每一輸入文字區(qū)塊固定前置數(shù)量的密碼回合,但RCNT字段1007允許一程序設(shè)計(jì)者從標(biāo)準(zhǔn)指示修改回合的數(shù)量。在一實(shí)施例中,程序設(shè)計(jì)者可指定每一區(qū)塊從0-15回合。最后,IRSLT字段1004指示是否一輸入文字區(qū)塊的加密/解密是根據(jù)ALG 1006所指定的密碼算法以RCNT 1007所指定回合的數(shù)量執(zhí)行,或者加密/解密是根據(jù)ALG 1006所指定的密碼算法以RCNT 1007所指定回合的數(shù)量執(zhí)行,而其最終回合的執(zhí)行代表一中間結(jié)果而不是一最終結(jié)果。熟悉該項(xiàng)技術(shù)者可察知許多密碼算法除了最終回合的次運(yùn)算的外是執(zhí)行相同的次運(yùn)算于每一回合。因此程序設(shè)計(jì)IRSLT字段1004提供中間結(jié)果而不是最后結(jié)果,通過此,允許程序設(shè)計(jì)者可核對(duì)算法實(shí)現(xiàn)的中間的步驟。例如獲得增加的中間值以核對(duì)算法實(shí)行,假設(shè),執(zhí)行一回合的加密于一文字區(qū)塊,然后執(zhí)行兩回合于相同文字區(qū)塊,然后三回合等。提供可程序化回合及中間值結(jié)果的功能可讓使用者檢查密碼執(zhí)行、除錯(cuò)以及達(dá)到改變鑰匙結(jié)構(gòu)及回合計(jì)數(shù)。
請(qǐng)參照?qǐng)D11,其為本發(fā)明的一密碼單元1100的較佳實(shí)施例方塊圖。密碼單元1100包含一微運(yùn)算碼緩存器1103,此微運(yùn)算碼緩存器1103透過一微指令總線1114接收密碼微指令(例如XLOAD與XSTOR微指令)。密碼單元1100也包含一控制字組緩存器1104、一input-0緩存器1105以及input-1緩存器1106、一key-0緩存器1107以及一key-1緩存器1108。數(shù)據(jù)透過一加載總線1111提供給緩存器1104-1108,如微指令暫存迄1103中一XLOAD微指令內(nèi)容所指定。而input-0與input-1緩存器1105-1106是配置用以在目前輸入文字區(qū)塊執(zhí)行密碼運(yùn)算期間,致能隨后輸入文字區(qū)塊的緩沖。密碼單元1100也包含區(qū)塊密碼邏輯1101,此區(qū)塊密碼邏輯1101耦合到所有的緩存器1103-1108以及也耦合到密碼鑰匙隨機(jī)存取內(nèi)存1102。區(qū)塊碼邏輯1101提供一暫停信號(hào)1113并且也提供區(qū)塊結(jié)果給一output-0緩存器1109以及一output-1緩存器1110。輸出緩存器1109-1110透過一儲(chǔ)存總線1212將內(nèi)容依指定路徑傳送給在一相稱微處理器中的相繼階段。密碼單元1100是裝配以致能在密碼運(yùn)算于接著的輸入文字區(qū)塊時(shí),儲(chǔ)存從輸出緩存器1109-1110的數(shù)據(jù)。在一實(shí)施例中,微指令緩存器1103是32位大小,并且每一剩下的緩存器1104-1110是128位緩存器。
在操作中,密碼微指令與數(shù)據(jù)一起連續(xù)提供給微指令緩存器1103,其中數(shù)據(jù)是指定給控制字組緩存器1104、或輸入緩存器1105-1106的一、或鑰匙緩存器1107-1108的一。在參照?qǐng)D8及圖9討論的實(shí)施例中,控制字組通過由一XLOAD微指令加載到控制字組緩存器1104。因此密碼鑰匙或鑰匙排程經(jīng)由連續(xù)的XLOAD微指令加載。當(dāng)一128位密碼鑰匙加載時(shí),一XLOAD微指令因此提供給指定的KEY-0緩存器1107,并且連同一XLOAD微指令提供給指定的KEY-1緩存器1108。當(dāng)一使用者產(chǎn)生的鑰匙排程加載時(shí),連續(xù)XLOAD微指令提供給指定KEY-0緩存器1107。鑰匙排程中的每一鑰匙被加載且依序被放置在鑰匙隨機(jī)存取內(nèi)存1102以供其相對(duì)應(yīng)的密碼回合使用。隨此,輸入文字?jǐn)?shù)據(jù)(如果沒有要求一初始向量)加載到IN-1緩存器1106,如果要求一初始向量,則經(jīng)由一XLOAD微指令加載到IN-1緩存器1106。對(duì)IN-0緩存器1105的一XLOAD微指令指示密碼單元以加載輸入文字?jǐn)?shù)據(jù)給IN-0緩存器1105,并且開始在IN-0緩存器1105內(nèi)的輸入文字?jǐn)?shù)據(jù)執(zhí)行密碼回合,其根據(jù)控制字組緩存器1104的內(nèi)容所提供的參數(shù)使用在IN-1或在兩輸入緩存器1105-1106(當(dāng)輸入數(shù)據(jù)是管線處理)中的初始向量。根據(jù)收到指定IN-0的XLOAD微指令,區(qū)塊密碼邏輯1101開始執(zhí)行由控制字組內(nèi)容所指定的密碼運(yùn)算。當(dāng)單一密碼鑰匙要求擴(kuò)展,區(qū)塊密碼邏輯1101產(chǎn)生鑰匙排程中的每一鑰匙并將以儲(chǔ)存在鑰匙隨機(jī)存取內(nèi)存1102。姑且不論是否由區(qū)塊密碼邏輯1101產(chǎn)生一鑰匙排程或者是從內(nèi)存中加載鑰匙排程,第一回合的鑰匙是快取儲(chǔ)存于區(qū)塊密碼邏輯1101中以使得第一區(qū)塊密碼回合可以不用存取鑰匙R(shí)AM1102而處理。一但初始化后,區(qū)塊密碼邏輯1101繼續(xù)執(zhí)行指定的密碼運(yùn)算于一或多個(gè)輸入文字區(qū)塊直到運(yùn)算完成;其連續(xù)從鑰匙R(shí)AM 1102擷取回合鑰匙如所應(yīng)用的密碼算法所要求。密碼單元1100執(zhí)行一指定區(qū)塊密碼運(yùn)算于指定的輸入文字區(qū)塊,而相繼的輸入文字區(qū)塊透過相繼對(duì)應(yīng)的XLOAD及XSTOR微指令加密/解密。當(dāng)一XSTOR微指令執(zhí)行時(shí),如果指定輸出數(shù)據(jù)(例如OUT-0或OUT-1)尚未完全產(chǎn)生,則區(qū)塊密碼邏輯1101顯示暫停信號(hào)1113。一但輸出數(shù)據(jù)已產(chǎn)生且放置于相對(duì)應(yīng)的輸出緩存器1109-1110時(shí),緩存器1109-1110的內(nèi)容接著傳送到儲(chǔ)存總線1112。雖然當(dāng)指定輸出資料尚未完全產(chǎn)生時(shí)會(huì)顯示暫停信號(hào)1113,但由于輸入緩存器1105-1106允許輸入文字區(qū)塊的緩沖,因此透過密碼單元1100有效率的數(shù)據(jù)區(qū)塊管線處理是通過由順序化加載及儲(chǔ)存微指令,使得在隨后輸入文字區(qū)塊的密碼運(yùn)算總是執(zhí)行在要求儲(chǔ)存數(shù)據(jù)于輸出緩存器1109-1110時(shí)。
請(qǐng)參照?qǐng)D12,其為本發(fā)明執(zhí)行有關(guān)進(jìn)階加密標(biāo)準(zhǔn)(AES)算法密碼運(yùn)算的一區(qū)塊密碼邏輯1200實(shí)施例的方塊圖。區(qū)塊密碼邏輯1200包含一回合引擎1220,此回合引擎1220透過總線1211-1214及總線1216-1218耦合到一回合引擎控制器1210?;睾弦婵刂破?210包含儲(chǔ)存邏輯1230,并且存取一微指令緩存器1201、控制字組緩存器1202、KEY-0緩存器1203以及KEY-1緩存器1204以存取鑰匙數(shù)據(jù)、微指令以及所指示密碼運(yùn)算的參數(shù)。輸入緩存器1205-1206的內(nèi)容提供給回合引擎1220并且回合引擎1220提供相對(duì)應(yīng)輸出文字給輸出緩存器1207-1208。輸出緩存器1207-1208透過總線1216-1217也耦合到回合引擎控制器1210以致能回合引擎控制器存取每一相繼密碼回合的結(jié)果,而此結(jié)果是透過NEXTIN總線1218提供給回合引擎1220下一密碼回合。鑰匙R(shí)AM(未繪出)中的密碼鑰匙是透過總線1215存取。ENC/DEC信號(hào)1211指示回合引擎利用次運(yùn)算執(zhí)行不是加密(例如S-Box)就是解密(例如反向S-Box)。RNDCON總線1212的內(nèi)容指示回合引擎1220執(zhí)行不是一第一AES回合、一中間AES回合就是一最后AES回合。鑰匙總線1213用以提供每一回合鑰匙給回合引擎1220在其對(duì)應(yīng)的回合執(zhí)行時(shí)。
回合引擎1220包含第一鑰匙XOR邏輯1221,此第一鑰匙XOR邏輯1221耦合到一第一緩存器REG-0 1222,此第一緩存器1222耦合到S-Box邏輯1223,此S-Box邏輯1223耦合到ShiftRow邏輯1224,此Shift Row邏輯1224耦合到一第二緩存器REG-1 1225,此第二緩存器1225耦合到Mix Colum邏輯1226,此Mix Colum邏輯1226耦合到一第三緩存器REG-2 1227。第一鑰匙邏輯1221、S-Box邏輯1223、Shift Row邏輯1224以及Mix Colum邏輯1226是配置用以執(zhí)行次運(yùn)算于輸入文字?jǐn)?shù)據(jù),像是具體指定于先前討論的AES FIPS標(biāo)準(zhǔn)。Mix Colum邏輯1226在中間回合期間于要求使用通過由鑰匙總線1213所提供的回合鑰匙時(shí),是附加配置以執(zhí)行AES XOR功能于輸入數(shù)據(jù)。第一鑰匙邏輯1221、S-Box邏輯1223、Shift Row邏輯1224以及Mix Colum邏輯1226在通過由ENC/DEC 1211的狀態(tài)指示時(shí),也配置用以執(zhí)行其相對(duì)的反向AES次運(yùn)算于解密期間。熟悉該項(xiàng)技術(shù)者可察知中間回合數(shù)據(jù)是根據(jù)控制字組緩存器1202內(nèi)容所指定的具體區(qū)塊加密模式而回饋給回合引擎1220。初始化向量數(shù)據(jù)(如果要求)透過NEXTIN總線1218提供給回合引擎1220。
在圖12所示的實(shí)施例中,回合引擎分為兩階段一第一階段介于REG-0 1222與REG-1 1225以及一第二階段介于REG-1 1225與REG-2 1227。中間回合數(shù)據(jù)同步一時(shí)脈信號(hào)(未繪出)于階段間管線處理。當(dāng)一區(qū)塊的輸入數(shù)據(jù)完成密碼運(yùn)算,其關(guān)聯(lián)的輸出數(shù)據(jù)放置于相對(duì)應(yīng)輸出緩存器1207-1208。響應(yīng)到一XSTOR微指令,儲(chǔ)存邏輯1230確立STORE信號(hào)1214以告知回合引擎1220說指定輸出緩存器1207-1208的內(nèi)容正提供給儲(chǔ)存總線(未繪出)。當(dāng)隨后的輸入文字區(qū)塊已緩沖于輸入緩存器1205-1206,且當(dāng)回合引擎1220正在處理隨后的輸入文字區(qū)塊時(shí),輸出緩存器1207-1208可以執(zhí)行儲(chǔ)存。根據(jù)本發(fā)明效率化多資料區(qū)塊管線處理如何加載及儲(chǔ)存微指令,將更具體參照?qǐng)D13到圖16加以討論。
請(qǐng)參照?qǐng)D13,其為本發(fā)明微指令流的一實(shí)施例對(duì)密碼單元的一單階實(shí)施例的表格1300。如上述,一單階密碼單元一次可以處理一輸入文字區(qū)塊。然而,此單階實(shí)施例如多階實(shí)施例(一兩階實(shí)施例是展示并具體討論參照?qǐng)D12)是配置于相同方法,也就是當(dāng)回合引擎對(duì)目前輸入數(shù)據(jù)執(zhí)行指定的密碼運(yùn)算時(shí),輸入緩存器允許緩沖隨后的輸入?yún)^(qū)塊數(shù)據(jù),并且當(dāng)隨后的輸入數(shù)據(jù)區(qū)塊執(zhí)行指定的密碼運(yùn)算時(shí),輸出緩存器與儲(chǔ)存邏輯致能對(duì)應(yīng)目前輸入數(shù)據(jù)區(qū)塊的輸出區(qū)塊儲(chǔ)存。在表格1300的微指令流并沒有利用先前所提及有利于單階段密碼單元的特性。
就本發(fā)明教示的目的而言,一加載微指令LD.IN-0的執(zhí)行需要兩個(gè)管線時(shí)脈周期。一但輸入數(shù)據(jù)加載輸入緩存器0,回合引擎自動(dòng)開始。就比較目的而言,回合引擎須20個(gè)時(shí)脈周期以產(chǎn)生一對(duì)應(yīng)的輸出區(qū)塊,在此期間,一儲(chǔ)存指令ST.OUT-0是暫停。類似加載指令LD.IN-0,儲(chǔ)存指令ST.OUT-0指定執(zhí)行的儲(chǔ)存運(yùn)算須兩個(gè)時(shí)脈周期。據(jù)此,當(dāng)一第一加載指令LD.IN-0在周期0提供給密碼單元,然后在兩個(gè)周期后,輸入數(shù)據(jù)加載并且回合引擎開始執(zhí)行,因此在周期22時(shí)產(chǎn)生一對(duì)應(yīng)的輸出數(shù)據(jù)區(qū)塊。相對(duì)應(yīng)的儲(chǔ)存指令ST.OUT-0是暫停直到相對(duì)應(yīng)的輸出數(shù)據(jù)區(qū)塊備妥,因此在周期24完成儲(chǔ)存。一隨后的加載指令LD.IN-0是暫停在先前儲(chǔ)存指令ST.OUT-0之后直到儲(chǔ)存完成,因此在周期26之前沒有加載隨后的輸入文字區(qū)塊。
如上所述,這種載入-儲(chǔ)存-加載-儲(chǔ)存微指令的順序?qū)γ艽a單元先前所提及的特性并無助益。結(jié)果,就多數(shù)據(jù)區(qū)塊執(zhí)行密碼運(yùn)算而言,每個(gè)區(qū)塊需要24周期。
請(qǐng)參照?qǐng)D14,其為本發(fā)明微指令流的另一實(shí)施例對(duì)密碼單元的單階實(shí)施例的表格1400。對(duì)比參照?qǐng)D13所討論的微指令流,此替代微指令流實(shí)施例利用了單階密碼單元的有利特性。就比較目的而言,透過回合引擎執(zhí)行加載指令LD.IN-0、儲(chǔ)存指令ST.OUT-0以及密碼運(yùn)算的時(shí)脈周期的數(shù)目與參照?qǐng)D13所討論的實(shí)施例是相同。
根據(jù)此替代微指令流實(shí)施例,當(dāng)一第一加載指令LD.IN-0在周期0提供給密碼單元,然后在兩個(gè)周期后,輸入數(shù)據(jù)加載并且回合引擎開始執(zhí)行,因此在周期22時(shí)產(chǎn)生一對(duì)應(yīng)的輸出數(shù)據(jù)區(qū)塊。然而,因?yàn)檩斎胭Y料可以緩沖,因此轉(zhuǎn)譯邏輯在周期4完成發(fā)布一第二加載指令LD.IN0以加載一隨后的輸入文字區(qū)塊。在隨后輸入文字區(qū)塊執(zhí)行的密碼運(yùn)算是暫停直到一對(duì)應(yīng)第一輸入文字區(qū)塊的輸出文字區(qū)塊產(chǎn)生(周期22),但是隨后的輸入文字區(qū)塊在周期4已緩沖儲(chǔ)存,因此其密碼運(yùn)算可以在周期23開始并在周期42完成。對(duì)應(yīng)第一輸入?yún)^(qū)塊的輸出文字的儲(chǔ)存指令ST.OUT-0是由轉(zhuǎn)譯邏輯在隨后區(qū)塊加載指令LD.IN-0之后所提供。此儲(chǔ)存指令ST.OUT-0是暫停直到相對(duì)應(yīng)的輸出數(shù)據(jù)區(qū)塊在周期22備妥,但在周期24完成儲(chǔ)存。一隨后的加載指令LD.IN-0是暫停在先前儲(chǔ)存指令ST.OUT-0之后直到儲(chǔ)存完成,因此在周期26之前沒有加載隨后的輸入文字區(qū)塊。通過由回合引擎而將兩周期轉(zhuǎn)入隨后輸入文字區(qū)塊的處理。通過由最初執(zhí)行兩個(gè)加載,這種微指令順序可以得利于密碼單元先前所提及的特性,因此增加多區(qū)塊的每個(gè)區(qū)塊的產(chǎn)量成20周期。儲(chǔ)存一輸出區(qū)塊所需的這兩個(gè)時(shí)脈周期是有效合并于一隨后輸入文字區(qū)塊密碼運(yùn)算的執(zhí)行。此外,加載隨后輸入文字區(qū)塊所需的的兩個(gè)周期是合并于目前輸入文字區(qū)塊密碼運(yùn)算的執(zhí)行期間。
請(qǐng)參照?qǐng)D15,其為本發(fā)明微指令流的一實(shí)施例對(duì)密碼單元的兩階實(shí)施例的表格1500。兩階實(shí)施例是具體討論對(duì)照于圖12,并且其可以在回合引擎的周期處理兩個(gè)相繼的輸入數(shù)據(jù)區(qū)塊。如同表格1300的單階實(shí)施例流,表格1500的流在密碼單元中并未從其特征中獲利以合并時(shí)脈周期。就比較目的而言,透過回合引擎執(zhí)行加載指令LD.IN-0、儲(chǔ)存指令ST.OUT-0以及密碼運(yùn)算的時(shí)脈周期的數(shù)目與參照?qǐng)D13、圖14所討論的實(shí)施例是相同。如上所述,緩存器1執(zhí)行加載指令LD.IN-1是僅僅加載輸入數(shù)據(jù)至輸入緩存器1;一LD.IN-0緩存器執(zhí)行加載輸入文字?jǐn)?shù)據(jù)至輸入緩存器0,并且透過回合引擎初始處理在輸入緩存器0及1內(nèi)的輸入數(shù)據(jù)。因?yàn)榛睾弦娴陌l(fā)動(dòng)(staged),因此完成在兩輸入緩存器中輸入數(shù)據(jù)的加密/解密僅須20個(gè)時(shí)脈周期。
因此,轉(zhuǎn)譯邏輯發(fā)布一LD.IN-1微指令跟隨一LD.IN-0指令。LD.IN-1在周期2完成而LD.IN-0在周期4完成,并且回合引擎在周期5開始處理兩輸入文字區(qū)塊且在周期24完成。兩隨后的儲(chǔ)存指令ST.OUT-1、ST.OUT-0是暫停直到周期24待其對(duì)應(yīng)的輸入數(shù)據(jù)文字區(qū)塊處理完成,在周期24暫停解除,其允許在周期28完成儲(chǔ)存。因?yàn)闆]有其它輸入數(shù)據(jù)緩沖儲(chǔ)存,因此兩隨后加載指令LD.IN-0、LD.IN-1是暫停直到儲(chǔ)存完成。因此隨后輸入文字區(qū)塊的加載發(fā)生于周期29-32之間,并且由回合引擎在周期33-52之間處理這些區(qū)塊。
相同于參照?qǐng)D13單階密碼單元所討論微指令的加載-儲(chǔ)存-加載-儲(chǔ)存順序,表格15的加載-加載-儲(chǔ)存-儲(chǔ)存-載入-加載-儲(chǔ)存-儲(chǔ)存順序并沒有從支持有效率數(shù)據(jù)區(qū)塊處理的密碼單元的特性中取得好處。結(jié)果,在兩階密碼單元執(zhí)行密碼運(yùn)算于多數(shù)據(jù)區(qū)塊,每?jī)蓚€(gè)區(qū)塊需要28周期。
請(qǐng)參照?qǐng)D16,其為本發(fā)明微指令流的另一實(shí)施例對(duì)密碼單元的兩階實(shí)施例的表格1600。對(duì)比參照?qǐng)D15所討論的微指令流,此表格1600的替代微指令流實(shí)施例利用了兩階密碼單元的有利特性。就比較目的而言,透過回合引擎執(zhí)行加載指令LD.IN-0、儲(chǔ)存指令ST.OUT-0以及密碼運(yùn)算的時(shí)脈周期的數(shù)目與參照?qǐng)D15所討論的實(shí)施例是相同。
根據(jù)此替代微指令流實(shí)施例,當(dāng)一第一加載指令LD.IN-1在周期0提供給密碼單元以及跟著提供一第二加載指令LD.IN0,然后在4個(gè)周期后,輸入數(shù)據(jù)加載并且回合引擎開始執(zhí)行,因此在周期24時(shí)產(chǎn)生一對(duì)應(yīng)的輸出數(shù)據(jù)區(qū)塊。然而,因?yàn)檩斎霐?shù)據(jù)可以緩沖儲(chǔ)存,因此轉(zhuǎn)譯邏輯發(fā)布允許兩輸入文字區(qū)塊的加載指令LD.IN-1、LD.IN-0的第二集(set)并在周期8完成加載。在隨后輸入文字區(qū)塊執(zhí)行的密碼運(yùn)算是暫停直到兩分別對(duì)應(yīng)兩第一輸入文字區(qū)塊的兩輸出文字區(qū)塊產(chǎn)生(周期24),但是隨后的兩輸入文字區(qū)塊在周期8已緩沖儲(chǔ)存,因此其等密碼運(yùn)算可以在周期25開始并在周期44完成。對(duì)應(yīng)兩第一輸入文字區(qū)塊的兩輸出文字的儲(chǔ)存指令ST.OUT-1、ST.OUT-0是由轉(zhuǎn)譯邏輯在隨后區(qū)塊加載指令LD.IN-1、LD.IN-0之后所提供。此儲(chǔ)存指令ST.OUT-1、ST.OUT-0是暫停直到相對(duì)應(yīng)的輸出數(shù)據(jù)區(qū)塊在周期24備妥,但在周期28完成儲(chǔ)存。通過由回合引擎已經(jīng)將4周期轉(zhuǎn)入隨后輸入文字區(qū)塊的處理。通過由最初執(zhí)行四個(gè)加載,這種微指令順序可以得利于密碼單元先前所提及的特性,因此增加多區(qū)塊的每個(gè)區(qū)塊的產(chǎn)量成20周期。儲(chǔ)存輸出區(qū)塊所需的這四個(gè)時(shí)脈周期是有效合并于兩隨后輸入文字區(qū)塊密碼運(yùn)算的執(zhí)行。此外,加載隨后兩輸入文字區(qū)塊所需的的四個(gè)周期是合并于目前輸入兩輸入文字區(qū)塊密碼運(yùn)算的執(zhí)行期間。
雖然本發(fā)明及其目的、特征與優(yōu)點(diǎn)已詳細(xì)描述,但其它實(shí)施例也應(yīng)包含于本發(fā)明。例如本發(fā)明曾根據(jù)兼容x86架構(gòu)的實(shí)施例討論長(zhǎng)度,然而這些討論已提供此類的方式,因?yàn)閤86架構(gòu)容易理解且提供足夠的方式以教示本發(fā)明。然而本發(fā)明包含相稱于其它指令集架構(gòu)的實(shí)施例,例如PowerPC、MIPS及諸如此類等,此外還有全新的指令集架構(gòu)。
本發(fā)明更包含計(jì)算機(jī)系統(tǒng)中微理器外其它組件的密碼運(yùn)算的執(zhí)行,例如,根據(jù)本發(fā)明的密碼指令可以容易地被應(yīng)用在一密碼單元的一實(shí)施例,此實(shí)施例并非如微處理器部分相同的整合電路,其執(zhí)行方式如部分計(jì)算機(jī)系統(tǒng)。本發(fā)明的如此的實(shí)施例是為了并入圍繞在微處理器的芯片組(如北橋、南僑),或當(dāng)一處理器用于執(zhí)行密碼運(yùn)算時(shí),其密碼指令是由主微處理器移轉(zhuǎn)(hand off)給此處理器。本發(fā)明可應(yīng)用于內(nèi)嵌控制器、工業(yè)控制器、信號(hào)處理器、陣列處理機(jī)以及任何相似處理數(shù)據(jù)的裝置。本發(fā)明也包含一實(shí)施例僅含有執(zhí)行密碼運(yùn)算所必需的組件。如此的內(nèi)嵌裝置不僅執(zhí)行密碼運(yùn)算,也確實(shí)提供低成本、低電源,例如通信系統(tǒng)中的加密/解密處理器。為求簡(jiǎn)明,本發(fā)明將這些替代的處理組件參照成上述的處理器。
此外,雖然本發(fā)明提及128位區(qū)塊,但是許多不同區(qū)塊的大小可以透過改變緩存器的大小而被應(yīng)用,其中緩存器傳送輸入數(shù)據(jù)、輸出數(shù)據(jù)、鑰匙以及控制字組。
并且,雖然本應(yīng)用顯著以DES、三重DES以及AES為其特征,但本發(fā)明也包含較少人知的區(qū)塊密碼算法,例如MARS密碼、Rijndael密碼、Twofish密碼、Blowfish密碼、Serpent密碼以及RC6密碼。足以理解的是,本發(fā)明提供在微處理器中用于區(qū)塊密碼的裝置及支持的算法,其基元區(qū)塊密碼運(yùn)算可透過單一指令的執(zhí)行而引動(dòng)。
并且,雖然本發(fā)明在此以區(qū)塊密碼演算及其相關(guān)技術(shù)以執(zhí)行區(qū)塊密碼功能為特征,但是除了區(qū)塊密碼的外其它形式的密碼也包含于本發(fā)明應(yīng)用范圍的內(nèi)??勺阋杂^察的是,提供一單一指令,通過此,使用者可指示一相稱的微處理器執(zhí)行一密碼運(yùn)算,例如加密或解密,其中微處理器包含一密碼單元,此密碼單元依指示完成指令所指定的密碼功能。
并且,在此所討論的回合引擎提供一兩階裝置可管線處理兩區(qū)塊的輸入數(shù)據(jù),但其它實(shí)施例也可考慮多于兩階段。階段的分配對(duì)支持更多輸入數(shù)據(jù)區(qū)塊的管線處理,將發(fā)展協(xié)調(diào)相稱微處理器中其它階段的分配。
最后,雖然本發(fā)明具體討論支持復(fù)數(shù)個(gè)算法的一單獨(dú)密碼單元,但是本發(fā)明也提供理解在一相稱微處理器中與其它執(zhí)行單元并列操作耦合的多密碼單元,而每一多密碼單元是配置用以執(zhí)行一具體指定的密碼演算,例如一第一單元是配置用以執(zhí)行AES、一第二單元是配置用以執(zhí)行DES等。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用以限定本發(fā)明的申請(qǐng)專利范圍;凡其它為脫離本發(fā)明所揭示的精神下所完成的等效改變或修飾,均應(yīng)包含在下述的申請(qǐng)專利范圍。
權(quán)利要求
1.一種執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該執(zhí)行密碼運(yùn)算的裝置包含一密碼指令,是由一計(jì)算裝置接收并將其當(dāng)成執(zhí)行于該計(jì)算裝置的一指令流的部分,其中該密碼指令指定一密碼運(yùn)算;轉(zhuǎn)譯邏輯,操作耦合于該密碼指令并配置用以轉(zhuǎn)譯該密碼指令成微指令,其中該微指令是用以在指示該計(jì)算裝置儲(chǔ)存對(duì)應(yīng)于一第一輸入文字區(qū)塊的一輸出文字區(qū)塊之前,指示該計(jì)算裝置加載一第二輸入文字區(qū)塊并對(duì)該第二輸入文字區(qū)塊執(zhí)行該密碼運(yùn)算;通過此在該密碼運(yùn)算對(duì)該第二輸入文字區(qū)塊執(zhí)行期間,該輸出文字區(qū)塊可以被儲(chǔ)存。
2.如權(quán)利要求1所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該密碼運(yùn)算包含一加密運(yùn)算,該加密運(yùn)算包含復(fù)數(shù)個(gè)明文區(qū)塊的加密以產(chǎn)生相對(duì)復(fù)數(shù)個(gè)密文區(qū)塊;其中該復(fù)數(shù)個(gè)明文區(qū)塊包含該第一及第二輸入文字區(qū)塊;以及其中該相對(duì)復(fù)數(shù)個(gè)密文區(qū)塊包含該輸出文字區(qū)塊。
3.如權(quán)利要求1所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該密碼運(yùn)算包含一解密運(yùn)算,該解密運(yùn)算包含復(fù)數(shù)個(gè)密文區(qū)塊的解密以產(chǎn)生相對(duì)復(fù)數(shù)個(gè)明文區(qū)塊;其中該復(fù)數(shù)個(gè)密文區(qū)塊包含該第一及第二輸入文字區(qū)塊;以及其中該相對(duì)復(fù)數(shù)個(gè)明文區(qū)塊包含該輸出文字區(qū)塊。
4.如權(quán)利要求1所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,更包含執(zhí)行邏輯,操作耦合以接收該微指令并當(dāng)該密碼運(yùn)算執(zhí)行于該第二輸入文字區(qū)塊時(shí)配置用以儲(chǔ)存該輸出文字區(qū)塊。
5.如權(quán)利要求4所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該執(zhí)行邏輯包含一密碼單元。
6.如權(quán)利要求5所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該密碼單元是配置用以根據(jù)進(jìn)階加密標(biāo)準(zhǔn)執(zhí)行該密碼運(yùn)算。
7.如權(quán)利要求5所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該密碼單元包含一兩階回合引擎,配置用以管線執(zhí)行該第一及第二輸入文字區(qū)塊。
8.如權(quán)利要求1所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該微指令包含一加載微指令,配置用以指示該計(jì)算裝置加載該第二輸入文字區(qū)塊并且執(zhí)行該密碼運(yùn)算于該第二輸入文字區(qū)塊;以及一儲(chǔ)存微指令,配置用以指示該計(jì)算裝置儲(chǔ)存該輸出文字區(qū)塊。
9.如權(quán)利要求1所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該密碼指令是根據(jù)x86指令格式所指定。
10.如權(quán)利要求1所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該密碼指令隱含參照該計(jì)算裝置內(nèi)復(fù)數(shù)個(gè)緩存器。
11.如權(quán)利要求10所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該復(fù)數(shù)個(gè)緩存器包含一第一緩存器,其中該第一緩存器的內(nèi)容包含一第一指針對(duì)一第一內(nèi)存地址,該第一內(nèi)存地址依據(jù)完成的該密碼運(yùn)算指定內(nèi)存內(nèi)一第一位置以存取復(fù)數(shù)個(gè)輸入文字區(qū)塊,其中該復(fù)數(shù)個(gè)輸入文字區(qū)塊包含該第一及第二輸入文字區(qū)塊。
12.如權(quán)利要求10所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該復(fù)數(shù)個(gè)緩存器包含一第二緩存器,其中該第二緩存器的內(nèi)容包含一第二指針對(duì)一第二內(nèi)存地址,該第二內(nèi)存地址指定內(nèi)存內(nèi)一第二位置以儲(chǔ)存相對(duì)復(fù)數(shù)個(gè)輸出文字區(qū)塊,該相對(duì)復(fù)數(shù)個(gè)輸出文字區(qū)塊是根據(jù)復(fù)數(shù)個(gè)輸入文字區(qū)塊所完成該密碼運(yùn)算的結(jié)果,其中該復(fù)數(shù)個(gè)輸出文字區(qū)塊包含該輸出文字區(qū)塊。
13.如權(quán)利要求10所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該復(fù)數(shù)個(gè)緩存器包含一第三緩存器,其中該第三緩存器的內(nèi)容指示復(fù)數(shù)個(gè)輸入文字區(qū)塊內(nèi)一數(shù)量的文字區(qū)塊。
14.如權(quán)利要求10所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述中該復(fù)數(shù)個(gè)緩存器包含一第四緩存器,其中該第四緩存器的內(nèi)容包含一第三指針對(duì)一第三內(nèi)存地址,該第三內(nèi)存地址指定內(nèi)存內(nèi)一第三位置以存取密碼鑰匙數(shù)據(jù)以用于完成該密碼運(yùn)算。
15.如權(quán)利要求10所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該復(fù)數(shù)個(gè)緩存器包含一第五緩存器,其中該第五緩存器的內(nèi)容包含一第四指針對(duì)一第四內(nèi)存地址,該第四內(nèi)存地址指定內(nèi)存內(nèi)一第四位置,該第四位置包含一初始向量位置,該初始向量位置的內(nèi)容包含一初始向量或初始向量等效物以用于完成該密碼運(yùn)算。
16.如權(quán)利要求10所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該復(fù)數(shù)個(gè)緩存器包含一第六緩存器,其中該第六緩存器的內(nèi)容包含一第五指針對(duì)一第五內(nèi)存地址,該第五內(nèi)存地址指定內(nèi)存內(nèi)一第五位置以存取一控制字組以用于完成該密碼運(yùn)算,其中該控制字組指定密碼參數(shù)給該密碼運(yùn)算。
17.一種執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該執(zhí)行密碼運(yùn)算的裝置包含轉(zhuǎn)譯邏輯,配置用以轉(zhuǎn)譯一密碼指令成一序列的微指令,該序列的微指令包含一第一微指令,指示加載一第二輸入文字區(qū)塊并且執(zhí)行一密碼運(yùn)算于該第二輸入文字區(qū)塊;以及一第二微指令,指示儲(chǔ)存一第一輸出文字區(qū)塊,該第一輸出文字區(qū)塊根據(jù)執(zhí)行的該密碼運(yùn)算對(duì)應(yīng)于一第一輸入文字區(qū)塊;其中該轉(zhuǎn)譯邏輯在發(fā)布該第二微指令之前發(fā)布該第一微指令;通過此在該密碼運(yùn)算對(duì)該第二輸入文字區(qū)塊執(zhí)行期間,該輸出文字區(qū)塊可以被儲(chǔ)存。
18.如權(quán)利要求17所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該密碼運(yùn)算包含一加密運(yùn)算,該加密運(yùn)算包含復(fù)數(shù)個(gè)明文區(qū)塊的加密以產(chǎn)生相對(duì)復(fù)數(shù)個(gè)密文區(qū)塊;其中該復(fù)數(shù)個(gè)明文區(qū)塊包含該第一及第二輸入文字區(qū)塊;以及其中該相對(duì)復(fù)數(shù)個(gè)密文區(qū)塊包含該輸出文字區(qū)塊。
19.如權(quán)利要求17所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該密碼運(yùn)算包含一解密運(yùn)算,該解密運(yùn)算包含復(fù)數(shù)個(gè)密文區(qū)塊的解密以產(chǎn)生相對(duì)復(fù)數(shù)個(gè)明文區(qū)塊;其中該復(fù)數(shù)個(gè)密文區(qū)塊包含該第一及第二輸入文字區(qū)塊;以及其中該相對(duì)復(fù)數(shù)個(gè)明文區(qū)塊包含該輸出文字區(qū)塊。
20.如權(quán)利要求17所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,更包含一密碼單元,操作耦合以接收該微指令并當(dāng)該密碼運(yùn)算執(zhí)行于該第二輸入文字區(qū)塊時(shí)配置用以儲(chǔ)存該輸出文字區(qū)塊。
21.如權(quán)利要求20所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該密碼單元是配置用以根據(jù)進(jìn)階加密標(biāo)準(zhǔn)執(zhí)行該密碼運(yùn)算。
22.如權(quán)利要求20所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該密碼單元包含一兩階回合引擎,配置用以管線執(zhí)行該第一及第二輸入文字區(qū)塊。
23.如權(quán)利要求17所述的執(zhí)行密碼運(yùn)算的裝置,其特征在于,所述該密碼指令是根據(jù)x86指令格式所指定。
24.一種在一裝置執(zhí)行密碼運(yùn)算的方法,其特征在于,所述該在一裝置執(zhí)行密碼運(yùn)算的方法包含轉(zhuǎn)譯一密碼指令成一第一微指令及一第二微指令,該密碼指令指定一密碼運(yùn)算,該第一微指令指示該裝置加載一第二輸入文字區(qū)塊并且執(zhí)行該密碼運(yùn)算于該第二輸入文字區(qū)塊,該第二微指令指示該裝置儲(chǔ)存一第一輸出文字區(qū)塊,該第一輸出文字區(qū)塊根據(jù)執(zhí)行的該密碼運(yùn)算對(duì)應(yīng)于一第一輸入文字區(qū)塊;以及發(fā)布該第一微指令給一密碼單元后發(fā)布該第二微指令給該密碼單元;通過此在該密碼運(yùn)算對(duì)該第二輸入文字區(qū)塊執(zhí)行期間,該輸出文字區(qū)塊可以被儲(chǔ)存。
25.如權(quán)利要求24所述的在一裝置執(zhí)行密碼運(yùn)算的方法,其中該轉(zhuǎn)譯包含通過由該第一微指令指定執(zhí)行一加密運(yùn)算于該第二文字區(qū)塊以產(chǎn)生一相對(duì)第二密文區(qū)塊。
26.如權(quán)利要求24所述的在一裝置執(zhí)行密碼運(yùn)算的方法,其特征在于,所述該轉(zhuǎn)譯包含通過由該第一微指令指定執(zhí)行一解密運(yùn)算于該第二文字區(qū)塊以產(chǎn)生一相對(duì)第二明文區(qū)塊。
27.如權(quán)利要求24所述的在一裝置執(zhí)行密碼運(yùn)算的方法,其特征在于,更包含執(zhí)行該第一及第二微指令于一密碼單元,其中該執(zhí)行包含當(dāng)執(zhí)行該密碼運(yùn)算于該第二輸入文字區(qū)塊時(shí),儲(chǔ)存該輸出文字區(qū)塊。
28.如權(quán)利要求24所述的在一裝置執(zhí)行密碼運(yùn)算的方法,其特征在于,所述該密碼指令根據(jù)進(jìn)階加密標(biāo)準(zhǔn)指定執(zhí)行該密碼運(yùn)算。
29.如權(quán)利要求24所述的在一裝置執(zhí)行密碼運(yùn)算的方法,其特征在于,更包含執(zhí)行該第一及第二微指令于一密碼單元,其中該執(zhí)行包含透過一兩階回合引擎管線處理該第一及第二輸入文字區(qū)塊。
全文摘要
本發(fā)明提供一種在處理器中的復(fù)數(shù)個(gè)輸入數(shù)據(jù)區(qū)塊執(zhí)行密碼運(yùn)算的裝置及方法。在一實(shí)施例中,提供一種執(zhí)行密碼運(yùn)算的裝置,而此裝置是包含密碼指令及轉(zhuǎn)譯邏輯。上述的密碼指令是由一計(jì)算裝置接收并將其當(dāng)成指令流的一部分,并且此密碼指令指定一種密碼運(yùn)算。上述的轉(zhuǎn)譯邏輯是將上述的密碼指令轉(zhuǎn)譯成微指令,此微指令是用以在指示計(jì)算裝置儲(chǔ)存對(duì)應(yīng)第一輸入文字區(qū)塊的輸出文字區(qū)塊之前,指示計(jì)算裝置加載第二輸入文字區(qū)塊并對(duì)此第二輸入文字區(qū)塊執(zhí)行密碼運(yùn)算。因此,在對(duì)第二輸入文字區(qū)塊執(zhí)行密碼運(yùn)算期間,上述的輸出文字區(qū)塊可以被儲(chǔ)存。
文檔編號(hào)H04L9/06GK1592189SQ20041008311
公開日2005年3月9日 申請(qǐng)日期2004年9月29日 優(yōu)先權(quán)日2003年9月29日
發(fā)明者A·克里斯賓 湯瑪斯, 亨利 G·葛蘭, 帕德斯 泰瑞 申請(qǐng)人:威盛電子股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1