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

運(yùn)用加密功能以產(chǎn)生信息摘要的設(shè)備及方法

文檔序號:7958579閱讀:153來源:國知局
專利名稱:運(yùn)用加密功能以產(chǎn)生信息摘要的設(shè)備及方法
技術(shù)領(lǐng)域
本發(fā)明涉及微電子領(lǐng)域,特別是涉及微處理器中用以產(chǎn)生信息摘要的設(shè)備及方法。
背景技術(shù)
本案以2005年3月25日申請的美國申請案60/571122為優(yōu)先權(quán)。
本案與下列未定美國專利申請案有關(guān),這些美國專利申請案具有相同受讓人與至少一位相同發(fā)明人。



早期的計(jì)算機(jī)系統(tǒng)與其它計(jì)算機(jī)系統(tǒng)以獨(dú)立方式運(yùn)行,因其上執(zhí)行的應(yīng)用程序的所需輸入數(shù)據(jù)非位于其中,而是應(yīng)用程序設(shè)計(jì)者在執(zhí)行時提供的。當(dāng)應(yīng)用程序被執(zhí)行時,其將產(chǎn)生輸出數(shù)據(jù),且該輸出數(shù)據(jù)一般為書面輸出數(shù)據(jù)形式或被寫至磁帶、光盤或該計(jì)算機(jī)系統(tǒng)的其它類型的大型存儲裝置的文件形式。接著,該輸出數(shù)據(jù)文件可作為同一計(jì)算機(jī)系統(tǒng)中下一應(yīng)用程序的輸入文件;或當(dāng)該輸出數(shù)據(jù)文件存于一可移動式或可攜式大容量存儲裝置中時,其甚可作為另一不同但兼容的計(jì)算機(jī)系統(tǒng)中應(yīng)用程序的輸入文件。在這些早期計(jì)算機(jī)系統(tǒng)上,已涉及對敏感信息加以保護(hù),因此開發(fā)了許多加密應(yīng)用程序等信息保護(hù)措施以保護(hù)敏感信息,使該敏感信息未經(jīng)允許不能公開。其一般作法為利用加密程序?qū)Υ嬗诖鎯ρb置的輸出數(shù)據(jù)設(shè)定加密及譯碼機(jī)制。
不久后,使用者開始發(fā)現(xiàn)網(wǎng)絡(luò)計(jì)算機(jī)具有共享信息的優(yōu)點(diǎn),因此網(wǎng)絡(luò)結(jié)構(gòu)、操作系統(tǒng)及數(shù)據(jù)傳輸協(xié)議齊步發(fā)展,使得數(shù)據(jù)不僅得以共享,數(shù)據(jù)的共享更具突出的功能。例如,現(xiàn)今的計(jì)算機(jī)工作站使用者普遍可取得不同工作站或網(wǎng)絡(luò)文件服務(wù)器上的文件,或可使用因特網(wǎng)而取得新聞及其它信息,或可在眾多計(jì)算機(jī)之間來回發(fā)送及接收電子信息(即電子郵件),或可與販賣商計(jì)算機(jī)系統(tǒng)相連而提供信用卡或銀行業(yè)務(wù)信息以向該販賣商訂購產(chǎn)品,或可在餐廳、機(jī)場或其它公眾場合使用無線網(wǎng)絡(luò)而進(jìn)行上述使用。因此,避免敏感數(shù)據(jù)未經(jīng)授權(quán)而公開的必要性不言可喻,使用者也經(jīng)常需要在使用計(jì)算機(jī)時對其敏感數(shù)據(jù)進(jìn)行保護(hù)。當(dāng)前關(guān)于計(jì)算機(jī)信息安全備受矚目,如垃圾郵件、網(wǎng)絡(luò)黑客、身份竊取、反向工程、網(wǎng)絡(luò)愚弄及信用卡詐騙等種種手段均有出現(xiàn)。故相關(guān)責(zé)任單位已出臺各項(xiàng)法律、條款及加強(qiáng)公眾教育;然而,并不能有效遏阻這種計(jì)算機(jī)信息危機(jī)。因此該項(xiàng)過去僅為政府、金融機(jī)構(gòu)、軍事單位及間諜人士所關(guān)注的議題如今已成為一般利用家用計(jì)算機(jī)而讀取電子郵件或進(jìn)行賬戶交易的民眾所不得不加以警戒的一大問題?,F(xiàn)存大小公司在商業(yè)交易上也已投注了相當(dāng)部份的資源在其私有信息的保護(hù)上。
使用者對數(shù)據(jù)設(shè)定密碼而令該數(shù)據(jù)僅被特定人士或單位譯碼的技術(shù)稱為加密技術(shù)。在將加密技術(shù)用于保護(hù)計(jì)算機(jī)上或計(jì)算機(jī)間的數(shù)據(jù)時,其最常將敏感信息(未加密文件(plaintext)或明碼通信報(bào)文(cleartext))轉(zhuǎn)換成一不可解讀格式(業(yè)界稱為密文(ciphertext)),此一將未加密文件轉(zhuǎn)換成密文的轉(zhuǎn)換方式稱作“加密”、“密碼編譯”或“密碼加用”,而將密文轉(zhuǎn)換回未加密文件的反向轉(zhuǎn)換方式稱作“解密”、“密碼破解”或“密碼去除”。
在加密技術(shù)上,多種加密程序及協(xié)議已開發(fā)為使用者所用,使使用者在不需大量背景知識及研究的條件下將其信息在加密形式下加以傳送,或?qū)⑵湫畔a(chǎn)品在加密形式下提供給不同使用者。除提供該加密信息外,發(fā)送一端使用者一般還提供一接收端使用者以一“密碼金鑰”,以令接收端使用者對該加密信息進(jìn)行譯碼,如此接收端使用者即得將加密原始信息回復(fù)成可讀信息或取得對原始信息的使用權(quán),本領(lǐng)域技術(shù)人員當(dāng)對該程序及協(xié)議相當(dāng)熟悉。
對數(shù)據(jù)進(jìn)行加密或譯碼時,用于該類密碼的算法(即RSA算法等公開密碼金鑰算法)利用了兩個密碼金鑰。該二密碼金鑰即公開金鑰與私用金鑰。在某些公開金鑰算法中,發(fā)送端使用一接收端公開金鑰而對將傳送予接收端的數(shù)據(jù)加以加密。由于使用者的公開及私用金鑰間存有一數(shù)學(xué)關(guān)系,因此接收端必須以其私用金鑰對傳輸數(shù)據(jù)加以譯碼,以回復(fù)該數(shù)據(jù)的原始形態(tài)。雖然該類密碼算法廣用于現(xiàn)今密碼使用技術(shù)上,但該加密及譯碼運(yùn)算速度過于緩慢,甚至對于少量數(shù)據(jù)的應(yīng)用也是這樣。一種稱作對稱式金鑰算法的第二類算法提供了對等相稱的數(shù)據(jù)安全層級,其執(zhí)行速度比前一算法更快。該算法之所以稱作對稱式金鑰算法乃因其以一單一密碼金鑰同時用于信息的加密及譯碼上。在公開金鑰方面,目前有三種常用的單一金鑰密碼算法,即數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)、三重DES及進(jìn)階加密標(biāo)準(zhǔn)(AES)算法。由于該算法具相當(dāng)?shù)拿舾袛?shù)據(jù)保護(hù)能力,美國政府機(jī)關(guān)正是采用了這種算法,但該算法中一或多者在不久的將來將成為商業(yè)及私人交易所用的標(biāo)準(zhǔn)。在所有該對稱式金鑰算法中,未加密文件及密文皆被切割成多個指定大小的區(qū)塊,以進(jìn)行加密及譯碼工作。例如,AES對128位大小的區(qū)塊執(zhí)行密碼運(yùn)算,并使用128位、192位及256位大小的密碼金鑰。其它對稱式金鑰算法尚有Rijndael Cipher等,也可對192及256位的數(shù)據(jù)區(qū)塊加以保護(hù)功能。因此,在進(jìn)行數(shù)據(jù)區(qū)塊加密操作時,1024位格式的未加密文件信息將以八個128位區(qū)塊的樣式進(jìn)行加密。
在對未加密文件區(qū)塊加密時,所有對稱式金鑰算法皆使用相同類型的子運(yùn)算,且諸多較為常用的對稱式金鑰算法中一起始密碼金鑰常拓展成多個金鑰(即一“金鑰排程”),該多個金鑰的每一負(fù)責(zé)該子運(yùn)算的對應(yīng)加密運(yùn)算回合皆對未加密文件區(qū)塊執(zhí)行加密操作。例如,金鑰排程的一第一金鑰用以對該未加密文件的區(qū)塊執(zhí)行子運(yùn)算中一第一加密運(yùn)算回合,且第一回合所得結(jié)果作為一第二回合的輸入,其中該第二回合使用該金鑰排程中一第二金鑰而獲致一第二結(jié)果。接著,一特定數(shù)的后續(xù)回合分別被執(zhí)行,以產(chǎn)生一最后回合結(jié)果,即密文本身。在使用該AES算法時,每一回合中的子運(yùn)算在文獻(xiàn)中稱作SubBytes或S-box、ShiftRows、MixColumns及AddRoundKey轉(zhuǎn)換。密文區(qū)塊的譯碼以類似方式完成,但在每一回合執(zhí)行時,密文為譯碼的輸入,且受執(zhí)行者為反子運(yùn)算操作,該回合執(zhí)行完畢后得到的最后結(jié)果為未加密文件區(qū)塊。
DES及三重DES算法使用不同規(guī)格的子運(yùn)算,但該子運(yùn)算與AES算法類似,因該子運(yùn)算在將未加密文件區(qū)塊轉(zhuǎn)換成密文區(qū)塊時采用類似方式。
在對多個后續(xù)文字區(qū)塊加以密碼運(yùn)算時,所有的對稱式金鑰算法皆使用同類型模式,該模式包含電子碼書(ECB)模式、密文區(qū)塊鏈(CBC)模式、密文回授(CFB)模式及輸出回授(OFB)模式。在執(zhí)行該子運(yùn)算期間,該模式的某些者使用一外加起始向量,某些者則使用對一第一未加密文件區(qū)塊執(zhí)行的一第一組加密回合所得的密文輸出,即將該密文輸出當(dāng)作對一第二區(qū)塊未加密文件執(zhí)行的一第二組加密回合的一外加輸入。對于各種密碼算法及現(xiàn)今對稱式金鑰密碼算法所使用的子運(yùn)算,在本發(fā)明的說明書中將深入討論,因其不屬于本發(fā)明的范圍。
欲深入了解DES及三重DES算法的詳細(xì)執(zhí)行標(biāo)準(zhǔn),請參閱1999年10月25日發(fā)表的Federal Information Processing Standards Publication46-3(FIPS-46-3);對于AES算法的詳細(xì)說明,可參閱2001年11月26日發(fā)表的Federal Information Processing Standards Publication 197(FIPS-197)的論文內(nèi)容。這些標(biāo)準(zhǔn)由國家標(biāo)準(zhǔn)及科技協(xié)會(NIST)公布及維護(hù),在此將其并入本案中以應(yīng)各種用途所需。除上述標(biāo)準(zhǔn)外,各種教學(xué)、白皮書、工具套件及來源文章也可自NIST的計(jì)算機(jī)安全資源中心(CSRS)于因特網(wǎng)上網(wǎng)址http//csrc.nist.gov/處取得。
除信息的加密及解密外,現(xiàn)另有一種用以確認(rèn)存于硬盤裝置、磁帶或其它存儲裝置中特定數(shù)據(jù)串、文件或諸多文件的內(nèi)容的信息安全措施,該種確認(rèn)方式通稱為信息摘要,執(zhí)行該功能的應(yīng)用程序則產(chǎn)生信息摘要,其產(chǎn)生被稱作單向雜湊功能、雜湊功能、壓縮應(yīng)用、收縮功能、指紋、密碼檢對和、信息完整度檢對和及操作檢測碼。不管其名稱為何,這些應(yīng)用程序一般有多種長度的輸入串,該輸入串稱作信息或預(yù)影像。這些應(yīng)用程序?qū)⑿畔⒒蝾A(yù)影像轉(zhuǎn)換成一固定長度、且通常較小的輸出字符串,該輸出字符串稱作雜湊或信息摘要?,F(xiàn)以利用因特網(wǎng)傳送一文件為例,若該文件包含發(fā)送者及接收者必須相當(dāng)確認(rèn)未被損壞的財(cái)務(wù)、合約、法律或任何其它種類數(shù)據(jù)時,則發(fā)送者將對該文件執(zhí)行一雜湊處理,且將伴隨該文件送出一信息摘要給接收者。若該文件在傳送過程中因各種原因而改變,則接收者在接收該文件時,對該文件執(zhí)行以相同雜湊處理(即執(zhí)行與發(fā)送者執(zhí)行的相同雜湊功能)時,該文件在被接收時產(chǎn)生的信息摘要將與被送出的信息摘要不同,故可得知文件內(nèi)容在被送出時已改變。當(dāng)然,文件有可能被破壞而導(dǎo)致信息及雜湊皆被改變,此時被改變的雜湊剛好與被改變的信息相符,如此的破壞被視為成功的破壞,這就是安全協(xié)議在信息摘要產(chǎn)生功能外另使用其它加密及安全認(rèn)證等信息保護(hù)技術(shù)的原因。
在密碼使用領(lǐng)域中,目前已有多種讓使用者在不需大量知識或努力的條件下執(zhí)行雜湊處理的程序及協(xié)議被開發(fā)出來,使使用者在傳送或提供其信息產(chǎn)品時同時傳送一對應(yīng)信息摘要給不同使用者。這些程序及協(xié)議通常為數(shù)學(xué)算法形式,其所構(gòu)成的應(yīng)用程序可逐一實(shí)施而完成敏感信息的雜湊處理。
目前已有多種算法可用于數(shù)字雜湊功能的執(zhí)行,包含安全雜湊算法(SHA)、N-Hash、Snerfu、Md2、MD4、MD5、Ripe-MD、Haval等,還包含其它算法。然而,本案發(fā)明人觀察到同領(lǐng)域中已有提供使用對稱金鑰算法而進(jìn)行單向雜湊功能的趨勢,其中這些對稱金鑰算法包含上述的AES算法等。例如,利用AES密文區(qū)塊鏈(CBC)模式對1024位未加密文件構(gòu)成的128位區(qū)塊加以加密會產(chǎn)生一1024位的密文輸出。當(dāng)上述區(qū)塊用作為一雜湊算法時,除上一受處理數(shù)據(jù)區(qū)塊外的區(qū)塊全部被丟棄,故對上述1024位根據(jù)CBC模式以128位元區(qū)塊AES加密算法加以雜湊運(yùn)算可產(chǎn)生一128位的信息摘要。加密算法在一信息摘要通過一對稱金鑰加密算法而在一端產(chǎn)生時必須同樣為接收端所使用,以使該傳輸信息有效。譯碼運(yùn)算法也同樣可用于傳輸及接收端上,以產(chǎn)生一信息摘要,并使該信息摘要對于一給定信息是成立的。又由于信息摘要通過對一信息加密、并丟棄最后加密(或譯碼)區(qū)塊的方式以一對稱金鑰算法產(chǎn)生以形成一有意義的雜湊處理,用以執(zhí)行雜湊功能的區(qū)塊密文模式必須為對一數(shù)據(jù)區(qū)塊加以一前一計(jì)算出的中間雜湊處理結(jié)果往前送的各模式中之一,其中該結(jié)果送至對下一數(shù)據(jù)區(qū)塊所加的雜湊功能中。因此,一信息(即輸入文字)被依據(jù)選擇用以進(jìn)行該雜湊功能的對稱金鑰算法分作多個特定大小的區(qū)塊。例如,AES雜湊處理可分別執(zhí)行于128位、192位或256位大小的信息區(qū)塊上。在對每一信息區(qū)塊加以雜湊功能后,一中間雜湊值便產(chǎn)生,且該中間雜湊值被依對下一信息區(qū)塊加以雜湊功能執(zhí)行所用的區(qū)塊密文模式往前送。
多種應(yīng)用程序可在得執(zhí)行密碼運(yùn)算(加密及譯碼)的計(jì)算機(jī)系統(tǒng)上被執(zhí)行,事實(shí)上某些操作系統(tǒng)(如Mi crosoft Windows XP及Linux等)即以密碼相關(guān)原始形式及密碼相關(guān)應(yīng)用程序接口等提供直接的加密及解碼服務(wù)。然而,本案發(fā)明人已觀察得知目前的計(jì)算機(jī)密碼相關(guān)技術(shù)在某些層面上仍顯不足,下文將結(jié)合圖1說明此不足。
圖1為一說明現(xiàn)有計(jì)算機(jī)密碼應(yīng)用技術(shù)方塊圖100。該方塊圖中顯示一第一計(jì)算機(jī)工作站101及一局域網(wǎng)105相接,一第二計(jì)算機(jī)工作站102、一網(wǎng)絡(luò)文件存儲裝置106、一第一路由器107或與因特網(wǎng)等廣域網(wǎng)(WAN)110相接的其它形式接口及一符合IEEE標(biāo)準(zhǔn)802.11等的無線網(wǎng)絡(luò)路由器108與局域網(wǎng)105相接。一筆記本電腦104經(jīng)由一無線網(wǎng)絡(luò)109與該無線網(wǎng)絡(luò)路由器108通過接口相接,一第二路由器111則在廣域網(wǎng)110與一第三計(jì)算機(jī)工作站相接。
如前文中所提到,目前使用者在工作期間面臨的計(jì)算機(jī)信息安全性問題比過去嚴(yán)重許多。例如,在現(xiàn)今多任務(wù)操作系統(tǒng)控制下,第一計(jì)算機(jī)工作站101的使用者可同時執(zhí)行多項(xiàng)工作,且每項(xiàng)工作皆需加以加密處理。第一計(jì)算機(jī)工作站101的使用者需執(zhí)行一加密、譯碼或雜湊應(yīng)用程序112(不論該應(yīng)用程序整合于操作系統(tǒng)中還是被該操作系統(tǒng)所喚起執(zhí)行),以將其第一計(jì)算機(jī)工作站101上的文件存儲至網(wǎng)絡(luò)文件存儲裝置106中。在執(zhí)行文件存儲的同時,使用者可將一具有或不具有一信息摘要的加密信息傳送給一在第二計(jì)算機(jī)工作站102的第二使用者,該第二計(jì)算機(jī)工作站102上同樣需要執(zhí)行該加密、譯碼或雜湊應(yīng)用程序112,其中加密信息的提供可為實(shí)時(如一同步信息)或非實(shí)時(即電子郵件)形式。此外,使用者可在遠(yuǎn)程計(jì)算機(jī)103通過廣域網(wǎng)110而使用或提供其金融數(shù)據(jù)(如信用卡號及金融交易等)或其它形式敏感數(shù)據(jù)。遠(yuǎn)程計(jì)算機(jī)103還可代表一家用辦公或其它遠(yuǎn)程計(jì)算機(jī)103,第一計(jì)算機(jī)工作站101使用者可在其離開辦公室時利用第一計(jì)算機(jī)工作站101而使用局域網(wǎng)105上的共享資源101,102,106,107,108,109。上述任一操作的執(zhí)行皆須喚起對應(yīng)的加密、譯碼或雜湊應(yīng)用程序112。再者,無線網(wǎng)絡(luò)109現(xiàn)皆例行設(shè)于咖啡店、機(jī)場、學(xué)校及其它公共場所,因此使用者不僅需對其與其它使用者間的往來信息加以加密及譯碼,事實(shí)上所有經(jīng)過無線網(wǎng)絡(luò)109而傳送至無線網(wǎng)絡(luò)路由器108的通信數(shù)據(jù)皆需加以加密/解碼/雜湊處理。
因此,在某一工作站101-104所做的任何一項(xiàng)與密碼相關(guān)的操作皆需喚起加密、譯碼或雜湊應(yīng)用程序112,故計(jì)算機(jī)101-104在不久的未來可能得以同時執(zhí)行數(shù)百項(xiàng)密碼運(yùn)算。
本案發(fā)明人已提及上述藉喚起一加密、譯碼或雜湊應(yīng)用程序112的一或多執(zhí)行個體而進(jìn)行的密碼運(yùn)算的數(shù)項(xiàng)限制。例如,經(jīng)由程序化軟件執(zhí)行一指定功能相較于經(jīng)由專用硬件執(zhí)行相同功能是過度緩慢的;每當(dāng)加密、譯碼或雜湊應(yīng)用程序112需執(zhí)行時,一正于計(jì)算機(jī)101-104上執(zhí)行的工作必須暫停執(zhí)行,且密碼運(yùn)算的參數(shù)(即未加密文件、密文、信息區(qū)塊、中間雜湊值、區(qū)塊密文模式及密碼金鑰等)必須經(jīng)過操作系統(tǒng)而傳送至加密、譯碼或雜湊應(yīng)用程序112的執(zhí)行個體,該項(xiàng)送至加密、譯碼或雜湊應(yīng)用程序112的執(zhí)行個體的動作必須被喚起以完成密碼運(yùn)算。又由于密碼算法必然包含對一特定數(shù)據(jù)區(qū)塊所為的諸多子運(yùn)算動作回合,因此加密、譯碼或雜湊應(yīng)用程序112的執(zhí)行包含許多計(jì)算機(jī)指令的執(zhí)行而使整體系統(tǒng)處理速度受到不良影響。熟習(xí)該項(xiàng)技術(shù)者皆能了解Microsoft Outlook軟件在送出一封經(jīng)加密的小電子郵件信息所花費(fèi)的時間是送出一封不加密電子郵件信息的五倍。
此外,目前的密碼相關(guān)技術(shù)因操作系統(tǒng)的介入而有延遲,多數(shù)應(yīng)用程序不提供整合式的金鑰產(chǎn)生或加密/譯碼/雜湊控件(components),它們使用操作系統(tǒng)或外掛程序的控件來完成該等密碼相關(guān)工作。再者,操作系統(tǒng)需分心應(yīng)付各種中斷及其它目前執(zhí)行的應(yīng)用程序的需求。
再者,本案發(fā)明人已提及現(xiàn)有計(jì)算機(jī)系統(tǒng)101-104上密碼運(yùn)算的完成非常類似微處理器中使用專用浮點(diǎn)單位前的浮點(diǎn)數(shù)學(xué)運(yùn)算;早期的浮點(diǎn)運(yùn)算以軟件完成,故其執(zhí)行速度相當(dāng)緩慢,而通過軟件處理的密碼運(yùn)算也同樣緩慢。隨著浮點(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)時,加密共處理器經(jīng)由并行端口或其它接口總線(如USB)以接口與一主處理器相接。當(dāng)然,上述共處理器確能使密碼運(yùn)算遠(yuǎn)快于只通過軟件執(zhí)行的速度,但密碼用共處理器增加了系統(tǒng)設(shè)置的成本,還需要額外的電源,降低了系統(tǒng)的整體可靠度。另外,密碼用共處理器的執(zhí)行不能防止窺探,這是因?yàn)閿?shù)據(jù)信道不與主微處理器處于同一芯片。
因此,本案發(fā)明人了解到現(xiàn)有微處理器需要專用密碼相關(guān)硬件的支持,以使一需加以密碼運(yùn)算的應(yīng)用程序可令微處理器經(jīng)由一單一及極微密碼相關(guān)指令執(zhí)行密碼運(yùn)算。該種能力的提供必須要以操作系統(tǒng)的介入及管理的需求下降至一定程度為原則。此外,密碼相關(guān)指令以在應(yīng)用程序中具有優(yōu)先被使用權(quán)為佳,且專用密碼相關(guān)硬件以與現(xiàn)有微處理器的常用結(jié)構(gòu)兼容為佳。此外,密碼相關(guān)硬件及相關(guān)密碼相關(guān)指令的出現(xiàn)需能與前后代操作系統(tǒng)及應(yīng)用程序兼容。再者,一種能執(zhí)行防止未經(jīng)授權(quán)的窺探的密碼運(yùn)算的設(shè)備及方法有其被提出的必要,其必須支持多種密碼相關(guān)算法,并為之程序化、支持其上執(zhí)行的密碼相關(guān)算法的確認(rèn)及測試工作、接受使用者提供的金鑰及自我產(chǎn)生的金鑰的使用、支持多種數(shù)據(jù)區(qū)塊大小及多種位大小的密碼金鑰、提供ECB、CBC、CFB及OFB等可程序化區(qū)塊加密及譯碼模式、并使利用上述可程序化區(qū)塊密文模式的區(qū)塊密文加密功能可有效在多數(shù)據(jù)區(qū)塊上執(zhí)行。

發(fā)明內(nèi)容
本發(fā)明所要解決的主要問題在于解決現(xiàn)有技術(shù)中存在的問題與缺點(diǎn),提出一種在微處理器中執(zhí)行密碼運(yùn)算的技術(shù)。
為了實(shí)現(xiàn)上述目的,本發(fā)明公開了一種運(yùn)用加密功能以產(chǎn)生信息摘要的設(shè)備,用以實(shí)現(xiàn)密碼運(yùn)算,包含轉(zhuǎn)換邏輯電路,用以自一來源處接收一密碼指令,其中該密碼指令根據(jù)該密碼運(yùn)算之一指定一信息摘要的產(chǎn)生,并用以根據(jù)該密碼運(yùn)算,轉(zhuǎn)換該密碼指令成一指定完成該信息摘要所需的次運(yùn)算的微指令序列;及執(zhí)行邏輯電路,在操作上耦接至該轉(zhuǎn)換邏輯電路,用以接收該微指令序列,并用以執(zhí)行該次運(yùn)算以產(chǎn)生該信息摘要。
所述的密碼運(yùn)算之一包含一加密運(yùn)算,該加密運(yùn)算包含對多個信息區(qū)塊加以加密以產(chǎn)生對應(yīng)的多個中間雜湊值,其中該中間雜湊值的一最后者的值即為該信息摘要。
所述的密碼運(yùn)算之一包含一譯碼運(yùn)算,該譯碼運(yùn)算包含對多個信息區(qū)塊加以譯碼,以產(chǎn)生對應(yīng)多個中間雜湊值,其中該中間雜湊值的一最后者即為該信息摘要。
所述的密碼運(yùn)算之一的進(jìn)行依據(jù)進(jìn)階加密標(biāo)準(zhǔn)算法而為。
所述的密碼指令指定待用以達(dá)成該密碼運(yùn)算之一的一區(qū)塊密文模式。
所述的區(qū)塊密文模式至少包含下列模式之一計(jì)數(shù)器模式、密文區(qū)塊鏈、密文授回模式、輸出授回模式。
所述的密文指令參考該微處理器中多個緩存器。
所述的多個緩存器包含一緩存器,其中該緩存器的內(nèi)容包含一指向一第一記憶地址的第一指針,該第一記憶地址指定一用以存取多個信息區(qū)塊的內(nèi)存中一第一位置,該密碼運(yùn)算之一針對該多個信息區(qū)塊而進(jìn)行,以產(chǎn)生該信息摘要。
所述的多個緩存器包含一緩存器,其中該緩存器的內(nèi)容包含一指向一第一記憶地址的第一指針,該第一記憶地址指定該內(nèi)存中的一第一位置,以存儲對應(yīng)的多個中間雜湊值,該對應(yīng)的多個中間雜湊值因該密碼運(yùn)算之一對多個信息區(qū)塊的動作而產(chǎn)生。
所述的多個緩存器包含一緩存器,其中該緩存器的內(nèi)容指出多個信息區(qū)塊中的區(qū)塊數(shù)。
所述的多個緩存器包含一緩存器,其中該緩存器的內(nèi)容包含一指向一第一記憶地址的第一指針,該第一記憶地址指定內(nèi)存中用以存取密碼金鑰數(shù)據(jù)的一第一地址,以利用該密碼金鑰數(shù)據(jù)完成該密碼運(yùn)算之一。
所述的多個緩存器包含一緩存器,其中該緩存器的內(nèi)容包含一指向一第一記憶地址的第一指針,該第一記憶地址指定用以存取一起始向量的內(nèi)存中一第一位置,以利用該起始向量完成該密碼運(yùn)算之一。
所述的多個緩存器包含一緩存器,其中該緩存器的內(nèi)容包含一指向一第一記憶地址的第一指針,該第一記憶地址指定用以存取一控制字組的內(nèi)存中一第一位置,以利用該控制字組完成該密碼運(yùn)算之一,其中該控制字組指定該密碼運(yùn)算之一的密碼參數(shù)。
本發(fā)明還公開一種運(yùn)用加密功能以產(chǎn)生信息摘要的方法,包含下列步驟接收密碼指令,其中該密碼指令根據(jù)該密碼運(yùn)算之一指定一信息摘要的產(chǎn)生;及執(zhí)行該密碼運(yùn)算產(chǎn)生信息摘要。
所述的接收密碼指令的步驟包含下列步驟指定一加密運(yùn)算為該等密碼運(yùn)算之一,其中該加密運(yùn)算包含對多個信息區(qū)塊加以加密,以產(chǎn)生對應(yīng)的多個中間雜湊值,且該中間雜湊值的最后者為該信息摘要。
所述的接收密碼指令的步驟包含下列步驟指定譯碼運(yùn)算為該密碼運(yùn)算之一,其中該解碼運(yùn)算包含對多個信息區(qū)塊的譯碼,用以產(chǎn)生對應(yīng)的多個中間雜湊值,且最后的該中間雜湊值為該信息摘要。
所述的產(chǎn)生信息摘要的步驟包含下列步驟根據(jù)進(jìn)階加密標(biāo)準(zhǔn)算法完成該密碼運(yùn)算。
所述的接收密碼指令的步驟包含下列步驟在該密碼指令中指定一待被用以完成該密碼運(yùn)算之一的區(qū)塊密文模式,以產(chǎn)生該信息摘要。
所述的區(qū)塊密文模式至少包含下列模式之一計(jì)數(shù)器模式、密文區(qū)塊鏈模式、密文授回模式、輸出授回模式。
本發(fā)明的相關(guān)硬件及相關(guān)指令能與前后代操作系統(tǒng)及應(yīng)用程序兼容,且能執(zhí)行防止未經(jīng)授權(quán)的窺探。


圖1為說明現(xiàn)有密碼相關(guān)應(yīng)用的方塊圖;圖2為說明執(zhí)行密碼運(yùn)算的技術(shù)的方塊圖;圖3為代表本發(fā)明用以執(zhí)行密碼運(yùn)算的微處理器設(shè)備的方塊圖;圖4為本發(fā)明的極微密碼指令實(shí)施例的方塊圖;
圖5為說明圖4中極微密碼指令中區(qū)塊密文模式字段元值范例的表格;圖6為本發(fā)明的與x86相同的微處理器內(nèi)一密碼使用單元的方塊圖;圖7為使圖6的微處理器內(nèi)進(jìn)行密碼相關(guān)子運(yùn)算的微指令范例中的字段元圖;圖8為具圖7的格式的一XLOAD微指令的緩存器字段元值的表格;圖9為具圖7的格式的一XSTOR微指令的緩存器字段元值的表格;圖10為本發(fā)明用以指定一密碼使用運(yùn)算的密碼相關(guān)參數(shù)的控制字符格式范例中的字段元圖;圖11為說明本發(fā)明中一密碼使用單元范例細(xì)節(jié)的方塊圖;圖12為說明本發(fā)明的一執(zhí)行進(jìn)階加密標(biāo)準(zhǔn)(AES)的密碼運(yùn)算的區(qū)塊密碼邏輯電路實(shí)施例的方塊圖;圖13為說明本發(fā)明用以在一中斷事件期間保存密碼相關(guān)參數(shù)狀態(tài)的方法的流程圖;及圖14為說明本發(fā)明在一或多中斷事件存在的條件下利用一對稱金鑰算法產(chǎn)生多個信息區(qū)塊的一信息摘要的方法的流程圖。
其中,附圖標(biāo)記100 現(xiàn)今計(jì)算機(jī)密碼應(yīng)用技術(shù)方塊圖101 第一計(jì)算機(jī)工作站102 第二計(jì)算機(jī)工作站103 遠(yuǎn)程計(jì)算機(jī) 104 筆記本電腦105 局域網(wǎng) 106 網(wǎng)絡(luò)文件存儲裝置107 第一路由器 108 無線網(wǎng)絡(luò)路由器109 無線網(wǎng)絡(luò)110 廣域網(wǎng)112 加密、譯碼或雜湊應(yīng)用程序111 第二路由器200 執(zhí)行密碼運(yùn)算技術(shù)的方塊圖201 微處理器202 操作系統(tǒng)軟件203 應(yīng)用程序內(nèi)存204 密碼金鑰產(chǎn)生應(yīng)用程序205 金鑰排程206 加密應(yīng)用程序207 譯碼應(yīng)用程序208 起始向量209 密碼參數(shù)210 未加密文件 211 信息摘要300 執(zhí)行密碼運(yùn)算與微處理器設(shè)備相關(guān)的方塊圖
301 微處理器 302 獲取邏輯電路303 轉(zhuǎn)換邏輯 304 微指令列305 存儲 306 載入307 緩存器文件 308 控制指標(biāo)309 金鑰指標(biāo) 310 密鑰生成311 輸入指標(biāo) 312 輸出指標(biāo)313 區(qū)塊計(jì)數(shù) 314 裝載邏輯電路315 數(shù)據(jù)高速緩存 316 密碼使用單元317 存儲邏輯電路 318 寫回邏輯電路319 內(nèi)存總線 320 操作系統(tǒng)321 系統(tǒng)內(nèi)存 322 密碼指令323 密碼控制字組 324 起始密碼金鑰排程325 起始向量 326 消息正文327 信息摘要 328 執(zhí)行邏輯400 極微密碼指令 401 選擇性前綴字段402 重復(fù)前綴字段 403 運(yùn)算碼字段500 區(qū)塊密文模式字段元值范例表格 404 區(qū)塊密文模式字段600 微處理器 601 獲取邏輯電路602 轉(zhuǎn)換邏輯 603 轉(zhuǎn)譯器604 微碼只讀存儲器 605 緩存器級606 地址級 607 負(fù)載級608 執(zhí)行級 609 微指令列610 整數(shù)單元 611 微指令列612 浮點(diǎn)單元 613 微指令列614 多媒體延伸指令集單元 615 微指令列616 串流延伸集單元 617 密碼使用單元618 存儲級 619 寫回級620 負(fù)載總線 621 拖延信號622 存儲總線 624 旗標(biāo)緩存器625 X位 626 中斷邏輯電路
627 軟件及硬件中斷信號628 總線629 E位 630 特征控制緩存器631 D位 632 執(zhí)行邏輯電路633 機(jī)器指定緩存器640 信息摘要邏輯電路700 微指令701 微運(yùn)算碼702 數(shù)據(jù)緩存器703 緩存器800 XLOAD微指令的緩存器字段元值的表格900 XSTOR微指令的緩存器字段元值的表格1000 控制字符 1001 保留字段1002 金鑰大小字段 1003 加密/解碼字段1004 中間結(jié)果字段 1005 金鑰生成字段1006 算法字段 1007 信息摘要字段1008 回合計(jì)數(shù)字段 1100 密碼使用單元1101 區(qū)塊密文邏輯電路 1102 金鑰隨機(jī)存取內(nèi)存1103 微運(yùn)算碼 1104 控制字組1105 輸入-0緩存器 1106 輸入-1緩存器1107 金鑰-0緩存器 1108 金鑰-1緩存器1109 輸出-0緩存器 1110 輸出-1緩存器1111 加載總線 1112 存儲總線1113 拖延信號 1114 微指令總線1200 區(qū)塊密文邏輯電路 1201 微指令1202 控制字組 1203 金鑰-0緩存器1204 金鑰-1緩存器 1205 輸入-0緩存器1206 輸入-1緩存器 1207 輸出-0緩存器1208 輸出-1緩存器 1210 回合引擎控制器1211 加密/解密總線 1212 回合計(jì)數(shù)總線1213 金鑰總線 1214 金鑰生成總線1215 至金鑰總線1216 總線1217 總線 1218 下回合輸入總線1221 第一金鑰XOR邏輯電路 1220 回合引擎
1222 REG-0緩存器1223 S-box邏輯電路1224 移列邏輯電路 1225 REG-1緩存器1226 混合列邏輯電路 1227 REG-2緩存器S1300 中斷發(fā)生時保存密碼參數(shù)狀態(tài)的方法S1400 對多個信息區(qū)塊產(chǎn)生一信息摘要的方法具體實(shí)施方式
以下說明針對本發(fā)明的特定應(yīng)用及需求,以使本領(lǐng)域的技術(shù)人員得以制造及使用本發(fā)明,技術(shù)人員可輕易對所述實(shí)施例進(jìn)行各種變化,或?qū)⑺龌驹響?yīng)用至其它實(shí)施例上。因此,本發(fā)明的范圍不僅限于已述特定實(shí)施例,其范圍當(dāng)視為不違本文中所提原理及新穎特征的最大范圍。
在前述對于密碼運(yùn)算、用于現(xiàn)有計(jì)算機(jī)系統(tǒng)以對數(shù)據(jù)加密及譯碼的技術(shù)、及對應(yīng)數(shù)據(jù)區(qū)塊所產(chǎn)生的信息摘要的現(xiàn)有部份討論后,以下將配合圖2對該技術(shù)及其限制進(jìn)行討論。接著,本發(fā)明的說明將配合圖3至圖14說明本發(fā)明提出的用以在現(xiàn)有計(jì)算機(jī)系統(tǒng)中執(zhí)行密碼運(yùn)算的設(shè)備及方法,其具有更加優(yōu)異的性能,并能滿足上述限制操作系統(tǒng)的介入、極微性、前后代結(jié)構(gòu)兼容性、演算及模式的可程序化性、防止黑客侵入及可測式性的目的。
請參閱圖2,所示為說明在一現(xiàn)有計(jì)算機(jī)系統(tǒng)中如前述般執(zhí)行密碼運(yùn)算技術(shù)的方塊圖200,該方塊圖包含一微處理器201,用以獲取指令及處理與應(yīng)用程序相關(guān)的數(shù)據(jù),其中該指令及數(shù)據(jù)位于一稱作應(yīng)用程序內(nèi)存203的系統(tǒng)內(nèi)存區(qū)域中,而應(yīng)用程序內(nèi)存203中數(shù)據(jù)的程控及動作一般由系統(tǒng)內(nèi)存的一保護(hù)區(qū)域中的操作系統(tǒng)軟件202管理。如上所述,若一執(zhí)行應(yīng)用程序(如一電子郵件程序或一文件存儲程序)需密碼運(yùn)算的進(jìn)行,則該執(zhí)行應(yīng)用程序必須通過微處理器201執(zhí)行相當(dāng)數(shù)量的指令才能完成該密碼運(yùn)算。其中該指令可為執(zhí)行應(yīng)用程序本身中的子程序,如可為與執(zhí)行應(yīng)用程序相連接的外掛應(yīng)用程序,或可為操作系統(tǒng)軟件202提供的服務(wù);不管該指令的形式如何,該指令皆存于指定或分配的內(nèi)存區(qū)域中。該內(nèi)存區(qū)域顯示于應(yīng)用程序內(nèi)存203中,且包含一密碼金鑰產(chǎn)生應(yīng)用程序204,其中該密碼金鑰產(chǎn)生應(yīng)用程序204一般產(chǎn)生或接收一密碼金鑰,并將該金鑰拓展成一金鑰排程205,以為密碼回合運(yùn)算所用。
在一多區(qū)塊加密運(yùn)算進(jìn)行時,一區(qū)塊加密應(yīng)用程序206需先被喚起,以執(zhí)行未加密文件210區(qū)塊、金鑰排程205、指定模式等加密運(yùn)算細(xì)節(jié)的密碼參數(shù)209及金鑰排程位置等的使用權(quán)的指令。若為規(guī)格中模式所需,加密應(yīng)用程序206還會使用一起始向量208。在執(zhí)行其中的指令后,加密應(yīng)用程序206產(chǎn)生對應(yīng)的密文區(qū)塊(在雜湊中稱作“信息摘要”211),而一區(qū)塊譯碼應(yīng)用程序207也同樣被喚起以執(zhí)行信息摘要運(yùn)算(如前所略提),即執(zhí)行取得信息、金鑰排程205、進(jìn)一步指定該區(qū)塊解碼運(yùn)算的特定者的密碼參數(shù)209等所需的指令,用以產(chǎn)生對應(yīng)的信息摘要211。若為規(guī)格中模式所需,區(qū)塊譯碼應(yīng)用程序207還會使用一起始向量208。
需強(qiáng)調(diào)的是,在產(chǎn)生密碼金鑰及對文字區(qū)塊加以加密及譯碼時,所需執(zhí)行的指令數(shù)目相當(dāng)多;上述FIPS規(guī)格中包含諸多可形成數(shù)量相當(dāng)?shù)男杓庸烙?jì)指令的偽碼范例,故本領(lǐng)域技術(shù)人員皆了解一項(xiàng)簡單的區(qū)塊加密運(yùn)算需數(shù)百個指令方能完成,且每個指令皆須由微處理器201加以執(zhí)行方能完成所要求的密碼運(yùn)算。再者,對于現(xiàn)有執(zhí)行應(yīng)用程序的主要目的(如文件管理、實(shí)時信息功能、電子郵件功能、遠(yuǎn)程文件取得及信用卡交易等)而言,執(zhí)行指令以完成密碼運(yùn)算一般被視為不必要的功能,因此現(xiàn)有執(zhí)行應(yīng)用程序的使用者感到現(xiàn)有執(zhí)行應(yīng)用程序的執(zhí)行效率不足。若所用的應(yīng)用程序?yàn)楠?dú)立或外掛加密/譯碼應(yīng)用程序206,207,則該應(yīng)用程序206,207的喚起及管理也需考慮到操作系統(tǒng)軟件202的其它要求,如支持中斷、異常及類似使問題惡化的事件等。甚至,對于每一個同時于計(jì)算機(jī)系統(tǒng)中進(jìn)行的密碼運(yùn)算而言,應(yīng)用程序204,206,207的獨(dú)立執(zhí)行個體必須在應(yīng)用程序內(nèi)存203中配以其空間,且需同時為微處理器201所執(zhí)行的密碼運(yùn)算數(shù)將持續(xù)隨時間增加,如前文所描述。
本案發(fā)明人已提到目前計(jì)算機(jī)系統(tǒng)的密碼技術(shù)所存有的問題與局限,并了解到提出在一微處理器中執(zhí)行包含信息摘要的產(chǎn)生的密碼運(yùn)算設(shè)備及方法的必要性,其中該信息摘要的產(chǎn)生使用微處理器中對稱金鑰算法、但不會有程序延遲的問題。
請參閱圖3,圖中所示為本發(fā)明用以執(zhí)行密碼運(yùn)算與微處理器設(shè)備相關(guān)的方塊圖300,該方塊圖中顯示一微處理器301通過一內(nèi)存總線319耦合至一系統(tǒng)內(nèi)存321,其包含用以自一指令緩存器接收指令的轉(zhuǎn)換邏輯303,該轉(zhuǎn)換邏輯303包含邏輯、電路、裝置微碼(即微指令或原始指令)、或邏輯、電路、裝置或微碼的組合,或其它用以將指令轉(zhuǎn)換成相關(guān)微指令序列的等效控件。該用以在轉(zhuǎn)換邏輯303中執(zhí)行轉(zhuǎn)換工作的控件可為其它電路、微碼等用以在微處理器301中執(zhí)行其它功能者所共享。就本發(fā)明的范圍而言,微碼一詞代表多個微指令,而微指令(也稱作原始指令)的層級屬于為一單元執(zhí)行的層級。例如,微指令直接為一精簡指令集(RISC)微處理器所執(zhí)行。以一如x86兼容的微處理器等復(fù)雜指令集計(jì)算機(jī)(CISC)微處理器而言,x86指令被轉(zhuǎn)換成相關(guān)的微指令,且相關(guān)的微指令直接為一CISC微處理器中一單元或多單元執(zhí)行。另外,轉(zhuǎn)換邏輯303耦合至一微指令列304,該微指令列304具有多個微指令表目305、306,并被自微指令列304提供至包含一緩存器文件307的緩存器級邏輯電路,其中該緩存器文件307具有多個緩存器308-313,而該緩存器308-313的內(nèi)容在一指定密碼運(yùn)算執(zhí)行之前建立完成。緩存器308-312指向系統(tǒng)內(nèi)存321中的對應(yīng)位置323-327,位置323-327包含執(zhí)行該指定密碼運(yùn)算所需的數(shù)據(jù)。緩存器級被耦合至裝載邏輯電路314,裝載邏輯電路314則以接口與一數(shù)據(jù)高速緩存315相接,以取得執(zhí)行指定密碼運(yùn)算所需的數(shù)據(jù)。該數(shù)據(jù)高速緩存315經(jīng)內(nèi)存總線319與系統(tǒng)內(nèi)存321相耦合,執(zhí)行邏輯328耦合至裝載邏輯電路314,并執(zhí)行前級送來的微指令指定的運(yùn)算,其包含電路、裝置或微碼(即微指令或原始指令),或?yàn)殡娐?、裝置或微碼的組合,或其它用以執(zhí)行指令所指定的運(yùn)算的等效控件,其中該用以執(zhí)行邏輯328中運(yùn)算的控件可為其它電路及微碼等用以在微處理器301中執(zhí)行其它該密碼使用單元316自裝載邏輯電路314接收執(zhí)行指定密碼運(yùn)算所需的數(shù)據(jù),微指令使該密碼使用單元316對多個輸入文字區(qū)塊(消息正文326)執(zhí)行指定的密碼運(yùn)算,以產(chǎn)生對應(yīng)的信息摘要327。密碼使用單元316包含邏輯、電路、裝置或微碼(即微指令或原始指令),或?yàn)檫壿?、電路、裝置或微碼的組合,或其它用以執(zhí)行密碼運(yùn)算的等效控件,其中該用以在密碼使用單元316中執(zhí)行密碼運(yùn)算的控件可為其它電路及微碼等用以在微處理器301中執(zhí)行其它功能者所共享。在一實(shí)施例中,密碼使用單元316與整數(shù)單元及浮點(diǎn)單元等執(zhí)行邏輯328中其它執(zhí)行單元(圖中未示)平行操作。本發(fā)明范圍所對應(yīng)的“單元”實(shí)施例包含邏輯、電路、裝置或微碼(即微指令或原始指令)的組合,或其它用以執(zhí)行既定功能或操作的等效控件,其中該用以在一特定單元中執(zhí)行其它功能或操作的控件可為其它電路及微碼等用以在微處理器301中執(zhí)行其它功能者所共享。例如,一實(shí)施例中的一整數(shù)單元包含邏輯、電路、裝置或微碼(即微指令或原始指令)的組合,或其它用以執(zhí)行整數(shù)指令的等效控件。一浮點(diǎn)單元包含邏輯、電路、裝置或微碼(即微指令或原始指令)的組合,或其它用以執(zhí)行浮點(diǎn)指令的等效控件,其中該用以在該整數(shù)單元中執(zhí)行整數(shù)指令的控件可為其它電路及微碼等用以在該浮點(diǎn)單元中執(zhí)行浮點(diǎn)指令者所共享。
在一與x86結(jié)構(gòu)兼容的實(shí)施例中,密碼使用單元316與一x86整數(shù)單元、一x86浮點(diǎn)單元、一x86 MMX單元及一x86串流延伸集SSE單元平行運(yùn)作。以本發(fā)明的范圍而言,如果為了在x86微處理器中執(zhí)行而設(shè)計(jì)的應(yīng)用程序中的大多數(shù)能夠被實(shí)施例執(zhí)行,實(shí)施例即為與x86結(jié)構(gòu)兼容。而一應(yīng)用程序得以正確執(zhí)行是指其可獲得所欲結(jié)果。在其它的x86兼容實(shí)施例中,密碼使用單元與前述x86執(zhí)行單元組成的子集合平行運(yùn)轉(zhuǎn),其中密碼使用單元316耦合至存儲邏輯電路317,并提供對應(yīng)的信息摘要327。此外存儲邏輯電路317也耦合至數(shù)據(jù)高速緩存315。該數(shù)據(jù)高速緩存315將信息摘要327轉(zhuǎn)送至系統(tǒng)內(nèi)存321以存儲的。存儲邏輯電路317耦合至寫回邏輯電路318。當(dāng)指定密碼雜湊運(yùn)算完成時,該寫回邏輯電路318在指定密碼運(yùn)算完成時更新緩存器文件307中的緩存器308-313。在一實(shí)施例中,微指令與一頻率信號同步流過上述每一個邏輯級302,303,304,307,314,316-318,因此運(yùn)算操作可同時以大致類似于一組合在線執(zhí)行的操作方式執(zhí)行。
在系統(tǒng)內(nèi)存321中,需執(zhí)行指定密碼運(yùn)算的應(yīng)用程序可令微處理器301利用一單一密碼指令322執(zhí)行該運(yùn)算,在本案中該單一密碼指令322并稱作一XCRYPT指令。在一CISC實(shí)施例中,密碼指令322包含一指定密碼運(yùn)算的指令,在RSIC實(shí)施例中則包含一指定密碼運(yùn)算的微指令。在一實(shí)施例中,該密碼指令322使用在一現(xiàn)存指令集結(jié)構(gòu)中一閑置或不用的指令運(yùn)算碼。在一x86兼容的實(shí)施例中,密碼指令322為一4字節(jié)指令,其包含一x86 REP前綴(即0xF3),接著為未使用的2字節(jié)x86運(yùn)算碼(如0x0FA7),再接著為一用以說明在一指定密碼運(yùn)算期間所用的區(qū)塊密碼模式的字節(jié)。在一實(shí)施例中,本發(fā)明的密碼指令322的執(zhí)行層級可為應(yīng)用程序所使用的系統(tǒng)優(yōu)先層級,并因此可被程序化成一指令構(gòu)成的程序流,其中該程序流直接被一應(yīng)用程序送至微處理器301,或經(jīng)由操作系統(tǒng)320的控制而送至微處理器301。由于使微處理器301執(zhí)行指定密碼運(yùn)算的密碼指令322僅需一個,因此該運(yùn)算的完成可完全為該操作系統(tǒng)320所知。
在實(shí)際運(yùn)行中,操作系統(tǒng)320喚起一應(yīng)用程序以在微處理器301中執(zhí)行,且在該應(yīng)用程序執(zhí)行時指令流中一密碼指令322由系統(tǒng)內(nèi)存321送至獲取邏輯電路302,這一操作也被視作應(yīng)用程序執(zhí)行期間指令流的一部份。但于密碼指令322執(zhí)行之前,程序流中指令使微處理器301對緩存器308-312內(nèi)容初始化,以使緩存器308-312內(nèi)容指向系統(tǒng)內(nèi)存321中包含一密碼控制字組323、一起始密碼金鑰排程324、一起始向量325(若為所需時)、運(yùn)行所需消息正文326及信息摘要327的位置323-327。在執(zhí)行密碼指令322之前需初始化緩存器308-312,因密碼指令實(shí)際上參考了緩存器308-312及一包含一區(qū)塊計(jì)數(shù)313功能的外加緩存器而為,其中該外加區(qū)塊計(jì)數(shù)313暫存計(jì)數(shù)的值為待加雜湊的消息正文326區(qū)域中的數(shù)據(jù)區(qū)塊數(shù)。因此,轉(zhuǎn)換邏輯303自獲取邏輯電路302取得XCRYPT指令,并將其轉(zhuǎn)換成一對應(yīng)微指令序列,以使微處理器301執(zhí)行該指定密碼運(yùn)算。在該對應(yīng)微指令序列中一第一組多個微指令305-306使密碼使用單元316加載裝載邏輯電路314所送出的數(shù)據(jù),并開始執(zhí)行指定數(shù)目的密碼回合,以產(chǎn)生一對應(yīng)輸出數(shù)據(jù)區(qū)塊,并提供對應(yīng)輸出數(shù)據(jù)區(qū)塊至存儲邏輯電路317,以通過數(shù)據(jù)高速緩存315存儲于系統(tǒng)內(nèi)存321的信息摘要327區(qū)域中。在該對應(yīng)微指令序列中一第二組多個微指令(未顯示)令微處理器301中其它執(zhí)行單元(未顯示)執(zhí)行其它完成指定密碼運(yùn)算所需的操作,如對包含暫時結(jié)果及計(jì)數(shù)值的非結(jié)構(gòu)式緩存器(未顯示)的管理輸入及輸出指針311-312緩存器的更新、在一消息正文326區(qū)塊的加密/解碼后,對起始向量指針緩存器的更新(若為所需)及未受處理的中斷的處理等。在一實(shí)施例中,緩存器308-313為定義于特定執(zhí)行的微處理所用的指令集結(jié)構(gòu)(ISA)中的結(jié)構(gòu)式緩存器。
在一實(shí)施例中,密碼使用單元316被分作多級,以能對后續(xù)消息正文326區(qū)塊進(jìn)行管線式處理。
圖3的執(zhí)行密碼運(yùn)算與微處理器設(shè)備相關(guān)的方塊圖300用以說明本發(fā)明所需的控件,現(xiàn)有微處理器301中所用的多種邏輯電路在方塊圖中則被省略,以顧及說明的清楚。然而,現(xiàn)有微處理器301包含諸多級邏輯控件,視其特定應(yīng)用而定,且其中一些級及邏輯控件在本案中已整合在一起,以使說明較為簡潔。例如,裝載邏輯電路314可整合以一地址產(chǎn)生級,接著可有一高速緩存接口級,并接著可有一高速緩存線對位級。但必須特別說明的是,對多個消息正文326區(qū)塊所做的密碼運(yùn)算完整操作需經(jīng)由一單一密碼指令322完成,且該單一密碼指令322的操作為操作系統(tǒng)320所知,其執(zhí)行并經(jīng)由一專用密碼使用單元316完成,其中該專用密碼使用單元316的運(yùn)作與微處理器301中其它執(zhí)行單元平行且一致進(jìn)行。
現(xiàn)請參閱圖4,圖中所示為用以說明本發(fā)明的一極微密碼指令400實(shí)施例的方塊圖。該極微密碼指令400包含一選擇性前綴字段401,之后為一重復(fù)前綴字段402,之后為一運(yùn)算碼字段403,再后為一區(qū)塊密文模式字段404。在一實(shí)施例中,字段401-404的內(nèi)容與x86指令集結(jié)構(gòu)兼容。在其它不同實(shí)施例中,字段401-404的內(nèi)容與其它指令集結(jié)構(gòu)兼容。
在運(yùn)作時,選擇性前綴字段401用于諸多指令集結(jié)構(gòu)中,以啟動或關(guān)閉一主微處理器的某些特定處理能力,如進(jìn)行16位或32位的運(yùn)算或處理,或處理或使用特定的內(nèi)存區(qū)塊等。該重復(fù)前綴字段402指出極微密碼指令400所指定的密碼運(yùn)算需對多個輸入數(shù)據(jù)(即未加密的文件或密文)區(qū)塊而為。重復(fù)前綴字段402令一兼容微處理器將其中多個結(jié)構(gòu)式緩存器的內(nèi)容作為系統(tǒng)內(nèi)存中位置的指針,其中該系統(tǒng)內(nèi)存位置包含完成既定密碼運(yùn)算所需的密碼數(shù)據(jù)及參數(shù)。如上所述,該重復(fù)前綴字段402的值在一x86相容的實(shí)施例中為0xF3;且根據(jù)x86結(jié)構(gòu)協(xié)議而言,密碼指令的形式非常類似REP.MOVS等x86重復(fù)串指令。例如,當(dāng)以本發(fā)明的x86相同微處理器實(shí)施例為之時,重復(fù)前綴實(shí)際上參考一存于結(jié)構(gòu)式緩存器ECX中的區(qū)塊計(jì)數(shù)變量、一存于緩存器ESI中的來源地址指針(指向該密碼運(yùn)算對應(yīng)的輸入數(shù)據(jù))及一存于緩存器EDI中的目的位址指針(指向內(nèi)存中的輸出數(shù)據(jù)區(qū)域)。在一x86相容實(shí)施例中,本發(fā)明還將傳統(tǒng)的重復(fù)串指令概念拓展成再參考一存于緩存器EDX中的控制字組指針、一存于緩存器EBX中的密碼金鑰指針及一存于緩存器EAX中指向一起始向量的指標(biāo)(若為指定密文模式所需)。
運(yùn)算碼字段403指定微處理完成進(jìn)一步為一內(nèi)存中一控制字組所指定的密碼運(yùn)算,其中對該控制字組的參考經(jīng)由該控制字組指針而為。本發(fā)明中,較佳的運(yùn)算碼值為一現(xiàn)存指令集結(jié)構(gòu)中閑置或未使用的運(yùn)算碼值之一,以維持一與操作系統(tǒng)及應(yīng)用軟件兼容的微處理器的兼容性。例如,前述的一與x86兼容的運(yùn)算碼字段403實(shí)施例使用值0x0FA7以進(jìn)行既定密碼運(yùn)算的執(zhí)行,區(qū)塊密文模式字段404指定在既定密碼運(yùn)算期間使用特定區(qū)塊密文模式,以下將配合圖5說明的。
圖5為圖4的極微密碼指令所用的區(qū)塊密文模式字段值范例表格500,其中值0xC8指定以電子碼書(ECB)模式完成密碼運(yùn)算,值0XD0指定以密文區(qū)塊鏈(CBC)模式完成密碼運(yùn)算,值0xE0指定以密文回授(CFB)模式完成密碼運(yùn)算,而值0xE8指定以輸出回授(OFB)模式完成密碼運(yùn)算。另外,區(qū)塊密文模式字段404的所有其它值皆受保留,該模式的描述可見于前述FIPS檔的內(nèi)容。
現(xiàn)請參閱圖6,其為一說明本發(fā)明中一x86兼容微處理器600中密碼使用單元617的方塊圖。其中,微處理器600包含獲取邏輯電路601,該獲取邏輯電路601自內(nèi)存(未顯示)獲取指令以為執(zhí)行,其并耦合至轉(zhuǎn)換邏輯602。轉(zhuǎn)換邏輯602包含邏輯、電路、裝置或微碼(即微指令或自然指令),或?yàn)檫壿嫛㈦娐?、裝置或微碼的組合,或?yàn)槠渌靡詫⒅噶钷D(zhuǎn)換成相關(guān)微指令序列的等效控件。該用以在轉(zhuǎn)換邏輯602中執(zhí)行轉(zhuǎn)換的控件可為其它電路及微碼等所共享,以在微處理器600中執(zhí)行其它功能。轉(zhuǎn)換邏輯602包含信息摘要邏輯電路640,該信息摘要邏輯電路640耦合至一轉(zhuǎn)譯器603及一微碼只讀存儲器(ROM)604。中斷邏輯電路626通過總線628耦合至該轉(zhuǎn)換邏輯602電路。多個軟件及硬件中斷信號627為中斷邏輯電路626處理,中斷邏輯電路626可指出目前對轉(zhuǎn)換邏輯602的尚未受處理的中斷。轉(zhuǎn)換邏輯602耦合至微處理器600的后級,包含一緩存器級605、地址級606、負(fù)載級607、執(zhí)行級608、存儲級618及寫回級619。該每一個后級皆包含用以完成指令執(zhí)行相關(guān)的特定功能的邏輯,其中該指令指以圖3中微處理器內(nèi)類似零組件標(biāo)號配合說明的獲取邏輯電路601所提供者。圖6中所示x86兼容實(shí)施范例顯示執(zhí)行級608中的執(zhí)行邏輯電路632,其包含平行執(zhí)行單元610,612,614,616,617;一整數(shù)單元610自微指令列609接收執(zhí)行用整數(shù)微指令;一浮點(diǎn)單元612自微指令列611接收執(zhí)行用浮點(diǎn)微指令;一多媒體延伸指令集單元614自微指令列613接收執(zhí)行用MMX微指令;一串流延伸集(SSE)單元616自微指令列615接收執(zhí)行用SSE微指令。在所示x86實(shí)施范例中,密碼使用單元617通過一負(fù)載總線620、一拖延信號621及存儲總線622耦合至SSE單元616,并共享SSE單元的微指令列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ī)器指定緩存器633而推估一E位629的狀態(tài),其中該E位629的狀態(tài)指出微處理器600中是否存在該密碼使用單元617。此外,整數(shù)單元610也得使用一特征控制緩存器630中的一D位631,以啟動或關(guān)閉密碼使用單元617。至于圖3中的微處理器實(shí)施例301,圖6中微處理器600已顯示本發(fā)明所需要的主要控件,該控件并說明于一x86相容實(shí)施例的敘述內(nèi)容中,該微處理器中的其它控件則已整合顯示或省略未示,用以使圖面說明較為簡潔。本領(lǐng)域的技術(shù)人員皆知完成該接口需有其它控件的存在,如一數(shù)據(jù)高速緩存、總線接口單元及頻率產(chǎn)生與分配邏輯等。
在如上述方式獲取一XCRYPT指令后,轉(zhuǎn)換邏輯602產(chǎn)生令微處理器600后續(xù)級605-608,618,619執(zhí)行指定密碼運(yùn)算的相關(guān)微指令,其中一第一組多個相關(guān)微指令直接被送至密碼使用單元617,并令密碼使用單元617加載負(fù)載總線620上的數(shù)據(jù),或?qū)⒁惠斎霐?shù)據(jù)區(qū)塊加載,并開始執(zhí)行指定數(shù)目的密碼回合,以產(chǎn)生一輸出數(shù)據(jù)區(qū)塊,或?qū)⒁划a(chǎn)生的輸出數(shù)據(jù)區(qū)塊提供至存儲總線622上,以為存儲邏輯電路存儲于內(nèi)存中。該微指令中的一第二組多個相關(guān)微指令被送至其它執(zhí)行單元610,612,614,616,以執(zhí)行完成該E位629的測試等指定密碼運(yùn)算所需的次運(yùn)算,以致能該D位631、設(shè)定該X位625以指出一密碼運(yùn)算正在執(zhí)行當(dāng)中、更新緩存器級605中緩存器(如計(jì)數(shù)緩存器、輸入文字指針緩存器、輸出文字指針緩存器)、及處理中斷邏輯電路626所指的中斷等。這些相關(guān)微指令被加排序,以利用間插整數(shù)單元微指令于密碼使用單元微指令序列中的方式使既定密碼運(yùn)算有最佳效能,其中間插整數(shù)單元微指令的作法以使整數(shù)運(yùn)算可與密碼單元運(yùn)算并行為之為原則。該相關(guān)微指令中含有微指令,用以使軟件及硬件中斷信號627得以存在,并能自軟件及硬件中斷信號627中回復(fù)。由于所有指向密碼參數(shù)及數(shù)據(jù)的指針皆設(shè)于x86結(jié)構(gòu)緩存器中,故該指針的狀態(tài)會在中斷被處理時被存儲,且該狀態(tài)會在中斷結(jié)束后被回復(fù)。因此,當(dāng)一中斷發(fā)生時,程控權(quán)轉(zhuǎn)交給一對應(yīng)中斷服務(wù)子程序。在程控權(quán)轉(zhuǎn)移時,X位625被清除以指出金鑰數(shù)據(jù)及控制字組數(shù)據(jù)不再有效;當(dāng)中斷結(jié)束時,程控權(quán)再轉(zhuǎn)回至XCRYPT指令手上,以判定金鑰數(shù)據(jù)及控制字組數(shù)據(jù)是否有效;若是,則運(yùn)算在中斷發(fā)生的時重復(fù)對特定輸入數(shù)據(jù)區(qū)塊進(jìn)行。若X位625的狀態(tài)指出金鑰數(shù)據(jù)及控制字組數(shù)據(jù)不再有效,則金鑰數(shù)據(jù)及控制字組在中斷發(fā)生時再次自內(nèi)存與正被處理的特定輸入數(shù)據(jù)區(qū)塊被加載??傊景l(fā)明的XCRYPT指令的執(zhí)行必定包含對位的初始測試,以判定密碼使用單元617中金鑰數(shù)據(jù)及控制字組數(shù)據(jù)的有效性。若金鑰數(shù)據(jù)及控制自組數(shù)據(jù)無效,則金鑰數(shù)據(jù)及控制字組數(shù)據(jù)自內(nèi)存中加載,且輸入指針緩存器內(nèi)容所指的輸入數(shù)據(jù)區(qū)塊被加載,且該輸入數(shù)據(jù)區(qū)塊被執(zhí)行以該指定的密碼運(yùn)算。另一方面,該輸入數(shù)據(jù)區(qū)塊被加載,且該指定密碼運(yùn)算的執(zhí)行于不先下載金鑰數(shù)據(jù)及控制字組數(shù)據(jù)的條件下進(jìn)行。
若新金鑰數(shù)據(jù)或新控制字組存在時,則X位625需在一新CRYPT指令執(zhí)行之前被清除,且后續(xù)XCRYPT指令可在使用相同金鑰數(shù)據(jù)及控制制組數(shù)據(jù)的條件下執(zhí)行。在此例中,在起始金鑰數(shù)據(jù)及控制字組數(shù)據(jù)被加載后不需清除X位625。例如,為使內(nèi)存總線速度得到最佳化,則使用者可中斷如500個輸入數(shù)據(jù)區(qū)塊的加密/譯碼成為5個XCRYPT指令,其中每一XCRYPT指令處理100個輸入數(shù)據(jù)區(qū)塊。
信息摘要邏輯電路640用以增強(qiáng)信息摘要產(chǎn)生運(yùn)作的性能,其能確保相關(guān)微指令經(jīng)過排序而使信息區(qū)塊序列的區(qū)塊密碼運(yùn)算序列的指針緩存器及中間雜湊結(jié)果得在軟件及硬件中斷信號627受處理之前更新。信息摘要邏輯電路640還令微指令插置于相關(guān)微指令流中,以使輸入數(shù)據(jù)區(qū)塊的指針能在內(nèi)存中一第一信息數(shù)據(jù)區(qū)塊的密碼運(yùn)算(即編碼或譯碼)完成時指向一下一信息區(qū)塊。輸出指標(biāo)維持為一定值,以使每一后續(xù)中間雜湊結(jié)果復(fù)寫于先前產(chǎn)生的雜湊結(jié)果上。此外,信息摘要邏輯電路640令微指令插置于相關(guān)微指令流中,以修正區(qū)塊計(jì)數(shù)器為指出密碼運(yùn)算已對目前信息數(shù)據(jù)區(qū)塊動作完成。例如,在輸出授回(OFB)模式下使用加密運(yùn)算的信息摘要利用一與一第一消息正文區(qū)塊并用的起始向量產(chǎn)生相同大小的一第一中間雜湊區(qū)塊,且該起始向量被加以一前向密文運(yùn)算以產(chǎn)生一第一密文輸出區(qū)塊,其中該第一密文輸出區(qū)塊再利用對第一密文輸出區(qū)塊及第一中間雜湊區(qū)塊加以互斥或的方式產(chǎn)生。接著,第一密文輸出區(qū)塊被作為一起始向量往前送,且等效對一第二信息區(qū)塊加密。使用OFB模式譯碼的信息摘要運(yùn)算與使用OFB加密方式所為的信息摘要運(yùn)算極其相似,但其中間雜湊區(qū)塊以對信息區(qū)塊及密文輸出區(qū)塊加以互斥或的方式產(chǎn)生,其中起始向量及后續(xù)起始向量與其等效向量需加前向密文運(yùn)算,以產(chǎn)生密文輸出區(qū)塊。
在一實(shí)施例中,信息摘要邏輯電路640根據(jù)既定區(qū)塊密文模式進(jìn)行一指定的信息摘要產(chǎn)生運(yùn)算,并提供微指令序列以更新結(jié)構(gòu)緩存器的指針,以確保一第一信息區(qū)塊后的區(qū)塊有正確的區(qū)塊數(shù)據(jù)得被前送以產(chǎn)生下一中間雜湊值。
現(xiàn)請參閱圖7,圖中說明用以令圖6中微處理器進(jìn)行密碼子運(yùn)算的微指令700范例中的字段。該圖中,微指令700包含一微運(yùn)算碼701字段、一數(shù)據(jù)緩存器702字段及一緩存器703字段。微運(yùn)算碼701字段指定一待受執(zhí)行的子運(yùn)算,并指定微處理器600的一或多級中邏輯電路以執(zhí)行該子運(yùn)算,其中微運(yùn)算碼701字段中的值指定微指令為本發(fā)明的密碼使用單元執(zhí)行。在一實(shí)施例中,該微運(yùn)算碼701字段有二值,其中第一值(XLOAD)指定數(shù)據(jù)將從一結(jié)構(gòu)性緩存器內(nèi)容所指定的內(nèi)存地址中取得,其中該結(jié)構(gòu)性緩存器為數(shù)據(jù)緩存器702字段的內(nèi)容所指者,而該數(shù)據(jù)接著被加載密碼使用單元中一緩存器,該緩存器則為緩存器703字段內(nèi)容所指定者,且上述所取得的數(shù)據(jù)(如密碼金鑰數(shù)據(jù)、控制字組、信息數(shù)據(jù)及起始向量等)被送至密碼使用單元。微運(yùn)算碼701字段的第二值(XSTOR)指定密碼使用單元所產(chǎn)生的數(shù)據(jù)當(dāng)被存儲于一由一結(jié)構(gòu)性緩存器內(nèi)容所指的記憶地址中,其中該結(jié)構(gòu)性緩存器由該數(shù)據(jù)緩存器702字段的內(nèi)容所標(biāo)定。在一多級密碼使用單元實(shí)施例中,緩存器703字段的內(nèi)容指定多個輸出數(shù)據(jù)區(qū)塊中之一存儲于內(nèi)存中,該輸出數(shù)據(jù)區(qū)塊為數(shù)據(jù)域位中密碼使用單元所提供,用以為存儲邏輯電路所動作。以下針對本發(fā)明的密碼使用單元所執(zhí)行的XLOAD及XSTOR微指令進(jìn)行更詳細(xì)的說明,其中說明的進(jìn)行將配合圖8及圖9而為。
請參閱圖8,其中一XLOAD微指令的緩存器字段值的表格800用以說明圖7中的XLOAD微指令的緩存器703字段。如前所述,一微指令序列在一XCRYPT指令轉(zhuǎn)換后產(chǎn)生,該微指令序列包含一第一組多個微指令及一第二組多個微指令,其中第一組多個微指令為密碼使用單元所執(zhí)行,而第二組多個微指令則為微處理器中密碼使用單元外的一或多平行功能單元所執(zhí)行,并使計(jì)數(shù)器更新、暫時緩存器、結(jié)構(gòu)性緩存器、機(jī)器指定緩存器的狀態(tài)位的測試及設(shè)定等子動作進(jìn)行。第一組多個指令提供金鑰數(shù)據(jù)、密碼參數(shù)及信息數(shù)據(jù)至密碼使用單元而令之產(chǎn)生金鑰排程(或加載已自內(nèi)存取得的金鑰排程),以對信息數(shù)據(jù)加載并加密(或譯碼),并存儲信息摘要數(shù)據(jù)。此外,一XLOAD微指令被送至密碼使用單元以加載控制字組數(shù)據(jù)、加載一密碼金鑰或金鑰排程、加載起始向量數(shù)據(jù)、加載信息數(shù)據(jù)及加載輸入文字?jǐn)?shù)據(jù),并令密碼使用單元開始進(jìn)行一指定密碼運(yùn)算。此時,一XLOAD微指令的緩存器703字段值0b010令密碼使用單元加載一控制字組至其內(nèi)部控制字組緩存器中。當(dāng)該微指令在該管線中進(jìn)行時,經(jīng)由使用一緩存器級中的結(jié)構(gòu)性控制字組指針緩存器內(nèi)容可得控制字組存儲的內(nèi)存地址。記憶邏輯電路將該位址轉(zhuǎn)換成一內(nèi)存存取的實(shí)際地址;裝載邏輯電路自高速緩存取得控制字組,并將控制字組置入數(shù)據(jù)域位中,且該控制字組接著被送至密碼使用單元。同樣地,緩存器字段值0b100令密碼使用單元加載數(shù)據(jù)字段中輸入文字?jǐn)?shù)據(jù),接著開始指定的密碼運(yùn)算。該輸入數(shù)據(jù)的存取經(jīng)由一存于一結(jié)構(gòu)性緩存器中的一指針為之,此與控制字組相當(dāng)。值0b101令數(shù)據(jù)域位中輸入數(shù)據(jù)加載內(nèi)部緩存器IN-1中,該數(shù)據(jù)可為輸入文字?jǐn)?shù)據(jù)(在管線作業(yè)時)或起始向量;值0b110及0b111則令密碼使用單元分別加載一密碼金鑰或使用者產(chǎn)生的金鑰排程中一金鑰的低效及高效位。在本發(fā)明中,使用者的定義為執(zhí)行一特定功能或動作者,其可體現(xiàn)應(yīng)用程序、操作系統(tǒng)、機(jī)器或人等。因此,一使用者產(chǎn)生的金鑰排程實(shí)施例以一應(yīng)用程序產(chǎn)生,另一不同實(shí)施例中則為一人所產(chǎn)生。
若密碼運(yùn)算執(zhí)行所根據(jù)的是為使用者產(chǎn)生的金鑰排程時,多數(shù)個對應(yīng)該使用者產(chǎn)生的金鑰排程中金鑰數(shù)的多數(shù)個XLOAD微指令被送至密碼使用單元,以令該單元加載金鑰排程中的每一回合金鑰。
XLOAD微指令中緩存器703字段的所有其它值皆被保留。請參閱圖9,圖中為XSTOR微指令的緩存器字段值的表格900顯示圖7所示格式的XSTOR微指令的緩存器703字段。一XSTOR微指令被送至密碼使用單元以令其提供一所產(chǎn)生(經(jīng)加密或譯碼)的輸出文字區(qū)塊至存儲邏輯電路中,以存儲于內(nèi)存中數(shù)據(jù)緩存器702字段所指定的位置。因此,本發(fā)明的轉(zhuǎn)換邏輯先發(fā)出一對一特定輸入文字區(qū)塊操作的XSTOR微指令,接著再發(fā)出一對其對應(yīng)輸出文字區(qū)塊操作的XLOAD微指令。緩存器703字段的值0b100令密碼使用單元提供與其內(nèi)部輸出-0緩存器相關(guān)的輸出文字區(qū)塊至存儲邏輯電路中以進(jìn)行存儲,OUT-0的內(nèi)容與送至IN-0的輸入文字區(qū)塊相關(guān)。同樣地,緩存器字段值0b101所參考的內(nèi)部輸出-1緩存器的內(nèi)容與送至IN-1的輸入文字?jǐn)?shù)據(jù)相關(guān)。因此,多個輸入文字區(qū)塊在金鑰及控制字組數(shù)據(jù)加載后可為密碼使用單元加以管線管理,通過以XLOAD.IN-1、XLOAD.IN-0(XLOAD.IN-0令密碼使用單元同樣開始密碼運(yùn)算的執(zhí)行)、XSTOR.OUT-1、XSTOROUT-0、XLOAD.IN-1、XLOAD.IN-0(開始進(jìn)行后續(xù)二輸入文字區(qū)塊的運(yùn)算或操作)等的順序發(fā)出密碼微指令的方式即可實(shí)現(xiàn)。
現(xiàn)請參閱圖10,該圖說明本發(fā)明中用以指定密碼運(yùn)算的密碼參數(shù)的控制字組格式范例??刂谱址?000由一使用者程序化至內(nèi)存中,且其指針在密碼運(yùn)算執(zhí)行前被送至一兼容微處理器中一結(jié)構(gòu)性緩存器。因此,一對應(yīng)一經(jīng)提供的XCRYPT指令的微指令序列中的一XLOAD微指令被送出,以令微處理器讀取含該指針的結(jié)構(gòu)性緩存器,以將該指針轉(zhuǎn)換成一實(shí)際內(nèi)存地址,借以自內(nèi)存(高速緩存)取得控制字符1000,并將該控制字符1000載至密碼使用單元的內(nèi)部控制字組緩存器中。控制字符1000包含一代表保留的保留(RSVD)字段1001、一金鑰大小(KSIZE)字段1002、一加密/解碼(E/D)字段1003、一中間結(jié)果(IRSLT)字段1004、一金鑰生成(KGEN)字段1005、一算法(ALG)字段1006、一信息摘要(MD)字段1007及一回合計(jì)數(shù)(RCNT)字段1008。
保留字段1001的所有值皆受保留。金鑰大小字段1002的內(nèi)容指定加密及譯碼執(zhí)行時所用的密碼金鑰的大小。在一實(shí)施例中,金鑰大小字段1002指定區(qū)塊大小為128位、192位或256位。加密/譯碼字段1003指定密碼運(yùn)算究將為一加密運(yùn)算或解碼運(yùn)算。金鑰生成字段1005指出使用者產(chǎn)生的金鑰排程是否存于內(nèi)存中,或一單一密碼金鑰是否存于內(nèi)存中。若一單一密碼金鑰確實(shí)存在,那么微指令及密碼金鑰被發(fā)送至密碼使用單元,以令該單元將該金鑰依算法字段1006內(nèi)容所指定的金鑰密碼算法拓展成一金鑰排程。在一實(shí)施例中,算法字段1006指定使用前述的DES算法、三重DES算法或AES算法。其余不同實(shí)施例中,采用的算法為Rijndael Cipher及Twofish Cipher算法等。信息摘要字段1007的內(nèi)容決定當(dāng)產(chǎn)生一信息摘要或當(dāng)進(jìn)行一般加密或譯碼運(yùn)算。
回合計(jì)數(shù)字段1008的內(nèi)容指定使用的算法在對每一輸入文字區(qū)塊運(yùn)算時所用的密碼回合數(shù);雖然上述算法所用標(biāo)準(zhǔn)對于每一輸入文字區(qū)塊使用指定固定演算回合數(shù),但程序設(shè)計(jì)者得利用回合計(jì)數(shù)字段1008來改變該標(biāo)準(zhǔn)所指定的回合數(shù)。在一實(shí)施例中,程序設(shè)計(jì)者對于每一區(qū)塊得設(shè)定0至15等不同回合。最后,中間結(jié)果字段1004的內(nèi)容指定一輸入文字區(qū)塊是否當(dāng)依信息摘要字段1007指定的密碼算法標(biāo)準(zhǔn)加以回合計(jì)數(shù)字段1008中指定的回合數(shù),或是否對該依回合計(jì)數(shù)字段1008中指定的回合數(shù)執(zhí)行加密/譯碼,其中該所執(zhí)行的最后一回合代表一中間結(jié)果而非一最終結(jié)果。諸多密碼算法在每一回合中執(zhí)行相同的子運(yùn)算,不過最后一回合則不同。因此,對中間結(jié)果字段1004加以程序化以提供中間結(jié)果而非最終結(jié)果的作法有其優(yōu)點(diǎn),因其得令程序設(shè)計(jì)者確認(rèn)所為算法的中間步驟。例如,確認(rèn)算法性能的通過漸進(jìn)中間結(jié)果得利用對一文字區(qū)塊加以一加密回合、接著對該相同文字區(qū)塊執(zhí)行以二回合、并接著執(zhí)行三回合等方式而達(dá)成。此外,可程序化回合及中間結(jié)果的達(dá)成令使用者得確認(rèn)密碼相關(guān)性能,并能解決及驗(yàn)究各種不同金鑰結(jié)構(gòu)及回合數(shù)的使用性。
現(xiàn)請參閱圖11,其為說明本發(fā)明的密碼使用單元范例的方塊圖。圖中,密碼使用單元1100包含一微運(yùn)算碼1103緩存器,其經(jīng)由一微指令總線1114接收密碼微指令(即XLOAD及XSTOR微指令),并具有一控制字組1104緩存器、一輸入-0緩存器1105、輸入-1緩存器1106、一金鑰-0緩存器1107及一金鑰-1緩存器1108。依照微運(yùn)算碼1103緩存器中一XLOAD微指令的內(nèi)容所指定的,數(shù)據(jù)經(jīng)由一加載總線1111送至緩存器1104-1108。此外,密碼使用單元1100還包含區(qū)塊密文邏輯電路1101,該區(qū)塊密文邏輯電路1101耦合至緩存器1103-1108的每一個,并耦合至密碼金鑰隨機(jī)存取內(nèi)存(RAM)1102。此外,區(qū)塊密文邏輯電路1101還提供一拖延信號1113,并提供區(qū)塊結(jié)果至一輸出-0緩存器1109及一輸出-1緩存器1110。輸出緩存器1109-1110將其內(nèi)部所存內(nèi)容經(jīng)由一存儲總線1112送至一兼容微處理器的后級中。在一實(shí)施例中,微指令碼1103緩存器的大小為32位,緩存器1104-1110的大小則為128位。密碼微指令得與指定予控制字組1104緩存器的數(shù)據(jù)選擇性依序提供至微指令碼1103緩存器、輸入緩存器1105-1 106中其一或金鑰緩存器1107-1108中其一。在圖8及圖9所示實(shí)施例中,一控制字組經(jīng)由一XLOAD微指令被載至控制字組1104緩存器中,接著密碼金鑰或金鑰排程經(jīng)由后續(xù)XLOAD微指令被加載。若被加載的密碼金鑰為128位,則一XLOAD微指令用以指定金鑰-01緩存器1107。若被加載的密碼金鑰大于128位,則一XLOAD微指令指定金鑰-0緩存器1107,且一XLOAD微指令指定金鑰-1緩存器1108。若被加載的為一使用者產(chǎn)生的金鑰排程,則后續(xù)XLOAD微指令指定金鑰-0緩存器1107。被加載的金鑰排程中金鑰的每一個依順序置放于金鑰隨機(jī)存取內(nèi)存1102中,以供其相對金鑰回合執(zhí)行時所用。之后,輸入文字?jǐn)?shù)據(jù)(若不需使用起始向量)被載至輸入-1緩存器1106。若使用起始向量,則其被經(jīng)由一XLOAD微指令載至輸入-1緩存器1106。一送至輸入-0緩存器1105的微指令令密碼使用單元將輸入文字?jǐn)?shù)據(jù)載至輸入-0緩存器1105,并開始利用輸入-1中或二輸入緩存器1105-1106中(當(dāng)輸入數(shù)據(jù)正處管線處理時)起始向量對輸入-0緩存器1105中輸入文字?jǐn)?shù)據(jù)執(zhí)行以密碼回合,其中該密碼回合的執(zhí)行依控制字組1104緩存器中內(nèi)容所提供的參數(shù)為目的。當(dāng)一接收及一指定輸入-0緩存器1105的XLOAD微指令時,區(qū)塊密文邏輯電路開始執(zhí)行控制字組內(nèi)容指定的密碼運(yùn)算。當(dāng)一單一密碼金鑰需加以拓展時,區(qū)塊密文邏輯電路產(chǎn)生金鑰排程中的每一金鑰,并將的存儲于金鑰隨機(jī)存取內(nèi)存1102。在一不同實(shí)施例中,區(qū)塊密文邏輯電路在接收得指定輸入-0緩存器1105的LOAD微指令的前產(chǎn)生金鑰排程中每一金鑰。不論區(qū)塊密文邏輯電路1101是否產(chǎn)生一金鑰排程或金鑰排程是否自內(nèi)存中載出,第一回合所用金鑰在區(qū)塊密文邏輯電路1101皆被加以快取處理,以使第一區(qū)塊密碼回合可在不需使用金鑰隨機(jī)存取內(nèi)存1102的條件下進(jìn)行。區(qū)塊密文邏輯電路1101在一經(jīng)起動后即持續(xù)對一或多輸入文字區(qū)塊執(zhí)行指定密碼運(yùn)算,直至該運(yùn)算完成止。接著,自金鑰隨機(jī)存取內(nèi)存1102中獲取所用密碼算法所需的回合金鑰。密碼使用單元1100對被指定的輸入文字區(qū)塊加以一既定區(qū)塊密碼運(yùn)算,后續(xù)輸入文字區(qū)塊經(jīng)由相對的后續(xù)XLOAD及XSTOR微指令的執(zhí)行而被加加密或譯碼。當(dāng)一XSTOR微指令被執(zhí)行時,若指定的輸出數(shù)據(jù)(即輸出-0緩存器1109或輸出-1緩存器1110)尚未完全產(chǎn)生,則區(qū)塊密文邏輯電路發(fā)出拖延信號1113。一旦輸出數(shù)據(jù)已經(jīng)產(chǎn)生并被置入一對應(yīng)輸出緩存器1109-1110中,則該緩存器1109-1110的內(nèi)容被傳送至存儲總線1112。
現(xiàn)請參閱圖12,其為說明本發(fā)明用以依進(jìn)階加密標(biāo)準(zhǔn)(AES)執(zhí)行密碼運(yùn)算的區(qū)塊密文邏輯電路實(shí)施范例的方塊圖。區(qū)塊密文邏輯電路1200包含一回合引擎1220,該回合引擎1220經(jīng)由總線1211-1214及總線1216-1218耦合至一回合引擎控制器1210,該回合引擎控制器1210使用一微指令1201緩存器、控制字組1202緩存器、金鑰-0緩存器1203及金鑰-1緩存器1204而存取金鑰數(shù)據(jù)、微指令及所進(jìn)行的密碼運(yùn)算的參數(shù)。輸入緩存器1205-1206的內(nèi)容被送至回合引擎1220,且回合引擎1220提供對應(yīng)輸出文字至輸出緩存器1207-1208。輸出緩存器1207-1208也經(jīng)由總線1216-1217耦合至回合引擎控制器1210,以令回合引擎控制器1210得使用每一后續(xù)密碼回合的結(jié)果,其中該結(jié)果經(jīng)由下回合輸入總線1218而送至一下一密碼回合。金鑰RAM(未顯示)中的密碼金鑰可經(jīng)由至金鑰總線1215而被存??;加密/解密總線1211令回合引擎使用子運(yùn)算而執(zhí)行加密(如S-Box)或譯碼(如反向S-Box);回合計(jì)數(shù)總線1212的內(nèi)容令回合引擎1220執(zhí)行一第一AES回合、一中間AES回合或一最后AES回合。金鑰生成總線1214被發(fā)出以令回合引擎1220根據(jù)金鑰總線1213所提供的金鑰產(chǎn)生一金鑰排程,且金鑰總線1213在每一回合金鑰被執(zhí)行時提供對應(yīng)回合金鑰至回合引擎1220中。
回合引擎1220包含第一金鑰XOR邏輯電路1221,該第一金鑰XOR邏輯電路1221耦合至一REG-0緩存器1222。REG-0緩存器1222耦合至S-box邏輯電路1223,該S-box邏輯電路1223耦合至移列(Shift Row)邏輯電路1324,該移列邏輯電路1224耦合至一REG-1緩存器1225,REG-1緩存器1225則耦合至混合列(Mix Column)邏輯電路1226,混合列邏輯電路1226則耦合至一REG-2緩存器1227。第一金鑰XOR邏輯電路1221、S-box邏輯電路1223、移列邏輯電路1224及混合列邏輯電路1226被設(shè)定以對輸入文字?jǐn)?shù)據(jù)執(zhí)行類似名稱的子運(yùn)算,其中該當(dāng)執(zhí)行的子運(yùn)算已指定于上述AES FIPS標(biāo)準(zhǔn)中。此外,混合列邏輯電路1226也另被設(shè)定以在所需的中間回合期間通過金鑰總線1213所提供的回合金鑰對輸入數(shù)據(jù)執(zhí)行AES XOR功能。第一金鑰XOR邏輯電路1221、S-box邏輯電路1223、移列邏輯電路1224及混合列邏輯電路1226也被設(shè)定以在譯碼期間經(jīng)由加密/解密總線1211的狀態(tài)而啟動執(zhí)行其對應(yīng)反AES子運(yùn)算。中間回合數(shù)據(jù)的依據(jù)特定區(qū)塊加密模式而送回至回合引擎1220系為控制字組1202緩存器所指定。起始向量數(shù)據(jù)(若需要)經(jīng)由下回合輸入總線1218而送至回合引擎1220。
在圖12所示實(shí)施例中,回合引擎被分作第一級及第二級,其中第一級位于REG-0緩存器1222及REG-1緩存器1225間,第二級則位于REG-1緩存器1225及REG-2緩存器1227之間。中間回合數(shù)據(jù)在該二級之間受管線管理,且該管線管理與一頻率信號同步。當(dāng)對一輸入數(shù)據(jù)區(qū)塊的一密碼運(yùn)算操作完成時,相關(guān)輸出數(shù)據(jù)被置入一對應(yīng)輸出緩存器1207-1208中。當(dāng)一XSTOR微指令被執(zhí)行時,一指定輸出緩存器1207-1208即被送至一存儲總線上。
現(xiàn)請參閱圖13,圖中所示為一說明本發(fā)明的用以在中斷發(fā)生時保存密碼參數(shù)狀態(tài)的方法S1300的流程圖。該流程起始于步驟S1302,此時一指令流為一微處理器執(zhí)行,其中該指令流不需包含本案中所述XCRYPT指令。接著,該流程往步驟S1304移動。
在步驟S1304時,一中斷事件(如可屏蔽中斷、非可屏蔽中斷、頁錯誤、工作切換等)是否正發(fā)生中斷將受判斷,此時該指令流中需有一改變而形成一指令流(中斷處理)以處理該中斷事件。若中斷確實(shí)正進(jìn)行中,該流程往步驟S1306前進(jìn);若否,則該流程在步驟S1304上反復(fù)受判斷直至一中斷事件發(fā)生,其中在反復(fù)判斷期間指令執(zhí)行的動作持續(xù)進(jìn)行。
在步驟S1306時,由于在將程控權(quán)傳送至一對應(yīng)中斷處理者之前已有一中斷事件發(fā)生,故本發(fā)明的中斷邏輯電路對一旗標(biāo)緩存器中的X位加以清除,如此得確保若于中斷處理者處返回時一區(qū)塊密碼運(yùn)算正進(jìn)行時、一或多中斷事件的發(fā)生將被指出且控制字組數(shù)據(jù)及金鑰數(shù)據(jù)必須在持續(xù)進(jìn)行區(qū)塊密碼運(yùn)算之前再被加載,其中該密碼運(yùn)算所針對的輸入數(shù)據(jù)區(qū)塊為輸入指針緩存器內(nèi)容所指者。接著,流程行進(jìn)至步驟S1308。
在步驟S1308時,包含與本發(fā)明的區(qū)塊密碼運(yùn)算性能相關(guān)的指針及計(jì)數(shù)器結(jié)構(gòu)性緩存器被存至內(nèi)存中?,F(xiàn)有數(shù)據(jù)計(jì)算裝置中結(jié)構(gòu)性緩存器的存儲典型上是于傳送控制至中斷處理者之前進(jìn)行,因此本發(fā)明提出本數(shù)據(jù)結(jié)構(gòu)形式以令中斷事件發(fā)生整個過程中具有執(zhí)行透明度。在該緩存器被存儲后,流程前進(jìn)至步驟S1310。
在步驟S1310時,程序流被送至中斷處理處。接著,流程前進(jìn)至步驟S1312。
該方法在步驟S1312處結(jié)束。圖13的方法在于中斷處理處返回時在步驟S1302處再度開始。
現(xiàn)請參閱圖14,圖中所示為用以說明本發(fā)明的利用一對稱金鑰算法而于一或多中斷事件發(fā)生時對多個信息區(qū)塊產(chǎn)生一信息摘要的方法S1400的流程圖。雖然本領(lǐng)域技術(shù)人員皆知在利用其它區(qū)塊密文模式(如CBC、CTR及CFB等之一)產(chǎn)生信息摘要時仍會一些可忽略的改變,但該方法的步驟依據(jù)輸出授回區(qū)塊密文模式表示,以使說明較簡便。
流程開始于步驟S1402,此時一本發(fā)明的XCRYPT指令使一信息摘要的產(chǎn)生開始執(zhí)行。XCRYPT指令的執(zhí)行可為一第一執(zhí)行,或可因中斷事件造成執(zhí)行中斷而變?yōu)橐坏谝粓?zhí)行之后的執(zhí)行,其中該中斷事件對執(zhí)行的中斷使得程控權(quán)在一中斷處理已執(zhí)行之后傳送回至XCRYPT指令。接著,流程行進(jìn)至步驟S1404。
在步驟S1404時,一本發(fā)明的輸入指針緩存器內(nèi)容所指的一內(nèi)存數(shù)據(jù)區(qū)塊被自內(nèi)存中載出,且根據(jù)一指定密碼運(yùn)算而為之信息摘要產(chǎn)生也開始。該被使用的既定輸入指針緩存器被決定,且特定密碼運(yùn)算(如加密或解碼)依據(jù)該輸入指針緩存器而被決定,且區(qū)塊密文模式(如CBC、CTR、CFB或OFB)也通過該輸入指針緩存器而被決定。例如,若OFB模式被用于加密運(yùn)算以產(chǎn)生信息摘要,則輸入指針緩存器及一起始指針緩存器皆被用以加載數(shù)據(jù),故輸入指針緩存器指向一下一將被加密的信息區(qū)塊,其結(jié)果為一中間雜湊值。若一信息摘要的產(chǎn)生利用OFB模式譯碼運(yùn)算而為,則輸入指針緩存器指向相同的下一信息區(qū)塊,且此時以譯碼算法而非加密方式而為。不管方式為何(即OFB加密或OFB譯碼),起始向量緩存器皆指向內(nèi)存中一起始向量位置,且其內(nèi)容對于一第一信息區(qū)塊為一起始向量,對于后續(xù)信息區(qū)塊則為對應(yīng)一前一信息區(qū)塊的輸出密文區(qū)塊(即中間雜湊值),其中該前一信息區(qū)塊被用作為等效于一目前信息區(qū)塊的一起始向量。
在步驟S1406處,一旗標(biāo)緩存器中X位是否為設(shè)定狀態(tài)被加判斷。若X位被設(shè)定,則控制字組及以被載進(jìn)本發(fā)明的密碼使用單元的金鑰排程的值成立;若X位被清除,則控制字組及以被載進(jìn)本發(fā)明的密碼使用單元的金鑰排程的值不成立。如上述配合圖13所提到的,X位在一中斷事件發(fā)生時被清除。此外,當(dāng)需要加載一新控制字組或金鑰排程或該二者時,指令須被執(zhí)行以在XCRYPT指令發(fā)出之前清除,如上所述。在一于X86 EFLAGS緩存器內(nèi)使用位30的X86兼容實(shí)施例中,該X位的清除可通過一POPFD指令后執(zhí)行一PUSHFD指令的方式進(jìn)行。不過,X位的清除在其它不同實(shí)施例中必須依賴其它指令。若X位被設(shè)定,則流程行進(jìn)至步驟S1412;若X位被清除,則流程行進(jìn)至步驟S1408。
在步驟S1408時,由于一被清除的X位已指出一中斷事件已發(fā)生或一新控制字組及(或)金鑰數(shù)據(jù)將被加載,因此一控制字組被自內(nèi)存中載出。在一實(shí)施例中,控制字組的加載使密碼使用單元的指定密碼運(yùn)算操作停止,如上述配合步驟S1404所載述。在本實(shí)施范例中步驟S1404中一密碼運(yùn)算的開始使多個區(qū)塊密碼運(yùn)算得到最佳化,其方式為假設(shè)一目前的控制字組及金鑰數(shù)據(jù)為將被使用者。因此,目前輸入數(shù)據(jù)區(qū)塊被加載,且密碼運(yùn)算在核對步驟S1406中X位狀態(tài)之前即已開始。接著,流程行進(jìn)至步驟S1410。
在步驟S1410處,金鑰數(shù)據(jù)(即一加密金鑰或一完整金鑰排程)被自內(nèi)存中加載。此外,步驟S1404中配合說明的輸入信息區(qū)塊及起始向量(或起始向量的等效者)被再度加載,且密碼運(yùn)算依據(jù)最新加載的控制字組及金鑰排程開始進(jìn)行。接著,流程行進(jìn)至步驟S1412。
在步驟S1412處,在步驟S1404或步驟S1410處被加載的輸入信息區(qū)塊被存儲至一內(nèi)部緩存器TEMP。接著,流程行進(jìn)至方塊1414。
在步驟S1414處,一對應(yīng)該加載的信息區(qū)塊的中間雜湊值被產(chǎn)生。接著,流程進(jìn)行至步驟S1416。
在步驟S1416處,一起始向量的等效者IVEQ通過對中間雜湊值及TEMP的內(nèi)容加以互斥或的方式產(chǎn)生。接著,流程行進(jìn)至步驟S1418。
在步驟S1418處,起始向量的等效者IVEQ被寫至起始向量指針緩存器IVPTR內(nèi)容所指的記憶位置,以使對下一輸入信息區(qū)塊的指定OFB模式密碼運(yùn)算使用正確的起始向量等效者。接著,流程行進(jìn)至步驟S1420。
步驟S1412,S1414,S1416及S1418中所述的步驟得確保一XCRYPT指令得在任何時候使用將被中斷的OFB模式區(qū)塊密碼方式的條件下執(zhí)行。
在步驟S1420處,所產(chǎn)生的中間雜湊值被存儲至內(nèi)存中。接著,流程行進(jìn)至步驟S1422。
在步驟S1422處,輸入?yún)^(qū)塊指針緩存器的內(nèi)容被修改以指向下一輸入信息區(qū)塊。由于此一流程S1400的作用在于產(chǎn)生一信息摘要,故輸出指針緩存器的內(nèi)容不改變,以使所產(chǎn)生的每一后續(xù)中間雜湊值皆覆寫于先前產(chǎn)生的值上,并最后使信息摘要本身在指定密碼運(yùn)算執(zhí)行之后形成于上一信息區(qū)塊上。此外,區(qū)塊計(jì)數(shù)緩存器內(nèi)容被加修正以指出目前輸入信息區(qū)塊上的密碼運(yùn)算已完成。在圖14所示實(shí)施例中,區(qū)塊計(jì)數(shù)緩存器值遞減,但其它實(shí)施例中可對區(qū)塊計(jì)數(shù)緩存器內(nèi)容加以處理及測試,以令輸入信息區(qū)塊同樣可受管線式處理。接著,流程行進(jìn)至步驟S1424。
在步驟S1424處,輸入信息區(qū)塊是否仍被加運(yùn)算被加判斷,本實(shí)施例以了解區(qū)塊計(jì)數(shù)器判斷是否為零的方式判斷的,不過此僅為說明用,仍有其它實(shí)施例的存在。若已無區(qū)塊受運(yùn)算處理,則流程行進(jìn)至步驟S1428。若有一區(qū)塊仍受運(yùn)算處理,則流程行進(jìn)至步驟S1426。
在步驟S1426處,下一輸入信息數(shù)據(jù)區(qū)塊與起始向量的等效者一同被載入,且該起始向量的等效者為輸入指針緩存器及起始向量緩存器所指。接著,流程行進(jìn)至步驟S1412。
在步驟S1428處,該方法結(jié)束。
步驟S1416,S1418,S1420,S1422及S1424對應(yīng)的步驟的行進(jìn)順序可不同于以上所述,其甚至可平行而為。
本發(fā)明的目的、特征及優(yōu)點(diǎn)已詳述于上,但其它實(shí)施例屬本發(fā)明包含的范圍。例如,本發(fā)明的與x86結(jié)構(gòu)兼容的實(shí)施例已詳盡描述于上,但僅因x86結(jié)構(gòu)為一般所廣泛了解而舉例說明,故對其的討論可用以教示本發(fā)明的其它部份。即,本發(fā)明的范圍擴(kuò)及PowerPC、MIPS等其它指令集結(jié)構(gòu),并適用于其它全新的指令集結(jié)構(gòu)。
本發(fā)明的密碼運(yùn)算還可于一計(jì)算系統(tǒng)中微處理器本身以外的控制件中進(jìn)行,如得于計(jì)算系統(tǒng)中一不同于微處理器所在集成電路上的一密碼使用單元上進(jìn)行,該實(shí)施例得依序整合于一圍繞一微處理的芯片組(如北橋及南橋)中,或可構(gòu)成一專用以執(zhí)行密碼運(yùn)算的處理器,此時密碼指令由一主微處理器被送至該處理器中。本發(fā)明還可用于嵌入式控制器、工業(yè)控制器、信號處理器、陣列處理機(jī)及各種得用以處理數(shù)據(jù)的類似裝置中。此外,本發(fā)明還包含一僅具有上述中該用以執(zhí)行密碼運(yùn)算所必須的控制件的實(shí)施例。以上述方式體現(xiàn)的裝置確實(shí)得將執(zhí)行密碼運(yùn)算的低成本及低功率代用方式單由一通信系統(tǒng)中一加密/解碼處理器等實(shí)施的。為便于說明,本案發(fā)明人將上述該不同處理控件統(tǒng)稱作處理器。
此外,雖然上述中本發(fā)明以128位區(qū)塊作為代表說明,也可使用其它各種不同區(qū)塊大小,僅需改變攜載輸入數(shù)據(jù)、輸出數(shù)據(jù)、金鑰及控制字組的緩存器的大小即可實(shí)現(xiàn)。
再者,雖然DES、三重DES及AES的特征已在本案中詳述,但本案發(fā)明人當(dāng)特別說明本發(fā)明實(shí)際上還包含一般不常用的區(qū)塊密碼使用算法,如MARS密文、Rijndael密文、Twofish密文及Blowfish密文、Serpent密文及RC6密文。在詳閱過上述說明后,本發(fā)明的專用區(qū)塊密碼使用設(shè)備及微處理器中的支持方法必足為一般所了解,其中信息摘要產(chǎn)生運(yùn)算可經(jīng)由對一單一指令的執(zhí)行而被喚起動作。
最后,本發(fā)明已經(jīng)詳述單一密碼使用單元可支持多個區(qū)塊密碼算法,但本發(fā)明的范圍還包含多密碼使用單元的使用,該單元在操作上與兼容微處理器中其它執(zhí)行單元平行耦合,且皆設(shè)定以執(zhí)行一既指定的區(qū)塊密碼算法。例如,一第一單元設(shè)定以執(zhí)行AES算法,一第二單元設(shè)定以執(zhí)行DES算法等。
本發(fā)明已針對特定實(shí)施例詳述如上,本領(lǐng)域的普通技術(shù)人員在不違本發(fā)明的精神及范圍的條件下對本發(fā)明加以改變或更動,該改變或更動仍不脫離本發(fā)明的范圍,本發(fā)明的精神及范圍將定義如下述的權(quán)利要求書中。
權(quán)利要求
1.一種運(yùn)用加密功能以產(chǎn)生信息摘要的設(shè)備,用以實(shí)現(xiàn)密碼運(yùn)算,其特征在于,包含轉(zhuǎn)換邏輯電路,用以自一來源處接收一密碼指令,其中該密碼指令根據(jù)該密碼運(yùn)算之一指定一信息摘要的產(chǎn)生,并用以根據(jù)該密碼運(yùn)算,轉(zhuǎn)換該密碼指令成一指定完成該信息摘要所需的次運(yùn)算的微指令序列;及執(zhí)行邏輯電路,在操作上耦接至該轉(zhuǎn)換邏輯電路,用以接收該微指令序列,并用以執(zhí)行該次運(yùn)算以產(chǎn)生該信息摘要。
2.如權(quán)利要求1所述的微處理器中的設(shè)備,其特征在于,該密碼運(yùn)算之一包含一加密運(yùn)算,該加密運(yùn)算包含對多個信息區(qū)塊加以加密以產(chǎn)生對應(yīng)的多個中間雜湊值,其中該中間雜湊值的一最后者的值即為該信息摘要。
3.如權(quán)利要求1所述的微處理器中的設(shè)備,其特征在于,該密碼運(yùn)算之一包含一譯碼運(yùn)算,該譯碼運(yùn)算包含對多個信息區(qū)塊加以譯碼,以產(chǎn)生對應(yīng)多個中間雜湊值,其中該中間雜湊值的一最后者即為該信息摘要。
4.如權(quán)利要求1所述的微處理器中的設(shè)備,其特征在于,該密碼運(yùn)算之一的進(jìn)行依據(jù)進(jìn)階加密標(biāo)準(zhǔn)算法而為。
5.如權(quán)利要求1所述的微處理器中的設(shè)備,其特征在于,該密碼指令指定待用以達(dá)成該密碼運(yùn)算之一的一區(qū)塊密文模式。
6.如權(quán)利要求5所述的微處理器中的設(shè)備,其特征在于,該區(qū)塊密文模式至少包含下列模式之一計(jì)數(shù)器模式、密文區(qū)塊鏈、密文授回模式、輸出授回模式。
7.如權(quán)利要求1所述的微處理器中的設(shè)備,其特征在于,密文指令參考該微處理器中多個緩存器。
8.如權(quán)利要求7所述的微處理器中的設(shè)備,其特征在于,該多個緩存器包含一緩存器,其中該緩存器的內(nèi)容包含一指向一第一記憶地址的第一指針,該第一記憶地址指定一用以存取多個信息區(qū)塊的內(nèi)存中一第一位置,該密碼運(yùn)算之一針對該多個信息區(qū)塊而進(jìn)行,以產(chǎn)生該信息摘要。
9.如權(quán)利要求7所述的微處理器中的設(shè)備,其特征在于,該多個緩存器包含一緩存器,其中該緩存器的內(nèi)容包含一指向一第一記憶地址的第一指針,該第一記憶地址指定該內(nèi)存中的一第一位置,以存儲對應(yīng)的多個中間雜湊值,該對應(yīng)的多個中間雜湊值因該密碼運(yùn)算之一對多個信息區(qū)塊的動作而產(chǎn)生。
10.如權(quán)利要求7所述的微處理器中的設(shè)備,其特征在于,該多個緩存器包含一緩存器,其中該緩存器的內(nèi)容指出多個信息區(qū)塊中的區(qū)塊數(shù)。
11.如權(quán)利要求7所述的微處理器中的設(shè)備,其特征在于,該多個緩存器包含一緩存器,其中該緩存器的內(nèi)容包含一指向一第一記憶地址的第一指針,該第一記憶地址指定內(nèi)存中用以存取密碼金鑰數(shù)據(jù)的一第一地址,以利用該密碼金鑰數(shù)據(jù)完成該密碼運(yùn)算之一。
12.如權(quán)利要求7所述的微處理器中的設(shè)備,其特征在于,該多個緩存器包含一緩存器,其中該緩存器的內(nèi)容包含一指向一第一記憶地址的第一指針,該第一記憶地址指定用以存取一起始向量的內(nèi)存中一第一位置,以利用該起始向量完成該密碼運(yùn)算之一。
13.如權(quán)利要求7所述的微處理器中的設(shè)備,其特征在于,該多個緩存器包含一緩存器,其中該緩存器的內(nèi)容包含一指向一第一記憶地址的第一指針,該第一記憶地址指定用以存取一控制字組的內(nèi)存中一第一位置,以利用該控制字組完成該密碼運(yùn)算之一,其中該控制字組指定該密碼運(yùn)算之一的密碼參數(shù)。
14.一種運(yùn)用加密功能以產(chǎn)生信息摘要的方法,其特征在于,包含下列步驟接收密碼指令,其中該密碼指令根據(jù)該密碼運(yùn)算之一指定一信息摘要的產(chǎn)生;及執(zhí)行該密碼運(yùn)算產(chǎn)生信息摘要。
15.如權(quán)利要求14所述的方法,其特征在于,該接收密碼指令的步驟包含下列步驟指定一加密運(yùn)算為該等密碼運(yùn)算之一,其中該加密運(yùn)算包含對多個信息區(qū)塊加以加密,以產(chǎn)生對應(yīng)的多個中間雜湊值,且該中間雜湊值的最后者為該信息摘要。
16.如權(quán)利要求14所述的方法,其特征在于,該接收密碼指令的步驟包含下列步驟指定譯碼運(yùn)算為該密碼運(yùn)算之一,其中該解碼運(yùn)算包含對多個信息區(qū)塊的譯碼,用以產(chǎn)生對應(yīng)的多個中間雜湊值,且最后的該中間雜湊值為該信息摘要。
17.如權(quán)利要求14所述的方法,其特征在于,該產(chǎn)生信息摘要的步驟包含下列步驟根據(jù)進(jìn)階加密標(biāo)準(zhǔn)算法完成該密碼運(yùn)算。
18.如權(quán)利要求14所述的方法,其特征在于,該接收密碼指令的步驟包含下列步驟在該密碼指令中指定一待被用以完成該密碼運(yùn)算之一的區(qū)塊密文模式,以產(chǎn)生該信息摘要。
19.如權(quán)利要求14所述的方法,其特征在于,該區(qū)塊密文模式至少包含下列模式之一計(jì)數(shù)器模式、密文區(qū)塊鏈模式、密文授回模式、輸出授回模式。
全文摘要
本發(fā)明涉及一種運(yùn)用加密功能以產(chǎn)生信息摘要的設(shè)備及方法,包括轉(zhuǎn)換邏輯電路,用以自一來源處接收一密碼指令,其中該密碼指令根據(jù)該密碼運(yùn)算之一指定一信息摘要的產(chǎn)生,并用以根據(jù)該密碼運(yùn)算,轉(zhuǎn)換該密碼指令成一指定完成該信息摘要所需的次運(yùn)算的微指令序列;及執(zhí)行邏輯電路,在操作上耦接至該轉(zhuǎn)換邏輯電路,用以接收該微指令序列,并用以執(zhí)行該次運(yùn)算以產(chǎn)生該信息摘要。本發(fā)明的相關(guān)硬件及相關(guān)指令能與前后代操作系統(tǒng)及應(yīng)用程序兼容,且能執(zhí)行防止未經(jīng)授權(quán)的窺探。
文檔編號H04L9/00GK1838140SQ20061006616
公開日2006年9月27日 申請日期2006年3月24日 優(yōu)先權(quán)日2005年3月25日
發(fā)明者湯姆士·克里斯賓, 葛倫·亨利, 泰利·派克 申請人:威盛電子股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1