TWI303936B - Apparatus and method for generating a cryptographic key schedule in a microprocessor - Google Patents

Apparatus and method for generating a cryptographic key schedule in a microprocessor Download PDF

Info

Publication number
TWI303936B
TWI303936B TW094107078A TW94107078A TWI303936B TW I303936 B TWI303936 B TW I303936B TW 094107078 A TW094107078 A TW 094107078A TW 94107078 A TW94107078 A TW 94107078A TW I303936 B TWI303936 B TW I303936B
Authority
TW
Taiwan
Prior art keywords
key
cryptographic
password
block
register
Prior art date
Application number
TW094107078A
Other languages
English (en)
Other versions
TW200536331A (en
Inventor
Glenn Henry G
A Crispin Thomas
a elliott Timothy
Parks Terry
Original Assignee
Via Tech Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Tech Inc filed Critical Via Tech Inc
Publication of TW200536331A publication Critical patent/TW200536331A/zh
Application granted granted Critical
Publication of TWI303936B publication Critical patent/TWI303936B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/12Transmitting and receiving encryption devices synchronised or initially set up in a particular manner
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/125Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Description

1303936 九、發明說明: 【相關參考專利】
本案引用美國專利申請案第10/826632號之優先權,申請日為2004年 4 月 16 日,名稱為「MICROPROCESSOR APPARATUS AND METHOD FOR GENERAT 輸入 G CRYPTOGRAPHIC 鑰匙 SIZE」。
本申請案係主張下列美國專利之臨時申請案的優先權: 序列號 申請曰 標題 60/506971 9/29/2003 MICROPROCESSOR APPARATUS AND METHOD FOR OPTIMIZING BLOCK CIPHER CRYPTOGRAPHIC FUNCTIONS 60/507001 9/29/2003 APPARATUS AND METHOD FOR PERFORMING OPERATING SYSTEM TRANSPARENT BLOCK CIPHER CRYPTOGRAPHIC FUNCTIONS 60/506978 9/29/2003 MICROPROCESSOR APPARATUS AND METHOD FOR EMPLOYING CONFIGURABLE BLOCK CIPHER CRYPTOGRAPHIC ALGORITHMS 60/507004 9/29/2003 APPARATUS AND METHOD FOR PROVIDING 1303936
USER-GENERATED LEY SCHEDULE IN A MICROPROCESSOR CRYPTOGRAPHIC ENGINE 60/507002 i 9/29/2003 MICROPROCESSOR APPARATUS AND METHOD FOR PROVIDING CONFIGURABLE CRYPTOGRAPHIC BLOCK CIPHER ROUND RESULTS 60/506991 9/29/2003 MICROPROCESSOR APPARATUS AND METHOD FOR ENABLING CONFIGURABLE DATA BLOCK SIZE IN A CRYPTOGRAPHIC ENGINE 60/507003 9/29/2003 APPARATUS FOR ACCELERATING BLOCK CIPHER CRYPTOGRAPHIC FUNCTIONS IN A MICROPROCESSOR 60/464394 4/18/2003 ADVANCED CRYPTOGRAPHY UNIT 60/506979 9/29/2003 MICROPROCESSOR APPARATUS AND METHOD 1303936
FOR PROVIDING CONFIGURABLE CRYPTOGRAPHIC IN SIZE 60/508927 10/3/2003 APPARATUS AND METHOD FOR PERFORMING OPERATING SYSTEM TRANSPARENT CIPHER BLOCK CHAINING MODE CRYPTOGRAPHIC FUNCTIONS 60/508679 10/3/2003 APPARATUS AND METHOD FOR PERFORMING OPERATING SYSTEM TRANSPARENT CIPHER BLOCK FEEDBACK MODE CRYPTOGRAPHIC FUNCTIONS 60/508076 10/3/2003 APPARATUS AND METHOD FOR PERFORMING OPERATING SYSTEM TRANSPARENT INPUT BLOCK FEEDBACK MODE CRYPTOGRAPHIC FUNCTIONS 60/508604 10/3/2003 APPARATUS AND METHOD FOR GENERATING A CRYPTOGRAPHIC KEY SCHEDULE IN A MICROPROCESSOR 1303936 本申請案係下列正在審理中的美國專利臨時申 請案中的一部份,該些申請案具有相同的受讓人和 發明人。
序列號 申請曰 標題 10/674057 9/29/2003 MICROPROCESSOR APPARATUS AND METHOD FOR PERFORMING BLOCK CIPHER CRYPTOGRAPHIC FUNCTIONS 10/800983 3/15/2004 APPARATUS AND METHOD FOR PROVIDING USER-GENERATED KEY SCHEDULE IN A MICROPROCESSOR CRYPTOGRAPHIC ENGINE 本申請案涉及下列正在審理中的美國專利臨時申請 案,該些申請案具有相同的受讓人和發明人。
序列號 申請曰 標題 10/730167 12/5/2003 MICROPROCESSOR APPARATUS AND METHOD FOR PERFORMING BLOCK CIPHER CRYPTOGRAPHIC FUNCTIONS 10800768 3/15/2004 MICROPROCESSOR APPARATUS AND METHOD FOR OPTIMIZING BLOCK CIPHER CRYPTOGRAPHIC FUNCTIONS 10/727973 12/4/2003 APPARATUS AND METHOD FOR PERFORMING TRANSPARENT 1303936
BLOCK CIPHER CRYPTOGRAPHIC FUNCTIONS 10/800938 3/15/2004 MICROPROCESSOR APPARATUS AND METHOD FOR EMPLOYING CONFIGURABLE BLOCK CIPHER CRYPTOGRAPHIC ALGORITHMS 10/800983 3/15/2004 APPARATUS AND METHOD FOR PROVIDING USER-GENERATED KEY SCHEDULE IN A MICROPROCESSOR CRYPTOGRAPHIC ENGINE 10/826435 4/16/2004 MICROPROCESSOR APPARATUS AND METHOD FOR PROVIDING CONFIGURABLE CRYPTOGRAPHIC BLOCK CIPHER ROUND RESULTS 10/826433 4/16/2004 MICROPROCESSOR APPARATUS AND METHOD FOR PROVIDING CONFIGURABLE CRYPTOGRAPHIC KEY SIZE 10/826475 4/16/2004 APPARATUS AND METHOD FOR PERFORMNG TRANSPARENT CIPHER BLOCK CHAINING MODE CRYPTOGRAPHIC FUNCTIONS 10/826814 4/16/2004 APPARATUS AND METHOD FOR 1303936
PERFORMING TRANSPARENT CIPHER BLOCK FEEDBACK MODE CRYPTOGRAPHIC FUNCTIONS 10/826428 4/16/2004 APPARATUS AND METHOD FOR PERFORMING TRANSPARENT OUTPUT FEEDBACK MODE CRYPTOGRAPHIC FUNCTIONS 10/826745 4/16/2004 APPARATUS AND METHOD FOR GENERATING A CRYPTOGRAPHIC KEY SCHEDULE IN A MICROPROCESSOR 【發明所屬之技術領域】 本發明係有關於微電子領域,特別是有關於一種在一 1算裝置中執行密碼運算之裝置及方法,其中上述之計算 裝置擴展一已提供之密碼鑰匙成一對應之鑰匙排程以執 行密碼運算。 【先前技術】 早期之電腦系統係獨立操作於其他電腦系統之外,據 ^上執行於此電腦系統中之應用程式所需之輸入資料,若 存於此電腦系統,就是由應用程式設計人員在執行時 :,而應用私式執行結果及產生之輸出資料,豆形式一 般為列印輸出之紙張,或者是寫人磁帶、磁碟或^此電腦 1303936 系統其他類型之儲存裝置之檔案。輪出檔案可當成之後在 相同電腦系統中執行之應用程式之輪入槽/案,戒者,當輸 ^資料先前被儲存成檔案於可移除或可輸送之儲存裝置 ¥,其也可以提供給不同但相容之電腦系統之應用程式使 用。在這些早期的系統,保護機密資訊的需求係公認,並 且在其他資訊安全措施中,密碼應用程式被發展及應用以 防止機密資訊未被授權揭露。這些密竭程式一般係以加密 或解孩、的方式在儲存裝置中儲存成檔案的輸出資料。 其後/又幾年,使用者開始發現藉由網路將電腦連接可 以提供資訊共享存取的好處,因此網路架構、操作系統、 貧料傳輸協定等均發展成不僅支援存取共享資料的 j ’更是其顯著的特徵。例如··使用者的電腦工作站可 以在不同工作站或網路檔案伺服器存取檔案,或者 ,網路獲得㈣及其他資訊,或者對數以百計的 ίίϋΐϊ子訊息(如電子郵件),或者與經銷“電Ξ 他公共場合利用無線網路進 呆護=資严及傳輸免於未授權揭露的需I: 急速的成長,而在某些特定的狀況下,使用者二^已 情況也大大的增加。目前新聞頭條通常隼ΐϊ 二ΐ?、惡作劇以及信用卡詐騙等係公眾戶4; 的刖幾名。而當這些從各方面侵 τ所關主 的錯誤到有預謀的網路攻擊,負主 ,由無心 嚴厲的執行以及公共教育節目匕的=早;^新法律、 ΐίΐΐ電腦貢訊的浪潮。昔曰是政府、金融it 軍方所專注關切的間諜,現在對人而 =構、 的問題;間諜讀取他們的電子郵件=重要 取他們檢查帳戶的交易。在商業 1303936 .=ίί];的社團法人目前應用其資源卓越的部分以 貧訊安全領域提供我們技術及装置以加密資料 其僅此由心疋的個體加以解碼,此為所知的宓 (cryptography)。當特別應用於保護儲存或傳輸於電& = 間,的資訊時,密碼最常被應用於轉換機密資料(稱為“明 文,plaintext或cleartext)成為難以理解的形式(稱 “密文” ;ciphertext)。轉變明文成為密文的轉換過程稱為 加密(encryption; enciphering; ciphering),而轉變密 φ 文回明文的反向轉換過程稱為解密(decryptic)& deciphering; inverse ciphering)。 ’ 在密碼學的領域中,幾種程序及協定已發展到允許使 用者不須具備許多知識及努力即可執行密碼運算,並且針 對這些使用者使其可以傳輸或者提供其加密形式的資訊 產品給不同的使用者。連同加密資訊,傳送者通常會提供 接收者一“密碼鑰匙(cryptographic key)”以使接收者可 以解碼所加密的資訊,因此使得接收者能夠恢復或者獲得 存取未加密的原始資訊。熟悉該項技藝者可察知這些程序 φ 及協定一般係以暗語(password)保護、數學演算法以及 應用程式特別設計的形式加以實現以加密及解密機密資 訊。 幾種類型的演算法目前使用於加密及解密資料。演算 法根據上述一類型(例如一種RSA演算法’公開錄匙密碼 演算法)利用兩密碼鑰匙(一公開鑰匙(public key)與一私 人鑰匙(private key)),加密或解密資料。根據一些公開 鑰匙演算法,接收者的公開鑰匙係被傳送者用來加密傳送 給接收者的資料,因為有一數學關係存在於使用者的公開 鑰匙與私人鑰匙之間,因此接收者必須利用其私人鑰匙解 12 1303936 以,此資料。雖然這頬型的密 法廇泛使 S今:但其加密及解密的運算卻是極慢^於iii ϋ:一第—類型❾演算法’如所知的對稱鑰匙演算法, =同量等級的資料安全並且可以較快執行。這些演算法 稱為對稱鑰匙演算法’因為他們斜加密及解訊使 一密碼餘匙。在公開區段’目前有三種盛行單—鑰匙 (smgle-key)密碼演算法:資料加密標準(Data Encryption Standard; DES)演算法、三重資料加密標 準(Triple DES)演算法以及進階加密標準(Advanced
Encryption Standard; AES)演算法。因為這些演算法 保護機密資料的強度,美國政府機關目前正使用這些演算 法,但熟悉該項技藝者預期這些演算法中至少一個演算 法,在不久的將來會變成商業及非官方交易的標準。根據 所有這些對稱鑰匙演算法,明文及密文被劃分在指定大小 中的區塊以進行加密及解密。例如··進階加密標準執行密 碼運算於128位元區塊的大小’並且使用128位元、192 位元以及256位元的密碼鑰匙長度。其他對稱鑰匙演算 法,例如RijndaelCipher也允許192位元以及256位 元的資料區塊。據此,就一區塊加密運算而言,一 1 位元的明文訊息加密成8個12 8位元的區塊。 所有對稱鑰匙演异法利用相同形式的次運算以加密 一區塊的明文,旅真根據許多更常被應用的對稱鑰匙演算 法,一初始密碼鑰匙被擴展成複數個鑰匙(例如:一“鑰匙 排程”),每一鑰匙係用以當成次運算的一對應密碼“回合,, 且執行於明文區塊。例如:鑰匙排程的第一鑰匙係用以執 行次運算的第一密鴆回合於明文區塊,第一回合的結果係 用以當成第二回合的輸入,其中弟二回合利用錄匙排程的 第二i匙以產生第 >結果,並且一具體指定數量後來的回 合執行產生一最終成合結果’即密文本身。根據進階如密 13 1303936 標準演算法,在每一回合的次運算係參照於文獻中的次位 元(或 S-box)、移列(ShiftRows)、混欄(MixColums)以 及加入回合鍵(AddRoundKey)等。一區塊密文的解密係 類似的處理並伴隨例外的執行在每一回合,且回合的最終 結果係一區塊的明文,上述之例外係指密文輸入反加密及 反次運算執行(例如:inverse MixColumns、inverse ShiftRows) 〇 資料加密標準及三重資料加密標準利用不同特定的 次運算,但是這些次運算係類似進階加密標準的次運算, 因為其利用相似的方式以轉換一區塊的明文成為一區塊 的密文。 執行密碼運算於多連續的文字區塊,所有對稱鍮匙演 算法利用相同類別的模式,這些模式包含電子密碼本 (electronic code book; ECB)模式、密碼區塊鏈結 (cipher block chaining; CBC)模式、密碼反饋模式 (cipher feedback; CFB)以及輸出反饋模式(output feedback; OFB)。這些模式中有些利用一附加初始化向 量於執行次運算期間,有些使用執行於第一區塊明文之第 一位置密碼回合的密文輸出當成附加的輸入給執行於第 二區塊明文之第二位置密碼回合。除此,本應用的領域對 現今對稱鑰匙密碼演算法所應用的每一密碼演算及次運 算提供更深層的討論。就具體指定執行標準而言,讀者可 由美國聯邦資訊處理標準公告46_3 (Federal Information Processing Standards Publication; FIPS-46-3),1999年10月25日出版,得到資料加密 標準及三重資料加密標準的詳細探討;以及美國聯邦資訊 處理標準公告197 (FIPS-197),2001年11月26曰出 版,得到進階加密標準的詳細探討。上述提及的兩種標準 係由美國國家標準暨技術局(National Institute of 14 1303936
Standards and Technology; NIST)所發布及主張,在 此列為參考以供本發明所有意圖及目的之說明。除上述所 提及的標準,教導(tutorial)、白皮書、套件(toolkit)以及 資源文章均可透過網際網路http://csrc.nist.gov/在 NIST的電腦資源安全中心(Computer Security Resource Center; CSRC)獲得。 熟悉該項技藝者可察知有許多的應用程式能夠執行 在可以執行密碼運算(例如:加密及解密)的電腦系統。實 際上,某些操作系統(例如:微軟Window XP、Linux) I 提供直接加密/解密的服務於密碼基元(primitive)、密碼 應用程式介面以及諸如此類的形式。然而,本發明人已觀 察到現今電腦密碼技術在某些方面缺陷,因此藉由第一圖 強調及討論這些缺陷。 第一圖係現今電腦密碼應用之方塊圖100。方塊圖 100描緣第一電腦工作站101連接區域網路(local area network) 105,且區域網路105也連接第二電腦工作站 102、網路播案儲存裝置(network file storage device) 106、第一路由器(first router) 107或其他介面形式到 | 廣域網路(wide area network,WAN) 110 (例如:網際 網路)以及像是符合IEEE 802.11的無線網路路由器 (wireless network router) 108,筆記型電腦(laptop computer) 104則是透過無線網路i〇9與無線路由器 108成為介面。在廣域網路11〇方面,第二路由器 (second router) 111提供介面給第三電腦工作站1〇3。 如上概述,現今的使用者在工作期間面臨許多次的電 腦資訊安全問題。例如:在現今多工(multi-tasking)操 作系統的控制下,使用者工作站101可以同時執行多個 任務(task)且每一任務要求密碼運算。使用者工作站101 15 1303936 要求執行加遂/解密應用程式(encrypti〇n/ decrypti〇n application). 112 (無論是操作系統的一部分或是由操作 系統所引動(invoke))以儲存區域檔案於網路檔案儲存裝 置106,在槽案儲存的同時,使用者可以傳送一加密訊息 給在工作站1Q2的第二使用者,其中工作站1Q2也要求 112 ^ 疋p t(例如· p日才訊息)或者是非即時(例如:電子郵件 此外,使用者y以透過廣域網路110從工作站10 或提供其金融資料(例如:信用卡號、金融交 他形式的機密資料。工作站1G3也可以代表^ 或其他遠端電腦103,其可以讓工作站1〇1的使用 開辦公室時用以存取區域網路105的任何妓古 1〇1、1〇2、1〇6、1〇7、108以及1〇9。上述提以 一活動均要求引動加密/解密應用程式112的相 例,並且無線網路109目前普遍地提供於咖啡店、犯 學校以及其他公眾場所,因而促使使用者筆記型n 不僅對其他使用者傳送/接收的訊息進行加密/解宓, 且也對透過無線網路109到無線路由器1〇8的^ ^ 進行加密及解密。 | β遇况 熟悉該項技藝者可因此察知在工作站1〇1_1〇4 同每一要求密碼運算的活動,須有一相對的要求以 (invoke)加密/解密應用程式112的範例, = 1〇H04在最近的將來有可能同時執行數以百 = 運算。 山内 本發明人注意到上述電腦系統丄〇卜1〇4夢 密/解密應用程式112的至少一範例以執行密碼管 方法的限制。例如:透過程式規劃的軟體執行—:处 就比透過硬體執行相同功能還慢。且每次執行加C = 應用程式112時’正在電腦101_104執行的任務 16 1303936 暫緩執行,並且密碼運算的參數(例如:明文、密文、模 式以及鑰匙等)必須透過操作系統傳送給加密/解密應用 程式112為完成密碼運算所引動的範例。並且因為密碼 演算須在一指定的資料區塊引動許多回合的次運算,加密 /解密應用程式112的執行引動許多電腦指令的執行而 對整體系統的處理速度產生不利的影響。熟悉該項技藝者 可察知在微軟outlook傳送少量加密電子郵件訊息的時 間會相當於只傳送未加密電子郵件訊息的五倍。 此外,目前的技術受限於操作系統介入的延遲。大部 分的應用程式並無提供完整的鑰匙產生或加密/解密元 件;其利用操作系統的元件或外掛應用程式以完成上述之 任務,此外操作系統因中斷及其他正在執行應用程式的請 求而轉移其執行。 並且,本發明人注意到在現今電腦系統101-104的 密碼運算係相類似於微處理器尚未有浮點單元時的浮點 數學運算。早期的浮點單元運算係由軟體所執行,因此執 行的非常慢;同浮點運算,由軟體執行的密碼運算也是極 慢。當浮點技術更進一步發展,浮點輔助處理器提供浮點 指令以供執行,這些浮點輔助處理器執行浮點運算比軟體 執行快了許多,但卻增加了系統的成本。相同地,密碼輔 助處理器目前以附加在電路板或以外接裝置與主處理器 透過並列槔或其他介面匯流排(例如:USB)成為介面的形 式存在,這些輔助處理器能使密碼運算的完成比由純軟體 所執行的快了許多。但密碼共同處理器給系統配備增加了 成本,需要額外的電源、而且降低了系統之可靠性。由於 資料通路不像主微處理器那樣在同一個模組上,所以密碼 共同處理器的執行乃更易被監聽。 因此本發明人確認將密碼硬體加入現今微處理器的 17 1303936 需要,藉此,要求密碼運算的應用程式可藉由一單獨、基 元(atomic)的密碼指令指示微處理器執行密碼運算。本發 明人也確認應以此功能限定操作系統介入及管理的要 求,並且期望密碼指令可以使用於應用程式的權限層級 (privilege level)以及密碼硬體可相稱(comport with)於 現今微處理器的一般架構,並且密碼硬體及相關聯的密碼 指令可支援相容先前的操作系統及應用程式。更期望的是 提供執行密碼運算的裝置及方法,其可阻止未授權的監 視;其可支援及可程式化有關多密碼演算;其可支援核對 及測試實體特定的密碼演算;其可允許使用者提供密碼鑰 * 匙也可自行產密碼鑰匙;其支援多資料區塊大小及多密碼 錄匙長度(key size);以及其提供可程式化區塊加密/解密 模式如電子密碼本模式、密碼區塊鏈結模式、密碼反饋模 式以及輸出反镇模式。 【發明内容】 本發明係用以解決上述習知技藝中的問題及缺點。本 發明提供一較佳的技術以執行密碼運算於一微處理器中。 • 在一實施例中,提供一執行密碼運算之裝置,而此裝 置係包含:一密碼指令電路,其用以產生一密碼指令;一 鑰匙產生邏輯電路;及一執行邏輯電路。密碼指令係由一 計算裝置接收並將其當成一執行於此計算裝置之指令流 之一部分,且此密碼指令指定複數個密碼運算其中之一及 在被指定之密碼運算執行期間指定一密碼输匙擴展成一 對應之鑰匙排程以供使用。鑰匙產生邏輯電路係操作耦合 於密碼指令電路,而此鑰匙產生邏輯電路指示計算裝置擴 展密碼鑰匙成對應之鑰匙排程。執行邏輯電路係耦合於鑰 匙產生邏輯電路,此執行邏輯電路擴展密碼鑰匙成對應之 18 1303936 输匙排程。 在一實施例中,提供一種執行密碼運算之裝置,此裝 置包含一元件内之一密碼單元以及一鑰匙產生邏輯電 路。密碼單元執行複數個密碼運算其中之一,回應接收一 指令流内之一密碼指令,其中此密碼指令指定被指定之密 碼運算,且密碼指令在執行被指定之密碼運算時亦指定一 密碼鑰匙擴展成一對應之鑰匙排程以供使用。鑰匙產生邏 輯電路係操作柄合於密碼單元並指示元件執行密碼指令 且擴展密碼鑰匙成對應之鑰匙排程。 • 在一實施例中,提供一種在一裝置執行密碼運算之方 法,此方法包含接收一密碼指令,此密碼指令在複數個密 碼運算其中之一執行期間指定一密碼鑰匙擴展成一對應 之鑰匙排程以供使用;及擴展密碼鑰匙成對應之鑰匙排 程。 【實施方式】 以下所述為應用習知技術而製造或使用文中特定應 用及需求之本發明所列舉之例子。然而,實施例中所提及 • 之各種修改係用以彰顯與習知技術之不同處,此一般原則 可應用於其他實施例中。因此,本發明並非限定於特定實 施例。 鑑於上述所討論的密碼運算及現今電腦系統用以加/ 解密資料的相關技術,這些技術及其相關限制將在第二圖 中繼續探討,而接下來本發明也將根據第三圖到第十六圖 加以討論。本發明提供一種在現今電腦系統中執行密碼運 算的裝置及方法,其透過主要機制展現優秀的性能特徵並 且更滿足上述所提及的目標,像是限制操作系統的干預、 先前(legacy)架構的相容性、演算法及模式的可程式性、 19 1303936 密碼鑰匙排程的自行產生、防止駭客入侵以及玎測試性等 等。 請參照第二圖,方塊圖200描繪當今電腦系統中執 行密碼運算的技術。方塊圖200包含一微處理器201 ’ 其掏取指令及從系統記憶體中一稱為應用0己饭、體 (application memory) 203存取應用程式相關的資料’ 而程式控制及應用記憶體203中資料的存取通常是由屬 於系統記憶體保護範圍的操作系統軟體202所管理。如 上所述,當一執行應用程式(例如:電子郵件稃式或槽案 φ 儲存程式)要求執行密碼運算時,此執行應用程式必須藉 由指示(direct)微處理器201執行相當數量的指令以完成 密碼運算。這些指令可能是執行應用程式本身的子程式’ 也可能是連結到此執行應用程式的外掛應用程式’或者是 由操作系統202所提供的服務。姑且不論他們的關聯性, 熟悉該項技藝者可察知這些指令將駐於某些指定或分派 的記憶體範圍。為達討論目的,這些記憶體範圍顯示在應 用記憶體203並且包含一密碼鑰匙產生應用程式(key generation application) 204,其中密碼输匙產生應用 程式204產生或接收一密碼鑰匙並且擴展此鑰匙成一使 _ 用於密碼回合運算中2的餘匙排程(key schedule) 205。就多區塊加密運算而言,區塊加密應用程式 (encryption application) 206 被弓| 動(invoke) 〇 加密應 用程式206執行存取明文(plaintext)區塊2 10、鑰匙排 程 205 以及密碼參數(cryptographic parameters) 209 的指令,其中密碼參數209係進一步指示明確的密碼運 算’如模式、鑰匙排程位置等,且在要求特定模式時,加 後應用私式206也可存取初始向量(inkiaHzati〇n vector) 208。加密應用206執行其内的指令以產生對應 的密文(ciphertext)區塊211。同理,區塊解密應用程式 1303936 (decryption application) 207被引動以執行區塊解密 運算。解密應用程式207執行存取密文區塊211、鑰匙 排程205以及密碼參數209的指令,其中密碼參數209 係進一步指示明確的密碼運算,並且在要求特定模式時, 也可存取初始向量208。解密應用程式207執行其内的 指令以產生對應的明文區塊210。 值得注意的是必須執行相當數量的指令以產生密碼 鑰匙及加密或解密文字區塊。上述提及的FIPS說明書包 含許多虛擬碼致能相當數量指令之範例,因此,熟悉該項 φ 技藝者可察知一個簡單的加密運算將要求數以百計的指 令,並且每一指令須經由微處理器201執行以完成所要 求的密碼運算。並且,完成密碼運算的指令執行對正在執 行的應用程式之主目的(例如:檔案管理、即時訊息、電 子郵件、遠端檔案存取、信用卡交易)而言一般係屬多餘, 結果讓使用者誤為目前執行的應用程式執行效率不佳。至 於獨立或外掛的加密及解密應用程式206及207,這些 應用程式206及207的引動及管理也必須服從操作系統 202的其他請求,例如支援中斷、例外(exception)以及 更惡化問題的類似事件。並且電腦系統所要求每一同時的 ® 密碼運算,密碼鑰匙產生應用程式204、解密應用程式 207及初始向量208的個別實例必須被配置在應用記憶 體203,且預期由微處理器201所要求執行之同時密碼 運算的數目也將隨時間而增加。 本發明人注意到目前電腦系統密碼技術的問題與限 制,並且確認在微處理器中提供執行密碼運算之裝置及方 法的需要。藉此,本發明提供一微處理器及相關的方法透 過其内的密碼單元執行密碼運算,此密碼單元係藉由單一 密碼指令的程式執行密碼運算。本發明現在將以第三圖到 第十六圖為參考加以討論。 21 1303936 請參照第三圖,其為本發明一較佳實施例執行密碼運 算之微處理器的方塊圖300。方塊圖300描繪一微處理 器301,其透過記憶體匯流排(memory bus) 319與系統 記憶體(system memory) 321耦合連接’且微處理器 301包含從指令暫存器接收指令的一轉譯邏輯電路 (translation logic) 303。轉譯邏輯電路303包含邏輯電 路、裝置或微碼(例如:微指令或本機指令),或邏輯電路、 裝置或微碼的組合,或用以轉譯指令成為指令相關序列的 等效元件。這些在轉譯邏輯電路303中執行轉譯的元件 可能與在微處理器301中執行其他功能的電路、微碼共 9 用,而根據本應用的範圍,微碼是對照至少一個微指令的 術語。一微指令(也可參照成一本機指令)係一單元層級執 行的一指令,例如微指令係由精簡指令集電腦(reduced instruction set computer; RISC)微處理器直接執行。 至於複雜指令集電腦(complex instruction set computer; CISC)微處理器,如χ86相容的微處理器, 其χ86指令被轉譯為關聯的微指令並且由複雜指令集電 腦微處理器中的單元直接執行。轉譯邏輯電路303 |禺合 微指令符列(micro instruction queue) 304,且此微指 Φ 令仔列3〇4具有複數個微指令通道(micro instruction entries) 305、306。微指令由微指令佇列304提供給包 含一暫存器組(register file) 307的暫存階段邏輯電路, 而此暫存器組307包含複數個暫存器(register) 308-313,其内容在執行一指定的密碼運算前就已建立。 暫存器308-3 13指到系統記憶體321中含有執行指定密 碼運算資料的對應位置323-327。暫存階段耦合到載入 邏輯電路(load logic) 314,此載入邏輯電路314係與取 口寅料以執行4日疋雄、碼運异的貨料快取(data cache) 315成介面,而此資料快取3i5藉由記憶體匯流排319 22 1303936 耦合到系統記憶體32 1。執行邏輯電路(execution logic) 328耦合到載入邏輯電路314並且執行由前面階段傳來 之微指令所指定的運算。執行邏輯電路328包含邏輯電 路、裝置或微碼(例如:微指令或本機指令),或邏輯電路、 裝置或微碼的組合,或甩以執行由指令指定之運算的等效 元件。這些在執行邏輯電路328中執行運算的元件可能 與在微處理器301中執行其他功能的電路、微碼共用。 執行邏輯電路包含密碼單元(cryptographic unit) 316,此密碼單元316接收從載入邏輯電路314被要求 I 執行指定密碼運算的資料。微指令指示密碼單元316執 行指定密瑪運算於複數個輸入文字區塊(input text) 326 以產生相對應複數個輸出文字區塊(output text) 327。 密碼單元316包含邏輯電路、裝置或微碼(例如:微指令 或本機指令),或邏輯電路、裝置或微碼的組合,或用以 執行密碼運算的等效元件。這些在密碼單元316中執行 運算的元件可能與在微處理器301中執行其他功能的電 路、微碼共用。在一實施例中,密碼單元316並列操作 與在執行邏輯電路328内的其他執行單元(未繪出),例如 整數單元、浮點數單元等。在本應用範圍一“單元”的實施 • 係包含邏輯電路、裝置或微碼(例如:微指令或本機指 令),或邏輯電路、裝置或微碼的組合,或用以執行指定 功能或指定運算的等效元件。這些在特定單元中執行指定 功能或指定運算的元件可能與在微處理器301中執行其 他功能的電路、微碼共用。例如:一實施例中,一整數單 元包含邏輯電路、裝置或微碼(例如:微指令或本機指 令),或邏輯電路、裝置或微碼的組合,或用以執行整數 指令的等效元件;一浮點單元包含邏輯電路、裝置或微碼 (例如:微指令或本機指令),或邏輯電路、裝置或微碼的 組合,或用以執行浮點指令的等效元件;則在整數單元中 23 1303936 執行整數指令的元件可能與在浮點單元中執行浮點指令 的其他電路、微碼等共用。在一與χ8 6架構相容的實施 例中,密碼單元3 16與整數單元、浮點單元、多媒體延 伸集(Mathematic Matrix Extension; MMX)單元、串流 延伸集(Streaming SIMD Extensions; SSE)單元並列操 作。根據本應用範圍,當一實施例可以正確執行設計給 x86微處理器執行之大部分應用程式時,此實施例係與 x86架構相容,一應用程式正確執行而得到其預期的結 果。替代x86相容實施例預期密碼單元並列操作與先前 φ 提及的x86執行單元之子集。密碼單元316耦合到儲存 邏輯電路317並且提供相對應複數個輸出文字區塊 327’而/此儲存邏輯電路317也耦合到指定輸出文字資料 327給系統記憶體321儲存的資料快取315。此資料快 ,315麵合到寫回邏輯電路(write back i〇gic) 318,而 指定的密碼運算完成時,寫回邏輯電路318更新在 組307中的暫存器308-313。在一實施例中,微 :々與日f脈信號電路(未繪出)同步經過每一個上述所提 之邏輯電路階段 302、303、304、307、314、316-318 % 以使運算可以同時執行而相似於在線執行運算。 程,系統兒,體321中,一要求指定密碼運算的應用 广/可以直接指示微處理器301透過單一密碼指令322 t照、用以的密碼(XCRYPT)指令322)執行此運算。 勺人土集電腦微處理器實施例中,密碼指令322 二;:指定密竭運算的微指令。在一實施例中,密碼指令 算碼。指令集架構中的一空閒或未使用指令運 _ 4 ^ 6架構相容的實施例中,密碼指令322係 ΟχμΓ元組♦曰令包含一 X86重複前置(REP PrefiX)(如 〇x〇F)、兩_位元組未使用x86運算碼(opcode)(如 X A7)、一位元組有關於一指定區塊密碼模式以應用於 24 1303936 執行一指定密碼運算。在一實施例中,根據本發明的密碼 指令322可以在系統權限供給應用程式的層級執行,因 而可以程式規劃於指令的程式流以提供給微處理器301 不論是由應用程式直接或在操作系統320的控制下。因 為僅有一密碼指令322指示微處理器301執行指定的密 碼運算,而運算的完成對操作系統320應是顯而易見。 在操作中,操作系統320引動一應用程式以執行於 微處理器301。如部分指令流於應用程式的執行期間,一 密碼指令322從系統記憶體321提供給擷取邏輯電路
(fetch logic) 302。然而,在密碼指令322執行之前,在 程式流的指令指示微處理器301初始化暫存器308-312 的内容以使他們指到系統記憶體32 1中的位置 323-327,其包含一密碼控制字組(crypt0graphic control word) 323、一 初始密碼鑰匙(initia] cryptographic key) 324 或一鍮匙排程(key schedule) 324、二初始向量(initializati〇n vect〇r) 325(如果需 要)、運异用的輸入文字(input text) 326、以及輸出文字 (〇,加text! %7。在執行密碼指令322之前須先初始 上暫存器308-312,因為密碼指令322與一附加於暫存 ^ 308-312之含有區塊計數的暫存器313,其中區塊計 輸入文字326區塊加密或解密資料區塊的數目。 ^轉譯邏輯電路3〇3從_取邏輯電路㈣取回密碼指 icn 士轉澤成一序列相對應的微指令以指示微處理器 於+ 指定的密碼運算。一第一複數個微指令305-306 電路ιΓΙ微指令ί列中、,指示密碼單元316從載入邏輯 以產峰知^入貝料,並且開始執行指定數目的密碼回合 儲存應ΐ塊的輸出資料,提供藉由資料快取315 路317? 憶? 32\中的輸出文字327給儲存邏輯電 一複數個微指令(未繪出)於相對應微指令序 25 1303936 列中,指示在微處理器301中其他執行單元(未繪出行 其他未完成指定密碼運算所需的運算,例如:管理包含暫 日守結果及计數之非架構暫存裔(未纷出)、更新輪出及輪入 文字指標暫存器311-312、更新輪入文字區塊326之加 密/解密初始向量指標暫存器(initialization vector pointer register) 3 10(如果需要)、處理未處理的中斷等 等。在一實施例中,暫存器308-313係架構性的暫存器。 架構性暫存器308-313係為實現特定微處理器之指令集 架構(instruction set architecture,ISA)中所定義的一 0 種暫存器。 在一實施例中,密碼單元316分成複數個階段因此 允許相繼輸入文字區塊326的管線處理。 第三圖的方塊圖300教示本發明所需之元件,因此 省略許多在現今微處理器301中的邏輯以求圖示之簡 潔。然而,熟悉該項技藝者可察知現今特定實現的微處理 器301係包含許多階段及邏輯電路,在此為圖示之簡潔 而將其部分合併。例如:載入邏輯電路314在一快取線 對準階段之後可以嵌入隨一快取介面階段的一位址產生 φ 階段。然而重要且應注意的是,在複數個輸入文字區塊 326上之二完全密碼運算,係根據本發明藉由一單一指令 322的運算對操作系統32〇的考量係顯而易見,並且單 一指令322的執行係藉由與微處理器301中其他執行單 元並聯操作及協調的密碼單元316所完成。本發明密碼 單元316在實施組態中的替代實施例係類似前幾年微處 理器中浮點單元的硬體。密碼單元316的操作及相關密 碼指令322係完全相容先前操作系統及程式同時操作, 並且也將在之後更加詳細的探討。 请參照弟四圖,其為本發明之一基元(atomic)密瑪指 26 1303936 令400實施例的方塊圖。密碼指令400包含一選項前置 欄位(optional prefix field) 401、一 重複前置欄位 (repeat prefix field) 402、一運算碼攔位(opcode field) 403、 一區塊密碼模式欄位(block cipher mode field) 404。 在一實施例中,攔位401-404的内容相稱於χ86 指令集架構,而其替代的實施例可考慮相容於其他指令集 架構。 操作上,選項前置攔位401在許多指令集架構中係 用以致能(enable)或禁能(disable)部分主要微處理器的 處理特徵,像是指示16位元或32位元的運算、指示處 理或存取特定的記憶體區段等。重複前置攔位402係用 以指示由密碼指令400所指定的密碼運算係在複數個輸 ^資料區塊(如明文或密文)完成。重複前置櫊位4〇2也隱 示一相稱微處理器利用其内複數個架構暫存器的内容當 成指標指到系統記憶體中含有完成指定密碼運算所需參 數的位置。如上所述,在一 x86相容實施例中,重複前 置攔位4G2的值是〇xF3,並且根據χ86架構協定,密 ,指令與x86重複字串指令,如REp.M〇v,在妒 非 =相例如:當本發明由一 χ86相 1 入資料以供=運算=-=暫康 L Λ目的位址指標(指到記憶體中=ί 字串之指χ令❾^中’本發明更擴展傳二重複 標以及-儲存在暫存1ΕΑΧ ^ΕΒ^中之密瑪鑰匙指 指定密碼模式要求)。 中對一初始向量的指標(如果 運算碼攔位403指定微處理器完成一密石馬運算,此 27 1303936 密碼運算係由控制字組指標所隱示參 的一控制字組。本發明認為運算 令集;構中-空閒?使用的運算碼值,藉 處理為中保留與先則操作系統及應用軟體的相容。例如' 如上所述,一 X86相容實施例的運算碼攔位4〇3使 0x0FA7以指不執行指定的的密碼運算。區塊密碼模式搁 位404指不特定區塊密碼模式以供特定密碼運算使用, 並且將參照第五圖加以探討。
第五圖係第四圖基元密碼運算指令之區塊密碼模 欄位範例值的^格500。值0xC8指示使用電子密碼本方 式完成密碼運异;值OxDO指示使用密碼區塊鏈結方式完 ,密碼運算;值ΟχΕΟ指示使用密碼反饋方式完成密碼運 异;以及值0χΕ8指示使用輸出反饋方式完成密碼運算。 區塊密碼模式欄位404其他所有的值係保留,而這些模 式係描述於上述所提及的FIPS的文件中。 凊參苐六圖’其為本發明一較佳實施例中在一 6 相容微處理器600中較詳細的密碼單元617的實施例方 塊圖。微處理器600包含擷取邏輯電路(fetch logic) 601 用以從記憶體(未繪出)擷取指令以供執行。擷取邏輯電路 601係柄合到轉譯邏輯電路(transiati〇n logic) 6〇2,而 轉譯邏輯電路602包含邏輯電路、裝置或微碼(例如:微 指令或本機指令),或邏輯電路、裝置或微碼的組合,或 用以轉譯指令成為相關序列微指令的等效元件。這些在轉 譯邏輯電路602中執行轉譯的元件可能與在微處理器 600中執行其他功能的電路、微碼共用。轉譯邏輯電路 602包含一鑰匙產生邏輯電路640,而此鍮匙產生邏輯電 路640係麵合到一轉譯器(translator) 603及一微碼唯 讀記憶體(microcode ROM) 604。中斷邏輯電路 (interrupt logic) 626藉由匯流排634耦合到轉譯邏輯 28 1303936 電路602。複數個軟體及硬體中斷信號627係由指示未 處理中斷給轉譯邏輯電路602之中斷邏輯電路626處 理。轉譯邏輯電路602耦合到微處理器600相繼的階段 包含一暫存階段(register stage) 605、定址階段 (address stage) 606、載入階段(i〇ad stage) 607、執 行階段(execute stage) 608、儲存階段(store stage) 618、以及寫回階段(write back stage) 619。每一相繼
階段包含邏輯電路以完成由擷取邏輯電路601所提供相 關指令執行的特定功能,如先前在第三圖的微處理器中所 討論參照類似名稱的元件。描繪在第六圖中χ86相容微 處理器600之實施例係以在執行階段6〇8中之執行邏輯 電路(execution logic) 632為特徵,其包含平行執行單 元 610、612、614、616、617。一整數單元 610 從微 ,令佇列609接收執行整數微指令;一浮點單元612從 微巧令佇列611接收執行浮點數微指令;一多媒體延伸 ,單元614從微指令佇列613接收執行多媒體延伸集微 才曰令,一串流延伸集單元616從微指令佇列615接收執 行f流延伸集微指令。在本發明之一 χ86實施例,一密 ,單το 617藉由一載入匯流排62〇、一暫停(sta⑴信號 鞋丨l排621以及一儲存匯流排622輕合到SSE單元 =。密铁碼單元617共用串流延伸集單元二指令= 。二=代實施例可將密碼單元617獨立並聯操作像是 ^12以及614。整數單元61G輕合到一 x86 ϋ FLAGS)暫存|| 624]匕旗標暫存器包含一 X位元 曰$ t=t X位元625的狀態係配置用以指示密碼運算 。斬ί 在一實施例中’此x位元625係一x86 取的第30位元。此外’整數單元610存 以坪仕二 ΐ殊暫存器(maChine Specific register) 628 位元629的狀態,而此E位元629的狀態指 29 1303936 示密碼單元617是否位於微處理器600。整數單元610 也存取一 D位元631於^一特彳政控制暫存器(feature control register) 630,以致能或禁能密碼單元617。如 第三圖的微處理器301實施例,第六圖的微處理器6〇〇 以必要元件為特徵教示本發明一 x86相容實施例的内 容,並且為求圖示簡潔而合併或省略微處理器的其他元 件。熟悉該項技藝者可察覺用以完全介面的其他元件,像 是資料快取、匯流排介面單元、時脈產生以及分配邏輯電 路等均未繪出。 _ 在操作中,指令是由擷取邏輯電路60 1從記憶體(未 緣出)擷取並且與一時脈信號(未繪出)同步提供給轉譯邏 輯電路602。轉譯邏輯電路602轉譯每個指令成為一相 對應序列的微指令,其與時脈信號同步持續地提供給微處 理器600的後續階段605-608、618、619。在二^列 微指令中的每一個微指令指示一個次運算的執行,而次運 算被要求完成由一相對指令所指定的一整體運算,例如定 址階段606產生一位址、暫存階段605從指定暫存器(未 緣出)恢復的兩運算元在整數單元内相加、藉由儲存階段 618儲存執行單元610、612、614、616、617其中之 所產生的結果於5己憶體等。根據轉譯中的指令,轉譯邏 輯電路602利用轉譯器603直接產生一序列的微指^, 或是從微碼唯讀記憶體604擷取此序列,或是利用&譯 恭603直接產生此序列的部份並且從微碼唯讀記憶體 604擷取此序列剩下的部分。微指令透過微處理器g〇〇 的相繼階段605-608、618、619持續地與時脈同步進 行。當微指令到達執行階段608,執行邏輯電路63$連 同其運算元(在暫存階段605從暫存器所恢復,或在定址 階段606由邏輯電路所產生,或藉由載入邏輯電路從資 料快取所恢復),藉由放置微指令在一對應的微指令佇列 30 1303936 609、611、613、615而將其依指定路線傳送給一指定 執行單元610、612、614、616、617。執行單元610、 612、614、616、617執行微指令並提供結果給儲存階 段618。在一實施例,微指令包含攔位指示其是否可以與 其它運算並列執行。 回應先前所述之擷取一個密碼指令,轉譯邏輯電路 602產生相關微指令,其指示在微處理器600後繼階段 605-608,618,619中的邏輯電路執行指定的密碼運 算。相關微指令之特殊結構在某種程度係由一控制字組暫 φ 存器308之内容所指到之一控制字組323中之一鑰匙產 生欄位之值決定,而此將詳述於後。例如:當鑰匙產生欄 位之值指定在一指定密碼運算執行期間使用一使用者產 生之鑰匙排程,則鑰匙產生邏輯電路640將建構微指令 相關順序以指示微處理器600從鑰匙指標暫存器309内 容所指之記憶體位置324擷取使用者產生之鑰匙排程, 並將使用者產生之鑰匙排程載入密碼單元617中之鑰匙 隨機存取記憶體(將詳述於後),且在指定密碼運算執行期 間使用上述之使用者產生之鑰匙排程。當鑰匙產生欄位之 值指定一鑰匙排程係使用所提供之一密碼鑰匙自動產 ® 生,則鑰匙產生邏輯電路640將建構微指令相關順序以 指示微處理器600從鑰匙指標暫存器309内容所指之記 憶體位置324擷取所提供之密碼鑰匙,並將此密碼鑰匙 載入密碼單元617中之鑰匙隨機存取記憶體,且擴展此 密碼鑰匙成一鑰匙排程,及在指定密碼運算執行期間使用 上述之擴展的錄匙排程。密碼输匙之大小係可藉由控制字 組中之鑰匙大小欄位之設定而程式規劃。在一實施例中, 鑰匙大小欄位之值係考慮到一 128位元密碼鑰匙、一 192 位元密碼鑰匙以及一 256位元密碼鑰匙等指示。 據此,一第一複數個相關微指令係直接依路徑傳送至 31 1303936 密碼單元617並且指示密碼單元617由載入匯流排620 載入資料,或載入一區塊的輸入資料並且開始執行指定數 目的密碼回合以產生一區塊的輸出資料,或藉由儲存階段 618透過儲存匯流排622將所產生的區塊輸出資料儲存 於記憶體。一第二複數個相關微指令依其路徑傳送至其它 實行單元610、612、614、616以執行其它次運算,其 等次運算係完成指定密碼運算之必需,例如E位元629 的測試、致能D位元63 1、設定X位元625以指示密碼 操作進行中、在暫存階段605更新暫存(例如,計數暫存 器、輸入文字指標暫存器、輸出文字指標暫存器)、由中 * 斷邏輯電路626所指示之中斷信號627的處理等。相關 微指令係用以提供指定密碼運算的最佳執行於多區塊輸 入資料,其藉由與密碼單元微指令序列中的整數單元微指 令成為介面,因此整數運算可與密碼單元運算並行完成。 微指令係包含於相關微指令以允許或並從待處理中斷信 號627恢復。因為所有對密碼參數的指標與資料係提供 於x86架構暫存器,當執行中斷時,其狀態被保存,並 且當從中斷返回,這些狀態被恢復。當從中斷返回,微指 令測試X位元625的狀態以決定是否一密碼運算在進 • 行。如果是,當中斷發生時,此運算重覆於處理中之特別 輸入貧料區塊。相關微指令係用以允許在處理中斷信號 627之前,更新在一序列輸入文字區塊上之一序列密碼操 作的指標暫存器及中間的結果。 請參照第七圖,其為第六圖之微處理器中指示密碼次 運算之範例微指令7〇〇欄位的方塊圖。微指令700包含 一微運算碼欄位(micro opcode field) 701,一資料暫存 器欄位(data register field) 702,以及一暫存器欄位 (register field) 703。微運算碼攔位701指定執行一特 定次運算並且指定邏輯電路於微處理器600中至少一階 32 1303936 段以執行次運算。微運算碼柄 本發明單元執行值指定根據 兩個指定的值。一第一值载 的倣知7。在一實施例,有 體位置恢復,而其位址係由疋貧料從-記憶 指稱之一架構暫存器的内容斛存态攔位702内容所 存器攔位703内容所具體於厅f定。這資料被载入到由暫 這恢復的資料(例如:密竭Jf碼單元内的一暫存器。 字資料、初始向量)係提供给^料、控制字組、輸入文 的第二值儲存(XSTOR)指出早7微運算碼攔位701 存在一記憶位置,而其位址馬單元所產生的資料儲 容所指稱之一架構暫存器的內、六貧料暫存态攔位702内 階段實施例,暫存器欄^ 7&容所指^5。在密碼單元一多 料區塊之一儲存於記憶體。的,谷指示複數個輸出資 (data field) 704内的密石馬别出^料區塊係由資料攔位 存取。根據本發明密碼單元=所知1供以供儲存邏輯電路 體的細節,將參照第八圖另t執行载入和儲存微指令更具 第九圖加以討論。 請參照第八圖,其為第 、 暫存器攔位703的值之表权圖之載入微指令格式70〇 係產生回應一密碼指令的^3。如前所述,一序列微指令 複數個微指令,其係由宓此序列微指令包含一第一 數個微指令,其俜由彳理、Γ兀指示執行;以及一第二複 並列功能單元所石馬單元以外之至少一個 資料、密碼參數一複數個微指令提供巧 ^ ^H.及輸入貝料給密碼單元並且指示密碼单 人ιλ穷程(或載入從記憶體恢復的鑰匙排程)以載 輸人文字資料,並且儲存輸出文字資 澈 t入试指令提供給密碼單元以載入控制字組資料、 戟入一猞碼鑰匙或鑰匙排程、載入初始向量資料、載入輸 33 1303936 入文字資料並指示密碼單元開始一指定密碼運算。一載入 微指令在暫存器欄位703之值ObO 10係指示密碼單元載 入一控制字組到其内部控制字組暫存器。當這微指令進行 管線處理,在暫存階段的一架構控制字組指標暫存器存取 記憶體中儲存控制字組的位址。位址邏輯電路轉譯此位址 成為一實體位址以供記憶體存取。載入邏輯電路從快取擷 取控制字組,然後傳給密碼單元。同樣地,暫存器欄位值 ObO 10指示密碼單元載入由資料欄位704所提供的輸入 文字資料,並且在載入之後開始指定的密碼運算。類似控 _ 制字組,輸入資料由儲存在架構暫存器中所儲存的一暫存 ® 器存取。值ObO 10指示載入由資料欄位704所提供的輸 入資料給内部暫存器輸入-1。載入到輸入-1暫存器的資 料不是輸入文字資料(當管線處理時)就是一初始向量。值 Obi 10及Obi 11分另4指示密碼單元載人一密碼錄匙或使 用者產生鑰匙排程中一鑰匙之較低及較高位元。根據本應 用,使用者係定義成執行一特定功能或特定運算,而使用 者可具體化成一應用程式、一操作系統、一機器或者一個 人。因此,在一實施例中,使用者產生鑰匙排程係由一應 用程式所產生,而在另一實施例中,使用者產生输匙排程 φ 係由一個人所產生。 在一實施例中,暫存器欄位值OblOO及0b 101係考 慮一密碼單元有兩階段,藉此,可以管線處理相繼的輸入 文字區塊貢料。因此對管線處理相繼的輸入貢料區塊而 言,一第一載入微指令執行提供一第一區塊的輸入文字資 料給輸入-1,接著執行一第二載入微指令提供一第二區塊 的輸入文字資料給輸入-0,並且指示密碼單元開始執行指 定的密碼運算。 當一使用者產生之鑰匙排程被用以執行密碼運算 時,對應使用者產生之鑰匙排程中鑰匙數量的載入微指令 34 1303936 係依設定路徑傳送給密碼單元,此密碼單元指示載入此鑰 匙排程中每一回合鑰匙。 在載入微指令中暫存器欄位703其他所有的值係保 留。 請參照第九圖,其為第七圖之儲存微指令格式700 暫存器欄位703的值之表格。一儲存微指令係發布(issue) 給密碼單元以指示其提供所產生的輸出文字區塊給儲存 邏輯儲存於記憶體中由資料暫存器欄位702所提供的位 址。據此,本發明的轉譯邏輯為一特定的輸出文字區塊所 • 發布之一儲存微指令係在為一其所對應輸入文字區塊所 發布之一儲存微指令之後。暫存器欄位703之值OblOO 係指示密碼單元提供關聯其内部的輸出-〇暫存器給儲存 邏輯儲存。輸出-〇的内容與輸入文字區塊提供給輸入-〇 係相關聯。同理,參照暫存器欄位值OblOl之内部輸出 -1暫存係與輸入文字貨料提供給輸入-1相關聯。據 此,跟隨在鑰匙及控制字組資料載入之後,複數個輸入文 字區塊可以被管線輸送,係透過密碼單元依序發布密碼微 指令載入·輸入-1、載入·輸入-0 (載入·輸入-0也指示密碼 φ 單元開始密碼運算)、儲存·輸出-1、儲存.輸出-0、載入· 輸入-1、載入·輸入-0 (開始下兩個輸入文字區塊運算)等 等。 請參照第十圖,其為本發明指定密碼運算參數之範例 控制字組1000格式的方塊圖。控制字組1000係由使用 者程式設計於記憶體,並且在執行密碼運算之前,控制字 組1000的指標提供給相稱微處理器中的一架構暫存 器。據此,當部分序列的微指令對應到一密碼指令時,一 載入微指令被發布以指示微處理器去讀取包含指標的架 構暫存器、從記憶體(快取)恢復控制字組1000以及載入 35 1303936 控制字組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回合。最後,中間結果欄位 36 1303936 1005指示是否一輸入文字區塊的加密/解密,是根據演 算欄位1007所指定之密碼演算法以回合計算欄位1008 ‘ 所指定回合的數量執行,或者加密/解密是根據演算欄位 1007所指定之密碼演算法,以回合計算攔位1008所指 定回合的數量執行,而其最終回合的執行代表一中間結果 而不是一最終結果。熟悉該項技藝者可察知許多密碼演算 法除了最終回合的次運算之外係執行相同的次運算於每 一回合。因此程式設計中間結果欄位1005提供中間結果 而不是最後結果,藉此,允許程式設計者可核對演算法實 現之中間的步驟。例如:獲得增加的中間值以核對演算法 _ 實行,假設,執行一回合的加密於一文字區塊,然後執行 兩回合於相同文字區塊,然後三回合等。提供可程式化回 合及中間值結果的功能可讓使用者檢查密碼執行、除錯以 及達到改變鑰匙結構及回合計數。 請參照第十一圖,其為第十圖中控制字組1〇〇〇之鑰 匙產生欄位1006範例值之表格1100。鑰匙產生欄位 1006之0值係指示一計算裝置依據本發明從一密碼鑰匙 自動產生一鑰匙排程給一指定密碼運算,其中上述之密碼 鑰匙係提供於記憶體中,而此記憶體係由一鑰匙指標暫存 ® 器之内容所指到。自動鑰匙排程之產生依據一密碼演算規 貝J(例如進階加密標準)係等效於鑰匙擴展。鑰匙產生欄位 1006之1值係指示一指定密碼運算之一使用者產生鑰匙 排程係提供於記憶體中,且是由鑰匙指標暫存器之内容所 指到。除了擴展一密碼鑰匙排程,一計算裝置依據本發明 一較佳實施例將從記憶體載入使用者產生鑰匙排程,並在 指定密碼運算執行期間使用此使用者產生鑰匙排程。本發 明之一好處係使用者可以使用一鑰匙排程於密碼回合運 算,而此鑰匙排程並不相稱於使用中之特定密碼演算法 則0 37 1303936 請參照第十二圖,其為本發明之一密碼單元1200的 較佳實施例方塊圖。密碼單元1200包含一微指令暫存器 (micro opcode register) 1203,此微指令暫存器 1203 透過一微指令匯流排1214接收密碼微指令(例如載入與 儲存微指令)。密碼單元1200也包含一控制字組暫存器 (control word register) 1204、一第一輸入(輸入-〇)暫 存器1205以及一第二輸入(輸入-1)暫存器1206、一第 一鑰匙(鑰匙-〇)暫存器1207以及一第二鑰匙(鑰匙-1)暫 存器1208。資料透過一載入匯流排(i〇ad bus) 1211提 _ 供給暫存器1204-1208,如微指令暫存器1203中一載 入微指令内容所指定。密碼單元1200也包含區塊密碼邏 輯電路1201,此區塊密碼邏輯電路1201耦合到所有的 暫存器1203-1208以及也耦合到密碼鑰匙隨機存取記憶 體(RAM) 1202。區塊碼邏輯電路1201包含鑰匙擴展邏 輯電路1220。區塊碼邏輯電路1201提供一暫停信號 (stall signal) 1213並且也提供區塊結果給一第一輸出 (輸出-0)暫存器1209以及一第二輸出(輸出-1)暫存器 1210。輸出暫存器1209-1210透過一儲存匯流排1212 將内容依指定路徑傳送給在一相稱微處理器中的相繼階 • 段。在一實施例中,微指令暫存器1203係32位元大小; 暫存器1204、1207及1208係128位元大小;以及暫 存器1205-1206及1209-1210係256位元大小。 在操作中,密碼微指令與資料一起連續提供給微指令 暫存器1203,其中資料係指定給控制字組暫存器i2〇4、 或輸入暫存器1205-1206之一、或鑰匙暫存器 1207-1208之一。在參照第八圖及第九圖討論的實施^ 中,控制字組藉由一載入微指令載入到控制字組暫存器 1204。因此密碼鑰匙或鑰匙排程經由連續的載入微指令 載入。當一 128位元密碼鑰匙載入時,一載入微指令因 38 1303936 此提供給指定的鑰匙-0暫存器1207。當一大於128位 元密碼鑰匙載入時,一載入微指令因此提供給指定的鑰匙 -0暫存器1207,並且連同一載入微指令提供給指定的鑰 匙-1暫存器1208。當一使用者產生之鑰匙排程載入時, 連續載入微指令提供給指定鑰匙-〇暫存器1207。鑰匙排 程中的每一鑰匙被載入且依序被放置在鑰匙隨機存取記 憶體1202以供其相對應的密碼回合使用。隨此,輸入文 字資料(如果沒有要求一初始向量)載入到輸入-1暫存器 1206,如果要求一初始向量,則經由一載入微指令載入 到輸入-1暫存器1206。對輸入-0暫存器1205的一載入 胃 微指令指示密碼單元以載入輸入文字資料給輸入-〇暫存 器1205,並且開始在輸入-0暫存器1205内的輸入文字 資料執行密碼回合,其根據控制字組暫存器1204之内容 所提供的參數使用在輸入-1或在兩輸入暫存器 1205-1206 (當輸入資料係管線處理)中的初始向量。根 據收到指定輸入-〇暫存器1205的載入微指令,區塊密 碼邏輯電路1201開始執行由控制字組内容所指定的密 碼運算。如果要求單一密碼输匙擴展,則输匙擴展邏輯電 路1220依據所指定密碼演算法則以產生鑰匙排程中之 • 每一鑰匙而擴展密碼鑰匙,其中上述之密碼鑰匙係藉由載 入指令提供給鑰匙-〇暫存器1207及鑰匙-1暫存器 1208。姑且不論是否由鑰匙擴展邏輯電路1220產生一 鑰匙排程或者是從記憶體中載入鑰匙排程,第一回合的鑰 匙係快取儲存於區塊密碼邏輯1201中以使得第一區塊 密碼回合可以不用存取鑰匙隨機存取記憶體1202而處 理。一但初始化後,區塊密碼邏輯電路1201繼續執行指 定的密碼運算於至少一個輸入文字區塊直到運算完成;其 連續從鑰匙隨機存取記憶體1202擷取回合鑰匙如所應 用的密碼演算法所要求。密碼單元1200執行一指定區塊 39 1303936 密碼運算於指定的輸入文字區塊,而相繼的輸入文字區塊 透過相繼對應的載入及儲存微指令加密/解密。當一儲存 微指令執行時,如果指定輸出資料(例如輸出-0或輸出-1} 尚未完全產生,則區塊密碼邏輯電路1201顯示暫停信號 1213。一但輸出資料已產生且放置於相對應之輸出暫存 器1209-1210時,暫存器1209-1210的内容接著傳送 到儲存匯流排1212。 請參照第十三圖,其為本發明執行有關進階加密標準 (AES)演算法密碼運算之一區塊密碼邏輯電路1300實施 • 例的方塊圖。區塊密碼邏輯電路1300包含〆回合引擎 (round engine) 1320,此回合引擎1320透過匯流排 1311-1314、匯流排 1316-1318 及回合鑰匙(RNDKEY) 匯流排1332耦合到一回合引擎控制器(round engine controller) 1310。回合引擎控制器1310包含一鍮匙大 小控制器(block size controller) 1330,並且存取一微 指令暫存器(micro instruction controller) 1301、控制 字組暫存器(control word register) 1302、第〆鑰匙(鑰 匙-〇)暫存器1303以及第二鑰匙(鑰匙-1)暫存器I304以 存取鑰匙資料、微指令以及所指示密碼運算的參數。輸入 • 暫存器1305-1306的内容提供給回合引擎132〇並且回 合引擎1320提供相對應輸出文字給輪出暫存器 1307-1308。輸出暫存器1307_1308透過匯流排 1316-1317也耦合到回合引擎控制器1310以硖能回合 引擎控制器存取每一相繼密碼回合的結果,而此結果係透 過NEXTIN匯流排1318提供給回合引擎1320卞,密碼 回合。鑰匙隨機存取記憶體(未繪出)中的密螞鑰匙係透過 鑰匙隨機存取記憶體匯流排1315存取。加密/解密匯流 排(ENC/DEC bus) 1311之信號指示回合引擎利用次運 算執行不是加密(例如S-Box)就是解密(例妒反向 1303936 S-Box)。回合計算匯流排(RNDCON buS) 指示回合引擎132〇執行不是一第一進階加^標準回 合、一中間進階加密標準回合就是一最後進階^ ^其指示 合。回應一控制字組中之一鑰匙大小欄位之内备梦由鑰匙 使用一密碼鑰匙大小,鑰匙大小控制器1330係^小。如 大小匯流排(KEYSIZE bus) 1319指定密碼鍮匙 果鑰匙排程係欲自動產生,則回合引擎控制器1 /引 產生鑰匙匯流排(GENKEY bus) 1314信號以指f二二 擎1320中之鑰匙擴展邏輯電路1331使用擒= 1313所提供之鑰匙及鑰匙大小匯流排1319所指定之^ > 匙大小以產生/鑰匙排程。回應產生鑰匙匯流耕1314 # 號,鑰匙擴展邏輯電路(key exPansi〇n 1〇§ic) 1331係 藉由回合鑰匙匯流排(RND KEY bus) 1332將所虞生之输 匙排程提供給回合引擎控制器1310。鑰匙匯流排1313 亦用以提供每一回合鑰匙給回合引擎1320在其對應的 回合執行時。在一實施例中’输匙大小匯流排1319之值 係指示128位元區塊、192位元區塊或256位元區塊。 回合引擎1320包含第一鑰匙互斥或邏輯電路(first key XOR logic) 1321,此第一鑰匙互斥或邏輯電路1321 ’ 耦合到一第一暫存器(first register)(暫存-〇) 1322,此 第一暫存器1322柄合到S-Box邏輯電路(S-Box logic} 1323,此S-Box邏輯電路1323耦合到移列邏輯電路 (Shift Row logic) 1324,此移列邏輯電路1324耦合到 一第二暫存器(second register)(暫存-1) 1325,此第二 暫存器1325耦合到混欄邏輯電路(Mix Colum i〇gic) 132 6 ’此混棚邏輯電路132 6輛合到一第三暫存ρ (third register)(暫存-2) 1327。第一鑰匙互斥或邏w輯電路 1321、S-Box邏輯電路1323、移列邏輯電路1324·以及 混欄邏輯電路1326係配置用以執行次運算於輪入文字 41 j303936 資料’像是具體於先前討論的進階加密標 輯電路1326在中間回合期間於要準】》:輪 進階加密標準互斥或功能於輸 輯電路! 32 i、S-Box邏輯電路! 32 互路斥 以及混欄邏輯電路1326在藉由加密/解^電二, 的狀態指示時,也配置用以執行1相^ 1311 準次運算於解密期間。熟悉該項技藝者可 料係根據控制字組暫存器13〇2内容 =回0貝
加密模式而回饋給回合引擎132〇。曰以料 求)透過ΝΕΧΉΝ匯流排1318提供給回合引貝擎果要 在弟十二圖所示的實施例中,回人弓丨聲八 (暫存-D 1325以及一第二階段介於第二暫存 1325與第三暫存器(暫存_2) 1327。中間回合以暫^) 時脈信號(未繪出)於階段間管線處理。當一區塊 =完成密碼運算,其關聯的輸出資料放置於相對應^出二 存益13G7-13G8。-儲存微指令之執行使得所 & 出暫存器13〇7-1308之内容提供至儲存匯流排(未^會 出)。 睛參照第十四圖,其為本發明之一 i28位元输匙擴 ^邏輯電路1400實施例之方塊圖,其係配置用以擴展一 雄、碼鑰匙成一對應之密碼鍮匙排程。為了本發明之教示目 的,鑰匙擴展邏輯電路1400係描述及圖解於進階加密標 準演算規則方面,然而本發明人指明此描述及圖解係為了 解說之清晰,而不應被用以限制本發明之範圍。鑰匙擴展 邏輯電路1400係包含一餘匙緩衝器(key buffer) l4〇i,而此鑰匙緩衝器1401係耦合於一第一 128位元 暫存器(first 128-bit register) 1402。一初始密碼鍮匙 42 I3〇3936 依,本發明係從一回合引擎控制器l31〇經由鑰匙產生 1流排而被接收。第一暫存器14〇2之127-96位元係提 供給S-Box邏輯電路(S-B〇x i〇gic) 14〇3以及一 32位 元互斥或閘(XOR gate) 1404。第一暫存器1402之 95·64位元係提供給一 32位元互斥或閘(x〇R gate) 14〇5,而此互斥或閘14〇5之輸出係耦合於上述之互斥 或閘1404。第一暫存器1402之63-32位元係耦合於一 32位元互斥或閘1406,而此互斥或閘1406之輸出係耦 合於上述之互斥或閘1405。第一暫存器1402之31-0 • 位元係耦合於上述之互斥或閘1406。鑰匙擴展邏輯電路 14〇〇 亦包含一第二暫存器(second register) 1407,其 具有5個32位元攔位以從S-Box邏輯電路1403、從互 斥或閘1404-1406及從第一暫存器1402之31_0位元 接收32位元輸入。第二暫存器1407之5個32位元欄 位係提供給一回合常數(Round Constant,RCON)邏輯 電路1408及4個32位元互斥或閘1409-1412。回合 常數邏輯電路1408之輸出亦提供給互斥或閘 1409-1412。互斥或閘1409-1412提供32位元輸出給 —第三暫存器(third register) 1413的4個攔位,而第 二暫存器1413的4個攔位係提供給一 128位元回合鑰 起緩衝器(round key buffer) 1414以及也藉由匯流排 (bus) 1415而回授給第一暫存器1402。回合鑰匙緩衝器 1414之輸出(例如··在一擴展鑰匙排程中所產生之一回合 鑰匙)依據本發明係藉由匯流排(bus) 1416提供給一回合 弓丨擎控制器。 在操作中,欲擴展的密碼鑰匙係從回合引擎控制器 131〇經由鑰匙產生匯流排提供給鑰匙緩衝器1401,並 且此鑰匙擴展之執行係與一時序信號(未繪出)同步。一回 合管理器(round manager) 1417偵測經由錄匙產生匯 43 1303936 流排所供給的密碼鑰匙,it經由RNDNUM匯流排反覆地 發布鑰匙擴展之一回合數目給回合常數邏輯電路14〇8, 據此,鑰匙緩衝器1401之内容係傳送至第一暫存哭 1402。另外,RNDNUM J流排係被設定用以指示將產= 一初始進階加密標準回合之一回合鑰匙。依據進階加密標 準鑰匙擴展規格,密碼鑰匙127-96位元係提供給S-B〇x 邏輯電路1403,而此S-3〇x邏輯電路1403之輸出係經 由第二暫存器1407提供焓回合常數邏輯電路1408。依 照值或RNDNUM匯流排,回合常數邏輯電路1408輸出 春 一 32位元回合常數,此32位元回合常數係提供給4個 32位元互斥或閘1409-1412中的每一個互斥或閘。據 此,初始回合鑰匙31-0位元在經由回合常數邏輯電路 1408所提供初始回合常數與密瑪鍮匙31-0位元,執行 互斥或閘邏輯運算後產生。初始回合鑰匙63-32位元在 初始回合常數與一第一頊位元63-32執行互斥或閘邏輯 運算後產生,其中上述之第一項係密碼鑰匙較低之雙字組 (doublewords)之互斥或閘邏輯運算詰果。初始回合餘匙 95-64位元在初始回合常數與一第二項95-64位元執行 互斥或閘邏輯運算後產生,其中上述之第二項係上述之第 • 一項與密碼鑰匙95-64位元互斥或閘邏輯運算之結果。 初始回合鑰起127-96位元在初始回合常數與一第三項 127-64位元執行互斥或閘邏輯運算後產生,其中上述之 第三項係上述之第二項齊密碼鑰匙127-96位元互斥或 閘邏輯運算之結果。 上述之初始回合#匙係輪出至回合鑰匙緩衝器 1414,並且隨後輸出裘间合引擎控制器I3(此回合引 擎控制器1310將此初始回合鑰匙提供給鑰匙隨機存取 記憶體),並且此初始回舍鑰匙也回授給第,暫存器1402 以供產生一下一回合鑰匙時使用。此外,回合管理器1417 1303936 增加RNDNUM匯流排之值。 上述之下一回合鑰匙及其後所有回合鑰匙係依照上 述之方式而反覆地產生,直到擴展鑰匙排程之所有鑰匙均 已產生後才結束。 請參照第十五圖,其為本發明在一中斷事件期間保留 密碼參數之狀態的方法流程圖。當一微處理器依據本發明 執行一指令流時,方法流程從步驟1502開始。上述之指 令流程並不須包含一像此描述之密碼指令。然後方法流程 處理至決定步驟1504。 在決定步驟1504,決定是否藉由一指令流(中斷處理 程式)處理一要求改變指令流之中斷事件(例如可遮罩式 中斷、非遮罩式中斷、分頁錯誤(page fault)、工作切換 (task switch)等)。若是,方法流程處理至步驟1506 ; 若否,方法流程跳至步驟1504,其指令執行繼續直到一 中斷事件產生。 在步驟1506,因為一中斷事件已經發生,在傳送控 制程式至一對應中斷處理程式之前,中斷邏輯電路依據本 發明指示清除一旗標暫存器中之X位元。X位元的清除確 保從中斷處理程式返回時,如果一區塊密碼運算進行中, 其指示排除至少一個中斷事件並指示控制字組資料以及 鑰匙資料必須在輸入指標暫存器之内容目前所指的輸入 資料區塊繼續區塊密碼運算之前重新載入。然後處理至步 驟 1508 〇 在步驟1508,所有架構暫存器包含本發明區塊密碼 運算執行之相關指標及計數均儲存於記憶體。熟悉該項技 藝者可知架構暫存器之儲存係在轉移控制權給中斷處理 程式之前完成於目前資料計算裝置。因此本發明探究目前 資料架構以提供中斷事件執行輸出量之透明度。在暫存器 45 1303936 儲存之後,方法流程處理至步驟1510。 在步驟1510,程式流程係轉移至中斷處理程式。因 此方法流程處理至步驟1512。 在步驟1512,此方法流程完成結束。熟悉該項技藝 者可察知第十四圖之方法依據中斷處理程式之返回係從 步驟1502再開始。 請參照第十六圖,其為本發明在至少一個中斷事件 時,擴展一密碼錄匙成一對應之錄匙排程以在複數個輸入 φ 資料區塊執行一指定密碼運算之方法流程圖1600。為求 圖示之清晰,省略了依據區塊密碼模式執行指定密碼運算 之流程,其中此區塊密碼模式要求區塊間初始向量等效物 之更新及儲存(例如輸出反饋模式、密碼反饋模式)。然而 本發明之方法係包含其他之區塊密碼模式。 方法流程從步驟1602開始,其中依據本發明之一密 碼指令指示一密碼運算開始執行。上述之密碼指令執行係 可以第一執行或由於一中斷事件之中斷執行而跟隨第一 執行之後執行,藉此在中斷處理程式執行完成後將程式控 φ 制權轉移回密碼指令。流程處理至步驟1604。 在步驟1604,載入記憶體中之一資料區塊並且開始 一指定密碼運算,其中上述之區塊資料係由本發明之一輸 入指標暫存器之内容所指定。在一實施例中,指定之密碼 運算係依據進階加密標準規則開始執行。然後方法流程處 理至決定步驟1606。 在決定步驟1606,決定是否設定一旗標暫存器中之 一 X位元。如果設定X位元,其指示目前依據本發明載 入一密碼單元之控制字組及鑰匙排程係有效(valid)。如果 清除X位元,其指示目前載入上述之密碼單元之控制字 46 1303936 組及鑰匙排程係無效(invalid)。如上述參照第十五圖之討 論,當一中斷事件產生時,X位元係清除。此外,如上所 述,當需要載入一新的控制字組或一新的鑰匙排程或者是 上述之兩者時,則在發布密碼指令之前係要求指令執行以 清除X位元。在一 x86相容實施例中,其利用一 x86旗 標暫存器中之第30位元,此X位元可以藉由依序執行一 PUSHFD指令與一 POPFD指令而清除。然而熟悉該項 技藝者可得知在另一實施例中,其他用以清除X位元之 指令。如果X位元係設定,方法流程處理至步驟1620 ; φ 如果X位元係清除,方法流程處理至步驟1608。 在步驟1608,因為一清除之X位元係指示不是一中 斷事件產生就是一新的控制字組及/或鑰匙資料載入,因 此從記憶體載入一控制字組。在一實施例中,載入控制字 組停止密碼單元執行上述之步驟1604所指定之密碼運 算。在此實施例中之步驟1604開始一密碼運算係考慮到 使用電子密碼本模式之多區塊之最佳化,其係藉由假設使 用目前載入之控制字組及鑰匙資料以及假設電子密碼本 模式係最為普遍使用之區塊密碼模式。根據上述,載入目 _ 前輸入資料區塊並且在決定步驟1606檢查X位元之狀態 重置之前,開始密碼運算。然後方法流程處理至決定步驟 1610。 在決定步驟 1610,評估在步驟 1608所擷取 (retrieve)控制字組中之鍮匙產生欄位以決定提供記憶體 中之一使用者產生鑰匙排程或是記憶體中之一密碼鑰 匙,而此密碼输匙係被要求擴展成一输匙排程。如果餘匙 產生欄位之值指定自動鑰匙擴展,則方法流程處理至步驟 1612。如果鑰匙產生欄位之值指定提供使用者產生鑰匙 排程,則方法流程處理至步驟1616。 47 1303936 在步驟1612,從記憶體載入密碼鑰匙。然後方法流 程處理至步驟1614。 在步驟1614,密碼输匙相稱於使用的密碼演算規則 而被擴展成一鑰匙排程,並且此鑰匙排程在密碼運算執行 期間係載入至鑰匙隨機存取記憶體以供使用。然後方法流 程處理至步驟1618。 在步驟1616,從記憶體擷取一使用者產生鑰匙排程 並且載入至鑰匙隨機存取記憶體以供密碼運算執行期間 $ 使用。然後方法流程處理至步驟1618。 在步驟1618,輸入區塊參照步驟1604而重新載 入,並且依據新載入之控制字組以及鑰匙排程開始密碼運 算。然後方法流程處理至步驟1620。 在步驟1620,產生一輸出區塊,此輸出區塊對應所 載入之輸入區塊,對加密而言,輸入區塊係一明文區塊而 輸出區塊係一對應之密文區塊;對解密而言,輸入區塊係 一密文區塊而輸出區塊係一對應之明文區塊。然後方法流 程處理至步驟1622。 φ 在步驟1622,將產生的輸出區塊儲存於記憶體。然 後方法流程處理至步驟1624。 在步驟1624,修改輸入及輸出區塊指標暫存器之内 容以指到下一輸入及輸出資料區塊。另外,修改區塊計數 暫存器之内容以指示目前輸入資料區塊完成密碼運算。在 參照第十六圖所討論之一實施例,區塊計數暫存器係遞 減。然而,熟悉該項技藝者可在另一實施例中,思量處理 及測試區塊計數暫存器之内容以考慮輸入文字區塊之管 線執行。然後方法流程處理至步驟1626。 在決定步驟1626,決定是否繼續運算一輸入資料區 48 1303936 塊。在用以說明具特徵之實施例中,係評估區塊計數器是 否等於零而決定。如果沒有剩下之區塊可供運算,則方法 流程處理至步驟1630 ;如果剩下區塊可供運算,則方法 流程處理至步驟1628。 在步驟1628,載入下一輸入資料區塊,如輸入指標 暫存器之内容所指。然後方法流程處理至步驟1620。 在步驟1630,此方法流程完成結束。 雖然本發明及其目的、特徵與優點已詳細描述,但其 φ 他實施例也應包含於本發明。例如:本發明曾根據相容 x86架構之實施例討論長度,然而這些討論已提供此類的 方式,因為x86架構容易理解且提供足夠的方式以教示 本發明。然而本發明包含相稱於其他指令集架構的實施 例,例如:PowerPC、MIPS及諸如此類等,此外還有全 新的指令集架構。 本發明更包含電腦系統中微理器外其他元件之密碼 運算的執行,例如,根據本發明的密碼指令可以容易地被 應用在一密碼單元的一實施例,此實施例並非如微處理器 φ 部分相同的整合電路,其執行方式如部分電腦系統。本發 明之如此的實施例係為了併入圍繞在微處理器的晶片組 (如北橋、南僑),或當一處理器用於執行密碼運算時,其 密碼指令係由主要微處理器移轉(hand off)給此處理器。 本發明可應用於内嵌控制器、工業控制器、信號處理器、 陣列處理器以及任何相似處理資料之裝置。本發明也包含 一實施例僅含有執行密碼運算所必需的元件。如此的内欲 裝置不僅執行密碼運算,也確實提供低成本、低電源,例 如通信系統中的加密/解密處理器。為求簡明,本發明將 這些替代的處理元件參照成上述之處理器。 此外,雖然本發明提及128位元區塊,但是許多不 49 1303936 同區塊的大小可以透過改變暫存器的大小而被應用,其中 暫存器傳送輸入資料、輸出資料、鑰匙以及控制字組。 並且,雖然本應用顯著以資料加密標準、三重資料加 密標準以及進階加密標準為其特徵,但本發明也包含較少 人知的區塊密碼演算法,例如:MARS密碼、Rijndael 密碼、Twoilsh密碼、Blowfish密碼、Serpent密碼以 及RC6密碼。足以理解的是,本發明提供在微處理器中 用於區塊密碼的裝置及支援的演算法,其基元區塊密碼運 算可透過單一指令的執行而引動。 ® 並且,雖然本發明在此以區塊密碼演算及其相關技術 以執行區塊密碼功能為特徵,但是除了區塊密碼之外其他 形式的密碼也包含於本發明應用範圍之内。可足以觀察的 是,提供一單一指令,藉此,使用者可指示一相稱的微處 理器執行一密碼運算,例如:加密或解密,其中微處理器 包含一密碼單元,此密碼單元依指示完成指令所指定的密 碼功能。 並且,在此所討論的回合引擎提供一兩階裝置可管線 處理兩區塊的輸入資料,但其他實施例也可考慮多於兩階 • 段裝置。階段的分配對支援更多輸入資料區塊的管線處 理,將發展協調相稱微處理器中其他階段的分配。 最後,雖然本發明具體討論支援複數個演算法之一單 獨密碼單元,但是本發明也提供理解在一相稱微處理器中 與其他執行單元並列操作耦合的多密碼單元,而每一多密 碼單元係配置用以執行一具體指定的密碼演算,例如:一 第一單元係配置用以執行進階加密標準演算法、一第二單 元係配置用以執行資料加密標準演算法等。 以上所述僅為本發明之較佳實施例而已,並非用以限 定本發明申請專利範圍;凡其他為脫離本發明所揭示之精 50 1303936 神下所完成之等效改變或修飾,均應包含在下述申請專利 範圍。 【圖式簡單說明】 第一圖係現今密碼應用的示意圖; 第二圖係執行密碼運算技術的示意圖; 第三圖係本發明執行密碼運算之微處理器裝置的示意圖; 第四圖係本發明之基元(atomic)密碼指令實施例的示意 圖, 第五圖係第四圖之基元密碼指令區塊加密模式欄位值之 範例的表格; 第六圖係本發明在X86相容微處理器之密碼單元的方塊 圖; 第七圖係第六圖之微處理器中指示密碼次運算之範例微 指令搁位的不意圖, • 第八圖係第七圖之載入微指令暫存欄位值格式的表格; 第九圖係第七圖之儲存微指令暫存欄位值格式的表格; 第十圖係本發明一較佳實施例指定密碼運算參數之控制 字組格式範例的示意圖; 第十一圖係第十圖之控制字組產生鑰匙欄位值的表格; 第十二圖係本發明之一較佳實施例密碼單元的方塊圖; 第十三圖係本發明執行有關進階加密標準演算法密碼運 算之一區塊加密邏輯電路實施例的方塊圖; 第十四圖係本發明之一進階加密標準實施例之一 128位 51 1303936 元密碼鑰匙擴展邏輯電路之示意圖; 第十五圖係本發明一較佳實施例在一中斷事件期間保留 密碼參數狀態之方法流程圖;以及 第十六圖係本發明一較佳實施例在至少一個中斷事件 時,擴展一密碼鑰匙成一對應之鑰匙排程以在複數個輸入 資料區塊執行一密碼運算之方法流程圖。 【主要元件符號說明】 φ 100 電腦密碼應用之方塊圖 101、102、103 電腦工作站 104 筆記型電腦 105 區域網路 106 網路檔案儲存裝置 107、 111 路由器 108 無線網路路由器 109 無線網路 110 廣域網路 112 加密/解密應用程式 200 密碼運算執行技術之方塊圖 201 微處理器 202 操作系統 203 應用記憶體 204 密碼鑰匙產生應用程式 205 錄匙排程 206 加密應用程式 207 解密應用程式 208 初始向量 209 密碼蒼數 210 明文 211 密文 300 執行密碼運算微處理器之方塊圖 301 微處理器 302 擷取邏輯電路 52 轉譯邏輯電路 304 微指令佇列 儲存指令 306 載入指令 暫存器組 308 控制字組指標 输匙指標 310 初始向量指標 輸入文字指標 312 輸出文字指標 區塊計數 314 載入邏輯電路 資料快取 316 密碼單元 儲存邏輯電路 318 寫回邏輯電路 記憶體匯流排 320 操作系統 系統記憶體 322 密碼指令 密碼控制字組 初始密碼錄匙或錄匙排程 初始向量 326 輸入文字 輸出文字 328 執行邏輯電路 密碼指令 401 選項前置欄位 重複前置欄位 403 X功能運算碼欄位 區塊密碼模式欄位 區塊密碼模式欄位值之表格 微處理器 601 擷取邏輯電路 轉譯邏輯電路 603 轉譯器 微碼唯讀記憶體 605 暫存階段 定址階段 607 載入階段 執行階段 53 1303936
609、611、613、615 微佇列 610 整數單元 612 浮點單元 614 多媒體延伸集單元 616 串流延伸集單元 617 密碼單元 618 儲存階段 619 寫回階段 620 載入匯流排 621 暫停信號匯流排 622 儲存匯流排 624 旗標暫存器 625 X位元 626 中斷邏輯電路 627 中斷信號 628 機器特殊暫存器 629 E位元 630 特徵控制暫存器 631 D位元 632 執行邏輯電路 634 匯流排 640 錄匙產生邏輯電路 700 微指令 701 微運算碼欄位 702 資料暫存器欄位 703 暫存器欄位 800 載入微指令暫存器欄位值之表格 900 儲存微指令暫存器欄位值之表格 1000 控制字組格式 1001 保留欄位 1002 貢料區塊大小搁位 1003 錄匙大小搁位 1004 加密/解密攔位 1005 中間結果攔位 1006 鑰匙產生欄位 1007 演算欄位 1008 回合計算欄位 1100 鑰匙產生欄位值之表格 1200 密碼單元 1201 區塊密碼邏輯電路 1202 鑰匙隨機存取記憶體 1203 微指令暫存器 54 1303936 1300區塊密碼邏輯電路之方塊圖 1204控制字組暫存器 1207、1208 鑰匙暫存器 1211載入匯流排 1213暫停信號 1220鑰匙擴展邏輯電路 1301微指令暫存器 1303、1304 鑰匙暫存器 1307、1308 輸出暫存器 1311加密/解密匯流排 1313鑰匙匯流排 1205、1206輸入暫存器 1209、1210輸出暫存器 1212儲存匯流排 1214微指令匯流排 1302控制字組暫存器 1305、1306輸入暫存器 1310回合引擎控制器 1312回合計算匯流排 1314鑰匙產生匯流排 1315鑰匙隨機存取記憶體匯流排 NEXTIN匯流排 回合引擎 S-BOX邏輯電路 第二暫存器 第三暫存器 鍮匙擴展邏輯電路 鑰匙擴展邏輯電路 第一暫存器 1316、1317 匯流排 1318 1319鑰匙大小匯流排 1320
1321第一鑰匙互斥或邏輯電路 1322第一暫存器 1323 1324移列邏輯電路 1325 1326混欄邏輯電路 1327 1330鑰匙大小控制器 1331 1332回合鑰匙匯流排 1400 1401鑰匙緩衝器 1402 1403 S-BOX邏輯電路 1404〜1406、1409〜1412互斥或閘 55 1303936 1407 第二暫存器 1408 回合常數邏輯電路 1413 第三暫存器 1414 回合鑰匙緩衝器 1415 、1416 匯流排 1417 回合管理器 1502 開始 1504 中斷? 1506 清除X位元 1508 儲存架構暫存器 1510 處理中斷 1512 結束 1602 開始 1604 載入輸入區塊(預設) 並開始 1606 X位元是否設定? 1608 載入控制字組並重 1610 自動產生鑰匙排程? 1612 載入鑰匙 1614 擴展鑰匙成鑰匙排程並寫入鑰匙隨機存取記憶體 1616 載入鑰匙排程並寫入鑰匙隨機存取記憶體 1618 載入輸入區塊(再次) 並開始 1620 產生輸出區塊 1622 儲存輸出區塊至記 1624 更新區塊計數及指標 1626 區塊計數是否為零 1628 載入輸入區塊並開始 1630 結束 56

Claims (1)

1303936 十、申請專利範圍: 1·一執行密碼運算之裝置,包含: :密5 ϊ ΐ ΐ ΐ ’用以產生一密碼指令,該密碼指令係 ΐί:ΐ及:i’A 指,定該些密碼運算其 供ί ΐ ϊ ί 2展成—對應丁:二指使定用一;已提 :鍮遣產生邏輯電路,操作麵合 =路 成該對應之鍮匙^,^擴展该已提供之密碼鑰匙 ;:=ίΐ’操作輕合於該鑰匙產生邏輯電路,且 i配置㈣展μ提供之密碼料成該對應之U 數:加密密文運4包含加密複數個明文區塊’以 3.如申請專利範圍第1 甲該密碼運算更包含所述之執仃密碼運算之裝置,其 一解密運算,該解密運算包含 產生相對複數個明文區t 3解料數個密文區塊,以 第1項所述之執行密碼運㈣置,立 中:亥已提供之密碼鑰匙係 之衣置,其 中該對應之鑰匙排程係包斤密碼運算之裝置’其 鑰匙排程係依照進階加密禪準鑰匙排程,且該擴展 6.如申請專利範園第i項所‘規則。 中該鎗匙產生邏輯電路係^行密碼運算之裝置’其 之一餘匙產生攔位,且該斑用^轉譯一控制字組十 *馬‘令參照該控制字組。 57 1303936 7:申請專利範圍第!項所述之執行密 =密碼指令係依據x86指令格式指二,衣置、、 中隱以;碼運算之裝置,其 暫項所'二執^算數之個裝暫置存器其 據欲完成之被指定之密碼係依 1〇置,以存取複數個輸入文字運^曰。疋以思體内一第一位 輪3=中其之ti該/:暫存器之内容係指示複數個 其中該些暫存ϋ包含:所4之執行密碼運算之裝置, ^ - 記憶體内—第g罘;:扣私,该苐三記憶體位址指定 被指定Ξ密is置以存取密碼鑰匙資料,以用於完成 13置如申4^圍,12項所述之執行密碼運算之裝 …翁碼鑰匙資料係包含該已提供之密碼:匙: 58 1303936 14·如申請專利範圍第8項所述之執行密碼運算之裝置, 其中該些暫存器包含: 第五暫存器,其中該第五暫存器之内容係包含指向一 苐四記憶體位址之-第四指標,該第四記憶體位址指定 J憶體内一第四位置,該第四位置包含-初始向量位 初始向量位置之内容包含一初始向量或一初始向 里等效物以用於完成被指定之密碼運算。 5·=申印專利範圍第8項所述之執行密碼運算之裝置, 其中該些暫存器包含: 筮ί f Ϊ ί器’其中該第六暫存器之内容係包含指向- 記情3二二2址之一第五指標,該第五記憶體位址指定 L二夕力位置以存取—控制字組以用於完成被 异,其中該控制字組指定被指定之密碼運 异之f碼參數,該控制字組包含: :岔匙產生攔位,係配置用以指定在被指定之 排3:^@供之密碼輪匙擴展成該對應之餘匙 &所狀執行㈣運算之裝置, 合置 17二執行密碼運算之裝置,包含: 些元並單元係配置用以執行該 令,該密碼指令指定被^收-指令流内—密碼指 穷石馬運曾拥:/被扣疋之密碼運算以及在被指定之 匙排程U用月間一密碼鑰匙擴展成-對應之鍮 59 1303936 一鑰匙產生邏輯電路,操作輕合於該 ,以指示該元件,以執行被指定之资且係配置 密碼鑰匙成該對應之鑰匙排程。* ”、、運异並以擴展該 18·如申請專利範圍第I?項 置,其中該密碼鑰匙係被儲存碼運算之裝 19置如申圍$17項所述之執行密碼運瞀之f 置其中該對應之鑰匙排程係包含一 1厂之衣 此擴展鑰匙排•係依照進階加密 排程’且 2〇·如申請專利範圍第17項所° t其中該鍮匙產生邏輯電路係配置用 組^之-鑰起產生攔位’且該密碼指令參照該控制字 21置如^專利㈣第17項所述之執行密碼運算之裝 29 —’I、中該密碼指令係依據Χ86指令格式指定。 丄一種在一裝置執行密碼運算之方法,包含: ,,二密碼指令’該密碼指令在複數個密碼運算其中之 以徂期間指定一密碼输匙擴展成一對應之鑰匙排程 以供使用;以及 擴展該密碼鍮匙成該對應之鑰匙排程。 專利範圍帛22 g所述之在-裝置執行密碼運 ^之方法,其中該接收包含: ^由一控制字組之一攔位指定該密碼鑰匙擴展成該對 =之鑰匙排程,其中該控制字組係由該密碼指令所參 照。 4 jn申4專利範圍第22項所述之在一裝置執行密碼運 t之方法,其中該擴展包含: 攸σ己丨5體载入該密碼输匙。 ^申明專利範圍第22項所述之在一裝置執行密碼運 异之方法,其中該對應之鑰匙排程係包含一擴展鑰匙排 1303936 程,且此擴展鑰匙排程係依照進階加密標準之規則。 26.如申請專利範圍第22項所述之在一裝置執行密碼運 算之方法,其中該接收包含: 指定該密碼指令係依據x86指令格式。
TW094107078A 2004-04-16 2005-03-09 Apparatus and method for generating a cryptographic key schedule in a microprocessor TWI303936B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/826,632 US7539876B2 (en) 2003-04-18 2004-04-16 Apparatus and method for generating a cryptographic key schedule in a microprocessor

Publications (2)

Publication Number Publication Date
TW200536331A TW200536331A (en) 2005-11-01
TWI303936B true TWI303936B (en) 2008-12-01

Family

ID=34912745

Family Applications (1)

Application Number Title Priority Date Filing Date
TW094107078A TWI303936B (en) 2004-04-16 2005-03-09 Apparatus and method for generating a cryptographic key schedule in a microprocessor

Country Status (4)

Country Link
US (1) US7539876B2 (zh)
EP (1) EP1586971B1 (zh)
CN (1) CN1655496B (zh)
TW (1) TWI303936B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI554072B (zh) * 2011-03-14 2016-10-11 摩托羅拉解決方案公司 用於客製化倫多(Rijndael)區塊加密之方法

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2823039B1 (fr) * 2001-03-30 2003-08-01 Canal Plus Technologies Systeme et procede de transmission d'informations chiffrees a cle chiffree
US10572824B2 (en) 2003-05-23 2020-02-25 Ip Reservoir, Llc System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines
JP2007524923A (ja) 2003-05-23 2007-08-30 ワシントン ユニヴァーシティー Fpgaデバイスを使用するインテリジェントデータ記憶および処理
US7783037B1 (en) * 2004-09-20 2010-08-24 Globalfoundries Inc. Multi-gigabit per second computing of the rijndael inverse cipher
US7933405B2 (en) * 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
WO2007121035A2 (en) * 2006-03-23 2007-10-25 Exegy Incorporated Method and system for high throughput blockwise independent encryption/decryption
US8538015B2 (en) * 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
JP2008270870A (ja) * 2007-04-16 2008-11-06 Sony Corp 通信システム、通信装置及び通信方法、並びにコンピュータ・プログラム
WO2009029842A1 (en) 2007-08-31 2009-03-05 Exegy Incorporated Method and apparatus for hardware-accelerated encryption/decryption
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US8654970B2 (en) * 2009-03-31 2014-02-18 Oracle America, Inc. Apparatus and method for implementing instruction support for the data encryption standard (DES) algorithm
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi cipher algorithm
US10929401B2 (en) 2009-04-16 2021-02-23 Tibco Software Inc. Policy-based storage structure distribution
US8356185B2 (en) * 2009-10-08 2013-01-15 Oracle America, Inc. Apparatus and method for local operand bypassing for cryptographic instructions
US10454674B1 (en) * 2009-11-16 2019-10-22 Arm Limited System, method, and device of authenticated encryption of messages
US9231758B2 (en) 2009-11-16 2016-01-05 Arm Technologies Israel Ltd. System, device, and method of provisioning cryptographic data to electronic devices
WO2011058533A2 (en) * 2009-11-16 2011-05-19 Discretix Technologies Ltd. Methods circuits devices and systems for provisioning of cryptographic data to one or more electronic devices
TWI427503B (zh) * 2010-10-14 2014-02-21 Yu Chun Kuo 時空鎖
US8966279B2 (en) * 2010-12-21 2015-02-24 Apple Inc. Securing the implementation of a cryptographic process using key expansion
US8737604B2 (en) 2011-05-09 2014-05-27 Advanced Micro Devices, Inc. Processor with architecture implementing the advanced encryption standard
JP2013247511A (ja) * 2012-05-25 2013-12-09 Meijo University 耐タンパ性評価方法,そのプログラム及び耐タンパ性評価装置
US10318748B2 (en) * 2016-09-30 2019-06-11 Intel Corporation Techniques to protect fuses against non-destructive attacks
WO2018119035A1 (en) 2016-12-22 2018-06-28 Ip Reservoir, Llc Pipelines for hardware-accelerated machine learning
US11271723B2 (en) * 2018-11-08 2022-03-08 Daniel Eugene Hale Apparatus and method for unbreakable data encryption

Family Cites Families (87)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4316055A (en) 1976-12-30 1982-02-16 International Business Machines Corporation Stream/block cipher crytographic system
US4168396A (en) 1977-10-31 1979-09-18 Best Robert M Microprocessor for executing enciphered programs
US4278837A (en) 1977-10-31 1981-07-14 Best Robert M Crypto microprocessor for executing enciphered programs
US4386234A (en) 1977-12-05 1983-05-31 International Business Machines Corp. Cryptographic communication and file security using terminals
US4250546A (en) 1978-07-31 1981-02-10 Motorola, Inc. Fast interrupt method
US4275265A (en) 1978-10-02 1981-06-23 Wisconsin Alumni Research Foundation Complete substitution permutation enciphering and deciphering circuit
US4465901A (en) 1979-06-04 1984-08-14 Best Robert M Crypto microprocessor that executes enciphered programs
US4319079A (en) 1979-09-13 1982-03-09 Best Robert M Crypto microprocessor using block cipher
JPS57176457A (en) 1981-04-24 1982-10-29 Hitachi Ltd Data processor
US4668103A (en) 1982-04-30 1987-05-26 Wilson William J Polygraphic encryption-decryption communications system
US4633388A (en) 1984-01-18 1986-12-30 Siemens Corporate Research & Support, Inc. On-chip microprocessor instruction decoder having hardware for selectively bypassing on-chip circuitry used to decipher encrypted instruction codes
DE3432721A1 (de) 1984-09-06 1986-03-06 Ruediger Hahn Datenschuetzender standard-mikroprozessor
EP0277247B1 (en) 1986-07-31 1994-05-04 Kabushiki Kaisya Advance System for generating a shared cryptographic key and a communication system using the shared cryptographic key
US5218637A (en) 1987-09-07 1993-06-08 L'etat Francais Represente Par Le Ministre Des Postes, Des Telecommunications Et De L'espace Method of transferring a secret, by the exchange of two certificates between two microcomputers which establish reciprocal authorization
US4888802A (en) 1988-06-17 1989-12-19 Ncr Corporation System and method for providing for secure encryptor key management
DE59007408D1 (de) 1989-02-08 1994-11-17 Gretag Data Systems Ag Verfahren zum kryptographischen Behandeln von Daten und kryptographisches System.
US5134713A (en) 1989-05-19 1992-07-28 Compaq Computer Corporation Coprocessor detection circuit
US5161193A (en) 1990-06-29 1992-11-03 Digital Equipment Corporation Pipelined cryptography processor and method for its use in communication networks
US5265164A (en) 1991-10-31 1993-11-23 International Business Machines Corporation Cryptographic facility environment backup/restore and replication in a public key cryptosystem
CA2136919A1 (en) 1993-12-09 1995-06-10 John Timothy Hember Local area network encryption decryption system
US5666411A (en) 1994-01-13 1997-09-09 Mccarty; Johnnie C. System for computer software protection
JPH0823331A (ja) 1994-07-07 1996-01-23 Murata Mach Ltd 暗号化通信方法及び装置
US5615263A (en) 1995-01-06 1997-03-25 Vlsi Technology, Inc. Dual purpose security architecture with protected internal operating system
US5673319A (en) 1995-02-06 1997-09-30 International Business Machines Corporation Block cipher mode of operation for secure, length-preserving encryption
US7124302B2 (en) 1995-02-13 2006-10-17 Intertrust Technologies Corp. Systems and methods for secure transaction management and electronic rights protection
US6006328A (en) 1995-07-14 1999-12-21 Christopher N. Drake Computer software authentication, protection, and security system
US5870470A (en) 1996-02-20 1999-02-09 International Business Machines Corporation Method and apparatus for encrypting long blocks using a short-block encryption procedure
US6021201A (en) 1997-01-07 2000-02-01 Intel Corporation Method and apparatus for integrated ciphering and hashing
US5828873A (en) 1997-03-19 1998-10-27 Advanced Micro Devices, Inc. Assembly queue for a floating point unit
US6101255A (en) 1997-04-30 2000-08-08 Motorola, Inc. Programmable cryptographic processing system and method
US6026490A (en) 1997-08-01 2000-02-15 Motorola, Inc. Configurable cryptographic processing engine and method
US6182216B1 (en) 1997-09-17 2001-01-30 Frank C. Luyster Block cipher method
US6000029A (en) 1997-11-03 1999-12-07 Motorola, Inc. Method and apparatus for affecting subsequent instruction processing in a data processor
US6081884A (en) 1998-01-05 2000-06-27 Advanced Micro Devices, Inc. Embedding two different instruction sets within a single long instruction word using predecode bits
US6981149B1 (en) 1998-01-27 2005-12-27 Spyrus, Inc. Secure, easy and/or irreversible customization of cryptographic device
US6088800A (en) 1998-02-27 2000-07-11 Mosaid Technologies, Incorporated Encryption processor with shared memory interconnect
KR100296958B1 (ko) * 1998-05-06 2001-09-22 이석우 블록 데이터 암호화 장치
US6301362B1 (en) 1998-06-12 2001-10-09 International Business Machines Corporation Method and apparatus for cryptographically transforming an input block into an output block
US6269163B1 (en) 1998-06-15 2001-07-31 Rsa Security Inc. Enhanced block ciphers with data-dependent rotations
TW375721B (en) 1998-06-17 1999-12-01 Ind Tech Res Inst DES chip processor capable of executing data encryption standard (DES) operation
JP3768705B2 (ja) 1998-11-27 2006-04-19 キヤノン株式会社 電子透かし埋め込み装置、出力制御装置及びコンピュータ読み取り可能な記憶媒体
US6694430B1 (en) 1999-03-05 2004-02-17 Symbol Technologies, Inc. Data encryption integrated circuit with on-board dual-use memory
WO2000076119A1 (en) 1999-06-08 2000-12-14 General Instrument Corporation Cryptographic processing system
US6483918B2 (en) 1999-06-09 2002-11-19 Microsoft Corporation Technique for producing a parameter, such as a checksum, through a primitive that uses elementary register operations
US6570988B1 (en) 1999-06-09 2003-05-27 Microsoft Corporation Simple technique for implementing a cryptographic primitive using elementary register operations
US6598165B1 (en) 1999-06-18 2003-07-22 Phoenix Technologies Ltd. Secure memory
BR9903609A (pt) 1999-08-27 2001-04-24 Coppe Ufrj Processo de implementação em hardware do algorìtimo criptográfico idea- hipcrypto
US7032100B1 (en) 1999-12-17 2006-04-18 Koninklijke Philips Electronics N.V. Simple algorithmic cryptography engine
EP1117031B1 (en) 2000-01-14 2007-07-11 Texas Instruments France Microprocessor with reduced power-consumption.
US7184549B2 (en) 2000-01-14 2007-02-27 Mitsubishi Denki Kabushiki Kaisha Method and apparatus for encryption, method and apparatus for decryption, and computer-readable medium storing program
WO2001056221A2 (en) 2000-01-31 2001-08-02 Vdg Inc. Block encryption method and schemes for data confidentiality and integrity protection
US6983374B2 (en) 2000-02-14 2006-01-03 Kabushiki Kaisha Toshiba Tamper resistant microprocessor
US6859537B1 (en) 2000-02-17 2005-02-22 The United States Of America As Represented By The Secretary Of The Navy Non-volatile memory for use with an encryption device
AU2001243365A1 (en) 2000-03-02 2001-09-12 Alarity Corporation System and method for process protection
JP3864675B2 (ja) 2000-03-09 2007-01-10 株式会社日立製作所 共通鍵暗号装置
AU2001249511A1 (en) 2000-03-31 2001-10-15 Vdg Inc. Authentication method and schemes for data integrity protection
KR20030062232A (ko) 2000-05-01 2003-07-23 인터내셔널 비지네스 머신즈 코포레이션 짧은 오퍼레이션을 위한 대칭키 암호화 방법
US20010050989A1 (en) * 2000-06-07 2001-12-13 Jabari Zakiya Systems and methods for implementing encryption algorithms
JP3505482B2 (ja) 2000-07-12 2004-03-08 株式会社東芝 暗号化装置、復号装置及び拡大鍵生成装置、拡大鍵生成方法並びに記録媒体
US20020048364A1 (en) 2000-08-24 2002-04-25 Vdg, Inc. Parallel block encryption method and modes for data confidentiality and integrity protection
JP4153653B2 (ja) 2000-10-31 2008-09-24 株式会社東芝 マイクロプロセッサおよびデータ保護方法
US7502463B2 (en) 2000-12-13 2009-03-10 Broadcom Corporation Methods and apparatus for implementing a cryptography engine
US20020101985A1 (en) 2001-01-26 2002-08-01 International Business Machines Corporation Single-cycle hardware implementation of crypto-function for high throughput crypto-processing
US7106860B1 (en) * 2001-02-06 2006-09-12 Conexant, Inc. System and method for executing Advanced Encryption Standard (AES) algorithm
US20020162026A1 (en) 2001-02-06 2002-10-31 Michael Neuman Apparatus and method for providing secure network communication
US6937727B2 (en) * 2001-06-08 2005-08-30 Corrent Corporation Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels
US7073059B2 (en) 2001-06-08 2006-07-04 Hewlett-Packard Development Company, L.P. Secure machine platform that interfaces to operating systems and customized control programs
JP3851115B2 (ja) 2001-06-28 2006-11-29 富士通株式会社 暗号回路
US6789147B1 (en) 2001-07-24 2004-09-07 Cavium Networks Interface for a security coprocessor
US7142557B2 (en) * 2001-12-03 2006-11-28 Xilinx, Inc. Programmable logic device for wireless local area network
US20030039354A1 (en) 2001-08-27 2003-02-27 Kimble David E. FIFO architecture with in-place cryptographic service
JP4226816B2 (ja) 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ
US7248585B2 (en) 2001-10-22 2007-07-24 Sun Microsystems, Inc. Method and apparatus for a packet classifier
US7137004B2 (en) 2001-11-16 2006-11-14 Microsoft Corporation Manifest-based trusted agent management in a trusted operating system environment
US7400722B2 (en) 2002-03-28 2008-07-15 Broadcom Corporation Methods and apparatus for performing hash operations in a cryptography accelerator
US7221763B2 (en) * 2002-04-24 2007-05-22 Silicon Storage Technology, Inc. High throughput AES architecture
JP2005527853A (ja) 2002-05-23 2005-09-15 アトメル・コーポレイション 高度暗号化規格(aes)のハードウェア暗号法エンジン
TWI282066B (en) 2002-08-22 2007-06-01 Ip First Llc Apparatus and method for extending data modes in a microprocessor
US20040047466A1 (en) * 2002-09-06 2004-03-11 Joel Feldman Advanced encryption standard hardware accelerator and method
US8667252B2 (en) 2002-11-21 2014-03-04 Stmicroelectronics, Inc. Method and apparatus to adapt the clock rate of a programmable coprocessor for optimal performance and power dissipation
US20040202317A1 (en) * 2002-12-20 2004-10-14 Victor Demjanenko Advanced encryption standard (AES) implementation as an instruction set extension
US6861865B1 (en) 2003-03-11 2005-03-01 Cavium Networks Apparatus and method for repairing logic blocks
US7661130B2 (en) 2003-04-12 2010-02-09 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processing architecture using multiple queuing mechanisms
US7337314B2 (en) 2003-04-12 2008-02-26 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processor
US7657933B2 (en) 2003-04-12 2010-02-02 Cavium Networks, Inc. Apparatus and method for allocating resources within a security processing architecture using multiple groups
US6919684B2 (en) 2003-05-27 2005-07-19 Satco Products, Inc. Halogen 3-way light bulb
TWI274281B (en) * 2003-12-04 2007-02-21 Ip First Llc Apparatus and method for performing transparent block cipher cryptographic functions

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI554072B (zh) * 2011-03-14 2016-10-11 摩托羅拉解決方案公司 用於客製化倫多(Rijndael)區塊加密之方法

Also Published As

Publication number Publication date
EP1586971A2 (en) 2005-10-19
US7539876B2 (en) 2009-05-26
CN1655496A (zh) 2005-08-17
EP1586971B1 (en) 2015-01-07
EP1586971A3 (en) 2006-09-27
TW200536331A (en) 2005-11-01
CN1655496B (zh) 2010-07-14
US20040255130A1 (en) 2004-12-16

Similar Documents

Publication Publication Date Title
TWI303936B (en) Apparatus and method for generating a cryptographic key schedule in a microprocessor
US7321910B2 (en) Microprocessor apparatus and method for performing block cipher cryptographic functions
EP1596530B1 (en) Apparatus and method for employing cryptographic functions to generate a message digest
US7532722B2 (en) Apparatus and method for performing transparent block cipher cryptographic functions
US7844053B2 (en) Microprocessor apparatus and method for performing block cipher cryptographic functions
EP1519509B1 (en) Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine
US7392400B2 (en) Microprocessor apparatus and method for optimizing block cipher cryptographic functions
US7502943B2 (en) Microprocessor apparatus and method for providing configurable cryptographic block cipher round results
US7536560B2 (en) Microprocessor apparatus and method for providing configurable cryptographic key size
US7529368B2 (en) Apparatus and method for performing transparent output feedback mode cryptographic functions
US7900055B2 (en) Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms
US7542566B2 (en) Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
US7519833B2 (en) Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine
CN100391145C (zh) 重组透明化区块密码编译方法及装置
US7529367B2 (en) Apparatus and method for performing transparent cipher feedback mode cryptographic functions
TW200531494A (en) Microprocessor apparatus and method for optimizing block cipher cryptographic functions
TWI247241B (en) Microprocessor apparatus and method for performing block cipher cryptographic functions
TW200536332A (en) Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine
TW200536335A (en) Apparatus and method for performing transparent cipher feedback mode cryptographic functions
TWI258289B (en) Microprocessor apparatus and method for providing configurable cryptographic block cipher round results
TW200536330A (en) Apparatus and method for performing transparent output feedback mode cryptographic functions