專利名稱:產(chǎn)生密碼鑰匙排程的裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明是有關(guān)于微電子領(lǐng)域,特別是有關(guān)于一種在一計算裝置中執(zhí)行密碼運算的裝置及方法,其中上述的計算裝置擴展一已提供的密碼鑰匙成一對應(yīng)的鑰匙排程以執(zhí)行密碼運算。
背景技術(shù):
早期的電腦系統(tǒng)是獨立操作于其他電腦系統(tǒng)之外,據(jù)此,執(zhí)行于此電腦系統(tǒng)中的應(yīng)用程序所需的輸入資料,若非儲存于此電腦系統(tǒng),就是由應(yīng)用程序設(shè)計人員在執(zhí)行時提供;而應(yīng)用程序執(zhí)行結(jié)果及產(chǎn)生的輸出資料,其形式一般為列印輸出的紙張,或者是寫入磁帶、磁盤或是此電腦系統(tǒng)其他類型的儲存裝置的檔案。輸出檔案可當成之后在相同電腦系統(tǒng)中執(zhí)行的應(yīng)用程序的輸入檔案,或者,當輸出資料先前被儲存成檔案于可移除或可輸送的儲存裝置時,其也可以提供給不同但相容的電腦系統(tǒng)的應(yīng)用程序使用。在這些早期的系統(tǒng),保護機密資訊的需求是公認,并且在其他資訊安全措施中,密碼應(yīng)用程序被發(fā)展及應(yīng)用以防止機密資訊未被授權(quán)揭露。這些密碼程序一般是以加密或解密的方式在儲存裝置中儲存成檔案的輸出資料。
其后沒幾年,使用者開始發(fā)現(xiàn)由網(wǎng)路將電腦連接可以提供資訊共享存取的好處,因此網(wǎng)路架構(gòu)、操作系統(tǒng)、以及資料傳輸協(xié)定等均發(fā)展成不僅支援存取共享資料的能力,更是其顯著的特征。例如使用者的電腦工作站可以在不同工作站或網(wǎng)路檔案伺服器存取檔案,或者利用網(wǎng)際網(wǎng)路獲得新聞及其他資訊,或者對數(shù)以百計的其他電腦傳送及接收電子信息(如電子郵件),或者與經(jīng)銷商的電腦系統(tǒng)連接并提供信用卡或銀行資訊以購買產(chǎn)品,或者在餐廳、機場或其他公共場合利用無線網(wǎng)路進行上述的任何活動。因此,保護機密資料及傳輸免于未授權(quán)揭露的需求已急速的成長,而在某些特定的狀況下,使用者被迫保護其機密資料的情況也大大的增加。目前新聞頭條通常集中在電腦資訊安全問題,例如垃圾郵件(spam)、駭客、身分盜取、反向工程、惡作劇以及信用卡詐騙等是公眾所關(guān)注的前幾名。而當這些從各方面侵入私人領(lǐng)域的動機由無心的錯誤到有預(yù)謀的網(wǎng)路攻擊,負責(zé)的執(zhí)行單位以新法律、嚴厲的執(zhí)行以及公共教育節(jié)目回應(yīng)。然而,這些回應(yīng)并未有效遏止危及電腦資訊的浪潮。昔日是政府、金融機構(gòu)、軍方所專注關(guān)切的間諜,現(xiàn)在對一般人而言也已成為重要的問題;間諜讀取他們的電子郵件或從他們的家用電腦存取他們檢查帳戶的交易。在商業(yè)之前,熟悉該項技術(shù)者可察知從小到大的社團法人目前應(yīng)用其資源卓越的部分以保護財產(chǎn)資訊。
資訊安全領(lǐng)域提供我們技術(shù)及裝置以加密資料,并使其僅能由指定的個體加以解碼,此為所知的密碼(cryptography)。當特別應(yīng)用于保護儲存或傳輸于電腦之間的資訊時,密碼最常被應(yīng)用于轉(zhuǎn)換機密資料(稱為“明文”;plaintext或cleartext)成為難以理解的形式(稱為“密文”;ciphertext)。轉(zhuǎn)變明文成為密文的轉(zhuǎn)換過程稱為加密(encryption;enciphering;ciphering),而轉(zhuǎn)變密文回明文的反向轉(zhuǎn)換過程稱為解密(decryption;deciphering;inverse ciphering)。
在密碼學(xué)的領(lǐng)域中,幾種程序及協(xié)定已發(fā)展到允許使用者不須具備許多知識及努力即可執(zhí)行密碼運算,并且針對這些使用者使其可以傳輸或者提供其加密形式的資訊產(chǎn)品給不同的使用者。連同加密資訊,傳送者通常會提供接收者一“密碼鑰匙(cryptographic key)”以使接收者可以解碼所加密的資訊,因此使得接收者能夠恢復(fù)或者獲得存取未加密的原始資訊。熟悉該項技術(shù)者可察知這些程序及協(xié)定一般是以暗語(password)保護、數(shù)學(xué)演算法以及應(yīng)用程序特別設(shè)計的形式加以實現(xiàn)以加密及解密機密資訊。
幾種類型的演算法目前使用于加密及解密資料。演算法根據(jù)上述一類型(例如一種RSA演算法,公開鑰匙密碼演算法)利用兩密碼鑰匙(一公開鑰匙(public key)與一私人鑰匙(private key)),加密或解密資料。根據(jù)一些公開鑰匙演算法,接收者的公開鑰匙是被傳送者用來加密傳送給接收者的資料,因為有一數(shù)學(xué)關(guān)系存在于使用者的公開鑰匙與私人鑰匙之間,因此接收者必須利用其私人鑰匙解密此傳輸以恢復(fù)此資料。雖然這類型的密碼演算法廣泛使用于現(xiàn)今,但其加密及解密的運算卻是極慢甚至于少量的資料。一第二類型的演算法,如所知的對稱鑰匙演算法,提供同量等級的資料安全并且可以較快執(zhí)行。這些演算法稱為對稱鑰匙演算法,因為他們對加密及解密資訊使用單一密碼鑰匙。在公開區(qū)段,目前有三種盛行單一鑰匙(single-key)密碼演算法資料加密標準(Data Encryption Standard;DES)演算法、三重資料加密標準(TripleDES)演算法以及進階加密標準(Advanced Encryption Standard;AES)演算法。因為這些演算法保護機密資料的強度,美國政府機關(guān)目前正使用這些演算法,但熟悉該項技術(shù)者預(yù)期這些演算法中至少一個演算法,在不久的將來會變成商業(yè)及非官方交易的標準。根據(jù)所有這些對稱鑰匙演算法,明文及密文被劃分在指定大小中的區(qū)塊以進行加密及解密。例如進階加密標準執(zhí)行密碼運算于128比特區(qū)塊的大小,并且使用128比特、192比特以及256比特的密碼鑰匙長度。其他對稱鑰匙演算法,例如Rijndael Cipher也允許192比特以及256比特的資料區(qū)塊。據(jù)此,就一區(qū)塊加密運算而言,一1024比特的明文信息加密成8個128比特的區(qū)塊。
所有對稱鑰匙演算法利用相同形式的次運算以加密一區(qū)塊的明文,并且根據(jù)許多更常被應(yīng)用的對稱鑰匙演算法,一初始密碼鑰匙被擴展成復(fù)數(shù)個鑰匙(例如一“鑰匙排程”),每一鑰匙是用以當成次運算的一對應(yīng)密碼“回合”且執(zhí)行于明文區(qū)塊。例如鑰匙排程的第一鑰匙是用以執(zhí)行次運算的第一密碼回合于明文區(qū)塊,第一回合的結(jié)果是用以當成第二回合的輸入,其中第二回合利用鑰匙排程的第二鑰匙以產(chǎn)生第二結(jié)果,并且一具體指定數(shù)量后來的回合執(zhí)行產(chǎn)生一最終回合結(jié)果,即密文本身。根據(jù)進階加密標準演算法,在每一回合的次運算是參照于文獻中的次比特(或S-box)、移列(Shift Rows)、混欄(Mix Colums)以及加入回合鍵(Add RoundKey)等。一區(qū)塊密文的解密是類似的處理并伴隨例外的執(zhí)行在每一回合,且回合的最終結(jié)果是一區(qū)塊的明文,上述的例外是指密文輸入反加密及反次運算執(zhí)行(例如inverse Mix Columns、inverse ShiftRows)。
資料加密標準及三重資料加密標準利用不同特定的次運算,但是這些次運算是類似進階加密標準的次運算,因為其利用相似的方式以轉(zhuǎn)換一區(qū)塊的明文成為一區(qū)塊的密文。
執(zhí)行密碼運算于多連續(xù)的文字區(qū)塊,所有對稱鑰匙演算法利用相同類別的模式,這些模式包含電子密碼本(electronic code book;ECB)模式、密碼區(qū)塊鏈結(jié)(cipher block chaining;CBC)模式、密碼反饋模式(cipher feedback;CFB)以及輸出反饋模式(output feedback;OFB)。這些模式中有些利用一附加初始化向量于執(zhí)行次運算期間,有些使用執(zhí)行于第一區(qū)塊明文的第一位置密碼回合的密文輸出當成附加的輸入給執(zhí)行于第二區(qū)塊明文的第二位置密碼回合。除此,本應(yīng)用的領(lǐng)域?qū)ΜF(xiàn)今對稱鑰匙密碼演算法所應(yīng)用的每一密碼演算及次運算提供更深層的討論。就具體指定執(zhí)行標準而言,讀者可由美國聯(lián)邦資訊處理標準公告46-3(Federal Information Processing Standards Publication;FIPS-46-3),1999年10月25日出版,得到資料加密標準及三重資料加密標準的詳細探討;以及美國聯(lián)邦資訊處理標準公告197(FIPS-197),2001年11月26日出版,得到進階加密標準的詳細探討。上述提及的兩種標準是由美國國家標準暨技術(shù)局(NationalInstitute of Standards and Technology;NIST)所發(fā)布及主張,在此列為參考以供本發(fā)明所有意圖及目的的說明。除上述所提及的標準,教導(dǎo)(tutorial)、白皮書、套件(toolkit)以及資源文章均可透過網(wǎng)際網(wǎng)路http//csrc.nist.gov/在NIST的電腦資源安全中心(ComputerSecurity Resource Center;CSRC)獲得。
熟悉該項技術(shù)者可察知有許多的應(yīng)用程序能夠執(zhí)行在可以執(zhí)行密碼運算(例如加密及解密)的電腦系統(tǒng)。實際上,某些操作系統(tǒng)(例如微軟Window XP、Linux)提供直接加密/解密的服務(wù)于密碼基元(primitive)、密碼應(yīng)用程序介面以及諸如此類的形式。然而,本發(fā)明人已觀察到現(xiàn)今電腦密碼技術(shù)在某些方面缺陷,因此由圖1強調(diào)及討論這些缺陷。
圖1是現(xiàn)今電腦密碼應(yīng)用的方塊圖100。方塊圖100描繪第一電腦工作站101連接區(qū)域網(wǎng)路(local area network)105,且區(qū)域網(wǎng)路105也連接第二電腦工作站102、網(wǎng)路檔案儲存裝置(networkfile storage device)106、第一路由器(first router)107或其他介面形式到廣域網(wǎng)路(wide area network,WAN)110(例如網(wǎng)際網(wǎng)路)以及像是符合IEEE 802.11的無線網(wǎng)路路由器(wirelessnetwork router)108,筆記型電腦(laptop computer)104則是透過無線網(wǎng)路109與無線路由器108成為介面。在廣域網(wǎng)路110方面,第二路由器(second router)111提供介面給第三電腦工作站103。
如上概述,現(xiàn)今的使用者在工作期間面臨許多次的電腦資訊安全問題。例如在現(xiàn)今多工(multi-tasking)操作系統(tǒng)的控制下,使用者工作站101可以同時執(zhí)行多個任務(wù)(task)且每一任務(wù)要求密碼運算。使用者工作站101要求執(zhí)行加密/解密應(yīng)用程序(encryption/decryption application)112(無論是操作系統(tǒng)的一部分或是由操作系統(tǒng)所引動)invoke))以儲存區(qū)域檔案于網(wǎng)路檔案儲存裝置106,在檔案儲存的同時,使用者可以傳送一加密信息給在工作站102的第二使用者,其中工作站102也要求執(zhí)行加密/解密應(yīng)用程序112的一范例,而加密信息可能是即時(例如即時信息)或者是非即時(例如電子郵件)。此外,使用者可以透過廣域網(wǎng)路110從工作站103存取或提供其金融資料(例如信用卡號、金融交易等)或者其他形式的機密資料。工作站103也可以代表是家庭辦公或其他遠端電腦103,其可以讓工作站101的使用者離開辦公室時用以存取區(qū)域網(wǎng)路105的任何共享資源101、102、106、107、108以及109。上述提及的每一活動均要求引動加密/解密應(yīng)用程序112的相對范例,并且無線網(wǎng)路109目前普遍地提供于咖啡店、機場、學(xué)校以及其他公眾場所,因而促使使用者筆記型電腦104不僅對其他使用者傳送/接收的信息進行加密/解密,并且也對透過無線網(wǎng)路109到無線路由器108的所有通訊進行加密及解密。
熟悉該項技術(shù)者可因此察知在工作站101-104中連同每一要求密碼運算的活動,須有一相對的要求以引動(invoke)加密/解密應(yīng)用程序112的范例,因此電腦101-104在最近的將來有可能同時執(zhí)行數(shù)以百計的密碼運算。
本發(fā)明人注意到上述電腦系統(tǒng)101-104由引動加密/解密應(yīng)用程序112的至少一范例以執(zhí)行密碼運算的方法的限制。例如透過程序規(guī)劃的軟件執(zhí)行一指定功能就比透過硬件執(zhí)行相同功能還慢。且每次執(zhí)行加密/解密應(yīng)用程序112時,正在電腦101-104執(zhí)行的任務(wù)就必須暫緩執(zhí)行,并且密碼運算的參數(shù)(例如明文、密文、模式以及鑰匙等)必須透過操作系統(tǒng)傳送給加密/解密應(yīng)用程序112為完成密碼運算所引動的范例。并且因為密碼演算須在一指定的資料區(qū)塊引動許多回合的次運算,加密/解密應(yīng)用程序112的執(zhí)行引動許多電腦指令的執(zhí)行而對整體系統(tǒng)的處理速度產(chǎn)生不利的影響。熟悉該項技術(shù)者可察知在微軟outlook傳送少量加密電子郵件信息的時間會相當于只傳送未加密電子郵件信息的五倍。
此外,目前的技術(shù)受限于操作系統(tǒng)介入的延遲。大部分的應(yīng)用程序并無提供完整的鑰匙產(chǎn)生或加密/解密元件;其利用操作系統(tǒng)的元件或外掛應(yīng)用程序以完成上述的任務(wù),此外操作系統(tǒng)因中斷及其他正在執(zhí)行應(yīng)用程序的請求而轉(zhuǎn)移其執(zhí)行。
并且,本發(fā)明人注意到在現(xiàn)今電腦系統(tǒng)101-104的密碼運算是相類似于微處理器尚未有浮點單元時的浮點數(shù)學(xué)運算。早期的浮點單元運算是由軟件所執(zhí)行,因此執(zhí)行的非常慢;同浮點運算,由軟件執(zhí)行的密碼運算也是極慢。當浮點技術(shù)更進一步發(fā)展,浮點輔助處理器提供浮點指令以供執(zhí)行,這些浮點輔助處理器執(zhí)行浮點運算比軟件執(zhí)行快了許多,但卻增加了系統(tǒng)的成本。相同地,密碼輔助處理器目前以附加在電路板或以外接裝置與主處理器透過并列埠或其他介面總線(例如USB)成為介面的形式存在,這些輔助處理器能使密碼運算的完成比由純軟件所執(zhí)行的快了許多。但密碼共同處理器給系統(tǒng)配備增加了成本,需要額外的電源、而且降低了系統(tǒng)的可靠性。由于資料通路不像主微處理器那樣在同一個模組上,所以密碼共同處理器的執(zhí)行乃更易被監(jiān)聽。
因此本發(fā)明人確認將密碼硬件加入現(xiàn)今微處理器的需要,藉此,要求密碼運算的應(yīng)用程序可由一單獨、基元(atomic)的密碼指令指示微處理器執(zhí)行密碼運算。本發(fā)明人也確認應(yīng)以此功能限定操作系統(tǒng)介入及管理的要求,并且期望密碼指令可以使用于應(yīng)用程序的權(quán)限層級(privilege level)以及密碼硬件可相稱(comport with)于現(xiàn)今微處理器的一般架構(gòu),并且密碼硬件及相關(guān)聯(lián)的密碼指令可支援相容先前的操作系統(tǒng)及應(yīng)用程序。更期望的是提供執(zhí)行密碼運算的裝置及方法,其可阻止未授權(quán)的監(jiān)視;其可支援及可程序化有關(guān)多密碼演算;其可支援核對及測試實體特定的密碼演算;其可允許使用者提供密碼鑰匙也可自行產(chǎn)密碼鑰匙;其支援多資料區(qū)塊大小及多密碼鑰匙長度(key size);以及其提供可程序化區(qū)塊加密/解密模式如電子密碼本模式、密碼區(qū)塊鏈結(jié)模式、密碼反饋模式以及輸出反饋模式。
發(fā)明內(nèi)容
本發(fā)明是用以解決上述已知技術(shù)中的問題及缺點。本發(fā)明提供一較佳的技術(shù)以執(zhí)行密碼運算于一微處理器中。
本發(fā)明一執(zhí)行密碼運算的裝置,其特征在于,包含一密碼指令電路,用以產(chǎn)生一密碼指令,該密碼指令是由一計算裝置接收并將其當成執(zhí)行于該計算裝置的一指令流的一部分,其中該密碼指令指定該些密碼運算其中之一以及在被指定的密碼運算執(zhí)行期間指定一已提供的密碼鑰匙擴展成一對應(yīng)的鑰匙排程以供使用;
一鑰匙產(chǎn)生邏輯電路,操作耦合于該密碼指令電路,且是配置以指示該計算裝置來擴展該已提供的密碼鑰匙成該對應(yīng)的鑰匙排程;以及一執(zhí)行邏輯電路,操作耦合于該鑰匙產(chǎn)生邏輯電路,且是配置以擴展該已提供的密碼鑰匙成該對應(yīng)的鑰匙排程。
其中該密碼運算可以具有下列功能的某一種一加密運算,該加密運算包含加密復(fù)數(shù)個明文區(qū)塊,以產(chǎn)生相對復(fù)數(shù)個密文區(qū)塊;以及一解密運算,該解密運算包含解密復(fù)數(shù)個密文區(qū)塊,以產(chǎn)生相對復(fù)數(shù)個明文區(qū)塊。
其中該對應(yīng)的鑰匙排程是包含一擴展鑰匙排程。
其中該鑰匙產(chǎn)生邏輯電路是配置用以轉(zhuǎn)譯一控制字組中的一鑰匙產(chǎn)生欄位,且該密碼指令參照該控制字組。
其中該密碼指令是隱含參照該計算裝置的復(fù)數(shù)個暫存器。
其中該些暫存器至少可以為下列可能變化的某一種或其任意組合一第一暫存器,其中該第一暫存器的內(nèi)容是包含指向一第一存儲器地址的一第一指標,該第一存儲器地址是依據(jù)欲完成的被指定的密碼運算指定存儲器內(nèi)一第一位置,以存取復(fù)數(shù)個輸入文字區(qū)塊;一第二暫存器,其中該第二暫存器的內(nèi)容是包含指向一第二存儲器地址的一第二指標,該第二存儲器地址指定存儲器內(nèi)一第二位置,以儲存相對復(fù)數(shù)個輸出文字區(qū)塊,而相對該些輸出文字區(qū)塊被產(chǎn)生,是由于復(fù)數(shù)個輸入文字區(qū)塊內(nèi)完成被指定的密碼運算;
一第三暫存器,其中該第一暫存器的內(nèi)容是指示復(fù)數(shù)個輸入文字區(qū)塊中的復(fù)數(shù)個文字區(qū)塊;一第四暫存器,其中該第四暫存器的內(nèi)容是包含指向一第三存儲器地址的一第三指標,該第三存儲器地址指定存儲器內(nèi)一第三位置以存取密碼鑰匙資料,以用于完成被指定的密碼運算;一第五暫存器,其中該第五暫存器的內(nèi)容是包含指向一第四存儲器地址的一第四指標,該第四存儲器地址指定存儲器內(nèi)一第四位置,該第四位置包含一初始向量位置,該初始向量位置的內(nèi)容包含一初始向量或一初始向量等效物以用于完成被指定的密碼運算;以及一第六暫存器,其中該第六暫存器的內(nèi)容是包含指向一第五存儲器地址的一第五指標,該第五存儲器地址指定存儲器內(nèi)一第五位置以存取一控制字組以用于完成被指定的密碼運算,其中該控制字組指定被指定的密碼運算的密碼參數(shù),該控制字組包含一鑰匙產(chǎn)生欄位,是配置用以指定在被指定的密碼運算執(zhí)行期間指定已提供的密碼鑰匙擴展成該對應(yīng)的鑰匙排程以供使用。
其中該密碼鑰匙資料是包含該已提供的密碼鑰匙。
其中該執(zhí)行邏輯電路包含一密碼單元,配置用以在每一復(fù)數(shù)個輸入文字區(qū)塊執(zhí)行復(fù)數(shù)個密碼回合,以產(chǎn)生每一復(fù)數(shù)個相對輸出文字區(qū)塊,其中該些密碼回合是由提供給該密碼單元的一控制字組所指定。
本發(fā)明一執(zhí)行密碼運算的裝置,其特征在于,包含一元件內(nèi)的一密碼單元,該密碼單元是配置用以執(zhí)行該些密碼運算其中之一,并回應(yīng)接收一指令流內(nèi)一密碼指令,該密碼指令指定被指定的密碼運算以及在被指定的密碼運算執(zhí)行期間指定一密碼鑰匙擴展成一對應(yīng)的鑰匙排程以供使用;以及一鑰匙產(chǎn)生邏輯電路,操作耦合于該密碼單元且是配置用以指示該元件,以執(zhí)行被指定的密碼運算并以擴展該密碼鑰匙成該對應(yīng)的鑰匙排程。
其中該對應(yīng)的鑰匙排程是包含一擴展鑰匙排程。
其中該鑰匙產(chǎn)生邏輯電路是配置用以轉(zhuǎn)譯一控制字組中的一鑰匙產(chǎn)生欄位,且該密碼指令參照該控制字組。
本發(fā)明一種在一裝置執(zhí)行密碼運算的方法,其特征在于,包含接收一密碼指令,該密碼指令在復(fù)數(shù)個密碼運算其中的一執(zhí)行期間指定一密碼鑰匙擴展成一對應(yīng)的鑰匙排程以供使用;以及擴展該密碼鑰匙成該對應(yīng)的鑰匙排程。
其中該接收包含由一控制字組的一欄位指定該密碼鑰匙擴展成該對應(yīng)的鑰匙排程,其中該控制字組是由該密碼指令所參照。
其中該對應(yīng)的鑰匙排程是包含一擴展鑰匙排程。
其中該接收包含指定該密碼指令是依據(jù)x86指令格式。
為進一步說明本發(fā)明的技術(shù)內(nèi)容,以下進行實施例及附圖詳細說明如后,其中圖1是現(xiàn)今密碼應(yīng)用的示意圖;
圖2是執(zhí)行密碼運算技術(shù)的示意圖;圖3是本發(fā)明執(zhí)行密碼運算的微處理器裝置的示意圖;圖4是本發(fā)明的基元(atomic)密碼指令實施例的示意圖;圖5是圖4的基元密碼指令區(qū)塊加密模式欄位值的范例的表格;圖6是本發(fā)明在X86相容微處理器的密碼單元的方塊圖;圖7是圖6的微處理器中指示密碼次運算的范例微指令欄位的示意圖;圖8是圖7的載入微指令暫存欄位值格式的表格;圖9是圖7的儲存微指令暫存欄位值格式的表格;圖10是本發(fā)明一較佳實施例指定密碼運算參數(shù)的控制字組格式范例的示意圖;圖11是圖10的控制字組產(chǎn)生鑰匙欄位值的表格;圖12是本發(fā)明的一較佳實施例密碼單元的方塊圖;圖13是本發(fā)明執(zhí)行有關(guān)進階加密標準演算法密碼運算的一區(qū)塊加密邏輯電路實施例的方塊圖;圖14是本發(fā)明的一進階加密標準實施例的一128比特密碼鑰匙擴展邏輯電路的示意圖;圖15是本發(fā)明一較佳實施例在一中斷事件期間保留密碼參數(shù)狀態(tài)的方法流程圖;以及圖16是本發(fā)明一較佳實施例在至少一個中斷事件時,擴展一密碼鑰匙成一對應(yīng)的鑰匙排程以在復(fù)數(shù)個輸入資料區(qū)塊執(zhí)行一密碼運算的方法流程圖。
具體實施例方式
以下所述為應(yīng)用已知技術(shù)而制造或使用文中特定應(yīng)用及需求的本發(fā)明所列舉的例子。然而,實施例中所提及的各種修改是用以彰顯與已知技術(shù)的不同處,此一般原則可應(yīng)用于其他實施例中。因此,本發(fā)明并非限定于特定實施例。
監(jiān)于上述所討論的密碼運算及現(xiàn)今電腦系統(tǒng)用以加/解密資料的相關(guān)技術(shù),這些技術(shù)及其相關(guān)限制將在圖2中繼續(xù)探討,而接下來本發(fā)明也將根據(jù)圖3到圖16加以討論。本發(fā)明提供一種在現(xiàn)今電腦系統(tǒng)中執(zhí)行密碼運算的裝置及方法,其透過主要機制展現(xiàn)優(yōu)秀的性能特征并且更滿足上述所提及的目標,像是限制操作系統(tǒng)的干預(yù)、先前(legacy)架構(gòu)的相容性、演算法及模式的可程序性、密碼鑰匙排程的自行產(chǎn)生、防止駭客入侵以及可測試性等等。
請參照圖2,方塊圖200描繪當今電腦系統(tǒng)中執(zhí)行密碼運算的技術(shù)。方塊圖200包含一微處理器201,其擷取指令及從系統(tǒng)存儲器中一稱為應(yīng)用存儲器(application memory)203存取應(yīng)用程序相關(guān)的資料,而程序控制及應(yīng)用存儲器203中資料的存取通常是由屬于系統(tǒng)存儲器保護范圍的操作系統(tǒng)軟件202所管理。如上所述,當一執(zhí)行應(yīng)用程序(例如電子郵件程序或檔案儲存程序)要求執(zhí)行密碼運算時,此執(zhí)行應(yīng)用程序必須由指示(direct)微處理器201執(zhí)行相當數(shù)量的指令以完成密碼運算。這些指令可能是執(zhí)行應(yīng)用程序本身的子程序,也可能是連結(jié)到此執(zhí)行應(yīng)用程序的外掛應(yīng)用程序,或者是由操作系統(tǒng)202所提供的服務(wù)。姑且不論他們的關(guān)聯(lián)性,熟悉該項技術(shù)者可察知這些指令將駐于某些指定或分派的存儲器范圍。為達討論目的,這些存儲器范圍顯示在應(yīng)用存儲器203并且包含一密碼鑰匙產(chǎn)生應(yīng)用程序(keygeneration application)204,其中密碼鑰匙產(chǎn)生應(yīng)用程序204產(chǎn)生或接收一密碼鑰匙并且擴展此鑰匙成一使用于密碼回合運算中2的鑰匙排程(key schedule)205。就多區(qū)塊加密運算而言,區(qū)塊加密應(yīng)用程序(encryption application)206被引動(invoke)。加密應(yīng)用程序206執(zhí)行存取明文(plaintext)區(qū)塊210、鑰匙排程205以及密碼參數(shù)(cryptographic parameters)209的指令,其中密碼參數(shù)209是進一步指示明確的密碼運算,如模式、鑰匙排程位置等,且在要求特定模式時,加密應(yīng)用程序206也可存取初始向量(initialization vector)208。加密應(yīng)用206執(zhí)行其內(nèi)的指令以產(chǎn)生對應(yīng)的密文(ciphertext)區(qū)塊211。同理,區(qū)塊解密應(yīng)用程序(decryption application)207被引動以執(zhí)行區(qū)塊解密運算。解密應(yīng)用程序207執(zhí)行存取密文區(qū)塊211、鑰匙排程205以及密碼參數(shù)209的指令,其中密碼參數(shù)209是進一步指示明確的密碼運算,并且在要求特定模式時,也可存取初始向量208。解密應(yīng)用程序207執(zhí)行其內(nèi)的指令以產(chǎn)生對應(yīng)的明文區(qū)塊210。
值得注意的是必須執(zhí)行相當數(shù)量的指令以產(chǎn)生密碼鑰匙及加密或解密文字區(qū)塊。上述提及的FIPS說明書包含許多虛擬碼致能相當數(shù)量指令的范例,因此,熟悉該項技術(shù)者可察知一個簡單的加密運算將要求數(shù)以百計的指令,并且每一指令須經(jīng)由微處理器201執(zhí)行以完成所要求的密碼運算。并且,完成密碼運算的指令執(zhí)行對正在執(zhí)行的應(yīng)用程序的主目的(例如檔案管理、即時信息、電子郵件、遠端檔案存取、信用卡交易)而言一般是屬多余,結(jié)果讓使用者誤為目前執(zhí)行的應(yīng)用程序執(zhí)行效率不佳。至于獨立或外掛的加密及解密應(yīng)用程序206及207,這些應(yīng)用程序206及207的引動及管理也必須服從操作系統(tǒng)202的其他請求,例如支援中斷、例外(exception)以及更惡化問題的類似事件。并且電腦系統(tǒng)所要求每一同時的密碼運算,密碼鑰匙產(chǎn)生應(yīng)用程序204、解密應(yīng)用程序207及初始向量208的個別實例必須被配置在應(yīng)用存儲器203,且預(yù)期由微處理器201所要求執(zhí)行的同時密碼運算的數(shù)目也將隨時間而增加。
本發(fā)明人注意到目前電腦系統(tǒng)密碼技術(shù)的問題與限制,并且確認在微處理器中提供執(zhí)行密碼運算的裝置及方法的需要。由此,本發(fā)明提供一微處理器及相關(guān)的方法透過其內(nèi)的密碼單元執(zhí)行密碼運算,此密碼單元是藉由單一密碼指令的程序執(zhí)行密碼運算。本發(fā)明現(xiàn)在將以圖3到圖16為參考加以討論。
請參照圖3,其為本發(fā)明一較佳實施例執(zhí)行密碼運算的微處理器的方塊圖300。方塊圖300描繪一微處理器301,其透過存儲器總線(memory bus)319與系統(tǒng)存儲器(system memory)321耦合連接,且微處理器301包含從指令暫存器接收指令的一轉(zhuǎn)譯邏輯電路(translation logic)303。轉(zhuǎn)譯邏輯電路303包含邏輯電路、裝置或微碼(例如微指令或本機指令),或邏輯電路、裝置或微碼的組合,或用以轉(zhuǎn)譯指令成為指令相關(guān)序列的等效元件。這些在轉(zhuǎn)譯邏輯電路303中執(zhí)行轉(zhuǎn)譯的元件可能與在微處理器301中執(zhí)行其他功能的電路、微碼共用,而根據(jù)本應(yīng)用的范圍,微碼是對照至少一個微指令的術(shù)語。一微指令(也可參照成一本機指令)是一單元層級執(zhí)行的一指令,例如微指令是由精簡指令集電腦(reduced instruction set computer;RISC)微處理器直接執(zhí)行。至于復(fù)雜指令集電腦(complex instruction setcomputer;CISC)微處理器,如x86相容的微處理器,其x86指令被轉(zhuǎn)譯為關(guān)聯(lián)的微指令并且由復(fù)雜指令集電腦微處理器中的單元直接執(zhí)行。轉(zhuǎn)譯邏輯電路303耦合微指令佇列(micro instruction queue)304,且此微指令佇列304具有復(fù)數(shù)個微指令通道(microinstruction entries)305、306。微指令由微指令佇列304提供給包含一暫存器組(register file)307的暫存階段邏輯電路,而此暫存器組307包含復(fù)數(shù)個暫存器(register)308-313,其內(nèi)容在執(zhí)行一指定的密碼運算前就已建立。暫存器308-313指到系統(tǒng)存儲器321中含有執(zhí)行指定密碼運算資料的對應(yīng)位置323-327。暫存階段耦合到載入邏輯電路(load logic)314,此載入邏輯電路314是與取回資料以執(zhí)行指定密碼運算的資料快取(data cache)315成介面,而此資料快取315由存儲器總線319耦合到系統(tǒng)存儲器321。執(zhí)行邏輯電路(execution logic)328耦合到載入邏輯電路314并且執(zhí)行由前面階段傳來的微指令所指定的運算。執(zhí)行邏輯電路328包含邏輯電路、裝置或微碼(例如微指令或本機指令),或邏輯電路、裝置或微碼的組合,或用以執(zhí)行由指令指定的運算的等效元件。這些在執(zhí)行邏輯電路328中執(zhí)行運算的元件可能與在微處理器301中執(zhí)行其他功能的電路、微碼共用。執(zhí)行邏輯電路包含密碼單元(cryptographic unit)316,此密碼單元316接收從載入邏輯電路314被要求執(zhí)行指定密碼運算的資料。微指令指示密碼單元316執(zhí)行指定密碼運算于復(fù)數(shù)個輸入文字區(qū)塊(input text)326以產(chǎn)生相對應(yīng)復(fù)數(shù)個輸出文字區(qū)塊(output text)327。密碼單元316包含邏輯電路、裝置或微碼(例如微指令或本機指令),或邏輯電路、裝置或微碼的組合,或用以執(zhí)行密碼運算的等效元件。這些在密碼單元316中執(zhí)行運算的元件可能與在微處理器301中執(zhí)行其他功能的電路、微碼共用。在一實施例中,密碼單元316并列操作與在執(zhí)行邏輯電路328內(nèi)的其他執(zhí)行單元(未繪出),例如整數(shù)單元、浮點數(shù)單元等。在本應(yīng)用范圍一“單元”的實施是包含邏輯電路、裝置或微碼(例如微指令或本機指令),或邏輯電路、裝置或微碼的組合,或用以執(zhí)行指定功能或指定運算的等效元件。這些在特定單元中執(zhí)行指定功能或指定運算的元件可能與在微處理器301中執(zhí)行其他功能的電路、微碼共用。例如一實施例中,一整數(shù)單元包含邏輯電路、裝置或微碼(例如微指令或本機指令),或邏輯電路、裝置或微碼的組合,或用以執(zhí)行整數(shù)指令的等效元件;一浮點單元包含邏輯電路、裝置或微碼(例如微指令或本機指令),或邏輯電路、裝置或微碼的組合,或用以執(zhí)行浮點指令的等效元件;則在整數(shù)單元中執(zhí)行整數(shù)指令的元件可能與在浮點單元中執(zhí)行浮點指令的其他電路、微碼等共用。在一與x86架構(gòu)相容的實施例中,密碼單元316與整數(shù)單元、浮點單元、多媒體延伸集(Mathematic MatrixExtension;MMX)單元、串流延伸集(Streaming SIMD Extensions;SSE)單元并列操作。根據(jù)本應(yīng)用范圍,當一實施例可以正確執(zhí)行設(shè)計給x86微處理器執(zhí)行的大部分應(yīng)用程序時,此實施例是與x86架構(gòu)相容,一應(yīng)用程序正確執(zhí)行而得到其預(yù)期的結(jié)果。替代x86相容實施例預(yù)期密碼單元并列操作與先前提及的x86執(zhí)行單元的子集。密碼單元316耦合到儲存邏輯電路317并且提供相對應(yīng)復(fù)數(shù)個輸出文字區(qū)塊327,而此儲存邏輯電路317也耦合到指定輸出文字資料327給系統(tǒng)存儲器321儲存的資料快取315。此資料快取315耦合到寫回邏輯電路(write back logic)318,而當所指定的密碼運算完成時,寫回邏輯電路318更新在暫存器組307中的暫存器308-313。在一實施例中,微指令與時脈信號電路(未繪出)同步經(jīng)過每一個上述所提及的邏輯電路階段302、303、304、307、314、316-318以使運算可以同時執(zhí)行而相似于在線執(zhí)行運算。
在系統(tǒng)存儲器321中,一要求指定密碼運算的應(yīng)用程序可以直接指示微處理器301透過單一密碼指令322(參照用以說明的密碼(XCRYPT)指令322)執(zhí)行此運算。在一復(fù)雜指令集電腦微處理器實施例中,密碼指令322包含一指定密碼運算的微指令。在一實施例中,密碼指令322利用一存在指令集架構(gòu)中的一空閑或未使用指令運算碼。在一x86架構(gòu)相容的實施例中,密碼指令322是一4比特組指令包含一x86重復(fù)前置(REP prefix)(如0xF3)、兩比特組未使用x86運算碼(opcode)(如0x0FA7)、一比特組有關(guān)于一指定區(qū)塊密碼模式以應(yīng)用于執(zhí)行一指定密碼運算。在一實施例中,根據(jù)本發(fā)明的密碼指令322可以在系統(tǒng)權(quán)限供給應(yīng)用程序的層級執(zhí)行,因而可以程序規(guī)劃于指令的程序流以提供給微處理器301不論是由應(yīng)用程序直接或在操作系統(tǒng)320的控制下。因為僅有一密碼指令322指示微處理器301執(zhí)行指定的密碼運算,而運算的完成對操作系統(tǒng)320應(yīng)是顯而易見。
在操作中,操作系統(tǒng)320引動一應(yīng)用程序以執(zhí)行于微處理器301。如部分指令流于應(yīng)用程序的執(zhí)行期間,一密碼指令322從系統(tǒng)存儲器321提供給擷取邏輯電路(fetch logic)302。然而,在密碼指令322執(zhí)行之前,在程序流的指令指示微處理器301初始化暫存器308-312的內(nèi)容以使他們指到系統(tǒng)存儲器321中的位置323-327,其包含一密碼控制字組(cryptographic control word)323、一初始密碼鑰匙(initial cryptographic key)324或一鑰匙排程(key schedule)324、一初始向量(initialization vector)325(如果需要)、運算用的輸入文字(input text)326、以及輸出文字(output text)327。在執(zhí)行密碼指令322之前須先初始化暫存器308-312,因為密碼指令322與一附加于暫存器308-312的含有區(qū)塊計數(shù)的暫存器313,其中區(qū)塊計數(shù)是在輸入文字326區(qū)塊加密或解密資料區(qū)塊的數(shù)目。因此轉(zhuǎn)譯邏輯電路303從擷取邏輯電路302取回密碼指令并且轉(zhuǎn)譯成一序列相對應(yīng)的微指令以指示微處理器301執(zhí)行指定的密碼運算。一第一復(fù)數(shù)個微指令305-306于相對應(yīng)微指令序列中,指示密碼單元316從載入邏輯電路314載入資料,并且開始執(zhí)行指定數(shù)目的密碼回合以產(chǎn)生相對應(yīng)區(qū)塊的輸出資料,提供由資料快取315儲存于系統(tǒng)存儲器321中的輸出文字327給儲存邏輯電路317。一第二復(fù)數(shù)個微指令(未繪出)于相對應(yīng)微指令序列中,指示在微處理器301中其他執(zhí)行單元(未繪出)執(zhí)行其他未完成指定密碼運算所需的運算,例如管理包含暫時結(jié)果及計數(shù)的非架構(gòu)暫存器(未繪出)、更新輸出及輸入文字指標暫存器311-312、更新輸入文字區(qū)塊326的加密/解密初始向量指標暫存器(initialization vector pointer register)310(如果需要)、處理未處理的中斷等等。在一實施例中,暫存器308-313是架構(gòu)性的暫存器。架構(gòu)性暫存器308-313是為實現(xiàn)特定微處理器的指令集架構(gòu)(instruction set architecture,ISA)中所定義的一種暫存器。
在一實施例中,密碼單元316分成復(fù)數(shù)個階段因此允許相繼輸入文字區(qū)塊326的管線處理。
圖3的方塊圖300教示本發(fā)明所需的元件,因此省略許多在現(xiàn)今微處理器301中的邏輯以求圖示的簡潔。然而,熟悉該項技術(shù)者可察知現(xiàn)今特定實現(xiàn)的微處理器301是包含許多階段及邏輯電路,在此為圖示的簡潔而將其部分合并。例如載入邏輯電路314在一快取線對準階段之后可以嵌入隨一快取介面階段的一地址產(chǎn)生階段。然而重要且應(yīng)注意的是,在復(fù)數(shù)個輸入文字區(qū)塊326上的一完全密碼運算,是根據(jù)本發(fā)明由一單一指令322的運算對操作系統(tǒng)320的考量是顯而易見,并且單一指令322的執(zhí)行是由與微處理器301中其他執(zhí)行單元并聯(lián)操作及協(xié)調(diào)的密碼單元316所完成。本發(fā)明密碼單元316在實施組態(tài)中的替代實施例是類似前幾年微處理器中浮點單元的硬件。密碼單元316的操作及相關(guān)密碼指令322是完全相容先前操作系統(tǒng)及程序同時操作,并且也將在之后更加詳細的探討。
請參照圖4,其為本發(fā)明的一基元(atomic)密碼指令400實施例的方塊圖。密碼指令400包含一選項前置欄位(optional prefixfield)401、一重復(fù)前置欄位(repeat prefix field)402、一運算碼欄位(opcode field)403、一區(qū)塊密碼模式欄位(block ciphermode field)404。在一實施例中,欄位401-404的內(nèi)容相稱于x86指令集架構(gòu),而其替代的實施例可考慮相容于其他指令集架構(gòu)。
操作上,選項前置欄位401在許多指令集架構(gòu)中是用以致能(enable)或禁能(disable)部分主要微處理器的處理特征,像是指示16比特或32比特的運算、指示處理或存取特定的存儲器區(qū)段等。重復(fù)前置欄位402是用以指示由密碼指令400所指定的密碼運算是在復(fù)數(shù)個輸入資料區(qū)塊(如明文或密文)完成。重復(fù)前置欄位402也隱示一相稱微處理器利用其內(nèi)復(fù)數(shù)個架構(gòu)暫存器的內(nèi)容當成指標指到系統(tǒng)存儲器中含有完成指定密碼運算所需參數(shù)的位置。如上所述,在一x86相容實施例中,重復(fù)前置欄位402的值是0xF3,并且根據(jù)x86架構(gòu)協(xié)定,密碼指令與x86重復(fù)字串指令,如REP.MOV,在形式上非常相似。例如當本發(fā)明由一x86相容微處理器實施例執(zhí)行時,重復(fù)前置欄位402是參照一儲存在架構(gòu)暫存器ECX中的區(qū)塊計數(shù)變數(shù)、一儲存在暫存器ESI中的來源地址指標(指到輸入資料以供密碼運算)以及一儲存在暫存器EDI中的目的地址指標(指到存儲器中的輸出資料)。在x86相容的一實施例中,本發(fā)明更擴展傳統(tǒng)重復(fù)字串的指令的概念成為更可參照一儲存在暫存器EDX中的控制字組指標、一儲存在暫存器EBX中的密不是一最終結(jié)果。熟悉該項技術(shù)者可察知許多密碼演算法除了最終回合的次運算之外是執(zhí)行相同的次運算于每一回合。因此程序設(shè)計中間結(jié)果欄位1005提供中間結(jié)果而不是最后結(jié)果,由此,允許程序設(shè)計者可核對演算法實現(xiàn)的中間的步驟。例如獲得增加的中間值以核對演算法實行,假設(shè),執(zhí)行一回合的加密于一文字區(qū)塊,然后執(zhí)行兩回合于相同文字區(qū)塊,然后三回合等。提供可程序化回合及中間值結(jié)果的功能可讓使用者檢查密碼執(zhí)行、除錯以及達到改變鑰匙結(jié)構(gòu)及回合計數(shù)。
請參照圖11,其為圖10中控制字組1000的鑰匙產(chǎn)生欄位1006范例值的表格1100。鑰匙產(chǎn)生欄位1006的0值是指示一計算裝置依據(jù)本發(fā)明從一密碼鑰匙自動產(chǎn)生一鑰匙排程給一指定密碼運算,其中上述的密碼鑰匙是提供于存儲器中,而此存儲器是由一鑰匙指標暫存器的內(nèi)容所指到。自動鑰匙排程的產(chǎn)生依據(jù)一密碼演算規(guī)則(例如進階加密標準)是等效于鑰匙擴展。鑰匙產(chǎn)生欄位1006的1值是指示一指定密碼運算的一使用者產(chǎn)生鑰匙排程是提供于存儲器中,且是由鑰匙指標暫存器的內(nèi)容所指到。除了擴展一密碼鑰匙排程,一計算裝置依據(jù)本發(fā)明一較佳實施例將從存儲器載入使用者產(chǎn)生鑰匙排程,并在指定密碼運算執(zhí)行期間使用此使用者產(chǎn)生鑰匙排程。本發(fā)明的一好處是使用者可以使用一鑰匙排程于密碼回合運算,而此鑰匙排程并不相稱于使用中的特定密碼演算法則。
請參照圖12,其為本發(fā)明的一密碼單元1200的較佳實施例方塊圖。密碼單元1200包含一微指令暫存器(micro opcode register)1203,此微指令暫存器1203透過一微指令總線1214接收密行轉(zhuǎn)譯的元件可能與在微處理器600中執(zhí)行其他功能的電路、微碼共用。轉(zhuǎn)譯邏輯電路602包含一鑰匙產(chǎn)生邏輯電路640,而此鑰匙產(chǎn)生邏輯電路640是耦合到一轉(zhuǎn)譯器(translator)603及一微碼唯讀存儲器(microcode ROM)604。中斷邏輯電路(interrupt logic)626由總線634耦合到轉(zhuǎn)譯邏輯電路602。復(fù)數(shù)個軟件及硬件中斷信號627是由指示未處理中斷給轉(zhuǎn)譯邏輯電路602的中斷邏輯電路626處理。轉(zhuǎn)譯邏輯電路602耦合到微處理器600相繼的階段包含一暫存階段(register stage)605、定址階段(address stage)606、載入階段(load stage)607、執(zhí)行階段(execute stage)608、儲存階段(store stage)618、以及寫回階段(write backstage)619。每一相繼階段包含邏輯電路以完成由擷取邏輯電路601所提供相關(guān)指令執(zhí)行的特定功能,如先前在第三圖的微處理器中所討論參照類似名稱的元件。描繪在圖6中x86相容微處理器600的實施例是以在執(zhí)行階段608中的執(zhí)行邏輯電路(execution logic)632為特征,其包含平行執(zhí)行單元610、612、614、616、617。一整數(shù)單元610從微指令佇列609接收執(zhí)行整數(shù)微指令;一浮點單元612從微指令佇列611接收執(zhí)行浮點數(shù)微指令;一多媒體延伸集單元614從微指令佇列613接收執(zhí)行多媒體延伸集微指令;一串流延伸集單元616從微指令佇列615接收執(zhí)行串流延伸集微指令。在本發(fā)明之一x86實施例,一密碼單元617由一載入總線620、一暫停(stall)信號總線621以及一儲存總線622耦合到SSE單元616。密碼單元617共用串流延伸集單元的微指令佇列615。一替代實施例可將密碼單元617獨立并聯(lián)操作像是單元610、612以及614。整數(shù)單元610耦合到一x86旗標(EFLAGS)暫存器624,此旗標暫存器包含一X比特625,而此X比特625的狀態(tài)是配置用以指示密碼運算是否正在處理。在一實施例中,此X比特625是一x86旗標暫存器624的第30比特。此外,整數(shù)單元610存取一機器特殊暫存器(machine specific register)628以評估一E比特629的狀態(tài),而此E比特629的狀態(tài)指示密碼單元617是否位于微處理器600。整數(shù)單元610也存取一D比特631于一特征控制暫存器(feature control register)630,以致能或禁能密碼單元617。如圖3的微處理器301實施例,圖6的微處理器600以必要元件為特征教示本發(fā)明一x86相容實施例的內(nèi)容,并且為求圖示簡潔而合并或省略微處理器的其他元件。熟悉該項技術(shù)者可察覺用以完全介面的其他元件,像是資料快取、總線介面單元、時脈產(chǎn)生以及分配邏輯電路等均未繪出。
在操作中,指令是由擷取邏輯電路601從存儲器(未繪出)擷取并且與一時脈信號(未繪出)同步提供給轉(zhuǎn)譯邏輯電路602。轉(zhuǎn)譯邏輯電路602轉(zhuǎn)譯每個指令成為一相對應(yīng)序列的微指令,其與時脈信號同步持續(xù)地提供給微處理器600的后續(xù)階段605-608、618、619。在一序列微指令中的每一個微指令指示一個次運算的執(zhí)行,而次運算被要求完成由一相對指令所指定的一整體運算,例如定址階段606產(chǎn)生一地址、暫存階段605從指定暫存器(未繪出)恢復(fù)的兩運算元在整數(shù)單元內(nèi)相加、由儲存階段618儲存執(zhí)行單元610、612、614、616、617其中之一所產(chǎn)生的結(jié)果于存儲器等。根據(jù)轉(zhuǎn)譯中的指令,轉(zhuǎn)譯邏輯電路602利用轉(zhuǎn)譯器603直接產(chǎn)生一序列的微指令,或是從微碼唯讀存儲器604擷取此序列,或是利用轉(zhuǎn)譯器603直接產(chǎn)生此序列的部份并且從微碼唯讀存儲器604擷取此序列剩下的部分。微指令透過微處理器600的相繼階段605-608、618、619持續(xù)地與時脈同步進行。當微指令到達執(zhí)行階段608,執(zhí)行邏輯電路632連同其運算元(在暫存階段605從暫存器所恢復(fù),或在定址階段606由邏輯電路所產(chǎn)生,或由載入邏輯電路從資料快取所恢復(fù)),由放置微指令在一對應(yīng)的微指令佇列609、611、613、615而將其依指定路線傳送給一指定執(zhí)行單元610、612、614、616、617。執(zhí)行單元610、612、614、616、617執(zhí)行微指令并提供結(jié)果給儲存階段618。在一實施例,微指令包含欄位指示其是否可以與其它運算并列執(zhí)行。
回應(yīng)先前所述的擷取一個密碼指令,轉(zhuǎn)譯邏輯電路602產(chǎn)生相關(guān)微指令,其指示在微處理器600后繼階段605-608,618,619中的邏輯電路執(zhí)行指定的密碼運算。相關(guān)微指令的特殊結(jié)構(gòu)在某種程度是由一控制字組暫存器308的內(nèi)容所指到的一控制字組323中的一鑰匙產(chǎn)生欄位的值決定,而此將詳述于后。例如當鑰匙產(chǎn)生欄位的值指定在一指定密碼運算執(zhí)行期間使用一使用者產(chǎn)生的鑰匙排程,則鑰匙產(chǎn)生邏輯電路640將建構(gòu)微指令相關(guān)順序以指示微處理器600從鑰匙指標暫存器309內(nèi)容所指的存儲器位置324擷取使用者產(chǎn)生的鑰匙排程,并將使用者產(chǎn)生的鑰匙排程載入密碼單元617中的鑰匙隨機存取存儲器(將詳述于后),且在指定密碼運算執(zhí)行期間使用上述的使用者產(chǎn)生的鑰匙排程。當鑰匙產(chǎn)生欄位的值指定一鑰匙排程是使用所提供的一密碼鑰匙自動產(chǎn)生,則鑰匙產(chǎn)生邏輯電路640將建構(gòu)微指令相關(guān)順序以指示微處理器600從鑰匙指標暫存器309內(nèi)容所指的存儲器位置324擷取所提供的密碼鑰匙,并將此密碼鑰匙載入密碼單元617中的鑰匙隨機存取存儲器,且擴展此密碼鑰匙成一鑰匙排程,及在指定密碼運算執(zhí)行期間使用上述的擴展的鑰匙排程。密碼鑰匙的大小是可由控制字組中的鑰匙大小欄位的設(shè)定而程序規(guī)劃。在一實施例中,鑰匙大小欄位的值是考慮到一128比特密碼鑰匙、一192比特密碼鑰匙以及一256比特密碼鑰匙等指示。
據(jù)此,一第一復(fù)數(shù)個相關(guān)微指令是直接依路徑傳送至密碼單元617并且指示密碼單元617由載入總線620載入資料,或載入一區(qū)塊的輸入資料并且開始執(zhí)行指定數(shù)目的密碼回合以產(chǎn)生一區(qū)塊的輸出資料,或藉由儲存階段618透過儲存總線622將所產(chǎn)生的區(qū)塊輸出資料儲存于存儲器。一第二復(fù)數(shù)個相關(guān)微指令依其路徑傳送至其它實行單元610、612、614、616以執(zhí)行其它次運算,其等次運算是完成指定密碼運算的必需,例如E比特629的測試、致能D比特631、設(shè)定X比特625以指示密碼操作進行中、在暫存階段605更新暫存(例如,計數(shù)暫存器、輸入文字指標暫存器、輸出文字指標暫存器)、由中斷邏輯電路626所指示的中斷信號627的處理等。相關(guān)微指令是用以提供指定密碼運算的最佳執(zhí)行于多區(qū)塊輸入資料,其藉由與密碼單元微指令序列中的整數(shù)單元微指令成為介面,因此整數(shù)運算可與密碼單元運算并行完成。微指令是包含于相關(guān)微指令以允許或并從待處理中斷信號627恢復(fù)。因為所有對密碼參數(shù)的指標與資料是提供于x86架構(gòu)暫存器,當執(zhí)行中斷時,其狀態(tài)被保存,并且當從中斷返回,這些狀態(tài)被恢復(fù)。當從中斷返回,微指令測試X比特625的狀態(tài)以決定是否一密碼運算在進行。如果是,當中斷發(fā)生時,此運算重覆于處理中的特別輸入資料區(qū)塊。相關(guān)微指令是用以允許在處理中斷信號627之前,更新在一序列輸入文字區(qū)塊上的一序列密碼操作的指標暫存器及中間的結(jié)果。
請參照圖7,其為圖6的微處理器中指示密碼次運算的范例微指令700欄位的方塊圖。微指令700包含一微運算碼欄位(micro opcodefield)701,一資料暫存器欄位(data register field)702,以及一暫存器欄位(register field)703。微運算碼欄位701指定執(zhí)行一特定次運算并且指定邏輯電路于微處理器600中至少一階段以執(zhí)行次運算。微運算碼欄位701的指定值指定根據(jù)本發(fā)明的一密碼單元執(zhí)行指示的微指令。在一實施例,有兩個指定的值。一第一值載入(XLOAD)指定資料從一存儲器位置恢復(fù),而其地址是由資料暫存器欄位702內(nèi)容所指稱的一架構(gòu)暫存器的內(nèi)容所指定。這資料被載入到由暫存器欄位703內(nèi)容所具體指定密碼單元內(nèi)的一暫存器。這恢復(fù)的資料(例如密碼鑰匙資料、控制字組、輸入文字資料、初始向量)是提供給密碼單元。微運算碼欄位701的第二值儲存(XSTOR)指出由密碼單元所產(chǎn)生的資料儲存在一記憶位置,而其地址是由資料暫存器欄位702內(nèi)容所指稱的一架構(gòu)暫存器的內(nèi)容所指定。在密碼單元一多階段實施例,暫存器欄位703的內(nèi)容指示復(fù)數(shù)個輸出資料區(qū)塊的一儲存于存儲器。輸出資料區(qū)塊是由資料欄位(data field)704內(nèi)的密碼單元所提供以供儲存邏輯電路存取。根據(jù)本發(fā)明密碼單元所執(zhí)行載入和儲存微指令更具體的細節(jié),將參照圖8及圖9加以討論。
請參照圖8,其為圖7的載入微指令格式700暫存器欄位703的值的表格。如前所述,一序列微指令是產(chǎn)生回應(yīng)一密碼指令的轉(zhuǎn)譯。此序列微指令包含一第一復(fù)數(shù)個微指令,其是由密碼單元指示執(zhí)行;以及一第二復(fù)數(shù)個微指令,其是由微處理器中密碼單元以外的至少一個并列功能單元所執(zhí)行。第二復(fù)數(shù)個微指令指示次運算,例如更新計數(shù)器、暫時儲存器、架構(gòu)暫存器、測試并設(shè)定狀態(tài)比特于機器特殊暫存器等。第一復(fù)數(shù)個微指令提供鑰匙資料、密碼參數(shù)以及輸入資料給密碼單元并且指示密碼單元產(chǎn)生鑰匙排程(或載入從存儲器恢復(fù)的鑰匙排程)以載入并加密(或解密)輸入文字資料,并且儲存輸出文字資料。一載入微指令提供給密碼單元以載入控制字組資料、載入一密碼鑰匙或鑰匙排程、載入初始向量資料、載入輸入文字資料并指示密碼單元開始一指定密碼運算。一載入微指令在暫存器欄位703的值0b010是指示密碼單元載入|控制字組到其內(nèi)部控制字組暫存器。當這微指令進行管線處理,在暫存階段的一架構(gòu)控制字組指標暫存器存取存儲器中儲存控制字組的地址。地址邏輯電路轉(zhuǎn)譯此地址成為一實體地址以供存儲器存取。載入邏輯電路從快取擷取控制字組,然后傳給密碼單元。同樣地,暫存器欄位值0b010指示密碼單元載入由資料欄位704所提供的輸入文字資料,并且在載入之后開始指定的密碼運算。類似控制字組,輸入資料由儲存在架構(gòu)暫存器中所儲存的一暫存器存取。值0b010指示載入由資料欄位704所提供的輸入資料給內(nèi)部暫存器輸入-1。載入到輸入-1暫存器的資料不是輸入文字資料(當管線處理時)就是一初始向量。值0b110及0b111分別指示密碼單元載入一密碼鑰匙或使用者產(chǎn)生鑰匙排程中一鑰匙的較低及較高比特。根據(jù)本應(yīng)用,使用者是定義成執(zhí)行一特定功能或特定運算,而使用者可具體化成一應(yīng)用程序、一操作系統(tǒng)、一機器或者一個人。因此,在一實施例中,使用者產(chǎn)生鑰匙排程是由一應(yīng)用程序所產(chǎn)生,而在另一實施例中,使用者產(chǎn)生鑰匙排程是由一個人所產(chǎn)生。
在一實施例中,暫存器欄位值0b100及0b101是考慮一密碼單元有兩階段,由此,可以管線處理相繼的輸入文字區(qū)塊資料。因此對管線處理相繼的輸入資料區(qū)塊而言,一第一載入微指令執(zhí)行提供一第一區(qū)塊的輸入文字資料給輸入-1,接著執(zhí)行一第二載入微指令提供一第二區(qū)塊的輸入文字資料給輸入-0,并且指示密碼單元開始執(zhí)行指定的密碼運算。
當一使用者產(chǎn)生的鑰匙排程被用以執(zhí)行密碼運算時,對應(yīng)使用者產(chǎn)生的鑰匙排程中鑰匙數(shù)量的載入微指令是依設(shè)定路徑傳送給密碼單元,此密碼單元指示載入此鑰匙排程中每一回合鑰匙。
在載入微指令中暫存器欄位703其他所有的值是保留。
請參照圖9,其為圖7的儲存微指令格式700暫存器欄位703的值的表格。一儲存微指令是發(fā)布(issue)給密碼單元以指示其提供所產(chǎn)生的輸出文字區(qū)塊給儲存邏輯儲存于存儲器中由資料暫存器欄位702所提供的地址。據(jù)此,本發(fā)明的轉(zhuǎn)譯邏輯為一特定的輸出文字區(qū)塊所發(fā)布的一儲存微指令是在為一其所對應(yīng)輸入文字區(qū)塊所發(fā)布的一儲存微指令之后。暫存器欄位703的值0b100是指示密碼單元提供關(guān)聯(lián)其內(nèi)部的輸出-0暫存器給儲存邏輯儲存。輸出-0的內(nèi)容與輸入文字區(qū)塊提供給輸入-0是相關(guān)聯(lián)。同理,參照暫存器欄位值0b101的內(nèi)部輸出-1暫存器是與輸入文字資料提供給輸入-1相關(guān)聯(lián)。據(jù)此,跟隨在鑰匙及控制字組資料載入之后,復(fù)數(shù)個輸入文字區(qū)塊可以被管線輸送,是透過密碼單元依序發(fā)布密碼微指令載入.輸入-1、載入.輸入-0(載入.輸入-0也指示密碼單元開始密碼運算)、儲存.輸出-1、儲存.輸出-0、載入.輸入-1、載入.輸入-0(開始下兩個輸入文字區(qū)塊運算)等等。
請參照圖10,其為本發(fā)明指定密碼運算參數(shù)的范例控制字組1000格式的方塊圖??刂谱纸M1000是由使用者程序設(shè)計于存儲器,并且在執(zhí)行密碼運算之前,控制字組1000的指標提供給相稱微處理器中的一架構(gòu)暫存器。據(jù)此,當部分序列的微指令對應(yīng)到一密碼指令時,一載入微指令被發(fā)布以指示微處理器去讀取包含指標的架構(gòu)暫存器、從存儲器(快取)恢復(fù)控制字組1000以及載入控制字組1000到密碼單元的內(nèi)部控制字組暫存器??刂谱纸M1000包含一保留(RSVD)欄位1001、一資料區(qū)塊大小(DSIZE)欄位1002、一鑰匙大小(KSIZE)欄位1003、一加密/解密(E/D)欄位1004、一中間結(jié)果(IRSLT)欄位1005、一鑰匙產(chǎn)生(KGEN)欄位1006、一演算(ALG)欄位1007以及一回合計算(RCNT)欄位1008。
保留欄位1001所有的值是保留。資料區(qū)塊大小欄位1002的內(nèi)容是指示執(zhí)行加密及解密時使用輸入及輸出文字區(qū)塊的大小。在一實施例中,資料區(qū)塊大小欄位1002不是指示一128比特區(qū)塊、一192比特區(qū)塊,就是指示一256比特區(qū)塊。鑰匙大小欄位1003的內(nèi)容是指示一用以完成加密或解密的密碼鑰匙的大小。在一實施例中,鑰匙大小欄位1003不是指示一128比特鑰匙、一192比特鑰匙,就是指示一256比特鑰匙。加密/解密欄位1004指出密碼運算是加密運算或指出密碼運算是解密運算。鑰匙產(chǎn)生欄位1006指示在存儲器中是使用者產(chǎn)生的鑰匙排程或在存儲器中是單一密碼鑰匙;如果為單一鑰匙時,微指令發(fā)布給密碼單元與密碼鑰匙以指示單元根據(jù)演算欄位1007的內(nèi)容所具體指定的密碼演算以擴展鑰匙成為一鑰匙排程。在一實施例,演算欄位1007的特定值具體指示資料加密標準演算法、三重資料加密標準演算法或者進階加密標準演算法如先前所述的討論。替代實施例可考慮其他密碼演算法,例如Rijndael Cipher、TwofishCipher等?;睾嫌嬎銠谖?008的內(nèi)容指示一數(shù)量的密碼回合,其根據(jù)具體指示的演算法完成于每一輸入文字區(qū)塊。雖然上述提及的標準指示每一輸入文字區(qū)塊固定前置數(shù)量的密碼回合,但回合計算欄位1008允許一程序設(shè)計者從標準指示修改回合的數(shù)量。在一實施例中,程序設(shè)計者可指定每一區(qū)塊從0-15回合。最后,中間結(jié)果欄位1005指示是否一輸入文字區(qū)塊的加密/解密,是根據(jù)演算欄位1007所指定的密碼演算法以回合計算欄位1008所指定回合的數(shù)量執(zhí)行,或者加密/解密是根據(jù)演算欄位1007所指定的密碼演算法,以回合計算欄位1008所指定回合的數(shù)量執(zhí)行,而其最終回合的執(zhí)行代表一中間結(jié)果而不是一最終結(jié)果。熟悉該項技術(shù)者可察知許多密碼演算法除了最終回合的次運算之外是執(zhí)行相同的次運算于每一回合。因此程序設(shè)計中間結(jié)果欄位1005提供中間結(jié)果而不是最后結(jié)果,由此,允許程序設(shè)計者可核對演算法實現(xiàn)的中間的步驟。例如獲得增加的中間值以核對演算法實行,假設(shè),執(zhí)行一回合的加密于一文字區(qū)塊,然后執(zhí)行兩回合于相同文字區(qū)塊,然后三回合等。提供可程序化回合及中間值結(jié)果的功能可讓使用者檢查密碼執(zhí)行、除錯以及達到改變鑰匙結(jié)構(gòu)及回合計數(shù)。
請參照圖11,其為圖10中控制字組1000的鑰匙產(chǎn)生欄位1006范例值的表格1100。鑰匙產(chǎn)生欄位1006的0值是指示一計算裝置依據(jù)本發(fā)明從一密碼鑰匙自動產(chǎn)生一鑰匙排程給一指定密碼運算,其中上述的密碼鑰匙是提供于存儲器中,而此存儲器是由一鑰匙指標暫存器的內(nèi)容所指到。自動鑰匙排程的產(chǎn)生依據(jù)一密碼演算規(guī)則(例如進階加密標準)是等效于鑰匙擴展。鑰匙產(chǎn)生欄位1006的1值是指示一指定密碼運算的一使用者產(chǎn)生鑰匙排程是提供于存儲器中,且是由鑰匙指標暫存器的內(nèi)容所指到。除了擴展一密碼鑰匙排程,一計算裝置依據(jù)本發(fā)明一較佳實施例將從存儲器載入使用者產(chǎn)生鑰匙排程,并在指定密碼運算執(zhí)行期間使用此使用者產(chǎn)生鑰匙排程。本發(fā)明的一好處是使用者可以使用一鑰匙排程于密碼回合運算,而此鑰匙排程并不相稱于使用中的特定密碼演算法則。
請參照圖12,其為本發(fā)明的一密碼單元1200的較佳實施例方塊圖。密碼單元1200包含一微指令暫存器(micro opcode register)1203,此微指令暫存器1203透過一微指令總線1214接收密碼微指令(例如載入與儲存微指令)。密碼單元1200也包含一控制字組暫存器(control word register)1204、一第一輸入(輸入-0)暫存器1205以及一第二輸入(輸入-1)暫存器1206、一第一鑰匙(鑰匙-0)暫存器1207以及一第二鑰匙(鑰匙-1)暫存器1208。資料透過一載入總線(load bus)1211提供給暫存器1204-1208,如微指令暫存器1203中一載入微指令內(nèi)容所指定。密碼單元1200也包含區(qū)塊密碼邏輯電路1201,此區(qū)塊密碼邏輯電路1201耦合到所有的暫存器1203-1208以及也耦合到密碼鑰匙隨機存取存儲器(RAM)1202。區(qū)塊碼邏輯電路1201包含鑰匙擴展邏輯電路1220。區(qū)塊碼邏輯電路1201提供一暫停信號(stallsignal)1213并且也提供區(qū)塊結(jié)果給一第一輸出(輸出-0)暫存器1209以及一第二輸出(輸出-1)暫存器1210。輸出暫存器1209-1210透過一儲存總線1212將內(nèi)容依指定路徑傳送給在一相稱微處理器中的相繼階段。在一實施例中,微指令暫存器1203是32比特大??;暫存器1204、1207及1208是128比特大??;以及暫存器1205-1206及1209-1210是256比特大小。
在操作中,密碼微指令與資料一起連續(xù)提供給微指令暫存器1203,其中資料是指定給控制字組暫存器1204、或輸入暫存器1205-1206之一、或鑰匙暫存器1207-1208之一。在參照圖8及圖9討論的實施例中,控制字組由一載入微指令載入到控制字組暫存器1204。因此密碼鑰匙或鑰匙排程經(jīng)由連續(xù)的載入微指令載入。當一128比特密碼鑰匙載入時,一載入微指令因此提供給指定的鑰匙-0暫存器1207。當一大于128比特密碼鑰匙載入時,一載入微指令因此提供給指定的鑰匙-0暫存器1207,并且連同一載入微指令提供給指定的鑰匙-1暫存器1208。當一使用者產(chǎn)生的鑰匙排程載入時,連續(xù)載入微指令提供給指定鑰匙-0暫存器1207。鑰匙排程中的每一鑰匙被載入且依序被放置在鑰匙隨機存取存儲器1202以供其相對應(yīng)的密碼回合使用。隨此,輸入文字資料(如果沒有要求一初始向量)載入到輸入-1暫存器1206,如果要求一初始向量,則經(jīng)由一載入微指令載入到輸入-1暫存器1206。對輸入-0暫存器1205的一載入微指令指示密碼單元以載入輸入文字資料給輸入-0暫存器1205,并且開始在輸入-0暫存器1205內(nèi)的輸入文字資料執(zhí)行密碼回合,其根據(jù)控制字組暫存器1204的內(nèi)容所提供的參數(shù)使用在輸入-1或在兩輸入暫存器1205-1206(當輸入資料是管線處理)中的初始向量。根據(jù)收到指定輸入-0暫存器1205的載入微指令,區(qū)塊密碼邏輯電路1201開始執(zhí)行由控制字組內(nèi)容所指定的密碼運算。如果要求單一密碼鑰匙擴展,則鑰匙擴展邏輯電路1220依據(jù)所指定密碼演算法則以產(chǎn)生鑰匙排程中的每一鑰匙而擴展密碼鑰匙,其中上述的密碼鑰匙是由載入指令提供給鑰匙-0暫存器1207及鑰匙-1暫存器1208。姑且不論是否由鑰匙擴展邏輯電路1220產(chǎn)生一鑰匙排程或者是從存儲器中載入鑰匙排程,第一回合的鑰匙是快取儲存于區(qū)塊密碼邏輯1201中以使得第一區(qū)塊密碼回合可以不用存取鑰匙隨機存取存儲器1202而處理。一但初始化后,區(qū)塊密碼邏輯電路1201繼續(xù)執(zhí)行指定的密碼運算于至少一個輸入文字區(qū)塊直到運算完成;其連續(xù)從鑰匙隨機存取存儲器1202擷取回合鑰匙如所應(yīng)用的密碼演算法所要求。密碼單元1200執(zhí)行一指定區(qū)塊密碼運算于指定的輸入文字區(qū)塊,而相繼的輸入文字區(qū)塊透過相繼對應(yīng)的載入及儲存微指令加密/解密。當一儲存微指令執(zhí)行時,如果指定輸出資料(例如輸出-0或輸出-1)尚未完全產(chǎn)生,則區(qū)塊密碼邏輯電路1201顯示暫停信號1213。一但輸出資料已產(chǎn)生且放置于相對應(yīng)的輸出暫存器1209-1210時,暫存器1209-1210的內(nèi)容接著傳送到儲存總線1212。
請參照圖13,其為本發(fā)明執(zhí)行有關(guān)進階加密標準(AES)演算法密碼運算的一區(qū)塊密碼邏輯電路1300實施例的方塊圖。區(qū)塊密碼邏輯電路1300包含一回合引擎(round engine)1320,此回合引擎1320透過總線1311-1314、總線1316-1318及回合鑰匙(RNDKEY)總線1332耦合到一回合引擎控制器(round enginecontroller)1310?;睾弦婵刂破?310包含一鑰匙大小控制器(block size controller)1330,并且存取一微指令暫存器(microinstruction controller)1301、控制字組暫存器(control wordregister)1302、第一鑰匙(鑰匙-0)暫存器1303以及第二鑰匙(鑰匙-1)暫存器1304以存取鑰匙資料、微指令以及所指示密碼運算的參數(shù)。輸入暫存器1305-1306的內(nèi)容提供給回合引擎1320并且回合引擎1320提供相對應(yīng)輸出文字給輸出暫存器1307-1308。輸出暫存器1307-1308透過總線1316-1317也耦合到回合引擎控制器1310以致能回合引擎控制器存取每一相繼密碼回合的結(jié)果,而此結(jié)果是透過NEXTIN總線1318提供給回合引擎1320下一密碼回合。鑰匙隨機存取存儲器(未繪出)中的密碼鑰匙是透過鑰匙隨機存取存儲器總線1315存取。加密/解密總線(ENC/DECbus)1311的信號指示回合引擎利用次運算執(zhí)行不是加密(例如S-Box)就是解密(例如反向S-Box)?;睾嫌嬎憧偩€(RNDCON bus)1312的內(nèi)容指示回合引擎1320執(zhí)行不是一第一進階加密標準回合、一中間進階加密標準回合就是一最后進階加密標準回合?;貞?yīng)一控制字組中的一鑰匙大小欄位的內(nèi)容,其指示使用一密碼鑰匙大小,鑰匙大小控制器1330是由鑰匙大小總線(KEYSIZE bus)1319指定密碼鑰匙大小。如果鑰匙排程是欲自動產(chǎn)生,則回合引擎控制器1310顯示產(chǎn)生鑰匙總線(GENKEY bus)1314信號以指示回合引擎1320中的鑰匙擴展邏輯電路1331使用鑰匙總線1313所提供的鑰匙及鑰匙大小總線1319所指定的鑰匙大小以產(chǎn)生一鑰匙排程?;貞?yīng)產(chǎn)生鑰匙總線1314信號,鑰匙擴展邏輯電路(key expansion logic)1331是藉由回合鑰匙總線(RNDKEY bus)1332將所產(chǎn)生的鑰匙排程提供給回合引擎控制器1310。鑰匙總線1313亦用以提供每一回合鑰匙給回合引擎1320在其對應(yīng)的回合執(zhí)行時。在一實施例中,鑰匙大小總線1319的值是指示128比特區(qū)塊、192比特區(qū)塊或256比特區(qū)塊。
回合引擎1320包含第一鑰匙互斥或邏輯電路(first key XORlogic)1321,此第一鑰匙互斥或邏輯電路1321耦合到一第一暫存器(first register)(暫存-0)1322,此第一暫存器1322耦合到S-Box邏輯電路(S-Box logic)1323,此S-Box邏輯電路1323耦合到移列邏輯電路(Shift Row logic)1324,此移列邏輯電路1324耦合到一第二暫存器(second register)(暫存-1)1325,此第二暫存器1325耦合到混欄邏輯電路(Mix Colum logic)1326,此混欄邏輯電路1326耦合到一第三暫存器(thirdregister)(暫存-2)1327。第一鑰匙互斥或邏輯電路1321、S-Box邏輯電路1323、移列邏輯電路1324以及混欄邏輯電路1326是配置用以執(zhí)行次運算于輸入文字資料,像是具體于先前討論的進階加密標準FIPS標準?;鞕谶壿嬰娐?326在中間回合期間于要求使用由鑰匙總線1313所提供的回合鑰匙時,是附加配置以執(zhí)行進階加密標準互斥或功能于輸入資料。第一鑰匙互斥或邏輯電路1321、S-Box邏輯電路1323、移列邏輯電路1324以及混欄邏輯電路1326在藉由加密/解密總線1311的狀態(tài)指示時,也配置用以執(zhí)行其相對的反向進階加密標準次運算于解密期間。熟悉該項技術(shù)者可察知中間回合資料是根據(jù)控制字組暫存器1302內(nèi)容所指定的具體區(qū)塊加密模式而回饋給回合引擎1320。初始向量資料(如果要求)透過NEXTIN總線1318提供給回合引擎1320。
在圖13所示的實施例中,回合引擎分為兩階段一第一階段介于第一暫存器(暫存-0)1322與第二暫存器(暫存-1)1325以及一第二階段介于第二暫存器(暫存-1)1325與第三暫存器(暫存-2)1327。中間回合資料同步一時脈信號(未繪出)于階段間管線處理。當一區(qū)塊的輸入資料完成密碼運算,其關(guān)聯(lián)的輸出資料放置于相對應(yīng)輸出暫存器1307-1308。一儲存微指令的執(zhí)行使得所指定的輸出暫存器1307-1308的內(nèi)容提供至儲存總線(未繪出)。
請參照圖14,其為本發(fā)明的一128比特鑰匙擴展邏輯電路1400實施例的方塊圖,其是配置用以擴展一密碼鑰匙成一對應(yīng)的密碼鑰匙排程。為了本發(fā)明的教示目的,鑰匙擴展邏輯電路1400是描述及圖解于進階加密標準演算規(guī)則方面,然而本發(fā)明人指明此描述及圖解是為了解說的清晰,而不應(yīng)被用以限制本發(fā)明的范圍。鑰匙擴展邏輯電路1400是包含一鑰匙緩沖器(key buffer)1401,而此鑰匙緩沖器1401是耦合于一第一128比特暫存器(first 128-bitregister)1402。一初始密碼鑰匙依據(jù)本發(fā)明是從一回合引擎控制器1310經(jīng)由鑰匙產(chǎn)生總線而被接收。第一暫存器1402的127-96比特是提供給S-Box邏輯電路(S-Box logic)1403以及一32比特互斥或閘(XOR gate)1404。第一暫存器1402的95-64比特是提供給一32比特互斥或閘(XOR gate)1405,而此互斥或閘1405的輸出是耦合于上述的互斥或閘1404。第一暫存器1402的63-32比特是耦合于一32比特互斥或閘1406,而此互斥或閘1406的輸出是耦合于上述的互斥或閘1405。第一暫存器1402的31-0比特是耦合于上述的互斥或閘1406。鑰匙擴展邏輯電路1400亦包含一第二暫存器(second register)1407,其具有5個32比特欄位以從S-Box邏輯電路1403、從互斥或閘1404-1406及從第一暫存器1402的31-0比特接收32比特輸入。第二暫存器1407的5個32比特欄位是提供給一回合常數(shù)(RoundConstant,RCON)邏輯電路1408及4個32比特互斥或閘1409-1412。回合常數(shù)邏輯電路1408的輸出亦提供給互斥或閘1409-1412。互斥或閘1409-1412提供32比特輸出給一第三暫存器(third register)1413的4個欄位,而第三暫存器1413的4個欄位是提供給一128比特回合鑰匙緩沖器(round keybuffer)1414以及也由總線(bus)1415而回授給第一暫存器1402?;睾翔€匙緩沖器1414的輸出(例如在一擴展鑰匙排程中所產(chǎn)生的一回合鑰匙)依據(jù)本發(fā)明是由總線(bus)1416提供給一回合引擎控制器。
在操作中,欲擴展的密碼鑰匙是從回合引擎控制器1310經(jīng)由鑰匙產(chǎn)生總線提供給鑰匙緩沖器1401,并且此鑰匙擴展的執(zhí)行是與一時序信號(未繪出)同步。一回合管理器(round manager)1417偵測經(jīng)由鑰匙產(chǎn)生總線所供給的密碼鑰匙,并經(jīng)由RNDNUM總線反覆地發(fā)布鑰匙擴展的一回合數(shù)目給回合常數(shù)邏輯電路1408,據(jù)此,鑰匙緩沖器1401的內(nèi)容是傳送至第一暫存器1402。另外,RNDNUM總線是被設(shè)定用以指示將產(chǎn)生一初始進階加密標準回合的一回合鑰匙。依據(jù)進階加密標準鑰匙擴展規(guī)格,密碼鑰匙127-96比特是提供給S-Box邏輯電路1403,而此S-Box邏輯電路1403的輸出是經(jīng)由第二暫存器1407提供給回合常數(shù)邏輯電路1408。依照值或RNDNUM總線,回合常數(shù)邏輯電路1408輸出一32比特回合常數(shù),此32比特回合常數(shù)是提供給4個32比特互斥或閘1409-1412中的每一個互斥或閘。據(jù)此,初始回合鑰匙31-0比特在經(jīng)由回合常數(shù)邏輯電路1408所提供初始回合常數(shù)與密碼鑰匙31-0比特,執(zhí)行互斥或閘邏輯運算后產(chǎn)生。初始回合鑰匙63-32比特在初始回合常數(shù)與一第一項比特63-32執(zhí)行互斥或閘邏輯運算后產(chǎn)生,其中上述的第一項是密碼鑰匙較低的雙字組(doublewords)的互斥或閘邏輯運算結(jié)果。初始回合鑰匙95-64比特在初始回合常數(shù)與一第二項95-64比特執(zhí)行互斥或閘邏輯運算后產(chǎn)生,其中上述的第二項是上述的第一項與密碼鑰匙95-64比特互斥或閘邏輯運算的結(jié)果。初始回合鑰匙127-96比特在初始回合常數(shù)與一第三項127-64比特執(zhí)行互斥或閘邏輯運算后產(chǎn)生,其中上述的第三項是上述的第二項與密碼鑰匙127-96比特互斥或閘邏輯運算的結(jié)果。
上述的初始回合鑰匙是輸出至回合鑰匙緩沖器1414,并且隨后輸出至回合引擎控制器1310(此回合引擎控制器1310將此初始回合鑰匙提供給鑰匙隨機存取存儲器),并且此初始回合鑰匙也回授給第一暫存器1402以供產(chǎn)生一下一回合鑰匙時使用。此外,回合管理器1417增加RNDNUM總線的值。
上述的下一回合鑰匙及其后所有回合鑰匙是依照上述的方式而反覆地產(chǎn)生,直到擴展鑰匙排程的所有鑰匙均已產(chǎn)生后才結(jié)束。
請參照圖15,其為本發(fā)明在一中斷事件期間保留密碼參數(shù)的狀態(tài)的方法流程圖。當一微處理器依據(jù)本發(fā)明執(zhí)行一指令流時,方法流程從步驟1502開始。上述的指令流程并不須包含一像此描述的密碼指令。然后方法流程處理至決定步驟1504。
在決定步驟1504,決定是否由一指令流(中斷處理程序)處理一要求改變指令流的中斷事件(例如可遮罩式中斷、非遮罩式中斷、分頁錯誤(page fault)、工作切換(task switch)等)。若是,方法流程處理至步驟1506;若否,方法流程跳至步驟1504,其指令執(zhí)行繼續(xù)直到一中斷事件產(chǎn)生。
在步驟1506,因為一中斷事件已經(jīng)發(fā)生,在傳送控制程序至一對應(yīng)中斷處理程序的前,中斷邏輯電路依據(jù)本發(fā)明指示清除一旗標暫存器中的X比特。X比特的清除確保從中斷處理程序返回時,如果一區(qū)塊密碼運算進行中,其指示排除至少一個中斷事件并指示控制字組資料以及鑰匙資料必須在輸入指標暫存器的內(nèi)容目前所指的輸入資料區(qū)塊繼續(xù)區(qū)塊密碼運算的前重新載入。然后處理至步驟1508。
在步驟1508,所有架構(gòu)暫存器包含本發(fā)明區(qū)塊密碼運算執(zhí)行的相關(guān)指標及計數(shù)均儲存于存儲器。熟悉該項技術(shù)者可知架構(gòu)暫存器的儲存是在轉(zhuǎn)移控制權(quán)給中斷處理程序的前完成于目前資料計算裝置。因此本發(fā)明探究目前資料架構(gòu)以提供中斷事件執(zhí)行輸出量的透明度。在暫存器儲存的后,方法流程處理至步驟1510。
在步驟1510,程序流程是轉(zhuǎn)移至中斷處理程序。因此方法流程處理至步驟1512。
在步驟1512,此方法流程完成結(jié)束。熟悉該項技術(shù)者可察知圖14的方法依據(jù)中斷處理程序的返回是從步驟1502再開始。
請參照圖16,其為本發(fā)明在至少一個中斷事件時,擴展一密碼鑰匙成一對應(yīng)的鑰匙排程以在復(fù)數(shù)個輸入資料區(qū)塊執(zhí)行一指定密碼運算的方法流程圖1600。為求圖示的清晰,省略了依據(jù)區(qū)塊密碼模式執(zhí)行指定密碼運算的流程,其中此區(qū)塊密碼模式要求區(qū)塊間初始向量等效物的更新及儲存(例如輸出反饋模式、密碼反饋模式)。然而本發(fā)明的方法是包含其他的區(qū)塊密碼模式。
方法流程從步驟1602開始,其中依據(jù)本發(fā)明的一密碼指令指示一密碼運算開始執(zhí)行。上述的密碼指令執(zhí)行是可以第一執(zhí)行或由于一中斷事件的中斷執(zhí)行而跟隨第一執(zhí)行的后執(zhí)行,由此在中斷處理程序執(zhí)行完成后將程序控制權(quán)轉(zhuǎn)移回密碼指令。流程處理至步驟1604。
在步驟1604,載入存儲器中的一資料區(qū)塊并且開始一指定密碼運算,其中上述的區(qū)塊資料是由本發(fā)明的一輸入指標暫存器的內(nèi)容所指定。在一實施例中,指定的密碼運算是依據(jù)進階加密標準規(guī)則開始執(zhí)行。然后方法流程處理至決定步驟1606。
在決定步驟1606,決定是否設(shè)定一旗標暫存器中的一X比特。如果設(shè)定X比特,其指示目前依據(jù)本發(fā)明載入一密碼單元的控制字組及鑰匙排程是有效(valid)。如果清除X比特,其指示目前載入上述的密碼單元的控制字組及鑰匙排程是無效(invalid)。如上述參照圖15的討論,當一中斷事件產(chǎn)生時,X比特是清除。此外,如上所述,當需要載入一新的控制字組或一新的鑰匙排程或者是上述的兩者時,則在發(fā)布密碼指令的前是要求指令執(zhí)行以清除X比特。在一x86相容實施例中,其利用一x86旗標暫存器中的第30比特,此X比特可以由依序執(zhí)行一PUSHFD指令與一POPFD指令而清除。然而熟悉該項技術(shù)者可得知在另一實施例中,其他用以清除X比特的指令。如果X比特是設(shè)定,方法流程處理至步驟1620;如果X比特是清除,方法流程處理至步驟1608。
在步驟1608,因為一清除的X比特是指示不是一中斷事件產(chǎn)生就是一新的控制字組及/或鑰匙資料載入,因此從存儲器載入一控制字組。在一實施例中,載入控制字組停止密碼單元執(zhí)行上述的步驟1604所指定的密碼運算。在此實施例中的步驟1604開始一密碼運算是考慮到使用電子密碼本模式的多區(qū)塊的最佳化,其是藉由假設(shè)使用目前載入的控制字組及鑰匙資料以及假設(shè)電子密碼本模式是最為普遍使用的區(qū)塊密碼模式。根據(jù)上述,載入目前輸入資料區(qū)塊并且在決定步驟1606檢查X比特的狀態(tài)重置的前,開始密碼運算。然后方法流程處理至決定步驟1610。
在決定步驟1610,評估在步驟1608所擷取(retrieve)控制字組中的鑰匙產(chǎn)生欄位以決定提供存儲器中的一使用者產(chǎn)生鑰匙排程或是存儲器中的一密碼鑰匙,而此密碼鑰匙是被要求擴展成一鑰匙排程。如果鑰匙產(chǎn)生欄位的值指定自動鑰匙擴展,則方法流程處理至步驟1612。如果鑰匙產(chǎn)生欄位的值指定提供使用者產(chǎn)生鑰匙排程,則方法流程處理至步驟1616。
在步驟1612,從存儲器載入密碼鑰匙。然后方法流程處理至步驟1614。
在步驟1614,密碼鑰匙相稱于使用的密碼演算規(guī)則而被擴展成一鑰匙排程,并且此鑰匙排程在密碼運算執(zhí)行期間是載入至鑰匙隨機存取存儲器以供使用。然后方法流程處理至步驟1618。
在步驟1616,從存儲器擷取一使用者產(chǎn)生鑰匙排程并且載入至鑰匙隨機存取存儲器以供密碼運算執(zhí)行期間使用。然后方法流程處理至步驟1618。
在步驟1618,輸入?yún)^(qū)塊參照步驟1604而重新載入,并且依據(jù)新載入的控制字組以及鑰匙排程開始密碼運算。然后方法流程處理至步驟1620。
在步驟1620,產(chǎn)生一輸出區(qū)塊,此輸出區(qū)塊對應(yīng)所載入的輸入?yún)^(qū)塊,對加密而言,輸入?yún)^(qū)塊是一明文區(qū)塊而輸出區(qū)塊是一對應(yīng)的密文區(qū)塊;對解密而言,輸入?yún)^(qū)塊是一密文區(qū)塊而輸出區(qū)塊是一對應(yīng)的明文區(qū)塊。然后方法流程處理至步驟1622。
在步驟1622,將產(chǎn)生的輸出區(qū)塊儲存于存儲器。然后方法流程處理至步驟1624。
在步驟1624,修改輸入及輸出區(qū)塊指標暫存器的內(nèi)容以指到下一輸入及輸出資料區(qū)塊。另外,修改區(qū)塊計數(shù)暫存器的內(nèi)容以指示目前輸入資料區(qū)塊完成密碼運算。在參照圖16所討論的一實施例,區(qū)塊計數(shù)暫存器是遞減。然而,熟悉該項技術(shù)者可在另一實施例中,思量處理及測試區(qū)塊計數(shù)暫存器的內(nèi)容以考慮輸入文字區(qū)塊的管線執(zhí)行。然后方法流程處理至步驟1626。
在決定步驟1626,決定是否繼續(xù)運算一輸入資料區(qū)塊。在用以說明具特征的實施例中,是評估區(qū)塊計數(shù)器是否等于零而決定。如果沒有剩下的區(qū)塊可供運算,則方法流程處理至步驟1630;如果剩下區(qū)塊可供運算,則方法流程處理至步驟1628。
在步驟1628,載入下一輸入資料區(qū)塊,如輸入指標暫存器的內(nèi)容所指。然后方法流程處理至步驟1620。
在步驟1630,此方法流程完成結(jié)束。
雖然本發(fā)明及其目的、特征與優(yōu)點已詳細描述,但其他實施例也應(yīng)包含于本發(fā)明。例如本發(fā)明曾根據(jù)相容x86架構(gòu)的實施例討論長度,然而這些討論已提供此類的方式,因為x86架構(gòu)容易理解且提供足夠的方式以教示本發(fā)明。然而本發(fā)明包含相稱于其他指令集架構(gòu)的實施例,例如PowerPC、MIPS及諸如此類等,此外還有全新的指令集架構(gòu)。
本發(fā)明還包含電腦系統(tǒng)中微理器外其他元件的密碼運算的執(zhí)行,例如,根據(jù)本發(fā)明的密碼指令可以容易地被應(yīng)用在一密碼單元的一實施例,此實施例并非如微處理器部分相同的整合電路,其執(zhí)行方式如部分電腦系統(tǒng)。本發(fā)明的如此的實施例是為了并入圍繞在微處理器的晶片組(如北橋、南僑),或當一處理器用于執(zhí)行密碼運算時,其密碼指令是由主要微處理器移轉(zhuǎn)(hand off)給此處理器。本發(fā)明可應(yīng)用于內(nèi)嵌控制器、工業(yè)控制器、信號處理器、陣列處理器以及任何相似處理資料的裝置。本發(fā)明也包含一實施例僅含有執(zhí)行密碼運算所必需的元件。如此的內(nèi)嵌裝置不僅執(zhí)行密碼運算,也確實提供低成本、低電源,例如通信系統(tǒng)中的加密/解密處理器。為求簡明,本發(fā)明將這些替代的處理元件參照成上述的處理器。
此外,雖然本發(fā)明提及128比特區(qū)塊,但是許多不同區(qū)塊的大小可以透過改變暫存器的大小而被應(yīng)用,其中暫存器傳送輸入資料、輸出資料、鑰匙以及控制字組。
并且,雖然本應(yīng)用顯著以資料加密標準、三重資料加密標準以及進階加密標準為其特征,但本發(fā)明也包含較少人知的區(qū)塊密碼演算法,例如MARS密碼、Rijndael密碼、Twofish密碼、Blowfish密碼、Serpent密碼以及RC6密碼。足以理解的是,本發(fā)明提供在微處理器中用于區(qū)塊密碼的裝置及支援的演算法,其基元區(qū)塊密碼運算可透過單一指令的執(zhí)行而引動。
并且,雖然本發(fā)明在此以區(qū)塊密碼演算及其相關(guān)技術(shù)以執(zhí)行區(qū)塊密碼功能為特征,但是除了區(qū)塊密碼的外其他形式的密碼也包含于本發(fā)明應(yīng)用范圍之內(nèi)。可足以觀察的是,提供一單一指令,由此,使用者可指示一相稱的微處理器執(zhí)行一密碼運算,例如加密或解密,其中微處理器包含一密碼單元,此密碼單元依指示完成指令所指定的密碼功能。
并且,在此所討論的回合引擎提供一兩階裝置可管線處理兩區(qū)塊的輸入資料,但其他實施例也可考慮多于兩階段裝置。階段的分配對支援更多輸入資料區(qū)塊的管線處理,將發(fā)展協(xié)調(diào)相稱微處理器中其他階段的分配。
最后,雖然本發(fā)明具體討論支援復(fù)數(shù)個演算法的一單獨密碼單元,但是本發(fā)明也提供理解在一相稱微處理器中與其他執(zhí)行單元并列操作耦合的多密碼單元,而每一多密碼單元是配置用以執(zhí)行一具體指定的密碼演算,例如一第一單元是配置用以執(zhí)行進階加密標準演算法、一第二單元是配置用以執(zhí)行資料加密標準演算法等。
以上所述僅為本發(fā)明的較佳實施例而已,并非用以限定本發(fā)明申請專利范圍;凡其他為脫離本發(fā)明所揭示的精神下所完成的等效改變或修飾,均應(yīng)包含在下述申請專利范圍。
權(quán)利要求
1.一執(zhí)行密碼運算的裝置,其特征在于,包含一密碼指令電路,用以產(chǎn)生一密碼指令,該密碼指令是由一計算裝置接收并將其當成執(zhí)行于該計算裝置的一指令流的一部分,其中該密碼指令指定該些密碼運算其中之一以及在被指定的密碼運算執(zhí)行期間指定一已提供的密碼鑰匙擴展成一對應(yīng)的鑰匙排程以供使用;一鑰匙產(chǎn)生邏輯電路,操作耦合于該密碼指令電路,且是配置以指示該計算裝置來擴展該已提供的密碼鑰匙成該對應(yīng)的鑰匙排程;以及一執(zhí)行邏輯電路,操作耦合于該鑰匙產(chǎn)生邏輯電路,且是配置以擴展該已提供的密碼鑰匙成該對應(yīng)的鑰匙排程。
2.如權(quán)利要求1所述的執(zhí)行密碼運算的裝置,其特征在于,其中該密碼運算可以具有下列功能的某一種一加密運算,該加密運算包含加密復(fù)數(shù)個明文區(qū)塊,以產(chǎn)生相對復(fù)數(shù)個密文區(qū)塊;以及一解密運算,該解密運算包含解密復(fù)數(shù)個密文區(qū)塊,以產(chǎn)生相對復(fù)數(shù)個明文區(qū)塊。
3.如權(quán)利要求1所述的執(zhí)行密碼運算的裝置,其特征在于,其中該對應(yīng)的鑰匙排程是包含一擴展鑰匙排程。
4.如權(quán)利要求1所述的執(zhí)行密碼運算的裝置,其特征在于,其中該鑰匙產(chǎn)生邏輯電路是配置用以轉(zhuǎn)譯一控制字組中的一鑰匙產(chǎn)生欄位,且該密碼指令參照該控制字組。
5.如權(quán)利要求1所述的執(zhí)行密碼運算的裝置,其特征在于,其中該密碼指令是隱含參照該計算裝置的復(fù)數(shù)個暫存器。
6.如權(quán)利要求5所述的執(zhí)行密碼運算的裝置,其特征在于,其中該些暫存器至少可以為下列可能變化的某一種或其任意組合一第一暫存器,其中該第一暫存器的內(nèi)容是包含指向一第一存儲器地址的一第一指標,該第一存儲器地址是依據(jù)欲完成的被指定的密碼運算指定存儲器內(nèi)一第一位置,以存取復(fù)數(shù)個輸入文字區(qū)塊;一第二暫存器,其中該第二暫存器的內(nèi)容是包含指向一第二存儲器地址的一第二指標,該第二存儲器地址指定存儲器內(nèi)一第二位置,以儲存相對復(fù)數(shù)個輸出文字區(qū)塊,而相對該些輸出文字區(qū)塊被產(chǎn)生,是由于復(fù)數(shù)個輸入文字區(qū)塊內(nèi)完成被指定的密碼運算;一第三暫存器,其中該第一暫存器的內(nèi)容是指示復(fù)數(shù)個輸入文字區(qū)塊中的復(fù)數(shù)個文字區(qū)塊;一第四暫存器,其中該第四暫存器的內(nèi)容是包含指向一第三存儲器地址的一第三指標,該第三存儲器地址指定存儲器內(nèi)一第三位置以存取密碼鑰匙資料,以用于完成被指定的密碼運算;一第五暫存器,其中該第五暫存器的內(nèi)容是包含指向一第四存儲器地址的一第四指標,該第四存儲器地址指定存儲器內(nèi)一第四位置,該第四位置包含一初始向量位置,該初始向量位置的內(nèi)容包含一初始向量或一初始向量等效物以用于完成被指定的密碼運算;以及一第六暫存器,其中該第六暫存器的內(nèi)容是包含指向一第五存儲器地址的一第五指標,該第五存儲器地址指定存儲器內(nèi)一第五位置以存取一控制字組以用于完成被指定的密碼運算,其中該控制字組指定被指定的密碼運算的密碼參數(shù),該控制字組包含一鑰匙產(chǎn)生欄位,是配置用以指定在被指定的密碼運算執(zhí)行期間指定已提供的密碼鑰匙擴展成該對應(yīng)的鑰匙排程以供使用。
7.如權(quán)利要求6所述的執(zhí)行密碼運算的裝置,其特征在于,其中該密碼鑰匙資料是包含該已提供的密碼鑰匙。
8.如權(quán)利要求1所述的執(zhí)行密碼運算的裝置,其特征在于,其中該執(zhí)行邏輯電路包含一密碼單元,配置用以在每一復(fù)數(shù)個輸入文字區(qū)塊執(zhí)行復(fù)數(shù)個密碼回合,以產(chǎn)生每一復(fù)數(shù)個相對輸出文字區(qū)塊,其中該些密碼回合是由提供給該密碼單元的一控制字組所指定。
9.一執(zhí)行密碼運算的裝置,其特征在于,包含一元件內(nèi)的一密碼單元,該密碼單元是配置用以執(zhí)行該些密碼運算其中之一,并回應(yīng)接收一指令流內(nèi)一密碼指令,該密碼指令指定被指定的密碼運算以及在被指定的密碼運算執(zhí)行期間指定一密碼鑰匙擴展成一對應(yīng)的鑰匙排程以供使用;以及一鑰匙產(chǎn)生邏輯電路,操作耦合于該密碼單元且是配置用以指示該元件,以執(zhí)行被指定的密碼運算并以擴展該密碼鑰匙成該對應(yīng)的鑰匙排程。
10.如權(quán)利要求9所述的執(zhí)行密碼運算的裝置,其特征在于,其中該對應(yīng)的鑰匙排程是包含一擴展鑰匙排程。
11.如權(quán)利要求9所述的執(zhí)行密碼運算的裝置,其特征在于,其中該鑰匙產(chǎn)生邏輯電路是配置用以轉(zhuǎn)譯一控制字組中的一鑰匙產(chǎn)生欄位,且該密碼指令參照該控制字組。
12.一種在一裝置執(zhí)行密碼運算的方法,其特征在于,包含接收一密碼指令,該密碼指令在復(fù)數(shù)個密碼運算其中的一執(zhí)行期間指定一密碼鑰匙擴展成一對應(yīng)的鑰匙排程以供使用;以及擴展該密碼鑰匙成該對應(yīng)的鑰匙排程。
13.如權(quán)利要求12所述的在一裝置執(zhí)行密碼運算的方法,其特征在于,其中該接收包含由一控制字組的一欄位指定該密碼鑰匙擴展成該對應(yīng)的鑰匙排程,其中該控制字組是由該密碼指令所參照。
14.如權(quán)利要求12所述的在一裝置執(zhí)行密碼運算的方法,其特征在于,其中該對應(yīng)的鑰匙排程是包含一擴展鑰匙排程。
15.如權(quán)利要求12所述的在一裝置執(zhí)行密碼運算的方法,其特征在于,其中該接收包含指定該密碼指令是依據(jù)x86指令格式。
全文摘要
本發(fā)明提供一執(zhí)行密碼運算的裝置及方法。在一實施例中,提供一執(zhí)行密碼運算的裝置,而此裝置是包含一密碼指令電路,其用以產(chǎn)生一密碼指令;一鑰匙產(chǎn)生邏輯電路;及一執(zhí)行邏輯電路。密碼指令是由一計算裝置接收并將其當成一執(zhí)行于此計算裝置的指令流的一部分,且此密碼指令指定一密碼運算及在被指定的密碼運算執(zhí)行期間指定一密碼鑰匙擴展成一對應(yīng)的鑰匙排程以供使用。鑰匙產(chǎn)生邏輯電路是操作耦合于密碼指令電路,而此鑰匙產(chǎn)生邏輯電路指示計算裝置擴展密碼鑰匙成對應(yīng)的鑰匙排程。執(zhí)行邏輯電路是耦合于鑰匙產(chǎn)生邏輯電路,此執(zhí)行邏輯電路擴展密碼鑰匙成對應(yīng)的鑰匙排程。
文檔編號H04L9/00GK1655496SQ20051005903
公開日2005年8月17日 申請日期2005年3月24日 優(yōu)先權(quán)日2004年4月16日
發(fā)明者G·葛蘭亨利, A·克里斯賓 湯瑪斯, A·伊里亞德 提摩西, 泰瑞帕德斯 申請人:威盛電子股份有限公司