CN1655496A - 产生密码钥匙排程的装置及方法 - Google Patents

产生密码钥匙排程的装置及方法 Download PDF

Info

Publication number
CN1655496A
CN1655496A CNA2005100590315A CN200510059031A CN1655496A CN 1655496 A CN1655496 A CN 1655496A CN A2005100590315 A CNA2005100590315 A CN A2005100590315A CN 200510059031 A CN200510059031 A CN 200510059031A CN 1655496 A CN1655496 A CN 1655496A
Authority
CN
China
Prior art keywords
key
crypto
buffer
cipher
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.)
Granted
Application number
CNA2005100590315A
Other languages
English (en)
Other versions
CN1655496B (zh
Inventor
G·葛兰亨利
汤玛斯A·克里斯宾
提摩西A·伊里亚德
泰瑞帕德斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN1655496A publication Critical patent/CN1655496A/zh
Application granted granted Critical
Publication of CN1655496B publication Critical patent/CN1655496B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

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

Abstract

本发明提供一执行密码运算的装置及方法。在一实施例中,提供一执行密码运算的装置,而此装置是包含:一密码指令电路,其用以产生一密码指令;一钥匙产生逻辑电路;及一执行逻辑电路。密码指令是由一计算装置接收并将其当成一执行于此计算装置的指令流的一部分,且此密码指令指定一密码运算及在被指定的密码运算执行期间指定一密码钥匙扩展成一对应的钥匙排程以供使用。钥匙产生逻辑电路是操作耦合于密码指令电路,而此钥匙产生逻辑电路指示计算装置扩展密码钥匙成对应的钥匙排程。执行逻辑电路是耦合于钥匙产生逻辑电路,此执行逻辑电路扩展密码钥匙成对应的钥匙排程。

Description

产生密码钥匙排程的装置及方法
技术领域
本发明是有关于微电子领域,特别是有关于一种在一计算装置中执行密码运算的装置及方法,其中上述的计算装置扩展一已提供的密码钥匙成一对应的钥匙排程以执行密码运算。
背景技术
早期的电脑系统是独立操作于其他电脑系统之外,据此,执行于此电脑系统中的应用程序所需的输入资料,若非储存于此电脑系统,就是由应用程序设计人员在执行时提供;而应用程序执行结果及产生的输出资料,其形式一般为列印输出的纸张,或者是写入磁带、磁盘或是此电脑系统其他类型的储存装置的档案。输出档案可当成之后在相同电脑系统中执行的应用程序的输入档案,或者,当输出资料先前被储存成档案于可移除或可输送的储存装置时,其也可以提供给不同但相容的电脑系统的应用程序使用。在这些早期的系统,保护机密资讯的需求是公认,并且在其他资讯安全措施中,密码应用程序被发展及应用以防止机密资讯未被授权揭露。这些密码程序一般是以加密或解密的方式在储存装置中储存成档案的输出资料。
其后没几年,使用者开始发现由网路将电脑连接可以提供资讯共享存取的好处,因此网路架构、操作系统、以及资料传输协定等均发展成不仅支援存取共享资料的能力,更是其显著的特征。例如:使用者的电脑工作站可以在不同工作站或网路档案伺服器存取档案,或者利用网际网路获得新闻及其他资讯,或者对数以百计的其他电脑传送及接收电子信息(如电子邮件),或者与经销商的电脑系统连接并提供信用卡或银行资讯以购买产品,或者在餐厅、机场或其他公共场合利用无线网路进行上述的任何活动。因此,保护机密资料及传输免于未授权揭露的需求已急速的成长,而在某些特定的状况下,使用者被迫保护其机密资料的情况也大大的增加。目前新闻头条通常集中在电脑资讯安全问题,例如垃圾邮件(spam)、骇客、身分盗取、反向工程、恶作剧以及信用卡诈骗等是公众所关注的前几名。而当这些从各方面侵入私人领域的动机由无心的错误到有预谋的网路攻击,负责的执行单位以新法律、严厉的执行以及公共教育节目回应。然而,这些回应并未有效遏止危及电脑资讯的浪潮。昔日是政府、金融机构、军方所专注关切的间谍,现在对一般人而言也已成为重要的问题;间谍读取他们的电子邮件或从他们的家用电脑存取他们检查帐户的交易。在商业之前,熟悉该项技术者可察知从小到大的社团法人目前应用其资源卓越的部分以保护财产资讯。
资讯安全领域提供我们技术及装置以加密资料,并使其仅能由指定的个体加以解码,此为所知的密码(cryptography)。当特别应用于保护储存或传输于电脑之间的资讯时,密码最常被应用于转换机密资料(称为“明文”;plaintext或cleartext)成为难以理解的形式(称为“密文”;ciphertext)。转变明文成为密文的转换过程称为加密(encryption;enciphering;ciphering),而转变密文回明文的反向转换过程称为解密(decryption;deciphering;inverse ciphering)。
在密码学的领域中,几种程序及协定已发展到允许使用者不须具备许多知识及努力即可执行密码运算,并且针对这些使用者使其可以传输或者提供其加密形式的资讯产品给不同的使用者。连同加密资讯,传送者通常会提供接收者一“密码钥匙(cryptographic key)”以使接收者可以解码所加密的资讯,因此使得接收者能够恢复或者获得存取未加密的原始资讯。熟悉该项技术者可察知这些程序及协定一般是以暗语(password)保护、数学演算法以及应用程序特别设计的形式加以实现以加密及解密机密资讯。
几种类型的演算法目前使用于加密及解密资料。演算法根据上述一类型(例如一种RSA演算法,公开钥匙密码演算法)利用两密码钥匙(一公开钥匙(public key)与一私人钥匙(private key)),加密或解密资料。根据一些公开钥匙演算法,接收者的公开钥匙是被传送者用来加密传送给接收者的资料,因为有一数学关系存在于使用者的公开钥匙与私人钥匙之间,因此接收者必须利用其私人钥匙解密此传输以恢复此资料。虽然这类型的密码演算法广泛使用于现今,但其加密及解密的运算却是极慢甚至于少量的资料。一第二类型的演算法,如所知的对称钥匙演算法,提供同量等级的资料安全并且可以较快执行。这些演算法称为对称钥匙演算法,因为他们对加密及解密资讯使用单一密码钥匙。在公开区段,目前有三种盛行单一钥匙(single-key)密码演算法:资料加密标准(Data Encryption Standard;DES)演算法、三重资料加密标准(TripleDES)演算法以及进阶加密标准(Advanced Encryption Standard;AES)演算法。因为这些演算法保护机密资料的强度,美国政府机关目前正使用这些演算法,但熟悉该项技术者预期这些演算法中至少一个演算法,在不久的将来会变成商业及非官方交易的标准。根据所有这些对称钥匙演算法,明文及密文被划分在指定大小中的区块以进行加密及解密。例如:进阶加密标准执行密码运算于128比特区块的大小,并且使用128比特、192比特以及256比特的密码钥匙长度。其他对称钥匙演算法,例如Rijndael Cipher也允许192比特以及256比特的资料区块。据此,就一区块加密运算而言,一1024比特的明文信息加密成8个128比特的区块。
所有对称钥匙演算法利用相同形式的次运算以加密一区块的明文,并且根据许多更常被应用的对称钥匙演算法,一初始密码钥匙被扩展成复数个钥匙(例如:一“钥匙排程”),每一钥匙是用以当成次运算的一对应密码“回合”且执行于明文区块。例如:钥匙排程的第一钥匙是用以执行次运算的第一密码回合于明文区块,第一回合的结果是用以当成第二回合的输入,其中第二回合利用钥匙排程的第二钥匙以产生第二结果,并且一具体指定数量后来的回合执行产生一最终回合结果,即密文本身。根据进阶加密标准演算法,在每一回合的次运算是参照于文献中的次比特(或S-box)、移列(Shift Rows)、混栏(Mix Colums)以及加入回合键(Add RoundKey)等。一区块密文的解密是类似的处理并伴随例外的执行在每一回合,且回合的最终结果是一区块的明文,上述的例外是指密文输入反加密及反次运算执行(例如:inverse Mix Columns、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日出版,得到进阶加密标准的详细探讨。上述提及的两种标准是由美国国家标准暨技术局(NationalInstitute of Standards and Technology;NIST)所发布及主张,在此列为参考以供本发明所有意图及目的的说明。除上述所提及的标准,教导(tutorial)、白皮书、套件(toolkit)以及资源文章均可透过网际网路http://csrc.nist.gov/在NIST的电脑资源安全中心(ComputerSecurity Resource Center;CSRC)获得。
熟悉该项技术者可察知有许多的应用程序能够执行在可以执行密码运算(例如:加密及解密)的电脑系统。实际上,某些操作系统(例如:微软Window XP、Linux)提供直接加密/解密的服务于密码基元(primitive)、密码应用程序介面以及诸如此类的形式。然而,本发明人已观察到现今电脑密码技术在某些方面缺陷,因此由图1强调及讨论这些缺陷。
图1是现今电脑密码应用的方块图100。方块图100描绘第一电脑工作站101连接区域网路(local area network)105,且区域网路105也连接第二电脑工作站102、网路档案储存装置(networkfile storage device)106、第一路由器(first router)107或其他介面形式到广域网路(wide area network,WAN)110(例如:网际网路)以及像是符合IEEE 802.11的无线网路路由器(wirelessnetwork 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);以及其提供可程序化区块加密/解密模式如电子密码本模式、密码区块链结模式、密码反馈模式以及输出反馈模式。
发明内容
本发明是用以解决上述已知技术中的问题及缺点。本发明提供一较佳的技术以执行密码运算于一微处理器中。
本发明一执行密码运算的装置,其特征在于,包含:
一密码指令电路,用以产生一密码指令,该密码指令是由一计算装置接收并将其当成执行于该计算装置的一指令流的一部分,其中该密码指令指定该些密码运算其中之一以及在被指定的密码运算执行期间指定一已提供的密码钥匙扩展成一对应的钥匙排程以供使用;
一钥匙产生逻辑电路,操作耦合于该密码指令电路,且是配置以指示该计算装置来扩展该已提供的密码钥匙成该对应的钥匙排程;以及
一执行逻辑电路,操作耦合于该钥匙产生逻辑电路,且是配置以扩展该已提供的密码钥匙成该对应的钥匙排程。
其中该密码运算可以具有下列功能的某一种:
一加密运算,该加密运算包含加密复数个明文区块,以产生相对复数个密文区块;以及
一解密运算,该解密运算包含解密复数个密文区块,以产生相对复数个明文区块。
其中该对应的钥匙排程是包含一扩展钥匙排程。
其中该钥匙产生逻辑电路是配置用以转译一控制字组中的一钥匙产生栏位,且该密码指令参照该控制字组。
其中该密码指令是隐含参照该计算装置的复数个暂存器。
其中该些暂存器至少可以为下列可能变化的某一种或其任意组合:一第一暂存器,其中该第一暂存器的内容是包含指向一第一存储器地址的一第一指标,该第一存储器地址是依据欲完成的被指定的密码运算指定存储器内一第一位置,以存取复数个输入文字区块;
一第二暂存器,其中该第二暂存器的内容是包含指向一第二存储器地址的一第二指标,该第二存储器地址指定存储器内一第二位置,以储存相对复数个输出文字区块,而相对该些输出文字区块被产生,是由于复数个输入文字区块内完成被指定的密码运算;
一第三暂存器,其中该第一暂存器的内容是指示复数个输入文字区块中的复数个文字区块;
一第四暂存器,其中该第四暂存器的内容是包含指向一第三存储器地址的一第三指标,该第三存储器地址指定存储器内一第三位置以存取密码钥匙资料,以用于完成被指定的密码运算;
一第五暂存器,其中该第五暂存器的内容是包含指向一第四存储器地址的一第四指标,该第四存储器地址指定存储器内一第四位置,该第四位置包含一初始向量位置,该初始向量位置的内容包含一初始向量或一初始向量等效物以用于完成被指定的密码运算;以及
一第六暂存器,其中该第六暂存器的内容是包含指向一第五存储器地址的一第五指标,该第五存储器地址指定存储器内一第五位置以存取一控制字组以用于完成被指定的密码运算,其中该控制字组指定被指定的密码运算的密码参数,该控制字组包含:
一钥匙产生栏位,是配置用以指定在被指定的密码运算执行期间指定已提供的密码钥匙扩展成该对应的钥匙排程以供使用。
其中该密码钥匙资料是包含该已提供的密码钥匙。
其中该执行逻辑电路包含:一密码单元,配置用以在每一复数个输入文字区块执行复数个密码回合,以产生每一复数个相对输出文字区块,其中该些密码回合是由提供给该密码单元的一控制字组所指定。
本发明一执行密码运算的装置,其特征在于,包含:
一元件内的一密码单元,该密码单元是配置用以执行该些密码运算其中之一,并回应接收一指令流内一密码指令,该密码指令指定被指定的密码运算以及在被指定的密码运算执行期间指定一密码钥匙扩展成一对应的钥匙排程以供使用;以及
一钥匙产生逻辑电路,操作耦合于该密码单元且是配置用以指示该元件,以执行被指定的密码运算并以扩展该密码钥匙成该对应的钥匙排程。
其中该对应的钥匙排程是包含一扩展钥匙排程。
其中该钥匙产生逻辑电路是配置用以转译一控制字组中的一钥匙产生栏位,且该密码指令参照该控制字组。
本发明一种在一装置执行密码运算的方法,其特征在于,包含:
接收一密码指令,该密码指令在复数个密码运算其中的一执行期间指定一密码钥匙扩展成一对应的钥匙排程以供使用;以及
扩展该密码钥匙成该对应的钥匙排程。
其中该接收包含:由一控制字组的一栏位指定该密码钥匙扩展成该对应的钥匙排程,其中该控制字组是由该密码指令所参照。
其中该对应的钥匙排程是包含一扩展钥匙排程。
其中该接收包含:指定该密码指令是依据x86指令格式。
附图说明
为进一步说明本发明的技术内容,以下进行实施例及附图详细说明如后,其中:
图1是现今密码应用的示意图;
图2是执行密码运算技术的示意图;
图3是本发明执行密码运算的微处理器装置的示意图;
图4是本发明的基元(atomic)密码指令实施例的示意图;
图5是图4的基元密码指令区块加密模式栏位值的范例的表格;
图6是本发明在X86相容微处理器的密码单元的方块图;
图7是图6的微处理器中指示密码次运算的范例微指令栏位的示意图;
图8是图7的载入微指令暂存栏位值格式的表格;
图9是图7的储存微指令暂存栏位值格式的表格;
图10是本发明一较佳实施例指定密码运算参数的控制字组格式范例的示意图;
图11是图10的控制字组产生钥匙栏位值的表格;
图12是本发明的一较佳实施例密码单元的方块图;
图13是本发明执行有关进阶加密标准演算法密码运算的一区块加密逻辑电路实施例的方块图;
图14是本发明的一进阶加密标准实施例的一128比特密码钥匙扩展逻辑电路的示意图;
图15是本发明一较佳实施例在一中断事件期间保留密码参数状态的方法流程图;以及
图16是本发明一较佳实施例在至少一个中断事件时,扩展一密码钥匙成一对应的钥匙排程以在复数个输入资料区块执行一密码运算的方法流程图。
具体实施方式
以下所述为应用已知技术而制造或使用文中特定应用及需求的本发明所列举的例子。然而,实施例中所提及的各种修改是用以彰显与已知技术的不同处,此一般原则可应用于其他实施例中。因此,本发明并非限定于特定实施例。
监于上述所讨论的密码运算及现今电脑系统用以加/解密资料的相关技术,这些技术及其相关限制将在图2中继续探讨,而接下来本发明也将根据图3到图16加以讨论。本发明提供一种在现今电脑系统中执行密码运算的装置及方法,其透过主要机制展现优秀的性能特征并且更满足上述所提及的目标,像是限制操作系统的干预、先前(legacy)架构的相容性、演算法及模式的可程序性、密码钥匙排程的自行产生、防止骇客入侵以及可测试性等等。
请参照图2,方块图200描绘当今电脑系统中执行密码运算的技术。方块图200包含一微处理器201,其撷取指令及从系统存储器中一称为应用存储器(application memory)203存取应用程序相关的资料,而程序控制及应用存储器203中资料的存取通常是由属于系统存储器保护范围的操作系统软件202所管理。如上所述,当一执行应用程序(例如:电子邮件程序或档案储存程序)要求执行密码运算时,此执行应用程序必须由指示(direct)微处理器201执行相当数量的指令以完成密码运算。这些指令可能是执行应用程序本身的子程序,也可能是连结到此执行应用程序的外挂应用程序,或者是由操作系统202所提供的服务。姑且不论他们的关联性,熟悉该项技术者可察知这些指令将驻于某些指定或分派的存储器范围。为达讨论目的,这些存储器范围显示在应用存储器203并且包含一密码钥匙产生应用程序(keygeneration application)204,其中密码钥匙产生应用程序204产生或接收一密码钥匙并且扩展此钥匙成一使用于密码回合运算中2的钥匙排程(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到图16为参考加以讨论。
请参照图3,其为本发明一较佳实施例执行密码运算的微处理器的方块图300。方块图300描绘一微处理器301,其透过存储器总线(memory bus)319与系统存储器(system memory)321耦合连接,且微处理器301包含从指令暂存器接收指令的一转译逻辑电路(translation logic)303。转译逻辑电路303包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以转译指令成为指令相关序列的等效元件。这些在转译逻辑电路303中执行转译的元件可能与在微处理器301中执行其他功能的电路、微码共用,而根据本应用的范围,微码是对照至少一个微指令的术语。一微指令(也可参照成一本机指令)是一单元层级执行的一指令,例如微指令是由精简指令集电脑(reduced instruction set computer;RISC)微处理器直接执行。至于复杂指令集电脑(complex instruction setcomputer;CISC)微处理器,如x86相容的微处理器,其x86指令被转译为关联的微指令并且由复杂指令集电脑微处理器中的单元直接执行。转译逻辑电路303耦合微指令伫列(micro instruction queue)304,且此微指令伫列304具有复数个微指令通道(microinstruction 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中执行其他功能的电路、微码共用。执行逻辑电路包含密码单元(cryptographic unit)316,此密码单元316接收从载入逻辑电路314被要求执行指定密码运算的资料。微指令指示密码单元316执行指定密码运算于复数个输入文字区块(input text)326以产生相对应复数个输出文字区块(output text)327。密码单元316包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以执行密码运算的等效元件。这些在密码单元316中执行运算的元件可能与在微处理器301中执行其他功能的电路、微码共用。在一实施例中,密码单元316并列操作与在执行逻辑电路328内的其他执行单元(未绘出),例如整数单元、浮点数单元等。在本应用范围一“单元”的实施是包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以执行指定功能或指定运算的等效元件。这些在特定单元中执行指定功能或指定运算的元件可能与在微处理器301中执行其他功能的电路、微码共用。例如:一实施例中,一整数单元包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以执行整数指令的等效元件;一浮点单元包含逻辑电路、装置或微码(例如:微指令或本机指令),或逻辑电路、装置或微码的组合,或用以执行浮点指令的等效元件;则在整数单元中执行整数指令的元件可能与在浮点单元中执行浮点指令的其他电路、微码等共用。在一与x86架构相容的实施例中,密码单元316与整数单元、浮点单元、多媒体延伸集(Mathematic MatrixExtension;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)指令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或一钥匙排程(key schedule)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是为实现特定微处理器的指令集架构(instruction set architecture,ISA)中所定义的一种暂存器。
在一实施例中,密码单元316分成复数个阶段因此允许相继输入文字区块326的管线处理。
图3的方块图300教示本发明所需的元件,因此省略许多在现今微处理器301中的逻辑以求图示的简洁。然而,熟悉该项技术者可察知现今特定实现的微处理器301是包含许多阶段及逻辑电路,在此为图示的简洁而将其部分合并。例如:载入逻辑电路314在一快取线对准阶段之后可以嵌入随一快取介面阶段的一地址产生阶段。然而重要且应注意的是,在复数个输入文字区块326上的一完全密码运算,是根据本发明由一单一指令322的运算对操作系统320的考量是显而易见,并且单一指令322的执行是由与微处理器301中其他执行单元并联操作及协调的密码单元316所完成。本发明密码单元316在实施组态中的替代实施例是类似前几年微处理器中浮点单元的硬件。密码单元316的操作及相关密码指令322是完全相容先前操作系统及程序同时操作,并且也将在之后更加详细的探讨。
请参照图4,其为本发明的一基元(atomic)密码指令400实施例的方块图。密码指令400包含一选项前置栏位(optional prefixfield)401、一重复前置栏位(repeat prefix field)402、一运算码栏位(opcode field)403、一区块密码模式栏位(block ciphermode field)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中的密不是一最终结果。熟悉该项技术者可察知许多密码演算法除了最终回合的次运算之外是执行相同的次运算于每一回合。因此程序设计中间结果栏位1005提供中间结果而不是最后结果,由此,允许程序设计者可核对演算法实现的中间的步骤。例如:获得增加的中间值以核对演算法实行,假设,执行一回合的加密于一文字区块,然后执行两回合于相同文字区块,然后三回合等。提供可程序化回合及中间值结果的功能可让使用者检查密码执行、除错以及达到改变钥匙结构及回合计数。
请参照图11,其为图10中控制字组1000的钥匙产生栏位1006范例值的表格1100。钥匙产生栏位1006的0值是指示一计算装置依据本发明从一密码钥匙自动产生一钥匙排程给一指定密码运算,其中上述的密码钥匙是提供于存储器中,而此存储器是由一钥匙指标暂存器的内容所指到。自动钥匙排程的产生依据一密码演算规则(例如进阶加密标准)是等效于钥匙扩展。钥匙产生栏位1006的1值是指示一指定密码运算的一使用者产生钥匙排程是提供于存储器中,且是由钥匙指标暂存器的内容所指到。除了扩展一密码钥匙排程,一计算装置依据本发明一较佳实施例将从存储器载入使用者产生钥匙排程,并在指定密码运算执行期间使用此使用者产生钥匙排程。本发明的一好处是使用者可以使用一钥匙排程于密码回合运算,而此钥匙排程并不相称于使用中的特定密码演算法则。
请参照图12,其为本发明的一密码单元1200的较佳实施例方块图。密码单元1200包含一微指令暂存器(micro opcode register)1203,此微指令暂存器1203透过一微指令总线1214接收密行转译的元件可能与在微处理器600中执行其他功能的电路、微码共用。转译逻辑电路602包含一钥匙产生逻辑电路640,而此钥匙产生逻辑电路640是耦合到一转译器(translator)603及一微码唯读存储器(microcode ROM)604。中断逻辑电路(interrupt logic)626由总线634耦合到转译逻辑电路602。复数个软件及硬件中断信号627是由指示未处理中断给转译逻辑电路602的中断逻辑电路626处理。转译逻辑电路602耦合到微处理器600相继的阶段包含一暂存阶段(register stage)605、定址阶段(address stage)606、载入阶段(load stage)607、执行阶段(execute stage)608、储存阶段(store stage)618、以及写回阶段(write backstage)619。每一相继阶段包含逻辑电路以完成由撷取逻辑电路601所提供相关指令执行的特定功能,如先前在第三图的微处理器中所讨论参照类似名称的元件。描绘在图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耦合到SSE单元616。密码单元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 control register)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中的逻辑电路执行指定的密码运算。相关微指令的特殊结构在某种程度是由一控制字组暂存器308的内容所指到的一控制字组323中的一钥匙产生栏位的值决定,而此将详述于后。例如:当钥匙产生栏位的值指定在一指定密码运算执行期间使用一使用者产生的钥匙排程,则钥匙产生逻辑电路640将建构微指令相关顺序以指示微处理器600从钥匙指标暂存器309内容所指的存储器位置324撷取使用者产生的钥匙排程,并将使用者产生的钥匙排程载入密码单元617中的钥匙随机存取存储器(将详述于后),且在指定密码运算执行期间使用上述的使用者产生的钥匙排程。当钥匙产生栏位的值指定一钥匙排程是使用所提供的一密码钥匙自动产生,则钥匙产生逻辑电路640将建构微指令相关顺序以指示微处理器600从钥匙指标暂存器309内容所指的存储器位置324撷取所提供的密码钥匙,并将此密码钥匙载入密码单元617中的钥匙随机存取存储器,且扩展此密码钥匙成一钥匙排程,及在指定密码运算执行期间使用上述的扩展的钥匙排程。密码钥匙的大小是可由控制字组中的钥匙大小栏位的设定而程序规划。在一实施例中,钥匙大小栏位的值是考虑到一128比特密码钥匙、一192比特密码钥匙以及一256比特密码钥匙等指示。
据此,一第一复数个相关微指令是直接依路径传送至密码单元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 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、一资料区块大小(DSIZE)栏位1002、一钥匙大小(KSIZE)栏位1003、一加密/解密(E/D)栏位1004、一中间结果(IRSLT)栏位1005、一钥匙产生(KGEN)栏位1006、一演算(ALG)栏位1007以及一回合计算(RCNT)栏位1008。
保留栏位1001所有的值是保留。资料区块大小栏位1002的内容是指示执行加密及解密时使用输入及输出文字区块的大小。在一实施例中,资料区块大小栏位1002不是指示一128比特区块、一192比特区块,就是指示一256比特区块。钥匙大小栏位1003的内容是指示一用以完成加密或解密的密码钥匙的大小。在一实施例中,钥匙大小栏位1003不是指示一128比特钥匙、一192比特钥匙,就是指示一256比特钥匙。加密/解密栏位1004指出密码运算是加密运算或指出密码运算是解密运算。钥匙产生栏位1006指示在存储器中是使用者产生的钥匙排程或在存储器中是单一密码钥匙;如果为单一钥匙时,微指令发布给密码单元与密码钥匙以指示单元根据演算栏位1007的内容所具体指定的密码演算以扩展钥匙成为一钥匙排程。在一实施例,演算栏位1007的特定值具体指示资料加密标准演算法、三重资料加密标准演算法或者进阶加密标准演算法如先前所述的讨论。替代实施例可考虑其他密码演算法,例如Rijndael Cipher、TwofishCipher等。回合计算栏位1008的内容指示一数量的密码回合,其根据具体指示的演算法完成于每一输入文字区块。虽然上述提及的标准指示每一输入文字区块固定前置数量的密码回合,但回合计算栏位1008允许一程序设计者从标准指示修改回合的数量。在一实施例中,程序设计者可指定每一区块从0-15回合。最后,中间结果栏位1005指示是否一输入文字区块的加密/解密,是根据演算栏位1007所指定的密码演算法以回合计算栏位1008所指定回合的数量执行,或者加密/解密是根据演算栏位1007所指定的密码演算法,以回合计算栏位1008所指定回合的数量执行,而其最终回合的执行代表一中间结果而不是一最终结果。熟悉该项技术者可察知许多密码演算法除了最终回合的次运算之外是执行相同的次运算于每一回合。因此程序设计中间结果栏位1005提供中间结果而不是最后结果,由此,允许程序设计者可核对演算法实现的中间的步骤。例如:获得增加的中间值以核对演算法实行,假设,执行一回合的加密于一文字区块,然后执行两回合于相同文字区块,然后三回合等。提供可程序化回合及中间值结果的功能可让使用者检查密码执行、除错以及达到改变钥匙结构及回合计数。
请参照图11,其为图10中控制字组1000的钥匙产生栏位1006范例值的表格1100。钥匙产生栏位1006的0值是指示一计算装置依据本发明从一密码钥匙自动产生一钥匙排程给一指定密码运算,其中上述的密码钥匙是提供于存储器中,而此存储器是由一钥匙指标暂存器的内容所指到。自动钥匙排程的产生依据一密码演算规则(例如进阶加密标准)是等效于钥匙扩展。钥匙产生栏位1006的1值是指示一指定密码运算的一使用者产生钥匙排程是提供于存储器中,且是由钥匙指标暂存器的内容所指到。除了扩展一密码钥匙排程,一计算装置依据本发明一较佳实施例将从存储器载入使用者产生钥匙排程,并在指定密码运算执行期间使用此使用者产生钥匙排程。本发明的一好处是使用者可以使用一钥匙排程于密码回合运算,而此钥匙排程并不相称于使用中的特定密码演算法则。
请参照图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)1202。区块码逻辑电路1201包含钥匙扩展逻辑电路1220。区块码逻辑电路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开始执行由控制字组内容所指定的密码运算。如果要求单一密码钥匙扩展,则钥匙扩展逻辑电路1220依据所指定密码演算法则以产生钥匙排程中的每一钥匙而扩展密码钥匙,其中上述的密码钥匙是由载入指令提供给钥匙-0暂存器1207及钥匙-1暂存器1208。姑且不论是否由钥匙扩展逻辑电路1220产生一钥匙排程或者是从存储器中载入钥匙排程,第一回合的钥匙是快取储存于区块密码逻辑1201中以使得第一区块密码回合可以不用存取钥匙随机存取存储器1202而处理。一但初始化后,区块密码逻辑电路1201继续执行指定的密码运算于至少一个输入文字区块直到运算完成;其连续从钥匙随机存取存储器1202撷取回合钥匙如所应用的密码演算法所要求。密码单元1200执行一指定区块密码运算于指定的输入文字区块,而相继的输入文字区块透过相继对应的载入及储存微指令加密/解密。当一储存微指令执行时,如果指定输出资料(例如输出-0或输出-1)尚未完全产生,则区块密码逻辑电路1201显示暂停信号1213。一但输出资料已产生且放置于相对应的输出暂存器1209-1210时,暂存器1209-1210的内容接着传送到储存总线1212。
请参照图13,其为本发明执行有关进阶加密标准(AES)演算法密码运算的一区块密码逻辑电路1300实施例的方块图。区块密码逻辑电路1300包含一回合引擎(round engine)1320,此回合引擎1320透过总线1311-1314、总线1316-1318及回合钥匙(RNDKEY)总线1332耦合到一回合引擎控制器(round enginecontroller)1310。回合引擎控制器1310包含一钥匙大小控制器(block size controller)1330,并且存取一微指令暂存器(microinstruction controller)1301、控制字组暂存器(control wordregister)1302、第一钥匙(钥匙-0)暂存器1303以及第二钥匙(钥匙-1)暂存器1304以存取钥匙资料、微指令以及所指示密码运算的参数。输入暂存器1305-1306的内容提供给回合引擎1320并且回合引擎1320提供相对应输出文字给输出暂存器1307-1308。输出暂存器1307-1308透过总线1316-1317也耦合到回合引擎控制器1310以致能回合引擎控制器存取每一相继密码回合的结果,而此结果是透过NEXTIN总线1318提供给回合引擎1320下一密码回合。钥匙随机存取存储器(未绘出)中的密码钥匙是透过钥匙随机存取存储器总线1315存取。加密/解密总线(ENC/DECbus)1311的信号指示回合引擎利用次运算执行不是加密(例如S-Box)就是解密(例如反向S-Box)。回合计算总线(RNDCON bus)1312的内容指示回合引擎1320执行不是一第一进阶加密标准回合、一中间进阶加密标准回合就是一最后进阶加密标准回合。回应一控制字组中的一钥匙大小栏位的内容,其指示使用一密码钥匙大小,钥匙大小控制器1330是由钥匙大小总线(KEYSIZE bus)1319指定密码钥匙大小。如果钥匙排程是欲自动产生,则回合引擎控制器1310显示产生钥匙总线(GENKEY bus)1314信号以指示回合引擎1320中的钥匙扩展逻辑电路1331使用钥匙总线1313所提供的钥匙及钥匙大小总线1319所指定的钥匙大小以产生一钥匙排程。回应产生钥匙总线1314信号,钥匙扩展逻辑电路(key expansion logic)1331是藉由回合钥匙总线(RNDKEY bus)1332将所产生的钥匙排程提供给回合引擎控制器1310。钥匙总线1313亦用以提供每一回合钥匙给回合引擎1320在其对应的回合执行时。在一实施例中,钥匙大小总线1319的值是指示128比特区块、192比特区块或256比特区块。
回合引擎1320包含第一钥匙互斥或逻辑电路(first key XORlogic)1321,此第一钥匙互斥或逻辑电路1321耦合到一第一暂存器(first register)(暂存-0)1322,此第一暂存器1322耦合到S-Box逻辑电路(S-Box logic)1323,此S-Box逻辑电路1323耦合到移列逻辑电路(Shift Row logic)1324,此移列逻辑电路1324耦合到一第二暂存器(second register)(暂存-1)1325,此第二暂存器1325耦合到混栏逻辑电路(Mix Colum logic)1326,此混栏逻辑电路1326耦合到一第三暂存器(thirdregister)(暂存-2)1327。第一钥匙互斥或逻辑电路1321、S-Box逻辑电路1323、移列逻辑电路1324以及混栏逻辑电路1326是配置用以执行次运算于输入文字资料,像是具体于先前讨论的进阶加密标准FIPS标准。混栏逻辑电路1326在中间回合期间于要求使用由钥匙总线1313所提供的回合钥匙时,是附加配置以执行进阶加密标准互斥或功能于输入资料。第一钥匙互斥或逻辑电路1321、S-Box逻辑电路1323、移列逻辑电路1324以及混栏逻辑电路1326在藉由加密/解密总线1311的状态指示时,也配置用以执行其相对的反向进阶加密标准次运算于解密期间。熟悉该项技术者可察知中间回合资料是根据控制字组暂存器1302内容所指定的具体区块加密模式而回馈给回合引擎1320。初始向量资料(如果要求)透过NEXTIN总线1318提供给回合引擎1320。
在图13所示的实施例中,回合引擎分为两阶段:一第一阶段介于第一暂存器(暂存-0)1322与第二暂存器(暂存-1)1325以及一第二阶段介于第二暂存器(暂存-1)1325与第三暂存器(暂存-2)1327。中间回合资料同步一时脉信号(未绘出)于阶段间管线处理。当一区块的输入资料完成密码运算,其关联的输出资料放置于相对应输出暂存器1307-1308。一储存微指令的执行使得所指定的输出暂存器1307-1308的内容提供至储存总线(未绘出)。
请参照图14,其为本发明的一128比特钥匙扩展逻辑电路1400实施例的方块图,其是配置用以扩展一密码钥匙成一对应的密码钥匙排程。为了本发明的教示目的,钥匙扩展逻辑电路1400是描述及图解于进阶加密标准演算规则方面,然而本发明人指明此描述及图解是为了解说的清晰,而不应被用以限制本发明的范围。钥匙扩展逻辑电路1400是包含一钥匙缓冲器(key buffer)1401,而此钥匙缓冲器1401是耦合于一第一128比特暂存器(first 128-bitregister)1402。一初始密码钥匙依据本发明是从一回合引擎控制器1310经由钥匙产生总线而被接收。第一暂存器1402的127-96比特是提供给S-Box逻辑电路(S-Box logic)1403以及一32比特互斥或闸(XOR gate)1404。第一暂存器1402的95-64比特是提供给一32比特互斥或闸(XOR gate)1405,而此互斥或闸1405的输出是耦合于上述的互斥或闸1404。第一暂存器1402的63-32比特是耦合于一32比特互斥或闸1406,而此互斥或闸1406的输出是耦合于上述的互斥或闸1405。第一暂存器1402的31-0比特是耦合于上述的互斥或闸1406。钥匙扩展逻辑电路1400亦包含一第二暂存器(second register)1407,其具有5个32比特栏位以从S-Box逻辑电路1403、从互斥或闸1404-1406及从第一暂存器1402的31-0比特接收32比特输入。第二暂存器1407的5个32比特栏位是提供给一回合常数(RoundConstant,RCON)逻辑电路1408及4个32比特互斥或闸1409-1412。回合常数逻辑电路1408的输出亦提供给互斥或闸1409-1412。互斥或闸1409-1412提供32比特输出给一第三暂存器(third register)1413的4个栏位,而第三暂存器1413的4个栏位是提供给一128比特回合钥匙缓冲器(round keybuffer)1414以及也由总线(bus)1415而回授给第一暂存器1402。回合钥匙缓冲器1414的输出(例如:在一扩展钥匙排程中所产生的一回合钥匙)依据本发明是由总线(bus)1416提供给一回合引擎控制器。
在操作中,欲扩展的密码钥匙是从回合引擎控制器1310经由钥匙产生总线提供给钥匙缓冲器1401,并且此钥匙扩展的执行是与一时序信号(未绘出)同步。一回合管理器(round manager)1417侦测经由钥匙产生总线所供给的密码钥匙,并经由RNDNUM总线反覆地发布钥匙扩展的一回合数目给回合常数逻辑电路1408,据此,钥匙缓冲器1401的内容是传送至第一暂存器1402。另外,RNDNUM总线是被设定用以指示将产生一初始进阶加密标准回合的一回合钥匙。依据进阶加密标准钥匙扩展规格,密码钥匙127-96比特是提供给S-Box逻辑电路1403,而此S-Box逻辑电路1403的输出是经由第二暂存器1407提供给回合常数逻辑电路1408。依照值或RNDNUM总线,回合常数逻辑电路1408输出一32比特回合常数,此32比特回合常数是提供给4个32比特互斥或闸1409-1412中的每一个互斥或闸。据此,初始回合钥匙31-0比特在经由回合常数逻辑电路1408所提供初始回合常数与密码钥匙31-0比特,执行互斥或闸逻辑运算后产生。初始回合钥匙63-32比特在初始回合常数与一第一项比特63-32执行互斥或闸逻辑运算后产生,其中上述的第一项是密码钥匙较低的双字组(doublewords)的互斥或闸逻辑运算结果。初始回合钥匙95-64比特在初始回合常数与一第二项95-64比特执行互斥或闸逻辑运算后产生,其中上述的第二项是上述的第一项与密码钥匙95-64比特互斥或闸逻辑运算的结果。初始回合钥匙127-96比特在初始回合常数与一第三项127-64比特执行互斥或闸逻辑运算后产生,其中上述的第三项是上述的第二项与密码钥匙127-96比特互斥或闸逻辑运算的结果。
上述的初始回合钥匙是输出至回合钥匙缓冲器1414,并且随后输出至回合引擎控制器1310(此回合引擎控制器1310将此初始回合钥匙提供给钥匙随机存取存储器),并且此初始回合钥匙也回授给第一暂存器1402以供产生一下一回合钥匙时使用。此外,回合管理器1417增加RNDNUM总线的值。
上述的下一回合钥匙及其后所有回合钥匙是依照上述的方式而反覆地产生,直到扩展钥匙排程的所有钥匙均已产生后才结束。
请参照图15,其为本发明在一中断事件期间保留密码参数的状态的方法流程图。当一微处理器依据本发明执行一指令流时,方法流程从步骤1502开始。上述的指令流程并不须包含一像此描述的密码指令。然后方法流程处理至决定步骤1504。
在决定步骤1504,决定是否由一指令流(中断处理程序)处理一要求改变指令流的中断事件(例如可遮罩式中断、非遮罩式中断、分页错误(page fault)、工作切换(task switch)等)。若是,方法流程处理至步骤1506;若否,方法流程跳至步骤1504,其指令执行继续直到一中断事件产生。
在步骤1506,因为一中断事件已经发生,在传送控制程序至一对应中断处理程序的前,中断逻辑电路依据本发明指示清除一旗标暂存器中的X比特。X比特的清除确保从中断处理程序返回时,如果一区块密码运算进行中,其指示排除至少一个中断事件并指示控制字组资料以及钥匙资料必须在输入指标暂存器的内容目前所指的输入资料区块继续区块密码运算的前重新载入。然后处理至步骤1508。
在步骤1508,所有架构暂存器包含本发明区块密码运算执行的相关指标及计数均储存于存储器。熟悉该项技术者可知架构暂存器的储存是在转移控制权给中断处理程序的前完成于目前资料计算装置。因此本发明探究目前资料架构以提供中断事件执行输出量的透明度。在暂存器储存的后,方法流程处理至步骤1510。
在步骤1510,程序流程是转移至中断处理程序。因此方法流程处理至步骤1512。
在步骤1512,此方法流程完成结束。熟悉该项技术者可察知图14的方法依据中断处理程序的返回是从步骤1502再开始。
请参照图16,其为本发明在至少一个中断事件时,扩展一密码钥匙成一对应的钥匙排程以在复数个输入资料区块执行一指定密码运算的方法流程图1600。为求图示的清晰,省略了依据区块密码模式执行指定密码运算的流程,其中此区块密码模式要求区块间初始向量等效物的更新及储存(例如输出反馈模式、密码反馈模式)。然而本发明的方法是包含其他的区块密码模式。
方法流程从步骤1602开始,其中依据本发明的一密码指令指示一密码运算开始执行。上述的密码指令执行是可以第一执行或由于一中断事件的中断执行而跟随第一执行的后执行,由此在中断处理程序执行完成后将程序控制权转移回密码指令。流程处理至步骤1604。
在步骤1604,载入存储器中的一资料区块并且开始一指定密码运算,其中上述的区块资料是由本发明的一输入指标暂存器的内容所指定。在一实施例中,指定的密码运算是依据进阶加密标准规则开始执行。然后方法流程处理至决定步骤1606。
在决定步骤1606,决定是否设定一旗标暂存器中的一X比特。如果设定X比特,其指示目前依据本发明载入一密码单元的控制字组及钥匙排程是有效(valid)。如果清除X比特,其指示目前载入上述的密码单元的控制字组及钥匙排程是无效(invalid)。如上述参照图15的讨论,当一中断事件产生时,X比特是清除。此外,如上所述,当需要载入一新的控制字组或一新的钥匙排程或者是上述的两者时,则在发布密码指令的前是要求指令执行以清除X比特。在一x86相容实施例中,其利用一x86旗标暂存器中的第30比特,此X比特可以由依序执行一PUSHFD指令与一POPFD指令而清除。然而熟悉该项技术者可得知在另一实施例中,其他用以清除X比特的指令。如果X比特是设定,方法流程处理至步骤1620;如果X比特是清除,方法流程处理至步骤1608。
在步骤1608,因为一清除的X比特是指示不是一中断事件产生就是一新的控制字组及/或钥匙资料载入,因此从存储器载入一控制字组。在一实施例中,载入控制字组停止密码单元执行上述的步骤1604所指定的密码运算。在此实施例中的步骤1604开始一密码运算是考虑到使用电子密码本模式的多区块的最佳化,其是藉由假设使用目前载入的控制字组及钥匙资料以及假设电子密码本模式是最为普遍使用的区块密码模式。根据上述,载入目前输入资料区块并且在决定步骤1606检查X比特的状态重置的前,开始密码运算。然后方法流程处理至决定步骤1610。
在决定步骤1610,评估在步骤1608所撷取(retrieve)控制字组中的钥匙产生栏位以决定提供存储器中的一使用者产生钥匙排程或是存储器中的一密码钥匙,而此密码钥匙是被要求扩展成一钥匙排程。如果钥匙产生栏位的值指定自动钥匙扩展,则方法流程处理至步骤1612。如果钥匙产生栏位的值指定提供使用者产生钥匙排程,则方法流程处理至步骤1616。
在步骤1612,从存储器载入密码钥匙。然后方法流程处理至步骤1614。
在步骤1614,密码钥匙相称于使用的密码演算规则而被扩展成一钥匙排程,并且此钥匙排程在密码运算执行期间是载入至钥匙随机存取存储器以供使用。然后方法流程处理至步骤1618。
在步骤1616,从存储器撷取一使用者产生钥匙排程并且载入至钥匙随机存取存储器以供密码运算执行期间使用。然后方法流程处理至步骤1618。
在步骤1618,输入区块参照步骤1604而重新载入,并且依据新载入的控制字组以及钥匙排程开始密码运算。然后方法流程处理至步骤1620。
在步骤1620,产生一输出区块,此输出区块对应所载入的输入区块,对加密而言,输入区块是一明文区块而输出区块是一对应的密文区块;对解密而言,输入区块是一密文区块而输出区块是一对应的明文区块。然后方法流程处理至步骤1622。
在步骤1622,将产生的输出区块储存于存储器。然后方法流程处理至步骤1624。
在步骤1624,修改输入及输出区块指标暂存器的内容以指到下一输入及输出资料区块。另外,修改区块计数暂存器的内容以指示目前输入资料区块完成密码运算。在参照图16所讨论的一实施例,区块计数暂存器是递减。然而,熟悉该项技术者可在另一实施例中,思量处理及测试区块计数暂存器的内容以考虑输入文字区块的管线执行。然后方法流程处理至步骤1626。
在决定步骤1626,决定是否继续运算一输入资料区块。在用以说明具特征的实施例中,是评估区块计数器是否等于零而决定。如果没有剩下的区块可供运算,则方法流程处理至步骤1630;如果剩下区块可供运算,则方法流程处理至步骤1628。
在步骤1628,载入下一输入资料区块,如输入指标暂存器的内容所指。然后方法流程处理至步骤1620。
在步骤1630,此方法流程完成结束。
虽然本发明及其目的、特征与优点已详细描述,但其他实施例也应包含于本发明。例如:本发明曾根据相容x86架构的实施例讨论长度,然而这些讨论已提供此类的方式,因为x86架构容易理解且提供足够的方式以教示本发明。然而本发明包含相称于其他指令集架构的实施例,例如:PowerPC、MIPS及诸如此类等,此外还有全新的指令集架构。
本发明还包含电脑系统中微理器外其他元件的密码运算的执行,例如,根据本发明的密码指令可以容易地被应用在一密码单元的一实施例,此实施例并非如微处理器部分相同的整合电路,其执行方式如部分电脑系统。本发明的如此的实施例是为了并入围绕在微处理器的晶片组(如北桥、南侨),或当一处理器用于执行密码运算时,其密码指令是由主要微处理器移转(hand off)给此处理器。本发明可应用于内嵌控制器、工业控制器、信号处理器、阵列处理器以及任何相似处理资料的装置。本发明也包含一实施例仅含有执行密码运算所必需的元件。如此的内嵌装置不仅执行密码运算,也确实提供低成本、低电源,例如通信系统中的加密/解密处理器。为求简明,本发明将这些替代的处理元件参照成上述的处理器。
此外,虽然本发明提及128比特区块,但是许多不同区块的大小可以透过改变暂存器的大小而被应用,其中暂存器传送输入资料、输出资料、钥匙以及控制字组。
并且,虽然本应用显著以资料加密标准、三重资料加密标准以及进阶加密标准为其特征,但本发明也包含较少人知的区块密码演算法,例如:MARS密码、Rijndael密码、Twofish密码、Blowfish密码、Serpent密码以及RC6密码。足以理解的是,本发明提供在微处理器中用于区块密码的装置及支援的演算法,其基元区块密码运算可透过单一指令的执行而引动。
并且,虽然本发明在此以区块密码演算及其相关技术以执行区块密码功能为特征,但是除了区块密码的外其他形式的密码也包含于本发明应用范围之内。可足以观察的是,提供一单一指令,由此,使用者可指示一相称的微处理器执行一密码运算,例如:加密或解密,其中微处理器包含一密码单元,此密码单元依指示完成指令所指定的密码功能。
并且,在此所讨论的回合引擎提供一两阶装置可管线处理两区块的输入资料,但其他实施例也可考虑多于两阶段装置。阶段的分配对支援更多输入资料区块的管线处理,将发展协调相称微处理器中其他阶段的分配。
最后,虽然本发明具体讨论支援复数个演算法的一单独密码单元,但是本发明也提供理解在一相称微处理器中与其他执行单元并列操作耦合的多密码单元,而每一多密码单元是配置用以执行一具体指定的密码演算,例如:一第一单元是配置用以执行进阶加密标准演算法、一第二单元是配置用以执行资料加密标准演算法等。
以上所述仅为本发明的较佳实施例而已,并非用以限定本发明申请专利范围;凡其他为脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在下述申请专利范围。

Claims (15)

1.一执行密码运算的装置,其特征在于,包含:
一密码指令电路,用以产生一密码指令,该密码指令是由一计算装置接收并将其当成执行于该计算装置的一指令流的一部分,其中该密码指令指定该些密码运算其中之一以及在被指定的密码运算执行期间指定一已提供的密码钥匙扩展成一对应的钥匙排程以供使用;
一钥匙产生逻辑电路,操作耦合于该密码指令电路,且是配置以指示该计算装置来扩展该已提供的密码钥匙成该对应的钥匙排程;以及
一执行逻辑电路,操作耦合于该钥匙产生逻辑电路,且是配置以扩展该已提供的密码钥匙成该对应的钥匙排程。
2.如权利要求1所述的执行密码运算的装置,其特征在于,其中该密码运算可以具有下列功能的某一种:
一加密运算,该加密运算包含加密复数个明文区块,以产生相对复数个密文区块;以及
一解密运算,该解密运算包含解密复数个密文区块,以产生相对复数个明文区块。
3.如权利要求1所述的执行密码运算的装置,其特征在于,其中该对应的钥匙排程是包含一扩展钥匙排程。
4.如权利要求1所述的执行密码运算的装置,其特征在于,其中该钥匙产生逻辑电路是配置用以转译一控制字组中的一钥匙产生栏位,且该密码指令参照该控制字组。
5.如权利要求1所述的执行密码运算的装置,其特征在于,其中该密码指令是隐含参照该计算装置的复数个暂存器。
6.如权利要求5所述的执行密码运算的装置,其特征在于,其中该些暂存器至少可以为下列可能变化的某一种或其任意组合:
一第一暂存器,其中该第一暂存器的内容是包含指向一第一存储器地址的一第一指标,该第一存储器地址是依据欲完成的被指定的密码运算指定存储器内一第一位置,以存取复数个输入文字区块;
一第二暂存器,其中该第二暂存器的内容是包含指向一第二存储器地址的一第二指标,该第二存储器地址指定存储器内一第二位置,以储存相对复数个输出文字区块,而相对该些输出文字区块被产生,是由于复数个输入文字区块内完成被指定的密码运算;
一第三暂存器,其中该第一暂存器的内容是指示复数个输入文字区块中的复数个文字区块;
一第四暂存器,其中该第四暂存器的内容是包含指向一第三存储器地址的一第三指标,该第三存储器地址指定存储器内一第三位置以存取密码钥匙资料,以用于完成被指定的密码运算;
一第五暂存器,其中该第五暂存器的内容是包含指向一第四存储器地址的一第四指标,该第四存储器地址指定存储器内一第四位置,该第四位置包含一初始向量位置,该初始向量位置的内容包含一初始向量或一初始向量等效物以用于完成被指定的密码运算;以及
一第六暂存器,其中该第六暂存器的内容是包含指向一第五存储器地址的一第五指标,该第五存储器地址指定存储器内一第五位置以存取一控制字组以用于完成被指定的密码运算,其中该控制字组指定被指定的密码运算的密码参数,该控制字组包含:
一钥匙产生栏位,是配置用以指定在被指定的密码运算执行期间指定已提供的密码钥匙扩展成该对应的钥匙排程以供使用。
7.如权利要求6所述的执行密码运算的装置,其特征在于,其中该密码钥匙资料是包含该已提供的密码钥匙。
8.如权利要求1所述的执行密码运算的装置,其特征在于,其中该执行逻辑电路包含:
一密码单元,配置用以在每一复数个输入文字区块执行复数个密码回合,以产生每一复数个相对输出文字区块,其中该些密码回合是由提供给该密码单元的一控制字组所指定。
9.一执行密码运算的装置,其特征在于,包含:
一元件内的一密码单元,该密码单元是配置用以执行该些密码运算其中之一,并回应接收一指令流内一密码指令,该密码指令指定被指定的密码运算以及在被指定的密码运算执行期间指定一密码钥匙扩展成一对应的钥匙排程以供使用;以及
一钥匙产生逻辑电路,操作耦合于该密码单元且是配置用以指示该元件,以执行被指定的密码运算并以扩展该密码钥匙成该对应的钥匙排程。
10.如权利要求9所述的执行密码运算的装置,其特征在于,其中该对应的钥匙排程是包含一扩展钥匙排程。
11.如权利要求9所述的执行密码运算的装置,其特征在于,其中该钥匙产生逻辑电路是配置用以转译一控制字组中的一钥匙产生栏位,且该密码指令参照该控制字组。
12.一种在一装置执行密码运算的方法,其特征在于,包含:
接收一密码指令,该密码指令在复数个密码运算其中的一执行期间指定一密码钥匙扩展成一对应的钥匙排程以供使用;以及
扩展该密码钥匙成该对应的钥匙排程。
13.如权利要求12所述的在一装置执行密码运算的方法,其特征在于,其中该接收包含:
由一控制字组的一栏位指定该密码钥匙扩展成该对应的钥匙排程,其中该控制字组是由该密码指令所参照。
14.如权利要求12所述的在一装置执行密码运算的方法,其特征在于,其中该对应的钥匙排程是包含一扩展钥匙排程。
15.如权利要求12所述的在一装置执行密码运算的方法,其特征在于,其中该接收包含:
指定该密码指令是依据x86指令格式。
CN2005100590315A 2004-04-16 2005-03-24 产生密码钥匙排程的装置及方法 Active CN1655496B (zh)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
CN1655496A true CN1655496A (zh) 2005-08-17
CN1655496B CN1655496B (zh) 2010-07-14

Family

ID=34912745

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005100590315A Active CN1655496B (zh) 2004-04-16 2005-03-24 产生密码钥匙排程的装置及方法

Country Status (4)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101622816B (zh) * 2007-03-28 2013-05-01 英特尔公司 用于高级加密标准(aes)的灵活结构和指令

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2823039B1 (fr) * 2001-03-30 2003-08-01 Canal Plus Technologies Systeme et procede de transmission d'informations chiffrees a cle chiffree
US10572824B2 (en) 2003-05-23 2020-02-25 Ip Reservoir, Llc System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines
EP2528000B1 (en) 2003-05-23 2017-07-26 IP Reservoir, LLC Intelligent data storage and processing using FPGA devices
US7783037B1 (en) * 2004-09-20 2010-08-24 Globalfoundries Inc. Multi-gigabit per second computing of the rijndael inverse cipher
US7933405B2 (en) * 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
WO2007121035A2 (en) * 2006-03-23 2007-10-25 Exegy Incorporated Method and system for high throughput blockwise independent encryption/decryption
US8879727B2 (en) * 2007-08-31 2014-11-04 Ip Reservoir, Llc Method and apparatus for hardware-accelerated encryption/decryption
JP2008270870A (ja) * 2007-04-16 2008-11-06 Sony Corp 通信システム、通信装置及び通信方法、並びにコンピュータ・プログラム
US20100246815A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the kasumi cipher algorithm
US20100250965A1 (en) * 2009-03-31 2010-09-30 Olson Christopher H Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm
US8832464B2 (en) * 2009-03-31 2014-09-09 Oracle America, Inc. Processor and method for implementing instruction support for hash algorithms
US8654970B2 (en) * 2009-03-31 2014-02-18 Oracle America, Inc. Apparatus and method for implementing instruction support for the data encryption standard (DES) algorithm
US9317286B2 (en) * 2009-03-31 2016-04-19 Oracle America, Inc. Apparatus and method for implementing instruction support for the camellia cipher algorithm
US10929401B2 (en) * 2009-04-16 2021-02-23 Tibco Software Inc. Policy-based storage structure distribution
US8356185B2 (en) * 2009-10-08 2013-01-15 Oracle America, Inc. Apparatus and method for local operand bypassing for cryptographic instructions
US9231758B2 (en) 2009-11-16 2016-01-05 Arm Technologies Israel Ltd. System, device, and method of provisioning cryptographic data to electronic devices
US10454674B1 (en) * 2009-11-16 2019-10-22 Arm Limited System, method, and device of authenticated encryption of messages
TWI517653B (zh) * 2009-11-16 2016-01-11 Arm科技有限公司 電子裝置及密碼材料供應之方法
TWI427503B (zh) * 2010-10-14 2014-02-21 Yu Chun Kuo 時空鎖
US8966279B2 (en) * 2010-12-21 2015-02-24 Apple Inc. Securing the implementation of a cryptographic process using key expansion
US8498410B2 (en) * 2011-03-14 2013-07-30 Motorola Solutions, Inc. Methods for customizing a Rijndael block cipher
US8737604B2 (en) 2011-05-09 2014-05-27 Advanced Micro Devices, Inc. Processor with architecture implementing the advanced encryption standard
JP2013247511A (ja) * 2012-05-25 2013-12-09 Meijo University 耐タンパ性評価方法,そのプログラム及び耐タンパ性評価装置
US10318748B2 (en) * 2016-09-30 2019-06-11 Intel Corporation Techniques to protect fuses against non-destructive attacks
WO2018119035A1 (en) 2016-12-22 2018-06-28 Ip Reservoir, Llc Pipelines for hardware-accelerated machine learning
US11271723B2 (en) * 2018-11-08 2022-03-08 Daniel Eugene Hale Apparatus and method for unbreakable data encryption

Family Cites Families (87)

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

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101622816B (zh) * 2007-03-28 2013-05-01 英特尔公司 用于高级加密标准(aes)的灵活结构和指令
US8538015B2 (en) 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US9634828B2 (en) 2007-03-28 2017-04-25 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US9634829B2 (en) 2007-03-28 2017-04-25 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US9634830B2 (en) 2007-03-28 2017-04-25 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US9641319B2 (en) 2007-03-28 2017-05-02 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US9641320B2 (en) 2007-03-28 2017-05-02 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US9647831B2 (en) 2007-03-28 2017-05-09 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US9654282B2 (en) 2007-03-28 2017-05-16 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US9654281B2 (en) 2007-03-28 2017-05-16 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
CN103152168B (zh) * 2007-03-28 2017-12-05 英特尔公司 用于高级加密标准(aes)的处理器和指令
US10158478B2 (en) 2007-03-28 2018-12-18 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US10164769B2 (en) 2007-03-28 2018-12-25 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US10171231B2 (en) 2007-03-28 2019-01-01 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US10171232B2 (en) 2007-03-28 2019-01-01 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US10181945B2 (en) 2007-03-28 2019-01-15 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US10187201B2 (en) 2007-03-28 2019-01-22 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US10256971B2 (en) 2007-03-28 2019-04-09 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US10256972B2 (en) 2007-03-28 2019-04-09 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US10263769B2 (en) 2007-03-28 2019-04-16 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US10270589B2 (en) 2007-03-28 2019-04-23 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US10291394B2 (en) 2007-03-28 2019-05-14 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US10313107B2 (en) 2007-03-28 2019-06-04 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US10554386B2 (en) 2007-03-28 2020-02-04 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US10581590B2 (en) 2007-03-28 2020-03-03 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)

Also Published As

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

Similar Documents

Publication Publication Date Title
CN1655496A (zh) 产生密码钥匙排程的装置及方法
US10985903B2 (en) Power side-channel attack resistant advanced encryption standard accelerator processor
CN107667499B (zh) 带密钥散列消息认证码处理器、方法、系统和指令
TWI770689B (zh) 用於記憶體位址範圍的支持可組態安全性級別的處理器、方法及電腦可讀取非暫態儲存媒體
US9390291B2 (en) Secure key derivation and cryptography logic for integrated circuits
CN110233720B (zh) Sm4加速处理器、方法和系统
EP2889760B1 (en) SMS4 acceleration processors, methods, systems, and instructions
US9264048B2 (en) Secret operations using reconfigurable logics
US20040250090A1 (en) Microprocessor apparatus and method for performing block cipher cryptographic fuctions
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
US9996708B2 (en) SMS4 acceleration processors having encryption and decryption mapped on a same hardware
CN110138556A (zh) 数据处理装置及数据处理方法
CN1661958B (zh) 区块密码功能的微处理器及方法
CN100391145C (zh) 重组透明化区块密码编译方法及装置
US7519833B2 (en) Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine
CN1658550A (zh) 用于执行密码操作的装置和方法
CN1658548A (zh) 配置密码引擎资料区块的微处理器及方法
CN1649296A (zh) 执行透明化密码区块串行模式密码运算的装置及方法
Wardhani et al. Fast implementation of AES on Cortex-M3 for security information devices
CN1652163B (zh) 执行通透性输出反馈模式密码功能的方法及装置
CN1538656A (zh) 微处理器区块密码编译方法与装置
CN100527664C (zh) 具最佳化区块密码功能的微处理器及方法
CN1684408B (zh) 提供可建构式加密区块加密效果的微处理装置及方法
CN1607763A (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