CN1658548B - 配置密码引擎资料区块的微处理器及方法 - Google Patents
配置密码引擎资料区块的微处理器及方法 Download PDFInfo
- Publication number
- CN1658548B CN1658548B CN2005100624909A CN200510062490A CN1658548B CN 1658548 B CN1658548 B CN 1658548B CN 2005100624909 A CN2005100624909 A CN 2005100624909A CN 200510062490 A CN200510062490 A CN 200510062490A CN 1658548 B CN1658548 B CN 1658548B
- Authority
- CN
- China
- Prior art keywords
- crypto
- microprocessor
- buffer
- appointed
- block size
- 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)
- Programmable Controllers (AREA)
Abstract
本发明提供一种在处理器内复数个输入数据区块执行密码运算的装置及方法,其中上述输入数据区块的大小可程序化。在一实施例中,提供一种执行密码运算的装置,而此装置包含一密码指令电路,用以产生一密码指令,以及一执行逻辑电路。上述密码指令由一计算装置接收并将其当成一执行于此计算装置指令流的一部分,并且此密码指令指定复数个密码运算其中之一以及复数个数据区块大小其中之一。上述执行逻辑电路操作耦合于上述密码指令电路,此执行逻辑电路执行上述密码运算,并且包含一区块大小控制器,而此区块大小控制器在被指定的密码运算执行期间使用被指定的数据区块大小。
Description
相关参考专利
本发明主张下列美国专利的临时申请案的优先权:
序列号 | 申请目 | 标题 |
60/506971 | 9/29/2003 | MICROPROCESSOR APPARATUS ANDMETHOD FOR OPTIMIZING BLOCKCIPHER CRYPTOGRAPHICFUNCTIONS |
60/507001 | 9/29/2003 | APPARATUS AND METHOD FORPERFORMING OPERATING SYSTEMTRANSPARENT BLOCK CIPHERCRYPTOGRAPHIC FUNCTIONS |
60/506978 | 9/29/2003 | MICROPROCES SOR APPARATUS ANDMETHOD FOR EMPLOYINGCONFIGURABLE BLOCK CIPHERCRYPTOGRAPHIC ALGORITHMS |
60/507004 | 9/29/2003 | APPARATUS AND METHOD FORPROVIDING USER-GENERATED KEYSCHEDULE IN A MICROPROCESSORCRYPTOGRAPHIC ENGINE |
60/507002 | 9/29/2003 | MICROPROCESSOR APPARATUS ANDMETHOD FOR PROVIDINGCONFIGURABLE CRYPTOGRAPHICBLOCK CIPHER ROUND RESULTS |
60/506991 | 9/29/2003 | MICROPROCESSOR APPARATUS ANDMETHOD FOR ENABLINGCONFIGURABLE DATA BLOCK SIZE |
IN A CRYPTOGRAPHIC ENGINE | ||
60/507003 | 9/29/2003 | APPARATUS FOR ACCELERATINGBLOCK CIPHER CRYPTOGRAPHICFUNCTIONS IN A MICROPROCESSOR |
序列号 | 申请目 | 标题 |
60/464394 | 4/18/2003 | ADMANCED CRYPTOGRAPHY UNIT |
60/506979 | 9/29/2003 | MICROPROCES SOR APPARATUS ANDMETHOD FOR PROVIDINGCONFIGURABLE CRYPTOGRAPHICKEY SIZE |
60/508927 | 10/3/2003 | APPARATUS AND METHOD FORPERFORMING OPERATING SYSTEMTRANSPARENT CIPHER BLOCKCHAINING MODE CRYPTOGRAPHICFUNCTIONS |
60/508679 | 10/3/2003 | APPARATUS AND METHOD FORPERFORMING OPERATING SYSTEMTRANSPARENT CIPHER BLOCKFEEDBACK MODE CRYPTOGRAPHICFUNCTIONS |
60/508076 | 10/3/2003 | APPARATUS AND METHOD FORPERFORMING OPERATING SYSTEMTRANSPARENT OUTPUT BLOCKFEEDBACK MODE CRYPTOGRAPHICFUNCTIONS |
60/508604 | 10/3/2003 | APPARATUS AND METHOD FORGENERATING A CRYPTOGRAPHICKEY SCHEDULE IN AMICROPROCESSOR |
本发明下列正在审理中的美国专利临时申请中的一部分,该些申请案具有相同的受让人和发明人。
序列号 | 申请目 | 标题 |
10/674057 | 9/29/2003 | MICROPROCESSOR APPARATUS ANDMETHOD FOR PERFORMINGBLOCK CIPHER CRYPTOGRAPHICFUNCTIONS |
本发明涉及下列正在审理中的美国专利临时申请,该些申请具有相同的受让人和发明人。
序列号 | 申请目 | 标题 |
10/730167 | 12/5/2003 | MICROPROCESSOR APPARATUS ANDMETHOD FOR PERFORMINGBLOCK CIPHER CRYPTOGRAPHICFUNCTIONS |
10800768 | 3/15/2004 | MICROPROCESSOR APPARATUS ANDMETHOD FOR OPTIMIZING BLOCKCIPHER CRYPTOGRAPHICFUNCTIONS |
10/727973 | 12/4/2003 | APPARATUS AND METHOD FORPERFORMING TRANSPARENTBLOCK CIPHER CRYPTOGRAPHICFUNCTIONS |
10/800938 | 3/15/2004 | MICROPROCESSOR APPARATUS ANDMETHOD FOR EMPLOYINGCONFIGURABLE BLOCK CIPHERCRYPTOGRAPHIC ALGORITHMS |
10/800983 | 3/15/2004 | APPARATUS AND METHOD FORPROVIDING USER-GENERATE KEYSCHEDULE IN A MICROPROCESSORCRYPTOGRAPHIC ENGINE |
10/826435 | 4/16/2004 | MICROPROCESSOR APPARATUS ANDMETHOD FOR PROVIDINGCONFIGURABLE CRYPTOGRAPHICBLOCK CIPHER ROUND RESULTS |
10/826475 | 4/16/2004 | MICROPROCESSOR APPARATUS ANDMETHOD FOR PROVIDINGCONFIGURABLE CRYPTOGRAPHICKEY SIZE |
10/826,814 | 4/16/2004 | APPARATUS AND METHOD FORPERFORMING TRANSPARENTCIPHER BLOCK CHAINING MODECRYPTOGRAPHIC FUNCTIONS |
序列号 | 申请目 | 标题 |
10/826428 | 4/16/2004 | APPARATUS AND METHOD FORPERFORMING TRANSPARENTCIPHER BLOCK FEEDBACK MODECRYPTOGRAPHIC FUNCTIONS |
10/826745 | 4/16/2004 | APPARATUS AND METHOD FORPERFORMING TRANSPARENTOUTPUT FEEDBACK MODECRYPTOGRAPHIC FUNCTIONS |
10/826632 | 4/16/2004 | APPARATUS AND METHOD FORGENERATING A CRYPTOGRAPHICKEY SCHEDULE IN AMICROPROCESSOR |
本发明引用美国专利申请第10/826433号的优先权,申请日为2004年4月16日,名称为“MICROPROCESSOR APPARATUS AND METHOD FORENABLING CONFIGURABLE DATA BLOCK SIZE IN ACRYPTOGRAPHIC ENGINE”。
技术领域
本发明是有关于微电子领域,特别是有关于一种在一计算装置中执行密码运算的装置及方法,其中计算装置允许数据区块大小依据指令阶段的程序化而运作。
背景技术
早期的计算机系统是独立操作于其它计算机系统之外,据此,执行于此计算机系统中的应用程序所需的输入数据,若非储存于此计算机系统,就是由应用程序设计人员在执行时提供;而应用程序执行结果及产生的输出数据,其形式一般为打印输出的纸张,或者是写入磁带、磁盘或是此计算机系统其它类型的储存装置的档案。输出档案可当成之后在相同计算机系统中执行的应用程序的输入档案,或者,当输出数据先前被储存成档案于可移除或可输送的储存装置时,其也可以提供给不同但兼容的计算机系统的应用程序使用。在这些早期的系统,保护机密信息的需求是公认,并且在其它信息安全措施中,密码应用程序被发展及应用以防止机密信息未被授权揭露。这些密码程序一般是以加密或解密的方式在储存装置中储存成档案的输出数据。
其后没几年,使用者开始发现由网络将计算机连接可以提供信息共享存取的好处,因此网络架构、操作系统、以及数据传输协议等均发展成不仅支持存取共享数据的能力,更是其显著的特征。例如,使用者的计算机工作站可以在不同工作站或网络文件服务器存取档案,或者利用因特网获得新闻及其它信息,或者对数以百计的其它计算机传送及接收电子讯息(如电子邮件),或者与经销商的计算机系统连接并提供信用卡或银行信息以购买产品,或者在餐厅、机场或其它公共场合利用无线网络进行上述的任何活动。因此,保护机密数据及传输免于未授权揭露的需求已急速的成长,而在某些特定的状况下,使用者被迫保护其机密数据的情况也大大的增加。目前新闻头条通常集中在计算机信息安全问题,例如垃圾邮件(spam)、黑客、身分盗取、反向工程、恶作剧以及信用卡诈骗等是公众所关注的前几名。而当这些从各方面侵入私人领域的动机由无心的错误到有预谋的网络攻击,负责的执行单位以新法律、严厉的执行以及公共教育节目响应。然而,这些响应并未有效遏止危及计算机信息的浪潮。昔日是政府、金融机构、军方所专注关切之间谍,现在对一般人而言也已成为重要的问题;间谍读取他们的电子邮件或从他们的家用计算机存取他们检查帐户的交易。在商业之前,熟悉该项技术者可察知从小到大的社团法人目前应用其资源卓越的部分以保护财产信息。
信息安全领域提供我们技术及装置以加密数据,并使其仅能由指定的个体加以解码,此为所知的密码(cryptography)。当特别应用于保护储存或传输于计算机之间的信息时,密码最常被应用于转换机密数据(称为“明文”;plaintext或cleartert)成为难以理解的形式(称为“密文”;ciphertext)。转变成明文成为密文的转换过程称为加密(encryption;enciphering;ciphering),而转变密文回明文的反向转换过程称为解密(decryption;deciphering;inverseciphering)。
在密码学的领域中,几种程序及协议已发展到允许使用者不须具备许多知识及努力即可执行密码运算,并且针对这些使用者使其可以传输或者提供其加密形式的信息产品给不同的使用者。连同加密信息,传送者通常会提供接收者一“密码钥匙(cryptographic key)”以使接收者可以译码所加密的信息,因此使得接收者能够恢复或者获得存取未加密的原始信息。熟悉该项技术者可察知这些程序及协议一般是以暗语(password)保护、数学算法以及应用程序特别设计的形式加以实现以加密及解密机密信息。
几种类型的算法目前使用于加密及解密数据。算法根据上述一类型(例如一种RSA算法,公开钥匙密码算法)利用两密码钥匙(一公开钥匙(publickey)与一私人钥匙(private key)),加密或解密资料。根据一些公开钥匙算法,接收者的公开钥匙被传送者用来加密传送给接收者的数据,因为有一数学关系存在于使用者的公开钥匙与私人钥匙之间,因此接收者必须利用其私人钥匙解密此传输以恢复此数据。虽然这类型的密码算法广泛使用于现今,但其加密及解码的运算却是极慢甚至于少量的数据。一第二类型的算法,如所知的对称钥匙算法,提供同量等级的数据安全并且可以较快执行。这些算法称为对称钥匙算法,因为他们对加密及解密信息使用单一密码钥匙。在公开区段,目前有三种盛行单一钥匙(single-key)密码算法:数据加密标准(DataEncryption Standard;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、Inverse ShiftRows)。
数据加密标准及三重数据加密标准算法利用不同特定的次运算,但是这些次运算是类似进阶加密标准算法的次运算,因为其利用相似的方式以转换一区块的明文成为一区块的密文。
执行密码运算于多连续的文字区块,所有对称钥匙算法利用相同类别的模式,这些模式包含电子密码本(electronic code book;ECB)模式、密码区块链接(cipher block chaining;CBC)模式、密码反馈模式(cipher feedback;CFB)以及输出反馈模式(output feedback;OFB)。这些模式中有些利用一附加初始化向量于执行次运算期间,有些使用执行于第一区块明文的第一位置密码回合的密文输出当成附加的输入给执行于第二区块明文的第二位置密码回合。除此,本应用的领域对现今对称钥匙密码算法所应用的每一密码演算及次运算提供更深层的讨论。就具体指定执行标准而言,读者可由美国联邦信息处理标准公告46-3(Federal Information Processing Standards Publication;FIPS-46-3),1999年10月25日出版,得到数据加密标准及三重数据加密标准的详细探讨;以及美国联邦信息处理标准公告197(FIPS-197),2001年11月26日出版,得到进阶加密标准的详细探讨。上述提及的两种标准是由美国国家标准暨技术局(National Institute of Standards 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 file storage device)106、第一路由器(first router)107或其它接口形式到广域网络(wide area network,WAN)110(例如:因特网)以及像是符合IEEE 802.11的无线网络路由器(wireless network router)108,笔记型计算机(laptop computer)104则是透过无线网络109与无线路由器108成为接口。在广域网络110方面,第二路由器(second router)111提供接口给第三计算机工作站103。
如上概述,现今使用者在工作期间面临许多次的计算机信息安全问题。例如:在现今多任务(multi-tasking)操作系统的控制下,使用者工作站101可以同时执行多个任务(task)且每一任务要求密码运算。使用者工作站101要求执行加密/解密应用程序(encryption/decryption application)112(无论是操作系统的一部分或是由操作系统所引动(invoke))以储存区域档案于网络档案储存装置106,在档案储存的同时,使用者可以传送一加密讯息给在工作站102的第二使用者,其中工作站102也要求执行加密/解密应用程序112的一范例,而加密讯息可能是实时(例如:实时讯息)或者是非实时(例如:电子邮件)。此外,使用者可以透过广域网络110从工作站103存取或提供其金融数据(例如:信息卡号、金融交易等)或者其它形式的机密数据。工作站103也可以代表是家庭办公或其它远程计算机103,其可以让工作站101的使用者离开办公室时用以存取局域网络105的任何共享资源101、102、106、107、108以及109。上述提及的每一活动均要求引动加密/解密应用程序112的相对范例,并且无线网络109目前普遍地提供于咖啡店、机场、学校以及其它公众场所,因而促使使用者笔记型计算机104不仅对其他使用者传送/接收的讯息进行加密/解密,并且也对透过无线网络109到无线路由器108的所有通讯进行加密及解密。
熟悉该项技术者可因此察知在工作站101-104中连同每一要求密码运算的活动,须有一相对的要求以引动(invoke)加密/解密应用程序112的范例,因此计算机101-104在最近的将来有可能同时执行数以百计的密码运算。
本发明人注意到上述计算机系统101-104由引动加密/解密应用程序112的至少一范例以执行密码运算的方法限制。例如:透过程序规划的软件执行一指定功能就比透过硬件执行相同功能还慢。且每次执行加密/解密应用程序112时,正在计算机101-104执行的任务就必须暂缓执行,并且密码运算的参数(例如:明文、密文、模式以及钥匙等)必须透过操作系统传送给加密/解密应用程序112为完成密码运算所引动的范例。并且因为密码演算须在一指定的数据区块引动许多回合的次运算,加密/解密应用程序112的执行引动许多计算机指令的执行而对整体系统的处理速度产生不利的影响。熟悉该项技术者可察知在微软Outlook传送少量加密电子邮件讯息的时间会相当于只传送未加密电子邮件讯息的五倍。
此外,目前技术受限于操作系统介入的延迟。大部分的应用程序并无提供完整的钥匙产生或加密/解密组件;其利用操作系统的组件或外挂应用程序以完成上述任务,此外操作系统因中断及其它正在执行应用程序的请求而转移其执行。
并且,本发明人注意到在现今计算机系统101-104的密码运算相类似于微处理器尚未有浮点单元时的浮点数学运算。早期的浮点单元运算是由软件所执行,因此执行的非常慢;同浮点运算,由软件执行的密码运算也是极慢。当浮点技术更进一步发展,浮点辅助处理器提供浮点指令以供执行,这些浮点辅助处理器执行浮点运算比软件执行快了许多,但却增加了系统的成本。相同地,密码辅助处理器目前以附加在电路板或以外接装置与主处理器透过并列端口或其它接口总线(例如:USB)成为接口的形式存在,这些辅助处理器能使密码运算的完成比由纯软件所执行的快了许多。但密码共同处理器给系统配置增加了成本,需要额外的电源、而且降低了系统的可靠性。由于数据通路不像主微处理器那样在同一模块上,所以密码共同处理器的执行更易被监听。
因此本发明人确认将密码硬件加入现今微处理器的需要,由此,要求密码运算的应用程序可由一单独、基元(atomic)的密码指令指示微处理器执行密码运算。本发明人也确认应以此功能限定操作系统介入及管理的要求,并且期望密码指令可以使用于应用程序的权限层级(privilege level)以及密码硬件可相称(comport with)于现今微处理器的一般架构,并且密码硬件及相关联的密码指令可支持兼容先前的操作系统及应用程序。更期望的是提供执行密码运算的装置及方法,其可阻止未授权的监视;其可支持及可程序化有关多密码演算;其可支持核对及测试实体特定的密码演算;其可允许使用者提供钥匙也可自行产生钥匙;其支持多数据区块大小及钥匙长度(key size);以及其提供可程序化区块加密/解密模式如电子密码本模式、密码区块链接模式、密码反馈模式以及输出反馈模式。
发明内容
本发明的目的在于提供一种执行密码运算的装置,其中包含:
一撷取逻辑电路,位于一微处理器中,用于撷取一单独、基元的密码指令并将其当成执行于该微处理器一指令流的一部分,其中该密码指令指定复数个密码运算其中之一,并且该密码指令参照一缓存器以参照由该缓存器的内容中的指针所指定的内存位置处的一控制字组,以用于完成被指定的密码运算,该控制字组指定被指定的密码运算的密码参数,该控制字组包含:数据区块大小字段,配置用以指定在被指定的密码运算执行期间使用的数据区块大小;
一转译逻辑电路,位于该微处理器中,耦合于该撷取逻辑电路,用于将该密码指令转译成一序列的微指令,该一序列的微指令指示该微处理器执行该密码运算;以及
一执行逻辑电路,位于该微处理器中,耦合于该转译逻辑电路,并且配置用以执行被指定的密码运算,该执行逻辑电路包含一密码单元,该密码单元包含一区块大小控制器,其中:
所述区块大小控制器,在被指定的密码运算执行期间,配置用以使用被指定的数据区块大小;以及
所述密码单元,配置用以对每一输入文字区块根据指定的数据区块大小执行复数个密码回合以产生每一相对输出文字区块,其中被指定的数据区块大小由该控制字组指定,且该控制字组被提供给该密码单元的该区块大小控制器。
其中该密码运算可以具有下列功能的某一种:
一加密运算,该加密运算包含复数个明文区块的加密以产生相对复数个密文区块;以及
一解密运算,该解密运算包含复数个密文区块的解密,以产生相对复数个明文区块。
其中被指定数据区块大小至少可以为下列可能变化的某一种:128位、192位以及256位。
其中该区块大小控制器配置用以转译由该密码指令所参照的该控制字组中的该数据区块大小字段。
其中该密码指令依据x86指令格式指定。
其中该密码指令隐含参照该微处理器的复数个缓存器。
其中该些缓存器还包括以下的某一种或其任意组合:
一第一缓存器,其中该第一缓存器的内容包含指向一第一内存地址的一第一指针,该第一内存地址依据欲完成的被指定的密码运算指定内存内一第一位置以存取复数个输入文字区块,该些输入文字区块的大小依据被指定的数据区块大小而设定;
一第二缓存器,其中该第二缓存器的内容包含指向一第二内存地址的一第二指针,该第二内存地址指定内存内一第二位置以储存相对复数个输出文字区块,相对该些输出文字区块依据复数个输入文字区块完成被指定的密码运算而产生,其中该些输入文字区块及该些输出文字区块的大小依据被指定的数据区块大小而设定;
一第三缓存器,其中该第三缓存器的内容指示复数个输入文字区块内复数个区块,其中该些输入文字区块的大小依据被指定数据区块大小而设定;
一第四缓存器,其中该第四缓存器的内容包含指向一第三内存地址的一第三指针,该第三内存地址指定内存内一第三位置以存取密码钥匙数据以用于完成被指定的密码运算;
一第五缓存器,其中该第五缓存器的内容包含指向一第四内存地址的一第四指针,该第四内存地址指定内存内一第四位置,该第四位置包含一初始向量位置,该初始向量位置的内容包含一初始向量或一初始向量等效物以用于完成被指定的密码运算。
根据本发明,还提供一种执行密码运算的装置,其中包含:
在一微处理器内的一密码单元,响应于微处理器接收一指令流内一单独、基元的密码指令,该密码单元被配置用以执行复数个密码运算其中之一,该密码指令由该微处理器的撷取逻辑单元从内存中撷取,而该密码指令指定复数个密码运算其中之一,以及在执行被指定的密码运算时,该密码指令参照一缓存器以参照由该缓存器的内容中的指针所指定的内存位置处的一控制字组,以用于完成被指定的密码运算,该控制字组指定被指定的密码运算的密码参数,该控制字组包含:数据区块大小字段,配置用以指定在被指定的密码运算执行期间使用的数据区块大小;并且该密码指令由该微处理器内的转译逻辑电路转译成一序列的微指令,该一序列的微指令指示该微处理器执行该复数个密码运算其中之一;该密码单元位于微处理器内的执行逻辑电路内,而执行逻辑电路位于微处理器中且耦合于转译逻辑电路并被配置为用于执行被指定的密码运算;以及
一区块大小逻辑电路,位于该微处理器中,操作耦合于该密码单元,用以在被指定的密码运算期间,指定密码单元根据该区块大小进行密码运算。
其中被指定的区块大小至少可以为下列可能变化的某一种:128位、192位以及256位。
其中该区块大小逻辑电路配置用以转译该密码指令所参照的该控制字组中的该数据区块大小字段。
其中该密码指令依据x86指令格式所指定。
本发明提供的一种在一装置执行密码运算的方法,包含:
响应于微处理器接收一单独、基元的密码指令,一密码单元被配置用以执行复数个密码运算其中之一,该密码单元包含于微处理器内的执行逻辑电路,该密码指令由微处理器的撷取逻辑单元从内存中撷取,其中该密码指令指定复数个密码运算其中之一,并且该密码指令在被指定的密码运算执行期间参照一缓存器以参照由该缓存器的内容中的指针所指定的内存位置处的一控制字组,以用于完成被指定的密码运算,该控制字组指定被指定的密码运算的密码参数,该控制字组包含:数据区块大小字段,配置用以指定在被指定的密码运算执行期间使用的数据区块大小;并且该微处理器中的转译逻辑电路转译该密码指令成一序列的微指令,该一序列的微指令指示该微处理器执行该复数个密码运算其中之一;执行逻辑电路位于微处理器中,耦合于转译逻辑电路并被配置用于执行被指定的密码运算;其中
在执行被指定的密码运算时,由位于该微处理器的密码单元根据被指定的数据区块大小执行被指定的密码运算。
如上所述的方法其特征在于,执行被指定的密码运算依据进阶加密标准的规则。
其中该接收步骤包含:指定该密码指令依据x86指令格式。
附图说明
图1为现今密码应用的方块图;
图2为执行密码运算技术的方块图;
图3为本发明实施例中执行密码运算的微处理器装置的方块图;
图4为本发明实施例中的基元(atomic)密码指令实施例的方块图;
图5为图4的基元密码指令区块加密模式字段值的范例的表格;
图6为本发明在x86兼容微处理器中的密码单元的方块图;
图7为图6的微处理器中指示密码次运算的范例微指令字段的方块图;
图8为图7的加载微指令暂存字段值格式的表格;
图9为图7的储存微指令暂存字段值格式的表格;
图10为本发明指定密码运算参数的控制字组格式范例的方块图;
图11为图10的控制字组数据大小字段值的表格;
图12为本发明的一较佳实施密码单元的方块图;
图13为本发明执行有关进阶加密标准(AES)算法密码运算的一区块加密逻辑电路实施例的方块图;
图14为本发明在一中断事件期间保留密码参数状态的方法流程图;以及
图15为本发明在一或多个中断事件时,在复数个输入数据区块执行一密码运算使用一使用者指定区块大小的方法流程图。
具体实施方式
以下所述为应用公知技术而制造或使用文中特定应用及需求知本发明所列举的例子。然而,实施例中所提及的各种修改是用以彰显与公知技术不同处,此一般原则可应用于其它实施例中。因此,本发明并非限定于特定实施例。
鉴于上述所讨论的密码运算及现今计算机系统用以加/解密数据的相关技术,这些技术及其相关限制将在图2中继续探讨,而接下来本发明也将根据图3到图15加以讨论。本发明提供一种在现今计算机系统中执行密码运算的装置及方法,其透过主要机制展现优秀的性能特征并且更满足上述所提及的目标,像是限制操作系统的干预、先前(legacy)架构的兼容性、算法及模式的可程序性、防止黑客入侵以及可测试性等等。
请参照图2,方块图200描绘现今计算机系统中执行密码运算的技术。方块图200包含一微处理器201,其撷取指令及从系统内存中一称为应用内存(application memory)203存取应用程序相关的数据,而程控及应用内存203中数据的存取通常是由属于系统内存保护范围的操作系统软件(operating system software)202所管理。如上所述,当一执行应用程序(例如:电子邮件程序或档案储存程序)要求执行密码运算时,此执行应用程序必须由指示(direct)微处理器201执行相当数量的指令以完成密码运算。这些指令可能是执行应用程序本身的子程序,也可能是连结到此执行应用程序的外挂应用程序,或者是由操作系统202所提供的服务。姑且不论它们的关联性,熟悉该项技术者可察知这些指令将驻于某些指定或分派的内存范围。为达到讨论目的,这些内存范围显示在应用内存203并且包含一密码钥匙产生应用程序(key generation application)204,其中密码钥匙产生应用程序204产生或接收一密码钥匙并且扩展此钥匙成一使用于密码回合运算中的钥匙排程(keyschedule)205。就多区块加密运算而言,区块加密应用程序(encryptionapplication)206被引动(invoke)。加密应用程序206执行存取明文(plaintext)区块210、钥匙排程205以及密码参数(cryptographic parameters)209的指令,其中密码参数209进一步指示明确的密码运算,如模式、钥匙排程位置等,且在要求特定模式时,加密应用程序206也可以存取初始向量(initializationvector)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。执行逻辑电路(executionlogic)328耦合到加载逻辑电路314并且执行由前面阶段传来的微指令所指定的运算。执行逻辑电路328包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以执行由指令指定的运算的等效组件。这些在执行逻辑电路328中执行运算的组件可能与在微处理器301中执行其它功能的电路、微码共享。执行逻辑电路包含密码单元(cryptography unit)316,此密码单元316接收从加载逻辑电路314被要求执行指定密码运算的数据。微指令指示密码单元316执行指定密码运算于复数个输入文字区块(input text)326以产生相对应复数个输出文字区块(outputtext)327。密码单元316包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以执行密码运算的等效组件。这些在密码单元316中执行运算的组件可能与在微处理器301中执行其它功能的电路、微码共享。在一实施例中,密码单元316并列操作与在执行逻辑电路328内的其它执行单元(未绘出),例如整数单元、浮点数单元等。在本应用范围一“单元”的实施包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以执行指定功能或指定运算的等效组件。这些在特定单元中执行指定功能或指定运算的组件可能与在微处理器301中执行其它功能的电路、微码共享。例如:一实施例中,整数单元包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以执行整数指令的等效组件;一浮点单元包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以执行浮点指令的等效组件;则在整数单元中执行整数指令的组件可能与在浮点单元中执行浮点指令的其它电路、微码等共享。在一与x86架构兼容的实施例中,密码单元316与整数单元、浮点单元、多媒体延伸集(Mathematic Matrix Extension,MMX)单元、串流延伸集(Streaming SIMDExtensions,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(参照用以说明的密码指令(XCRYPTinstruction)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 controlword)323、一初始密码钥匙(initial cryptographic key)324或一钥匙排程(keyschedule)324、一初始向量(initialization vector)325(如果需要)、运算用的输入文字(input text)326、以及输出文字(output text)327。在执行密码指令322之前须先初始化缓存器308-312,因为密码指令322与一附加于缓存器308-312的含有区块计数的缓存器313,其中区块计数在输入文字326区块加密或解密数据区块的数目。因此转译逻辑电路303从撷取逻辑电路302取回密码指令并且转译成一序列相对应的微指令以指示微处理器301执行指定的密码运算。一第一复数个微指令305-306于相对应微指令序列中,指示密码单元316从加载逻辑电路314加载数据,并且开始执行指定数目的密码回合以产生相对应区块的输出数据,提供由数据快取315储存于系统内存321中的输出文字327给储存逻辑电路317。一第二复数个微指令(未绘出)于相对应微指令序列中,指示在微处理器301中其它执行单元(未绘出)执行其它未完成指定密码运算所需的运算,例如:管理包含暂时结果及计数的非架构缓存器(未绘出)、更新输出及输入文字指针缓存器311-312、更新输入文字区块326的加密/解密初始向量指针缓存器(initialization vector pointer register)310(如果需要)、处理未处理的中断等等。在一实施例中,缓存器308-313是架构性缓存器。架构性缓存器308-313是为实现特定微处理器的指令集架构(instructionset architecture,ISA)中所定义的一种缓存器。
在一实施例中,密码单元316分成复数个阶段因此允许相继输入文字区块326的管线处理。
图3的方块图300教示本发明所需的组件,因此省略许多在现今微处理器301中的逻辑以求图标的简洁。然而,熟悉该项技术者可察知现今特定实现的微处理器301包含许多阶段及逻辑电路,在此为图标的简洁而将其部分合并。例如:加载逻辑电路314在一快取线对准阶段之后可以嵌入随一快取接口阶段的一地址产生阶段。然而重要且应注意的是,在复数个输入文字区块326上的一完全密码运算,是根据本发明由一单一指令322的运算对操作系统320的考虑系显而易见,并且单一指令322的执行是由与微处理器301中其它执行单元并联操作及协调的密码单元316所完成。本发明密码单元316在实施组态中的替代实施例类似前几年微处理器中浮点单元的硬件。密码单元316的操作及相关密码指令322完全兼容先前操作系统及程序同时操作,并且也将在之后更加详细的探讨。
请参照图4,其为本发明的一基元(atomic)密码指令400实施例的方块图。密码指令400包含一选项前置字段(optional prefix field)401、一重复前置字段(repeat prefix field)402、一运算码字段(opcode field)403、一区块密码模式(block cipher mode)字段404。在一实施例中,字段401-404的内容相称于x86指令集架构,而其替代的实施例可考虑兼容于其它指令集架构。
操作上,选项前置字段401在许多指令集架构中是用以致能(enable)或禁能(disable)部分主要微处理器的处理特征,像是指示16位或32位的运算、指示处理或存取特定的内存区段等。重复前置字段402是用以指示由密码指令400所指定的密码运算在复数个输入数据区块(如明文或密文)完成。重复前置字段402也隐示一相称微处理器利用其内复数个架构缓存器的内容当成指针指到系统内存中含有完成指定密码运算所需参数的位置。如上所述,在一x86相容实施例中,重复前置字段402的值是0xF3,并且根据x86架构协议,密码指令与x86重复字符串指令,如REP.MOV,在形式上非常相似。例如:当本发明由一x86兼容微处理器实施例执行时,重复前置字段402参照一储存在架构缓存器ECX中的区块计数变量、一储存在缓存器ESI中的来源地址指针(指到输入数据以供密码运算)以及一储存在缓存器EDI中的目的地址指针(指到内存中的输出数据)。在x86相容的一实施例中,本发明更扩展传统重复字符串的指令的概念成为更可参照一储存在缓存器EDX中的控制字组指针、一储存在缓存器EBX中的密码钥匙指针以及一储存在缓存器EAX中对一初始向量的指针(如果指定密码模式要求)。
运算码字段403指定微处理器完成一密码运算,此密码运算由控制字组指标所隐示参照储存在内存中的一控制字组。本发明认为运算码值的较佳选择是存在指令集架构中一空闲或未使用的运算码值,由此在一相称微处理器中保留与先前操作系统及应用软件的兼容。例如:如上所述,一x86兼容实施例的运算码字段403使用0x0FA7以指示执行指定的密码运算。区块密码模式字段404指示特定的区块密码模式以供特定的密码运算使用,并且将参照图5加以探讨。
图5是图4基元密码运算指令的区块密码模式字段范例值的表格500。值0xC8指示使用电子密码本方式完成密码运算;值0xD0指示使用密码区块链接方式完成密码运算;值0xE0指示使用密码反馈方式完成密码运算;以及值0xE8指示使用输出反馈方式完成密码运算。区块密码模式字段404其它所有的值系保留,而这些模式描述于上述所提及的FIPS的文件中。
请参照图6,其为本发明一较佳实施例在一x86兼容微处理器600中较详细的密码单元617的实施例方块图。微处理器600包含撷取逻辑电路(fetchlogic)601用以从内存(未绘出)撷取指令以供执行。撷取逻辑电路601耦合到转译逻辑电路(translation logic)602,而转译逻辑电路602包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以转译指令成为相关序列微指令的等效组件。这些在转译逻辑电路602中执行转译的组件可能与在微处理器600中执行其它功能的电路、微码共享。转译逻辑电路602包含一转译器(translator)603,而此转译器603耦合到一微码只读存储器(microcode ROM)604。中断逻辑电路(interrupt logic)626由总线634耦合到转译逻辑电路602。复数个软件及硬件中断信号627由指示未处理中断给转译逻辑电路602的中断逻辑电路626处理。转译逻辑电路602耦合到微处理器600相继的阶段包含一暂存阶段(register stage)605、寻址阶段(address stage)606、加载阶段(load stage)607、执行阶段(execution stage)608、储存阶段(store stage)618、以及写回阶段(write back stage)619。每一相继阶段包含逻辑电路以完成由撷取逻辑电路601所提供相关指令执行的特定功能,如先前在图3的微处理器中所讨论参照类似名称的组件。描绘在图6中x86兼容微处理器600的实施例是以在执行阶段608中的执行逻辑电路(executionlogic)632为特征,其包含平行执行单元610、612、614、616、617。一整数单元610从微指令队列609接收执行整数微指令;一浮点单元612从微指令队列611接收执行浮点数微指令;一多媒体延伸集单元614从微指令队列613接收执行多媒体延伸集微指令;一串流延伸集单元616从微指令队列615接收执行串流延伸集微指令。在本发明的一x86实施例,一密码单元617由一加载总线620、一暂停(stall)信号总线621以及一储存总线622耦合到串流延伸集单元617。密码单元617共享串流延伸集单元的微指令队列615。一替代实施例可将密码单元617独立并联操作像是单元610、612以及614。整数单元610耦合到一x86旗标(EFLAGS)缓存器624,此旗标缓存器包含一X位625,而此X位625的状态配置用以指示密码运算是否正在处理。在一实施例中,此X位625是一x86旗标缓存器624的第30位。此外,整数单元610存取一机器特殊缓存器(machine specific register)628以评估一E位629的状态,而此E位629的状态指示密码单元617是否位于微处理器600。整数单元610也存取一D位631于一特征控制缓存器(feature controlregister)630,以致能或禁能密码单元617。如图3的微处理器301实施例,图6的微处理器600以必要组件为特征教示本发明一x86兼容实施例的内容,并且为求附图简洁而合并或省略处理器的其它组件。熟悉该项技术者可察觉用以完全接口的其它组件,像是数据快取、总线接口单元、频率产生以及分配逻辑电路等均未绘出。
在操作中,指令是由撷取逻辑电路601从内存(未绘出)撷取并且与一频率信号(未绘出)同步提供给转译逻辑电路602。转译逻辑电路602转译每个指令成为一相对应序列的微指令,其与频率信号同步持续地提供给微处理器600的后续阶段605-608、618、619。在一序列微指令中的每一个微指令指示一个次运算的执行,而次运算被要求完成由一相对指令所指定的一整体运算,例如寻址阶段606产生一地址、暂存阶段605从指定缓存器(未绘出)恢复的两操作数在整数单元内相加、由储存阶段618储存执行单元610、612、614、616、617其中之一所产生的结果于内存等。根据转译中的指令,转译逻辑电路602利用转译器603直接产生一序列的微指令,或是从微码只读存储器604撷取此序列,或是利用转译器603直接产生此序列的部分并且从微码只读存储器604撷取此序列剩下的部分。微指令透过微处理器600的相继阶段605-608、618、619持续地与频率同步进行。当微指令到达执行阶段608,执行逻辑电路632连同其操作数(在暂存阶段605从缓存器所恢复,或在寻址阶段606由逻辑电路所产生,或由加载逻辑电路从数据快取所恢复),由放置微指令在一对应的微指令队列609、611、613、615而将其依指定路线传送给一指定执行单元610、612、614、616、617。执行单元610、612、614、616、617执行微指令并提供结果给储存阶段618。在一实施例,微指令包含字段指示其是否可以与其它运算并列执行。
响应先前所述的撷取一个密码指令,转译逻辑电路602产生相关微指令,其指示在微处理器600后继阶段605-608、618、619中的逻辑电路执行指定的密码运算。据此,一第一复数个相关微指令直接依路径传送至密码单元617并且指示密码单元617由加载总线620加载数据,或加载一区块的输入数据并且开始执行指定数目的密码回合以产生一区块的输出数据,或由储存阶段618透过储存总线622将所产生的区块输出数据储存于内存。一第二复数个相关微指令依其路径传送至其它实行单元610、612、614、616以执行其它次运算,其等次运算是完成指定密码运算的必需,例如E位629的测试、致能D位631、设定X位625以指示密码操作进行中、在暂存阶段605更新暂存(例如,计数缓存器、输入文字指针缓存器、输出文字指针缓存器)、由中断逻辑电路626所指示的中断信号627的处理等。相关微指令是用以提供指定密码运算的最佳执行于多区块输入数据,其由与密码单元微指令序列中的整数单元微指令成为接口,因此整数运算可与密码单元运算并行完成。微指令系包含于相关微指令以允许或并从待处理中断信号627恢复。因为所有对密码参数的指针与数据提供于x86架构缓存器,当执行中断时,其状态被保存,并且当从中断返回,这些状态被恢复。当从中断返回,微指令测试X位625的状态以决定是否一密码运算在进行。如果是,当中断发生时,此运算重复于处理中的特别输入数据区块。相关微指令用以允许在处理中断信号627之前,更新在一序列输入文字区块上的一序列密码操作的指针缓存器及中间的结果。
请参照图7,其为图6的微处理器中指示密码次运算的范例微指令700字段的方块图。微指令700包含一微运算码字段(micro opcode field)701,一数据缓存器字段(data register field)702,以及一缓存器字段(register field)703。微运算码字段701指定执行一特定次运算并且指定逻辑电路于微处理器600中至少一阶段以执行次运算。微运算码字段701的指定值指定根据本发明的一密码单元执行指示的微指令。在一实施例,有两个指定的值。一第一值加载(XLOAD)指定数据从一内存位置恢复,而其地址由数据缓存器字段702内容所指称的一架构缓存器的内容所指定。这数据被加载到由缓存器字段703内容所具体指定密码单元内的一缓存器。这恢复的数据(例如:密码钥匙数据、控制字组、输入文字数据、初始向量)提供给密码单元。微运算码字段701的第二值储存(XSTOR)指出由密码单元所产生的数据储存在一记忆位置,而其地址由数据缓存器字段702内容所指称的一架构缓存器的内容所指定。在密码单元一多阶段实施例,缓存器字段703的内容指示复数个输出数据区块的一储存于内存。输出数据区块由数据域位(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、一数据区块大小(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的特定值具体指示数据加密标准算法、三重数据加密标准算法或者进阶加密标准算法如先前所述的讨论。替代实施例可考虑其它密码算法,例如RijndaelCipher、Twofish Cipher等。回合计算字段1008的内容指示一数量的密码回合,其根据具体指示的算法完成于每一输入文字区块。虽然上述提及的标准指示每一输入文字区块固定前置数量的密码回合,但回合计算字段1008允许一程序设计者从标准指示修改回合的数量。在一实施例中,程序设计者可指定每一区块从0-15回合。最后,中间结果字段1005指示是否一输入文字区块的加密/解密,是根据演算字段1007所指定的密码算法,以回合计算字段1008所指定回合的数量执行,或者加密/解密是根据演算字段1007所指定的密码算法,以回合计算字段1008所指定回合的数量执行,而其最终回合的执行代表一中间结果而不是一最终结果。熟悉该项技术者可察知许多密码算法除了最终回合的次运算之外是执行相同的次运算于每一回合。因此程序设计中间结果字段1005提供中间结果而不是最后结果,由此,允许程序设计者可核对算法实现的中间的步骤。例如:获得增加的中间值以核对算法实行,假设,执行一回合的加密于一文字区块,然后执行两回合于相同文字区块,然后三回合等。提供可程序化回合及中间值结果的功能可让使用者检查密码执行、除错以及达到改变钥匙结构及回合计数。
请参照图11,其为图10中控制字组1000的数据区块大小字段1002范例值的表格1100。数据区块大小字段1002的000值指示一计算装置依据本发明执行使用一128位区块大小的输入以及输出区块的密码运算,其中这些区块由内存提供,且分别由一输入指针缓存器及一输出指针缓存器的内容所指到。数据区块大小字段1002的001值指示此计算装置执行使用一192位区块大小的输入以及输出区块的密码运算。数据区块大小字段1002的010值指示此计算装置执行使用一256位区块大小的输入以及输出区块的密码运算。数据区块大小字段1002的所有其余值保留。
请参照图12,其为本发明的一密码单元1200的较佳实施例方块图。密码单元1200包含一微指令缓存器(micro opcode register)1203,此微指令缓存器1203透过一微指令总线1214接收密码微指令(例如加载与储存微指令)。密码单元1200也包含一控制字组缓存器(control word register)1204、一第一输入(输入-0)缓存器1205以及一第二输入(输入-1)缓存器1206、一第一钥匙(钥匙-0)缓存器1207以及一第二钥匙(钥匙-1)缓存器1208。数据透过一加载总线(load bus)1211提供给缓存器1204-1208,如微指令缓存器1203中一加载微指令内容所指定。密码单元1200也包含区块密码逻辑电路1201,此区块密码逻辑电路1201耦合到所有的缓存器1203-1208以及也耦合到密码钥匙随机存取内存(RAM)1201。区块密码逻辑电路1201提供一暂停信号(stallsignal)1213并且也提供区块结果给一第一输出(输出-0)缓存器1209以及一第二输出(输出-1)缓存器1210。输出缓存器1209-1210透过一储存总线1212将内容依指定路径传送给在一相称微处理器中的相继阶段。在一实施例中,微指令缓存器1203是32位大小;缓存器1204、1207及1208是128位大小;以及缓存器1205-1206及1209-1210系256位大小。
在操作中,密码微指令与数据一起连续提供给微指令缓存器1203,其中数据系指定给控制字组缓存器1204、或输入缓存器1205-1206之一、或钥匙缓存器1207-1208之一。在参照图8及图9讨论的实施例中,控制字组由一加载微指令加载到控制字组缓存器1204。因此密码钥匙或钥匙排程经由连续加载微指令加载。当一128位密码钥匙加载时,一加载微指令因此提供给指定的钥匙-0缓存器1207。当一大于128位密码钥匙加载时,一加载微指令因此提供给指定的钥匙-0缓存器1207,并且连同一加载微指令提供给指定的钥匙-1缓存器1208。当一使用者产生的钥匙排程加载时,连续加载微指令提供给指定钥匙-0缓存器1207。钥匙排程中的每一钥匙被加载且依序被放置在钥匙随机存取内存1202以供其相对应的密码回合使用。随此,输入文字数据(如果没有要求一初始向量)加载到输入-1缓存器1206,如果要求一初始向量,则经由一加载微指令加载到输入-1缓存器1206。对输入-0缓存器1205的一加载微指令指示密码单元以加载输入文字数据给输入-0缓存器1205,并且开始在输入-0缓存器1205内的输入文字数据执行密码回合,其根据控制字组缓存器1204的内容所提供的参数使用在输入-1或在两输入缓存器1205-1206(当输入数据系管线处理)中的初始向量。根据收到指定输入-0缓存器1205的加载微指令,区块密码逻辑电路1201开始执行由控制字组内容所指定的密码运算。当单一密码钥匙要求扩展,区决密码逻辑电路1201产生钥匙排程中的每一钥匙并将以储存在钥匙随机存取内存1202。姑且不论是否由区块密码逻辑电路1201产生一钥匙排程或者是从内存中加载钥匙排程,第一回合的钥匙是快取储存于区块密码逻辑1201中以使得第一区块密码回合可以不用存取钥匙随机存取内存1202而处理。一旦初始化后,区块密码逻辑电路1201继续执行指定的密码运算于至少一个输入文字区块直到运算完成;其连续从钥匙随机存取内存1202撷取回合钥匙如所应用的密码算法所要求。密码单元1200执行一指定区块密码运算于指定的输入文字区块,而相继的输入文字区块透过相继对应的加载及储存微指令加密/解密。当一储存微指令执行时,如果指定输出数据(例如输出-0或输出-1)尚未完全产生,则区块密码逻辑电路1201显示暂停信号1213。一旦输出数据已产生且放置于相对应的输出缓存器1209-1210时,缓存器1209-1210的内容接着传送到储存总线1212。
请参照图13,其为本发明执行有关进阶加密标准算法密码运算的一区块密码逻辑电路1300实施例的方块图。区块密码逻辑电路1300包含一回合引擎(round engine)1320,此回合引擎1320透过总线1311-1314及总线1316-1318耦合到一回合引擎控制器(round engine controller)1310。回合引擎控制器1310包含一区块大小控制器(block size controller)1330,并且存取一微指令缓存器(micro instruction register)1301、控制字组缓存器(control wordregister)1302、第一钥匙(钥匙-0)缓存器1303以及第二钥匙(钥匙-1)缓存器1304以存取钥匙数据、微指令以及所指示密码运算的参数。输入缓存器1305-1306的内容提供给回合引擎1320并且回合引擎1320提供相对应输出文字给输出缓存器1307-1308。输出缓存器1307-1308透过总线1316-1317也耦合到回合引擎控制器1310,以致能回合引擎控制器存取每一相继密码回合的结果,而此结果透过NEXTIN总线1318提供给回合引擎1320下一密码回合。钥匙随机存取内存(未绘出)中的密码钥匙系透过钥匙随机存取内存总线1315存取。加密/解密总线(ENC/DEC bus)1311的信号指示回合引擎利用次运算执行不是加密(例如S-Box)就是解密(例如反向S-Box)。回合计算总线(RNDCON bus)1312的内容指示回合引擎1320执行不是一第一进阶加密标准回合、一中间进阶加密标准回合就是一最后进阶加密标准回合。响应指示一密码钥匙自动扩展的一控制字组内一钥匙产生字段内容,此钥匙排程控制器1330显示钥匙产生总线(GENKEY bus)1314的信号以指示此回合引擎1320根据钥匙总线1313所提供的钥匙产生一钥匙排程。钥匙总线1313亦用以提供每一回合钥匙给回合引擎1320在其对应的回合执行时。响应经由控制字组缓存器1302提供给回合引擎控制器1310的一控制字组内一数据区块大小字段内容,此区块大小控制器(block size controller)1330设定区块大小总线(BLKSIZE bus)1319的值以指示加密以及解密运算期间所使用输入及输出文字区块大小。在一实施例中,区块大小总线1319的值指示128位区块、192位区块或256位区块。
回合引擎1320包含第一钥匙互斥或(XOR)逻辑电路1321,此第一钥匙互斥或逻辑电路1321耦合到一第一缓存器(暂存-0)1322,此第一缓存器1322耦合到S-Box逻辑电路1323,此S-Box逻辑电路1323耦合到移列(Shift Row)逻辑电路1324,此移列逻辑电路1324耦合到一第二缓存器(暂存-1)1325,此第二缓存器1325耦合到混栏(Mix Colum)逻辑电路1326,此混栏逻辑电路1326耦合到一第三缓存器(暂存-2)1327。第一钥匙互斥或逻辑电路1321、S-Box逻辑电路1323、移列逻辑电路1324以及混栏逻辑电路1326依据区块大小总线1319的值配置用以执行次运算于输入文字数据,像是具体于先前讨论的进阶加密标准FIPS标准。混栏逻辑电路1326在中间回合期间于要求使用藉由钥匙总线1313所提供的回合钥匙时,附加配置以执行进阶加密标准互斥或功能于输入数据。第一钥匙互斥或逻辑电路1321、S-Box逻辑电路1323、移列逻辑电路1324以及混栏逻辑电路1326在由加密/解密总线(ENC/DEC bus)1311的状态指示时,也配置用以执行其相对的反向进阶加密标准次运算于解密期间。熟悉该项技术者可察知中间回合数据是根据控制字组缓存器1302内容所指定的具体区块加密模式而回馈给回合引擎1320。初始向量数据(如果要求)透过NEXTIN总线1318提供给回合引擎1320。
在图13所示的实施例中,回合引擎分为两阶段:一第一阶段介于第一缓存器(暂存-0)1322与第二缓存器(暂存-1)1325以及一第二阶段介于第二缓存器(暂存-1)1325与第三缓存器(暂存-2)1327。中间回合数据同步一频率信号(未绘出)于阶段间管线处理。当一区块的输入数据完成密码运算,其关联的输出数据放置于相对应输出缓存器1307-1308。一储存微指令的执行使得所指定的输出缓存器1307-1308的内容提供至储存总线(未绘出)。
请参照图14,其为本发明一实施例在一中断事件期间保留密码参数的状态的方法流程图。当一微处理器依据本发明执行一指令流时,方法流程从步骤1402开始。上述的指令流程并不须包含一像此描述的密码指令。然后方法流程处理至决定步骤1404。
在决定步骤1404,决定是否由一指令流(中断处理程序)处理一要求改变指令流的中断事件(例如可屏蔽式中断、非屏蔽式中断、分页错误(page fault)、工作切换(task switch)等)。若是,方法流程处理至步骤1406;若否,方法流程跳至步骤1404,其指令执行继续直到一中断事件产生。
在步骤1406,因为一中断事件已经发生,在传送控制程序至一对应中断处理程序之前,中断逻辑电路依据本发明指示清除一旗标缓存器中的X位。X位的清除确保从中断处理程序返回时,如果一区块密码运算进行中,其指示排除至少一个中断事件,并指示控制字组数据以及钥匙数据,必须在输入指针缓存器的内容目前所指的输入数据区块继续区块密码运算之前重新加载。然后处理至步骤1408。
在步骤1408,所有架构缓存器包含本发明区块密码运算执行的相关指针及计数均储存于内存。熟悉该项技术者可知架构缓存器的储存是在转移控制权给中断处例程序之前完成于目前数据计算装置。因此本发明一实施例中探究目前数据架构,以提供中断事件执行输出量的透明度。在缓存器储存之后,方法流程处理至步骤1410。
在步骤1410,程序流程转移至中断处理程序。因此方法流程处理至步骤1412。
在步骤1412,此方法流程完成结束。熟悉该项技术者可察知图14的方法依据中断处理程序的返回是从步骤1402再开始。
请参照图15,其为本发明一较佳实施例中在至少一个中断事件时,在复数个输入数据区块执行一密码运算并使用一使用者指定区块大小的方法流程图1500。为求图标的简洁,省略依据区块密码模式执行指定密码运算的流程,其中区块密码模式要求区块间初始向量等效物的更新以及储存(例如输出反馈模式、密码反馈模式)。然而本发明的方法包含其它的区块密码模式。
方法流程从步骤1502开始,其中依据本发明的一密码指令指示一密码运算开始执行。上述的密码指令执行可以第一执行或由于一中断事件的中断执行而跟随第一执行之后执行,由此在中断处理程序执行完成后,将程控权转移回密码指令。流程处理至步骤1504。
在步骤1504,加载内存中的一数据区块并且开始一指定密码运算,其中上述的区块数据是由本发明实施例的一输入指针缓存器的内容所指定。在一设定实施例中,用以加载数据区块的区块大小是128位。因此,当使用区块大小并非为128位时,在发布密码指令前,须要求指令执行以清除X位。在一x86兼容实施例中,其利用一x86旗标缓存器中的第30位,此X位可以由依序执行一PUSHFD指令与一POPFD指令而清除。然而熟悉该项技术者可得知在另一实施例中,其它用以清除X位的指令。在一实施例中,指定的密码运算是依据进阶加密标准规则开始执行。然后方法流程处理至决定步骤1506。
在决定步骤1506,决定是否设定一旗标缓存器中的一X位。如果设定X位,其指示目前依据本发明加载一密码单元的控制字组及钥匙排程是有效(valid)。如果清除X位,其指示目前加载上述的密码单元的控制字组及钥匙排程是无效(invalid)。如上述参照图14的讨论,当一中断事件产生时,X位清除。如果X位设定,方法流程处理至步骤1524;如果X位清除,方法流程处理至步骤1508。
在步骤1508,因为一清除的X位是指示不是一中断事件产生就是一新的控制字组及/或钥匙数据加载,因此从内存加载一控制字组。在一实施例中,加载控制字组停止密码单元执行上述的步骤1504所提及的密码运算。在此实施例中的步骤1504开始一密码运算,考虑到使用电子密码本模式的多128位区块的最佳化,其由假设使用目前加载的控制字组及钥匙数据,以及假设在128位输入区块执行电子密码本模式是最为普遍使用的区块密码模式。根据上述,在决定步骤1506检查X位的状态重置前,加载目前输入数据区块并且开始密码运算。然后方法流程处理至决定步骤1514。
在决定步骤1514,评估在步骤1508所撷取(retrieve)控制字组中的数据区块大小字段以决定在指定密码运算执行期间所使用的输入及输出文字区块的大小。如果资料区块大小字段的值指定192位区块,则方法流程处理至步骤1510。如果资料区块大小字段的值指定128位区块,则方法流程处理至步骤1516。如果资料区块大小字段的值指定256位区块,则方法流程处理至步骤1518。
在步骤1510,本发明的区块密码逻辑电路中的区块大小总线设定用以指示其回合引擎执行192位数据区块的密码运算。然后方法流程处理至步骤1512。
在步骤1512,从内存加载密码钥匙数据。依据控制字组中的钥匙产生字段及钥匙大小字段的状态,钥匙数据不是全部从内存加载(例如:一使用者产生钥匙排程),就是加载一初始钥匙并扩展成一钥匙排程。然后方法流程处理至步骤1522。
在步骤1516,因为区块密码逻辑电路中的区块大小总线预设为128位数据区块,因此必须参照如上述的步骤1512所述的加载/扩展密码钥匙数据。然后方法流程处理至步骤1522。
在步骤1518,本发明的区块密码逻辑电路中的区决大小总线是设定用以指示其回合引擎执行256位数据区块的密码运算。然后方法流程处理至步骤1520。
在步骤1520,参照上述的步骤1512所述的加载/扩展密码钥匙数据。然后方法流程处理至步骤1522。
在步骤1518,输入区块参照步骤1504依据控制字组中数据区块大小字段的值所指定的区块大小再次加载,且依据新加载的控制字组以及钥匙排程开始密码运算。然后方法流程处理至步骤1524。
在步骤1524,产生大小对应加载的输入区块的一输出区块,对加密而言,输入区块是一明文区块而输出区块是一对应的密文区块;对解密而言,输入区块是一密文区块而输出区块是一对应的明文区块。然后方法流程处理至步骤1526。
在步骤1526,将产生的输出区块储存于内存。然后方法流程处理至步骤1528。
在步骤1528,输入及输出区块指针缓存器的内容依据控制字组中数据区块大小字段的值而修改以指到下一输入及输出数据区块。另外,修改区块计数缓存器的内容以指示目前输入数据区块完成的密码运算。在参照图15所讨论的一实施例,区块计数缓存器是递减。然而,熟悉该项技术者可在另一实施例中,思量处理及测试区块计数缓存器的内容以考虑输入文字区块的管线执行。然后方法流程处理至步骤1530。
在决定步骤1530,决定是否继续运算一输入数据区块。在用以说明具特征的实施例中,评估区决计数器是否等于零而决定。如果没有剩下的区块可供运算,则方法流程处理至步骤1534;如果剩下区块可供运算,则方法流程处理至步骤1532。
在步骤1532,加载下一输入数据区块,如输入指针缓存器的内容所指。然后方法流程处理至步骤1524。
在步骤1530,此方法流程完成结束。
虽然本发明及其目的、特征与优点已详细描述,但其它实施例也应包含于本发明。例如,本发明曾根据兼容x86架构的实施例讨论长度,然而这些讨论已提供此类的方式,因为x86架构容易理解且提供足够的方式以教示本发明。然而本发明包含相称于其它指令集架构的实施例,例如:PowerPC、MIPS及诸如此类等,此外还有全新的指令集架构。
本发明还包含计算机系统中微处理器外其它组件的密码运算的执行,例如,根据本发明的密码指令可以容易地被应用在一密码单元的一实施例,此实施例并非如微处理器部分相同的整合电路,其执行方式如部分计算机系统。本发明的如此实施例是为了并入围绕在微处理器的芯片组(如北桥、南桥),或当一处理器用于执行密码运算时,其密码指令由主要微处理器移转(hand off)给此处理器。本发明可应用于内嵌控制器、工业控制器、信号处理器、阵列处理机以及任何相似处理数据的装置。本发明也包含一实施例仅含有执行密码运算所必需的组件。如此的内嵌装置不仅执行密码运算,也确实提供低成本、低电源,例如通信系统中的加密/解密处理器。为求简明,本发明将这些替代的处理组件参照成上述的处理器。
此外,虽然本发明提及128位区块,但是许多不同区块的大小可以透过改变缓存器的大小而被应用,其中缓存器传送输入数据、输出数据、钥匙以及控制字组。
并且,虽然本应用显著以数据加密标准、三重数据加密标准以及进阶加密标准算法为其特征,但本发明也包含较少人知的区块密码算法,例如:MARS密码、Rijndael密码、Twofish密码、Blowfish密码、Serpent密码以及RC6密码。足以理解的是,本发明提供在微处理器中用于区块密码的装置及支持的算法,其基元区块密码运算可透过单一指令的执行而引动。
并且,虽然本发明在此以区块密码演算及其相关技术以执行区块密码功能为特征,但是除了区块密码之外其它形式的密码也包含于本发明应用范围内。可足以观察的是,提供一单一指令,由此,使用者可指示一相称的微处理器执行一密码运算,例如:加密或解密,其中微处理器包含一密码单元,此密码单元依指示完成指令所指定的密码功能。
并且,在此所讨论的回合引擎提供一两阶装置可管线处理两区块的输入数据,但其它实施例也可考虑多于两阶段装置。阶段的分配对支持更多输入数据区块的管线处理,将发展协调相称微处理器中其它阶段的分配。
最后,虽然本发明具体讨论支持复数个算法的一单独密码单元,但是本发明也提供理解在一相称微处理器中与其它执行单元并列操作耦合的多密码单元,而每一多密码单元是配置用以执行一具体指定的密码演算,例如:一第一单元是配置用以执行进阶加密标准算法、一第二单元是配置用以执行数据加密标准算法等。
以上所述仅为本发明的较佳实施例而已,并非用以限定本发明的申请专利范围;凡其它为脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在本发明的申请专利范围内。
Claims (14)
1.一种执行密码运算的装置,包含:
一撷取逻辑电路,位于一微处理器中,用于撷取一单独、基元的密码指令并将其当成执行于该微处理器一指令流的一部分,其中该密码指令指定复数个密码运算其中之一,并且该密码指令参照一缓存器以参照由该缓存器的内容中的指针所指定的内存位置处的一控制字组,以用于完成被指定的密码运算,该控制字组指定被指定的密码运算的密码参数,该控制字组包含:数据区块大小字段,配置用以指定在被指定的密码运算执行期间使用的数据区块大小;
一转译逻辑电路,位于该微处理器中,耦合于该撷取逻辑电路,用于将该密码指令转译成一序列的微指令,该一序列的微指令指示该微处理器执行该密码运算;以及
一执行逻辑电路,位于该微处理器中,耦合于该转译逻辑电路,并且配置用以执行被指定的密码运算,该执行逻辑电路包含一密码单元,该密码单元包含一区块大小控制器,其中:
所述区块大小控制器,在被指定的密码运算执行期间,配置用以使用被指定的数据区块大小;以及
所述密码单元,配置用以对每一输入文字区块根据指定的数据区块大小执行复数个密码回合以产生每一相对输出文字区块,其中被指定的数据区块大小由该控制字组指定,且该控制字组被提供给该密码单元的该区块大小控制器。
2.如权利要求1所述的装置,其特征在于,其中该密码运算具有下列功能的某一种:
一加密运算,该加密运算包含复数个明文区块的加密以产生相对复数个密文区块;以及
一解密运算,该解密运算包含复数个密文区块的解密,以产生相对复数个明文区块。
3.如权利要求1所述的装置,其特征在于,其中被指定数据区块大小至少为下列可能变化的某一种:
128位、192位以及256位。
4.如权利要求1所述的装置,其特征在于,其中该区块大小控制器配置用以转译由该密码指令所参照的该控制字组中的该数据区块大小字段。
5.如权利要求1所述的装置,其特征在于,其中该密码指令依据x86指令格式指定。
6.如权利要求1所述的装置,其特征在于,其中该密码指令隐含参照该微处理器的复数个缓存器。
7.如权利要求6所述的装置,其特征在于,其中该些缓存器还包括以下的某一种或其任意组合:
一第一缓存器,其中该第一缓存器的内容包含指向一第一内存地址的一第一指针,该第一内存地址依据欲完成的被指定的密码运算指定内存内一第一位置以存取复数个输入文字区块,该些输入文字区块的大小依据被指定的数据区块大小而设定;
一第二缓存器,其中该第二缓存器的内容包含指向一第二内存地址的一第二指针,该第二内存地址指定内存内一第二位置以储存相对复数个输出文字区块,相对该些输出文字区块依据复数个输入文字区块完成被指定的密码运算而产生,其中该些输入文字区块及该些输出文字区块的大小依据被指定的数据区块大小而设定;
一第三缓存器,其中该第三缓存器的内容指示复数个输入文字区块内复数个区块,其中该些输入文字区块的大小依据被指定数据区块大小而设定;
一第四缓存器,其中该第四缓存器的内容包含指向一第三内存地址的一第三指针,该第三内存地址指定内存内一第三位置以存取密码钥匙数据以用于完成被指定的密码运算;
一第五缓存器,其中该第五缓存器的内容包含指向一第四内存地址的一第四指针,该第四内存地址指定内存内一第四位置,该第四位置包含一初始向量位置,该初始向量位置的内容包含一初始向量或一初始向量等效物以用于完成被指定的密码运算。
8.一种执行密码运算的装置,包含:
在一微处理器内的一密码单元,响应于微处理器接收一指令流内一单独、基元的密码指令,该密码单元被配置用以执行复数个密码运算其中之一,该密码指令由该微处理器的撷取逻辑单元从内存中撷取,而该密码指令指定复数个密码运算其中之一,以及在执行被指定的密码运算时,该密码指令参照一缓存器以参照由该缓存器的内容中的指针所指定的内存位置处的一控制字组,以用于完成被指定的密码运算,该控制字组指定被指定的密码运算的密码参数,该控制字组包含:数据区块大小字段,配置用以指定在被指定的密码运算执行期间使用的数据区块大小;并且该密码指令由该微处理器内的转译逻辑电路转译成一序列的微指令,该一序列的微指令指示该微处理器执行该复数个密码运算其中之一;该密码单元位于微处理器内的执行逻辑电路内,而执行逻辑电路位于微处理器中且耦合于转译逻辑电路并被配置用于执行被指定的密码运算;以及
一区块大小逻辑电路,位于该微处理器中,操作耦合于该密码单元,用以在被指定的密码运算期间,指定密码单元根据该区块大小进行密码运算。
9.如权利要求8所述的装置,其特征在于,其中被指定的区块大小至少为下列可能变化的某一种:
128位、192位以及256位。
10.如权利要求8所述的装置,其特征在于,其中该区块大小逻辑电路配置用以转译该密码指令所参照的该控制字组中的该数据区块大小字段。
11.如权利要求8所述的装置,其特征在于,其中该密码指令依据x86指令格式所指定。
12.一种在一装置执行密码运算的方法,包含:
响应于微处理器接收一单独、基元的密码指令,一密码单元被配置用以执行复数个密码运算其中之一,该密码单元包含于微处理器内的执行逻辑电路,该密码指令由微处理器的撷取逻辑单元从内存中撷取,其中该密码指令指定复数个密码运算其中之一,并且该密码指令在被指定的密码运算执行期间参照一缓存器以参照由该缓存器的内容中的指针所指定的内存位置处的一控制字组,以用于完成被指定的密码运算,该控制字组指定被指定的密码运算的密码参数,该控制字组包含:数据区块大小字段,配置用以指定在被指定的密码运算执行期间使用的数据区块大小;并且由该微处理器中的转译逻辑电路转译该密码指令成一序列的微指令,该一序列的微指令指示该微处理器执行该复数个密码运算其中之一;执行逻辑电路位于微处理器中,耦合于转译逻辑电路并被配置用于执行被指定的密码运算;其中
在执行被指定的密码运算时,由位于该微处理器的密码单元根据被指定的数据区块大小执行被指定的密码运算。
13.如权利要求12所述的方法,其特征在于,
执行被指定的密码运算依据进阶加密标准的规则。
14.如权利要求12所述的方法,其特征在于,其中该接收步骤包含:
指定该密码指令依据x86指令格式。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/826,433 | 2004-04-16 | ||
US10/826,433 US7519833B2 (en) | 2003-04-18 | 2004-04-16 | Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1658548A CN1658548A (zh) | 2005-08-24 |
CN1658548B true CN1658548B (zh) | 2010-09-15 |
Family
ID=35007823
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005100624909A Active CN1658548B (zh) | 2004-04-16 | 2005-03-29 | 配置密码引擎资料区块的微处理器及方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN1658548B (zh) |
TW (1) | TWI264911B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1802030A1 (en) * | 2005-12-23 | 2007-06-27 | Nagracard S.A. | Secure system-on-chip |
TWI409644B (zh) * | 2007-11-02 | 2013-09-21 | Tatung Co Ltd | Data encryption / decryption control method and its circuit |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1481526A (zh) * | 2000-12-13 | 2004-03-10 | �����ɷ� | 密码处理器 |
-
2005
- 2005-03-15 TW TW094107792A patent/TWI264911B/zh active
- 2005-03-29 CN CN2005100624909A patent/CN1658548B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1481526A (zh) * | 2000-12-13 | 2004-03-10 | �����ɷ� | 密码处理器 |
Also Published As
Publication number | Publication date |
---|---|
TWI264911B (en) | 2006-10-21 |
TW200536332A (en) | 2005-11-01 |
CN1658548A (zh) | 2005-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1655496B (zh) | 产生密码钥匙排程的装置及方法 | |
CN1684412B (zh) | 利用安全散列演算法的装置与方法 | |
EP1538510B1 (en) | Microprocessor apparatus and method for performing block cipher cryptographic functions | |
US7532722B2 (en) | Apparatus and method for performing transparent block cipher cryptographic functions | |
US8060755B2 (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 | |
CN100391145C (zh) | 重组透明化区块密码编译方法及装置 | |
CN1661958B (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 | |
CN1658548B (zh) | 配置密码引擎资料区块的微处理器及方法 | |
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 | |
CN1332526C (zh) | 微处理器区块密码编译方法与装置 | |
CN1652163B (zh) | 执行通透性输出反馈模式密码功能的方法及装置 | |
CN100527664C (zh) | 具最佳化区块密码功能的微处理器及方法 | |
CN100463392C (zh) | 执行组态区块密码编译演算法的微处理器装置和方法 | |
CN100539495C (zh) | 可设定密码金钥大小的微处理器装置及方法 | |
US7529367B2 (en) | Apparatus and method for performing transparent cipher feedback mode cryptographic functions | |
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 |