具最佳化区块密码功能的微处理器及方法

文档序号:7598281阅读:228来源:国知局
专利名称:具最佳化区块密码功能的微处理器及方法
技术领域
本发明是有关于微电子领域,特别是有关于一种可在具有微指令最佳化顺序的计算装置中执行密码运算的装置及方法,以增加此计算装置的产量(throughput)。
背景技术
早期的计算机系统是独立操作于其它计算机系统之外,据此,执行于此计算机系统中的应用程序所需的输入数据,若不是储存于此计算机系统就是由应用程序设计人员在执行时提供;而应用程序执行结果所产生的输出数据,其形式一般为打印输出的纸张,或者是写入磁带、磁盘或是此计算机系统其它类型的储存装置的档案。输出档案可以是之后在相同计算机系统中执行的应用程序的输入档案,或者,当输出数据先前被储存成档案于可移除或可输送的储存装置时,其也可以提供给不同但兼容的计算机系统的应用程序使用。在这些早期的系统,保护机密信息的需求是公认,并且在其它信息安全措施中,密码应用程序被发展及应用以防止机密信息被未授权揭露。这些密码程序一般是以搅合(scramble)及解读(unscramble)在储存装置中储存成档案的输出数据。
其后没几年,使用者开始发现通过由网络将计算机连接可以提供信息共享存取的好处,因此网络架构、操作系统、以及数据传输协议等均发展成不仅支持存取共享数据的能力,更是其显著的特征。例如使用者的计算机工作站可以在不同工作站或网络文件服务器存取档案,或者利用因特网获得新闻及其它信息,或者对数以百计的其它计算机传送及接收电子讯息(如电子邮件),或者与经销商的计算机系统连接并提供信用卡或银行信息以购买产品,或者在餐厅、机场或其它公共场合利用无线网络进行上述的任何活动。因此,保护机密数据及传输免于未授权揭露的需求已急速的成长,而在某些特定的状况下,使用者被迫保护其机密数据的情况也大大的增加。目前新闻头条通常集中在计算机信息安全问题,例如垃圾邮件(spam)、骇客、身分盗取、反向工程、恶作剧以及信用卡诈骗等是公众所关注之前几名。而当这些从各方面侵入私人领域的动机由无心的错误到有预谋的网络攻击,负责的执行单位以新法律、严厉的执行以及公共教育节目响应。然而,这些响应并未有效遏止危及计算机信息的浪潮。昔日是政府、金融机构、军方所专注关切之间谍,现在对一般人而言也已成为重要的问题;间谍读取他们的电子邮件或从他们的家用计算机存取他们检查账户的交易。在商业之前,熟悉该项技术者可察知从小到大的社团法人目前应用其资源卓越的部分以保护财产信息。
信息安全领域提供我们技术及装置以编码数据,并使其仅能由指定的个体加以解碼,此为所知的密码(cryptography)。当特别应用于保护储存或传输于计算机之间的信息时,密码最常被应用于转换机密数据(称为“明文”;plaintext或cleartext)成为难以理解的形式(称为“密文”;ciphertext)。转变明文成为密文的转换过程称为加密(encryption;enciphering;ciphering),而转变密文回明文的反向转换过程称为解密(decryption;deciphering;inverse ciphering)。
在密码学的领域中,几种程序及协议已发展到允许使用者不须具备许多知识及努力即可执行密码运算,并且针对这些使用者使其可以传输或者提供其编码形式的信息产品给不同的使用者。连同编码信息,传送者通常会提供接收者一“密码钥匙(cryptographic key)”以使接收者可以译码所编码的信息,因此使得接收者能够恢复或者获得存取未编码的原始信息。熟悉该项技术者可察知这些程序及协议一般是以暗语(password)保护、数学算法以及应用程序特别设计的形式加以实现以加密及解密机密信息。
几种类型的算法目前使用于加密及解密数据。算法根据上述一类型(例如一种RSA算法,公开钥匙密码算法)利用两密码钥匙,一公开钥匙与一私密钥匙,加密或解密资料。根据一些公开钥匙算法,接收者的公开钥匙是被传送者用来加密传送给接收者的数据,因为有一数学关系存在于使用者的公开钥匙与私密钥匙之间,因此接收者必须利用其私密钥匙解密此传输以恢复此数据。虽然这类型的密码算法广泛使用于现今,但其加密及解密的运算却是极慢甚至于少量的数据。一第二类型的算法,如所知的对称钥匙算法,提供同量等级的数据安全并且可以较快执行。这些算法称为对称钥匙算法因为他们对加密及解密信息使用单一密码钥匙。在公开区段,目前有三种盛行单一钥匙(single-key)密码算法数据编码标准(Data EncryptionStandard;DES)、三重DES以及进阶编码标准(AdvancedEncryption Standard;AES)。因为这些算法保护机密资料的强度,美国政府机关目前正使用这些算法,但熟悉该项技术者预期这些算法中一个或多个算法在不久的将来会变成商业及非官方交易的标准。根据所有这些对称钥匙算法,明文及密文被划分在指定大小中的区块以进行加密及解密。例如AES执行密码运算于128位区块的大小,并且使用128位、192位以及256位的密码钥匙长度。其它对称钥匙算法,例如Rijndael Cipher也允许192位以及256位的数据区块。据此,就一区块加密运算而言,一1024位的明文讯息加密当成8个128位的区块。
所有对称钥匙算法利用相同形式的次运算以加密一区块的明文,并且根据许多更常被应用的对称钥匙算法,一初始密码钥匙被扩展成复数个钥匙(例如一“钥匙排程”),每一钥匙是用以当成次运算的一对应密码“回合”且执行于明文区块。例如钥匙排程的第一钥匙是用以执行次运算的第一密码回合于明文区块,第一回合的结果是用以当成第二回合的输入,其中第二回合利用钥匙排程的第二钥匙以产生第二结果,并且一具体指定数量后来的回合执行产生一最终回合结果,即密文本身。根据AES算法,在每一回合的次运算是参照于文献中的SubBytes(或S-box)、ShiftRows、MixColums以及AddRoundKey。一区块密文的解密是类似的处理并伴随例外的执行在每一回合,且回合的最终结果是一区块的明文,上述的例外是指密文输入反加密及反次运算执行(例如InverseMixColumns、Inverse ShiftRows)。
DES及三重DES利用不同特定的次运算,但是这些次运算是类似AES的次运算,因为其利用相似的方式以转换一区块的明文成为一区块的密文。
执行密码运算于多连续的文字区块,所有对称钥匙算法利用相同类别的模式,这些模式包含电子密码本(electronic codebook;ECB)模式、密码区块链接(cipher block chaining;CBC)模式、密码反馈模式(cipher feedback;CFB)以及输出反馈模式(output feedback;OFB)。这些模式中有些利用一附加初始化向量于执行次运算期间,有些使用执行于第一区块明文的第一集(set)密码回合的密文输出当成附加的输入给执行于第二区块明文的第二集密码回合。除此,本应用的领域对现今对称钥匙密码算法所应用的每一密码演算及次运算提供更深层的讨论。就具体指定执行标准而言,读者可由美国联邦信息处理标准公告46-3(Federal Information Processing Standards Publication;FIPS-46-3),1999年10月25日出版,得到DES及三重DES的详细探讨;以及美国联邦信息处理标准公告197(FIPS-197),2001年11月26日出版,得到AES的详细探讨。上述提及的两种标准是由美国国家标准暨技术局(National Institute ofStandards and Technology;NIST)所发布及主张,在此列为参考以供本发明所有意图及目的的说明。除上述所提及的标准,教导(tutorial)、白皮书、套件(toolkit)以及资源文章均可透过因特网http//csrc.nist.gov/在NIST的计算机资源安全中心(Computer Security Resource Center;CSRC)获得。
熟悉该项技术者可察知有许多的应用程序能够执行在可以执行密码运算(例如加密及解密)的计算机系统。实际上,某些操作系统(例如微软Window XP、Linux)提供直接加密/解密的服务于密码基元(primitive)、密码应用程序接口以及诸如此类的形式。然而,本发明人已观察到现今计算机密码技术在某些方面的缺陷,因此通过由图1强调及讨论这些缺陷。
图1是方块图100图解现今计算机密码应用程序。方块图100描绘第一计算机工作站101连接局域网络105,且局域网络105也连接第二计算机工作站102、网络档案储存装置106、第一路由器107或其它接口形式到广域网络110(例如因特网)以及像是符合IEEE 802.11的无线网络路由器108,笔记型计算机104则是透过无线网络109与无线路由器108成为接口。在广域网络110方面,第二路由器111提供接口给第三计算机工作站103。
如上概述,现今的使用者在工作期间面临许多次的计算机信息安全问题。例如在现今多任务(multi-tasking)操作系统的控制下,使用者工作站101可以同时执行多个任务(task)且每一任务要求密码运算。使用者工作站101要求执行加密/解密应用程序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)成为接口的形式存在,这些辅助处理器能使密码运算的完成比由纯软件所执行的快了许多。但是密码辅助处理器增加系统配备的成本、要求额外的电源以及降低系统的整体可靠度。密码辅助处理器的实现对刻意的窥探而言有其弱点,因为数据信道与主微处理器并不在相同的晶粒(die)上。
因此本发明人确认将密码硬件加入现今微处理器的需要,通过此,要求密码运算的应用程序可通过由一单独、基元(atomic)的密码指令指示微处理器执行密码运算。本发明人也确认应以此功能限定操作系统介入及管理的要求,并且期望密码指令可以使用于应用程序的权限层级(privilege level)以及密码硬件可相称(comport with)于现今微处理器的一般架构,并且密码硬件及相关联的密码指令可支持兼容先前的操作系统及应用程序。更期望的是提供执行密码运算的装置及方法,其可阻止未授权的监视;其可支持及可程序化有关多密码演算;其可支持核对及测试实体特定的密码演算;其可允许使用者提供钥匙也可自行产生钥匙;其支持多数据区块大小及钥匙长度(key size);其提供有效率的多资料区块管线处理;以及其提供可程序化区块加密/解密模式如ECB、CBC、CFB以及OFB。

发明内容
本发明目的是用以解决上述现有技术中的问题及缺点。本发明提供一较佳的技术以执行密码运算于一微处理机中。在一实施例中,提供一种执行密码运算的装置,而此装置是包含密码指令及转译逻辑。上述的密码指令是由一计算装置接收并将其当成在此计算装置上执行指令流的一部分,并且此密码指令指定一种密码运算。上述的转译逻辑是操作性地耦合密码指令且将密码指令转译成微指令,此微指令是用以在指示计算装置储存对应第一输入文字区块的输出文字区块之前,指示计算装置加载第二输入文字区块并对此第二输入文字区块执行密码运算。因此,在对第二输入文字区块执行密码运算期间,上述的输出文字区块可以被储存。
本发明提供一种执行密码运算的装置,此装置包含配置用以转译一密码指令成一序列(sequence)微指令(microinstructions)的转译逻辑(translation logic)。此序列的微指令包含一第一微指令及一第二微指令。上述的第一微指令指示(direct)加载一第二输入文字区块并且执行一密码运算于此第二输入文字区块。上述的第二微指令指示储存一第一输出文字区块,此第一输出文字区块根据执行的密码运算对应于一第一输入文字区块。上述的转译逻辑发布(issue)第一微指令后发布第二微指令。
本发明提供一种在一装置执行密码运算的方法,此方法包含转译一密码指令成一第一微指令及一第二微指令,其中此密码指令指定(prescribes)一种密码运算的执行。上述的第一微指令指示(direct)此装置加载一第二输入文字区块并且执行此密码运算于此第二输入文字区块,上述的第二微指令指示此装置储存一第一输出文字区块,此第一输出文字区块根据执行的此密码运算对应于一第一输入文字区块;以及发布(issue)上述的第一微指令给一密码单元后,发布上述的第二微指令给此密码单元;通过此在此密码运算对此第二输入文字区块执行期间,此输出文字区块可以被储存。


图1是现今密码应用的方块图;图2是执行密码运算技术的方块图;图3是本发明执行密码运算的微处理器装置的方块图;图4是本发明的基元(atomic)密码指令实施例的方块图;图5是图4的基元密码指令区块加密模式字段值的范例的表格;图6是本发明在X86兼容微处理器中的密码单元的方块图;图7是图6的微处理器中指示密码次运算的范例微指令字段的方块图;图8是图7的XLOAD微指令暂存字段值格式的表格;图9是图7的XSTOR微指令暂存字段值格式的表格;图10是本发明指定密码运算参数的控制字组格式范例的方块图;图11是本发明的一较佳实施密码单元的方块图;图12是本发明执行有关进阶加密标准(AES)算法密码运算的一区块加密逻辑实施例的方块图;图13是本发明微指令流的一实施例对密码单元的单阶实施例的表格;图14是本发明微指令流的另一实施例对密码单元的单阶
具体实施例方式
本发明的一些实施例会详细描述如下。然而,除了详细描述外,本发明还可以广泛地在其它的实施例施行,且本发明的范围不受限定,其以之后的专利范围为准。并且,为提供更清楚的描述及更容易理解本发明,图示内各部分并没有依照其相对尺寸绘图,某些尺寸与其它相关尺度的比例已经被夸张;不相关的细节部分也未完全绘出,以求图示的简洁。
鉴于上述所讨论的密码运算及现今计算机系统用以加/解密数据的相关技术,这些技术及其相关限制将在图2中继续探讨,而接下来本发明也将根据图3到图16加以讨论。本发明提供一种在现今计算机系统中执行密码运算的装置及方法,其透过主要机制展现优秀的性能特征并且更满足上述所提及的目标,像是限制操作系统的干预、先前(legacy)架构的兼容性、算法及模式的可程序性、高效率的多数据区块管线操作,防止骇客入侵以及可测试性等等。
请参照图2,方块图200描绘当今计算机系统中执行密码运算的技术。方块图200包含一微处理器201,其撷取指令及从系统内存中一称为应用程序内存203存取应用程序相关的数据,而程控及应用程序内存203中数据的存取通常是由属于系统内存保护范围的操作系统软件202所管理。如上所述,当一执行应用程序(例如电子邮件程序或档案储存程序)要求执行密码运算时,此执行应用程序必须通过由指示(direct)微处理器201执行相当数量的指令以完成密码运算。这些指令可能是执行应用程序本身的子程序,也可能是连结到此执行应用程序的外挂应用程序,或者是由操作系统202所提供的服务。姑且不论他们的关联性,熟悉该项技术者可察知这些指令将驻于某些指定或分派的内存范围。为达讨论目的,这些内存范围显示在应用内存203并且包含一密码钥匙产生应用204,其中密码钥匙产生应用204产生或接收一密码钥匙并且扩展此钥匙成一钥匙排程使用于密码回合运算中。就多区块加密运算而言,区块加密应用206被引动(invoke)。区块加密应用206执行存取明文(plaintext)区块210、钥匙排程205以及密码参数209的指令,其中密码参数209是进一步指示明确的密码运算,如模式、钥匙排程位置等,且在要求特定模式时,加密应用206也可存取初始向量208。加密应用206执行其内的指令以产生对应的密文(ciphertext)区块211。同理,区块解密应用207被引动以执行区块解密运算。区块解密应用207执行存取密文区块211、钥匙排程205以及密码参数209的指令,其中密码参数209是进一步指示明确的密码运算,并且在要求特定模式时,也可存取初始向量208。解密应用207执行其内的指令以产生对应的明文区块210。
值得注意的是必须执行相当数量的指令以产生密码钥匙及加密或解密文字区块。上述提及的FIPS说明书包含许多伪码致能相当数量指令的范例,因此,熟悉该项技术者可察知一个简单的加密运算将要求数以百计的指令,并且每一指令须经由微处理器201执行以完成所要求的密码运算。并且,完成密码运算的指令执行对正在执行的应用程序的主目的(例如档案管理、实时讯息、电子邮件、远程档案存取、信用卡交易)而言一般是属多余,结果让使用者误为目前执行的应用程序执行效率不佳。至于独立或外挂的加密及解密应用206及207,这些应用206及207的引动及管理也必须服从操作系统202的其它请求,例如支持中断、例外(exception)以及更恶化问题的类似事件。并且计算机系统所要求每一同时的密码运算,应用程序204、207及208的个别实例必须被配置在内存203,且预期由微处理器201所要求执行的同时密码运算的数目也将随时间而增加。
本发明人注意到目前计算机系统密码技术的问题与限制,并且确认在微处理器中提供执行密码运算的装置及方法的需要。通过此,本发明提供一微处理器及相关的方法透过其内的密码单元执行密码运算,此密码单元是通过由单一密码指令的程序行程(program)执行密码运算。本发明现在将以图3到图12为参考加以讨论。
请参照图3,其为本发明执行密码运算的微处理器的方块图300。方块图300描绘一微处理器301,其透过内存总线319与系统内存321耦合连接,且处理器301包含从指令缓存器接收指令的一转译逻辑303。转译逻辑303包含逻辑、电路、装置或微码(例如微指令或本机指令),或逻辑、电路、装置或微码的组合,或用以转译指令成为指令相关序列的等效组件。这些在转译逻辑303中执行转译的组件可能与在微处理器301中执行其它功能的电路、微码共享,而根据本应用的范围,微码是对照一个或多个微指令的术语。一微指令(也可参照成一本机指令)是一单元层级执行的一指令,例如微指令是由精简指令集计算机(reduced instruction set computer;RISC)微处理器直接执行。至于复杂指令集计算机(complex instruction setcomputer;CISC)微处理器,如x86兼容的微处理器,其x86指令被转译为关联的微指令并且由复杂指令集计算机微处理器中的单元直接执行。转译逻辑303耦合微指令队列304,且此微指令队列304具有复数个通道305、306。微指令由微指令队列304提供给包含一临时文件307的暂存阶段逻辑,而此临时文件307包含复数个暂存308-313(register),其内容在执行一指定的密码运算前就已建立。暂存308-313指到内存321中含有执行指定密码运算数据的对应位置323-327。暂存阶段耦合到加载逻辑314,此加载逻辑314是与取回数据以执行址定密码运算的数据快取315成接口,而此数据快取315通过由数据总线319耦合到内存321。执行逻辑328偶合到加载逻辑314并且执行由前面阶段传来的微指令所指定的运算。执行逻辑328包含逻辑、电路、装置或微码(例如微指令或本机指令),或逻辑、电路、装置或微码的组合,或用以执行由指令指定的运算的等效组件。这些在执行逻辑328中执行运算的组件可能与在微处理器301中执行其它功能的电路、微码共享。执行逻辑包含密码单元316,此密码单元316接收从加载逻辑314被要求执行指定密码运算的数据。微指令指示密码单元316执行指定密码运算于复数个输入文字区块326以产生相对应复数个输出文字区块327。密码单元316包含逻辑、电路、装置或微码(例如微指令或本机指令),或逻辑、电路、装置或微码的组合,或用以执行密码运算的等效组件。这些在密码单元316中执行运算的组件可能与在微处理器301中执行其它功能的电路、微码共享。在一实施例中,密码单元316并列操作与在执行逻辑328内的其它执行单元(未绘出),例如整数单元、浮点数单元等。在本应用范围一“单元”的实施是包含逻辑、电路、装置或微码(例如微指令或本机指令),或逻辑、电路、装置或微码的组合,或用以执行指定功能或指定运算的等效组件。这些在特定单元中执行指定功能或指定运算的组件可能与在微处理器301中执行其它功能的电路、微码共享。例如一实施例中,一整数单元包含逻辑、电路、装置或微码(例如微指令或本机指令),或逻辑、电路、装置或微码的组合,或用以执行整数指令的等效组件;一浮点数单元包含逻辑、电路、装置或微码(例如微指令或本机指令),或逻辑、电路、装置或微码的组合,或用以执行浮点数指令的等效组件;则在整数单元中执行整数指令的组件可能与在浮点数单元中执行浮点数指令的其它电路、微码等共享。在一与x86架构兼容的实施例中,密码单元316并列操作与x86整数单元、x86浮点数单元、x86数学数组处理指令(Mathematic Matrix Extension;MMX)单元、x86单指令多数据流扩展(Streaming SIMD Extensions;SSE)单元。根据本应用范围,当一实施例可以正确执行设计给x86微处理器执行的大部分应用程序时,此实施例是与x86架构兼容,一应用程序正确执行而得到其预期的结果。替代x86兼容实施例预期密码单元并列操作与先前提及的x86执行单元的子集。密码单元316耦合到储存逻辑317并且提供相对应复数个输出文字区块327,而此储存逻辑317也耦合到指定输出文字数据327给系统内存321储存的数据快取315。此数据快取315偶合到写回逻辑318,而当所指定的密码运算完成时,写回逻辑318更新在临时文件307中的暂存308-313。在一实施例中,微指令与时脉信号(未绘出)同步经过每一个上述所提及的逻辑阶段302、303、304、307、314、316-318以使运算可以同时执行而相似于在线执行运算。
在系统内存321中,一要求指定密码运算的应用程序可以直接指示微处理器301透过单一密码指令322(参照用以说明的XCRYPT指令322)执行此运算。在一CISC实施例中,XCRYPT指令322包含一指定密码运算的微指令。在一实施例中,XCRYPT指令322利用一存在指令集架构中的一空闲或未使用指令运算码。在一x86架构兼容的实施例中,XCRYPT指令322是一4字节指令包含一x86前置REP(如0xF3)、两字节未使用x86运算码(如0x0FA7)、一字节有关于一指定区块密码模式以应用于执行一指定密码运算。在一实施例中,根据本发明的XCRYPT指令322可以在系统权限供给应用程序的层级执行,因而可以程序规划于指令的程序流以提供给微处理器301不论是由应用程序直接或在操作系统320的控制下。因为仅有一指令322指示微处理器301执行指定的密码运算,而运算的完成对操作系统320应是显而易见。
在操作中,操作系统320引动一应用程序以执行于微处理器301。如部分指令流于应用程序的执行期间,一XCRYPT指令322从内存321提供给撷取逻辑302。然而,在XCRYPT指令322执行之前,在程序流的指令指示微处理器301初始化暂存308-312的内容以使他们指到内存321中的位置323-327,其包含一密码控制字组323、一初始化密码钥匙324或一钥匙排程324、一初始化向量325(如果需要)、运算用的输入文字326、以及输出文字327。在执行XCRYPT指令322之前须先初始化暂存308-312,因为XCRYPT指令322与一附加含有区块计数的暂存313是参照暂存308-312,其中区块计数是在输入文字范围326加密或解密的数据区块的数目。因此转译逻辑303从撷取逻辑302取回XCRYPT指令并且转译成一序列相对应的微指令以指示微处理器301执行指定的密码运算。一第一复数个微指令305-306于相对应微指令序列中,指示密码单元316从加载逻辑314加载数据,并且开始执行指定数目的密码回合以产生相对应区块的输出数据提供给储存逻辑317通过由数据快取315储存于内存321中的输出文字范围327。一第二复数个微指令(未绘出)于相对应微指令序列中,指示在微处理器301中其它执行单元(未绘出)执行其它为完成指定密码运算所需的运算,例如管理包含暂时结果及计数的非架构暂存(未绘出)、更新输出及输入指针缓存器311-312、更新输入文字区块326的加密/解密初始指针缓存器310(如果需要)、处理未处理的中断等等。在一实施例中,缓存器308-313是架构性的缓存器。架构性缓存器308-313是为实现特定微处理器的指令集架构中所定义的一种缓存器。
在一实施例中,密码单元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的操作及相关XCRPYT指令322是完全兼容先前操作系统及程序同时操作,并且也将在之后更加详细的探讨。
请参照图4,其为本发明的一基元(atomic)密码指令400实施例的方块图。密码指令400包含一选项(optional)前置字段401、一重复前置字段402、一运算码字段403、一区块密码模式字段404。在一实施例中,字段401-404的内容相称于x86指令集架构,而其替代的实施例可考虑兼容于其它指令集架构。
操作上,前置401在许多指令集架构中是用以致能(enable)或禁能(disable)部分主微处理器的处理特征,像是指示16位或32位的运算、指示处理或存取特定的内存区段等。重复前置402是用以指示由密码指令400所指定的密码运算是在复数个输入数据区块(如明文或密文)完成。重复前置402也隐示一相称微处理机利用其内复数个架构缓存器的内容当成指针指到系统内存中含有完成指定密码运算所需参数的位置。如上所述,在一x86相容实施例中,重复前置402的值是0xF3,并且根据x86架构协议,密码指令与x86重复字符串指令,如REP.MOV,在形式上非常相似。例如当本发明由一x86兼容微处理器实施例执行时,重复前置是参照一储存在架构缓存器ECX中的区块计数变量、一储存在缓存器ESI中的来源地址指针(指到输入数据以供密码运算)以及一储存在缓存器EDI中的目的地址指针(指到内存中的输出数据)。在x86相容的一实施例中,本发明更扩展传统重复字符串的指令的概念成为更可参照一储存在缓存器EDX中的控制字组指针、一储存在缓存器EBX中的密码钥匙指针以及一储存在缓存器EAX中对一初始化向量的指针(如果指定密码模式要求)。
运算码字段403指定微处理器完成一密码运算,此密码运算是由控制字组指标所隐示参照储存在内存中的一控制字组。本发明认为运算码值的较佳选择是存在指令集架构中一空闲或未使用的运算码值,通过此在一相称微处理器中保留与先前操作系统及应用软件的兼容。例如如上所述,一x86兼容实施例的运算码字段403使用0x0FA7以指示执行指定的的密码运算。区块密码模式字段404指示特定的区块密码模式以供特定的密码运算使用,并且将参照图5加以探讨。
图5是图4基元密码运算指令的区块密码模式字段范例值的表格500。值0xC8指示使用电子密码本(ECB)方式完成密码运算;值0xD0指示使用密码区块链接(CBC)方式完成密码算;值0xE0指示使用密码反馈方式(CFB)完成密码运算;以及值0xE8指示使用输出反馈方式(OFB)完成密码运算。区块密码模式字段404其它所有的值是保留,而这些模式是描述于上述所提及的FIPS的文件中。
请参照图6,其为本发明在一X86兼容微处理器600中较详细的密码单元617的实施例方块图。微处理器600包含撷取逻辑601用以从内存(未绘出)撷取指令以供执行。撷取逻辑601是耦合到转译逻辑602,而转译逻辑602包含逻辑、电路、装置或微码(例如微指令或本机指令),或逻辑、电路、装置或微码的组合,或用以转译指令成为相关序列微指令的等效组件。这些在转译逻辑602中执行转译的组件可能与在微处理器600中执行其它功能的电路、微码共享。转译逻辑602包含一转译器603,而此转译器603是耦合到一微码只读存储器604。中断逻辑626通过由总线628耦合到转译逻辑602。复数个软件及硬件中断信号627是由指示未处理中断给转译逻辑628的中断逻辑626处理。转译逻辑628耦合到微处理器600相继的阶段包含一暂存阶段605、地址阶段606、加载阶段607、执行阶段608、储存阶段618、以及写回阶段619。每一相继阶段包含逻辑以完成由撷取逻辑601所提供相关指令执行的特定功能,如先前在图3的微处理器中所讨论参照类似名称的组件。描绘在图6中x86兼容实施例600是以在执行阶段608中的执行逻辑632为特征,其包含平行执行单元610、612、614、616、617。一整数单元610从微指令队列609接收执行整数微指令;一浮点单元612从微指令队列611接收执行浮点数微指令;一MMX单元614从微指令队列613接收执行MMX微指令;一SSE单元616从微指令队列615接收执行SSE微指令。在展示的x86实施例,一密码单元617通过由一加载总线620耦合到SSE单元616、一失速(stall)信号621以及一储存总线622。密码单元617共享SSE单元的微指令队列615。一替代实施例可将密码单元617独立并联操作像是单元610、612以及614。整数单元610耦合到一x86 EFLAGS缓存器624,此EFLAGS缓存器包含一X位625,而此X位625的状态是配置用以指示密码运算是否正在处理。在一实施例中,此X位625是一x86 ELFAGS缓存器624的第30位。此外,整数单元610存取一机器指定缓存器以评估一E位629的状态,而此E位629的状态指示密码单元617是否位于微处理器600。整数单元610也存取一D位631于一特征控制缓存器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直接产生一序列的微指令,或是从微码ROM 604撷取此序列,或是利用转译器603直接产生此序列的部份并且从微码ROM604撷取此序列剩下的部分。微指令透过微处理机600的相继阶段605-608、618、619持续地与时脉同步进行。当微指令到达执行阶段608,执行逻辑632连同其操作数(在暂存阶段605从缓存器所恢复,或在地址阶段606由逻辑所产生,或通过由加载逻辑608从数据快取所恢复),通过由放置微指令在一对应的微指令队列609、611、613、615而将其依指定路线传送给一指定执行单元610、612、614、616、617。执行单元610、612、614、616、617执行微指令并提供结果给储存阶段618。在一实施例,微指令包含字段指示其是否可以与其它运算并列执行。
响应先前所述的撷取一个XCRYPT指令,转译逻辑602产生相关微指令,其指示在微处理器600后继阶段605-608,618,619中的逻辑执行指定的密码运算。据此,一第一复数个相关微指令是直接依路径传送至密码单元617并且指示单元617由加载总线620加载数据,或加载一区块的输入数据并且开始执行指定数目的密码回合以产生一区块的输出数据,或通过由储存逻辑618透过储存总线620将所产生的区块输出数据储存于内存。如先前参照图3所述,此第一复数个相关微指令是用以增加密码单元617有利的特性以达到多数据区块的有效管线操作。更精确地,第一复数个相关微指令是用以确定在储存对应前一输入文字区块的一输出文字区块之前,一相继的输入文字区块已被加载。这使得当输出文字区块正在被储存时,一指定密码操作执行于此相继的输入文字区块。
一第二复数个相关微指令依其路径传送至其它实行单元610、612、614、616以执行其它次运算,其等次运算是完成指定密码运算的必需,例如E位629的测试、致能D位631、设定X位625以指示密码操作进行中、在暂存阶段605更新暂存(例如,计数缓存器、输入文字指针缓存器、输出文字指针缓存器)、由中断逻辑626所指示的中断627的处理等。相关微指令是用以提供指定密码运算的最佳执行于多区块输入数据,其通过由与密码单元微指令序列中的整数单元微指令成为接口,因此整数运算可与密码单元运算并行完成。微指令是包含于相关微指令以允许或并从待处理中断627恢复。因为所有对密码参数的指针与数据是提供于x86架构缓存器,当中断执行时,其状态被保存,并且当从中断返回,这些状态被恢复。当从中断返回,微指令测试X位625的状态以决定是否一密码运算在进行。如果是,当中断发生时,此运算重复于处理中的特别输入数据区块。相关微指令是用以允许在处理中断627之前,更新在一序列输入文字区块上的一序列密码操作的指针缓存器及中间的结果。
请参照图7,其为图6的微处理器中指示密码次运算的范例微指令700字段的方块图。微指令700包含一微运算码字段701,一数据缓存器字段702,以及一缓存器字段703。微运算码字段701指定执行一特定次运算并且指定逻辑于微处理器600中一或多阶段以执行次运算。微运算码字段701的指定值指定根据本发明的一密码单元执行指示的微指令。在一实施例,有两个指定的值。一第一值(XLOAD)指定数据从一内存位置恢复,而其地址是由数据缓存器字段702内容所指称的一架构缓存器的内容所指定。这数据被加载到由缓存器字段703内容所具体指定密码单元内的一缓存器。这恢复的数据(例如密码钥匙数据、控制字组、输入文字数据、初始化向量)是提供给密码单元。微运算码字段701的第二值(XSTOR)指出由密码单元所产生的数据储存在一记忆位置,而其地址是由数据缓存器字段702内容所指称的一架构缓存器的内容所指定。在密码单元一多阶段实施例,缓存器字段703的内容指示复数个输出数据区块的一储存于内存。输出数据区块是由数据域位704内的密码单元所提供以供储存逻辑存取。根据本发明密码单元所执行XLOAD和XSTOR微指令更具体的细节,将参照图8及图9加以讨论。
请参照图8,其为图7的XLOAD微指令格式700缓存器字段703的值的表格。如前所述,一序列微指令是产生响应一XCRPYT指令的转译。此序列微指令包含一第一复数个微指令,其是由密码单元指示执行;以及一第二复数个微指令,其是由微处理器中密码单元以外的一或多个并列功能单元所执行。第二复数个微指令指示次运算,例如更新计数器、暂时储存、架构暂存、测试并设定状态位于机器指定缓存器等。第一复数个微指令提供钥匙数据、密码参数以及输入数据给密码单元并且指示密码单元产生钥匙排程(或加载从内存恢复的钥匙排程)以加载并加密(或解密)输入文字数据,并且储存输出文字数据。一XLOAD微指令提供给密码单元以加载控制字组数据、加载一密码钥匙或钥匙排程、加载初始向量数据、加载输入文字数据以及加载输入文字数据并指示密码单元开始一指定密码运算。一XLOAD微指令在缓存器字段703的值0b010是指示密码单元加载一控制字组到其内部控制字组缓存器。当这微指令进行管线处理,在暂存阶段的一架构控制字组指标传存器存取获得内存中储存控制字组的地址。地址逻辑转译此地址成为一实体地址以供内存存取。加载逻辑从快取撷取控制字组,然后传给密码单元。同样地,缓存器字段值0b010指示密码单元加载由数据域位704所提供的输入文字数据,并且在加载之后开始指定的密码运算。类似控制字组,输入数据由储存在架构缓存器中所储存的一缓存器存取。值0b010指示加载由数据域位704所提供的输入数据给内部缓存器IN-1。加载到IN-1缓存器的数据不是输入文字数据(当管线处理时)就是一初始化向量。值0b110及0b111分别指示密码单元加载一密码钥匙或使用者产生钥匙排程中一钥匙的较低及较高位。根据本应用,使用者是定义成执行一特定功能或特定运算,而使用者可具体化成一应用程序、一操作系统、一机器或者一个人。
在一实施例中,缓存器字段值0b100及0b101是考虑一密码单元有两阶段,通过此,可以管线处理相继的输入文字区块数据。因此对管线处理相继的输入资料区块而言,一第一XLOAD微指令执行提供一第一区块的输入文字数据给IN-1,接着执行一第XLOAD微指令提供一第二区块的输入文字数据给IN-0,并且指示密码单元开始执行指定的密码运算。
当一使用者产生的钥匙排程被用以执行密码运算时,对应使用者产生的钥匙排程中钥匙数量的XLOAD微指令是依设定路径传送给密码单元,此密码单元指示加载此钥匙排程中每一回合钥匙。
在XLOAD微指令中缓存器字段703其它所有的值是保留。
请参照图9,其为图7的XSTOR微指令格式700缓存器字段703的值的表格。一XSTOR微指令是发布(issue)给密码单元以指示其提供所产生的输出文字区块给储存逻辑储存于内存中由地址字段702所提供的地址。据此,本发明的转译逻辑为一特定的输出文字区块所发布的一XSTOR微指令是在为一其所对应输入文字区块所发布的一XSTOR微指令之后。缓存器字段703的值0b100是指示密码单元提供关联其内部的OUT-0缓存器给储存逻辑储存。OUT-0的内容与输入文字区块提供给IN-0是相关联。同理,参照缓存器字段值0b101的内部output-1缓存器是与输入文字数据提供给IN-1相关联。据此,跟随在钥匙及控制字组数据加载之后,复数个输入文字区块可以被管线输送,是透过密码单元依序发布密码微指令XLOAD.IN-1、XLOAD.IN-0(XLOAD.IN-0也指示密码单元开始密码运算)、XSTOR.OUT-1、XSTOR.OUT-0、XLOAD.IN-1、XLOAD.IN-0(开始下两个输入文字区块运算)等等。
请参照图10,其为本发明指定密码运算参数的范例控制字组1000格式的方块图。控制字组1000是由使用者程序设计于内存,并且在执行密码运算之前,控制字组1000的指针提供给相称微处理器中的一架构缓存器。据此,当部分序列的微指令对应到一XCRYPT指令时,一XLOAD微指令被发布以指示微处理器去读取包含指针的架构缓存器、从内存(快取)恢复控制字组1000以及加载控制字组1000到密码单元的内部控制字组缓存器。控制字组1000包含一保留RSVD字段1001、钥匙大小KSIZE字段1002、一加密/解密E/D字段1003、一中间结果IRSLT字段1004、一钥匙产生KGEN字段1005、一演算ALG字段1006以及一回合计算RCNT字段1007。
保留字段1001所有的值是保留。KSIZE字段1002的内容是指示一用以完成加密或解密的密码钥匙的大小。在一实施例中,KSIZE字段1002不是指示一128位钥匙、一192位钥匙,就是指示一256位钥匙。E/D字段1003指出密码运算是加密运算或指出密码运算是解密运算。KGEN字段1005指示在内存中是使用者产生的钥匙排程或在内存中是单一密码钥匙;如果为单一钥匙时,微指令发布给密码单元与密码钥匙以指示单元根据ALG字段1006的内容所具体指定的密码演算以扩展钥匙成为一钥匙排程。在一实施例,ALG字段1006的特定值具体指示DES算法、三重DES算法或者AES算法如先前所述的讨论。替代实施例可考虑其它密码算法,例如Rijndael Cipher、Twofish Cipher等。RCNT字段1007的内容指示一数量的密码回合,其根据具体指示的算法完成于每一输入文字区块。虽然上述提及的标准指示每一输入文字区块固定前置数量的密码回合,但RCNT字段1007允许一程序设计者从标准指示修改回合的数量。在一实施例中,程序设计者可指定每一区块从0-15回合。最后,IRSLT字段1004指示是否一输入文字区块的加密/解密是根据ALG 1006所指定的密码算法以RCNT 1007所指定回合的数量执行,或者加密/解密是根据ALG 1006所指定的密码算法以RCNT 1007所指定回合的数量执行,而其最终回合的执行代表一中间结果而不是一最终结果。熟悉该项技术者可察知许多密码算法除了最终回合的次运算的外是执行相同的次运算于每一回合。因此程序设计IRSLT字段1004提供中间结果而不是最后结果,通过此,允许程序设计者可核对算法实现的中间的步骤。例如获得增加的中间值以核对算法实行,假设,执行一回合的加密于一文字区块,然后执行两回合于相同文字区块,然后三回合等。提供可程序化回合及中间值结果的功能可让使用者检查密码执行、除错以及达到改变钥匙结构及回合计数。
请参照图11,其为本发明的一密码单元1100的较佳实施例方块图。密码单元1100包含一微运算码缓存器1103,此微运算码缓存器1103透过一微指令总线1114接收密码微指令(例如XLOAD与XSTOR微指令)。密码单元1100也包含一控制字组缓存器1104、一input-0缓存器1105以及input-1缓存器1106、一key-0缓存器1107以及一key-1缓存器1108。数据透过一加载总线1111提供给缓存器1104-1108,如微指令暂存迄1103中一XLOAD微指令内容所指定。而input-0与input-1缓存器1105-1106是配置用以在目前输入文字区块执行密码运算期间,致能随后输入文字区块的缓冲。密码单元1100也包含区块密码逻辑1101,此区块密码逻辑1101耦合到所有的缓存器1103-1108以及也耦合到密码钥匙随机存取内存1102。区块码逻辑1101提供一暂停信号1113并且也提供区块结果给一output-0缓存器1109以及一output-1缓存器1110。输出缓存器1109-1110透过一储存总线1212将内容依指定路径传送给在一相称微处理器中的相继阶段。密码单元1100是装配以致能在密码运算于接着的输入文字区块时,储存从输出缓存器1109-1110的数据。在一实施例中,微指令缓存器1103是32位大小,并且每一剩下的缓存器1104-1110是128位缓存器。
在操作中,密码微指令与数据一起连续提供给微指令缓存器1103,其中数据是指定给控制字组缓存器1104、或输入缓存器1105-1106的一、或钥匙缓存器1107-1108的一。在参照图8及图9讨论的实施例中,控制字组通过由一XLOAD微指令加载到控制字组缓存器1104。因此密码钥匙或钥匙排程经由连续的XLOAD微指令加载。当一128位密码钥匙加载时,一XLOAD微指令因此提供给指定的KEY-0缓存器1107,并且连同一XLOAD微指令提供给指定的KEY-1缓存器1108。当一使用者产生的钥匙排程加载时,连续XLOAD微指令提供给指定KEY-0缓存器1107。钥匙排程中的每一钥匙被加载且依序被放置在钥匙随机存取内存1102以供其相对应的密码回合使用。随此,输入文字数据(如果没有要求一初始向量)加载到IN-1缓存器1106,如果要求一初始向量,则经由一XLOAD微指令加载到IN-1缓存器1106。对IN-0缓存器1105的一XLOAD微指令指示密码单元以加载输入文字数据给IN-0缓存器1105,并且开始在IN-0缓存器1105内的输入文字数据执行密码回合,其根据控制字组缓存器1104的内容所提供的参数使用在IN-1或在两输入缓存器1105-1106(当输入数据是管线处理)中的初始向量。根据收到指定IN-0的XLOAD微指令,区块密码逻辑1101开始执行由控制字组内容所指定的密码运算。当单一密码钥匙要求扩展,区块密码逻辑1101产生钥匙排程中的每一钥匙并将以储存在钥匙随机存取内存1102。姑且不论是否由区块密码逻辑1101产生一钥匙排程或者是从内存中加载钥匙排程,第一回合的钥匙是快取储存于区块密码逻辑1101中以使得第一区块密码回合可以不用存取钥匙RAM1102而处理。一但初始化后,区块密码逻辑1101继续执行指定的密码运算于一或多个输入文字区块直到运算完成;其连续从钥匙RAM 1102撷取回合钥匙如所应用的密码算法所要求。密码单元1100执行一指定区块密码运算于指定的输入文字区块,而相继的输入文字区块透过相继对应的XLOAD及XSTOR微指令加密/解密。当一XSTOR微指令执行时,如果指定输出数据(例如OUT-0或OUT-1)尚未完全产生,则区块密码逻辑1101显示暂停信号1113。一但输出数据已产生且放置于相对应的输出缓存器1109-1110时,缓存器1109-1110的内容接着传送到储存总线1112。虽然当指定输出资料尚未完全产生时会显示暂停信号1113,但由于输入缓存器1105-1106允许输入文字区块的缓冲,因此透过密码单元1100有效率的数据区块管线处理是通过由顺序化加载及储存微指令,使得在随后输入文字区块的密码运算总是执行在要求储存数据于输出缓存器1109-1110时。
请参照图12,其为本发明执行有关进阶加密标准(AES)算法密码运算的一区块密码逻辑1200实施例的方块图。区块密码逻辑1200包含一回合引擎1220,此回合引擎1220透过总线1211-1214及总线1216-1218耦合到一回合引擎控制器1210。回合引擎控制器1210包含储存逻辑1230,并且存取一微指令缓存器1201、控制字组缓存器1202、KEY-0缓存器1203以及KEY-1缓存器1204以存取钥匙数据、微指令以及所指示密码运算的参数。输入缓存器1205-1206的内容提供给回合引擎1220并且回合引擎1220提供相对应输出文字给输出缓存器1207-1208。输出缓存器1207-1208透过总线1216-1217也耦合到回合引擎控制器1210以致能回合引擎控制器存取每一相继密码回合的结果,而此结果是透过NEXTIN总线1218提供给回合引擎1220下一密码回合。钥匙RAM(未绘出)中的密码钥匙是透过总线1215存取。ENC/DEC信号1211指示回合引擎利用次运算执行不是加密(例如S-Box)就是解密(例如反向S-Box)。RNDCON总线1212的内容指示回合引擎1220执行不是一第一AES回合、一中间AES回合就是一最后AES回合。钥匙总线1213用以提供每一回合钥匙给回合引擎1220在其对应的回合执行时。
回合引擎1220包含第一钥匙XOR逻辑1221,此第一钥匙XOR逻辑1221耦合到一第一缓存器REG-0 1222,此第一缓存器1222耦合到S-Box逻辑1223,此S-Box逻辑1223耦合到ShiftRow逻辑1224,此Shift Row逻辑1224耦合到一第二缓存器REG-1 1225,此第二缓存器1225耦合到Mix Colum逻辑1226,此Mix Colum逻辑1226耦合到一第三缓存器REG-2 1227。第一钥匙逻辑1221、S-Box逻辑1223、Shift Row逻辑1224以及Mix Colum逻辑1226是配置用以执行次运算于输入文字数据,像是具体指定于先前讨论的AES FIPS标准。Mix Colum逻辑1226在中间回合期间于要求使用通过由钥匙总线1213所提供的回合钥匙时,是附加配置以执行AES XOR功能于输入数据。第一钥匙逻辑1221、S-Box逻辑1223、Shift Row逻辑1224以及Mix Colum逻辑1226在通过由ENC/DEC 1211的状态指示时,也配置用以执行其相对的反向AES次运算于解密期间。熟悉该项技术者可察知中间回合数据是根据控制字组缓存器1202内容所指定的具体区块加密模式而回馈给回合引擎1220。初始化向量数据(如果要求)透过NEXTIN总线1218提供给回合引擎1220。
在图12所示的实施例中,回合引擎分为两阶段一第一阶段介于REG-0 1222与REG-1 1225以及一第二阶段介于REG-1 1225与REG-2 1227。中间回合数据同步一时脉信号(未绘出)于阶段间管线处理。当一区块的输入数据完成密码运算,其关联的输出数据放置于相对应输出缓存器1207-1208。响应到一XSTOR微指令,储存逻辑1230确立STORE信号1214以告知回合引擎1220说指定输出缓存器1207-1208的内容正提供给储存总线(未绘出)。当随后的输入文字区块已缓冲于输入缓存器1205-1206,且当回合引擎1220正在处理随后的输入文字区块时,输出缓存器1207-1208可以执行储存。根据本发明效率化多资料区块管线处理如何加载及储存微指令,将更具体参照图13到图16加以讨论。
请参照图13,其为本发明微指令流的一实施例对密码单元的一单阶实施例的表格1300。如上述,一单阶密码单元一次可以处理一输入文字区块。然而,此单阶实施例如多阶实施例(一两阶实施例是展示并具体讨论参照图12)是配置于相同方法,也就是当回合引擎对目前输入数据执行指定的密码运算时,输入缓存器允许缓冲随后的输入区块数据,并且当随后的输入数据区块执行指定的密码运算时,输出缓存器与储存逻辑致能对应目前输入数据区块的输出区块储存。在表格1300的微指令流并没有利用先前所提及有利于单阶段密码单元的特性。
就本发明教示的目的而言,一加载微指令LD.IN-0的执行需要两个管线时脉周期。一但输入数据加载输入缓存器0,回合引擎自动开始。就比较目的而言,回合引擎须20个时脉周期以产生一对应的输出区块,在此期间,一储存指令ST.OUT-0是暂停。类似加载指令LD.IN-0,储存指令ST.OUT-0指定执行的储存运算须两个时脉周期。据此,当一第一加载指令LD.IN-0在周期0提供给密码单元,然后在两个周期后,输入数据加载并且回合引擎开始执行,因此在周期22时产生一对应的输出数据区块。相对应的储存指令ST.OUT-0是暂停直到相对应的输出数据区块备妥,因此在周期24完成储存。一随后的加载指令LD.IN-0是暂停在先前储存指令ST.OUT-0之后直到储存完成,因此在周期26之前没有加载随后的输入文字区块。
如上所述,这种载入-储存-加载-储存微指令的顺序对密码单元先前所提及的特性并无助益。结果,就多数据区块执行密码运算而言,每个区块需要24周期。
请参照图14,其为本发明微指令流的另一实施例对密码单元的单阶实施例的表格1400。对比参照图13所讨论的微指令流,此替代微指令流实施例利用了单阶密码单元的有利特性。就比较目的而言,透过回合引擎执行加载指令LD.IN-0、储存指令ST.OUT-0以及密码运算的时脉周期的数目与参照图13所讨论的实施例是相同。
根据此替代微指令流实施例,当一第一加载指令LD.IN-0在周期0提供给密码单元,然后在两个周期后,输入数据加载并且回合引擎开始执行,因此在周期22时产生一对应的输出数据区块。然而,因为输入资料可以缓冲,因此转译逻辑在周期4完成发布一第二加载指令LD.IN0以加载一随后的输入文字区块。在随后输入文字区块执行的密码运算是暂停直到一对应第一输入文字区块的输出文字区块产生(周期22),但是随后的输入文字区块在周期4已缓冲储存,因此其密码运算可以在周期23开始并在周期42完成。对应第一输入区块的输出文字的储存指令ST.OUT-0是由转译逻辑在随后区块加载指令LD.IN-0之后所提供。此储存指令ST.OUT-0是暂停直到相对应的输出数据区块在周期22备妥,但在周期24完成储存。一随后的加载指令LD.IN-0是暂停在先前储存指令ST.OUT-0之后直到储存完成,因此在周期26之前没有加载随后的输入文字区块。通过由回合引擎而将两周期转入随后输入文字区块的处理。通过由最初执行两个加载,这种微指令顺序可以得利于密码单元先前所提及的特性,因此增加多区块的每个区块的产量成20周期。储存一输出区块所需的这两个时脉周期是有效合并于一随后输入文字区块密码运算的执行。此外,加载随后输入文字区块所需的的两个周期是合并于目前输入文字区块密码运算的执行期间。
请参照图15,其为本发明微指令流的一实施例对密码单元的两阶实施例的表格1500。两阶实施例是具体讨论对照于图12,并且其可以在回合引擎的周期处理两个相继的输入数据区块。如同表格1300的单阶实施例流,表格1500的流在密码单元中并未从其特征中获利以合并时脉周期。就比较目的而言,透过回合引擎执行加载指令LD.IN-0、储存指令ST.OUT-0以及密码运算的时脉周期的数目与参照图13、图14所讨论的实施例是相同。如上所述,缓存器1执行加载指令LD.IN-1是仅仅加载输入数据至输入缓存器1;一LD.IN-0缓存器执行加载输入文字数据至输入缓存器0,并且透过回合引擎初始处理在输入缓存器0及1内的输入数据。因为回合引擎的发动(staged),因此完成在两输入缓存器中输入数据的加密/解密仅须20个时脉周期。
因此,转译逻辑发布一LD.IN-1微指令跟随一LD.IN-0指令。LD.IN-1在周期2完成而LD.IN-0在周期4完成,并且回合引擎在周期5开始处理两输入文字区块且在周期24完成。两随后的储存指令ST.OUT-1、ST.OUT-0是暂停直到周期24待其对应的输入数据文字区块处理完成,在周期24暂停解除,其允许在周期28完成储存。因为没有其它输入数据缓冲储存,因此两随后加载指令LD.IN-0、LD.IN-1是暂停直到储存完成。因此随后输入文字区块的加载发生于周期29-32之间,并且由回合引擎在周期33-52之间处理这些区块。
相同于参照图13单阶密码单元所讨论微指令的加载-储存-加载-储存顺序,表格15的加载-加载-储存-储存-载入-加载-储存-储存顺序并没有从支持有效率数据区块处理的密码单元的特性中取得好处。结果,在两阶密码单元执行密码运算于多数据区块,每两个区块需要28周期。
请参照图16,其为本发明微指令流的另一实施例对密码单元的两阶实施例的表格1600。对比参照图15所讨论的微指令流,此表格1600的替代微指令流实施例利用了两阶密码单元的有利特性。就比较目的而言,透过回合引擎执行加载指令LD.IN-0、储存指令ST.OUT-0以及密码运算的时脉周期的数目与参照图15所讨论的实施例是相同。
根据此替代微指令流实施例,当一第一加载指令LD.IN-1在周期0提供给密码单元以及跟着提供一第二加载指令LD.IN0,然后在4个周期后,输入数据加载并且回合引擎开始执行,因此在周期24时产生一对应的输出数据区块。然而,因为输入数据可以缓冲储存,因此转译逻辑发布允许两输入文字区块的加载指令LD.IN-1、LD.IN-0的第二集(set)并在周期8完成加载。在随后输入文字区块执行的密码运算是暂停直到两分别对应两第一输入文字区块的两输出文字区块产生(周期24),但是随后的两输入文字区块在周期8已缓冲储存,因此其等密码运算可以在周期25开始并在周期44完成。对应两第一输入文字区块的两输出文字的储存指令ST.OUT-1、ST.OUT-0是由转译逻辑在随后区块加载指令LD.IN-1、LD.IN-0之后所提供。此储存指令ST.OUT-1、ST.OUT-0是暂停直到相对应的输出数据区块在周期24备妥,但在周期28完成储存。通过由回合引擎已经将4周期转入随后输入文字区块的处理。通过由最初执行四个加载,这种微指令顺序可以得利于密码单元先前所提及的特性,因此增加多区块的每个区块的产量成20周期。储存输出区块所需的这四个时脉周期是有效合并于两随后输入文字区块密码运算的执行。此外,加载随后两输入文字区块所需的的四个周期是合并于目前输入两输入文字区块密码运算的执行期间。
虽然本发明及其目的、特征与优点已详细描述,但其它实施例也应包含于本发明。例如本发明曾根据兼容x86架构的实施例讨论长度,然而这些讨论已提供此类的方式,因为x86架构容易理解且提供足够的方式以教示本发明。然而本发明包含相称于其它指令集架构的实施例,例如PowerPC、MIPS及诸如此类等,此外还有全新的指令集架构。
本发明更包含计算机系统中微理器外其它组件的密码运算的执行,例如,根据本发明的密码指令可以容易地被应用在一密码单元的一实施例,此实施例并非如微处理器部分相同的整合电路,其执行方式如部分计算机系统。本发明的如此的实施例是为了并入围绕在微处理器的芯片组(如北桥、南侨),或当一处理器用于执行密码运算时,其密码指令是由主微处理器移转(hand off)给此处理器。本发明可应用于内嵌控制器、工业控制器、信号处理器、阵列处理机以及任何相似处理数据的装置。本发明也包含一实施例仅含有执行密码运算所必需的组件。如此的内嵌装置不仅执行密码运算,也确实提供低成本、低电源,例如通信系统中的加密/解密处理器。为求简明,本发明将这些替代的处理组件参照成上述的处理器。
此外,虽然本发明提及128位区块,但是许多不同区块的大小可以透过改变缓存器的大小而被应用,其中缓存器传送输入数据、输出数据、钥匙以及控制字组。
并且,虽然本应用显著以DES、三重DES以及AES为其特征,但本发明也包含较少人知的区块密码算法,例如MARS密码、Rijndael密码、Twofish密码、Blowfish密码、Serpent密码以及RC6密码。足以理解的是,本发明提供在微处理器中用于区块密码的装置及支持的算法,其基元区块密码运算可透过单一指令的执行而引动。
并且,虽然本发明在此以区块密码演算及其相关技术以执行区块密码功能为特征,但是除了区块密码的外其它形式的密码也包含于本发明应用范围的内。可足以观察的是,提供一单一指令,通过此,使用者可指示一相称的微处理器执行一密码运算,例如加密或解密,其中微处理器包含一密码单元,此密码单元依指示完成指令所指定的密码功能。
并且,在此所讨论的回合引擎提供一两阶装置可管线处理两区块的输入数据,但其它实施例也可考虑多于两阶段。阶段的分配对支持更多输入数据区块的管线处理,将发展协调相称微处理器中其它阶段的分配。
最后,虽然本发明具体讨论支持复数个算法的一单独密码单元,但是本发明也提供理解在一相称微处理器中与其它执行单元并列操作耦合的多密码单元,而每一多密码单元是配置用以执行一具体指定的密码演算,例如一第一单元是配置用以执行AES、一第二单元是配置用以执行DES等。
以上所述仅为本发明的较佳实施例而已,并非用以限定本发明的申请专利范围;凡其它为脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在下述的申请专利范围。
权利要求
1.一种执行密码运算的装置,其特征在于,所述该执行密码运算的装置包含一密码指令,是由一计算装置接收并将其当成执行于该计算装置的一指令流的部分,其中该密码指令指定一密码运算;转译逻辑,操作耦合于该密码指令并配置用以转译该密码指令成微指令,其中该微指令是用以在指示该计算装置储存对应于一第一输入文字区块的一输出文字区块之前,指示该计算装置加载一第二输入文字区块并对该第二输入文字区块执行该密码运算;通过此在该密码运算对该第二输入文字区块执行期间,该输出文字区块可以被储存。
2.如权利要求1所述的执行密码运算的装置,其特征在于,所述该密码运算包含一加密运算,该加密运算包含复数个明文区块的加密以产生相对复数个密文区块;其中该复数个明文区块包含该第一及第二输入文字区块;以及其中该相对复数个密文区块包含该输出文字区块。
3.如权利要求1所述的执行密码运算的装置,其特征在于,所述该密码运算包含一解密运算,该解密运算包含复数个密文区块的解密以产生相对复数个明文区块;其中该复数个密文区块包含该第一及第二输入文字区块;以及其中该相对复数个明文区块包含该输出文字区块。
4.如权利要求1所述的执行密码运算的装置,其特征在于,更包含执行逻辑,操作耦合以接收该微指令并当该密码运算执行于该第二输入文字区块时配置用以储存该输出文字区块。
5.如权利要求4所述的执行密码运算的装置,其特征在于,所述该执行逻辑包含一密码单元。
6.如权利要求5所述的执行密码运算的装置,其特征在于,所述该密码单元是配置用以根据进阶加密标准执行该密码运算。
7.如权利要求5所述的执行密码运算的装置,其特征在于,所述该密码单元包含一两阶回合引擎,配置用以管线执行该第一及第二输入文字区块。
8.如权利要求1所述的执行密码运算的装置,其特征在于,所述该微指令包含一加载微指令,配置用以指示该计算装置加载该第二输入文字区块并且执行该密码运算于该第二输入文字区块;以及一储存微指令,配置用以指示该计算装置储存该输出文字区块。
9.如权利要求1所述的执行密码运算的装置,其特征在于,所述该密码指令是根据x86指令格式所指定。
10.如权利要求1所述的执行密码运算的装置,其特征在于,所述该密码指令隐含参照该计算装置内复数个缓存器。
11.如权利要求10所述的执行密码运算的装置,其特征在于,所述该复数个缓存器包含一第一缓存器,其中该第一缓存器的内容包含一第一指针对一第一内存地址,该第一内存地址依据完成的该密码运算指定内存内一第一位置以存取复数个输入文字区块,其中该复数个输入文字区块包含该第一及第二输入文字区块。
12.如权利要求10所述的执行密码运算的装置,其特征在于,所述该复数个缓存器包含一第二缓存器,其中该第二缓存器的内容包含一第二指针对一第二内存地址,该第二内存地址指定内存内一第二位置以储存相对复数个输出文字区块,该相对复数个输出文字区块是根据复数个输入文字区块所完成该密码运算的结果,其中该复数个输出文字区块包含该输出文字区块。
13.如权利要求10所述的执行密码运算的装置,其特征在于,所述该复数个缓存器包含一第三缓存器,其中该第三缓存器的内容指示复数个输入文字区块内一数量的文字区块。
14.如权利要求10所述的执行密码运算的装置,其特征在于,所述中该复数个缓存器包含一第四缓存器,其中该第四缓存器的内容包含一第三指针对一第三内存地址,该第三内存地址指定内存内一第三位置以存取密码钥匙数据以用于完成该密码运算。
15.如权利要求10所述的执行密码运算的装置,其特征在于,所述该复数个缓存器包含一第五缓存器,其中该第五缓存器的内容包含一第四指针对一第四内存地址,该第四内存地址指定内存内一第四位置,该第四位置包含一初始向量位置,该初始向量位置的内容包含一初始向量或初始向量等效物以用于完成该密码运算。
16.如权利要求10所述的执行密码运算的装置,其特征在于,所述该复数个缓存器包含一第六缓存器,其中该第六缓存器的内容包含一第五指针对一第五内存地址,该第五内存地址指定内存内一第五位置以存取一控制字组以用于完成该密码运算,其中该控制字组指定密码参数给该密码运算。
17.一种执行密码运算的装置,其特征在于,所述该执行密码运算的装置包含转译逻辑,配置用以转译一密码指令成一序列的微指令,该序列的微指令包含一第一微指令,指示加载一第二输入文字区块并且执行一密码运算于该第二输入文字区块;以及一第二微指令,指示储存一第一输出文字区块,该第一输出文字区块根据执行的该密码运算对应于一第一输入文字区块;其中该转译逻辑在发布该第二微指令之前发布该第一微指令;通过此在该密码运算对该第二输入文字区块执行期间,该输出文字区块可以被储存。
18.如权利要求17所述的执行密码运算的装置,其特征在于,所述该密码运算包含一加密运算,该加密运算包含复数个明文区块的加密以产生相对复数个密文区块;其中该复数个明文区块包含该第一及第二输入文字区块;以及其中该相对复数个密文区块包含该输出文字区块。
19.如权利要求17所述的执行密码运算的装置,其特征在于,所述该密码运算包含一解密运算,该解密运算包含复数个密文区块的解密以产生相对复数个明文区块;其中该复数个密文区块包含该第一及第二输入文字区块;以及其中该相对复数个明文区块包含该输出文字区块。
20.如权利要求17所述的执行密码运算的装置,其特征在于,更包含一密码单元,操作耦合以接收该微指令并当该密码运算执行于该第二输入文字区块时配置用以储存该输出文字区块。
21.如权利要求20所述的执行密码运算的装置,其特征在于,所述该密码单元是配置用以根据进阶加密标准执行该密码运算。
22.如权利要求20所述的执行密码运算的装置,其特征在于,所述该密码单元包含一两阶回合引擎,配置用以管线执行该第一及第二输入文字区块。
23.如权利要求17所述的执行密码运算的装置,其特征在于,所述该密码指令是根据x86指令格式所指定。
24.一种在一装置执行密码运算的方法,其特征在于,所述该在一装置执行密码运算的方法包含转译一密码指令成一第一微指令及一第二微指令,该密码指令指定一密码运算,该第一微指令指示该装置加载一第二输入文字区块并且执行该密码运算于该第二输入文字区块,该第二微指令指示该装置储存一第一输出文字区块,该第一输出文字区块根据执行的该密码运算对应于一第一输入文字区块;以及发布该第一微指令给一密码单元后发布该第二微指令给该密码单元;通过此在该密码运算对该第二输入文字区块执行期间,该输出文字区块可以被储存。
25.如权利要求24所述的在一装置执行密码运算的方法,其中该转译包含通过由该第一微指令指定执行一加密运算于该第二文字区块以产生一相对第二密文区块。
26.如权利要求24所述的在一装置执行密码运算的方法,其特征在于,所述该转译包含通过由该第一微指令指定执行一解密运算于该第二文字区块以产生一相对第二明文区块。
27.如权利要求24所述的在一装置执行密码运算的方法,其特征在于,更包含执行该第一及第二微指令于一密码单元,其中该执行包含当执行该密码运算于该第二输入文字区块时,储存该输出文字区块。
28.如权利要求24所述的在一装置执行密码运算的方法,其特征在于,所述该密码指令根据进阶加密标准指定执行该密码运算。
29.如权利要求24所述的在一装置执行密码运算的方法,其特征在于,更包含执行该第一及第二微指令于一密码单元,其中该执行包含透过一两阶回合引擎管线处理该第一及第二输入文字区块。
全文摘要
本发明提供一种在处理器中的复数个输入数据区块执行密码运算的装置及方法。在一实施例中,提供一种执行密码运算的装置,而此装置是包含密码指令及转译逻辑。上述的密码指令是由一计算装置接收并将其当成指令流的一部分,并且此密码指令指定一种密码运算。上述的转译逻辑是将上述的密码指令转译成微指令,此微指令是用以在指示计算装置储存对应第一输入文字区块的输出文字区块之前,指示计算装置加载第二输入文字区块并对此第二输入文字区块执行密码运算。因此,在对第二输入文字区块执行密码运算期间,上述的输出文字区块可以被储存。
文档编号H04L9/06GK1592189SQ20041008311
公开日2005年3月9日 申请日期2004年9月29日 优先权日2003年9月29日
发明者A·克里斯宾 汤玛斯, 亨利 G·葛兰, 帕德斯 泰瑞 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1