配置密碼引擎資料區塊的微處理器及方法
2023-04-24 23:54:16 6
專利名稱:配置密碼引擎資料區塊的微處理器及方法
技術領域:
本發明是有關於微電子領域,特別是有關於一種在一計算裝置中執行密碼運算的裝置及方法,其中計算裝置允許數據區塊大小依據指令階段的程序化而運作。
背景技術:
早期的計算機系統是獨立操作於其它計算機系統之外,據此,執行於此計算機系統中的應用程式所需的輸入數據,若非儲存於此計算機系統,就是由應用程式設計人員在執行時提供;而應用程式執行結果及產生的輸出數據,其形式一般為列印輸出的紙張,或者是寫入磁帶、磁碟或是此計算機系統其它類型的儲存裝置的檔案。輸出檔案可當成之後在相同計算機系統中執行的應用程式的輸入檔案,或者,當輸出數據先前被儲存成檔案於可移除或可輸送的儲存裝置時,其也可以提供給不同但兼容的計算機系統的應用程式使用。在這些早期的系統,保護機密信息的需求是公認,並且在其它信息安全措施中,密碼應用程式被發展及應用以防止機密信息未被授權揭露。這些密碼程序一般是以加密或解密的方式在儲存裝置中儲存成檔案的輸出數據。
其後沒幾年,使用者開始發現由網絡將計算機連接可以提供信息共享存取的好處,因此網絡架構、作業系統、以及數據傳輸協議等均發展成不僅支持存取共享數據的能力,更是其顯著的特徵。例如使用者的計算機工作站可以在不同工作站或網絡文件伺服器存取檔案,或者利用網際網路獲得新聞及其它信息,或者對數以百計的其它計算機傳送及接收電子訊息(如電子郵件),或者與經銷商的計算機系統連接並提供信用卡或銀行信息以購買產品,或者在餐廳、機場或其它公共場合利用無線網絡進行上述的任何活動。因此,保護機密數據及傳輸免於未授權揭露的需求已急速的成長,而在某些特定的狀況下,使用者被迫保護其機密數據的情況也大大的增加。目前新聞頭條通常集中在計算機信息安全問題,例如垃圾郵件(spam)、黑客、身分盜取、反向工程、惡作劇以及信用卡詐騙等是公眾所關注的前幾名。而當這些從各方面侵入私人領域的動機由無心的錯誤到有預謀的網絡攻擊,負責的執行單位以新法律、嚴厲的執行以及公共教育節目響應。然而,這些響應並未有效遏止危及計算機信息的浪潮。昔日是政府、金融機構、軍方所專注關切之間諜,現在對一般人而言也已成為重要的問題;間諜讀取他們的電子郵件或從他們的家用計算機存取他們檢查帳戶的交易。在商業之前,熟悉該項技術者可察知從小到大的社團法人目前應用其資源卓越的部分以保護財產信息。
信息安全領域提供我們技術及裝置以加密數據,並使其僅能由指定的個體加以解碼,此為所知的密碼(cryptography)。當特別應用於保護儲存或傳輸於計算機之間的信息時,密碼最常被應用於轉換機密數據(稱為「明文」;plaintext或cleartext)成為難以理解的形式(稱為「密文」;ciphertext)。轉變明文成為密文的轉換過程稱為加密(encryption;enciphering;ciphering),而轉變密文回明文的反向轉換過程稱為解密(decryption;deciphering;inverse ciphering)。
在密碼學的領域中,幾種程序及協議已發展到允許使用者不須具備許多知識及努力即可執行密碼運算,並且針對這些使用者使其可以傳輸或者提供其加密形式的信息產品給不同的使用者。連同加密信息,傳送者通常會提供接收者一「密碼鑰匙(cryptographic key)」以使接收者可以解碼所加密的信息,因此使得接收者能夠恢復或者獲得存取未加密的原始信息。熟悉該項技術者可察知這些程序及協議一般是以暗語(password)保護、數學算法以及應用程式特別設計的形式加以實現以加密及解密機密信息。
幾種類型的算法目前使用於加密及解密數據。算法根據上述一類型(例如一種RSA算法,公開鑰匙密碼算法)利用兩密碼鑰匙(一公開鑰匙(publickey)與一私人鑰匙(private key)),加密或解密資料。根據一些公開鑰匙算法,接收者的公開鑰匙被傳送者用來加密傳送給接收者的數據,因為有一數學關係存在於使用者的公開鑰匙與私人鑰匙之間,因此接收者必須利用其私人鑰匙解密此傳輸以恢復此數據。雖然這類型的密碼算法廣泛使用於現今,但其加密及解密的運算卻是極慢甚至於少量的數據。一第二類型的算法,如所知的對稱鑰匙算法,提供同量等級的數據安全並且可以較快執行。這些算法稱為對稱鑰匙算法,因為他們對加密及解密信息使用單一密碼鑰匙。在公開區段,目前有三種盛行單一鑰匙(single-key)密碼算法數據加密標準(Data Encryption Standard;DES)、三重數據加密標準(Triple DES)以及進階加密標準(Advanced Encryption Standard;AES)。因為這些算法保護機密數據的強度,美國政府機關目前正使用這些算法,但熟悉該項技術者預期這些算法中至少一個算法,在不久的將來會變成商業及非官方交易的標準。根據所有這些對稱鑰匙算法,明文及密文被劃分在指定大小中的區塊以進行加密及解密。例如進階加密標準執行密碼運算於128位區塊的大小,並且使用128位、192位以及256位的密碼鑰匙長度。其它對稱鑰匙算法,例如Rijndael Cipher也允許192位以及256位的數據區塊。據此,就一區塊加密運算而言,一1024位的明文訊息加密成8個128位的區塊。
所有對稱鑰匙算法利用相同形式的次運算以加密一區塊的明文,並且根據許多更常被應用的對稱鑰匙算法,一初始密碼鑰匙被擴展成複數個鑰匙(例如一「鑰匙排程」),每一鑰匙用以當成次運算的一對應密碼「回合」且執行於明文區塊。例如鑰匙排程的第一鑰匙用以執行次運算的第一密碼回合於明文區塊,第一回合的結果用以當成第二回合的輸入,其中第二回合利用鑰匙排程的第二鑰匙以產生第二結果,並且一具體指定數量後來的回合執行產生一最終回合結果,即密文本身。根據進階加密標準算法,在每一回合的次運算參照於文獻中的次位(或S-box)、移列(ShiftRows)、混欄(MixColums)以及加入回合鍵(AddRoundKey)等。一區塊密文的解密類似的處理並伴隨例外的執行在每一回合,且回合的最終結果是一區塊的明文,上述的例外是指密文輸入反加密及反次運算執行(例如InverseMixColumns、Inverse ShiftRows)。
數據加密標準及三重數據加密標準算法利用不同特定的次運算,但是這些次運算是類似進階加密標準算法的次運算,因為其利用相似的方式以轉換一區塊的明文成為一區塊的密文。
執行密碼運算於多連續的文字區塊,所有對稱鑰匙算法利用相同類別的模式,這些模式包含電子密碼本(electronic code book;ECB)模式、密碼區塊連結(cipher block chaining;CBC)模式、密碼反饋模式(cipher feedback;CFB)以及輸出反饋模式(output feedback;OFB)。這些模式中有些利用一附加初始化向量於執行次運算期間,有些使用執行於第一區塊明文的第一位置密碼回合的密文輸出當成附加的輸入給執行於第二區塊明文的第二位置密碼回合。除此,本應用的領域對現今對稱鑰匙密碼算法所應用的每一密碼演算及次運算提供更深層的討論。就具體指定執行標準而言,讀者可由美國聯邦信息處理標準公告46-3(Federal Information ProcessingStandards Publication;FIPS-46-3),1999年10月25日出版,得到數據加密標準及三重數據加密標準的詳細探討;以及美國聯邦信息處理標準公告197(FIPS-197),2001年11月26日出版,得到進階加密標準的詳細探討。上述提及的兩種標準是由美國國家標準暨技術局(National Institute ofStandards and Technology;NIST)所發布及主張,在此列為參考以供本發明所有意圖及目的的說明。除上述所提及的標準,教導(tutorial)、白皮書、套件(toolkit)以及資源文章均可透過網際網路http//csrc.nist.gov/在NIST的計算機資源安全中心(Computer Security Resource Center;CSRC)獲得。
熟悉該項技術者可察知有許多的應用程式能夠執行在可以執行密碼運算(例如加密及解密)的計算機系統。實際上,某些作業系統(例如微軟Window XP、Linux)提供直接加密/解密的服務於密碼基元(primitive)、密碼應用程式接口以及諸如此類的形式。然而,本發明人已觀察到現今計算機密碼技術在某些方面的缺陷,因此由圖1強調及討論這些缺陷。
圖1是現今計算機密碼應用的方塊圖100。方塊圖100描繪第一計算機工作站101連接區域網路(local area network)105,且區域網路105也連接第二計算機工作站102、網絡檔案儲存裝置(network file storage device)106、第一路由器(first router)107或其它接口形式到廣域網絡(wide areanetwork,WAN)110(例如網際網路)以及像是符合IEEE 802.11的無線網絡路由器(wireless network router)1 08,筆記型計算機(1aptop computer)104則是透過無線網絡109與無線路由器108成為接口。在廣域網絡110方面,第二路由器(second router)111提供接口給第三計算機工作站103。
如上概述,現今使用者在工作期間面臨許多次的計算機信息安全問題。例如在現今多任務(multi-tasking)作業系統的控制下,使用者工作站101可以同時執行多個任務(task)且每一任務要求密碼運算。使用者工作站101要求執行加密/解密應用程式(encryption/decryption application)112(無論是作業系統的一部分或是由作業系統所引動(invoke))以儲存區域檔案於網絡檔案儲存裝置106,在檔案儲存的同時,使用者可以傳送一加密訊息給在工作站102的第二使用者,其中工作站102也要求執行加密/解密應用程式112的一範例,而加密訊息可能是實時(例如實時訊息)或者是非實時(例如電子郵件)。此外,使用者可以透過廣域網絡110從工作站103存取或提供其金融數據(例如信用卡號、金融交易等)或者其它形式的機密數據。工作站103也可以代表是家庭辦公或其它遠程計算機103,其可以讓工作站101的使用者離開辦公室時用以存取區域網路105的任何共享資源101、102、106、107、108以及109。上述提及的每一活動均要求引動加密/解密應用程式112的相對範例,並且無線網絡109目前普遍地提供於咖啡店、機場、學校以及其它公眾場所,因而促使使用者筆記型計算機104不僅對其他使用者傳送/接收的訊息進行加密/解密,並且也對透過無線網絡109到無線路由器108的所有通訊進行加密及解密。
熟悉該項技術者可因此察知在工作站101-104中連同每一要求密碼運算的活動,須有一相對的要求以引動(invoke)加密/解密應用程式112的範例,因此計算機101-104在最近的將來有可能同時執行數以百計的密碼運算。
本發明人注意到上述計算機系統101-104由引動加密/解密應用程式112的至少一範例以執行密碼運算的方法的限制。例如透過程序規劃的軟體執行一指定功能就比透過硬體執行相同功能還慢。且每次執行加密/解密應用程式112時,正在計算機101-104執行的任務就必須暫緩執行,並且密碼運算的參數(例如明文、密文、模式以及鑰匙等)必須透過作業系統傳送給加密/解密應用程式112為完成密碼運算所引動的範例。並且因為密碼演算須在一指定的數據區塊引動許多回合的次運算,加密/解密應用程式112的執行引動許多計算機指令的執行而對整體系統的處理速度產生不利的影響。熟悉該項技術者可察知在微軟Outlook傳送少量加密電子郵件訊息的時間會相當於只傳送未加密電子郵件訊息的五倍。
此外,目前技術受限於作業系統介入的延遲。大部分的應用程式並無提供完整的鑰匙產生或加密/解密組件;其利用作業系統的組件或外掛應用程式以完成上述任務,此外作業系統因中斷及其它正在執行應用程式的請求而轉移其執行。
並且,本發明人注意到在現今計算機系統101-104的密碼運算相類似於微處理器尚未有浮點單元時的浮點數學運算。早期的浮點單元運算是由軟體所執行,因此執行的非常慢;同浮點運算,由軟體執行的密碼運算也是極慢。當浮點技術更進一步發展,浮點輔助處理器提供浮點指令以供執行,這些浮點輔助處理器執行浮點運算比軟體執行快了許多,但卻增加了系統的成本。相同地,密碼輔助處理器目前以附加在電路板或以外接裝置與主處理器透過並列埠或其它接口總線(例如USB)成為接口的形式存在,這些輔助處理器能使密碼運算的完成比由純軟體所執行的快了許多。但密碼共同處理器給系統配置增加了成本,需要額外的電源、而且降低了系統的可靠性。由於數據通路不像主微處理器那樣在同一模塊上,所以密碼共同處理器的執行更易被監聽。
因此本發明人確認將密碼硬體加入現今微處理器的需要,由此,要求密碼運算的應用程式可由一單獨、基元(atomic)的密碼指令指示微處理器執行密碼運算。本發明人也確認應以此功能限定作業系統介入及管理的要求,並且期望密碼指令可以使用於應用程式的權限層級(privilege level)以及密碼硬體可相稱(comport with)於現今微處理器的一般架構,並且密碼硬體及相關聯的密碼指令可支持兼容先前的作業系統及應用程式。更期望的是提供執行密碼運算的裝置及方法,其可阻止未授權的監視;其可支持及可程序化有關多密碼演算;其可支持核對及測試實體特定的密碼演算;其可允許使用者提供鑰匙也可自行產生鑰匙;其支持多數據區塊大小及鑰匙長度(key size);以及其提供可程序化區塊加密/解密模式如電子密碼本模式、密碼區塊連結模式、密碼反饋模式以及輸出反饋模式。
發明內容
本發明的目的在於提供一種執行密碼運算的裝置,其中包含一密碼指令電路,用以產生一密碼指令,該密碼指令由一計算裝置接收並將其當成執行於該計算裝置一指令流的一部分,其中該密碼指令指定複數個密碼運算其中之一及複數個數據區塊大小其中之一;以及一執行邏輯電路,操作耦合該密碼指令電路,並且配置用以執行被指定的密碼運算,該執行邏輯電路包含一區塊大小控制器,在被指定的密碼運算執行期間,配置用以使用被指定的數據區塊大小。
其中該密碼運算可以具有下列功能的某一種一加密運算,該加密運算包含複數個明文區塊的加密以產生相對複數個密文區塊;以及一解密運算,該解密運算包含複數個密文區塊的解密,以產生相對複數個明文區塊。
其中被指定數據區塊大小至少可以為下列可能變化的某一種128位、192位以及256位。
其中該區塊大小控制器配置用以轉譯由該密碼指令所參照的一控制字組中的一數據區塊大小欄位。
其中該密碼指令依據x86指令格式指定。
其中該密碼指令隱含參照該計算裝置的複數個緩存器。
其中該些緩存器至少可以為下列可能變化的某一種或其任意組合一第一緩存器,其中該第一緩存器的內容包含指向一第一內存地址的一第一指針,該第一內存地址依據欲完成的被指定的密碼運算指定內存內一第一位置以存取複數個輸入文字區塊,該些輸入文字區塊的大小依據被指定的數據區塊大小而設定;一第二緩存器,其中該第二緩存器的內容包含指向一第二內存地址的一第二指針,該第二內存地址指定內存內一第二位置以儲存相對複數個輸出文字區塊,相對該些輸出文字區塊依據複數個輸入文字區塊完成被指定的密碼運算而產生,其中該些輸入文字區塊及該些輸出文字區塊的大小依據被指定的數據區塊大小而設定;一第三緩存器,其中該第三緩存器的內容指示複數個輸入文字區塊內複數個區塊,其中該些輸入文字區塊的大小依據被指定數據區塊大小而設定;一第四緩存器,其中該第四緩存器的內容包含指向一第三內存地址的一第三指針,該第三內存地址指定內存內一第三位置以存取密碼鑰匙數據以用於完成被指定的密碼運算;一第五緩存器,其中該第五緩存器的內容包含指向一第四內存地址的一第四指針,該第四內存地址指定內存內一第四位置,該第四位置包含一初始向量位置,該初始向量位置的內容包含一初始向量或一初始向量等效物以用於完成被指定的密碼運算;以及一第六緩存器,其中該第六緩存器的內容包含指向一第五內存地址的一第五指針,該第五內存地址指定內存內一第五位置以存取一控制字組以用於完成被指定的密碼運算,其中該控制字組指定被指定的密碼運算的密碼參數,該控制字組包含一數據區塊大小欄位,配置用以指定在被指定的密碼運算執行期間,使用該數據區塊大小。
其中該執行邏輯電路包含一密碼單元,配置用以在每一輸入文字區塊執行複數個密碼回合以產生每一相對輸出文字區塊,其中被指定的數據區塊大小由一控制字組指定,且該控制字組提供給該密碼單元的該區塊大小控制器。
根據本發明,還提供一種執行密碼運算的裝置,其中包含一組件內的一密碼單元,該密碼單元配置用以執行複數個密碼運算其中之一,響應接收一指令流內一密碼指令,該密碼指令由一密碼指令電路所提供,而該密碼指令指定被指定的密碼運算,以及在執行被指定的密碼運算時指定欲使用的一區塊大小;以及一區塊大小邏輯電路,操作耦合於該密碼單元,用以在被指定的密碼運算期間,指定該組件來使用該區塊大小。
其中被指定的區塊大小至少可以為下列可能變化的某一種128位、192位以及256位。
其中該區塊大小邏輯電路配置用以轉譯該密碼指令所參照的一控制字組中的一數據區塊大小欄位。
其中該密碼指令依據x86指令格式所指定。
本發明提供的一種在一裝置執行密碼運算的方法,包含接收一密碼指令,該密碼指令在被指定的密碼運算執行期間指定使用一數據區塊大小;以及在執行被指定的密碼運算時,使用被指定的數據區塊大小。
其中該接收包含由一控制字組的一欄位指定被指定的數據區塊大小,其中該控制字組由該密碼指令所參照。
其中該使用包含執行被指定的密碼運算依據進階加密標準的規則。
其中該接收包含指定該密碼指令依據x86指令格式。
圖1為現今密碼應用的方塊圖;圖2為執行密碼運算技術的方塊圖;圖3為本發明實施例中執行密碼運算的微處理器裝置的方塊圖;圖4為本發明實施例中的基元(atomic)密碼指令實施例的方塊圖;圖5為圖4的基元密碼指令區塊加密模式欄位值的範例的表格;
圖6為本發明在x86兼容微處理器中的密碼單元的方塊圖;圖7為圖6的微處理器中指示密碼次運算的範例微指令欄位的方塊圖;圖8為圖7的加載微指令暫存欄位值格式的表格;圖9為圖7的儲存微指令暫存欄位值格式的表格;圖10為本發明指定密碼運算參數的控制字組格式範例的方塊圖;圖11為圖10的控制字組數據大小欄位值的表格;圖12為本發明的一較佳實施密碼單元的方塊圖;圖13為本發明執行有關進階加密標準(AES)算法密碼運算的一區塊加密邏輯電路實施例的方塊圖;圖14為本發明在一中斷事件期間保留密碼參數狀態的方法流程圖;以及圖15為本發明在一或多個中斷事件時,在複數個輸入數據區塊執行一密碼運算使用一使用者指定區塊大小的方法流程圖。
具體實施例方式
以下所述為應用公知技術而製造或使用文中特定應用及需求知本發明所列舉的例子。然而,實施例中所提及的各種修改是用以彰顯與公知技術不同處,此一般原則可應用於其它實施例中。因此,本發明並非限定於特定實施例。
鑑於上述所討論的密碼運算及現今計算機系統用以加/解密數據的相關技術,這些技術及其相關限制將在圖2中繼續探討,而接下來本發明也將根據圖3到圖15加以討論。本發明提供一種在現今計算機系統中執行密碼運算的裝置及方法,其透過主要機制展現優秀的性能特徵並且更滿足上述所提及的目標,像是限制作業系統的幹預、先前(legacy)架構的兼容性、算法及模式的可程序性、防止黑客入侵以及可測試性等等。
請參照圖2,方塊圖200描繪當今計算機系統中執行密碼運算的技術。方塊圖200包含一微處理器201,其擷取指令及從系統內存中一稱為應用內存(application memory)203存取應用程式相關的數據,而程控及應用內存203中數據的存取通常是由屬於系統內存保護範圍的作業系統軟體(operating system software)202所管理。如上所述,當一執行應用程式(例如電子郵件程序或檔案儲存程序)要求執行密碼運算時,此執行應用程式必須由指示(direct)微處理器201執行相當數量的指令以完成密碼運算。這些指令可能是執行應用程式本身的子程序,也可能是連結到此執行應用程式的外掛應用程式,或者是由作業系統202所提供的服務。姑且不論他們的關聯性,熟悉該項技術者可察知這些指令將駐於某些指定或分派的內存範圍。為達到討論目的,這些內存範圍顯示在應用內存203並且包含一密碼鑰匙產生應用程式(key generation application)204,其中密碼鑰匙產生應用程式204產生或接收一密碼鑰匙並且擴展此鑰匙成一使用於密碼回合運算中的鑰匙排程(key schedule)205。就多區塊加密運算而言,區塊加密應用程式(encryption application)206被引動(invoke)。加密應用程式206執行存取明文(plaintext)區塊210、鑰匙排程205以及密碼參數(cryptographicparameters)209的指令,其中密碼參數209進一步指示明確的密碼運算,如模式、鑰匙排程位置等,且在要求特定模式時,加密應用程式206也可存取初始向量(initialization vector)208。加密應用206執行其內的指令以產生對應的密文(ciphertext)區塊211。同理,區塊解密應用程式(decryptionapplication)207被引動以執行區塊解密運算。解密應用程式207執行存取密文區塊211、鑰匙排程205以及密碼參數209的指令,其中密碼參數209系進一步指示明確的密碼運算,並且在要求特定模式時,也可存取初始向量208。解密應用程式207執行其內的指令以產生對應的明文區塊210。
值得注意的是必須執行相當數量的指令以產生密碼鑰匙及加密或解密文字區塊。上述提及的FIPS說明書包含許多偽碼致能相當數量指令的範例,因此,熟悉該項技術者可察知一個簡單的加密運算將要求數以百計的指令,並且每一指令須經由微處理器201執行以完成所要求的密碼運算。並且,完成密碼運算的指令執行對正在執行的應用程式的主目的(例如檔案管理、實時訊息、電子郵件、遠程檔案存取、信用卡交易)而言一般屬多餘,結果讓使用者誤為目前執行的應用程式執行效率不佳。至於獨立或外掛的加密及解密應用程式206及207,這些應用程式206及207的引動及管理也必須服從作業系統202的其它請求,例如支持中斷、例外(exception)以及更惡化的問題的類似事件。並且計算機系統所要求每一同時的密碼運算,密碼鑰匙產生應用程式204、解密應用程式207及初始向量208的個別實例必須被配置在應用內存203,且預期由微處理器201所要求執行的同時密碼運算的數目也將隨時間而增加。
本發明人注意到目前計算機系統密碼技術的問題與限制,並且確認在微處理器中提供執行密碼運算的裝置及方法的需要。由此,本發明提供一微處理器及相關的方法,透過其內的密碼單元執行密碼運算,此密碼單元系藉由單一密碼指令的程序執行密碼運算。本發明現在將以圖3到圖12為參考加以討論。
請參照圖3,其為本發明一較佳實施例執行密碼運算的微處理器的方塊圖300。方塊圖300描繪一微處理器301,其透過內存總線(memory bus)319與系統內存(system memory)321耦合連接,且微處理器301包含從指令緩存器接收指令的一轉譯邏輯電路(translation logic)303。轉譯邏輯電路303包含邏輯電路、裝置或微碼(例如微指令或本機指令),或邏輯電路、裝置或微碼的組合,或用以轉譯指令成為指令相關序列的等效組件。這些在轉譯邏輯電路303中執行轉譯的組件可能與在微處理器301中執行其它功能的電路、微碼共享,而根據本應用的範圍,微碼是對照至少一個微指令的術語。一微指令(也可參照成一本機指令)系一單元層級執行的一指令,例如微指令是由精簡指令集計算機(reduced instruction set computer;RISC)微處理器直接執行。至於複雜指令集計算機(complex instruction setcomputer;CISC)微處理器,如x86兼容的微處理器,其x86指令被轉譯為關聯的微指令並且由複雜指令集計算機微處理器中的單元直接執行。轉譯邏輯電路303耦合微指令隊列(micro instruction queue)304,且此微指令隊列304具有複數個微指令信道(micro instruction entries)305、306。微指令由微指令隊列304提供給包含一緩存器組(register file)307的暫存階段邏輯電路,而此緩存器組307包含複數個緩存器(register)308-313,其內容在執行一指定的密碼運算前就已建立。緩存器308-313指到系統內存321中含有執行指定密碼運算數據的對應位置323-327。暫存階段耦合到加載邏輯電路(load logic)314,此加載邏輯電路314與取回數據以執行指定密碼運算的數據快取(data cache)315成接口,而此數據快取315藉由內存總線319耦合到系統內存321。執行邏輯電路(execution logic)328耦合到加載邏輯電路314並且執行由前面階段傳來的微指令所指定的運算。執行邏輯電路328包含邏輯電路、裝置或微碼(例如微指令或本機指令),或邏輯電路、裝置或微碼的組合,或用以執行由指令指定的運算的等效組件。這些在執行邏輯電路328中執行運算的組件可能與在微處理器301中執行其它功能的電路、微碼共享。執行邏輯電路包含密碼單元(cryptography unit)316,此密碼單元316接收從加載邏輯電路314被要求執行指定密碼運算的數據。微指令指示密碼單元316執行指定密碼運算於複數個輸入文字區塊(input text)326以產生相對應複數個輸出文字區塊(output text)327。密碼單元316包含邏輯電路、裝置或微碼(例如微指令或本機指令),或邏輯電路、裝置或微碼的組合,或用以執行密碼運算的等效組件。這些在密碼單元316中執行運算的組件可能與在微處理器301中執行其它功能的電路、微碼共享。在一實施例中,密碼單元316並列操作與在執行邏輯電路328內的其它執行單元(未繪出),例如整數單元、浮點數單元等。在本應用範圍一「單元」的實施包含邏輯電路、裝置或微碼(例如微指令或本機指令),或邏輯電路、裝置或微碼的組合,或用以執行指定功能或指定運算的等效組件。這些在特定單元中執行指定功能或指定運算的組件可能與在微處理器301中執行其它功能的電路、微碼共享。例如一實施例中,一整數單元包含邏輯電路、裝置或微碼(例如微指令或本機指令),或邏輯電路、裝置或微碼的組合,或用以執行整數指令的等效組件;一浮點單元包含邏輯電路、裝置或微碼(例如微指令或本機指令),或邏輯電路、裝置或微碼的組合,或用以執行浮點指令的等效組件;則在整數單元中執行整數指令的組件可能與在浮點單元中執行浮點指令的其它電路、微碼等共享。在一與x86架構兼容的實施例中,密碼單元316與整數單元、浮點單元、多媒體延伸集(Mathematic Matrix Extension,MMX)單元、串流延伸集(Streaming SIMD Extensions,SSE)單元並列操作。根據本應用範圍,當一實施例可以正確執行設計給x86微處理器執行的大部分應用程式時,此實施例系與x86架構兼容,一應用程式正確執行而得到其預期的結果。替代x86兼容實施例預期密碼單元並列操作與先前提及的x86執行單元的子集。密碼單元316耦合到儲存邏輯電路317並且提供相對應複數個輸出文字區塊327,而此儲存邏輯電路317也耦合到指定輸出文字數據327給系統內存321儲存的數據快取315。此數據快取315耦合到寫回邏輯電路(write back logic)318,而當所指定的密碼運算完成時,寫回邏輯電路318更新在緩存器組307中的緩存器308-313。在一實施例中,微指令與頻率信號電路(未繪出)同步經過每一個上述所提及的邏輯電路階段302、303、304、307、314、316-318以使運算可以同時執行而相似於在線執行運算。
在系統內存321中,一要求指定密碼運算的應用程式可以直接指示微處理器30 1透過單一密碼指令322(參照用以說明的密碼指令(XCRYPTinstruction)322)執行此運算。在一複雜指令集計算機微處理器實施例中,密碼指令322包含一指定密碼運算的微指令。在一實施例中,密碼指令322利用一存在指令集架構中的一空閒或未使用指令運算碼。在一x86架構兼容的實施例中,密碼指令322是一4位元組指令包含一x86重複前置(REPprefix)(如0xF3)、兩字節未使用x86運算碼(opcode)(如0x0FA7)、一字節有關於一指定區塊密碼模式以應用於執行一指定密碼運算。在一實施例中,根據本發明的密碼指令322可以在系統權限供給應用程式的層級執行,因而可以程序規劃於指令的程序流以提供給微處理器301不論是由應用程式直接或在作業系統320的控制下。因為僅有一密碼指令322指示微處理器301執行指定的密碼運算,而運算的完成對作業系統320應是顯而易見。
在操作中,作業系統320引動一應用程式以執行於微處理器301。如部分指令流於應用程式的執行期間,一密碼指令322從系統內存321提供給擷取邏輯電路(fetch logic)302。然而,在密碼指令322執行前,在程序流的指令指示微處理器301初始化緩存器308-312的內容以使他們指到系統內存321中的位置323-327,其包含一密碼控制字組(cryptographic controlword)323、一初始密碼鑰匙(initial cryptographic key)324或一鑰匙排程(keyschedule)324、一初始向量(initialization vector)325(如果需要)、運算用的輸入文字(input text)326、以及輸出文字(output text)327。在執行密碼指令322之前須先初始化緩存器308-312,因為密碼指令322與一附加於緩存器308-312的含有區塊計數的緩存器313,其中區塊計數在輸入文字326區塊加密或解密數據區塊的數目。因此轉譯邏輯電路303從擷取邏輯電路302取回密碼指令並且轉譯成一序列相對應的微指令以指示微處理器301執行指定的密碼運算。一第一複數個微指令305-306於相對應微指令序列中,指示密碼單元316從加載邏輯電路314加載數據,並且開始執行指定數目的密碼回合以產生相對應區塊的輸出數據,提供由數據快取315儲存於系統內存321中的輸出文字327給儲存邏輯電路317。一第二複數個微指令(未繪出)於相對應微指令序列中,指示在微處理器301中其它執行單元(未繪出)執行其它未完成指定密碼運算所需的運算,例如管理包含暫時結果及計數的非架構緩存器(未繪出)、更新輸出及輸入文字指針緩存器311-312、更新輸入文字區塊326的加密/解密初始向量指針緩存器(initialization vector pointer register)310(如果需要)、處理未處理的中斷等等。在一實施例中,緩存器308-313是架構性緩存器。架構性緩存器308-313是為實現特定微處理器的指令集架構(instruction set architecture,ISA)中所定義的一種緩存器。
在一實施例中,密碼單元316分成複數個階段因此允許相繼輸入文字區塊326的管線處理。
圖3的方塊圖300教示本發明所需的組件,因此省略許多在現今微處理器301中的邏輯以求圖標的簡潔。然而,熟悉該項技術者可察知現今特定實現的微處理器301包含許多階段及邏輯電路,在此為圖標的簡潔而將其部分合併。例如加載邏輯電路314在一快取線對準階段之後可以嵌入隨一快取接口階段的一地址產生階段。然而重要且應注意的是,在複數個輸入文字區塊326上的一完全密碼運算,是根據本發明由一單一指令322的運算對作業系統320的考慮系顯而易見,並且單一指令322的執行是由與微處理器301中其它執行單元並聯操作及協調的密碼單元316所完成。本發明密碼單元316在實施組態中的替代實施例類似前幾年微處理器中浮點單元的硬體。密碼單元316的操作及相關密碼指令322完全兼容先前作業系統及程序同時操作,並且也將在之後更加詳細的探討。
請參照圖4,其為本發明的一基元(atomic)密碼指令400實施例的方塊圖。密碼指令400包含一選項前置欄位(optional prefix field)401、一重複前置欄位(repeat prefix field)402、一運算碼欄位(opcode field)403、一區塊密碼模式(block cipher mode)欄位404。在一實施例中,欄位401-404的內容相稱於x86指令集架構,而其替代的實施例可考慮兼容於其它指令集架構。
操作上,選項前置欄位401在許多指令集架構中是用以致能(enable)或禁能(disable)部分主要微處理器的處理特徵,像是指示16位或32位的運算、指示處理或存取特定的內存區段等。重複前置欄位402是用以指示由密碼指令400所指定的密碼運算在複數個輸入數據區塊(如明文或密文)完成。重複前置欄位402也隱示一相稱微處理器利用其內複數個架構緩存器的內容當成指針指到系統內存中含有完成指定密碼運算所需參數的位置。如上所述,在一x86相容實施例中,重複前置欄位402的值是0xF3,並且根據x86架構協議,密碼指令與x86重複字符串指令,如REP.MOV,在形式上非常相似。例如當本發明由一x86兼容微處理器實施例執行時,重複前置欄位402參照一儲存在架構緩存器ECX中的區塊計數變量、一儲存在緩存器ESI中的來源地址指針(指到輸入數據以供密碼運算)以及一儲存在緩存器EDI中的目的地址指針(指到內存中的輸出數據)。在x86相容的一實施例中,本發明更擴展傳統重複字符串的指令的概念成為更可參照一儲存在緩存器EDX中的控制字組指針、一儲存在緩存器EBX中的密碼鑰匙指針以及一儲存在緩存器EAX中對一初始向量的指針(如果指定密碼模式要求)。
運算碼欄位403指定微處理器完成一密碼運算,此密碼運算由控制字組指標所隱示參照儲存在內存中的一控制字組。本發明認為運算碼值的較佳選擇是存在指令集架構中一空閒或未使用的運算碼值,由此在一相稱微處理器中保留與先前作業系統及應用軟體的兼容。例如如上所述,一x86兼容實施例的運算碼欄位403使用0x0FA7以指示執行指定的的密碼運算。區塊密碼模式欄位404指示特定的區塊密碼模式以供特定的密碼運算使用,並且將參照圖5加以探討。
圖5是圖4基元密碼運算指令的區塊密碼模式欄位範例值的表格500。值0xC8指示使用電子密碼本方式完成密碼運算;值0xD0指示使用密碼區塊連結方式完成密碼運算;值0xE0指示使用密碼反饋方式完成密碼運算;以及值0xE8指示使用輸出反饋方式完成密碼運算。區塊密碼模式欄位404其它所有的值系保留,而這些模式描述於上述所提及的FIPS的文件中。
請參照圖6,其為本發明一較佳實施例在一x86兼容微處理器600中較詳細的密碼單元617的實施例方塊圖。微處理器600包含擷取邏輯電路(fetch logic)601用以從內存(未繪出)擷取指令以供執行。擷取邏輯電路601耦合到轉譯邏輯電路(translation logic)602,而轉譯邏輯電路602包含邏輯電路、裝置或微碼(例如微指令或本機指令),或邏輯電路、裝置或微碼的組合,或用以轉譯指令成為相關序列微指令的等效組件。這些在轉譯邏輯電路602中執行轉譯的組件可能與在微處理器600中執行其它功能的電路、微碼共享。轉譯邏輯電路602包含一轉譯器(translator)603,而此轉譯器603耦合到一微碼只讀存儲器(microcode ROM)604。中斷邏輯電路(interrupt logic)626由總線634耦合到轉譯邏輯電路602。複數個軟體及硬體中斷信號627由指示未處理中斷給轉譯邏輯電路602的中斷邏輯電路626處理。轉譯邏輯電路602耦合到微處理器600相繼的階段包含一暫存階段(register stage)605、尋址階段(address stage)606、加載階段(load stage)607、執行階段(execution stage)608、儲存階段(store stage)618、以及寫回階段(write back stage)619。每一相繼階段包含邏輯電路以完成由擷取邏輯電路601所提供相關指令執行的特定功能,如先前在圖3的微處理器中所討論參照類似名稱的組件。描繪在圖6中x86兼容微處理器600的實施例是以在執行階段608中的執行邏輯電路(execution logic)632為特徵,其包含平行執行單元610、612、614、616、617。一整數單元610從微指令隊列609接收執行整數微指令;一浮點單元612從微指令隊列611接收執行浮點數微指令;一多媒體延伸集單元614從微指令隊列613接收執行多媒體延伸集微指令;一串流延伸集單元616從微指令隊列615接收執行串流延伸集微指令。在本發明的一x86實施例,一密碼單元617由一加載總線620、一暫停(stall)信號總線621以及一儲存總線622耦合到串流延伸集單元616。密碼單元617共享串流延伸集單元的微指令隊列615。一替代實施例可將密碼單元617獨立並聯操作像是單元610、612以及614。整數單元610耦合到一x86旗標(EFLAGS)緩存器624,此旗標緩存器包含一X位625,而此X位625的狀態配置用以指示密碼運算是否正在處理。在一實施例中,此X位625是一x86旗標緩存器624的第30位。此外,整數單元610存取一機器特殊緩存器(machine specific register)628以評估一E位629的狀態,而此E位629的狀態指示密碼單元617是否位於微處理器600。整數單元610也存取一D位631於一特徵控制緩存器(feature controlregister)630,以致能或禁能密碼單元617。如圖3的微處理器301實施例,圖6的微處理器600以必要組件為特徵教示本發明一x86兼容實施例的內容,並且為求附圖簡潔而合併或省略微處理器的其它組件。熟悉該項技術者可察覺用以完全接口的其它組件,像是數據快取、總線接口單元、頻率產生以及分配邏輯電路等均未繪出。
在操作中,指令是由擷取邏輯電路601從內存(未繪出)擷取並且與一頻率信號(未繪出)同步提供給轉譯邏輯電路602。轉譯邏輯電路602轉譯每個指令成為一相對應序列的微指令,其與頻率信號同步持續地提供給微處理器600的後續階段605-608、618、619。在一序列微指令中的每一個微指令指示一個次運算的執行,而次運算被要求完成由一相對指令所指定的一整體運算,例如尋址階段606產生一地址、暫存階段605從指定緩存器(未繪出)恢復的兩操作數在整數單元內相加、由儲存階段618儲存執行單元610、612、614、616、617其中的一所產生的結果於內存等。根據轉譯中的指令,轉譯邏輯電路602利用轉譯器603直接產生一序列的微指令,或是從微碼只讀存儲器604擷取此序列,或是利用轉譯器603直接產生此序列的部份並且從微碼只讀存儲器604擷取此序列剩下的部分。微指令透過微處理器600的相繼階段605-608、618、619持續地與頻率同步進行。當微指令到達執行階段608,執行邏輯電路632連同其操作數(在暫存階段605從緩存器所恢復,或在尋址階段606由邏輯電路所產生,或由加載邏輯電路從數據快取所恢復),由放置微指令在一對應的微指令隊列609、611、613、615而將其依指定路線傳送給一指定執行單元610、612、614、616、617。執行單元610、612、614、616、617執行微指令並提供結果給儲存階段618。在一實施例,微指令包含欄位指示其是否可以與其它運算並列執行。
響應先前所述的擷取一個密碼指令,轉譯邏輯電路602產生相關微指令,其指示在微處理器600後繼階段605-608,618,619中的邏輯電路執行指定的密碼運算。據此,一第一複數個相關微指令直接依路徑傳送至密碼單元617並且指示密碼單元617由加載總線620加載數據,或加載一區塊的輸入數據並且開始執行指定數目的密碼回合以產生一區塊的輸出數據,或由儲存階段618透過儲存總線622將所產生的區塊輸出數據儲存於內存。一第二複數個相關微指令依其路徑傳送至其它實行單元610、612、614、616以執行其它次運算,其等次運算是完成指定密碼運算的必需,例如E位629的測試、致能D位631、設定X位625以指示密碼操作進行中、在暫存階段605更新暫存(例如,計數緩存器、輸入文字指針緩存器、輸出文字指針緩存器)、由中斷邏輯電路626所指示的中斷信號627的處理等。相關微指令是用以提供指定密碼運算的最佳執行於多區塊輸入數據,其由與密碼單元微指令序列中的整數單元微指令成為接口,因此整數運算可與密碼單元運算並行完成。微指令系包含於相關微指令以允許或並從待處理中斷信號627恢復。因為所有對密碼參數的指針與數據提供於x86架構緩存器,當執行中斷時,其狀態被保存,並且當從中斷返回,這些狀態被恢復。當從中斷返回,微指令測試X位625的狀態以決定是否一密碼運算在進行。如果是,當中斷發生時,此運算重複於處理中的特別輸入數據區塊。相關微指令用以允許在處理中斷信號627之前,更新在一序列輸入文字區塊上的一序列密碼操作的指針緩存器及中間的結果。
請參照圖7,其為圖6的微處理器中指示密碼次運算的範例微指令700欄位的方塊圖。微指令700包含一微運算碼欄位(micro opcode field)701,一數據緩存器欄位(data register field)702,以及一緩存器欄位(register field)703。微運算碼欄位701指定執行一特定次運算並且指定邏輯電路於微處理器600中至少一階段以執行次運算。微運算碼欄位701的指定值指定根據本發明的一密碼單元執行指示的微指令。在一實施例,有兩個指定的值。一第一值加載(XLOAD)指定數據從一內存位置恢復,而其地址由數據緩存器欄位702內容所指稱的一架構緩存器的內容所指定。這數據被加載到由緩存器欄位703內容所具體指定密碼單元內的一緩存器。這恢復的數據(例如密碼鑰匙數據、控制字組、輸入文字數據、初始向量)提供給密碼單元。微運算碼欄位701的第二值儲存(XSTOR)指出由密碼單元所產生的數據儲存在一記憶位置,而其地址由數據緩存器欄位702內容所指稱的一架構緩存器的內容所指定。在密碼單元一多階段實施例,緩存器欄位703的內容指示複數個輸出數據區塊的一儲存於內存。輸出數據區塊由數據域位(datafield)704內的密碼單元所提供以供儲存邏輯電路存取。根據本發明密碼單元所執行加載和儲存微指令更具體的細節,將參照圖8及圖9加以討論。
請參照圖8,其為圖7的加載微指令格式700緩存器欄位703值的表格。如前所述,一序列微指令產生響應一密碼指令的轉譯。此序列微指令包含一第一複數個微指令,其由密碼單元指示執行;以及一第二複數個微指令,其由微處理器中密碼單元以外的至少一個並列功能單元所執行。第二複數個微指令指示次運算,例如更新計數器、暫時儲存器、架構緩存器、測試並設定狀態位於機器特殊緩存器等。第一複數個微指令提供鑰匙數據、密碼參數以及輸入數據給密碼單元並且指示密碼單元產生鑰匙排程(或加載從內存恢復的鑰匙排程)以加載並加密(或解密)輸入文字數據,並且儲存輸出文字數據。一加載微指令提供給密碼單元以加載控制字組數據、加載一密碼鑰匙或鑰匙排程、加載初始向量數據、加載輸入文字數據並指示密碼單元開始一指定密碼運算。一加載微指令在緩存器欄位703的值0b010指示密碼單元加載一控制字組到其內部控制字組緩存器。當這微指令進行管線處理,在暫存階段的一架構控制字組指針緩存器存取內存中儲存控制字組的地址。地址邏輯電路轉譯此地址成為一實體地址以供內存存取。加載邏輯電路從快取擷取控制字組,然後傳給密碼單元。同樣地,緩存器欄位值0b010指示密碼單元加載由數據域位704所提供的輸入文字數據,並且在加載之後開始指定的密碼運算。類似控制字組,輸入數據由儲存在架構緩存器中所儲存的一緩存器存取。值0b010指示加載由數據域位704所提供的輸入數據給內部緩存器輸入-1。加載到輸入-1緩存器的數據不是輸入文字數據(當管線處理時)就是一初始向量。值0b110及0b111分別指示密碼單元加載一密碼鑰匙或使用者產生鑰匙排程中一鑰匙的較低及較高位。根據本應用,使用者定義成執行一特定功能或特定運算,而使用者可具體化成一應用程式、一作業系統、一機器或者一個人。因此,在一實施例中,使用者產生鑰匙排程是由一應用程式所產生,而在另一實施例中,使用者產生鑰匙排程是由一個人所產生。
在一實施例中,緩存器欄位值0b100及0b101考慮一密碼單元有兩階段,由此,可以管線處理相繼的輸入文字區塊數據。因此對管線處理相繼的輸入資料區塊而言,一第一加載微指令執行提供一第一區塊的輸入文字數據給輸入-1,接著執行一第二加載微指令提供一第二區塊的輸入文字數據給輸入-0,並且指示密碼單元開始執行指定的密碼運算。當一使用者產生的鑰匙排程被用以執行密碼運算時,對應使用者產生的鑰匙排程中鑰匙數量的加載微指令依設定路徑傳送給密碼單元,此密碼單元指示加載此鑰匙排程中每一回合鑰匙。
在加載微指令中緩存器欄位703其它所有的值系保留。
請參照圖9,其為圖7的儲存微指令格式700緩存器欄位703的值的表格。一儲存微指令發布(issue)給密碼單元,以指示其提供所產生的輸出文字區塊給儲存邏輯電路,儲存於內存中由數據緩存器欄位702所提供的地址。據此,本發明的轉譯邏輯電路為一特定的輸出文字區塊所發布的一儲存微指令在為一其所對應輸入文字區塊所發布的一儲存微指令之後。緩存器欄位703的值0b100指示密碼單元提供關聯其內部的輸出-0緩存器給儲存邏輯儲存。輸出-0的內容與輸入文字區塊提供給輸入-0系相關聯。同理,參照緩存器欄位值0b101的內部輸出-1緩存器與輸入文字數據提供給輸入-1相關聯。據此,跟隨在鑰匙及控制字組數據加載之後,複數個輸入文字區塊可以被管線輸送,透過密碼單元依序發布密碼微指令加載.輸入-1、載入.輸入-0(載入.輸入-0也指示密碼單元開始密碼運算)、儲存.輸出-1、儲存.輸出-0、載入.輸入-1、載入.輸入-0(開始下兩個輸入文字區塊運算)等等。
請參照圖10,其為本發明指定密碼運算參數的範例控制字組1000格式的方塊圖。控制字組1000由使用者程序設計於內存,並且在執行密碼運算之前,控制字組1000的指針提供給相稱微處理器中的一架構緩存器。據此,當部分序列的微指令對應到一密碼指令時,一加載微指令被發布以指示微處理器去讀取包含指針的架構緩存器、從內存(快取)恢復控制字組1000以及加載控制字組1000到密碼單元的內部控制字組緩存器。控制字組1000包含一保留(RSVD)欄位1001、一數據區塊大小(DSIZE)欄位1002、一鑰匙大小(KSIZE)欄位1003、一加密/解密(E/D)欄位1004、一中間結果(IRSLT)欄位1005、一鑰匙產生(KGEN)欄位1006、一演算(ALG)欄位1007以及一回合計算(RCNT)欄位1008。
保留欄位1001所有的值保留。數據區塊大小欄位1002的內容指示執行加密及解密時使用輸入及輸出文字區塊的大小。在一實施例中,數據區塊大小欄位1002不是指示一128位區塊、一192位區塊,就是指示一256位區塊。鑰匙大小欄位1003的內容指示一用以完成加密或解密的密碼鑰匙的大小。在一實施例中,鑰匙大小欄位1003不是指示一128位鑰匙、一192位鑰匙,就是指示一256位鑰匙。加密/解密欄位1004指出密碼運算是加密運算或指出密碼運算是解密運算。鑰匙產生欄位1006指示在內存中是使用者產生的鑰匙排程或在內存中是單一密碼鑰匙;如果為單一鑰匙時,微指令發布給密碼單元與密碼鑰匙以指示單元根據演算欄位1007的內容所具體指定的密碼演算以擴展鑰匙成為一鑰匙排程。在一實施例,演算欄位1007的特定值具體指示數據加密標準算法、三重數據加密標準算法或者進階加密標準算法如先前所述的討論。替代實施例可考慮其它密碼算法,例如Rijndael Cipher、Twofish Cipher等。回合計算欄位1008的內容指示一數量的密碼回合,其根據具體指示的算法完成於每一輸入文字區塊。雖然上述提及的標準指示每一輸入文字區塊固定前置數量的密碼回合,但回合計算欄位1008允許一程序設計者從標準指示修改回合的數量。在一實施例中,程序設計者可指定每一區塊從0-15回合。最後,中間結果欄位1005指示是否一輸入文字區塊的加密/解密,是根據演算欄位1007所指定的密碼算法,以回合計算欄位1008所指定回合的數量執行,或者加密/解密是根據演算欄位1007所指定的密碼算法,以回合計算欄位1008所指定回合的數量執行,而其最終回合的執行代表一中間結果而不是一最終結果。熟悉該項技術者可察知許多密碼算法除了最終回合的次運算之外是執行相同的次運算於每一回合。因此程序設計中間結果欄位1005提供中間結果而不是最後結果,由此,允許程序設計者可核對算法實現的中間的步驟。例如獲得增加的中間值以核對算法實行,假設,執行一回合的加密於一文字區塊,然後執行兩回合於相同文字區塊,然後三回合等。提供可程序化回合及中間值結果的功能可讓使用者檢查密碼執行、除錯以及達到改變鑰匙結構及回合計數。
請參照圖11,其為圖10中控制字組1000的數據區塊大小欄位1002範例值的表格1100。數據區塊大小欄位1002的000值指示一計算裝置依據本發明執行使用一128位區塊大小的輸入以及輸出區塊的密碼運算,其中這些區塊由內存提供,且分別由一輸入指針緩存器及一輸出指針緩存器的內容所指到。數據區塊大小欄位1002的001值指示此計算裝置執行使用一192位區塊大小的輸入以及輸出區塊的密碼運算。數據區塊大小欄位1002的010值指示此計算裝置執行使用一256位區塊大小的輸入以及輸出區塊的密碼運算。數據區塊大小欄位1002的所有其餘值保留。
請參照圖12,其為本發明的一密碼單元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中一加載微指令內容所指定。密碼單元1200也包含區塊密碼邏輯電路1201,此區塊密碼邏輯電路1201耦合到所有的緩存器1203-1208以及也耦合到密碼鑰匙隨機存取內存(RAM)1202。區塊碼邏輯電路1201提供一暫停信號(stall signal)1213並且也提供區塊結果給一第一輸出(輸出-0)緩存器1209以及一第二輸出(輸出-1)緩存器1210。輸出緩存器1209-1210透過一儲存總線1212將內容依指定路徑傳送給在一相稱微處理器中的相繼階段。在一實施例中,微指令緩存器1203是32位大小;緩存器1204、1207及1208是128位大小;以及緩存器1205-1206及1209-1210系256位大小。
在操作中,密碼微指令與數據一起連續提供給微指令緩存器1203,其中數據係指定給控制字組緩存器1204、或輸入緩存器1205-1206的一、或鑰匙緩存器1207-1208的一。在參照圖8及圖9討論的實施例中,控制字組由一加載微指令加載到控制字組緩存器1204。因此密碼鑰匙或鑰匙排程經由連續加載微指令加載。當一128位密碼鑰匙加載時,一加載微指令因此提供給指定的鑰匙-0緩存器1207。當一大於128位密碼鑰匙加載時,一加載微指令因此提供給指定的鑰匙-0緩存器1207,並且連同一加載微指令提供給指定的鑰匙-1緩存器1208。當一使用者產生的鑰匙排程加載時,連續加載微指令提供給指定鑰匙-0緩存器1207。鑰匙排程中的每一鑰匙被加載且依序被放置在鑰匙隨機存取內存1202以供其相對應的密碼回合使用。隨此,輸入文字數據(如果沒有要求一初始向量)加載到輸入-1緩存器1206,如果要求一初始向量,則經由一加載微指令加載到輸入-1緩存器1206。對輸入-0緩存器1205的一加載微指令指示密碼單元以加載輸入文字數據給輸入-0緩存器1205,並且開始在輸入-0緩存器1205內的輸入文字數據執行密碼回合,其根據控制字組緩存器1204的內容所提供的參數使用在輸入-1或在兩輸入緩存器1205-1206(當輸入數據系管線處理)中的初始向量。根據收到指定輸入-0緩存器1205的加載微指令,區塊密碼邏輯電路1201開始執行由控制字組內容所指定的密碼運算。當單一密碼鑰匙要求擴展,區塊密碼邏輯電路1201產生鑰匙排程中的每一鑰匙並將以儲存在鑰匙隨機存取內存1202。姑且不論是否由區塊密碼邏輯電路1201產生一鑰匙排程或者是從內存中加載鑰匙排程,第一回合的鑰匙是快取儲存於區塊密碼邏輯1201中以使得第一區塊密碼回合可以不用存取鑰匙隨機存取內存1202而處理。一但初始化後,區塊密碼邏輯電路1201繼續執行指定的密碼運算於至少一個輸入文字區塊直到運算完成;其連續從鑰匙隨機存取內存1202擷取回合鑰匙如所應用的密碼算法所要求。密碼單元1200執行一指定區塊密碼運算於指定的輸入文字區塊,而相繼的輸入文字區塊透過相繼對應的加載及儲存微指令加密/解密。當一儲存微指令執行時,如果指定輸出數據(例如輸出-0或輸出-1)尚未完全產生,則區塊密碼邏輯電路1201顯示暫停信號1213。一但輸出數據已產生且放置於相對應的輸出緩存器1209-1210時,緩存器1209-1210的內容接著傳送到儲存總線1212。
請參照圖13,其為本發明執行有關進階加密標準算法密碼運算的一區塊密碼邏輯電路1300實施例的方塊圖。區塊密碼邏輯電路1300包含一回合引擎(round engine)1320,此回合引擎1320透過總線1311-1314及總線1316-1318耦合到一回合引擎控制器(round engine controller)1310。回合引擎控制器1310包含一區塊大小控制器(block size controller)1330,並且存取一微指令緩存器(micro instruction register)1301、控制字組緩存器(controlword register)1302、第一鑰匙(鑰匙-0)緩存器1303以及第二鑰匙(鑰匙-1)緩存器1304以存取鑰匙數據、微指令以及所指示密碼運算的參數。輸入緩存器1305-1306的內容提供給回合引擎1320並且回合引擎1320提供相對應輸出文字給輸出緩存器1307-1308。輸出緩存器1307-1308透過總線1316-1317也耦合到回合引擎控制器1310,以致能回合引擎控制器存取每一相繼密碼回合的結果,而此結果透過NEXTIN總線1318提供給回合引擎1320下一密碼回合。鑰匙隨機存取內存(未繪出)中的密碼鑰匙系透過鑰匙隨機存取內存總線1315存取。加密/解密總線(ENC/DEC bus)1311的信號指示回合引擎利用次運算執行不是加密(例如S-Box)就是解密(例如反向S-Box)。回合計算總線(RNDCON bus)1312的內容指示回合引擎1320執行不是一第一進階加密標準回合、一中間進階加密標準回合就是一最後進階加密標準回合。響應指示一密碼鑰匙自動擴展的一控制字組內一鑰匙產生欄位內容,此鑰匙排程控制器1330顯示鑰匙產生總線(GENKEY bus)1314的信號以指示此回合引擎1320根據鑰匙總線1313所提供的鑰匙產生一鑰匙排程。鑰匙總線1313亦用以提供每一回合鑰匙給回合引擎1320在其對應的回合執行時。響應經由控制字組緩存器1302提供給回合引擎控制器1310的一控制字組內一數據區塊大小欄位內容,此區塊大小控制器(block size controller)1330設定區塊大小總線(BLKSIZE bus)1319的值以指示加密以及解密運算期間所使用輸入及輸出文字區塊大小。在一實施例中,區塊大小總線1319的值指示128位區塊、192位區塊或256位區塊。
回合引擎1320包含第一鑰匙互斥或(XOR)邏輯電路1321,此第一鑰匙互斥或邏輯電路1321耦合到一第一緩存器(暫存-0)1322,此第一緩存器1322耦合到S-Box邏輯電路1323,此S-Box邏輯電路1323耦合到移列(Shift Row)邏輯電路1324,此移列邏輯電路1324耦合到一第二緩存器(暫存-1)1325,此第二緩存器1325耦合到混欄(Mix Colum)邏輯電路1326,此混欄邏輯電路1326耦合到一第三緩存器(暫存-2)1327。第一鑰匙互斥或邏輯電路1321、S-Box邏輯電路1323、移列邏輯電路1324以及混欄邏輯電路1326依據區塊大小總線1319的值配置用以執行次運算於輸入文字數據,像是具體於先前討論的進階加密標準FIPS標準。混欄邏輯電路1326在中間回合期間於要求使用藉由鑰匙總線1313所提供的回合鑰匙時,附加配置以執行進階加密標準互斥或功能於輸入數據。第一鑰匙互斥或邏輯電路1321、S-Box邏輯電路1323、移列邏輯電路1324以及混欄邏輯電路1326在由加密/解密總線(ENC/DEC bus)1311的狀態指示時,也配置用以執行其相對的反向進階加密標準次運算於解密期間。熟悉該項技術者可察知中間回合數據是根據控制字組緩存器1302內容所指定的具體區塊加密模式而回饋給回合引擎1320。初始向量數據(如果要求)透過NEXTIN總線1318提供給回合引擎1320。
在圖13所示的實施例中,回合引擎分為兩階段一第一階段介於第一緩存器(暫存-0)1322與第二緩存器(暫存-1)1325以及一第二階段介於第二緩存器(暫存-1)1325與第三緩存器(暫存-2)1327。中間回合數據同步一頻率信號(未繪出)於階段間管線處理。當一區塊的輸入數據完成密碼運算,其關聯的輸出數據放置於相對應輸出緩存器1307-1308。一儲存微指令的執行使得所指定的輸出緩存器1307-1308的內容提供至儲存總線(未繪出)。
請參照圖14,其為本發明一實施例在一中斷事件期間保留密碼參數的狀態的方法流程圖。當一微處理器依據本發明執行一指令流時,方法流程從步驟1402開始。上述的指令流程並不須包含一像此描述的密碼指令。然後方法流程處理至決定步驟1404。
在決定步驟1404,決定是否由一指令流(中斷處理程序)處理一要求改變指令流的中斷事件(例如可屏蔽式中斷、非屏蔽式中斷、分頁錯誤(pagefault)、工作切換(task switch)等)。若是,方法流程處理至步驟1406;若否,方法流程跳至步驟1404,其指令執行繼續直到一中斷事件產生。
在步驟1406,因為一中斷事件已經發生,在傳送控制程序至一對應中斷處理程序之前,中斷邏輯電路依據本發明指示清除一旗標緩存器中的X位。X位的清除確保從中斷處理程序返回時,如果一區塊密碼運算進行中,其指示排除至少一個中斷事件,並指示控制字組數據以及鑰匙數據,必須在輸入指針緩存器的內容目前所指的輸入數據區塊繼續區塊密碼運算之前重新加載。然後處理至步驟1408。
在步驟1408,所有架構緩存器包含本發明區塊密碼運算執行的相關指針及計數均儲存於內存。熟悉該項技術者可知架構緩存器的儲存是在轉移控制權給中斷處例程序之前完成於目前數據計算裝置。因此本發明一實施例中探究目前數據架構,以提供中斷事件執行輸出量的透明度。在緩存器儲存之後,方法流程處理至步驟1410。
在步驟1410,程序流程轉移至中斷處理程序。因此方法流程處理至步驟1412。
在步驟1412,此方法流程完成結束。熟悉該項技術者可察知圖14的方法依據中斷處理程序的返回是從步驟1402再開始。
請參照圖15,其為本發明一較佳實施例中在至少一個中斷事件時,在複數個輸入數據區塊執行一密碼運算並使用一使用者指定區塊大小的方法流程圖1500。為求圖標的簡潔,省略依據區塊密碼模式執行指定密碼運算的流程,其中區塊密碼模式要求區塊間初始向量等效物的更新以及儲存(例如輸出反饋模式、密碼反饋模式)。然而本發明的方法包含其它的區塊密碼模式。
方法流程從步驟1502開始,其中依據本發明的一密碼指令指示一密碼運算開始執行。上述的密碼指令執行可以第一執行或由於一中斷事件的中斷執行而跟隨第一執行之後執行,由此在中斷處理程序執行完成後,將程控權轉移回密碼指令。流程處理至步驟1504。
在步驟1504,加載內存中的一數據區塊並且開始一指定密碼運算,其中上述的區塊數據是由本發明實施例的一輸入指針緩存器的內容所指定。在一設定實施例中,用以加載數據區塊的區塊大小是128位。因此,當使用區塊大小並非為128位時,在發布密碼指令前,須要求指令執行以清除X位。在一x86兼容實施例中,其利用一x86旗標緩存器中的第30位,此X位可以由依序執行一PUSHFD指令與一POPFD指令而清除。然而熟悉該項技術者可得知在另一實施例中,其它用以清除X位的指令。在一實施例中,指定的密碼運算是依據進階加密標準規則開始執行。然後方法流程處理至決定步驟1506。
在決定步驟1506,決定是否設定一旗標緩存器中的一X位。如果設定X位,其指示目前依據本發明加載一密碼單元的控制字組及鑰匙排程是有效(valid)。如果清除X位,其指示目前加載上述的密碼單元的控制字組及鑰匙排程是無效(invalid)。如上述參照圖14的討論,當一中斷事件產生時,X位清除。如果X位設定,方法流程處理至步驟1524;如果X位清除,方法流程處理至步驟1508。
在步驟1508,因為一清除的X位是指示不是一中斷事件產生就是一新的控制字組及/或鑰匙數據加載,因此從內存加載一控制字組。在一實施例中,加載控制字組停止密碼單元執行上述的步驟1504所提及的密碼運算。在此實施例中的步驟1504開始一密碼運算,考慮到使用電子密碼本模式的多128位區塊的最佳化,其由假設使用目前加載的控制字組及鑰匙數據,以及假設在128位輸入區塊執行電子密碼本模式是最為普遍使用的區塊密碼模式。根據上述,在決定步驟1506檢查X位的狀態重置前,加載目前輸入數據區塊並且開始密碼運算。然後方法流程處理至決定步驟1514。
在決定步驟1514,評估在步驟1508所擷取(retrieve)控制字組中的數據區塊大小欄位以決定在指定密碼運算執行期間所使用的輸入及輸出文字區塊的大小。如果資料區塊大小欄位的值指定192位區塊,則方法流程處理至步驟1510。如果資料區塊大小欄位的值指定128位區塊,則方法流程處理至步驟1516。如果資料區塊大小欄位的值指定256位區塊,則方法流程處理至步驟1518。
在步驟1510,本發明的區塊密碼邏輯電路中的區塊大小總線設定用以指示其回合引擎執行192位數據區塊的密碼運算。然後方法流程處理至步驟1512。
在步驟1512,從內存加載密碼鑰匙數據。依據控制字組中的鑰匙產生欄位及鑰匙大小欄位的狀態,鑰匙數據不是全部從內存加載(例如一使用者產生鑰匙排程),就是加載一初始鑰匙並擴展成一鑰匙排程。然後方法流程處理至步驟1522。
在步驟1516,因為區塊密碼邏輯電路中的區塊大小總線預設為128位數據區塊,因此必須參照如上述的步驟1512所述的加載/擴展密碼鑰匙數據。然後方法流程處理至步驟1522。
在步驟1518,本發明的區塊密碼邏輯電路中的區塊大小總線是設定用以指示其回合引擎執行256位數據區塊的密碼運算。然後方法流程處理至步驟1520。
在步驟1520,參照上述的步驟1512所述的加載/擴展密碼鑰匙數據。然後方法流程處理至步驟1522。
在步驟1518,輸入區塊參照步驟1504依據控制字組中數據區塊大小欄位的值所指定的區塊大小再次加載,且依據新加載的控制字組以及鑰匙排程開始密碼運算。然後方法流程處理至步驟1524。
在步驟1524,產生大小對應加載的輸入區塊的一輸出區塊,對加密而言,輸入區塊是一明文區塊而輸出區塊是一對應的密文區塊;對解密而言,輸入區塊是一密文區塊而輸出區塊是一對應的明文區塊。然後方法流程處理至步驟1526。
在步驟1526,將產生的輸出區塊儲存於內存。然後方法流程處理至步驟1528。
在步驟1528,輸入及輸出區塊指針緩存器的內容依據控制字組中數據區塊大小欄位的值而修改以指到下一輸入及輸出數據區塊。另外,修改區塊計數緩存器的內容以指示目前輸入數據區塊完成的密碼運算。在參照圖15所討論的一實施例,區塊計數緩存器是遞減。然而,熟悉該項技術者可在另一實施例中,思量處理及測試區塊計數緩存器的內容以考慮輸入文字區塊的管線執行。然後方法流程處理至步驟1530。
在決定步驟1530,決定是否繼續運算一輸入數據區塊。在用以說明具特徵的實施例中,評估區塊計數器是否等於零而決定。如果沒有剩下的區塊可供運算,則方法流程處理至步驟1534;如果剩下區塊可供運算,則方法流程處理至步驟1532。
在步驟1532,加載下一輸入數據區塊,如輸入指針緩存器的內容所指。然後方法流程處理至步驟1524。
在步驟1530,此方法流程完成結束。
雖然本發明及其目的、特徵與優點已詳細描述,但其它實施例也應包含於本發明。例如本發明曾根據兼容x86架構的實施例討論長度,然而這些討論已提供此類的方式,因為x86架構容易理解且提供足夠的方式以教示本發明。然而本發明包含相稱於其它指令集架構的實施例,例如PowerPC、MIPS及諸如此類等,此外還有全新的指令集架構。
本發明還包含計算機系統中微處理器外其它組件的密碼運算的執行,例如,根據本發明的密碼指令可以容易地被應用在一密碼單元的一實施例,此實施例並非如微處理器部分相同的整合電路,其執行方式如部分計算機系統。本發明的如此實施例是為了併入圍繞在微處理器的晶片組(如北橋、南僑),或當一處理器用於執行密碼運算時,其密碼指令由主要微處理器移轉(hand off)給此處理器。本發明可應用於內嵌控制器、工業控制器、信號處理器、陣列處理機以及任何相似處理數據的裝置。本發明也包含一實施例僅含有執行密碼運算所必需的組件。如此的內嵌裝置不僅執行密碼運算,也確實提供低成本、低電源,例如通信系統中的加密/解密處理器。為求簡明,本發明將這些替代的處理組件參照成上述的處理器。
此外,雖然本發明提及128位區塊,但是許多不同區塊的大小可以透過改變緩存器的大小而被應用,其中緩存器傳送輸入數據、輸出數據、鑰匙以及控制字組。
並且,雖然本應用顯著以數據加密標準、三重數據加密標準以及進階加密鰾準算法為其特徵,但本發明也包含較少人知的區塊密碼算法,例如MARS密碼、Rijndael密碼、Twofish密碼、Blowfish密碼、Serpent密碼以及RC6密碼。足以理解的是,本發明提供在微處理器中用於區塊密碼的裝置及支持的算法,其基元區塊密碼運算可透過單一指令的執行而引動。
並且,雖然本發明在此以區塊密碼演算及其相關技術以執行區塊密碼功能為特徵,但是除了區塊密碼的外其它形式的密碼也包含於本發明應用範圍內。可足以觀察的是,提供一單一指令,由此,使用者可指示一相稱的微處理器執行一密碼運算,例如加密或解密,其中微處理器包含一密碼單元,此密碼單元依指示完成指令所指定的密碼功能。
並且,在此所討論的回合引擎提供一兩階裝置可管線處理兩區塊的輸入數據,但其它實施例也可考慮多於兩階段裝置。階段的分配對支持更多輸入數據區塊的管線處理,將發展協調相稱微處理器中其它階段的分配。
最後,雖然本發明具體討論支持複數個算法的一單獨密碼單元,但是本發明也提供理解在一相稱微處理器中與其它執行單元並列操作耦合的多密碼單元,而每一多密碼單元是配置用以執行一具體指定的密碼演算,例如一第一單元是配置用以執行進階加密標準算法、一第二單元是配置用以執行數據加密標準算法等。
以上所述僅為本發明的較佳實施例而已,並非用以限定本發明的申請專利範圍;凡其它為脫離本發明所揭示的精神下所完成的等效改變或修飾,均應包含在本發明的申請專利範圍內。
權利要求
1.一種執行密碼運算的裝置,包含一密碼指令電路,用以產生一密碼指令,該密碼指令由一計算裝置接收並將其當成執行於該計算裝置一指令流的一部分,其中該密碼指令指定複數個密碼運算其中之一及複數個數據區塊大小其中之一;以及一執行邏輯電路,操作耦合該密碼指令電路,並且配置用以執行被指定的密碼運算,該執行邏輯電路包含一區塊大小控制器,在被指定的密碼運算執行期間,配置用以使用被指定的數據區塊大小。
2.如權利要求1所述的裝置,其特徵在於,其中該密碼運算可以具有下列功能的某一種一加密運算,該加密運算包含複數個明文區塊的加密以產生相對複數個密文區塊;以及一解密運算,該解密運算包含複數個密文區塊的解密,以產生相對複數個明文區塊。
3.如權利要求1所述的裝置,其特徵在於,其中被指定數據區塊大小至少可以為下列可能變化的某一種128位、192位以及256位。
4.如權利要求1所述的裝置,其特徵在於,其中該區塊大小控制器配置用以轉譯由該密碼指令所參照的一控制字組中的一數據區塊大小欄位。
5.如權利要求1所述的裝置,其特徵在於,其中該密碼指令依據x86指令格式指定。
6.如權利要求1所述的裝置,其特徵在於,其中該密碼指令隱含參照該計算裝置的複數個緩存器。
7.如權利要求6所述的裝置,其特徵在於,其中該些緩存器至少可以為下列可能變化的某一種或其任意組合一第一緩存器,其中該第一緩存器的內容包含指向一第一內存地址的一第一指針,該第一內存地址依據欲完成的被指定的密碼運算指定內存內一第一位置以存取複數個輸入文字區塊,該些輸入文字區塊的大小依據被指定的數據區塊大小而設定;一第二緩存器,其中該第二緩存器的內容包含指向一第二內存地址的一第二指針,該第二內存地址指定內存內一第二位置以儲存相對複數個輸出文字區塊,相對該些輸出文字區塊依據複數個輸入文字區塊完成被指定的密碼運算而產生,其中該些輸入文字區塊及該些輸出文字區塊的大小依據被指定的數據區塊大小而設定;一第三緩存器,其中該第三緩存器的內容指示複數個輸入文字區塊內複數個區塊,其中該些輸入文字區塊的大小依據被指定數據區塊大小而設定;一第四緩存器,其中該第四緩存器的內容包含指向一第三內存地址的一第三指針,該第三內存地址指定內存內一第三位置以存取密碼鑰匙數據以用於完成被指定的密碼運算;一第五緩存器,其中該第五緩存器的內容包含指向一第四內存地址的一第四指針,該第四內存地址指定內存內一第四位置,該第四位置包含一初始向量位置,該初始向量位置的內容包含一初始向量或一初始向量等效物以用於完成被指定的密碼運算;以及一第六緩存器,其中該第六緩存器的內容包含指向一第五內存地址的一第五指針,該第五內存地址指定內存內一第五位置以存取一控制字組以用於完成被指定的密碼運算,其中該控制字組指定被指定的密碼運算的密碼參數,該控制字組包含一數據區塊大小欄位,配置用以指定在被指定的密碼運算執行期間,使用該數據區塊大小。
8.如權利要求1所述的執行密碼運算的裝置,其特徵在於,其中該執行邏輯電路包含一密碼單元,配置用以在每一輸入文字區塊執行複數個密碼回合以產生每一相對輸出文字區塊,其中被指定的數據區塊大小由一控制字組指定,且該控制字組提供給該密碼單元的該區塊大小控制器。
9.一種執行密碼運算的裝置,包含一組件內的一密碼單元,該密碼單元配置用以執行複數個密碼運算其中之一,響應接收一指令流內一密碼指令,該密碼指令由一密碼指令電路所提供,而該密碼指令指定被指定的密碼運算,以及在執行被指定的密碼運算時指定欲使用的一區塊大小;以及一區塊大小邏輯電路,操作耦合於該密碼單元,用以在被指定的密碼運算期間,指定該組件來使用該區塊大小。
10.如權利要求9所述的裝置,其特徵在於,其中被指定的區塊大小至少可以為下列可能變化的某一種128位、192位以及256位。
11.如權利要求9所述的裝置,其特徵在於,其中該區塊大小邏輯電路配置用以轉譯該密碼指令所參照的一控制字組中的一數據區塊大小欄位。
12.如權利要求9所述的裝置,其特徵在於,其中該密碼指令依據x86指令格式所指定。
13.一種在一裝置執行密碼運算的方法,包含接收一密碼指令,該密碼指令在被指定的密碼運算執行期間指定使用一數據區塊大小;以及在執行被指定的密碼運算時,使用被指定的數據區塊大小。
14.如權利要求13所述的方法,其特徵在於,其中該接收包含由一控制字組的一欄位指定被指定的數據區塊大小,其中該控制字組由該密碼指令所參照。
15.如權利要求13所述的方法,其特徵在於,其中該使用包含執行被指定的密碼運算依據進階加密標準的規則。
16.如權利要求13所述的方法,其特徵在於,其中該接收包含指定該密碼指令依據x86指令格式。
全文摘要
本發明提供一種在處理器內複數個輸入數據區塊執行密碼運算的裝置及方法,其中上述輸入數據區塊的大小可程序化。在一實施例中,提供一種執行密碼運算的裝置,而此裝置包含一密碼指令電路,用以產生一密碼指令,以及一執行邏輯電路。上述密碼指令由一計算裝置接收並將其當成一執行於此計算裝置指令流的一部分,並且此密碼指令指定複數個密碼運算其中之一以及複數個數據區塊大小其中之一。上述執行邏輯電路操作耦合於上述密碼指令電路,此執行邏輯電路執行上述密碼運算,並且包含一區塊大小控制器,而此區塊大小控制器在被指定的密碼運算執行期間使用被指定的數據區塊大小。
文檔編號H04L9/06GK1658548SQ200510062490
公開日2005年8月24日 申請日期2005年3月29日 優先權日2004年4月16日
發明者G·葛蘭亨利, A·克裡斯賓 湯瑪斯, 泰瑞帕德斯 申請人:威盛電子股份有限公司