CN1661958B - 区块密码功能的微处理器及方法 - Google Patents
区块密码功能的微处理器及方法 Download PDFInfo
- Publication number
- CN1661958B CN1661958B CN2005100550106A CN200510055010A CN1661958B CN 1661958 B CN1661958 B CN 1661958B CN 2005100550106 A CN2005100550106 A CN 2005100550106A CN 200510055010 A CN200510055010 A CN 200510055010A CN 1661958 B CN1661958 B CN 1661958B
- Authority
- CN
- China
- Prior art keywords
- crypto
- block
- microcommand
- input characters
- execution
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供一种在处理器内复数个输入资料区块执行密码运算的装置及方法。此装置包含一撷取逻辑电路,位于一微处理器中,用以接收一密码指令,一转译逻辑电路,以及一执行逻辑电路。转译逻辑电路是将密码指令转译成微指令,此微指令用以在指示微处理器储存对应第一输入文字区块的输出文字区块之前,指示微处理器载入第二输入文字区块并对此第二输入文字区块执行密码运算。在对第二输入文字区块执行密码运算期间,输出文字区块可以被储存。执行逻辑电路,耦合于该转译逻辑电路,用于根据进阶加密标准执行该指定的密码运算。执行逻辑电路包含:一密码单元,以接收该微指令并当该指定的密码运算执行于该第二输入文字区块时,用以储存该输出文字区块。
Description
技术领域
本发明是有关于微电子领域,特别是有关于一种可在具有微指令最佳化顺序的计算装置中执行密码运算的装置及方法,以增加此计算装置的产量(throughput)。
背景技术
早期的电脑系统是独立操作于其他电脑系统之外,据此,执行于此电脑系统中的应用程序所需的输入资料,若非储存于此电脑系统,就是由应用程序设计人员在执行时提供;而应用程序执行结果及产生的输出资料,其形式一般为列印输出的纸张,或者是写入磁带、磁盘或是此电脑系统其他类型的储存装置的档案。输出档案可当成之后在相同电脑系统中执行的应用程序的输入档案,或者,当输出资料先前被储存成档案于可移除或可输送的储存装置时,其也可以提供给不同但相容的电脑系统的应用程序使用。在这些早期的系统,保护机密资讯的需求是公认,并且在其他资讯安全措施中,密码应用程序被发展及应用以防止机密资讯未被授权揭露。这些密码程序一般是以加密或解密的方式在储存装置中储存成档案的输出资料。
其后没几年,使用者开始发现由网路将电脑连接可以提供资讯共享存取的好处,因此网路架构、操作系统、以及资料传输协定等均发展成不仅支援存取共享资料的能力,更是其显著的特征。例如:使用者的电脑工作站可以在不同工作站或网路档案伺服器存取档案,或者利用网际网路获得新闻及其他资讯,或者对数以百计的其他电脑传送及接收电子信息(如电子邮件),或者与经销商的电脑系统连接并提供信用卡或银行资讯以购买产品,或者在餐厅、机场或其他公共场合利用无线网路进行上述的任何活动。因此,保护机密资料及传输免于未授权揭露的需求已急速的成长,而在某些特定的状况下,使用者被迫保护其机密资料的情况也大大的增加。目前新闻头条通常集中在电脑资讯安全问题,例如垃圾邮件(spam)、骇客、身分盗取、反向工程、恶作剧以及信用卡诈骗等是公众所关注的前几名。而当这些从各方面侵入私人领域的动机由无心的错误到有预谋的网路攻击,负责的执行单位以新法律、严厉的执行以及公共教育节目回应。然而,这些回应并未有效遏止危及电脑资讯的浪潮。昔日是政府、金融机构、军方所专注关切的间谍,现在对一般人而言也已成为重要的问题;间谍读取他们的电子邮件或从他们的家用电脑存取他们检查帐户的交易。在商业之前,熟悉该项技术者可察知从小到大的社团法人目前应用其资源卓越的部分以保护财产资讯。
资讯安全领域提供我们技术及装置以加密资料,并使其仅能由指定的个体加以解码,此为所知的密码(cryptography)。当特别应用于保护储存或传输于电脑之间的资讯时,密码最常被应用于转换机密资料(称为“明文”;plaintext或cleartext)成为难以理解的形式(称为“密文”;ciphertext)。转变明文成为密文的转换过程称为加密(encryption;enciphering;ciphering),而转变密文回明文的反向转换过程称为解密(decryption;deciphering;inverse ciphering)。
在密码学的领域中,几种程序及协定已发展到允许使用者不须具备许多知识及努力即可执行密码运算,并且针对这些使用者使其可以传输或者提供其加密形式的资讯产品给不同的使用者。连同加密资讯,传送者通常会提供接收者一“密码钥匙(cryptographic key)”以使接收者可以解码所加密的资讯,因此使得接收者能够恢复或者获得存取未加密的原始资讯。熟悉该项技术者可察知这些程序及协定一般是以暗语(password)保护、数学演算法以及应用程序特别设计的形式加以实现以加密及解密机密资讯。
几种类型的演算法目前使用于加密及解密资料。演算法根据上述一类型(例如一种RSA演算法,公开钥匙密码演算法)利用两密码钥匙(一公开钥匙(public key)与一私人钥匙(private key)),加密或解密资料。根据一些公开钥匙演算法,接收者的公开钥匙是被传送者用来加密传送给接收者的资料,因为有一数学关是存在于使用者的公开钥匙与私人钥匙之间,因此接收者必须利用其私人钥匙解密此传输以恢复此资料。虽然这类型的密码演算法广泛使用于现今,但其加密及解密的运算却是极慢甚至于少量的资料。一第二类型的演算法,如所知的对称钥匙演算法,提供同量等级的资料安全并且可以较快执行。这些演算法称为对称钥匙演算法,因为他们对加密及解密资讯使用单一密码钥匙。在公开区段,目前有三种盛行单一钥匙(single-key)密码演算法:资料加密标准(Data EncryptionStandard;DES)、三重资料加密标准(Triple DES)以及进阶加密标准(Advanced Encryption Standard;AES)。因为这些演算法保护机密资料的强度,美国政府机关目前正使用这些演算法,但熟悉该项技术者预期这些演算法中至少一个演算法,在不久的将来会变成商业及非官方交易的标准。根据所有这些对称钥匙演算法,明文及密文被划分在指定大小中的区块以进行加密及解密。例如:进阶加密标准执行密码运算于128比特区块的大小,并且使用128比特、192比特以及256比特的密码钥匙长度。其他对称钥匙演算法,例如Rijndael Cipher也允许192比特以及256比特的资料区块。据此,就一区块加密运算而言,一1024比特的明文信息加密成8个128比特的区块。
所有对称钥匙演算法利用相同形式的次运算以加密一区块的明文,并且根据许多更常被应用的对称钥匙演算法,一初始密码钥匙被扩展成复数个钥匙(例如:一“钥匙排程”),每一钥匙是用以当成次运算的一对应密码“回合”且执行于明文区块。例如:钥匙排程的第一钥匙是用以执行次运算的第一密码回合于明文区块,第一回合的结果是用以当成第二回合的输入,其中第二回合利用钥匙排程的第二钥匙以产生第二结果,并且一具体指定数量后来的回合执行产生一最终回合结果,即密文本身。根据进阶加密标准演算法,在每一回合的次运算是参照于文献中的次比特组(或S-box)、移列(ShiftRows)、混栏(MixColums)以及加入回合键(AddRoundKey)等。一区块密文的解密是类似的处理并伴随例外的执行在每一回合,且回合的最终结果是一区块的明文,上述的例外是指密文输入反加密及反次运算执行(例如:Inverse MixColumns、InverseShiftRows)。
资料加密标准及三重资料加密标准演算法利用不同特定的次运算,但是这些次运算是类似进阶加密标准演算法的次运算,因为其利用相似的方式以转换一区块的明文成为一区块的密文。
执行密码运算于多连续的文字区块,所有对称钥匙演算法利用相同类别的模式,这些模式包含电子密码本(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 ofStandards and Technology;NIST)所发布及主张,在此列为参考以供本发明所有意图及目的的说明。除上述所提及的标准,教导(tutorial)、白皮书、套件(toolkit)以及资源文章均可透过网际网路http://csrc.nist.gov/在NIST的电脑资源安全中心(Computer SecurityResource Center;CSRC)获得。
熟悉该项技术者可察知有许多的应用程序能够执行在可以执行密码运算(例如:加密及解密)的电脑系统。实际上,某些操作系统(例如:微软Window XP、Linux)提供直接加密/解密的服务于密码基元(primitive)、密码应用程序介面以及诸如此类的形式。然而,本发明人已观察到现今电脑密码技术在某些方面的缺陷,因此由图1强调及讨论这些缺陷。
图1是现今电脑密码应用的方块图100。方块图100描绘第一电脑工作站101连接区域网路(local area network)105,且区域网路105也连接第二电脑工作站102、网路档案储存装置(network filestorage device)106、第一路由器(first router)107或其他介面形式到广域网路(wide area network,WAN)110(例如:网际网路)以及像是符合IEEE 802.11的无线网路路由器(wireless networkrouter)108,笔记型电脑(laptop computer)104则是透过无线网路109与无线路由器108成为介面。在广域网路110方面,第二路由器(second router)111提供介面给第三电脑工作站103。
如上概述,现今的使用者在工作期间面临许多次的电脑资讯安全问题。例如:在现今多工(multi-tasking)操作系统的控制下,使用者工作站101可以同时执行多个任务(task)且每一任务要求密码运算。使用者工作站101要求执行加密/解密应用程序(encryption/decryptionapplication)112(无论是操作系统的一部分或是由操作系统所引动(invoke))以储存区域档案于网路档案储存装置106,在档案储存的同时,使用者可以传送一加密信息给在工作站102的第二使用者,其中工作站102也要求执行加密/解密应用程序112的一范例,而加密信息可能是即时(例如:即时信息)或者是非即时(例如:电子邮件)。此外,使用者可以透过广域网路110从工作站103存取或提供其金融资料(例如:信用卡号、金融交易等)或者其他形式的机密资料。工作站103也可以代表是家庭办公或其他远端电脑103,其可以让工作站101的使用者离开办公室时用以存取区域网路105的任何共享资源101、102、106、107、108以及109。上述提及的每一活动均要求引动加密/解密应用程序112的相对范例,并且无线网路109目前普遍地提供于咖啡店、机场、学校以及其他公众场所,因而促使使用者笔记型电脑104不仅对其他使用者传送/接收的信息进行加密/解密,并且也对透过无线网路109到无线路由器108的所有通讯进行加密及解密。
熟悉该项技术者可因此察知在工作站101-104中连同每一要求密码运算的活动,须有一相对的要求以引动(invoke)加密/解密应用程序112的范例,因此电脑101-104在最近的将来有可能同时执行数以百计的密码运算。
本发明人注意到上述电脑系统101-104由引动加密/解密应用程序112的至少一范例以执行密码运算的方法的限制。例如:透过程序规划的软件执行一指定功能就比透过硬件执行相同功能还慢。且每次执行加密/解密应用程序112时,正在电脑101-104执行的任务就必须暂缓执行,并且密码运算的参数(例如:明文、密文、模式以及钥匙等)必须透过操作系统传送给加密/解密应用程序112为完成密码运算所引动的范例。并且因为密码演算须在一指定的资料区块引动许多回合的次运算,加密/解密应用程序112的执行引动许多电脑指令的执行而对整体系统的处理速度产生不利的影响。熟悉该项技术者可察知在微软Outlook传送少量加密电子邮件信息的时间会相当于只传送未加密电子邮件信息的五倍。
此外,目前的技术受限于操作系统介入的延迟。大部分的应用程序并无提供完整的钥匙产生或加密/解密元件;其利用操作系统的元件或外挂应用程序以完成上述的任务,此外操作系统因中断及其他正在执行应用程序的请求而转移其执行。
并且,本发明人注意到在现今电脑系统101-104的密码运算是相类似于微处理机尚未有浮点单元时的浮点数学运算。早期的浮点单元运算是由软件所执行,因此执行的非常慢;同浮点运算,由软件执行的密码运算也是极慢。当浮点技术更进一步发展,浮点辅助处理器提供浮点指令以供执行,这些浮点辅助处理器执行浮点运算比软件执行快了许多,但却增加了系统的成本。相同地,密码辅助处理器目前以附加在电路板或以外接装置与主处理器透过并列接口或其他介面总线(例如:USB)成为介面的形式存在,这些辅助处理器能使密码运算的完成比由纯软件所执行的快了许多。但密码共同处理器给系统配置增加了成本,需要额外的电源、而且降低了系统的可靠性。由于资料通路不像主微处理器那样在同一模组上,所以密码共同处理器的执行乃更易被监听。
因此本发明人确认将密码硬件加入现今微处理器的需要,藉此,要求密码运算的应用程序可由一单独、基元(atomic)的密码指令指示微处理器执行密码运算。本发明人也确认应以此功能限定操作系统介入及管理的要求,并且期望密码指令可以使用于应用程序的权限层级(privilegelevel)以及密码硬件可相称(comport with)于现今微处理器的一般架构,并且密码硬件及相关联的密码指令可支援相容先前的操作系统及应用程序。更期望的是提供执行密码运算的装置及方法,其可阻止未授权的监视;其可支援及可程序化有关多密码演算;其可支援核对及测试实体特定的密码演算;其可允许使用者提供钥匙也可自行产生钥匙;其支援多资料区块大小及钥匙长度(key size);其提供有效率的多资料区块管线处理;以及其提供可程序化区块加密/解密模式如电子密码本模式、密码区块链结模式、密码反馈模式以及输出反馈模式。
发明内容
本发明是用以解决上述已知技术中的问题及缺点。本发明提供一较佳的技术以执行密码运算于一微处理器中。
本发明的一较佳实施例,提供一种执行密码运算的装置,位于一微处理器中,其特征在于,该执行密码运算的装置包含:
一撷取逻辑电路,用以接收一密码指令并将其当成执行于该微处理器的一指令流的一部分,其中该密码指令指定复数个密码运算其中之一;
一转译逻辑电路,耦合于该撷取逻辑电路并用以转译该密码指令成微指令,其中该微指令是用以在指示该微处理器储存对应于一第一输入文字区块的一输出文字区块之前,指示该微处理器载入一第二输入文字区块并对该第二输入文字区块执行该指定的密码运算;
由此在该指定的密码运算对该第二输入文字区块执行期间,该输出文字区块可以被储存;以及
一执行逻辑电路,操作耦合以接收该微指令并当该指定的密码运算执行于该第二输入文字区块时,用以储存该输出文字区块,其中该执行逻辑电路包含一密码单元,该密码单元是根据进阶加密标准执行该指定的密码运算。
其中该指定的密码运算包含:
一加密运算,该加密运算包含复数个明文区块的加密以产生相对复数个密文区块;
其中该复数个明文区块包含:
该第一及第二输入文字区块;以及
其中该相对复数个密文区块包含:
该输出文字区块。
其中该指定的密码运算包含:
一解密运算,该解密运算包含复数个密文区块的解密以产生相对复数个明文区块;
其中该复数个密文区块包含:
该第一及第二输入文字区块;以及
其中该相对复数个明文区块包含:
该输出文字区块。
其中该密码单元包含:
一两阶回合引擎,用以管线执行该第一及第二输入文字区块。
其中该微指令包含:
一载入微指令,用以指示该微处理器载入该第二输入文字区块并且执行该指定的密码运算于该第二输入文字区块;以及
一储存微指令,用以指示该微处理器储存该输出文字区块。
其中该密码指令的格式为x 86指令格式。
其中参照该微处理器内复数个暂存器执行该密码指令。
其中该复数个暂存器包含:
一第一暂存器,其中该第一暂存器的内容是包含指向一第一存储器地址的一第一指标,该第一存储器地址是依据欲完成的该指定的密码运算指定存储器内一第一位置以存取复数个输入文字区块,该些输入文字区块是包含该第一及该第二输入文字区块。
其中该复数个暂存器包含:
一第二暂存器,其中该第二暂存器的内容是包含指向一第二存储器地址的一第二指标,该第二存储器地址指定存储器内一第二位置以储存相对复数个输出文字区块,相对该些输出文字区块是根据复数个输入文字区块完成该指定的密码运算而产生,其中该些输出文字区块是包含该输出文字区块。
其中该复数个暂存器包含:
一第三暂存器,其中该第三暂存器的内容是指示复数个输入文字区块内复数个文字区块。
其中该复数个暂存器包含:
一第四暂存器,其中该第四暂存器的内容是包含指向一第三存储器地址的一第三指标,该第三存储器地址指定存储器内一第三位置以存取密码钥匙资料以用于完成该指定的密码运算。
其中该复数个暂存器包含:
一第五暂存器,其中该第五暂存器的内容是包含指向一第四存储器地址的一第四指标,该第四存储器地址指定存储器内一第四位置,该第四位置包含一初始向量位置,该初始向量位置的内容包含一初始向量或一初始向量等效物以用于完成该指定的密码运算。
其中该复数个暂存器包含:
一第六暂存器,其中该第六暂存器的内容是包含指向一第五存储器地址的一第五指标,该第五存储器地址指定存储器内一第五位置以存取一控制字组以用于完成该指定的密码运算,其中该控制字组指定被指定的密码参数给该指定的密码运算。
本发明的一较佳实施例,提供一种执行密码运算的装置,其特征在于,该执行密码运算的装置包含:
一撷取逻辑电路,用以接收一密码指令;
一转译逻辑电路,耦合于该撷取逻辑电路,用以转译该密码指令成一序列的微指令,该序列的微指令包含:
一第一微指令,指示载入一第二输入文字区块并且执行复数个密码运算其中之一于该第二输入文字区块;以及
一第二微指令,指示储存一第一输出文字区块,该第一输出文字区块根据执行的所述复数个密码运算其中之一对应于一第一输入文字区块;
其中该转译逻辑在发布该第二微指令之前发布该第一微指令;
由此在所述复数个密码运算其中之一对该第二输入文字区块执行期间,该输出文字区块可以被储存;
该执行密码运算的装置还包含:
一密码单元,操作耦合以接收该微指令并当所述复数个密码运算其中之一执行于该第二输入文字区块时,用以储存该输出文字区块,其中该密码单元是根据进阶加密标准执行所述复数个密码运算其中之一。
其中所述复数个密码运算其中之一包含:
一加密运算,该加密运算包含复数个明文区块的加密以产生相对复数个密文区块;
其中该复数个明文区块包含:
该第一及第二输入文字区块;以及
其中该相对复数个密文区块包含:
该输出文字区块。
其中所述复数个密码运算其中之一包含:
一解密运算,该解密运算包含复数个密文区块的解密以产生相对复数个明文区块;
其中该复数个密文区块包含:
该第一及第二输入文字区块;以及
其中该相对复数个明文区块包含:
该输出文字区块。
其中该密码单元包含:
一两阶回合引擎,用以管线执行该第一及第二输入文字区块。
其中该密码指令的格式为x 86指令格式。
本发明的一较佳实施例,提供一种在一装置执行密码运算的方法,其特征在于,该在一装置执行密码运算的方法包含:
接收一密码指令并转译该密码指令成一第一微指令及一第二微指令,该密码指令指定复数个密码运算其中之一,该第一微指令指示该装置载入一第二输入文字区块并且执行该指定的密码运算于该第二输入文字区块,该第二微指令指示该装置储存一第一输出文字区块,该第一输出文字区块根据执行的该指定的密码运算对应于一第一输入文字区块;发布该第一微指令给一密码单元后发布该第二微指令给该密码单元;
由此在该指定的密码运算对该第二输入文字区块执行期间,该输出文字区块可以被储存;以及
执行该第一及第二微指令于该密码单元。
其中该转译包含:
由该第一微指令指定执行一加密运算于该第二文字区块以产生一相对第二密文区块。
其中该转译包含:
由该第一微指令指定执行一解密运算于该第二文字区块以产生一相对第二明文区块。
其中还包含:
其中该执行包含:
当执行该指定的密码运算于该第二输入文字区块时,储存该输出文字区块。
其中该密码指令根据进阶加密标准指定执行该指定的密码运算。
其中该执行包含透过一两阶回合引擎管线处理该第一及第二输入文字区块。
附图说明
为进一步说明本发明的具体技术内容,以下结合实施例及附图详细说明如后,其中:
图1是现今密码应用的方块图;
图2是执行密码运算技术的方块图;
图3是本发明实施例中执行密码运算的微处理器装置的方块图;
图4是本发明实施例中的基元(atomic)密码指令实施例的方块图;
图5是第四图4的基元密码指令区块加密模式栏位值的范例的表格;
图6是本发明在x86相容微处理器中的密码单元的方块图;
图7是图6的微处理器中指示密码次运算的范例微指令栏位的方块图;
图8是图7的载入微指令暂存栏位值格式的表格;
图9是图7的储存微指令暂存栏位值格式的表格;
图10是本发明指定密码运算参数的控制字组格式范例的方块图;
图11是本发明的一较佳实施密码单元的方块图;
图12是本发明执行有关进阶加密标准(AES)演算法密码运算的一区块加密逻辑电路实施例的方块图;
图13是本发明微指令流的一实施例对密码单元的单阶实施例的表格;
图14是本发明微指令流的另一实施例对密码单元的单阶实施例的表格;
图15是本发明微指令流的一实施例对密码单元的两阶实施例的表格;以及
图16是本发明微指令流的另一实施例对密码单元的两阶实施例的表格。
具体实施方式
以下所述为应用已知技术而制造或使用文中特定应用及需求知本发明所列举的例子。然而,实施例中所提及的各种修改是用以彰显与已知技术的不同处,此一般原则可应用于其他实施例中。因此,本发明并非限定于特定实施例。
监于上述所讨论的密码运算及现今电脑系统用以加/解密资料的相关技术,这些技术及其相关限制将在图2中继续探讨,而接下来本发明也将根据图3到图16加以讨论。本发明提供一种在现今电脑系统中执行密码运算的装置及方法,其透过主要机制展现优秀的性能特征并且更满足上述所提及的目标,像是限制操作系统的干预、先前(legacy)架构的相容性、演算法及模式的可程序性、高效率的多资料区块管线操作,防止骇客入侵以及可测试性等等。
请参照图2,方块图200描绘当今电脑系统中执行密码运算的技术。方块图200包含一微处理器201,其撷取指令及从系统存储器中一称为应用存储器(application memory)203存取应用程序相关的资料,而程序控制及应用存储器203中资料的存取通常是由属于系统存储器保护范围的操作系统软件(operating system software)202所管理。如上所述,当一执行应用程序(例如:电子邮件程序或档案储存程序)要求执行密码运算时,此执行应用程序必须由指示(direct)微处理器201执行相当数量的指令以完成密码运算。这些指令可能是执行应用程序本身的子程序,也可能是连结到此执行应用程序的外挂应用程序,或者是由操作系统202所提供的服务。姑且不论他们的关联性,熟悉该项技术者可察知这些指令将驻于某些指定或分派的存储器范围。为达讨论目的,这些存储器范围显示在应用存储器203并且包含一密码钥匙产生应用程序(key generation application)204,其中密码钥匙产生应用程序204产生或接收一密码钥匙并且扩展此钥匙成一使用于密码回合运算中的钥匙排程(key schedule)205。就多区块加密运算而言,区块加密应用程序(encryption application)206被引动(invoke)。加密应用程序206执行存取明文(plaintext)区块210、钥匙排程205以及密码参数(cryptographic parameters)209的指令,其中密码参数209是进一步指示明确的密码运算,如模式、钥匙排程位置等,且在要求特定模式时,加密应用程序206也可存取初始向量(initialization vector)208。加密应用206执行其内的指令以产生对应的密文(ciphertext)区块211。同理,区块解密应用程序(decryption application)207被引动以执行区块解密运算。解密应用程序207执行存取密文区块211、钥匙排程205以及密码参数209的指令,其中密码参数209是进一步指示明确的密码运算,并且在要求特定模式时,也可存取初始向量208。解密应用程序207执行其内的指令以产生对应的明文区块210。
值得注意的是必须执行相当数量的指令以产生密码钥匙及加密或解密文字区块。上述提及的FIPS说明书包含许多虚拟码致能相当数量指令的范例,因此,熟悉该项技术者可察知一个简单的加密运算将要求数以百计的指令,并且每一指令须经由微处理器201执行以完成所要求的密码运算。并且,完成密码运算的指令执行对正在执行的应用程序的主目的(例如:档案管理、即时信息、电子邮件、远端档案存取、信用卡交易)而言一般是属多余,结果让使用者误为目前执行的应用程序执行效率不佳。至于独立或外挂的加密及解密应用程序206及207,这些应用程序206及207的引动及管理也必须服从操作系统202的其他请求,例如支援中断、例外(exception)以及更恶化的问题的类似事件。并且电脑系统所要求每一同时的密码运算,密码钥匙产生应用程序204、解密应用程序207及初始向量208的个别实例必须被配置在应用存储器203,且预期由微处理器201所要求执行的同时密码运算的数目也将随时间而增加。
本发明人注意到目前电脑系统密码技术的问题与限制,并且确认在微处理器中提供执行密码运算的装置及方法的需要。由此,本发明提供一微处理器及相关的方法,透过其内的密码单元执行密码运算,此密码单元是由单一密码指令的程序执行密码运算。本发明现在将以图3到图12为参考加以讨论。
请参照图3,其为本发明一较佳实施例执行密码运算的微处理器的方块图300。方块图300描绘一微处理器301,其透过存储器总线(memory bus)319与系统存储器(system memory)321耦合连接,且微处理器301包含从指令暂存器接收指令的一转译逻辑电路(translation logic)303。转译逻辑电路303包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以转译指令成为指令相关序列的等效元件。这些在转译逻辑电路303中执行转译的元件可能与在微处理器301中执行其他功能的电路、微码共用,而根据本应用的范围,微码是对照至少一个微指令的术语。一微指令(也可参照成一本机指令)是一单元层级执行的一指令,例如微指令是由精简指令集电脑(reduced instruction set computer;RISC)微处理器直接执行。至于复杂指令集电脑(complex instruction set computer;CISC)微处理器,如x86相容的微处理器,其x86指令被转译为关联的微指令并且由复杂指令集电脑微处理器中的单元直接执行。转译逻辑电路303耦合微指令伫列(micro instruction queue)304,且此微指令伫列304具有复数个微指令通道(micro instruction entries)305、306。微指令由微指令伫列304提供给包含一暂存器组(register file)307的暂存阶段逻辑电路,而此暂存器组307包含复数个暂存器(register)308-313,其内容在执行一指定的密码运算前就已建立。暂存器308-313指到系统存储器321中含有执行指定密码运算资料的对应位置323-327。暂存阶段耦合到载入逻辑电路(load logic)314,此载入逻辑电路314是与取回资料以执行指定密码运算的资料快取(data cache)315成介面,而此资料快取315由资料总线319耦合到系统存储器321。执行逻辑电路(execution logic)328耦合到载入逻辑电路314并且执行由前面阶段传来的微指令所指定的运算。执行逻辑电路328包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以执行由指令指定的运算的等效元件。这些在执行逻辑电路328中执行运算的元件可能与在微处理器301中执行其他功能的电路、微码共用。执行逻辑电路包含密码单元(cryptography unit)316,此密码单元316接收从载入逻辑电路314被要求执行指定密码运算的资料。微指令指示密码单元316执行指定密码运算于复数个输入文字区块(input text)326以产生相对应复数个输出文字区块(output text)327。密码单元316包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以执行密码运算的等效元件。这些在密码单元316中执行运算的元件可能与在微处理器301中执行其他功能的电路、微码共用。在一实施例中,密码单元316并列操作与在执行逻辑电路328内的其他执行单元(未绘出),例如整数单元、浮点数单元等。在本应用范围一“单元”的实施是包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以执行指定功能或指定运算的等效元件。这些在特定单元中执行指定功能或指定运算的元件可能与在微处理器301中执行其他功能的电路、微码共用。例如:一实施例中,一整数单元包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以执行整数指令的等效元件;一浮点单元包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以执行浮点指令的等效元件;则在整数单元中执行整数指令的元件可能与在浮点单元中执行浮点指令的其他电路、微码等共用。在一与x86架构相容的实施例中,密码单元316与整数单元、浮点单元、多媒体延伸集(MathematicMatrix Extension;MMX)单元、串流延伸集(Streaming SIMD Extensions;SSE)单元并列操作。根据本应用范围,当一实施例可以正确执行设计给x86微处理器执行的大部分应用程序时,此实施例是与x86架构相容,一应用程序正确执行而得到其预期的结果。替代x86相容实施例预期密码单元并列操作与先前提及的x86执行单元的子集。密码单元316耦合到储存逻辑电路317并且提供相对应复数个输出文字区块327,而此储存逻辑电路317也耦合到指定输出文字资料327给系统存储器321储存的资料快取315。此资料快取315耦合到写回逻辑电路(write back logic)318,而当所指定的密码运算完成时,写回逻辑电路318更新在暂存器组307中的暂存器308-313。在一实施例中,微指令与时脉信号电路(未绘出)同步经过每一个上述所提及的逻辑电路阶段302、303、304、307、314、316-318以使运算可以同时执行而相似于在线执行运算。
在系统存储器321中,一要求指定密码运算的应用程序可以直接指示微处理器301透过单一密码指令322(参照用以说明的密码指令(XCRYPT instruction)322)执行此运算。在一复杂指令集电脑微处理器实施例中,密码指令322包含一指定密码运算的微指令。在一实施例中,密码指令322利用一存在指令集架构中的一空闲或未使用指令运算码。在一x86架构相容的实施例中,密码指令322是一4比特组指令包含一x86重复前置(REP prefix)(如0xF3)、两比特组未使用x86运算码(opcode)(如0x0FA7)、一比特组有关于一指定区块密码模式以应用于执行一指定密码运算。在一实施例中,根据本发明的密码指令322可以在系统权限供给应用程序的层级执行,因而可以程序规划于指令的程序流以提供给微处理器301不论是由应用程序直接或在操作系统320的控制下。因为仅有一密码指令322指示微处理器301执行指定的密码运算,而运算的完成对操作系统320应是显而易见。
在操作中,操作系统320引动一应用程序以执行于微处理器301。如部分指令流于应用程序的执行期间,一密码指令322从系统存储器321提供给撷取逻辑电路(fetch logic)302。然而,在密码指令322执行之前,在程序流的指令指示微处理器301初始化暂存器308-312的内容以使他们指到系统存储器321中的位置323-327,其包含一密码控制字组(cryptographic control word)323、一初始密码钥匙(initial cryptographic key)324或一钥匙排程(keyschedule)324、一初始向量(initialization vector)325(如果需要)、运算用的输入文字(input text)326、以及输出文字(outputtext)327。在执行密码指令322之前须先初始化暂存器308-312,因为密码指令322与一附加于暂存器308-312的含有区块计数的暂存器313,其中区块计数是在输入文字326区块加密或解密资料区块的数目。因此转译逻辑电路303从撷取逻辑电路302取回密码指令并且转译成一序列相对应的微指令以指示微处理器301执行指定的密码运算。一第一复数个微指令305-306于相对应微指令序列中,指示密码单元316从载入逻辑电路314载入资料,并且开始执行指定数目的密码回合以产生相对应区块的输出资料,提供由资料快取315储存于系统存储器321中的输出文字327给储存逻辑电路317。一第二复数个微指令(未绘出)于相对应微指令序列中,指示在微处理器301中其他执行单元(未绘出)执行其他未完成指定密码运算所需的运算,例如:管理包含暂时结果及计数的非架构暂存器(未绘出)、更新输出及输入文字指标暂存器311-312、更新输入文字区块326的加密/解密初始向量指标暂存器(initialization vector pointer register)310(如果需要)、处理未处理的中断等等。在一实施例中,暂存器308-313是架构性暂存器。架构性暂存器308-313是为实现特定微处理器的指令集架构(instruction set architecture,ISA)中所定义的一种暂存器。
在一实施例中,密码单元316分成复数个阶段因此允许相继输入文字区块326的管线处理。而另一替代实施例是单阶段密码单元316。一第三实施例是关注于一两阶段密码单元316,其可管线处理两个相继输入文字区块326。根据所有的实施例,密码单元316是以缓冲微指令及输入文字区块326,并且在储存对应前一输入文字区块326的输出文字区块327时,执行指定的密码运算于随后的输入文字区块326。为藉由密码单元将文字区块326-327的生产量最大化,因此微指令305-306是用以指示载入随后的输入文字区块,并在对应前一输入文字区块326的输出文字区块327被储存之前,执行指定的密码运算。如此的顺序考虑到文字区块326-327有效率的管线处理,并且也将在之后更加详细的探讨。
图3的方块图300教示本发明所需的元件,因此省略许多在现今微处理器301中的逻辑以求图示的简洁。然而,熟悉该项技术者可察知现今特定实现的微处理器301是包含许多阶段及逻辑电路,在此为图示的简洁而将其部分合并。例如:载入逻辑电路314在一快取线对准阶段之后可以嵌入随一快取介面阶段的一地址产生阶段。然而重要且应注意的是,在复数个输入文字区块326上的一完全密码运算,是根据本发明由一单一指令322的运算对操作系统320的考量是显而易见,并且单一指令322的执行是由与微处理器301中其他执行单元并联操作及协调的密码单元316所完成。本发明密码单元316在实施组态中的替代实施例是类似前几年微处理器中浮点单元的硬件。密码单元316的操作及相关密码指令322是完全相容先前操作系统及程序同时操作,并且也将在之后更加详细的探讨。
请参照图4,其为本发明的一基元(atomic)密码指令400实施例的方块图。密码指令400包含一选项前置栏位(optional prefix field)401、一重复前置栏位(repeat prefix field)402、一运算码栏位(opcode field)403、一区块密码模式(block cipher mode)栏位404。在一实施例中,栏位401-404的内容相称于x86指令集架构,而其替代的实施例可考虑相容于其他指令集架构。
操作上,选项前置栏位401在许多指令集架构中是用以致能(enable)或禁能(disable)部分主要微处理器的处理特征,像是指示16比特或32比特的运算、指示处理或存取特定的存储器区段等。重复前置栏位402是用以指示由密码指令400所指定的密码运算是在复数个输入资料区块(如明文或密文)完成。重复前置栏位402也隐示一相称微处理机利用其内复数个架构暂存器的内容当成指标指到系统存储器中含有完成指定密码运算所需参数的位置。如上所述,在一x86相容实施例中,重复前置栏位402的值是0xF3,并且根据x86架构协定,密码指令与x86重复字串指令,如REP.MOV,在形式上非常相似。例如:当本发明由一x86相容微处理器实施例执行时,重复前置栏位402是参照一储存在架构暂存器ECX中的区块计数变数、一储存在暂存器ESI中的来源地址指标(指到输入资料以供密码运算)以及一储存在暂存器EDI中的目的地址指标(指到存储器中的输出资料)。在x86相容的一实施例中,本发明更扩展传统重复字串的指令的概念成为更可参照一储存在暂存器EDX中的控制字组指标、一储存在暂存器EBX中的密码钥匙指标以及一储存在暂存器EAX中对一初始向量的指标(如果指定密码模式要求)。
运算码栏位403指定微处理器完成一密码运算,此密码运算是由控制字组指标所隐示参照储存在存储器中的一控制字组。本发明认为运算码值的较佳选择是存在指令集架构中一空闲或未使用的运算码值,由此在一相称微处理器中保留与先前操作系统及应用软件的相容。例如:如上所述,一x86相容实施例的运算码栏位403使用0x0FA7以指示执行指定的的密码运算。区块密码模式栏位404指示特定的区块密码模式以供特定的密码运算使用,并且将参照图5加以探讨。
图5是图4基元密码运算指令的区块密码模式栏位范例值的表格500。值0xC8指示使用电子密码本方式完成密码运算;值0xD0指示使用密码区块链结方式完成密码算;值0xE0指示使用密码反馈方式完成密码运算;以及值0xE8指示使用输出反馈方式完成密码运算。区块密码模式栏位404其他所有的值是保留,而这些模式是描述于上述所提及的FIPS的文件中。
请参照图6,其为本发明一较佳实施例在一x86相容微处理器600中较详细的密码单元617的实施例方块图。微处理器600包含撷取逻辑电路(fetch logic)601用以从存储器(未绘出)撷取指令以供执行。撷取逻辑电路601是耦合到转译逻辑电路(translation logic)602,而转译逻辑电路602包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以转译指令成为相关序列微指令的等效元件。这些在转译逻辑电路602中执行转译的元件可能与在微处理器600中执行其他功能的电路、微码共用。转译逻辑电路602包含一转译器(translator)603,而此转译器603是耦合到一微码唯读存储器(microcode ROM)604。中断逻辑电路(interruptlogic)626由总线634耦合到转译逻辑电路602。复数个软件及硬件中断信号627是由指示未处理中断给转译逻辑电路602的中断逻辑电路626处理。转译逻辑电路602耦合到微处理器600相继的阶段包含一暂存阶段(register stage)605、定址阶段(address stage)606、载入阶段(load stage)607、执行阶段(execution stage)608、储存阶段(store stage)618、以及写回阶段(write back stage)619。每一相继阶段包含逻辑电路以完成由撷取逻辑电路601所提供相关指令执行的特定功能,如先前在图3的微处理器中所讨论参照类似名称的元件。描绘在图6中x86相容微处理器600的实施例是以在执行阶段608中的执行逻辑电路(execution logic)632为特征,其包含平行执行单元610、612、614、616、617。一整数单元610从微指令伫列609接收执行整数微指令;一浮点单元612从微指令伫列611接收执行浮点数微指令;一多媒体延伸集单元614从微指令伫列613接收执行多媒体延伸集微指令;一串流延伸集单元616从微指令伫列615接收执行串流延伸集微指令。在本发明的一x86实施例,一密码单元617由一载入总线620、一暂停(stall)信号总线621以及一储存总线622耦合到串流延伸集单元616。密码单元617共用串流延伸集单元的微指令伫列615。一替代实施例可将密码单元617独立并联操作像是单元610、612以及614。整数单元610耦合到一x86旗标(EFLAGS)暂存器624,此旗标暂存器包含一X比特625,而此X比特625的状态是配置用以指示密码运算是否正在处理。在一实施例中,此X比特625是一x86旗标暂存器624的第30比特。此外,整数单元610存取一机器特殊暂存器(machinespecific register)628以评估一E比特629的状态,而此E比特629的状态指示密码单元617是否位于微处理器600。整数单元610也存取一D比特631于一特征控制暂存器(feature controlregister)630,以致能或禁能密码单元617。如图3的微处理器301实施例,图6的微处理器600以必要元件为特征教示本发明一x86相容实施例的内容,并且为求图示简洁而合并或省略微处理器的其他元件。熟悉该项技术者可察觉用以完全介面的其他元件,像是资料快取、总线介面单元、时脉产生以及分配逻辑等,均未绘出。
在操作中,指令是由撷取逻辑电路601从存储器(未绘出)撷取并且与一时脉信号(未绘出)同步提供给转译逻辑电路602。转译逻辑电路602转译每个指令成为一相对应序列的微指令,其与时脉信号同步持续地提供给微处理机600的后续阶段605-608、618、619。在一序列微指令中的每一个微指令指示一个次运算的执行,而次运算被要求完成由一相对指令所指定的一整体运算,例如地址阶段606产生一地址、暂存阶段605从指定暂存器(未绘出)恢复的两运算元在整数单元内相加、由储存逻辑电路618储存执行单元610、612、614、616、617其中之一所产生的结果于存储器等。根据转译中的指令,转译逻辑电路602利用转译器603直接产生一序列的微指令,或是从微码唯读存储器604撷取此序列,或是利用转译器603直接产生此序列的部份并且从微码唯读存储器604撷取此序列剩下的部分。微指令透过微处理机600的相继阶段605-608、618、619持续地与时脉同步进行。当微指令到达执行阶段608,执行逻辑电路632连同其运算元(在暂存阶段605从暂存器所恢复,或在地址阶段606由逻辑电路所产生,或由载入逻辑电路从资料快取所恢复),由放置微指令在一对应的微指令伫列609、611、613、615而将其依指定路线传送给一指定执行单元610、612、614、616、617。执行单元610、612、614、616、617执行微指令并提供结果给储存阶段618。在一实施例,微指令包含栏位指示其是否可以与其它运算并列执行。
回应先前所述的撷取一个密码指令,转译逻辑电路602产生相关微指令,其指示在微处理器600后继阶段605-608,618,619中的逻辑电路执行指定的密码运算。据此,一第一复数个相关微指令是直接依路径传送至密码单元617并且指示密码单元617由载入总线620载入资料,或载入一区块的输入资料并且开始执行指定数目的密码回合以产生一区块的输出资料,或由储存阶段618透过储存总线622将所产生的区块输出资料储存于存储器。如先前参照图3所述,此第一复数个相关微指令是用以增加密码单元617有利的特性以达到多资料区块的有效管线操作。更精确地,第一复数个相关微指令是用以确定在储存对应前一输入文字区块的一输出文字区块之前,一相继的输入文字区块已被载入。这使得当输出文字区块正在被储存时,一指定密码操作执行于此相继的输入文字区块。
一第二复数个相关微指令依其路径传送至其它实行单元610、612、614、616以执行其它次运算,其等次运算是完成指定密码运算的必需,例如E比特629的测试、致能D比特631、设定X比特625以指示密码操作进行中、在暂存阶段605更新暂存(例如,计数暂存器、输入文字指标暂存器、输出文字指标暂存器)、由中断逻辑电路626所指示的中断信号电路627的处理等。相关微指令是用以提供指定密码运算的最佳执行于多区块输入资料,其由与密码单元微指令序列中的整数单元微指令成为介面,因此整数运算可与密码单元运算并行完成。微指令是包含于相关微指令以允许或并从待处理中断信号电路627恢复。因为所有对密码参数的指标与资料是提供于x86架构暂存器,当执行中断时,其状态被保存,并且当从中断返回,这些状态被恢复。当从中断返回,微指令测试X比特625的状态以决定是否一密码运算在进行。如果是,当中断发生时,此运算重覆于处理中的特别输入资料区块。相关微指令是用以允许在处理中断信号电路627之前,更新在一序列输入文字区块上的一序列密码操作的指标暂存器及中间的结果。
请参照图7,其为图6的微处理器中指示密码次运算的范例微指令700栏位的方块图。微指令700包含一微运算码栏位(micro opcodefield)701,一资料暂存器栏位(data register field)702,以及一暂存器栏位(register field)703。微运算码栏位701指定执行一特定次运算并且指定逻辑电路于微处理器600中一或多阶段以执行次运算。微运算码栏位701的指定值指定根据本发明的一密码单元执行指示的微指令。在一实施例,有两个指定的值。一第一值载入(XLOAD)指定资料从一存储器位置恢复,而其地址是由资料暂存器栏位702内容所指称的一架构暂存器的内容所指定。这资料被载入到由暂存器栏位703内容所具体指定密码单元内的一暂存器。这恢复的资料(例如:密码钥匙资料、控制字组、输入文字资料、初始向量)是提供给密码单元。微运算码栏位701的第二值储存(XSTOR)指出由密码单元所产生的资料储存在一存储位置,而其地址是由资料暂存器栏位702内容所指称的一架构暂存器的内容所指定。在密码单元一多阶段实施例,暂存器栏位703的内容指示复数个输出资料区块的一储存于存储器。输出资料区块是由资料栏位(data field)704内的密码单元所提供以供储存逻辑电路存取。根据本发明密码单元所执行载入和储存微指令更具体的细节,将参照图8及图9加以讨论。
请参照图8,其为图7的载入微指令格式700暂存器栏位703的值的表格。如前所述,一序列微指令是产生回应一密码指令的转译。此序列微指令包含一第一复数个微指令,其是由密码单元指示执行;以及一第二复数个微指令,其是由微处理器中密码单元以外的一或多个并列功能单元所执行。第二复数个微指令指示次运算,例如更新计数器、暂时储存器、架构暂存器、测试并设定状态比特于机器指定暂存器等。第一复数个微指令提供钥匙资料、密码参数以及输入资料给密码单元并且指示密码单元产生钥匙排程(或载入从存储器恢复的钥匙排程)以载入并加密(或解密)输入文字资料,并且储存输出文字资料。一载入微指令提供给密码单元以载入控制字组资料、载入一密码钥匙或钥匙排程、载入初始向量资料、载入输入文字资料并指示密码单元开始一指定密码运算。一载入微指令在暂存器栏位703的值0b010是指示密码单元载入一控制字组到其内部控制字组暂存器。当这微指令进行管线处理,在暂存阶段的一架构控制字组指标暂存器存取存储器中储存控制字组的地址。地址逻辑电路转译此地址成为一实体地址以供存储器存取。载入逻辑电路从快取撷取控制字组,然后传给密码单元。同样地,暂存器栏位值0b010指示密码单元载入由资料栏位704所提供的输入文字资料,并且在载入之后开始指定的密码运算。类似控制字组,输入资料由储存在架构暂存器中所储存的一暂存器存取。值0b010指示载入由资料栏位704所提供的输入资料给内部暂存器输入-1。载入到输入-1暂存器的资料不是输入文字资料(当管线处理时)就是一初始向量。值0b110及0b111分别指示密码单元载入一密码钥匙或使用者产生钥匙排程中一钥匙的较低及较高比特。根据本应用,使用者是定义成执行一特定功能或特定运算,而使用者可具体化成一应用程序、一操作系统、一机器或者一个人。
在一实施例中,暂存器栏位值0b100及0b101是考虑一密码单元有两阶段,藉此,可以管线处理相继的输入文字区块资料。因此对管线处理相继的输入资料区块而言,一第一载入微指令执行提供一第一区块的输入文字资料给输入-1,接著执行一第二载入微指令提供一第二区块的输入文字资料给输入-0,并且指示密码单元开始执行指定的密码运算。当一使用者产生的钥匙排程被用以执行密码运算时,对应使用者产生的钥匙排程中钥匙数量的载入微指令是依设定路径传送给密码单元,此密码单元指示载入此钥匙排程中每一回合钥匙。
在载入微指令中暂存器栏位703其他所有的值是保留。
请参照图9,其为图7的储存微指令格式700暂存器栏位703的值的表格。一储存微指令是发布(issue)给密码单元,以指示其提供所产生的输出文字区块给储存逻辑电路,储存于存储器中由资料暂存器栏位702所提供的地址。据此,本发明的转译逻辑电路为一特定的输出文字区块所发布的一储存微指令是在为一其所对应输入文字区块所发布的一储存微指令之后。暂存器栏位703的值0b100是指示密码单元提供关联其内部的输出-0暂存器给储存逻辑储存。输出-0的内容与输入文字区块提供给输入-0是相关联。同理,参照暂存器栏位值0b101的内部输出-1暂存器是与输入文字资料提供给输入-1相关联。据此,跟随在钥匙及控制字组资料载入之后,复数个输入文字区块可以被管线输送,是透过密码单元依序发布密码微指令载入.输入-1、载入.输入-0(载入.输入-0也指示密码单元开始密码运算)、储存.输出-1、储存.输出-0、载入.输入-1、载入.输入-0(开始下两个输入文字区块运算)等等。
请参照图10,其为本发明指定密码运算参数的范例控制字组1000格式的方块图。控制字组1000是由使用者程序设计于存储器,并且在执行密码运算之前,控制字组1000的指标提供给相称微处理器中的一架构暂存器。据此,当部分序列的微指令对应到一密码指令时,一载入微指令被发布以指示微处理器去读取包含指标的架构暂存器、从存储器(快取)恢复控制字组1000以及载入控制字组1000到密码单元的内部控制字组暂存器。控制字组1000包含一保留(RSVD)栏位1001、一钥匙大小(KSIZE)栏位1002、一加密/解密(E/D)栏位1003、一中间结果(IRSLT)栏位1004、一钥匙产生(KGEN)栏位1005、一演算(ALG)栏位1006以及一回合计算(RCNT)栏位1007。
保留栏位1001所有的值是保留。钥匙大小栏位1002的内容是指示一用以完成加密或解密的密码钥匙的大小。在一实施例中,钥匙大小栏位1002不是指示一128比特钥匙、一192比特钥匙,就是指示一256比特钥匙。加密/解密栏位1003指出密码运算是加密运算或指出密码运算是解密运算。钥匙产生栏位1005指示在存储器中是使用者产生的钥匙排程或在存储器中是单一密码钥匙;如果为单一钥匙时,微指令发布给密码单元与密码钥匙以指示单元根据演算栏位1006的内容所具体指定的密码演算以扩展钥匙成为一钥匙排程。在一实施例,演算栏位1006的特定值具体指示资料加密标准演算法、三重资料加密标准演算法或者进阶加密标准演算法如先前所述的讨论。替代实施例可考虑其他密码演算法,例如Rijndael Cipher、Twofish Cipher等。回合计算栏位1007的内容指示一数量的密码回合,其根据具体指示的演算法完成于每一输入文字区块。虽然上述提及的标准指示每一输入文字区块固定前置数量的密码回合,但回合计算栏位1007允许一程序设计者从标准指示修改回合的数量。在一实施例中,程序设计者可指定每一区块从0-15回合。最后,中间结果栏位1004指示是否一输入文字区块的加密/解密,是根据演算栏位1006所指定的密码演算法,以回合计算栏位1007所指定回合的数量执行,或者加密/解密是根据演算栏位1006所指定的密码演算法,以回合计算栏位1007所指定回合的数量执行,而其最终回合的执行代表一中间结果而不是一最终结果。熟悉该项技术者可察知许多密码演算法除了最终回合的次运算的外是执行相同的次运算于每一回合。因此程序设计中间结果栏位1004提供中间结果而不是最后结果,藉此,允许程序设计者可核对演算法实现的中间的步骤。例如:获得增加的中间值以核对演算法实行,假设,执行一回合的加密于一文字区块,然后执行两回合于相同文字区块,然后三回合等。提供可程序化回合及中间值结果的功能可让使用者检查密码执行、除错以及达到改变钥匙结构及回合计数。
请参照图11,其为本发明的一密码单元1100的较佳实施例方块图。密码单元1100包含一微指令暂存器(micro opcode register)1103,此微指令暂存器1103透过一微指令总线1114接收密码微指令(例如载入与储存微指令)。密码单元1100也包含一控制字组暂存器(control word register)1104、一第一输入(输入-0)暂存器1105以及一第二输入(输入-1)暂存器1106、一第一钥匙(钥匙-0)暂存器1107以及一第二钥匙(钥匙-1)暂存器1108。资料透过一载入总线(load bus)1111提供给暂存器1104-1108,如微指令暂存器1103中一载入微指令内容所指定。而输入-0与输入-1暂存器1105-1106是配置用以在目前输入文字区块执行密码运算期间,致能随后输入文字区块的缓冲。密码单元1100也包含区块密码逻辑电路1101,此区块密码逻辑电路1101耦合到所有的暂存器1103-1108以及也耦合到密码钥匙随机存取存储器(RAM)1102。区块密码逻辑电路1101提供一暂停信号(stall signal)1113并且也提供区块结果给一第一输出(输出-0)暂存器1109以及一第二输出(输出-1)暂存器1110。输出暂存器1109-1110透过一储存总线1212将内容依指定路径传送给在一相称微处理器中的相继阶段。密码单元1100在接著的输入文字区块执行密码运算时,致能储存从输出暂存器1109-1110的资料。在一实施例中,微指令暂存器1103是32比特大小,并且其余的暂存器1104-1110皆为128比特暂存器。
在操作中,密码微指令与资料一起连续提供给微指令暂存器1103,其中资料是指定给控制字组暂存器1104、或输入暂存器1105-1106之一、或钥匙暂存器1107-1108之一。在参照图8及图9讨论的实施例中,控制字组由一载入微指令载入到控制字组暂存器1104。因此密码钥匙或钥匙排程经由连续的载入微指令载入。当一128比特密码钥匙载入时,一载入微指令因此提供给指定的钥匙-0暂存器1107。当一大于128比特密码钥匙载入时,一载入微指令因此提供给指定的钥匙-0暂存器1107,并且连同一载入微指令提供给指定的钥匙-1暂存器1108。当一使用者产生的钥匙排程载入时,连续载入微指令提供给指定钥匙-0暂存器1107。钥匙排程中的每一钥匙被载入且依序被放置在钥匙随机存取存储器1102以供其相对应的密码回合使用。随此,输入文字资料(如果没有要求一初始向量)载入到输入-1暂存器1106,如果要求一初始向量,则经由一载入微指令载入到输入-1暂存器1106。对输入-0暂存器1105的一载入微指令指示密码单元以载入输入文字资料给输入-0暂存器1105,并且开始在输入-0暂存器1105内的输入文字资料执行密码回合,其根据控制字组暂存器1104的内容所提供的参数使用在输入-1或在两输入暂存器1105-1106(当输入资料是管线处理)中的初始向量。根据收到指定输入-0暂存器1105的载入微指令,区块密码逻辑电路1101开始执行由控制字组内容所指定的密码运算。当单一密码钥匙要求扩展,区块密码逻辑电路1101产生钥匙排程中的每一钥匙并将以储存在钥匙随机存取存储器1102。姑且不论是否由区块密码逻辑电路1101产生一钥匙排程或者是从存储器中载入钥匙排程,第一回合的钥匙是快取储存于区块密码逻辑1101中以使得第一区块密码回合可以不用存取钥匙随机存取存储器1102而处理。一但初始化后,区块密码逻辑电路1101继续执行指定的密码运算于一或多个输入文字区块直到运算完成;其连续从钥匙随机存取存储器1102撷取回合钥匙如所应用的密码演算法所要求。密码单元1100执行一指定区块密码运算于指定的输入文字区块,而相继的输入文字区块透过相继对应的载入及储存微指令加密/解密。当一储存微指令执行时,如果指定输出资料(例如输出-0或输出-1)尚未完全产生,则区块密码逻辑电路1101显示暂停信号电路1113。一但输出资料已产生且放置于相对应的输出暂存器1109-1110时,暂存器1109-1110的内容接著传送到储存总线1112。虽然当指定输出资料尚未完全产生时会显示暂停信号1113,但由于输入暂存器1105-1106允许输入文字区块的缓冲,因此透过密码单元1100有效率的资料区块管线处理是藉由顺序化载入及储存微指令,使得在随后输入文字区块的密码运算总是在要求储存资料于输出暂存器1109-1110时执行。
请参照图12,其为本发明执行有关进阶加密标准演算法密码运算的一区块密码逻辑电路1200实施例的方块图。区块密码逻辑电路1200包含一回合引擎(round engine)1220,此回合引擎1220透过总线1211-1214及总线1216-1218耦合到一回合引擎控制器(round engine controller)1210。回合引擎控制器1210包含一储存逻辑电路(store logic)1230,并且存取一微指令暂存器(micro instruction register)1201、控制字组暂存器(controlword register)1202、第一钥匙(钥匙-0)暂存器1203以及第二钥匙(钥匙-1)暂存器1204以存取钥匙资料、微指令以及所指示密码运算的参数。输入暂存器1205-1206的内容提供给回合引擎1220并且回合引擎1220提供相对应输出文字给输出暂存器1207-1208。输出暂存器1207-1208透过总线1216-1217也耦合到回合引擎控制器1210,以致能回合引擎控制器存取每一相继密码回合的结果,而此结果是透过NEXTIN总线1218提供给回合引擎1220下一密码回合。钥匙随机存取存储器(未绘出)中的密码钥匙是透过钥匙随机存取存储器总线1215存取。加密/解密总线(ENC/DEC bus)1211的信号指示回合引擎利用次运算执行不是加密(例如S-Box)就是解密(例如反向S-Box)。回合计算总线(RNDCON bus)1212的内容指示回合引擎1220执行不是一第一进阶加密标准回合、一中间进阶加密标准回合就是一最后进阶加密标准回合。钥匙总线1213用以提供每一回合钥匙给回合引擎1220在其对应的回合执行时。
回合引擎1220包含第一钥匙互斥或(XOR)逻辑电路1221,此第一钥匙互斥或逻辑电路1221耦合到一第一暂存器(暂存-0)1222,此第一暂存器1222耦合到S-Box逻辑电路1223,此S-Box逻辑电路1223耦合到移列(Shift Row)逻辑电路1224,此移列逻辑电路1224耦合到一第二暂存器(暂存-1)1225,此第二暂存器1225耦合到混栏(Mix Colum)逻辑电路1226,此混栏逻辑电路1226耦合到一第三暂存器(暂存-2)1227。第一钥匙互斥或逻辑电路1221、S-Box逻辑电路1223、移列逻辑电路1224以及混栏逻辑电路1226是用以执行次运算于输入文字资料,像是具体指定于先前讨论的进阶加密标准FIPS标准。混栏逻辑电路1226在中间回合期间于要求使用由钥匙总线1213所提供的回合钥匙时,是附加配置以执行进阶加密标准互斥或功能于输入资料。第一钥匙互斥或逻辑电路1221、S-Box逻辑电路1223、移列逻辑电路1224以及混栏逻辑电路1226在由加密/解密总线(ENC/DEC bus)1211的状态指示时,也配置用以执行其相对的反向进阶加密标准次运算于解密期间。熟悉该项技术者可察知中间回合资料是根据控制字组暂存器1202内容所指定的具体区块加密模式而回馈给回合引擎1220。初始向量资料(如果要求)透过NEXTIN总线1218提供给回合引擎1220。
在图12所示的实施例中,回合引擎分为两阶段:一第一阶段介于第一暂存器(暂存-0)1222与第二暂存器(暂存-1)1225以及一第二阶段介于第二暂存器(暂存-1)1225与第三暂存器(暂存-2)1227。中间回合资料同步一时脉信号(未绘出)于阶段间管线处理。当一区块的输入资料完成密码运算,其关联的输出资料放置于相对应输出暂存器1207-1208。回应到一储存微指令,储存逻辑电路1230显示储存总线1214的信号,以通知回合引擎1220指定输出暂存器1207-1208的内容正提供给储存总线(未绘出)。如果随后的输入文字区块已缓冲于输入暂存器1205-1206,且当回合引擎1220正在处理随后的输入文字区块时,输出暂存器1207-1208则可以执行储存。根据本发明的更具体描述,如何安排载入及储存微指令而使多资料区块管线处理有效率,将更具体参照图13到图16加以讨论。
请参照图13,其为本发明微指令流的一实施例对密码单元的一单阶实施例的表格1300。如上述,一单阶密码单元一次可以处理一输入文字区块。然而,此单阶实施例和多阶实施例(一两阶实施例是展示并具体讨论参照图12)是配置于相同方法,也就是当回合引擎对目前输入资料执行指定的密码运算时,输入暂存器允许缓冲随后的输入区块资料,并且当随后的输入资料区块执行指定的密码运算时,输出暂存器与储存逻辑电路致能对应目前输入资料区块的输出区块储存。在表格1300的微指令流并没有利用先前所提及有利于单阶段密码单元的特性。
就本发明教示的目的而言,一载入微指令载入.输入-0的执行需要两个管线时脉周期。一但输入资料载入到输入暂存器0,回合引擎自动开始。就比较目的而言,回合引擎须20个时脉周期以产生一对应的输出区块,在此期间,一储存指令储存.输出-0是暂停。类似载入指令载入.输入-0,储存指令储存.输出-0指定执行的储存运算须两个时脉周期。据此,当一第一载入指令载入.输入-0在周期0提供给密码单元,然后在两个周期后,输入资料载入并且回合引擎开始执行,因此在周期22时产生一对应的输出资料区块。相对应的储存指令储存.输出-0是暂停直到相对应的输出资料区块备妥,因此在周期24完成储存。一随后的载入指令载入.输入-0是暂停在先前储存指令储存.输出-0之后直到储存完成,因此在周期26之前没有载入随后的输入文字区块。
如上所述,这种载入-储存-载入-储存微指令的顺序对密码单元先前所提及的特性并无助益。结果,就多资料区块执行密码运算而言,每个区块需要24周期。
请参照图14,其为本发明微指令流程的另一实施例对密码单元的单阶实施例的表格1400。对比参照图13所讨论的微指令流程,此替代微指令流程实施例利用了单阶密码单元的有利特性。就比较目的而言,透过回合引擎执行载入指令载入.输入-0、储存指令储存.输出-0以及密码运算的时脉周期的数目与参照图13所讨论的实施例是相同。
根据此替代微指令流实施例,当一第一载入指令载入.输入-0在周期0提供给密码单元,然后在两个周期后,输入资料载入并且回合引擎开始执行,因此在周期22时产生一对应的输出资料区块。然而,因为输入资料可以缓冲,因此转译逻辑电路在周期4完成发布一第二载入指令载入.输入-0以载入一随后的输入文字区块。在随后输入文字区块执行的密码运算是暂停直到一对应第一输入文字区块的输出文字区块产生(周期22),但是随后的输入文字区块在周期4已缓冲储存,因此其密码运算可以在周期23开始并在周期42完成。对应第一输入区块的输出文字的储存指令储存.输出-0是由转译逻辑在随后区块载入指令载入.输入-0之后所提供。此储存指令储存.输出-0是暂停直到相对应的输出资料区块在周期22备妥,但在周期24完成储存。一随后的载入指令载入.输入-0是暂停在先前储存指令储存.输出-0之后直到储存完成,因此在周期26之前没有载入随后的输入文字区块。由回合引擎而将两周期转入随后输入文字区块的处理。由最初执行两个载入,这种微指令顺序可以得利于密码单元先前所提及的特性,因此增加多区块的每个区块的产量成20周期。储存一输出区块所需的这两个时脉周期是有效合并于一随后输入文字区块密码运算的执行。此外,载入随后输入文字区块所需的的两个周期是合并于目前输入文字区块密码运算的执行期间。
请参照图15,其为本发明微指令流的一实施例对密码单元的两阶实施例的表格1500。两阶实施例是具体讨论对照于图12,并且其可以在回合引擎的周期处理两个相继的输入资料区块。如同表格1300的单阶实施例流程,表格1500的流程在密码单元中并未从其特征中获利以合并时脉周期。就比较目的而言,透过回合引擎执行载入指令载入.输入-0、储存指令储存.输出-0以及密码运算的时脉周期的数目与参照图13、图14所讨论的实施例是相同。如上所述,暂存器1执行载入指令载入.输入-1是仅仅载入输入资料至输入暂存器1;一载入.输入-0暂存器执行载入输入文字资料至输入暂存器0,并且透过回合引擎初始处理在输入暂存器0及1内的输入资料。因为回合引擎的发动(staged),因此完成在两输入暂存器中输入资料的加密/解密仅须20个时脉周期。
因此,转译逻辑发布一载入.输入-1微指令跟随一载入.输入-0指令。载入.输入-1在周期2完成而载入.输入-0在周期4完成,并且回合引擎在周期5开始处理两输入文字区块且在周期24完成。两随后的储存指令储存.输出-1、储存.输出-0是暂停直到周期24待其对应的输入资料文字区块处理完成,在周期24暂停解除,其允许在周期28完成储存。因为没有其他输入资料缓冲储存,因此两随后载入指令载入.输入-0、载入.输入-1是暂停直到储存完成。因此随后输入文字区块的载入发生于周期29-32之间,并且由回合引擎在周期33-52之间处理这些区块。
相同于参照图13单阶密码单元所讨论微指令的载入-储存-载入-储存顺序,表格15的载入-载入-储存-储存-载入-载入-储存-储存顺序,并没有从支援有效率资料区块处理的密码单元的特性中取得好处。结果,在两阶密码单元执行密码运算于多资料区块,每两个区块需要28周期。
请参照图16,其为本发明微指令流的另一实施例对密码单元的两阶实施例的表格1600。对比参照图15所讨论的微指令流,此表格1600的替代微指令流实施例利用了两阶密码单元的有利特性。就比较目的而言,透过回合引擎执行载入指令载入.输入-0、储存指令储存.输出-0以及密码运算的时脉周期的数目与参照图15所讨论的实施例是相同。
根据此替代微指令流实施例,当一第一载入指令载入.输入-1在周期0提供给密码单元以及跟著提供一第二载入指令载入.输入-0,然后在4个周期后,输入资料载入并且回合引擎开始执行,因此在周期24时产生一对应的输出资料区块。然而,因为输入资料可以缓冲储存,因此转译逻辑电路发布允许两输入文字区块的载入指令载入.输入-1、载入.输入-0的第二集(set)并在周期8完成载入。在随后输入文字区块执行的密码运算是暂停直到两分别对应两第一输入文字区块的两输出文字区块产生(周期24),但是随后的两输入文字区块在周期8已缓冲储存,因此其等密码运算可以在周期25开始并在周期44完成。对应两第一输入文字区块的两输出文字的储存指令储存.输出-1、储存.输出-0是由转译逻辑电路在随后区块载入指令载入.输入-1、载入.输入-0之后所提供。此储存指令储存.输出-1、储存.输出-0是暂停直到相对应的输出资料区块在周期24备妥,但在周期28完成储存。由回合引擎已经将4周期转入随后输入文字区块的处理。由最初执行四个载入,这种微指令顺序可以得利于密码单元先前所提及的特性,因此增加多区块的每个区块的产量成20周期。储存输出区块所需的这四个时脉周期是有效合并于两随后输入文字区块密码运算的执行。此外,载入随后两输入文字区块所需的的四个周期是合并于目前输入两输入文字区块密码运算的执行期间。
虽然本发明及其目的、特征与优点已详细描述,但其他实施例也应包含于本发明。例如:本发明曾根据相容x86架构的实施例讨论长度,然而这些讨论已提供此类的方式,因为x86架构容易理解且提供足够的方式以教示本发明。然而本发明包含相称于其他指令集架构的实施例,例如:PowerPC、MIPS及诸如此类等,此外还有全新的指令集架构。
本发明还包含电脑系统中微理器外其他元件的密码运算的执行,例如,根据本发明的密码指令可以容易地被应用在一密码单元的一实施例,此实施例并非如微处理器部分相同的整合电路,其执行方式如部分电脑系统。本发明的如此的实施例是为了并入围绕在微处理器的晶片组(如北桥、南侨),或当一处理器用于执行密码运算时,其密码指令是由主要微处理器移转(hand off)给此处理器。本发明可应用于内嵌控制器、工业控制器、信号处理器、阵列处理器以及任何相似处理资料的装置。本发明也包含一实施例仅含有执行密码运算所必需的元件。如此的内嵌装置不仅执行密码运算,也确实提供低成本、低电源,例如通信系统中的加密/解密处理器。为求简明,本发明将这些替代的处理元件参照成上述的处理器。
此外,虽然本发明提及128比特区块,但是许多不同区块的大小可以透过改变暂存器的大小而被应用,其中暂存器传送输入资料、输出资料、钥匙以及控制字组。
并且,虽然本应用显著以资料加密标准、三重资料加密标准以及进阶加密标准演算法为其特征,但本发明也包含较少人知的区块密码演算法,例如:MARS密码、Rijndael密码、Twofish密码、Blowfish密码、Serpent密码以及RC 6密码。足以理解的是,本发明提供在微处理器中用于区块密码的装置及支援的演算法,其基元区块密码运算可透过单一指令的执行而引动。
并且,虽然本发明在此以区块密码演算及其相关技术以执行区块密码功能为特征,但是除了区块密码的外其他形式的密码也包含于本发明应用范围的内。可足以观察的是,提供一单一指令,由此,使用者可指示一相称的微处理器执行一密码运算,例如:加密或解密,其中微处理器包含一密码单元,此密码单元依指示完成指令所指定的密码功能。
并且,在此所讨论的回合引擎提供一两阶装置可管线处理两区块的输入资料,但其他实施例也可考虑多于两阶段装置。阶段的分配对支援更多输入资料区块的管线处理,将发展协调相称微处理器中其他阶段的分配。
最后,虽然本发明具体讨论支援复数个演算法的一单独密码单元,但是本发明也提供理解在一相称微处理器中与其他执行单元并列操作耦合的多密码单元,而每一多密码单元是配置用以执行一具体指定的密码演算,例如:一第一单元是配置用以执行进阶加密标准演算法、一第二单元是配置用以执行资料加密标准演算法等。
以上所述仅为本发明的较佳实施例而已,并非用以限定本发明的申请专利范围;凡其他为脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在下述的申请专利范围。
Claims (24)
1.一种执行密码运算的装置,位于一微处理器中,其特征在于,该执行密码运算的装置包含:
一撷取逻辑电路,用以接收一密码指令并将其当成执行于该微处理器的一指令流的一部分,其中该密码指令指定复数个密码运算其中之一;
一转译逻辑电路,耦合于该撷取逻辑电路并用以转译密码指令成微指令,其中该微指令是用以在指示该微处理器储存对应于一第一输入文字区块的一输出文字区块之前,指示该微处理器载入一第二输入文字区块并对该第二输入文字区块执行该指定的密码运算;
由此在该指定的密码运算对该第二输入文字区块执行期间,该输出文字区块可以被储存;以及
一执行逻辑电路,操作耦合以接收该微指令并当该指定的密码运算执行于该第二输入文字区块时,用以储存该输出文字区块,
其中该执行逻辑电路包含一密码单元,该密码单元是根据进阶加密标准执行该指定的密码运算。
2.如权利要求1所述的执行密码运算的装置,其特征在于,其中该指定的密码运算包含:
一加密运算,该加密运算包含复数个明文区块的加密以产生相对复数个密文区块;
其中该复数个明文区块包含:
该第一及第二输入文字区块;以及
其中该相对复数个密文区块包含:
该输出文字区块。
3.如权利要求1所述的执行密码运算的装置,其特征在于,其中该指定的密码运算包含:
一解密运算,该解密运算包含复数个密文区块的解密以产生相对复数个明文区块;
其中该复数个密文区块包含:
该第一及第二输入文字区块;以及
其中该相对复数个明文区块包含:
该输出文字区块。
4.如权利要求1所述的执行密码运算的装置,其特征在于,其中该密码单元包含:
一两阶回合引擎,用以管线执行该第一及第二输入文字区块。
5.如权利要求1所述的执行密码运算的装置,其特征在于,其中该微指令包含:
一载入微指令,用以指示该微处理器载入该第二输入文字区块并且执行该指定的密码运算于该第二输入文字区块;以及
一储存微指令,用以指示该微处理器储存该输出文字区块。
6.如权利要求1所述的执行密码运算的装置,其特征在于,其中该密码指令的格式为x86指令格式。
7.如权利要求1所述的执行密码运算的装置,其特征在于,其中参照该微处理器内复数个暂存器执行该密码指令。
8.如权利要求7所述的执行密码运算的装置,其特征在于,其中该复数个暂存器包含:
一第一暂存器,其中该第一暂存器的内容是包含指向一第一存储器地址的一第一指标,该第一存储器地址是依据欲完成的该指定的密码运算指定存储器内一第一位置以存取复数个输入文字区块,该些输入文字区块是包含该第一及该第二输入文字区块。
9.如权利要求7所述的执行密码运算的装置,其特征在于,其中该复数个暂存器包含:
一第二暂存器,其中该第二暂存器的内容是包含指向一第二存储器地址的一第二指标,该第二存储器地址指定存储器内一第二位置以储存相对复数个输出文字区块,相对该些输出文字区块是根据复数个输入文字区块完成该指定的密码运算而产生,其中该些输出文字区块是包含该输出文字区块。
10.如权利要求7所述的执行密码运算的装置,其特征在于,其中该复数个暂存器包含:
一第三暂存器,其中该第三暂存器的内容是指示复数个输入文字区块内复数个文字区块。
11.如权利要求7所述的执行密码运算的装置,其特征在于,其中该复数个暂存器包含:
一第四暂存器,其中该第四暂存器的内容是包含指向一第三存储器地址的一第三指标,该第三存储器地址指定存储器内一第三位置以存取密码钥匙资料以用于完成该指定的密码运算。
12.如权利要求7所述的执行密码运算的装置,其特征在于,其中该复数个暂存器包含:
一第五暂存器,其中该第五暂存器的内容是包含指向一第四存储器地址的一第四指标,该第四存储器地址指定存储器内一第四位置,该第四位置包含一初始向量位置,该初始向量位置的内容包含一初始向量或一初始向量等效物以用于完成该指定的密码运算。
13.如权利要求7所述的执行密码运算的装置,其特征在于,其中该复数个暂存器包含:
一第六暂存器,其中该第六暂存器的内容是包含指向一第五存储器地址的一第五指标,该第五存储器地址指定存储器内一第五位置以存取一控制字组以用于完成该指定的密码运算,其中该控制字组指定被指定的密码参数给该指定的密码运算。
14.一种执行密码运算的装置,其特征在于,该执行密码运算的装置包含:
一撷取逻辑电路,用以接收一密码指令;
一转译逻辑电路,耦合于该撷取逻辑电路,用以转译该密码指令成一序列的微指令,该序列的微指令包含:
一第一微指令,指示载入一第二输入文字区块并且执行复数个密码运算其中之一于该第二输入文字区块;以及一第二微指令,指示储存一第一输出文字区块,并且该第一输出文字区根据执行的所述复数个密码运算其中之一对应于一第一输入文字区块;
其中该转译逻辑在发布该第二微指令之前发布该第一微指令;
由此在所述复数个密码运算其中之一对该第二输入文字区块执行期间,该输出文字区块可以被储存;
该执行密码运算的装置还包含:
一密码单元,操作耦合以接收该微指令并当所述复数个密码运算其中之一执行于该第二输入文字区块时,用以储存该输出文字区块,
其中该密码单元是根据进阶加密标准执行所述复数个密码运算其中之一。
15.如权利要求14所述的执行密码运算的装置,其特征在于,其中所述复数个密码运算其中之一包含:
一加密运算,该加密运算包含复数个明文区块的加密以产生相对复数个密文区块;
其中该复数个明文区块包含:
该第一及第二输入文字区块;以及
其中该相对复数个密文区块包含:
该输出文字区块。
16.如权利要求14所述的执行密码运算的装置,其特征在于,其中所述复数个密码运算其中之一包含:
一解密运算,该解密运算包含复数个密文区块的解密以产生相对复数个明文区块;
其中该复数个密文区块包含:
该第一及第二输入文字区块;以及
其中该相对复数个明文区块包含:
该输出文字区块。
17.如权利要求14所述的执行密码运算的装置,其特征在于,其中该密码单元包含:
一两阶回合引擎,用以管线执行该第一及第二输入文字区块。
18.如权利要求14所述的执行密码运算的装置,其特征在于,其中该密码指令的格式为x86指令格式。
19.一种在一装置执行密码运算的方法,其特征在于,该在一装置执行密码运算的方法包含:
接收一密码指令并转译该密码指令成一第一微指令及一第二微指令,该密码指令指定复数个密码运算其中之一,该第一微指令指示该装置载入一第二输入文字区块并且执行该指定的密码运算于该第二输入文字区块,该第二微指令指示该装置储存一第一输出文字区块,该第一输出文字区块根据执行的该指定的密码运算对应于一第一输入文字区块;
发布该第一微指令给一密码单元后发布该第二微指令给该密码单元;
由此在该指定的密码运算对该第二输入文字区块执行期间,该输出文字区块可以被储存;以及
执行该第一及第二微指令于该密码单元。
20.如权利要求19所述的在一装置执行密码运算的方法,其特征在于,其中该转译包含:
由该第一微指令指定执行一加密运算于该第二文字区块以产生一相对第二密文区块。
21.如权利要求19所述的在一装置执行密码运算的方法,其特征在于,其中该转译包含:
由该第一微指令指定执行一解密运算于该第二文字区块以产生一相对第二明文区块。
22.如权利要求19所述的在一装置执行密码运算的方法,其特征在于,其中该执行包含:
当执行该指定的密码运算于该第二输入文字区块时,储存该输出文字区块。
23.如权利要求19所述的在一装置执行密码运算的方法,其特征在于,其中该密码指令根据进阶加密标准指定执行该指定的密码运算。
24.如权利要求19所述的在一装置执行密码运算的方法,其特征在于,其中该执行包含透过一两阶回合引擎管线处理该第一及第二输入文字区块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/800,768 | 2004-03-15 | ||
US10/800,768 US7392400B2 (en) | 2003-04-18 | 2004-03-15 | Microprocessor apparatus and method for optimizing block cipher cryptographic functions |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1661958A CN1661958A (zh) | 2005-08-31 |
CN1661958B true CN1661958B (zh) | 2010-04-28 |
Family
ID=35011054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005100550106A Active CN1661958B (zh) | 2004-03-15 | 2005-03-14 | 区块密码功能的微处理器及方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN1661958B (zh) |
TW (1) | TW200531494A (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8923510B2 (en) | 2007-12-28 | 2014-12-30 | Intel Corporation | Method and apparatus for efficiently implementing the advanced encryption standard |
CN102169465B (zh) * | 2010-02-26 | 2013-08-21 | 银灿科技股份有限公司 | 储存媒体的数据加密装置 |
TWI559168B (zh) * | 2013-03-07 | 2016-11-21 | 國立成功大學 | 資料加密系統及方法 |
JP6321216B2 (ja) * | 2015-01-15 | 2018-05-09 | 日本電信電話株式会社 | 行列・キー生成装置、行列・キー生成システム、行列結合装置、行列・キー生成方法、プログラム |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5828873A (en) * | 1997-03-19 | 1998-10-27 | Advanced Micro Devices, Inc. | Assembly queue for a floating point unit |
CN1309351A (zh) * | 2000-02-14 | 2001-08-22 | 株式会社东芝 | 抗干预微处理器 |
EP1215842A2 (en) * | 2000-12-13 | 2002-06-19 | Broadcom Corporation | Methods and apparatus for implementing a cryptography engine |
CN1431584A (zh) * | 2002-08-22 | 2003-07-23 | 智慧第一公司 | 延伸微处理器数据模式的装置及方法 |
-
2005
- 2005-03-14 CN CN2005100550106A patent/CN1661958B/zh active Active
- 2005-03-15 TW TW094107795A patent/TW200531494A/zh unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5828873A (en) * | 1997-03-19 | 1998-10-27 | Advanced Micro Devices, Inc. | Assembly queue for a floating point unit |
CN1309351A (zh) * | 2000-02-14 | 2001-08-22 | 株式会社东芝 | 抗干预微处理器 |
EP1215842A2 (en) * | 2000-12-13 | 2002-06-19 | Broadcom Corporation | Methods and apparatus for implementing a cryptography engine |
CN1431584A (zh) * | 2002-08-22 | 2003-07-23 | 智慧第一公司 | 延伸微处理器数据模式的装置及方法 |
Non-Patent Citations (1)
Title |
---|
B. Ulmann.Designing a NICE processor.Microprocessors and Microsystems23.1999,23257-264. * |
Also Published As
Publication number | Publication date |
---|---|
TW200531494A (en) | 2005-09-16 |
CN1661958A (zh) | 2005-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1655496B (zh) | 产生密码钥匙排程的装置及方法 | |
US7321910B2 (en) | Microprocessor apparatus and method for performing block cipher cryptographic functions | |
EP1538510B1 (en) | Microprocessor apparatus and method for performing block cipher cryptographic functions | |
US7532722B2 (en) | Apparatus and method for performing transparent block cipher cryptographic functions | |
EP1519509B1 (en) | Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine | |
US7502943B2 (en) | Microprocessor apparatus and method for providing configurable cryptographic block cipher round results | |
CN1661958B (zh) | 区块密码功能的微处理器及方法 | |
CN100391145C (zh) | 重组透明化区块密码编译方法及装置 | |
US7529368B2 (en) | Apparatus and method for performing transparent output feedback mode cryptographic functions | |
US7536560B2 (en) | Microprocessor apparatus and method for providing configurable cryptographic key size | |
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 | |
CN1658548B (zh) | 配置密码引擎资料区块的微处理器及方法 | |
CN1332526C (zh) | 微处理器区块密码编译方法与装置 | |
CN100539495C (zh) | 可设定密码金钥大小的微处理器装置及方法 | |
CN100527664C (zh) | 具最佳化区块密码功能的微处理器及方法 | |
CN1652163B (zh) | 执行通透性输出反馈模式密码功能的方法及装置 | |
US7529367B2 (en) | Apparatus and method for performing transparent cipher feedback mode cryptographic functions | |
CN100463392C (zh) | 执行组态区块密码编译演算法的微处理器装置和方法 | |
CN1684408B (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 |