CN1684409A - 可设定密码金钥大小的微处理器装置及方法 - Google Patents

可设定密码金钥大小的微处理器装置及方法 Download PDF

Info

Publication number
CN1684409A
CN1684409A CN 200510059865 CN200510059865A CN1684409A CN 1684409 A CN1684409 A CN 1684409A CN 200510059865 CN200510059865 CN 200510059865 CN 200510059865 A CN200510059865 A CN 200510059865A CN 1684409 A CN1684409 A CN 1684409A
Authority
CN
China
Prior art keywords
password
crypto
buffer
key
instruction
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
CN 200510059865
Other languages
English (en)
Other versions
CN100539495C (zh
Inventor
G·葛伦亨利
汤姆士A·克理斯宾
泰利派克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies 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
Priority claimed from US10/826,475 external-priority patent/US7536560B2/en
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN1684409A publication Critical patent/CN1684409A/zh
Application granted granted Critical
Publication of CN100539495C publication Critical patent/CN100539495C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明是有关于一种可设定密码金钥大小的微处理器装置及方法,是一种在一计算装置中利用可程式化密码金钥大小对复数个输入资料区块执行密码运算的装置及方法。例如,一种执行密码运算的装置,该装置包括密码指令电路及执行逻辑电路,该密码指令电路是提供至少一密码指令,通过一计算设备接收以作为在计算设备上执行一指令流的部分。密码指令电路指定复数个密码运算之一者,并亦指定复数种密码金钥大小之一者。在运算上,执行逻辑电路耦合至密码指令电路,并执行被指定的密码运算。执行逻辑电路具有一密码金钥大小控制器,该控制器在执行被指定的密码运算期间使用被指定的密码金钥大小。

Description

可设定密码金钥大小的微处理器装置及方法
相关参考专利
本申请引用相对应美国专利申请案的优先权,其为第10/826475号,申请日为2004年4月16日,名称为“MICROPROCESSOR APPARATUS AND METHODFOR PROVIDING CONFIGURABLE CRYPTOGRAPHIC KEY SIZE”。
本申请案的优先权也引用自下列美国暂时申请案件。
序号          申请日             名称
                        MICROPROCESSOR APPARATUS AND
60/506971
             9/29/2003  METHOD FOR OPTIMIZING BLOCK CIPHER
(CNTR.2070)
                        CRYPTOGRAPHIC FUNCTIONS
                        APPARATUS AND METHOD FOR
60/507001               PERFORMING OPERATING SYSTEM
             9/29/200
(CNTR.2071)             TRANSPARENT BLOCK CIPHER
                        CRYPTOGRPHIC FUNCTIONS
                        MICROPROCESSOR APPARATUS AND
60/506978               MENTOD FOR EMPLOYING CONFIGURABLE
             9/29/2003
(CNTR.2072)             BLOCK CIPHER CRYPTOGRAPHIC
                        ALGORITHMS
                        APPARATUS AND METHOD FOR PROVIDING
60/507004               USER-GENERATED KEY SCHEDULE IN A
             9/29/2003
(CNTR.2073)             MICROPROCESSOR CRYPTOGRAPHIC
                        ENGINE
                        MICROPROCESSOR APPARATUS AND
60/507002               METHOD FOR PROVIDING CONFIGURABLE
             9/29/2003
(CNTR.2075)             CRYPTHOGRAPHIC BLOCK CIPHER ROUND
                        RESULTS
                        MICROPROCESSOR APPARATUS AND
60/506991               METHOD FOR ENABLING CONFIGURABLE
             9/29/2003
(CNTR.2076)             DATA BLOCK SIZE IN A CRYPTOGRAPHIC
                        ENGINE
                        APPARATUS FOR ACCELERATING BLOCK
60/507003
             9/29/2003  CIPHER CRYPTOGRAPHIC FUNCTIONS IN
(CNTR.2078)
                        A MI CROPROCESSOR
60/464394
             4/18/2003  ADVANCED CRYPTOGRAPHY UNIT
(CNTR.2222)
                        MI CROPROCESSOR APPARATUS AND
60/506979
             9/29/2003  METHOD FOR PROVIDING CONFIGURABLE
(CNTR.2223)
                        CRYPTHOGRAPHIC KEY SIZE
                        APPARATUS AND METHOD FOR
60/508927               PERFORMING OPERATING SYSTEM
             10/3/2003
(CNTR.2226)             TRANSPARENT CIPHER BLOCK CHANING
                        MODE CRYPTOGRAPHIC FUNCTIONS
                        APPARATUS AND METHOD FOR
60/508679               PERFORMING OPERATING SYSTEM
             10/3/2003
(CNTR.2227)             TRANSPARENT CIPHER FEEDBACK MODE
                        CRYPTOGRAPHIC FUNCTIONS
                        APPARATUS AND METHOD FOR
60/508076    10/3/2003  PERFORMING OPERATING SYSTEM
(CNTR.2228)             TRANSPARENT OUTPUT FEEDBACK MODE
                        CRYPTOGRAPHIC FUNCTIONS
                        APPARATUS AND METHOD FOR
60/508604
             10/3/2003  GENERATING A CRYPTOGRAPHIC KEY
(CNTR.2230)
                        SCHEDULE IN A MICROPROCESSOR
本申请案为下列美国专利申请案的续案,并有一位共同的让渡者与共同发明人。
序号          申请日                  名称
                        MICROPROCESSOR APPARATUS AND METHOD FOR
10/674057
             9/29/2003  PERFORMING BLOCK CIPHER CRYPTOGRAPHIC
(CNTR.2224)
                        FUNCTIONS
又本申请案与下列的美国专利申请案相关连,并有一位共同的让渡者与共同发明人。
序号         申请日                  名称
                        MICROPROCESSOR APPARATUS AND METHOD
10/730167
             12/5/2003  FOR PERFORMING BLOCK CIPHER
(CNTR.2224-C1)
                        CRYPTOGRAPHIC FUNCTIONS
10800768                MICROPROCESSOR APPARATUS AND METHOD
             3/15/2004
(CNTR.2070)             FOR OPTIMIZING BLOCK CIPHER
                        CRYPTOGRAPHIC FUNCTIONS
                        APPARATUS AND METHOD FOR PERFORMING
10/727973
             12/4/2003  TRANSPARENT BLOCK CIPHER
(CNTR.2071)
                        CRYPTOGRAPHIC FUNCTIONS
                        MICROPROCESSOR APPARATUS AND METHOD
10/800938
             3/15/2004  FOR EMPLOYING CONFIGURABLE BLOCK
(CNTR.2072)
                        CIPHER CRYPTOGRAPHIC ALGORITHMS
                        APPARATUS AND METHOD FOR PROVIDING
10/800983
             3/15/2004  USER-GENERATED KEY SHEDULE IN A
(CNTR.2073)
                        MICROPROCESSOR CRYPTOGRAPHIC ENGINE
                        MICROPROCESSOR APPARATUS AND METHOD
(CNTR.2076)  HEREWITH   FOR ENABLING CONFIGURABLE DATA BLOCK
                        SIZE IN A CRYPTOGRAPHIC ENGINE
                        MICROPROCESSOR APPARATUS AND METHOD
(CNTR.2223)  HEREWITH   FOR PROVIDING CONFIGURABLE
                        CRYPTOGRAPHIC KEY SIZE
                        APPARATUS AND METHOD FOR PERFORMING
(CNTR.2226)  HEREWITH   TRANSPARENT CIPHER BLOCK CHAINING
                        MODE CRYPTOGRAPHIC FUNCTIONS
                        APPARATUS AND METHOD FOR PERFORMING
(CNTR.2227)  HEREWITH   TRANSPARENT CIPHER FEEDBACK MODE
                        CRYPTOGRAPIC FUNCTIONS
                        APPARATUS AND METHOD FOR PERFORMING
(CNTR.2228)  HEREWITH   TRANSPARENT OUTPUT FEEDBACK MODE
                        CRYPTOGRAPIC FUNCTIONS
                        APPARATUS AND METHOD FOR GENERATING A
(CNTR.2230)  HEREWITH   CRYPTOGRAPHIC KEY SCHEDULE IN A
                        MICROPROCESSOR
技术领域
本发明是关于微电子领域,更特定是关于一种用以在一计算装置中执行密码运算的装置及方法,其允许密码金钥的大小用以在指令阶层被程式化。
背景技术
早期的电脑系统与其它电脑系统是以独立方式运作,因为其上执行的应用程式的所需输入资料(资料即数据,以下均称为资料)非位于其中则为应用程式设计者在执行时提供之。当应用程式被执行时,其将产生输出资料,且输出资料一般为书面输出资料形式或被写至磁带、光碟或电脑系统的其它类型大量储存装置的档案形式。接着,输出资料档案可作为同一电脑系统中下一应用程式的输入档案;或当输出资料档案是先存于一可移动式或可携式大量储存装置中时,其甚至可作为另一不同但相容的电脑系统中应用程式的输入档案。在这些早期电脑系统上,逐渐了解保护敏感资讯的需求,并且在其他资讯安全措施中,密码程序是被发展及利用来保护未授权揭露的敏感资料。一般来说,这些密码程式对存于储存装置的输出资料加以加密及解密。
不久后,使用者开始发现网路电脑具有共用资讯的优点,因此网路架构、作业系统及资料传输协定齐步发展,使得资料不仅可以共享,资料的共享更具突出的功能。举例而言,现今的电脑工作站使用者普遍可取得不同工作站或网路档案伺服器上的档案,或可使用网际网路而取得新闻及其它资讯,或可在众多电脑之间来回发送及接收电子讯息(即电子邮件),或可与贩售商电脑系统相连而提供信用卡或银行业务资讯以向该贩售商订购产品,或可在餐厅、机场或其它公众场合使用无线网路而进行上述任何一项的动作。因此,敏感资料的免于未经授权公开的必要性不言可喻,使用者在使用电脑期间不得不对其敏感资料进行保护之例亦不胜枚举。由各种新闻标题不难得知,当前关于电脑资讯安全的种种骇人听闻的议题皆浮上台面,如垃圾邮件、网路骇客、身份窃取、反向工程、网路诈欺及信用卡诈骗等与民众相关的种种手段的出现等。而因为这些预谋的网路恐怖主义,以不正的手段入侵个人隐私范围的影响,故相关权责单位已以各项新法律、严厉条款及公众教育等条款反击之;然而,该等因应措施皆未在遏阻此一电脑资讯危机上达到有效成果,因此该项过去仅为政府、金融机构、军事单位及间谍人士所关注的议题,如今已成为一般利用家用电脑而读取电子邮件或进行帐户交易的民众所不得加以警戒的一大问题。电脑网路从业技术人员亦不难理解,现存大小公司在商业交易上皆需投注相当大部份的资源在其私有资讯的保护上。
在讯息安全范畴方面,已经逐渐发展出一些技术与装置可以让讯息只能够会被特定的对象所接收了解,即所谓的密码学(cryptography)。当特别应用于保护资讯时,其为在电脑之间储存或传送时,加密使用于传送敏感的讯息,已知的如“明文”(cleartext)或“本文”(plaintext)至不能了解的形式,例如“密文”(ciphertext),明文转换至密文的传送过程称“加密(encryption)”、“译成密码(enciphering)”、或“密码化(ciphering)”,且密文转换至明文的传送过程称“解密(decryption)”、“解除密码(deciphering)”、或“转换密码(inverse ciphering)”。
在密码范畴中,建立数个步骤及规则,来允许使用者不需要高度知识或努力来完成密码运算,且使这些使用者能够传送或以其他方式如加密形式提供其讯息给其他使用者。顺着加密讯息,传送者一般提供接受者一个不能使接受者解除加密讯息的“密码金钥”,因此接受者不能够移除或以其他方式增加未加密原始讯息的存取。一种技术将这些步骤或规则采取密码保护、数学运算及特别设计的应用程式形式将高敏感度讯息加密或解密。一些演算法类别使用于将资料加密或解密。在此提及的第一类演算法类别(如公共金钥(public key)密码演算法:RSA演算法)利用两种密码金钥(一种公共金钥及一种私人金钥(private key))来将资料加密或解密。提及一些公共金钥演算法,一种公共金钥利用来传送给接受者的资料加密。在使用者公共金钥及私人金钥兼有一个数学演算关系,接受者必须利用其私人金钥将传送资料解密以恢复资料。虽然此类密码演算法在今日广泛被使用,但加密及解密演算法速度仍然过慢,即使只加密与解密少量资料。第二类演算法,如对称金钥演算法(symmetric key algorithms),提供相当程度的资料安全,且速度更快。这些演算法称为对称金钥演算法,因为其使用密码金钥于加密及解密讯息。有三种公共习知的主要密码金钥演算法:资料加密标准(data encryption standard,DES)演算法、三重资料加密标准(TripleDES)演算法,以及进阶加密标准(advanced encryption standard,AES)演算法。因为这些演算法强度保护高敏感度资料,其现在由美国政府及其代理机构使用。但可以预期,这些技术中的至少一个将在未来成为商业或私人传送标准。根据这些对称金钥演算法,明文及密文是分别被区隔于一个特殊的大小来加密或解密。举例,在128位元大小区间的进阶加密标准完整密码演算法,且使用128、192及256位元的密码金钥。其他对称金钥演算法允许192及256位元资料组的进阶加密标准。提及区块加密运算,一种1024位元明文讯息为如八个128位元组加密。
全部的对称金钥演算法利用相同形式的子运算,将一明文区块加密。且提及一般更常使用的对称金钥演算法,一种最初密码金钥扩展多种金钥(如一种“金钥目录”),每一个如符合子运算密码“回合”(round)在明文区块中完成。举例,金钥目录的第一金钥使用来完成在明文区块上次运算的第一密码回合,其中第二密码回合利用金钥目录的第二金钥来产生第二结果。一种特定数量的次单元回合被完成来产生一个密文自身的最终回结果。进阶加密标准演算法的每一回合中的子运算,尚有次位元(或S-box)、移列(ShiftRows)、混栏(MixColum)、加入回合键(AddRoundKey)等术语。每一回合期间,一种密文区块解密完成,除了完成密文输入转换密码以及转换子运算(如混栏、移列),每一回合最终结果为明文区块。
资料加密标准及三重资料加密标准演算法使用不同规格的子运算,但子运算与进阶加密标准演算法类似,因为子运算将明文区块转换成密文区块时是以类似方式为之。
在多重连续测试组上完成密码操作,全部对称金钥运算利用相同的模式。这些模式包括电子密码书(electronic code book、ECB)模式、密文区块串列(cipher block chaining、CBC)模式、密文回授(cipher feedback、CFB)模式、及输出回授(output feedback、OFB)模式。在子运算完成期间,一些模式利用一种附加初始化向量且一些使用完成于第一明文区块加密第一位置的密文输出,如一种附加输入至完成于第二明文区块的加密第二位置。更多的相关技术细节,可以参见Federal Information Processing StandardsPublication 46-3(FIPS-46-3),1999年10月25日,其详细讨论了资料加密标准、三重资料加密标准;以及参见FIPS-197,2001年11月26日,其对进阶加密标准作了详细的解释。前述的标准规则是由国家标准科技研究所(National Institute of Standards and Technology,NIST)颁布及主张。此外,个别的指令、白皮书、套装工具及对策可以参考国家标准科技研究所的电脑安全应变中心(CSRC),网址为http://csrc.nist.gov/。
熟习该项技术者皆能够了解多种应用程式可在得以执行密码运算(密码及解密)的电脑系统上被执行,事实上某些作业系统(如Microsoft、WindowsXP、及Linux等)即以密码相关原始形式提供直接的密码及解密服务。然而,本案发明人已观察得知目前的电脑密码相关技术在某些层面上仍显不足,读者可参阅图1即可了解不足之处,其不足之处并在后文中有所讨论。
请参阅图1所示,是一说明现今电脑密码应用技术的方块图。方块图100显示一第一电脑工作站101及一区域网路105相接,一第二电脑工作站102、一网路档案储存装置106、一第一路由器107或其他与广域网路(WAN)110如网际网路及一个无线网路路由器108如IEEE标准802.11形成的介面亦与区域网路105连结。一膝上型电脑104经由一无线网路109与无线路由器108以介面相接,一第二路由器111则在广域网路110的另一点上提供与一第三电脑工作站相接的介面。
如前文中所略为提及的,现今使用者在工作期间正面临严重的电脑资讯安全性问题。举例而言,在现今多任务作业系统控制下,工作站101的使用者可同时执行多项工作,且每一项工作皆需加以密码运算。工作站101的使用者需执行一加密/解密应用程式112(不论应用程式是整合于作业系统中或为作业系统所唤起执行皆然),以将其工作站101上的档案储存至网路档案储存装置106中。在执行档案储存的同时,使用者可将一加密讯息传送予一在工作站102的第二使用者,第二使用者同样需要执行加密/解密应用程式112,其中加密讯息的提供可为即时(如一同步讯息)或非即时者(即电子邮件)形式。此外,使用者可在工作站103透过广域网路110而使用或提供其金融资料(如信用卡号及金融交易等)或其它形式敏感资料。当走出公司进入任何一个在区域网路105上的分享资源101,102,106,107,108,109工作站101,使用者使用第三电脑工作站103可代表家用电脑或远距电脑103。每一个前述的动作需要一个符合执行加密/解密操作112的例子。此外,无线网路109现在常态性的提供于咖啡店、机场、学校及其他公共场所,因此激起了笔记型电脑104使用者对他/她的讯息传送到/接收自其他使用者,和经由无线网路109至无线路由器108加密或解密所有讯息的即时加密/解密的需求。
习知技术的技术人员可以了解,每一个上述活动都需要在工作站101-104上做密码运算,也就相应有执行一个立即的加密/解密操作112的需求。因此,电脑101-104进一步可能同时完成数百个密码运算。
无论如何,存在一些在电脑系统101-104上执行至少一个以上立即的加密/解密操作112而完成密码运算的方法限制。举例而言,经由一个软件程式完成一个前述功能相对比经由硬体完成相同功能执行慢。每一个加密/解密操作112都需要一段时间,并且正在电脑101-104上执行的现行程式可能在这段时间内必须暂停执行,且密码操作(如明文,密文,模式,金钥等)参数必须通过操作系统至加密/解密操作112,执行密码运算。且因为密码运算必须包括特殊组别资料几回子运算,加密/解密操作112执行包括执行多个电脑延伸指令,因此全部系统操作速度有不利的影响。如一般习知技术人员所能查觉,在MicrosoftOutlook传送一个小的加密电子邮件会较传送一个未加密电子邮件慢5倍。此外,目前的密码相关技术因作业系统的介入而有延迟,大部份的应用程式不提供整合式的金钥产生或加密及解密元件(components),他们执行作业系统的元件或内嵌应用程式以完成这些任务。而作业系统是按照其他正在执行应用程式的需求及中断进行调度。再者,本案发明人已提及现今电脑系统101-104上密码运算的完成非常类似微处理器中使用专用浮点单位前的浮点数学运算;早期的浮点运算是以软件完成,故其执行速度相当缓慢,经由软件所为的密码运算亦是令人无法接受地缓慢。随着浮点技术的进一步发展,浮点指令是在浮点共处理器中执行,浮点共处理器执行浮点运算的速度远快于以软件方式执行者,但如此却也增加系统的成本。同样地,现今的密码共处理器以插卡或外部装置的形式出现;当以外部装置形式出现时,密码共处理器是经由平行埠或其它介面汇流排(如USB)(汇流排即总线,以下均称为汇流排)以介面与一主处理器相接。当然,共处理器确能使密码运算远快于纯软件执行者,但密码用共处理器增加了系统设置的成本,并需要额外的电源并降低了系统的整体可靠度。另外,密码用共处理器的执行不能防止窥探,因为资料通道不与主微处理器处于同一晶片之故。
因此,本案发明人了解到现今的微处理器需要有专用密码相关硬体的存在,以使一需加以密码运算的应用程式可令微处理器经由单独的、基本单元密码指令电路指示微处理器执行密码运算,而密码指令电路提供至少一个密码指令。此外,密码指令亦以在应用程式中具有优先被使用权为更佳,且专用密码硬体以与现今微处理器的常用架构相容为更佳。同时密码硬体和相关密码指令要提供与先前作业系统和程式的相容的方式。最主要的是提供一种执行密码运算的装置和方法,使有效抵御未授权的监听,并能支援多种密码演算法,支援对在其中实施的特殊密码演算法进行验证和测试,允许使用者提供的金钥和自行产生的金钥,支援多重的资料块大小和金钥长度,提供可编程的区块加密/解密模式,即如电子密码书模式、密文区块串列、密文回授模式和输出回授模式等,并且在使用上述可编程区块加密/解密模式时能够对大量资料有效执行多种资料区块大小及多种位元大小的密码金钥。
在现有技术中微处理器内缺乏独立的处理密码加密及解密的硬体装置,而是经由软件或借用微处理器内浮点运算单元或利用外部装置如经由平行埠、或USB等其他介面汇流排将微处理器相接的密码用共处理器,来作金钥的加密及解密运算。但是,经由软件来做加密及解密运算执行速度相当缓慢;借用微处理器内浮点运算单元来做加密及解密运算会增加系统成本亦会拖累系统;采用外部装置的密码用共处理器除了增加系统设置成本之外,亦需额外电源并降低系统整体可靠度,另外,该密码用共处理器的资料通道不与主微处理器处於同一晶片,故其执行不能防止窥探,保密性不足。
发明内容
本发明的目的在于,提供一种新的可设定密码金钥大小的微处理器装置,所要解决的技术问题是使其微处理器装置包含一密码指令电路及一执行逻辑电路。该密码指令电路,用以产生一密码指令,该密码指令是为一计算装置所接收,并属于在该计算装置上执行的一指令流的一部份,其中该密码指令指定该等密码运算之一者,且该密码指令指定复数个密码金钥大小之一;该执行逻辑电路,在运算上耦合至该密码指令电路,并被设定以执行被指定的密码运算,该执行逻辑电路包括一金钥大小控制器,用以在被指定的密码运算执行期间使用被指定的密码金钥大小,以解决现有微处理器内缺乏处理密码运算专用的密码指令电路与执行逻辑电路硬件,从而更加适于实用。
本发明的另一目的在于,提供一种新的可设定密码金钥大小的微处理器装置,所要解决的技术问题是使其微处理器装置包含一密码单元以及一金钥大小控制逻辑电路,该密码单元,位于一装置中,该密码单元被设定在接收一指令流内的一密码指令后执行该等密码运算之一者,其中该指令流预定被指定的密码运算,且该密码指令亦预定一当于执行被指定的密码运算所使用的金钥大小;该金钥大小控制逻辑电路,是运算地耦合于该密码单元,并被设定以令该装置在执行被指定的密码运算时使用该金钥大小,以解决现有微处理器内缺乏处理密码运算专用的并具有优先被使用权的密码指令电路与金钥大小控制逻辑电路硬件,从而更加适于实用。
本发明的再一目的在于,提供一种可设定密码金钥大小的方法,所要解决的技术问题是使其微处理器接收一密码指令,该密码指令预定复数个密码运算之一者执行期间的密码金钥大小;以及在执行被指定的密码运算时使用该密码金钥大小,以解决现有有微处理器内缺乏处理密码运算专用的接收一密码指令与执行被指定的密码运算时使用该密码金钥大小等方法,从而更加适于实用。
本发明的目的及解决其技术问题是采用以下技术方案来实现的。依据本发明提出的一种可设定密码金钥大小的微处理器装置,其包括:一密码指令电路,用以产生一密码指令,该密码指令是为一计算装置所接收,并属于在该计算装置上执行的一指令流的一部份,其中该密码指令指定该等密码运算之一者,且该密码指令指定复数个密码金钥大小之一者;以及执行逻辑电路,在运算上耦合至该密码指令电路,并被设定以执行被指定的密码运算,该执行逻辑电路包括一金钥大小控制器,用以在被指定的密码运算执行期间使用被指定的密码金钥大小。
本发明的目的及解决其技术问题还采用以下技术措施来进一步实现。
前述的装置,其中所述的被指定的密码运算更包括:一加密运算,该加密运算包括对复数个明文区块加以加密的运算,以产生对应的复数个密文区块;以及一解密运算,该解密运算包括对复数个密文区块加以解密的运算,以产生对应的复数个明文区块。
前述的装置,其中所述的被指定的密码金钥大小为128位元、192位元或256位元。
前述的装置,其中所述的金钥大小控制器被用以解译该密码指令所参考的一控制字组中的一金钥大小栏位。
前述的装置,其中所述的密码指令的预定是依x86指令格式。
前述的装置,其中所述的密码指令参考该计算装置中复数个暂存器。
前述的装置,其中所述的该等暂存器包括:一第一暂存器,该第一暂存器的内容包括一第一指标,该第一指标指向一第一记忆体位址,该第一记忆体位址明定一第一记忆体位置,用以对复数个输入文字区块进行存取,其中该等输入文字区块是被用以成该等密码运算;一第二暂存器,该第二暂存器的内容包括一第二指标,该第二指标指向一第二记忆体位址,该第二记忆体位址明定一第二记忆体位置,用以储存对应的复数个输出文字区块,该等对应的复数个输出文字区块是为在复数个输入文字区块执行被指定的密码运算所产生的结果;一第三暂存器,该第三暂存器的内容指出复数个输入文区块中的某几个区块;一第四暂存器,该第四暂存器的内容包括一第三指标,该第三指标指向一第三记忆体位址,该第三记忆体位址明定一第三记忆体位置,用以存取完成被指定的密码运算所需的密码金钥资料;一第五暂存器,该第五暂存器的内容包括一第四指标,该第四指标指向一第四记忆体位址,该第四记忆体位址明定一第四记忆体位置,该第四记忆体位置包括该起始向量位置,该起始向量位置对应的内容包括一起始向量或该起始向量的等效者,用以完成被指定的密码运算;以及一第六暂存器,该第六暂存器的内容包括一第五指标,该第五指标指向一第五记忆体位址,该第五记忆体位址用以明定一第五记忆体位址,用以存取一控制字组以完成被指定的密码运算,其中该控制字组预定被指定的密码运算的密码参数,且其中该控制字组包括一金钥大小栏位,该金钥大小栏位被设定以明定被指定的密码金钥大小在被指定的密码运算执行时的大小。
前述的装置,其中所述的密码金钥资料包括:一密码金钥,该密码金钥包括多数个位元,该多数个位元是依被指定的密码金钥大小而定;以及一使用者产生的密码金钥排程。
前述的装置,其中所述的执行逻辑电路包括一密码单元,该密码单元被设定用以对复数个输入文字区块的每一者执行复数个密码回合,以产生对应的复数个输出文字区块的每一者,其中被指定的密码金钥大小为一控制字组所预定,其中该控制字组被提供予该密码单元中该金钥大小控制器。
本发明的目的及解决其技术问题还采用以下技术方案来实现。依据本发明提出的一种可设定密码金钥大小的微处理器装置,其包括:一密码单元,位于一装置中,该密码单元被设定在接收一指令流内的一密码指令后执行该等密码运算之一者,其中该指令流预定被指定的密码运算,且该密码指令亦预定一当于执行被指定的密码运算所使用的金钥大小;以及金钥大小控制逻辑电路,是运算地耦合于该密码单元,并被设定以令该装置在执行被指定的密码运算时使用该金钥大小。
本发明的目的及解决其技术问题还采用以下技术措施来进一步实现。
前述的装置,其中所述的金钥大小为128位元、192位元或256位元。
前述的装置,其中所述的金钥大小控制逻辑电路被设定以解译一在一为该密码指令参考的控制字组中的一金钥大小栏位。
前述的装置,其中所述的密码指令的预定是依该x86指令格式。
本发明的目的及解决其技术问题还采用以下技术方案来实现。依据本发明提出的一种可设定密码金钥大小的方法,其包括下列步骤:接收一密码指令,该密码指令预定复数个密码运算之一者执行期间的密码金钥大小;以及在执行被指定的密码运算时使用该密码金钥大小。
本发明的目的及解决其技术问题还采用以下技术措施来进一步实现。
前述的方法,其中所述的接收步骤包括经由一在一为该密码指令参考的控制字组中的一栏位以明定该金钥密码大小的步骤。
前述的方法,其中所述的接收步骤包括依该x86指令格式预定该密码指令。
前述的方法,其中所述的明定步骤包括预定128位元、预定192位元或预定256位元为该密码金钥大小。
本发明与现有技术相比具有明显的优点和有益效果。由以上技术方案可知,本发明的主要技术内容如下:
本发明的提出是用以解决现有习知技术中上述及其它的问题与缺点等,其提出一种在一微处理器中执行密码运算的优异技术。在本发明的一较佳实施例中,提出一种执行密码运算的装置,该装置包括一密码指令电路及一执行逻辑电路,密码指令电路提供一密码指令,而密码指令为一计算装置接收,并属于计算装置所执行的指令流的一部份。密码指令指定多个密码运算之一,并指定多种密码金钥大小之一。在运算上,执行逻辑电路耦合至密码指令电路,并执行被指定的密码运算。在执行被指定密码运算时,执行逻辑电路具有一密码金钥大小控制器,而此控制器使用被指定的密码金钥大小。
本发明的另一较佳实施例为一种执行密码运算的装置,该装置具有一密码单元及一金钥大小控制逻辑电路,其中密码单元位于一装置中,并在接收一指令流中一密码指令后执行多个密码运算之一,其中指令流中的密码指令指定被指定的密码运算。此外,密码指令在执行被指定的密码运算时亦预定一待使用的金钥大小。在运算时,金钥大小控制逻辑电路耦合于密码单元内,并使装置在进行被指定的密码运算时使用被预定的金钥大小。
本发明的一较佳实施例为一种在一装置中执行密码运算的方法,该方法包括接收一密码指令,此被接收的密码指令指定多个密码运算的某一者在执行期间所用的密码金钥大小,该方法也包括使用被指定的密码金钥大小于被指定的密码运算被执行的期间。
经由上述可知,本发明是有关于一种可设定密码金钥大小的微处理器装置及方法,是一种在一计算装置中利用可程式化密码金钥大小对复数个输入资料区块执行密码运算的装置及方法。例如,一种执行密码运算的装置,该装置包括密码指令电路及执行逻辑电路,该密码指令电路是提供至少一密码指令,通过一计算设备接收以作为在计算设备上执行一指令流的部分。密码指令电路指定复数个密码运算之一者,并亦指定复数种密码金钥大小之一者。在运算上,执行逻辑电路耦合至密码指令电路,并执行被指定的密码运算。执行逻辑电路具有一密码金钥大小控制器,该控制器在执行被指定的密码运算期间使用被指定的密码金钥大小。
借由上述技术方案,本发明提供可设定密码金钥大小的微处理器装置及方法至少具有下列优点:
本发明提供微处理器所需要的专用的密码相关硬体,可以便一需加以密码运算的应用程式可令微处理器经由单独的、基本单元密码指令电路指示微处理器执行密码运算,而密码指令电路提供至少一个密码指令,可以解决现有微处理器内缺乏处理密码运算专用的密码指令电路与执行逻辑电路硬件。
此外,密码指令亦以在应用程式中具有优先被使用权为更佳,且专用密码硬体以与现今微处理器的常用架构相容为更佳。同时密码硬体和相关密码指令要提供与先前作业系统和程式的相容的方式,可以解决现有微处理器内缺乏处理密码运算专用的并具有优先被使用权的密码指令电路与金钥大小控制逻辑电路硬件,可以提高系统操作速度。
另外,本发明提供一种可设定密码金钥大小的微处理器装置,可使其有效的抵御未授权的监听,并能支援多种密码演算法,支援对在其中实施的特殊密码演算法进行验证和测试,允许使用者提供的金钥和自行产生的金钥,支援多重的资料块大小和金钥长度,提供可编程的区块加密/解密模式,即如电子密码书模式、密文区块串列、密文回授模式和输出回授模式等,并且在使用上述可编程区块加密/解密模式时能够对大量资料有效的执行多种资料区块大小及多种位元大小的密码金钥。
综上所述,本发明可设定密码金钥大小的微处理器装置及方法,具有上述诸多的优点及实用价值,并在同类装置及方法中未见有类似的结构设计及方法公开发表或使用而确属创新,其不论在产品结构、方法或功能上皆有较大改进,在技术上有较大进步,并产生了好用及实用的效果,且较现有的微处理器装置及微处理器运算方法具有增进的多项功效,从而更加适于实用,而具有产业的广泛利用价值,诚为一新颖、进步、实用的新设计。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
附图说明
图1是一说明现今密码相关应用的方块图。
图2是一说明执行密码运算的技术的方块图。
图3是一代表本发明用以执行密码运算的微处理器装置的方块图。
图4是本发明的基本单元密码指令实施例的方块图。
图5是本发明的一与x86相同的微处理器内一密码单元的方块图。
图6是一使图5的微处理器内进行密码相关子运算的微指令范例中的栏位图。
图7是预定本发明的一密码运算的密码相关参数的控制字元格式范例的方块图。
图8是说明本发明中一密码单元范例细节的方块图。
图9是一说明本发明的一执行进阶加密标准的密码运算的区块密码逻辑电路实施例的方块图。
图10是一说明本发明用以在一中断事件期间保存密码相关参数状态的方法的流程图。
图11是一说明本发明用以在对复数个输入资料区块执行一密码运算,且至少一中断事件发生之时使用一使用者预定密码金钥大小的方法的框图。
【主要元件符号说明】
100    方块图                  101    第一电脑工作站
102    第二电脑工作站          103    工作站(远端电脑)
104    工作站                  106    网路档案储存装置
107    第一路由器              108    无线网路路由器
109    无线网路                110    广域网路
111    第二路由器              112    加密/解密应用程式
200    方块图
201    微处理器                202    作业系统软件
203    程式记忆体              204    密码金钥产生应用程式
205    金钥排程                206    加密应用程式
207    解密应用程式            208    起始向量
209    密码参数                210    明文区块
211    密文区块                300    方块图
301    微处理器                302    指令暂存器
303    转换逻辑电路            304    微指令伫列
305    微指令储存表目            306    微指令载入表目
307    暂存器组                  308    控制指标暂存器
309    金钥指标暂存器            310    起始向量指标暂存器
311    输入指标暂存器            312    输出指标暂存器
313    区块计数暂存器            314    负载逻辑电路
315    记忆体                    316    密码使用单元
317    储存逻辑电路              318    写回逻辑电路
319    记忆体汇流排              320    作业系统
321    记忆体                    322    密码指令
323    密码控制字组              324    起始密码金钥;金钥排程
325    起始向量                  326    输入文字区域
327    记忆体位置                328    执行逻辑电路
400    基本单元密码指令          401    选择性前置栏位
402    重复前置栏位              403    运算码栏位
404    区块密文模式栏位
600    微处理器                  601    提取逻辑电路
602    转换逻辑电路              603    转换器
604    微码只读记忆体            605    暂存器阶级
606    位址阶级                  607    负载阶级
608    执行阶级                  609    微指令伫列
610    平行执行单元(整数单元)    611    微指令伫列
612    平行执行单元              613    微指令伫列
614    平行执行单元              615    微指令伫列
616    平行执行单元              617    密码单元
618    储存阶级                  619    写回阶级
620    负载汇流排                621    暂停讯号
622    储存汇流排                624    暂存器
625    X位元                     626    中断逻辑电路
627    软件及硬体中断讯号        628    转换逻辑电路
629    E位元                     630    特征控制暂存器
631    D位元                     632    执行逻辑电路
640     金钥生成逻辑电路        700     格式
701     微运算码栏位            702     资料暂存器栏位
703     暂存器栏位              704     资料栏位
1000    控制字组格式            1001    保留栏位
1002    资料区块大小栏位        1003    金钥大小栏位
1004    密码/解密栏位           1005    中间结果栏位
1006    金钥生成栏位            1007    演算法栏位
1008    合计数RCNT栏位          1200    密码单元
1201    密码金钥随机存取记忆体  1202    金钥随机存取记忆体
1203    微运算码暂存器          1204    控制字组暂存器
1205    输入-0暂存器            1206    输入-1暂存器
1207    金钥-0暂存器            1208    金钥暂存器
1209    输出暂存器              1210    输出暂存器
1211    载入汇流排              1212    储存汇流排
1213    拖延讯号                1214    微指令汇流排
1300    区块密文逻辑电路        1301    微指令暂存器
1302    控制字组暂存器          1303    金钥-0暂存器
1304    金钥-1暂存器            1305    输入暂存器
1306    输入暂存器              1307    暂存器
1308    暂存器                  1310    回合引擎控制器
1311    汇流排                  1312    汇流排
1313    汇流排                  1314    汇流排
1315    汇流排                  1316    汇流排
1317    汇流排                  1318    汇流排
1319    汇流排                  1320    合引擎
1321    金钥互斥逻辑电路        1322    第一暂存器暂存-0
1323    S-box逻辑电路           1324    位移逻辑电路
1325    第二暂存器暂存-1        1326    混合列逻辑电
1327    第三暂存器              1330    金钥大小控制器
1402    开始                    1404    中断?
1406    清除位元                1408    储存架构性暂存器
1410    中断处理                1412    完成
1502    开始                         1504    载入输入区块(预定者)并开始
1506    X位元已设定                  1508    载入控制字组并重置
1510    设定192位元金钥用的回合引擎  1512    载入/拓展金钥排程
1514    密码金钥大小?               1516    载入/拓展金钥排程
1518    设定256位元金钥用的回合引擎  1520    载入/拓展金钥排程
1522    载入输入区块(再次)并更新     1524    产生输出区块
1526    储存输出区块至记忆体         1528    更新区块计数器及指标
1530    区块计数器为0                1532    载入输入区块并开始
1534    完成
具体实施方式
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的可设定密码金钥大小的微处理器装置及方法其具体实施方式、结构、方法、步骤、特征及其功效,详细说明如后。
以下说明是针对本发明的一特定应用及其需求而进行的,用以使熟习该项技术的技术人员能够制造及使用本发明,但是熟习该项技术者可轻易对所述的较佳实施例加以各种变化,且所述的基本原理可以应用至其它的实施例上。因此,本发明的范围不仅限于该等已述的特定实施例,其范围当视为不违本文中所提原理及新颖特征的最大范围。
在前述对于密码运算及用于现今电脑系统以对资料加密及解密的技术的习知部份讨论后,以下将配合图2对这些技术及其限制继续做讨论。接着,本发明的说明将配合图3至图11的图式而进行说明。本发明提出一种用以在一现今电脑系统中执行密码运算的装置及方法,其在各种常用机制上具有优异性能,并满足上述限制作业系统介入、自动化、结构相容性、演算法及模式的可程式化特性、防止骇客入侵及可测试性的目的。
现请参阅图2所示,该图所示为一说明在一现今电脑系统中如前述般执行密码运算的技术的方块图,方块图200包括一微处理器(microprocessor)201,该微处理器201用以提取指令电路及处理与一应用程式相关的资料,其中该等指令电路及资料是位于一称作应用程式记忆体203(记忆体即存储介质,存储器,内存,以下均称为记忆体)的一系统记忆体区域,而应用程式记忆体(application memory)203中资料的程式控制及动作一般由系统记忆体的一受保护区域中的作业系统软件(operatingsystem)202控管。指令电路提供至少一指令,其用来指示一密码操作,而指令电路包括逻辑电路、装置或微码(即微指令或本机指令(nativeinstruction))、或是一个逻辑电路、装置或微码的组合,由于指令电路并非为本发明的重点,故在此不再对此作详细说明。如上所述,若一执行应用程式(如一电子邮件程式或一档案储存程式)需进行密码运算,则执行应用程式必须藉微处理器201执行相当数量的指令方能完成密码运算,其中该等指令可为执行应用程式本身中的副程式,如可为与执行应用程式相连接的外挂应用程式,或可为作业系统202提供的服务。不管该等指令的形式究为何,熟习该项技术者皆能了解指令皆存于指定或分配的记忆体区域中。为达到说明之效,该等记忆体区域显示于应用记忆体203中,且包括一密码金钥产生应用程式(cryptographic key generation application)204,其中该密码金钥产生应用程式204一般产生或接收一密码金钥,并将该金钥拓展成一金钥排程(key schedule)205,以为密码子运算所用。
在一多区块加密运算进行时,一区块加密应用程式(encryptionapplication)206需先被引动,以执行取得明文(plaintext)区块210、金钥排程205、诸如模式、密钥表位置等更为详细加密操作的密码参数(cryptographic parameters)209。若为规格中模式所需,加密应用程式206亦会使用一起始向量(initalization vector)208。在执行其中的指令后,加密应用程式206产生对应的密文(ciphertext)区块211,而一区块解密应用程式(decryption application)207亦同样被引动以执行区块解密运算,即执行取得密文区块211、金钥排程205、诸如模式、密钥表位置等更为详细解密操作的密码参数(cryptographic parameters)。若为规格中模式所需,解密应用程式207亦会使用一起始向量208。在执行其中的指令后,解密应用程式207产生对应的明文区块210。
需加以强调的是,在产生密码金钥及对文字区块加以加密及解密时,所需执行的指令数目相当多;上述FIPS规格中包括诸多可形成数量相当的需加估计指令的虚拟码范例,故熟习该项技术者皆了解一项简单的区块密码运算需数百个指令方能完成,且该等指令的每一者皆须由微处理器201加以执行方能完成所要求的密码运算。再者,对于现有执行应用程式的主要目的(如档案管理、即时讯息功能、电子邮件功能、远端档案取得及信用卡交易等)而言,执行指令以完成密码运算一般被视为不必要的功能,因此现有执行应用程式的使用者感到现有执行应用程式的执行效率不足。
若所用的应用程式为独立或外挂加密/解密应用程式206、207,则该等应用程式206、207的引动及控管亦须符合作业系统202的其它要求,如支援中断、异常及类似使问题恶化的事件等。甚者,对于每一同时在一电脑系统中进行的密码运算而言,应用程式204、206、207的独立执行个体必须在记忆体203中配以其空间,且可预见需同时为一微处理器201执行的密码运算数将持续随时间增加,如前文已描述者。
本案发明人已提到目前电脑系统的密码技术所存有的问题与限制,并亦了解到提出在一微处理器中执行密码运算、且程式的执行不会有延迟的装置及方法的必要性,因此本发明提出一种经由一专用密码使用单元执行密码运算的微处理器装置及方法,其中专用密码单元设于微处理器中,且密码单元是经由一单一密码指令的程式化而被致动以执行密码运算。以下,本发明将配合参阅图3至图11继续进行说明。
请参阅图3所示,图中所示为一本发明用以执行密码运算与微处理器装置相关的方块图,方块图300中显示微处理器(microprocessor)301经由一记忆体汇流排(memory bus)319耦合至一系统记忆体(system memory)321,其包括用以自一指令暂存器(instruction register)302接收指令的转换逻辑电路(translation logic)303,转换逻辑电路303包括逻辑电路、电路、装置或微码(即微指令或自然指令)、或逻辑电路、电路、装置或微码的组合,或其它用以将指令转换成相关微指令序列的等效元件。该等用以在转换逻辑电路303中执行转换工作的元件可为其它电路、微码等用以在微处理器301中执行其它功能者所共用。就本发明的范围而言,微码一词用以代表至少一微指令,而微指令(亦称作本机指令)的层级是属于一单元执行者。举例而言,微指令直接为一精简指令集(reduced instructionset computer,RISC)微处理器所执行。以一如x86相容的微处理器等复杂指令集电脑(complex instruction set computer,CISC)微处理器而言,x86指令被转换成相关的微指令,且相关的微指令直接为一复杂指令集电脑微处理器中至少一单元执行。另外,转换逻辑电路303耦合至一微指令列(micro instruction queue)304,并具有复数个微指令入口(microinstruction entries)305、306,微指令由微指令列304提供至包括一暂存器组(register file)307的暂存器级逻辑电路,其中暂存器组307具有复数个暂存器308-313,该等暂存器308-313的内容是建立于一指定的密码运算执行之前。暂存器308-312指向记忆体321中的对应位置323-327,该等位置323-327包括执行被指定的密码运算所需的资料。暂存器级耦合至负载逻辑电路(load logic)314,负载逻辑电路314则以介面与一资料快取记忆体(data cache)315相接,以取得执行指定的密码运算所需的资料。资料快取记忆体315经由记忆体汇流排319与记忆体321相耦合,执行逻辑电路(execution logic)328耦合至负载逻辑电路314,并执行送来的微指令指定的运算,其包括逻辑电路、装置或微码(即微指令或本机指令),或为逻辑电路、装置或微码的组合,或其它用以执行指令所指定的运算的等效元件,其中该等用以执行执行逻辑电路328中运算的元件可为其它电路及微码等用以在微处理器301中执行其它功能者所共用。执行逻辑电路328包括一密码单元(cryptography unit)316,密码单元316自负载逻辑电路314接收执行被指定的密码运算所需的资料,微指令使密码单元316对复数个输入文字区块(input text)326执行指定的密码运算,以产生对应的复数个输出文字区块(output text)327。密码单元316包括逻辑电路、装置或微码(即微指令或本机指令),或为逻辑电路、装置或微码的组合,或其它用以执行密码运算的等效元件,其中该等用以在密码单元316中执行密码运算的元件可为其它电路及微码等用以在微处理器301中执行其它功能者所共用。在一实施例中,密码单元316在执行逻辑电路328中与其它执行单元(图中未绘示)平行运算,其中执行逻辑电路328可为整数单元及浮点单元等。一本发明范围所对应的“单元”实施例包括逻辑电路、装置或微码(即微指令或本机指令)的组合,或其它用以执行既定功能或动作的等效元件,其中该等用以在一特定单元中执行其它功能或动作的元件可以为其它电路及微码等用以在微处理器301中执行其它功能者所共用。举例而言,一实施例中的一整数单元包括逻辑电路、装置或微码(即微指令或本机指令)的组合,或其它用以执行整数指令的等效元件。一浮点单元包括逻辑电路、装置或微码(即微指令或本机指令)的组合,或其它用以执行浮点指令的等效元件,其中该等用以在整数单元中执行整数指令的元件可为其它电路及微码等用以在该浮点单元中执行浮点指令者所共用。
在一与x86架构相容的实施例中,密码使用单元316与一x86整数单元、一x86浮点(floating point unit)单元、一x86多媒体延伸集(Multi-media Extensions,MMX)单元及一x86串流延伸集(Streaming SIMDExtensions,SSE)单元平行运作。以本发明的范围而言,一可正确执行大部份设计以在一x86微处理器中执行的应用程式的实施例皆属与x86架构相容,而一应用程式得以正确执行是指其可获致所欲结果。在其它的x86相容实施例中,密码单元是与前述x86执行单元组成的子集合平行运作,其中密码单元316耦合至储存逻辑电路317,并提供对应的复数个输出文字区块327。此外储存逻辑电路317亦耦合至自资料快取记忆体315,该快取记忆体315将输出文字资料327转送至系统记忆体321以进行储存。储存逻辑电路317耦合至写回逻辑电路318,写回逻辑电路318在指定的密码运算完成时更新暂存器组307中的暂存器308-313。在另一实施例中,微指令与一时脉讯号(图中未显示)同步流过上述逻辑电路阶级302、303、304、307、314、316-318的每一者,因此运算动作可同时以大致类似于一组合线上执行的动作的方式执行。
在系统记忆体321中,需执行指定的密码运算的应用程式可令微处理器301经由一单一密码指令(cryptographic instruction)322执行密码运算。为使说明便于进行,单一密码指令322在此处称作一密码指令322。在一复杂指令集电脑实施例中,密码指令322包括一指定一密码运算的微指令。在一实施例中,密码指令322使用在一现存指令集架构中一闲置或不用的指令运算码。在一x86相容的实施例中,密码指令322为一4位元组指令,其包括一x86重复前置(REP)(即0xF3),接着为未使用的2位元组x86运算码(如0x0FA7),再接着为一用以说明在一指定的密码运算期间所用的区块密码模式的位元组。在一实施例中,本发明的密码指令322的执行层级可为应用程式所提供的系统优先层级,并因可被程式化成一指令构成的程式流,程式流直接为一应用程式送至微处理器301,或经由作业系统320的控制而送至微处理器301。由于使微处理器301执行指定的密码运算的指令322仅需为一者,因此该运算的完成可完全为作业系统320所知。
在实际运作中,作业系统320引动一应用程式,以在微处理器301中执行,且在应用程式执行的时指令流中一密码指令322由记忆体321送至提取逻辑电路302。然而在密码指令322执行之前,程式流中指令使微处理器301对暂存器308-312内容起始化,以使暂存器308-312内容指向记忆体321中包括一密码控制字组(cryptographic control word)323、一起始密码金钥(initial cryptographic key)324或一金钥排程(key schedule)324、一起始向量(initialization vector)325(若为所需时)、运算所用输入文字326及输出文字327的位置323-327。在执行密码指令322之前需要起始化暂存器308-312的原因为密码指令322实际上是参考暂存器308-312及一包括一区块计数功能的外加暂存器313而为,而外加暂存器313计数之值为输入文字区域326中待加加密或解密的区块数。因此,转换逻辑电路303自提取逻辑电路302取得密码指令,并将其转换成一对应微指令序列,以使微处理器301执行被指定的密码运算。在该对应微指令序列中一第一组复数个微指令305-306,使密码单元316载入负载逻辑电路314所送出的资料,并开始执行被指定数目的密码梯次,以产生一对应输出资料区块,并提供对应输出资料区块至储存逻辑电路317,以经由资料快取记忆体315储存于记忆体321的输出文字区域327中。在该对应微指令序列中一第二组复数个微指令(图中未显示)使微处理器301中其它执行单元(图中未显示)执行其它完成被指定的密码运算所需的动作,如对包括暂时结果及计数值的非架构式暂存器(图中未显示)、输入及输出指标暂存器311-312的更新、输入文字区块326的加密及解密后起始向量指标暂存器310的更新(若为所需)及未受处理的中断的处理等。在一实施例中,暂存器308-313为架构式暂存器,其中架构式暂存器308-313是指定义于特定执行的微处理所用的指令集架构(instruction set architecture,ISA)中的暂存器。
在一实施例中,密码单元316被分作复数阶级,以能对后续输入文字区块326进行管线式处理。
图3中300为用以说明本发明所需的元件,故现今微处理器301中所用的多种逻辑电路为顾及说明清楚而在方块图300中省略。然而,熟习该项技术者皆能了解现今微处理器301包括诸多阶级逻辑电路元件,端视其特定应用而定,且其中一些阶级及逻辑电路元件在本案中已整合在一起,以使说明较为简洁。举例而言,负载逻辑电路314可整合以一位址产生阶级,接着可有一快取记忆体介面阶级,并接着可有一快取记忆体线对位阶级。然而必须特别说明的是,对复数个输入文字区块326所为的密码运算完整动作需经由一单一指令322为之,该单一指令322的动作为作业系统320所知,其执行则是经由一专用密码单元316完成,其中专用密码单元316的运作与微处理器301中其它执行单元平行且一致进行。此外,本案发明人提出不同的密码单元316实施例,其与数年前提出的微处理器中专用浮点单元类似,其与相关的密码指令322的运作完全与作业系统320及应用程式的动作相容,以下将有更详细的介绍。
现请参阅图4所示,图中所示为一用以说明本发明的一基本单元密码指令400实施例的方块图。密码指令400包括一可选择性前置栏位(optional prefix field)401,然后是一重复前置栏位(repeat prefixfield)402,随后是一运算码栏位(opcode field)403,最后是一区块密文模式栏位(block cipher mode field)404。在一实施例中,栏位401-404的内容与x86指令集架构相容。在其它不同实施例中,栏位401-404的内容与其它指令集架构相容。
在运作时,可选择性前置栏位401用于诸多指令集架构中,以启动或关闭一主微处理器的某些特定处理能力,如进行16位元或32位元的运算及处理或使用特定的记忆体区块等。重复前置栏位402指出密码指令400所指定的密码运算需对复数个输入资料(即明文或密文)区块而为,并令一相容微处理器将其中复数个架构式暂存器的内容作为系统记忆体中位置的指标,其中位置是指包括完成既定密码运算所需的密码资料及参数。如上所述,重复前置栏位402的值在一x86相容的实施例中为0xF3;且根据x86架构协定而言,密码指令的形式非常类似于REP.MOVS等x86重复串指令。举例而言,当以本发明的x86相同微处理器实施例为之时,重复前置栏位实际上是参考一存于架构式暂存器ECX中的区块计数变数、一存于暂存器ESI中的来源位址指标(指向该密码运算对应的输入资料)及一存于暂存器EDI中的目的位址指标(指向记忆体中的输出资料区域)。在一x86相容实施例中,本发明更将传统的重复串指令概念拓展成更参考一存于暂存器EDX中的控制字组指标、一存于暂存器EBX中的密码金钥指标及一存于暂存器EAX中指向一起始向量的指标(若为指定密文模式所需)。
运算码栏位403指定微处理器完成进一步为一记忆体中一控制字组所明定的密码运算,其中控制字组经由控制字组指标而被参考。本发明中,较佳的运算码值403为一现存指令集架构中闲置或未使用的运算码值之一,用以维持一与作业系统及应用软件相容的微处理器的相容性。举例而言,前述之一与x86相容的运算码栏位403实施例使用值0x0FA7以进行既定密码运算的执行,区块密文模式栏位404预定在既定密码运算期间使用特定区块密文模式,以下将配合表格进行说明。
请参阅下列表格1所示,其为图4的基本单元密码指令所用的区块密文模式栏位值范例构成的表格:
  区块密文模式值     模式
    0xC8     电子码书(ECB)
    0xD0     密文区块链(CBC)
    0xE0     密文回授(CFB)
    0xE8     输出回授(0FB)
    所有其他值     保留
                         表格1
在上述的表格1中,值0xC8预定以电子密码书模式完成密码运算,值0XD0预定以密文区块串列模式完成密码运算,值0xE0预定以密文回授模式完成密码运算,而值0xE8预定以输出回授模式完成密码运算。另外,区块密文模式栏位404的所有其它值皆受保留,该等模式的描述可见于前述FIPS文件的内容。
请参阅图5所示,其为一说明本发明中一x86相容微处理器600中密码单元617的方块图。其中,微处理器600包括提取逻辑电路(fetch logic)601,提取逻辑电路601自记忆体(图中未显示)提取指令以为执行,其并耦合至转换逻辑电路(translation logic)602。转换逻辑电路602包括逻辑电路、装置或微码(即微指令或本机指令),或为逻辑电路、装置或微码的组合,或为其它用以将指令转换成相关微指令序列的等效元件。该等用以在转换逻辑电路602中执行转换的元件可为其它电路及微码等所共用,以在微处理器600中执行其它功能。转换逻辑电路602包括金钥生成(keygen)逻辑电路640,金钥生成逻辑电路640耦合至一转换器(translator)603及一微码只读记忆体(ROM)604。中断逻辑电路(interrupt logic)626经由汇流排628耦合至转换逻辑电路602。复数个软件及硬体中断讯号627为中断逻辑电路626处理,中断逻辑电路606可指出目前对转换逻辑电路628的尚未受处理的中断。转换逻辑电路602耦合至微处理器600接续阶级,包括一暂存器阶级605、位址阶级606、负载阶级607、执行阶级608、储存阶级618及写回阶级619。接续阶级的每一者皆包括用以完成指令执行相关的特定功能的逻辑电路,其中指令是指以图3中微处理器内类似零组件标号配合说明的提取逻辑电路601所提供。图5中所示x86相容实施范例微处理器600显示执行阶级608中的执行逻辑电路(execution logic)632,其包括平行执行单元610、612、614、616、617。一整数单元610自微指令伫列609接收执行用整数微指令。微指令伫列613接收执行用多媒体延伸集微指令。一串流延伸集单元616自微指令列615接收执行用串流延伸集微指令。在所示x86实施范例中,密码单元617经由一负载汇流排(load bus)620、一暂停讯号(stall signal)621及储存汇流排(store bus)622耦合至串流延伸集单元616,并共用串流延伸集单元的微指令列615。另一不同实施例中,密码单元617以与单元610、612及614相似的独立平行方式运作,整数单元610耦合至一x86旗标暂存器(EFLAGS)624,其中旗标暂存器624包括一X位元625,用以指出密码运算是否正执行中。在一实施例中,X位元625为一x86旗标暂存器624的第30位元。此外,整数单元610藉使用一机器特殊暂存器(machine specific register)628而推估一E位元629的状态,其中E位元629的状态指出微处理器600中是否存在密码单元617。此外,整数单元610亦得使用一特征控制暂存器(feature controlregister)630中的一D位元631,以启动或关闭密码单元617。至于图3中的微处理器301实施例,图5中微处理器600已显示教示本发明所需要的主要元件,该等元件并说明于一x86相容实施例的叙述内容中,该微处理器中的其它元件则已整合显示或省略未示,用以使图面说明较为简洁。熟习该项技术者皆知完成该介面需有其它元件的存在,如一资料快取记忆体(图中未显示)、汇流排介面单元(图中未显示)及时脉产生与分配逻辑电路(图中未显示)等。
在实际运作中,指令自记忆体(图中未显示)中的提取是由提取逻辑电路601进行,且提取动作的进行是在一送至转换逻辑电路602的时脉讯号同步进行。转换逻辑电路602将每一指令转换成一对应微指令序列,该微指令序列依序同步于该时脉讯号送至微处理器600的后级605-608、618、619中。一序列微指令中的每一微指令使一需完成一整体运算所需子运算受到执行,其中整体运算是为一对应指令所预定,如由位址阶级606产生一位址、整数单元610中已自暂存器阶级605中预定暂存器(图中未显示)中取得的二运算元的相加、以及记忆体中执行单元610、612、614、616、617之一者藉储存逻辑电路618产生的结果的储存等。依照正转换中指令的不同,转换逻辑电路602使用转换器603以直接产生微指令序列,或自微码只读记忆体604提取该序列,或使用转换器603而直接产生该序列的一部份,并自微码只读记忆体604中提取该序列的剩余部份,其中该等微指令相继以同步于该时脉的方式在接续阶级605-608、618、619中行进。当抵达执行阶级608时,该等微指令及其运算元(自暂存器阶级605中暂存器取得,或为位址阶级606中逻辑电路所产生,或为负载逻辑电路608自一资料快取记忆体中取得)为执行逻辑电路632转送至一指定执行单元610、612、614、616、617,且转送的方式为置放该等微指令于一对应的微指令列609、611、613、615中。接着,执行单元610、612、614、616、617执行该等微指令,并将结果送至储存阶级618中。在一实施例中,该等微指令包括指出其是否可与其它动作平行执行的栏位。
当一上述密码指令被提取时,转换逻辑电路602产生相关的微指令以使微处理器600中接续阶级605-608、618、619中的逻辑电路执行指定的密码运算,该等相关微指令的结构部份由控制字组暂存器308中内容所指的控制字组323中一金钥生成栏位值所决定,以下将有更详细的说明。举例而言,若金钥生成栏位值指定在一预定密码运算中将使用一使用者产生的金钥排程,则金钥生成逻辑电路640将建构相关微指令序列而使微处理器600自特定记忆体位置324取得使用者产生的金钥排程,并将使用者产生的金钥排程载入密码单元617的金钥随机存取记忆体内(以下将有更详细的说明),并在指定的密码运算的执行期间使用使用者产生的金钥排程,其中特定记忆体位置324是为金钥指标暂存器309中内容所指者。若金钥生成栏位值指定一金钥排程将以一所提供的密码金钥自动产生,则金钥生成逻辑电路640将建构相关的微指令序列以令微处理器600自记忆位置324取得所提供的密码金钥,并将该金钥载入密码使用单元617中金钥随机存取记忆体中,并将该金钥拓展成一金钥排程,并在预定密码运算执行期间使用经拓展的金钥排程,其中记忆位置324是为金钥指标暂存器309内容所指者。该密码金钥的大小得加程式化,藉由在该控制字组中建立一金钥大小栏位值即可达该可程式化目的。在一实施例中,金钥大小栏位值可预定使用128位元的密码金钥、192位元的密码金钥及256位元的密码金钥。
因此,一第一组复数个相关微指令直接被送至密码单元617,并令密码单元617载入负载汇流排620上的资料,或在入一输入资料区块及开始执行预定数量的密码回合而形成一输出资料区块,或提供一经形成的输出资料区块于储存汇流排622上而为储存逻辑电路618存于记忆体中。一第二组复数个相关微指令被送至其它执行单元610、612、614、616中,以执行其它完成预定密码运算所需的子动作,如E位元629的测试、致能D位元631、设定X位元625以指出一密码运算正进行中、更新暂存器级605中暂存器(如计数暂存器、输入文字指标暂存器及输出文字指标暂存器)及中断逻辑电路626所指出的中断627的处理等。该等相关微指令被排列,以达到多输入资料区块的经明定密码运算的最佳效能,其方式为插置整数单元微指令于密码单元微指令序列中,以使整数运算可与密码使用单元运算同步完成。微指令是包括于相关微指令中,用以使未处理的中断627的进行与回复。由于该等指向密码参数及资料的指标的全部皆设于x86架构式暂存器中,因此它们的状态在中断时会被储存,且自中断返回之时获得回复。当一自一中断返回时(即每当由一个中断返回的时候),微指令测试X位元625的状态以判断是否一密码运算刻正进行中。若判断结果为是,则运算反复对该中断发生时受处理的输入资料区块进行。该等相关微指令被排列,用以使指标暂存器及对一序列输入文字区块所为的一序列区块密码运算的过渡结果得在处理中断627前受到更新。
请参阅图6所示,图中说明一用以令图5微处理器进行密码子运算的微指令700范例中的栏位。该图中,微指令(micro instruction)700包括一微运算码栏位(micro opcode field)701、一资料暂存器栏位(dataregister field)702及一暂存器栏位(register field)703。微运算码栏位701明定一待受执行的子运算,并指定微处理器600的至少一阶级中逻辑电路以执行子运算,其中微运算码栏位701中的值指定微指令为本发明的密码单元执行。在一实施例中,微运算码栏位701有二值,其中第一值“载入(XLOAD)”指定资料将从一架构性暂存器内容所明定的记忆体位址中取得,其中架构性暂存器为资料暂存器栏位702的内容所指者,而该资料接着被载入密码单元中一暂存器,暂存器则为暂存器栏位703内容所明定者,且上述所取得的资料(如密码金钥资料、控制字组、输入文字资料及起始向量等)被送至密码单元。微运算码栏位701的第二值“储存(XSTOR)”指定密码单元所产生的资料当被储存于一由一架构性暂存器内容所指的记忆位址中,其中架构性暂存器由资料暂存器栏位702的内容所标定。在一多阶级密码单元实施例中,暂存器栏位703的内容预定复数个输出资料区块之一者储存于记忆体中,输出资料区块为资料栏位704中密码单元所提供,用以为储存逻辑电路所动作。以下针对本发明的密码单元所执行的载入及载入微指令进行更详细的说明,其中将配合表格2及表格3进行说明。
接续请参阅下列表格2所示:
    值   运算
    000   保留
    001   保留
    010   载入控制字组(CW)暂存器
    011   保留
    100   载入输入-0(IN-0)暂存器并开始密码使用单元
    101   载入输入-1(IN-1)暂存器
    110   载入密码金钥-0暂存器(低效128位元)
    111   载入密码金钥-1暂存器(高效128位元)
                         表格2
在上述的表格2中,用以说明图6中格式700的载入微指令的暂存器栏位703。如前面所述,一微指令序列在一密码指令转换后产生,微指令序列包括一第一组复数个微指令及一第二组复数个微指令,其中第一组复数个微指令为密码单元所执行,而第二组复数个微指令则为微处理器中密码单元外的至少一平行功能单元所执行,并使计数器更新、暂时暂存器、架构性暂存器、机器特殊暂存器的状态位元的测试及设定等子动作进行。第一组复数个指令提供金钥资料及密码参数,并输入资料至密码单元而令的产生金钥排程(或载入已自记忆体取得的金钥排程),以载入并加密(或解密)输入文字资料,并储存输出文字资料。此外,一载入微指令被送至密码单元以载入控制字组资料、载入一密码金钥或金钥排程、载入起始向量资料、载入输入文字资料及载入输入文字资料,并令密码单元开始进行一指定的密码运算。此时,一载入微指令的暂存器栏位703值0b010令密码单元载入一控制字组至其内部控制字组暂存器中。当微指令在管线中进行时,经由使用一暂存器阶级中的架构性控制字组指标暂存器内容可得控制字组储存的记忆体位址。记忆逻辑电路将位址转换成一记忆体存取的实际位址;负载逻辑电路自快取记忆体取得控制字组,并将控制字组置入资料栏位704中,且控制字组接着被送至密码单元。同样地,暂存器栏位值0b100令密码单元载入资料栏位704中输入文字资料,接着开始预定的密码运算。输入资料的存取是经由一存于一架构性暂存器中的一指标为之,此与控制字组者相当。值0b101令资料栏位704中输入资料载入内部暂存器IN-1中,该等资料可为输入文字资料(在管线作业时)或起始向量;值0b110及0b111则令密码单元分别载入一密码金钥或使用者产生的金钥排程中一金钥的低及高位元。在本发明中,使用者的定义为执行一特定功能或动作者,其可体现应用程式、作业系统、机器或人等。在一个实施例中,使用者生成密钥表是由应用程式建立的。在一可替代的实施例中,使用者生成密钥表是由人所建立的。
在一实施例中,暂存器栏位值为0b100及0b101时,一密码单元分为二阶级,用以使后续输入文字资料区块可加管线管理。因此,在欲执行后续二输入资料区块时,一第一载入微指令先执行以提供一第一输入文字资料至输入-1(IN-1),接着一第二载入微指令执行以将一第二输入文字资料至输入-0(IN-0),并令指令单元开始执行预定的密码运算。
若密码运算执行所根据者为使用者产生的金钥排程时,多数个对应该使用者产生的金钥排程中金钥的多数个载入微指令被送至密码单元,以令单元载入金钥排程中的的每一回合金钥。
载入微指令中暂存器栏位703的所有其它值皆被保留。
请参阅下列的表格3所示,在表格中显示图6所示格式700的载入微指令的暂存器栏位703。
       运算
     000   保留
     001   保留
     010   保留
     011   保留
     100   储存输出-0(OUT-1)暂存器
     101   储存输出-1(OUT-1)暂存器
     110   保留
     111   保留
                         表格3
一载入微指令被送至密码单元以令其提供一所产生(经密码或解密)的输出文字区块至储存逻辑电路中,以储存于记忆体中位址栏位702所指定的位置。因此,本发明的转换逻辑电路先发出一对一特定输出文字区块动作的载入微指令,接着再发出一对其对应输入文字区块动作的载入微指令。暂存器栏位703的值0b100令密码单元提供与其内部输出输出-0(OUT-0)暂存器相关的输出文字区块至储存逻辑电路中以供储存,输出-0的内容与送至输入-0的输入文字区块相关。同样地,暂存器栏位值所参考的内部输出-1暂存器的内容与送至输入-1的输入文字资料相关。因此,复数个输入文字区块在载入金钥及控制字组资料后可在密码单元中加以管线管理,藉由以载入.输入-1、载入.输入-0(载入.输入-0令密码单元同样开始执行密码运算)、载入.输出-1、载入.OUT-0、载入.输入-1、载入.输入-0(开始进行后续二输入文字区块的动作)等的顺序发出密码微指令的方式即可达成。
请参阅图7所示,该图说明本发明中一用以预定密码运算的密码参数的控制字组1000格式(control word format)。控制字组1000由一使用者程式化至记忆体中,且其指标在密码运算执行之前被送至一相容微处理器中一架构性暂存器。因此,一对应一经提供的密码指令电路的微指令序列中的一载入微指令被送出,以令微处理器读取含指标的架构性暂存器,以将指标转换成一实际记忆体位址,藉以自记忆体(快取记忆体)取得控制字组1000,并将控制字组1000载至密码单元的内部控制字组暂存器中。而密码指令电路提供至少一密码指令,其用来指示一密码运算,而指令电路包括逻辑电路、装置或微码(即微指令或本机指令(native instruction))、或是一个逻辑电路、装置或微码的组合,由于该指令电路并非为本发明的重点,故在此不再对其作详细说明。控制字组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中明定回合数,或是否密码/解密是否该依回合计数栏位1008中明定的回合数加以执行,其中该所执行的最后一回合代表一过渡结果而非一最终结果,此为演算法栏位1007中明定演算法的特征。熟习该项技术者皆了解诸多演算可在每一回合中执行相同的子运算,但在最后一回合所为者则不同。因此,若中间结果栏位1005被程式化成提供以过渡结果而非最终结果有其优点,因其可令程式设计者确认所为演算法的中间步骤。举例而言,藉渐进过渡结果确认演算法性能的作法可利用对一文字区块加以一密码回合、接着对该相同文字区块执行以二回合、并接着执行三回合等方式而达成。
请参阅下列的表格4所示,其用以说明图7的控制字组1000的金钥大小栏位1003的范例值:
  密钥大小     密码金钥大小(位元)
    00     128
    01     192
    10     256
    11     保留
                        表格4
其中,值“00”令计算装置以一128位元密码金钥大小执行一预定密码运算,值“01”令计算装置以一192位元密码金钥大小执行预定密码运算,值“01”令计算装置以一256位元密码金钥大小执行预定密码运算,其余的值则受保留。
请参阅图8所示,其是为说明本发明的密码单元的范例的方块图。在图中,该密码单元1200包括一微运算码暂存器1203,其经由一微指令汇流排(micro instruction bus)1214接收密码微指令(即载入及储存微指令),并具有一控制字组暂存器(control word register)1204、一输入-0暂存器1205、输入-1暂存器1206、一金钥-0暂存器1207以及一金钥-1暂存器1208。依照微指令暂存器1203中一载入微指令的内容所预定者,资料经由一载入汇流排1211送至暂存器1204-1208。此外,密码单元1200亦包括区块密文逻辑电路(block cipher logic)1201,该逻辑电路1201耦合至暂存器1203-1208的每一者,并亦耦合至密码金钥随机存取记忆体随机存取记忆体(cryptographic key RAM)1202。此外,区块密文逻辑电路1201还提供一暂停讯号(stall signal)1213,并亦提供区块结果至一输出-0暂存器1209及一输出-1暂存器1210。该输出暂存器1209-1210将其内部所存内容经由一储存汇流排(store bus)1212送至一相容微处理器的后级中。在一实施例中,微运算码暂存器1203的大小为32位元,暂存器1204、1207及1208的大小为128位元,而暂存器1205-1206及1209-1210的大小则为256位元。
密码微指令可与控制字组暂存器1204预定的资料选择性依序提供至微指令暂存器1203、输入暂存器1205-1206中其一、或金钥暂存器1207-1208中其一。在表格2及表格3所示的实施例中,一控制字组经由一载入微指令而被载至控制字组暂存器1204中,接着密码金钥或金钥排程经由后续载入微指令而被载入。若当被载入的密码金钥为128位元者,则一载入微指令用以指定暂存器金钥-0 1207。若当被载入的密码金钥大于128位元,则一载入微指令指定暂存器金钥-0 1207,且一载入微指令指定暂存器金钥-11208。若当被载入者为一使用者产生的金钥排程,则后续载入微指令指定暂存器金钥-0 1207。被载入的金钥排程中金钥的每一者依顺序置放于金钥随机存取记忆体1202中,以供其相对金钥回合执行之时所用。之后,输入文字资料(若不需使用起始向量),被载至输入-1暂存器1206。若使用起始向量,则其被经由一载入微指令载至输入-1暂存器1206。一送至输入-0暂存器1205的微指令令密码单元将输入文字资料载至输入-0暂存器1205,并开始利用输入-1中或二输入暂存器1205-1206中(当输入资料正处管线处理之时)起始向量对暂存器输入-0 1205中输入文字资料执行以密码回合,其中密码回合的执行是依控制字组暂存器1204中内容所提供的参数进行。当一接收及一指定输入-0 1205的载入微指令时,区块密文逻辑电路1201开始执行控制字组内容预定的密码运算。若一单一密码金钥需加以拓展时,区块密文逻辑电路1201产生金钥排程中的每一者,并将其储存于金钥随机存取记忆体1202。不论区块密文逻辑电路1201是否产生一金钥排程或金钥排程是否自记忆体中载出,第一回合所用金钥在区块密文逻辑电路1201皆被加以快取,以使第一区块密码回合可在不需使用金钥随机存取记忆体1202的条件下进行。区块密文逻辑电路1201在一经起动后即持续对至少一输入文字区块执行预定密码运算,直至该运算完成止。接着,自金钥随机存取记忆体1202中提取所用密码演算法所需的回合金钥。密码单元1200对受指定的输入文字区块加以明定的区块密码运算,后续输入文字区块经由相对的后续载入及储存微指令的执行而被加密码或解密。当一储存微指令被执行时,若预定的输出资料(即输出-0或输出-1)尚未完全产生,则区块密文逻辑电路1201发出拖延讯号1213。一旦输出资料已经产生并被置入一对应输出暂存器1209-1210中,则该暂存器1209-1210的内容被传送至储存汇流排1212。
请参阅图9所示,其为一说明本发明用以依进阶加密标准执行密码运算的区块密文逻辑电路1300实施范例的方块图。区块密文逻辑电路1300包括一回合引擎(round engine)1320,回合引擎1320经由汇流排1311-1314及汇流排1316-1318耦合至一回合引擎控制器(round engine controller)1310,并包括一金钥大小控制器(key size controller)1330,并藉使用一微指令暂存器(micro instruction register)1301、控制字组暂存器(control word register)1302、金钥-0暂存器1303及金钥-1暂存器1304而存取金钥资料、微指令及所进行的密码运算的参数。输入暂存器1305-1306的内容被送至回合引擎1320,且回合引擎1320提供对应输出文字至输出暂存器1307-1308。该输出暂存器1307-1308亦经由汇流排1316-1317耦合至回合引擎控制器1310,以令回合引擎控制器可使用每一后续密码回合的结果,其中,该等结果经由汇流排NEXTIN 1318而送至一下一密码回合。金钥随机存取记忆体(图中未显示)中的密码金钥经由汇流排1315而被存取;加密/解密讯号1311令回合引擎使用子运算而执行密码(如S-Box)或解密(如反向S-Box);回合(RNDCON)汇流排1312的内容令回合引擎1320执行一第一AES回合、一中间进阶加密标准回合或一最后进阶加密标准回合。根据一预定所用密码金钥的控制字组中一金钥大小栏位的内容,金钥大小控制器1330经由金钥大小汇流排1319明定密码金钥的大小。若金钥排程将以自动方式产生,则回合引擎控制器1310发出金钥生成讯号1314而令回合引擎1320使用经由汇流排1313提供的金钥产生的一金钥排程,其中该金钥的大小由金钥大小1319明定,且金钥汇流排1313亦用以将每一对应执行的回合金钥提供与回合引擎1320。在一实施例中,金钥大小汇流排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 Column)逻辑电路1326,混栏逻辑电路耦合至一第三暂存器暂存-2 1327。第一金钥逻辑电路1321、S-box逻辑电路1323、移列逻辑电路1324及混栏逻辑电路1326被设定以对输入文字资料执行类似名称的子运算,该等当执行的子运算明定于上述进阶加密标准FIPS标准中。此外,栏逻辑电路1326亦被设定以在所需的中间回合期间对输入资料执行进阶加密标准互斥功能,其中功能的执行是利用经由金钥汇流排1313所提供的回合金钥。第一金钥逻辑电路1321、S-box逻辑电路1323、移列逻辑电路1324及混栏逻辑电路1326亦被设定以在解密期间执行其对应反进阶加密标准子运算,且该解密动作是经由加密/解密讯号1311的状态而启动。熟习该项技术者皆能了解中间回合资料的依据特定区块密码模式而送回至回合引擎1320是为控制字组暂存器1302所明定。起始向量资料(若需要)经由汇流排NEXTIN 1318而送至回合引擎1320。
在图9所示实施例中,回合引擎被分作二阶级,即一位于暂存-0 1322及暂存-1 1325间的第一阶级及一位于暂存-1 1325及暂存-2 1327间的第二阶级。中间回合资料在二阶级之间受管线管理,且管线控管是与一时脉讯号(图中未显示)同步为之。当对一输入资料区块的一密码运算动作完成时,相关输出资料被置入一对应输出暂存器1307-1308中。当一储存微指令被执行时,一指定输出暂存器1307-1308即被送至一储存汇流排(图中未显示)上。
请参阅图10所示,图中所示为一说明本发明的一用以在中断发生时保存密码参数状态的方法的流程图。该流程起始于方块1402,此时一指令流为一微处理器执行,其中指令流不需包括本案中所述密码指令。接着,流程往决策方块1404移动。
在决策区块1404时,一中断事件(如可遮罩中断、非可遮罩中断、页错误、工作切换等)是否正发生中将受判断,此时该指令流中需有一改变而形成一指令流(“中断处理者”)以处理该中断事件。若中断确实正进行中,该流程往区块1406前进;若否,则该流程在决策方块1404上反复判断直至一中断事件发生,其中在反复判断期间指令执行的动作持续进行。
在方块1404时,由于在将程式控制权传送至一对应中断处理者之前已经有一中断事件发生,故本发明的中断逻辑电路对一旗标暂存器中的X位元加以清除,如此可确保若在中断处理者处返回时一区块密码运算正进行中、至少一中断事件的发生将被指出且控制字组资料及金钥资料必须在持续进行区块密码运算之前再被载入,其中密码运算所针对的输入资料区块为输入指标暂存器内容所指者。
在方块1408时,包括与本发明的区块密码运算性能相关的指标及计数器架构性暂存器被存至记忆体中。熟习该项技术者皆能了解,现今资料计算装置中架构性暂存器的储存典型上是在传送控制至中断处理者之前为之,因此本发明提出本资料架构态样以令中断事件发生整个过程中具有执行透明度。在暂存器被储存后,流程前进至方块1410。
在方块1410时,程式流被送至中断处理者处。接着,流程前进至方块1412。
该方法在行进至方块1412时结束。熟习该项技术者皆能了解图10的方法在于中断处理者处返回时在方块1402处再度开始。
请参阅图11所示,图中所示为一用以说明本发明的利用一使用者预定密码金钥大小而于至少一中断事件发生之时对复数个输入资料区块执行一密码运算的方法的流程图1500。为使说明较为清楚,依据区块密文模式执行的需要对区块间(如输出回授模式及密文回授模式等之间)起始向量等效者加以更新,及储存的明定密码运算流程(图中未显示),但该等其它区块密文模式亦为本发明的方法所涵盖。
流程开始于方块1502,此时一本发明的密码指令使一密码运算开始执行。密码指令的执行可为一第一执行,或可为一第一执行之后的执行,因为一中断事件造成执行中断之故,其中中断事件对执行的中断使得程式控制权在一中断处理者已执行之后传送回至密码指令。接着,流程行进至方块1504。
在方块1504时,一本发明的输入指标暂存器内容所指的一记忆体资料区块自记忆体中载出,且一预定密码运算即开始。在一预定实施例中,执行预定密码运算的密码金钥大小为128位元,且指令需执行以在发出密码指令之前清除X位元。在一x86相容且一x86旗标暂存器使用30位元的实施例中,X位元可藉执行一PHSDFD指令,并再接着执行一POPFD指令而受清除。然而,熟习该项技术者皆知在其它不同实施例中其它指令必须用以清除X位元。在一实施例中,预定的密码运算根据进阶加密标准演算法开始进行。接着,流程行进至决策方块1506。
在决策方块1506时,一旗标暂存器中X位元是否为设定状态被加判断。若X位元被设定,则控制字组及以被载进本发明的密码使用单元的金钥排程之值成立;若X位元被清除,则控制字组及以被载进本发明的密码单元的金钥排程之值不成立。如上述配合图10所略为提及者,X位元在一中断事件发生之时被清除。若X位元被设定,则流程行进至方块152;若X位元被清除,则流程行进至方块1508。
在方块1508时,由于一被清除的X位元已指出一中断事件已发生或一新控制字组及(或)金钥资料将被载入,因此一控制字组自记忆体中载出。在一实施例中,控制字组的载入使密码单元不执行预定密码运算,如上述配合方块1504所载述者。在本实施范例中方块1504中一密码运算的开始可使多个依电子密码书模式进行的128位元区块密码运算得到最佳化,其方式为假设一目前的控制字组及金钥资料将被使用、且利用一128位元金钥对128位元输入区块所为的电子密码书模式为最常用的区块密文模式。因此,目前输入资料区块被载入,且在核对决策方块1506中X位元状态之前开始的密码运算被重设。接着,流程行进至决策方块1514。
在决策方块时,方块1508处取得的控制字组的KSIZE栏位被依据以决定预定密码运算执行之时当受使用的金钥大小。若金钥大小栏位值预定为一192位元的金钥,那么流程行进至方块1510;若金钥大小栏位值预定为一128位元的金钥,那么流程行进至方块1516;若金钥大小栏位值预定为一256位元金钥,则流程行进至方块1518。
在方块1512时,密码金钥资料自记忆体中载出。根据控制字组中金钥生成及金钥大小栏位的状态,金钥资料非完全载自记忆体(即一使用者产生的金钥排程)即一起始金钥被载入,并被拓展成一金钥排程。接着,流程行进至方块1522。
在方块1516时,由于区块密文逻辑电路中汇流排金钥大小预定一128位元密码金钥,此时所需进行者为载入/拓展密码金钥资料,如上述配合方块1512所述者。接着,流程行进至方块1522。
在方块1518时,本发明的区块密文逻辑电路中汇流排金钥大小被设定,以令其回合引擎利用一256位元密码金钥执行密码运算。接着,流程行进至方块1520。
在方块1520时,密码金钥资料如上述配合方块1512说明的方式加以载入/拓展。接着,流程行进至方块1522。
在方块1518时,方块1504所指的输入区块再度被载入,且密码运算依最新载入的控制字组及金钥排程开始进行,其中此时的载入是依控制字组中DSIZE栏位值明定的区块大小进行。
在方块1524时,一大小对应于被载入输入区块的输出区块被产生。当进行加密动作时,输入区块为一未加密文件区块,且该输出区块为一对应密文区块。当进行解密动作时,输入区块为一密文区块,且输出区块为一对应未加密文件区块。接着,流程行进至方块1528。
在方块1528时,输入及输出区块指标暂存器改变成指向下一输入及输出资料区块,且是依控制字组中资料区块大小栏位值为之。此外,区块计数器暂存器的内容被改变成指出目前输入资料区块的密码运算的完成。在配合图11讨论的实施例中,区块计数器暂存器值被递减。不过,熟习该项技术者皆知其它不同实施例可对区块计数器暂存器的内容可加操纵及测试,以亦能对输入文字区块加以管线式执行。接着,流程行进至决策区块1530。
在决策区块1530时,一输入资料区块是否当继续加以运算被受判断。在此处所述实施例中,区块计数器被用以判断其值是否等于零。若无任何区块当被执行时,则流程行进至方块1534;若一区块当被继续执行,则流程行进至方块1532。
在方块1532时,一为输入指标暂存器内容所指的下一输入资料区块被载入。接着,流程行进至方块1524。
该方法在行进至方块1534时结束。
本发明的目的、特征及优点已经详述于上,但其它实施例亦属于本发明包括的范围。举例而言,本发明的与x86架构相容的实施例已经详尽描述于上,由于x86架构为一般技术人员所广泛了解,故对其的讨论可用以教示本发明的其它部份。亦即,本发明的范围扩及PowerPC、MIPS等其它指令集架构,并亦适用于其它全新的指令集架构。
甚者,本发明的密码运算亦可在一计算系统中微处理器本身以外的控制元件中进行,如可在计算系统中一不同于微处理器所在集成电路上的一密码单元上进行,该等实施例可依序整合于一围绕一微处理的晶片组(如北桥及南桥)中,或可构成一专用以执行密码运算的处理器,此时密码指令由一主微处理器被送至处理器中。本发明亦可用于嵌入式控制器、工业控制器、讯号处理器、阵列处理器以及各种可用以处理资料的类似装置中。此外,本发明亦包括一仅具有上述中该等用以执行密码运算所必须的控制元件的实施例。以上述方式呈现的装置确实可将执行密码运算的低成本及低功率代用方式单由一通讯系统中一加密/解密处理器等实施之。为便于说明,本案发明人将上述该等不同处理元件统称作处理器。
此外,虽然上述说明中本发明是以128位元区块作为代表说明,其它各种不同区块大小亦可使用之,仅需改变携带输入资料、输出资料、金钥及控制字组的暂存器的大小即可达成。
再者,虽然资料加密标准、三重资料加密标准及进阶加密标准的特征已在本案中详述,但本案发明人当特别说明,本发明实际上亦包括一般所较不常用的区块密文演算法,如MARS密文、Rijndael密文、Twofish密文及Blowfish密文、Serpent密文及RC6密文。在详阅过上述说明后,本发明的专用区块密码使用装置及微处理器中的支援方法必足为一般所了解,其中极微区块密码运算可经由对一单一指令的执行而被引动动作。
此外,虽然本发明已针对区块密码演算法及执行区块密码功能的相关技术进行说明,但本发明实则包括区块密码的其它密码使用形式。读者亦不难理解使用者可藉单一指令的执行而令一相容微处理器在包括一专用密码使用单元的条件下执行加密或解密等密码运算,其中专用密码单元是用以完成指令所预定的密码功能。
甚者,本案中所述回合引擎可提供一二阶级装置以对二输入资料区块进行管线式处理,本案发明人当特别说明超过三阶级的实施例亦存在之。可以预见的是,支援多输入资料区块的管线式处理工作的分级方式可随一相容微处理器中其它阶级的切分技术的提升而演进。
最后,本发明已经详述支援复数个区块密码演算法的密码单元为单一者,但本发明的范围实亦包括多个密码单元,该等单元在运算上与相容微处理器中其它执行单元平行耦合,且皆设定以执行一既明定的区块密码演算法。举例而言,一第一单元设定以执行进阶加密标准演算法,一第二单元设定以执行资料加密标准演算法等。
本发明已针对特定实施例详述如上,熟习该项技术者可在不违本发明的精神及范围的条件下,对本发明加以改变或更动,该等改变或更动仍不脱离本发明的范围,本发明的精神及范围将定义于申请专利范围中。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟习本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的方法及技术内容作出些许的更动或修饰为等同变化的等效实施例,但是凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

Claims (17)

1、一种可设定密码金钥大小的微处理器装置,其特征在于其包括:
一密码指令电路,用以产生一密码指令,该密码指令是为一计算装置所接收,并属于在该计算装置上执行的一指令流的一部份,其中该密码指令指定该等密码运算之一者,且该密码指令指定复数个密码金钥大小之一者;以及
执行逻辑电路,在运算上耦合至该密码指令电路,并被设定以执行被指定的密码运算,该执行逻辑电路包括一金钥大小控制器,用以在被指定的密码运算执行期间使用被指定的密码金钥大小。
2、根据权利要求1所述的装置,其特征在于其中所述的被指定的密码运算更包括:
一加密运算,该加密运算包括对复数个明文区块加以加密的运算,以产生对应的复数个密文区块;以及
一解密运算,该解密运算包括对复数个密文区块加以解密的运算,以产生对应的复数个明文区块。
3、根据权利要求1所述的装置,其特征在于其中所述的被指定的密码金钥大小为128位元、192位元或256位元。
4、根据权利要求1所述的装置,其特征在于其中所述的金钥大小控制器被用以解译该密码指令所参考的一控制字组中的一金钥大小栏位。
5、根据权利要求1所述的装置,其特征在于其中所述的密码指令的预定是依x86指令格式。
6、根据权利要求1所述的装置,其特征在于其中所述的密码指令参考该计算装置中复数个暂存器。
7、根据权利要求6所述的装置,其特征在于其中所述的该等暂存器包括:
一第一暂存器,该第一暂存器的内容包括一第一指标,该第一指标指向一第一记忆体位址,该第一记忆体位址明定一第一记忆体位置,用以对复数个输入文字区块进行存取,其中该等输入文字区块是被用以成该等密码运算;
一第二暂存器,该第二暂存器的内容包括一第二指标,该第二指标指向一第二记忆体位址,该第二记忆体位址明定一第二记忆体位置,用以储存对应的复数个输出文字区块,该等对应的复数个输出文字区块是为在复数个输入文字区块执行被指定的密码运算所产生的结果;
一第三暂存器,该第三暂存器的内容指出复数个输入文区块中的某几个区块;
一第四暂存器,该第四暂存器的内容包括一第三指标,该第三指标指向一第三记忆体位址,该第三记忆体位址明定一第三记忆体位置,用以存取完成被指定的密码运算所需的密码金钥资料;
一第五暂存器,该第五暂存器的内容包括一第四指标,该第四指标指向一第四记忆体位址,该第四记忆体位址明定一第四记忆体位置,该第四记忆体位置包括该起始向量位置,该起始向量位置对应的内容包括一起始向量或该起始向量的等效者,用以完成被指定的密码运算;以及
一第六暂存器,该第六暂存器的内容包括一第五指标,该第五指标指向一第五记忆体位址,该第五记忆体位址用以明定一第五记忆体位址,用以存取一控制字组以完成被指定的密码运算,其中该控制字组预定被指定的密码运算的密码参数,且其中该控制字组包括一金钥大小栏位,该金钥大小栏位被设定以明定被指定的密码金钥大小在被指定的密码运算执行时的大小。
8、根据权利要求7所述的装置,其特征在于其中所述的密码金钥资料包括:
一密码金钥,该密码金钥包括多数个位元,该多数个位元是依被指定的密码金钥大小而定;以及
一使用者产生的密码金钥排程。
9、根据权利要求1所述的装置,其特征在于其中所述的执行逻辑电路包括一密码单元,该密码单元被设定用以对复数个输入文字区块的每一者执行复数个密码回合,以产生对应的复数个输出文字区块的每一者,其中被指定的密码金钥大小为一控制字组所预定,其中该控制字组被提供予该密码单元中该金钥大小控制器。
10、一种可设定密码金钥大小的微处理器装置,其特征在于其包括:
一密码单元,位于一装置中,该密码单元被设定在接收一指令流内的一密码指令后执行该等密码运算之一者,其中该指令流预定被指定的密码运算,且该密码指令亦预定一当于执行被指定的密码运算所使用的金钥大小;以及
金钥大小控制逻辑电路,是运算地耦合于该密码单元,并被设定以令该装置在执行被指定的密码运算时使用该金钥大小。
11、根据权利要求10所述的装置,其特征在于其中所述的金钥大小为128位元、192位元或256位元。
12、根据权利要求10所述的装置,其特征在于其中所述的金钥大小控制逻辑电路被设定以解译一在一为该密码指令参考的控制字组中的一金钥大小栏位。
13、根据权利要求10所述的装置,其特征在于其中所述的密码指令的预定是依该x86指令格式。
14,一种可设定密码金钥大小的方法,其特征在于其包括下列步骤:
接收一密码指令,该密码指令预定复数个密码运算之一者执行期间的密码金钥大小;以及
在执行被指定的密码运算时使用该密码金钥大小。
15、根据权利要求14所述的方法,其特征在于其中所述的接收步骤包括经由一在一为该密码指令参考的控制字组中的一栏位以明定该金钥密码大小的步骤。
16、根据权利要求14所述的方法,其特征在于其中所述的接收步骤包括依该x86指令格式预定该密码指令。
17、根据权利要求15所述的方法,其特征在于其中所述的明定步骤包括预定128位元、预定192位元或预定256位元为该密码金钥大小。
CNB2005100598656A 2004-04-16 2005-03-31 可设定密码金钥大小的微处理器装置及方法 Active CN100539495C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/826,475 2004-04-16
US10/826,475 US7536560B2 (en) 2003-04-18 2004-04-16 Microprocessor apparatus and method for providing configurable cryptographic key size

Publications (2)

Publication Number Publication Date
CN1684409A true CN1684409A (zh) 2005-10-19
CN100539495C CN100539495C (zh) 2009-09-09

Family

ID=35263553

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100598656A Active CN100539495C (zh) 2004-04-16 2005-03-31 可设定密码金钥大小的微处理器装置及方法

Country Status (2)

Country Link
CN (1) CN100539495C (zh)
TW (1) TWI250450B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2107808A1 (fr) * 2008-04-03 2009-10-07 Nagravision S.A. Module de sécurité (SM) pour unité de traitement de données audio/vidéo
TWI707247B (zh) * 2018-12-28 2020-10-11 中華電信股份有限公司 資料保全系統及其使用方法

Also Published As

Publication number Publication date
TWI250450B (en) 2006-03-01
CN100539495C (zh) 2009-09-09
TW200535692A (en) 2005-11-01

Similar Documents

Publication Publication Date Title
CN1282324C (zh) 数据加密装置和方法
CN1838140A (zh) 运用加密功能以产生信息摘要的设备及方法
CN1203431C (zh) 公用密钥加密装置
CN1023282C (zh) 数据的传递方法和系统
CN1124545C (zh) 实现高速加密处理的设备和方法
CN1266615C (zh) 微处理器
CN1273902C (zh) 调试系统,微处理器,以及调试器
CN1272929C (zh) 加密/解密方法和使用多仿射密钥系统的验证方法及装置
CN1921382A (zh) 一种基于aes算法的加解密方法及加解密器
CN1330819A (zh) 利用双重加密保护数字数据的方法及装置
CN1142718A (zh) 通信设备和通信系统
CN1701294A (zh) 计算单元及以加密操作数执行算术运算之方法
CN1839581A (zh) 装置认证信息安装系统
CN1303065A (zh) 数据库管理装置和加密/解密系统
CN1977250A (zh) 进行加密或解密的计算机系统和计算机程序
CN1312630A (zh) 基于分块加密方式的加密装置与方法及译码装置与方法
CN1677920A (zh) 保护媒体内容的方法和系统
CN1313917C (zh) 数据处理装置以及数据处理方法
CN1855805A (zh) Sip消息的加密方法和加密通信系统
CN1518268A (zh) 公用密钥交换方法及通信设备
CN1257635C (zh) 数据通信方法以及数据处理设备
CN1319209A (zh) 数字通信处理器
CN1416054A (zh) 数据处理装置、数据处理方法和程序
CN1493996A (zh) 基于对称密钥加密保存和检索数据
CN100346321C (zh) 移动式大容量电子存储器的安全存储控制装置及实现方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant