CN102594547A - 执行通透性输出反馈模式密码功能的方法及装置 - Google Patents

执行通透性输出反馈模式密码功能的方法及装置 Download PDF

Info

Publication number
CN102594547A
CN102594547A CN2012100514523A CN201210051452A CN102594547A CN 102594547 A CN102594547 A CN 102594547A CN 2012100514523 A CN2012100514523 A CN 2012100514523A CN 201210051452 A CN201210051452 A CN 201210051452A CN 102594547 A CN102594547 A CN 102594547A
Authority
CN
China
Prior art keywords
block
buffer
crypto
instruction
appointment
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.)
Pending
Application number
CN2012100514523A
Other languages
English (en)
Inventor
G.葛连.亨利
汤姆斯.A.克雷斯平
泰瑞.派克斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/826,745 external-priority patent/US7529368B2/en
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN102594547A publication Critical patent/CN102594547A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供一种在处理器内对多个输入数据区块执行密码运算的装置及方法。在一实施例中,其提供一用以执行密码运算的装置,此装置包括一密码指令电路、输出反馈模式逻辑电路和执行逻辑电路。密码指令电路提供至少一密码指令,此密码指令通过一计算设备接收而作为计算设备所执行一指令流的部分。密码指令规定一种密码运算,密码运算包括在一相应的多个输入文字区块上执行多个输出反馈区块密码运算。输出反馈模式逻辑电路连接到密码指令,并指引计算设备不断更新指针缓存器和每个密码反馈区块密码运算的一初始化向量位置。执行逻辑电路被连接到输出反馈模式逻辑电路,并用以执行一密码运算。

Description

执行通透性输出反馈模式密码功能的方法及装置
本发明是以下专利申请的分案申请:申请号:200510054348.X,申请日:2005年3月10日,发明名称:执行通透性输出反馈模式密码功能的方法及装置
技术领域
本发明涉及微电子学领域,尤其涉及一种在微处理器或其它设备中执行通透性输出反馈模式密码运算的装置及方法。
背景技术
早期的计算机***是与其它计算机***分开独立运算的,因此在一定意义上,早期计算机***上所执行应用程序所需的所有输入数据常驻于计算机***,或者是在运行时由应用程序员来提供的。应用程序执行完之后产生的输出数据一般都是打印在纸张上或是以文件的形式储存在磁带、磁盘、或其它作为计算***组成部分的大量储存设备上。这样,输出文件就可以作为随后在同一个计算机***上所运行的应用程序的输入文件,如果输出数据之前以文件被储存在可移动或便携式大量储存设备上,它就可以被一个不同但是兼容的计算***上的应用程序所使用。在这些早期***上,逐渐了解保护敏感信息的需求,并且在其它信息安全措施中,密码程序发展及利用来保护未授权公开的敏感数据。一般来说,这些密码程序将储存在大量储存装置的输出数据的加密及解密。
近年来,使用者发现连接网络计算机,以提供存取已共享的数据。连带地,网络结构、操作***及数据传输协议,同样地将存取已分享数据的能力,发展到不仅仅是支持,甚至扮演起突起性重要的角色。例如,在今日:一计算机工作站的使用者,能够读取不同工作站或网络文件服务器的文件、使用因特网取得新闻及其它信息、在数百部计算机间传送及接收电子信息(也即电子邮件)、连接到供货商的计算机***,提供***或银行功能信息,以进行与供货商之间的买卖、或在餐厅、机场或其它公共场所利用无线网络进行前述活动,都是相当平常的事情。因此,保护未授权公开的敏感数据本身及传输的需求剧烈地成长。一使用者在一给定计算机多层协议期间,有义务来保护敏感数据的案例越来越多。目前新闻头条规律性地加重计算机信息安全议题的力道,例如垃圾邮件、黑客攻击、个人数据外流、还原工程、网络诈骗以及***诈欺等公众议题的最前线。而因为这些预谋的网络***,以不正当手段入侵个人隐私范围的影响,有关机关已经拟定出相对应的新法、严格的执行及公众教育的程序。然而,没有任何一种反应在计算机信息妥协处理趋势上表现出作用。原本只有政府关心的事情、金融制度、军事及间谍问题,现在变成一般市民从其家用计算机读取电子邮件或执行活储户头存取时一种显著的主题。
在信息安全范畴方面,已逐渐发展出一些技术与装置可以让信息只会被特定的对像所接收了解,即所谓的密码学(cryptography)。当特别应用于保护信息时,其为在计算机间储存或传送时,加密使用于传送敏感的信息(已知如“明文”(cleartext)或“本文”(plaintext)至不能了解的形式(如“密文”(ciphertext))。明文转换至密文的传送过程称“加密(encryption)”、“译成密码(enciphering)”、或“密码化(ciphering)”,且密文转换至明文的传送过程称“解密(decryption)”、“解除密码(deciphering)”、或“转换密码(inverse ciphering)”。
在密码范畴中,建立数个步骤及规则,来允许使用者不需要高度知识或努力来完成密码运算,且使这些使用者能够传送或以其它方式如加密形式提供其信息给其它使用者。顺着加密信息,传送者一般提供接受者一个不能使接受者解除加密信息的“加密密码”,因此接受者不能够移除或以其它方式增加未加密原始信息的存取。一种技术将这些步骤或规则采取密码保护,数学运算及特别设计的应用程序形式将高敏感度信息加密或解密。
一些运算类别使用于将数据加密或解密。在此提及的第一类运算类别(如公共金钥加密运算:RSA运算)利用两种加密密码(一种公共金钥(public key)及一种私人金钥(private key))来将数据加密或解密。提及一些公共金钥运算,一种公共金钥利用来传送给接受者的数据加密。在使用者公共及私人金钥兼有一个数学演算关系,接受者必须利用其私人金钥将传送数据解密以恢复数据。虽然此类加密运算在今日广泛被使用,但加密及解密运算速度仍然过慢,即使只加密与解密少量数据。第二类运算,如对称金钥运算(symmetric keyalgorithms),提供数据安全相当程度,且速度更快。这些运算称为对称金钥运算,因为其使用加密金钥于加密及解密信息。有三种公知的主要加密金钥运算:数据加密标准规则(data encryption standard,DES),三重数据加密标准规则(Triple DES)、及进阶加密标准规则(advanced encryption standard,AES)。因为这些演算强度保护高敏感度数据,其现在由美国政府及其代理机构使用。但可以预期,这些技术中的至少一个将在未来成为商业或私人传送标准。根据这些对称金钥运算,明文及密文分别被区隔于一个特殊的大小来加密或解密。例如,在128位大小区间的进阶加密标准规则完整加密运算,且使用128、192及256位的加密金钥。其它对称金钥运算允许192及256位数据组的进阶加密标准。提及分组加密运算,一种1024位明文信息为如八个128字节加密。
全部的对称金钥运算利用相同形式的次运算,将一明文区块加密。且提及一般更常使用的对称金钥运算,一种最初加密金钥扩展多种金钥(如一种“金钥目录”),每一个如符合次运算加密“回合”(round)在明文区块中完成。例如,金钥目录的第一金钥使用来完成在明文区块上次运算的第一加密回合,其中第二回合利用金钥目录的第二金钥来产生第二结果。一种特定数量的次单元回合被完成来产生一个密文本身的最终回合结果。进阶加密标准规则运算的每一回合中的次运算,尚有次位(或S-box)、移列(ShiftRows)、混栏(MixColum)、加入回合键(AddRoundKey)等术语。每一回合期间,一种密文区块解密完成,除了完成密文输入转换密码以及转换次运算(如混栏、移列),每一回合最终结果为明文区块。
数据加密标准规则及三重数据加密标准规则利用不同特性的次运算,但次运算与这些进阶加密标准规则同工,因为其利用于类似方式转换一明文区块成一密文区块。
在多重连续测试组上完成密码运算,全部对称金钥运算利用相同的模式。这些模式包含电子密码书(electronic code book、ECB)模式、密码区块串行(cipher block chaining、CBC)模式、密码反馈(cipher feedback、CFB)模式、及输出反馈(output feedback、OFB)模式。在次运算完成期间,一些模式利用一种附加初始化向量,且一些使用完成于第一明文区块加密第一位置的密文输出,如一种附加输入至完成于第二明文区块的加密第二位置。更多的相关技术细节,可以参见Federal Information Processing Standards Publication46-3(FIPS-46-3),1999年10月25日,其详细讨论了数据加密标准规则、三重数据加密标准规则;以及参见FIPS-197,2001年11月26日,其对进阶加密标准作了详细解释。前述标准规则由国家标准科技研究所(National Instituteof Standards and Technology、NIST)颁布及主张。此外,个别的指令、***、套装工具及对策可参考国家标准科技研究所的计算机安全应变中心(CSRC),网址为http://csrc.nist.gov/。
公知技术人员可察觉多数应用程序可以有效地在计算机上执行以完成加密运算(如加密及去密)。事实上,一些运算***(如
Figure BDA0000139734480000041
Linux)在原始加密形式、加密应用程序接口及相似物时,直接提供加密/解密服务。无论如何,今日计算机加密技术仍存在一些缺阱。请直接参考图1,以在下面突显及讨论这些缺失。
图1为一种今日计算机加密应用的架构图100,描述一个与局域网络105连接的第一计算机工作站101、一个第二计算机工作站102、一个网络文件储存设备106、一个第一路由器107、或其它与广域网络(WAN)110如因特网、及一个无线网络由器108如IEEE标准802.11形成的接口也与局域网络105连接。一个笔记本计算机104利用无线网络109连接至无线网络由器108。广域网络110另一个重点,一个第二路由器111提供一个第三计算机工作站103接口。
如上提及,今日使用者在工作期间多次面临计算机信息安全性的议题。举例,在今日多重工作运算***控制下,一个工作站101使用者可同步完成数个工作,每一个皆需要密码运算。工作站101使用者需要进行加密/解密应用程序112(如部分运算***提供或由运算***驱动)已在网络文件储存设备106上储存区域文件。在文件储存的同时,使用者可传送加密信息至位于第二计算机工作站102的第二使用者,其也需要执行加密/解密运算112。加密信息可为实时(如一种立即信息)或非实时(如电子邮件)。另外,使用者还可从第三计算机工作站(103)经由广域网络110存取或提供他/她最终数据(如信用***码、金融转帐等)或其它形式的敏感数据。当走出公司进入任何一个在局域网络105上的分享资源101、102、106、107、108、109、工作站101,使用者使用第三计算机工作站103可代表家用计算机或远距计算机103。每一个前述动作需要一个符合执行加密/解密运算112的例子。此外,无线网络109现在通常提供于咖啡店、机场、学校、及其它公共场所,因此笔记本计算机104使用者一个加密解密无论是他/她的信息传送/接收其它使用者立即的需要,且经由无线网络109至无线网络由器108加密或解密所有信息。
公知技术者可以了解,每一个上述活动都需要在工作站101-104上做加密运算,也就相应有执行一个立即的加密/解密应用程序112的需求。因此,计算机101-104还可能同时完成数百个加密运算。
无论如何,存在一些在计算机***101-104上执行至少一个以上立即的加密/解密运算112而完成加密运算方法的限制。例如,经由一个软件程序完成一个前述功能相对比经由硬件完成相同功能执行更慢。每一个加密/解密运算112都需要一段时间,并且正在计算机101-104上执行的现行程序可能在这段时间内必须暂停执行,且加密运算(如明文、密文、模式、金钥等)参数必须通过运算***至加密/解密运算112,执行加密运算。且因为加密运算必须包含特殊组别数据几回次运算,加密/解密运算(112)执行包含执行多个计算机延伸指令,因此全部***运算速度有不利的影响。如一般公知技术人员所能查觉,在
Figure BDA0000139734480000051
传送一个小的加密电子邮件会较传送一个未加密电子邮件慢5倍。
另外,当前技术的局限是由操作***干涉的延迟所造成的。大多数应用程序并不提供整数金钥生成或加密/解密元件,它们执行操作***的元件或内嵌应用程序,以完成这些任务。而操作***按照其它正在执行应用程序的需求及中断进行调度。
甚至,本发明的发明者注意到在当前计算机***101-104上密码运算的完成,与在微处理器中专用浮点单元出现前浮点数学运算的完成是类似的。早期的浮点运算通过软件实现,所以执行的速度很慢。就像浮点运算一样,通过软件执行密码运算是相当慢的。随着浮点技术的改进,浮点指令提供在浮点共同处理器上执行,浮点共同处理器执行浮点运算比软件的实现要快很多,当然它也增加了***的成本。同样地,今日密码浮点存在着以扩展板或通过并行端口或其它***接口(如USB)连接到主处理器之外部设备的形式。这些浮点当然使得密码运算的执行比一般软件的实现要快。但密码共同处理器给***配置增加了成本,需要额外的电源、而且降低了***的可靠性。由于数据通路不像主微处理器那样在同一个模块上,所以密码共同处理器的执行乃更易被窃听。
因此,本发明的发明者了解到人们需要在今日的微处理器里有一个专门的密码硬件,这样需要密码运算的应用程序可以直接经由一条单独的微密码指令指示微处理器执行密码运算。而密码指令电路提供至少一个密码指令。本发明的发明者同时也了解到应该提供这样的功能,减少对操作***的干涉和控管。并且密码指令最好能够在应用程序的特权级加以使用,专用密码硬件能够与当前流行的微处理器兼容。同时密码硬件和相关密码指令要提供与先前操作***和程序的兼容的方式。最主要的是提供一种执行密码运算的装置和方法,使有效抵御未授权的窃听,并能支持多种密码算法,支持对在其中实施的特殊密码算法进行验证和测试,允许使用者提供的金钥和自行产生的金钥,支持多重的数据块大小和金钥长度,提供可编程的区块加密/解密模式,即如电子码书式、密码区块串行、密码反馈模式和输出反馈模式等,并且在使用上述可编程区块加密/解密模式时能够对大量数据有效执行区块密文密码功能。
发明内容
本发明的一实施例是用以完成密码运算的装置。该装置包含密码指令电路、输出反馈区块模式逻辑电路、执行逻辑电路和位储存器。密码指令电路,其提供至少一密码指令,该密码指令由一计算设备所接收,以作为在该计算设备上执行的一指令流的一部分。其中该密码指令指定多个密码运算之一,且其中指定的该密码运算包含:在一相对应多个输入文字区块,执行多个输出反馈区块密码的运算。输出反馈区块模式逻辑电路,其被连接到该密码指令电路,以驱动该计算设备来更新指针缓存器和每一个所述输出反馈区块密码运算的一初始化向量位置。执行逻辑电路,其被连接到该输出反馈区块指标逻辑电路,以执行指定的该密码运算。位储存器,连接到该执行逻辑电路,其用以储存一位,该位用以表明指定的该密码运算是否已被一中断事件所打断。
本发明的一实施例是在一微处理器内提供用以完成密码运算的装置。该装置包括一密码指令电路、输出反馈模式逻辑电路和执行逻辑电路。密码指令电路用以产生一密码指令,其通过计算装置所接收,并作为在计算装置上所执行指令流的一部分。密码指令规定一种密码运算。这种密码运算包括多个输出反馈区块密码运算,而输出反馈区块密码运算则被执行在相对应的多个输入文字区块中。输出反馈模式逻辑电路和密码指令电路密切地结合在一起。输出反馈模式逻辑电路指示计算装置更新指针缓存器及每一个这些输出反馈区块密码运算的一初始化向量位置。执行逻辑电路和输出反馈模式逻辑电路紧密结合,执行逻辑电路以执行一密码指令。
根据上述构想的装置,其中指定的该密码运算还包含下列运算的至少一个:一输出反馈区块模式加密运算,该输出反馈区块模式加密运算包含对多个明文区块加密以产生相应的多个密文区块;及一输出反馈区块模式解密运算,该输出反馈区块模式解密运算包含对多个密文区块解密以产生相应的多个明文区块。
根据上述构想的装置,其中该密码指令指定执行指定的该密码运算的输出反馈模式。
根据上述构想的装置,其中还包含一位储存器,连接到该执行逻辑电路,其用以储存一位,用以表明指定的该密码运算是否已被一中断事件所打断。
根据上述构想的装置,其中该中断事件包含转移程控到一处理该中断事件的程序流程,及其中执行在当前输入文字区块指定的该密码运算被中断。
根据上述构想的装置,其中当从程控返回该密码指令时,指定的该密码运算在该当前输入文字区块中被执行。
根据上述构想的装置,其中在每一个相对应所述输入文字区块上的每一个所述输出反馈区块模式密码运算完成时,该输出反馈区块模式逻辑电路至少进行下列运作的一个:指引该计算设备修改该指针缓存器,以指向下一个输入和输出文字区块;指引该计算设备到一初始化向量缓存器的内容所指向的存储器位置,以储存当前的等效初始化向量;及指引该计算设备,使经由一当前输入文字区块及一当前输出文字区块二者的互斥或运算,以产生该当前的等效初始化向量。
根据上述构想的装置,其中该中断事件包含一中断、一异常、一页面出错或一任务切换。
根据上述构想的装置,其中该密码指令参考到该计算设备中的多个缓存器。
根据上述构想的装置,其中这些缓存器包含选自下列的一个:一第一缓存器,其中该第一缓存器的内容包含一指向第一存储器地址的第一指针,该第一存储器地址指定在存储器中的一第一位置,在指定的该密码运算将被完成时存取所述输入数据区块;一第二缓存器,其中该第二缓存器的内容包含指向一第二存储器地址的一第二指针,该第二存储器地址指定在该存储器中的第二位置以保存相对应的多个输出文字区块,所述相对应的输出文字区块在多个输入文字区块完成指定的该密码运算所产生的结果;一第三缓存器,其中该第三缓存器的内容系表明在多个输入文字区块内的多个文字区块;一第四缓存器,其中该第四缓存器的内容包含指向一第三存储器地址的一第三指针,该第三存储器地址指定一在存储器中的第三位置,以供在完成指定的该密码运算所使用密钥数据的存取;一第五缓存器,其中该第五缓存器的内容包含一指向一第四存储器地址的第四指针,该第四存储器地址指定一在存储器中的第四位置,该第四位置包含该初始化向量位置,该初始化向量位置的内容包含一在完成指定的该密码运算时所使用的初始化向量或等效初始化向量;及一第六缓存器,其中该第六缓存器的内容包含指向一第五存储器地址的一第五指针,该第五存储器地址指定一在存储器中的第五位置以供完成指定的该密码运算所使用控制字的存取,其中该控制字用以指定该密码运算所使用的多个密码参数。
根据上述构想的装置,其中该执行逻辑电路包含:一个密码单元,其在每一个所述输入文字区块上执行多个密码回合,以产生相对应的每一个的多个输出文字区块,其中所述密码回合是由该密码单元的控制字所指定。
本发明的另一实施例为一种执行密码运算的装置。该装置包括一内嵌在一设备中的密码单元和输出反馈模式逻辑电路。密码单元执行数个密码运算之一,并且根据所接收到的一指令流中的一密码指令来指定是哪个密码运算。被指定的密码运算包括数个密码反馈区块密码运算,而密码反馈区块密码运算则被执行于所对应的数个输入文字区块中。输出反馈模式逻辑电路和密码单元密切地结合在一起。输出反馈模式逻辑电路指示该设备更新指针缓存器的内容、以及每一多个输出反馈区块密码运算的一初始化向量位置。
根据上述构想的装置,其中一中断事件使得一程控转移到一处理该中断事件的程序流程,在当前输入文字区块执行指定的该密码运算被中断。
根据上述构想的装置,其中当从程控返回到该密码指令时,指定的该密码运算即在该当前输入文字区块上被执行。
根据上述构想的装置,其中在每一所述相对应多个输入文字区块上的每一所述输出反馈区块密码运算完成时,该输出反馈区块模式逻辑电路进行下列运作的一个:指引该计算设备修改该指针缓存器的内容,以指向下一个输入和输出文字区块处;及指引该计算设备储存一等效初始化向量到该初始化向量位置处,其中该初始化向量位置包含由一初始化向量缓存器的内容所指向的存储器位置。
根据上述构想的装置,其中该输出反馈区块模式逻辑电路指引该计算设备经由一当前输入文字区块及一当前输出文字区块的互斥或运算,而产生一等效初始化向量。
本发明的另一实施例为一种在一设备执行密码运算的方法。该方法包括响应收到的密码指令并执行数个密码运算之一,其中密码指令规定指定的密码运算。而这个执行步骤包括完成在相对应数个输入文字区块中的数个输出反馈模式区块运算。该方法还包括经由在下一个输入文字区块上的下一个输出反馈模式区块运算,将一个等效初始化向量写到一初始化向量的位置处。
根据上述构想的方法,其还包含:转移程控到一处理一中断事件的程序流程,并中断在该当前输入文字区块上指定的该密码运算的执行。
根据上述构想的方法,其还包含:在从程控返回到该转移后的该密码指令时,在该当前输入文字区块上进行该执行。
根据上述构想的方法,其中该接收包含:指定一输出反馈模式加密运算,以作为指定的该密码运算。
根据上述构想的方法,其中该接收包含:指定一输出反馈区块模式解密运算,以作为指定之密码运算。
根据上述构想的方法,还包含:产生该等效初始化向量。
根据上述构想的方法,其中该产生包含:一当前输入字文区块和一当前输出文字区块二者之间的互斥或运算。
附图说明
图1是说明当前密码应用的示意图。
图2是描述执行密码运算技术的示意图。
图3是依据本发明用以执行密码运算的微处理器装置的示意图。
图4是依据本发明的微密码指令实施例的示意图。
图5是依据图4的微密码指令说明典型区块密码模式的数值表。
图6是详细描述依据本发明在一个x86兼容微处理器内密码单元的方块图。
图7是说明在图6的微处理器内执行密码子运算的典型微指令的示意图。
图8是根据图7的格式说明一载入微指令缓存器项的数值表。
图9是根据图7的格式揭示一储存微指令缓存器项的数值表。
图10是依据本发明用以规定密码运算的密码参多个的典型控制字格式示意图。
图11是依据本发明密码单元详细描述的方块图。
图12是依据本发明说明一种区块密码逻辑电路实施例的方块图,其按照进阶加密标准执行密码运算。
图13是依据本发明描述在一中断事件中用以查看密码参数状态方法的流程图。
图14是依据本发明描述在一个或多个中断的事件下于多个输入数据区块中完成特定输出反馈模式密码运算的方法的流程图。
100方块图                        101第一计算机工作站
102第二计算机工作站              103第三计算机工作站
104笔记本计算机                  105局域网络
106网络文件储存设备              107第一路由器
108无线网络由器                  109无线网络
110广域网络                      111第二路由器
112加密/解密应用程序
200方块图                        201微处理器
202操作***                      203应用存储器
204密码金钥产生程序              205金钥目录
206区块加密程序                207区块解密程序
208初始化向量                  209密码参数
210明文区块                    211密文区块
300方块图                      301微处理器
302指令缓存器                  303转译逻辑电路
304微指令队列                  305、306微指令入口
307缓存器组                    308-313缓存器
314载入逻辑电路                315数据快取
316密码单元                    317储存逻辑电路
318写回逻辑电路                319存储器总线
320操作***                    321***存储器
322密码指令                    323初始控制字
324初始金钥或金钥目录          325初始化向量
326输入文字区块                327输出文字区块
328执行逻辑电路
400微密码指令                  401可选择性前置字段
402重复前置字段                403运算码字段
404区块密码模式字段            500表
600x86兼容微处理器             601撷取逻辑电路
602转译逻辑电路                603转译器
604微码只读存储器              605缓存器级
606寻址级                      607载入级
608执行级                      609微指令队列
610整数单元                    611微指令队列
612浮点单元                    613微指令队列
614多媒体延伸集单元            615微指令队列
616串流延伸集单元              617密码单元
618储存级                      619写回级
620载入总线                    621延迟信号
622储存总线                    624标记缓存器
625X位                        626中断逻辑电路
627软件及硬件中断信号         628机器特定缓存器
629E位                        630特性控制缓存器
631D位                        632执行逻辑电路
640输出反馈模式逻辑电路
700微指令                     701微运算码字段
702数据缓存器字段             703缓存器字段
704数据字段
800表                         900表
1000控制字                    1001保留字段
1002金钥大小字段              1003加密/解密字段
1004中间结果字段              1005金钥产生字段
1006算法字段                  1007回合计数字段
1100密码单元                  1101区块密码逻辑电路
1102金钥随机存取存储器        1103微运算码缓存器
1104控制字缓存器              1105输入-0缓存器
1106输入-1缓存器              1107金钥-0缓存器
1108金钥-1缓存器              1109输出-0缓存器
1110输出-1缓存器              1111载入总线
1112储存总线                  1113延迟信号
1114微指令总线                1200区块密码逻辑电路
1201微指令缓存器              1202控制字缓存器
1203金钥-0缓存器              1204金钥-1缓存器
1205-1206输入缓存器           1207-1208输出缓存器
1210回合引擎控制器            1211-1214总线
1216-1218总线                 1220回合引擎
1221第一金钥XOR逻辑电路       1222第一缓存器缓存-0
1223S-Box逻辑电路             1224移列逻辑电路
1225第二缓存器缓存-1          1226混栏逻辑电路
1227第三缓存器缓存-2
1302方块                        1304判断方块
1306方块                        1308方块
1310方块                        1312方块
1402方块                        1404方块
1406判断方块                    1408方块
1410方块                        1412方块
1414方块                        1416方块
1418方块                        1420方块
1422方块                        1424判断方块
1426方块                        1428方块
具体实施方式
以下所述为应用公知技术而制造或使用文中特定应用及需求的本发明所列举的例子。然而,实施例中所提及的各种修改是用于彰显与公知技术的不同,此一般原则可应用于其它实施例中。因此,本发明并非限定于特定实施例。
通过上述关于密码程序的技术背景及当今计算机***所使用将数据加密及解密的相关技术,我们将参照图2来继续探讨这些技术及其限制。接着,将参照图3-14继续讨论本发明。本发明提供一种执行于当代计算机***的密码程序的装置及方法,相较于目前主流机器,该装置及方法显示了较佳的效能,因此满足了限制操作***的介入、电子式、旧式、计算机结构兼容性、算法及模式的可编程性、预防黑客入侵、及可测试性的上述目标。
现在请看图2,一方块图200描述了在上述当代计算机***上完成密码运算的技术。方块图200包括一个微处理器(microprocessor)201,其从一个应用程序对应的***存储器的一部分,被称作应用存储器(applicationmemory)203进行撷取指令电路和存取数据。指令电路提供至少一指令,其用来指示一密码运算,而指令电路包含逻辑电路、装置或微码(即微指令或本机指令(native instruction))、或是一个逻辑电路、装置或微码的组合,由于指令电路并非为本发明的重点,于此不再对此作详细说明。
程序的控制和从应用存储器203所存取的数据是由驻留在***存储器的已保护区域内的操作***(operating system)202所控管。如上述讨论,如果一个正在执行的应用程序(例如一电子邮件(email)程序或一文件案储存程序)需要执行一个密码运算,正在执行的应用程序即必须指示微处理器201执行特定的指令才能完成密码运算。这些指令也许就是正在执行应用程序部份的一个子程序,它们也可能是链接到正在执行应用程序的内嵌程序,也可能是操作***202所提供的服务。不管它们怎样结合,本领域技术人员将了解这些指令将驻留在一些指定的或是已分配的存储器区域中。
基于讨论的目的,这些储存区域将会被揭示在应用存储器203中,及包含一个密码金钥产生程序(cryptographic key generation application)204,其一般会产生或接收一个金钥并将金钥扩展成为一金钥目录(key schedule)205,以供密码回合运算使用。对于多区块的加密运算,一区块加密程序(encryptionapplication)206将被引动。加密程序206执行指令存取明文区块(plaintext)210、金钥目录205、诸如模式、金钥目录位置等更为详细加密运算的密码参数(cryptographic parameters)209。如果指定的模式需要,一个初始化向量(initialization vector)208也会通过加密程序206存取。加密程序206执行这些指令,以产生相对的密文区块(ciphertext)211。同样地,一区块解密程序(decryption application)207被引动为了执行区块解密运算。解密程序207执行数个指令,这些指令会存取密文211、金钥目录205、更为详细解密运算的密码参数209、及一初始化向量208(如果模式需要也会被存取)。解密程序207执行这些指令使产生相应的明文区块210。
值得注意的是,特定的指令须被执行以产生金钥和以加密或解密文字区块。上述的FIPS规范包含了许多伪码范例,使得需要被确定的指令数能够被估计出来,因此,本领域技术人员将会了解需上百个指令,以完成一个简单的区块加密运算。每一这些指令通过微处理器201执行,以完成所需的密码运算。进一步讲,执行这些指令以完成一个密码运算,对于当前正在执行应用程序的主要目的(如文件案控管,实时消息,电子邮件,远程文件案存取、***交易)来说,都是多余的运算。
因此,当前正在执行应用程序的使用者感觉到当前所执行程序的完成并不是有效率的。在独立的或内嵌的加密及解密应用程序206、207的情况下,启动和管理这些程序206、207也要受到操作***202的其它需求所支配,诸如支持中断、异常以及恶化问题的事件等。更进一步讲,对于在一计算***上所需求的每一并行的密码运算,程序204、206、207的一例子就是须分开配置于存储器203中。如上所述,可以预期的是,要求由一微处理器201并行的密码运算数目,将会随着时间持续增加。
本发明的发明人注意到了这些问题和当前计算机***密码技术的局限,更确认了提供在一不会对使用者出现程序延迟的微处理器中,执行密码运算的装置和方法的需求。因此,本发明于此提供一微处理器,经由专属的密码单元,执行密码运算的装置及相关的方法。当启动密码单元时,以经由一单一密码指令之程序化,来执行密码运算。现在将参照图3至图12以讨论本发明。
参照图3,一方块图300描述了一个依据本发明执行密码运算的微处理器装置。方块图300描述了一个微处理器(microprocessor)301,其通过一存储器总线(memory bus)319连到一***存储器(system memory)321上。微处理器301包括转译逻辑电路(translation logic)303从一指令缓存器(instructionregister)302接收指令电路。指令电路提供至少一指令,其用来指示一密码运算,而指令电路包含逻辑电路、装置或微码(即微指令或本机指令(nativeinstruction))、或是一个逻辑电路、装置或微码的组合,由于指令电路并非为本发明的重点,于此不再对此作详细说明。
转译逻辑电路303包含逻辑电路、装置或微码(即微指令或本机指令(native instruction))、或是一个逻辑电路、装置或微码的组合,或是能够转译指令到相关微指令序列的等效单元。在转译逻辑电路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提供给包括一缓存器组307的缓存器级逻辑电路。缓存器组(register file)307具有多个缓存器(registers)308-313,且这些缓存器的内容在执行一个指定的密码运算前即被建立。缓存器308-312指向存储器(memory)321中的相应位置(corresponding locations)323-327,这里存放着执行指定密码运算所需的数据。缓存器级被连接到载入逻辑电路(load logic)314,其被连接到数据快取(data cache)315,用来恢复执行指定之密码运算的数据。数据快取315通过存储器总线319连接到存储器321上。执行逻辑电路(execution logic)328和载入逻辑电路(load logic)314相接并通过上一级传送下来的微指令执行指定的运算。执行逻辑电路328包含逻辑电路、装置或微码(即微指令或本机指令)、或是一个逻辑电路、装置或微码的组合,或是能通过提供给它的微指令执行指定运算的等效单元。
在执行逻辑电路328中执行运算的单元可能被其它的电路、微码等所共享,即在微处理器301内完成其它的功能。执行逻辑电路328包括一个密码单元(cryptography unit)316,密码单元316从载入逻辑电路314接收,用以执行指定的密码运算所需的数据。微指令驱动密码单元316在多个输入文字区块326上执行指定的密码运算,以生成相关的多个输出文字区块(outputtext)327。密码单元316包含逻辑电路、装置或微码(即微指令或本机指令)、或是一个逻辑电路、装置或微码的组合,或是能执行密码运算的等效单元。在密码单元316中执行密码运算的单元可能被其它的电路、微码等所共享,即在该微处理器301内完成其它的功能。
在一实施例中,密码单元316和执行逻辑电路328的其它执行单元(未图标),诸如整数单元、浮点单元等是并行执行。在本发明范围中一“单元”的一实施例系包含逻辑电路、装置或微码(即微指令或本机指令)、或是一个逻辑电路、装置或微码的组合,或是能执行指定运算或指定功能的等效单元。这些在一个特殊单元上执行指定运算或执行指定功能的元件可能被其它的电路、微码等所共享,即在微处理器301内执行其它功能或运算。例如,在一个实施例中,一整数单元系包含逻辑电路、装置或微码(即微指令或本机指令)、或是一个逻辑电路、装置或微码的组合,或是能执行整数指令的等效单元。一浮点单元包含逻辑电路、装置或微码(即微指令或本机指令)、或是一个逻辑电路、装置或微码的组合,或是能执行浮点指令的等效单元。在整数单元内执行整数指令的元件可以共享电路、微码等,即在浮点单元内执行浮点指令。
在相容x86体系的一实施例中,密码单元316和一x86的整数单元、一x86的浮点单元、一x86的多媒体延伸集单元和一x86的串流延伸集单元并行执行。根据本发明,一兼容x86体系的实施例是指这个实施例能够正确地执行大多数被设计用来在一x86微处理器上执行的应用程序。如果得到一个正确地结果,该程序的执行就是正确的。可供选择的x86兼容实施例期望密码单元与上述所提到x86执行单元的一个子集并行执行。密码单元316被连接到储存逻辑电路(store logic)317上并提供相对应多个输出文字区块327。储存逻辑电路317也被连接到数据快取315,其发送输出文字数据327到***存储器321处以供储存。储存逻辑电路317被连接到写回逻辑电路(write backlogic)318上。当指定的密码运算完成,写回逻辑电路318将更新缓存器组307中的缓存器308-313。在一个实施例中,微指令与一频率信号(未图示)同步,流经每一个上述的逻辑电路级(logic stages)302、303、304、307、314、316-318,这样,这些运算就可以并行执行,就像一条装配线一样。
在***存储器321中,一个需要指定密码运算的应用程序就可以通过一条单独的密码指令(cryptographic instruction)322直接驱动微处理器301去执行该运算。在此以一条密码(XCRYPT)指令作为示例说明。在一个复杂指令集计算机实施例中,密码指令322包含一条规定一密码运算的指令。在精简指令集计算机实施例中,密码指令322包含一条规定一密码运算的微指令。在一实施例中,密码指令322利用现有指令集架构中多余的或未用的指令编码。在一x86兼容的实施例中,密码指令322是一4个字节的指令,其包含一个x86重复前置(即0xF3),后跟2个字节未使用的x86编码(例如0x0FA7),再加上1个字节指明在执行一指定密码运算时使用的一特定区块密文模式。在一个实施例中,依据本发明密码指令322可以在提供给应用程序的***权限级下被执行,并因此能直接从一应用程序或在一操作***320的控制下被编写到程序指令流里,使提供给该微处理器301。由于执行指定的密码运算只需一密码指令322驱动微处理器301即可,这样,运算的完成对于操作***320来说将完全是透明化的。
运算时,操作***320引动一个应用程序使在微处理器301上执行,在执行应用程序期间作为指令流的一部分,一密码指令322由存储器321提供给撷取逻辑电路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将对应输出数据区块提供给储存逻辑电路317以储存在存储器321的输出文字区327中。在相对应系列微指令中的一第二组微指令(未图示)驱动微处理器301的其它执行单元(未图示)执行其它的必要运算以完成指定的密码运算,诸如在加密/解密完一组输入文字326后,控管缓存中间结果和计数的非结构缓存器(未图示),更新输入及输出指针缓存器(pointer registers)311-312,更新初始化向量指针缓存器(initialization vector pointer register)310(如果需要的话)以及处理当前中断等。在一个实施例中,缓存器308-313是结构缓存器,结构缓存器308-313是指在指令集架构(instruction set architecture,ISA)里执行特殊微处理器所定义的缓存器。
在一个实施例中,密码单元316被分为多个级,由此允许管线化连续输入文字区块326。
图3的方块图300用来讲述本发明的基本组成单元,因此为了更清晰,在当今微处理器301中的很多逻辑电路都被方块图300所忽略。然而,一个本领域技术人员将会了解到根据特定的执行当今微处理器301包含许多级和逻辑电路单元,但因出于清晰表达的目的,将其聚集在一起。例如,载入逻辑电路314可以包含一个地址生成级,然后是一快取接口级,然后是一快取线对准级。但值得注意的是,在多个输入文字区块326上的一个完整密码运算依据本发明通过一单独密码指令322来驱动,这个指令的运算从操作***320的角度来考虑是透明化的,并且他的执行是通过一个专用密码单元316完成,而密码单元316和微处理器301内的其它执行单元并行的。本发明的发明人试图在实施例结构上提供一种可重构密码单元316的实施例,其类似于以前微处理器所提供的专用浮点单元硬件。密码单元316和相关密码指令322的运算和以前的操作***320和应用程序的并发运算是完全兼容的。将详细描述如下。
现在请参阅图4,其所提供的示意图展示了依据本发明一微密码指令400的一实施例。密码指令400包括一可选择性前置字段(optional prefix field)401,然后是一重复前置字段(repeat prefix field)402,随后是一运算码字段(opcodefield)403,最后是一区块密码模式字段(block cipher mode field)404,在一个实施例中,字段401-404的内容和x86指令集架构一致。可重构的实施例兼容其它的指令集架构。
在运算中,该可选择性前置字段401被执行在许多指令集架构,以致能或不能实现主微处理器的一些运行特征,诸如进行16位或32位运算,进行处理或存取到特殊存储器段等。重复前置字段402表明密码指令400指定的密码运算,将在多个输入数据区块(即明文或密文)被完成。重复前置字段402也暗指一适合的微处理器,以使用多个架构性缓存器的内容,作为一在***存储器内位置的指针,***存储器包含特定密码运算的数据及参数。
如上所述,在一x86相容的实施例中,重复前置字段402的数值为0xF3。而且,根据x86的结构协议,密码指令与REP.MOVS之类的x86重复串指令相当类似。举例而言,当执行本发明与x86兼容的微处理器实施例时,重复前置字段指令指示储存在结构缓存器ECX中的区块计算变量、储存在缓存器ESI中的来源地址指针(指出密码运算所用的输入数据)以及储存在缓存器EDI中的目的地址指针(在存储器中指出输出数据区域)。在x86相容的实施例中,本发明使公知重复串指令内容,还参照储存在缓存器EDX中的控制字指针、储存在缓存器EBX中的密码金钥指针、以及储存在缓存器EAX中的初始化向量之指针(若指定的芯片模式需要的话)。
运算码字段403指定微处理器完成密码运算,其还指定于储存在存储器中的控制字内,此存储器系通过控制字指针指示。本发明计算出运算码字段403的较佳选择值以作为现存指令集架构内备用或未用运算码之一,以便保留旧有操作***以及应用软件符合的微处理器的一致性。举例而言,如前所述,运算码字段403施行数值0x0FA7,以指示执行具体说明的密码运算。区块密码模式字段404指定特殊区块密码模式,以在具体说明密码运算期间执行,如图5所示。
图5绘示了一表500,此表500绘示了根据图4的电子结构的示范性区块密码模式字段的数值。数值0xC8指定密码运算可通过使用电子码格式信息模式而完成。数值0xD0指定密码运算可使用密码区块串行模式而完成。数值0xE0指定密码运算可使用密码反馈模式而完成。数值0xE8指定密码运算可使用输出反馈(output feedback,OFB)模式而完成。区块密码模式字段404的所有其它值会被保留。这些模式在前述的FIPS内文中有所描述。
现在来看图6,示意图详细描述依据本发明在一个x86兼容微处理器(microprocessor)600里的一密码单元(cryptography unit)617。微处理器600包括一个从执行存储器(未图示)撷取的撷取逻辑电路(fetch logic)601。撷取逻辑电路601被连接到转译逻辑电路(translation logic)602上。转译逻辑电路602包含逻辑电路、装置或微码(即微指令或本机指令)、或是一个逻辑电路、装置或微码之联合体,或是能够将指令转译成微指令序列的等效单元。在该转译逻辑电路602中执行转译的元件可能被其它的电路、微码等所共享,其为在该微处理器600内执行其它的功能。
该转译逻辑电路602包括一个连接到微码只读存储器(microcodeROM)604上的转译器(translator)603和输出反馈模式逻辑电路(outputfeedback mode logic)640,其同时连接到转译器603和微码只读存储器604上。中断逻辑电路(interrupt logic)626通过总线(bus)628连接到转译逻辑电路602。数个软件及硬件中断信号(interrupt signals)627将被中断逻辑电路626处理,其将对转译逻辑电路602显示正在处理中断。转译逻辑电路602连接到微处理器600的连续级包括缓存器级(register stage)605、寻址级(address stage)606、载入级(load stage)607、执行级(execute stage)608、储存级(store stage)618和写回级(write back stage)619。每个连续的级包括完成指定功能的逻辑电路,这些特定功能与执行撷取逻辑电路601提供的指令有关,且这些结构在图3的微处理器中以类似的名称描述。
图6描述的x86兼容实施例600展示了执行级608中的执行逻辑电路(execution logic)632,其包括并行的执行单元(execution unit)610、612、614、616、617。整数单元610从微指令队列(micro instruction queue)609接收整数微指令以供执行,浮点单元(floating point unit)612从微指令队列611接收浮点微指令以供执行,多媒体延伸集单元(Multi-media Extensions,MMX)614从微指令队列613接收多媒体延伸集微指令以供执行,串流延伸集单元(Streaming SIMD Extensions,SSE)616从微指令队列615接收串流延伸集微指令以供执行。
在典型的x86实施例中显示,一密码单元(cryptography unit)617通过一载入总线(load bus)620、一延迟信号(stall signal)621和一储存总线(storebus)622连接到该串流延伸集单元616。密码单元617共享串流延伸集单元的微指令队列615。可重构的实施例试图孤立密码单元617的并行操作,就像单元610、612及614一样。整数单元(integer unit)610连接到一x86的标记缓存器(EFLAGS register)624上。标记缓存器包括一个X位625,X位的状态指示密码运算是否在处理中。
在一实施例中,X位625是一x86标记缓存器624的第30位。另外,整数单元610存取一机器特定缓存器(machine specific register)628以计算一E位629的状态。E位629的状态表明在微处理器600内是否存在密码单元617。整数单元610也存取在特性控制缓存器(feature control register)630中的D位631,来打开或关闭密码单元617。同图3的微处理器实施例301一样,图6的微处理器600描述了本发明在x86兼容实施例中的必要元件,并清楚集合或忽略微处理器的一些元件。本领域技术人员将了解到其它的元件也必须被用以完成该接口诸如数据快取(未图示)、总线接口单元(未图示)、频率产生和分频逻辑电路(未图示)等。
运算中,通过撷取逻辑电路601,从存储器(未图示)取得指令电路并同步于频率信号(未图示)提供指令给转译逻辑电路602。指令电路提供至少一指令,其用来指示一密码运算,而指令电路包含逻辑电路、装置或微码(即微指令或本机指令(native instruction))、或是一个逻辑电路、装置或微码之组合,由于指令电路并非为本发明的重点,于此不再对此作详细说明。
转译逻辑电路602转译每一指令电路至微指令电路的对应队列,这些微指令队列同步于一频率信号,连续地被提供给微处理器的随后级605-608、618和619。微指令序列中的每一微指令电路指示子运算的执行,此子运算需完成全面运算,且此全面运算通过对应指令电路而指定,这些对应指令可如底下的指令电路:通过地址级606的地址的产生;整数单元610中的两相加运算码,此整数单元610从缓存器级605中的指定缓存器(未图示)而获得;储存执行单元610、612、614、616、617的一所产生的结果,此储存通过储存级618所执行。根据被转译的指令,转译逻辑电路602将使转译器603直接产生微指令序列,或者获得来自微码只读存储器604的序列,或者使转译器603直接产生序列的一部份并获得来自微码只读存储器604的现存序列部份。微指令与频率信号同步通过随后级605-608、618和619而相继进行。
在微指令到达执行级608时,它们与其运算码以及被指定的执行单元610、612、614、616、617(在缓存器级605中自缓存器取得,或者被寻址级606中的逻辑电路所产生,或者通过载入级607自数据快取所取得)一起被执行逻辑电路632所安排执行,通过被相对应的微指令序列609、611、613、615替换微指令而达成。执行单元610、612、614、616、617执行微指令并提供结果给储存级618。在一实施例中,微指令包含指示其是否与其它运算平行执行的字段。
如上描述,对取得一密码指令做出响应,转译逻辑电路602产生相关的微指令,其驱使微处理器600中的连续级605-608、618、619使执行指定的密码运算。一第一组相关的微指令直接发送到密码单元617,并驱动密码单元617读取载入总线620上的数据,或者下载一输入数据区块,并开始执行一给定数目的密码回合,使产生一输出数据区块,或者提供一输出数据区块到储存总线622,使通过储存逻辑电路618保存到存储器中。一第二组相关的微指令发送到其它的执行单元610、612、614、616,使执行完成指定密码运算所需的其它子运算,诸如测试E位629,启动D位631,设置X位625以表明当前有一密码运算正在执行,更新缓存器级605的缓存器(例如计多个缓存器、输入文字指针缓存器、输出文字指针缓存器),通过中断逻辑电路626处理中断627等。
通过交错密码单元微指令序列中的整数单元微指令,相关微指令被提供作为多重数个输入数据区块上特定密码运算的执行,以使整数运算能够和密码单元运算并行被完成。微指令系包含在相关的微指令中以允许响应中断627和从中断627返回。由于所有密码参数和数据的指针都存放在x86的结构缓存器中,当处理中断时它们的状态将会被保存而且这些状态在从中断返回时恢复。
因此,当有中断发生时,程控将跳转到相应的中断服务程序。作为程控跳转的一部分,X位625将被清掉,以表示金钥数据和控制字数据不再有效。当从中断返回时,程控系被转回到密码指令,并作为其相关微指令的一部分,特殊的微指令将测试X位625的状态以决定金钥数据和控制字数据是否有效。如果有效,该程序将对在中断发生之前的特定输入数据区块继续进行处理,如果X位625的状态表明金钥数据和控制字数据不再有效,将会重新到存储器读取中断发生时正在处理特定输入数据区块的金钥和控制字。
总之,根据本发明,执行一条密码指令总是包含X位625的初始测试,以决定在密码单元617中金钥数据和控制字数据的有效性。如果金钥数据和控制字数据无效,即可从存储器读取金钥数据和控制字数据。然后由输入指针缓存器指向的输入数据区块被载入,而且指定密码运系在输入数据区块上执行。另外,输入数据区块的载入和指定密码运算的执行并不需要先载入金钥数据和控制字数据。
如果有了一个新的金钥和控制字,那么在执行新的密码指令之前必须清掉X位625。使用相同金钥数据和控制字数据的连续密码指令也能够被执行。在这种情况下,无需在初始化金钥数据和控制字数据被输入后清掉X位625。例如为了提高存储器总线的速度,使用者可以将500个输入数据区块的加密/解密分成5条密码指令,其每条指令可处理100个输入数据区块。
利用密码反馈模式,输出反馈模式逻辑电路640将完成密码运算OFB模式逻辑640确保相关的微指令工作正常,并允许该指针缓存器和在系列输入文字区块上的区块密码运算序列的中间结果,在处理中断627之前能够被更新。输出反馈模式逻辑电路640指导微指令***到微指令流中,这样在执行第一区块输入数据的密码运算时,在存储器中的输入及输出数据区块指针被更改指向下一输入及输出数据区块。另外,输出反馈模式逻辑电路640指导微指令***到相应的微指令流中,使更改区块计数器以表明当前输入数据区块上的密码运算已经完成。
本领域技术人员将希望在输出反馈模式下的加密运算使用一个初始化向量,其被一第一明文区块使用以产生一第一密文区块。前一个密文运算被用于初始化向量以产生一第一密文输出区块。随后,借着第一密文输出区块与第一明文区块的互斥或以产生一第一密文区块。第一密文输出区块则将被反馈作为加密第二明文区块的一等效初始化向量。依次类推,一输出反馈模式解密的完成与一输出反馈加密运算者极为相似,只不过明文区块由互斥的密文区块与密文输出区块产生。前一个密文运算则作用于初始化向量与后续的等效初始化向量,以产生密文输出区块。
在一实施例中,输出反馈模式逻辑电路640识别一指定输出反馈模式加密或解密运算,并提供一微指令系列以更新结构缓存器中的指针,确保反馈给第一明文或密文区块的后续区块予合适的等效初始化向量。
在可替代的实施例中,输出反馈模式逻辑电路640识别一指定输出反馈模式加密或解密运算,并提供一微指令系列:1)在当前明文区块及其相应的当前密文区块中执行一互斥运算,以产生一可供下一区块使用的等效初始化向量;2)将等效初始化向量储存到由初始化向量指针缓存器所指向的存储器位置处;3)更新结构缓存器中的指针,以确保反馈给第一明文或密文区块的后续区块予合适的等效初始化向量。
现在参照图7,图表举例说明了一条在图6的微处理器内执行密码子运算的典型微指令700的结构。微指令(micro instruction)700包括一个微运算码字段(micro opcode field)701,一个数据缓存器字段(data register field)702和一个缓存器字段(register field)703。微运算码字段701表明了一个要被执行的特定子运算,并且表明了微处理器600执行子运算的至少一个级的逻辑电路。微运算码字段701的特殊值表明指定的微指令电路通过依据本发明的密码单元来执行。微指令电路提供至少一指令,其用来指示一密码运算,而指令电路包含逻辑电路、装置或微码(即微指令或本机指令(native instruction))、或是一个逻辑电路、装置或微码的组合,由于指令电路并非为本发明的重点,于此不再对此作详细说明。
在一个实施例中,有两种特殊值。一第一值“载入(XLOAD)”表明要从存储器位置重取数据,存储器地址是由数据缓存器字段702所表示的结构缓存器的内容指定。该数据将被载入到密码单元的缓存器中,而缓存器则由缓存器字段703指定。重取到的数据(例如金钥数据、控制字、输入文字数据、初始化向量)提供给密码单元。微运算码字段701的一第二值“储存(XSTOR)”表明由密码单元所产生的数据将要被储存到一存储器位置,其地址由数据缓存器字段702所表示的结构缓存器指定。在一个多级密码单元的实施例中,缓存器字段703指示数组输出数据区块中的一组使储存在存储器中。输出数据区块由密码单元在数据域位(data field)704中提供给储存逻辑电路存取。依据本发明,有关密码单元执行载入和储存微指令的更详细描述,将在图8和图9中讨论。
来看图8,表800描述了根据图7的格式700,一条载入微指令电路的缓存器字段703的值。微指令电路提供至少一指令,其用来指示一密码运算,而指令电路包含逻辑电路、装置或微码(即微指令或本机指令(nativeinstruction))、或是一个逻辑电路、装置或微码的组合,由于指令电路并非为本发明的重点,于此不再对此作详细说明。如前面的讨论,一条密码指令的转译将引起产生一个微指令序列。微指令序列包含一被密码单元执行的第一组微指令和一组第二组微指令,第二组微指令系微处理器内密码单元以外的其它并行功能单元执行。第二组微指令完成诸如更新计数器、暂时缓存器、结构缓存器、测试和设置在机器特殊缓存器上的状态位等子运算。
第一组指令提供金钥、密码参数、及输入数据到密码单元,并驱动密码单元使生成金钥目录(或载入从存储器重取到的金钥目录)、载入并加密(或解密)输入文字数据、及储存输出文字数据。一载入微指令为密码单元提供载入控制字数据、载入金钥或金钥目录、载入初始化向量数据、载入输入字文数据、及载入输入文字数据、并驱动密码单元执行指定的密码运算。在一载入微指令缓存器字段703中的值0b010指定密码单元载入一控制字到它的内部控制字缓存器中。由于这条指令是在管线上执行的,缓存器级的结构控制字指针缓存器被存取,以取得存放了控制字在存储器中的地址。寻址逻辑电路将地址转译成为实体地址,以供存储器存取。载入逻辑电路从快取取到控制字,并将控制字放置到数据域位704,此时控制字已经被传送给密码单元。同样,缓存器字段的值0b100驱使密码单元,使载入在数据域位704所提供的输入文字数据,及随后便载入、执行指定密码运算。
同控制字一样,输入数据通过一储存在结构缓存器里的指针被存取。值0b101表示数据域位704提供的输入数据将被载入到内部缓存器1输入-1。载入到输入-1缓存器的数据可以是输入文字数据(当管线化处理时),也可以是一初始化向量。值0b110和0b111表示密码单元分别载入一个金钥或是在使用者所生成金钥目录中一个金钥的低位和高位。依据本发明,使用者是指完成一个指定功能或指定运算的物体,使用者可以是一应用程序、一操作***、一机器或一个人。因此,在一个实施例中,使用者生成金钥目录是由应用程序建立的。在一可替代的实施例中,使用者生成金钥目录是由人建立的。
在一个实施例中,缓存器项的值0b100和0b101将一个密码单元分为两个级,该连续的输入文字数据区块能够被管线执行。因此,为了使两个连续的输入数据区块进行管线运作,一第一载入微指令执行给输入-1提供了一第一输入文字数据区块,随后执行一第二载入微指令给输入-0提供一第二输入文字数据区块,同时驱动密码单元开始执行指定的密码运算。
如果一使用者生成金钥目录被用来执行密码运算,那么和使用者生成金钥目录的金钥数量相对应的数个载入微指令将被发送到密码单元,用以载入在金钥目录中每一回合金钥。
载入微指令之缓存器字段703的所有其它值予以保留。
参照图9,表900展示根据图7的格式700一储存微指令的缓存器字段703的值。微指令电路提供至少一指令,其用来指示一密码运算,而指令电路包含逻辑电路、装置或微码(即微指令或本机指令(native instruction))、或是一个逻辑电路、装置或微码的组合,由于指令电路并非为本发明的重点,于此不再对此作详细说明。
储存微指令驱动密码单元将生成(即加密或解密)的输出文字数据提供给储存逻辑电路,将其储存在数据缓存字段702指定的存储器地址。因此,根据本发明,转译逻辑电路在为其相关输入文字区块发送一条载入微指令后,为特定的输出文字区块发送一条储存微指令。缓存器字段703的值0b100指示密码单元联合其内部输出-0输出-0缓存器,将输出文字区块提供给储存逻辑电路储存。输出-0的内容和提供到输入-0的输入文字区块是时有关联的。同样,参照缓存器项值0b101,内部输出-1缓存器的内容和提供到输入-1的输入文字数据也是关联的。因此,载入完金钥和控制字数据之后,多个输入文字区块就可以通过以载入.输入-1、载入.输入-0(载入.输入-0也可以驱动密码单元开始密码运算)、储存.输出-1、储存.输出-0、载入.输入-1、载入.输入-0(开始对下面两个输入文字区块的运算)的次序发送密码微指令,使通过密码单元管线执行。
现在来看图10,依据本发明,图表着重描述了一个典型的控制字格式(control word format)1000,控制字指定了密码运算的密码参数。控制字1000是由使用者编程写到存储器的,而在执行密码运算之前,其指针由一适合微处理器的结构缓存器所提供。因此,作为和所提供密码指令相关的微指令序列的一部分,而密码指令电路提供至少一密码指令,其用来指示一密码运算,而指令电路包含逻辑电路、装置或微码(即微指令或本机指令(nativeinstruction))、或是一个逻辑电路、装置或微码的组合,由于指令电路并非为本发明的重点,于此不再对此作详细说明。
一加载微指令指示微处理器读取包含有指针的结构缓存器,将指针转换为一个实体地址,从存储器(快取)读取控制字1000并将控制字1000载入到密码单元的内部控制字缓存器中。控制字1000包括一个保留(RSVD)字段1001、一个金钥大小(KSIZE)字段1002、一个加密/解密(E/D)字段1003、一个中间结果(IRSLT)字段1004、一个金钥产生(KGEN)字段1005、一个算法(ALG)字段1006和一个回合计数(RCNT)字段1007。
保留字段1001的所有值都被保留的。金钥大小字段1002的内容指定了用来完成加密或解密的金钥大小。在一个实施例中,金钥大小字段或者是一128位金钥,或者是一192位金钥,或者是一256位金钥。加密/解密字段1003指定密码运算是加密运算还是解密运算。金钥产生字段1005表明存储器内提供的是一使用者生成金钥目录还是一单一的金钥,如果是一单一金钥的话,微指令将和金钥一起发送到密码单元,使根据算法字段1006指定的密码算法,驱动单元将金钥扩展为金钥目录。
在一个实施例中,算法字段1006指定的算法为到此为止讨论过的数据加密标准(Data Encryption Standard,DES)算法、三重(Triple-data EncryptionStandard,Triple-DES)算法或是进阶加密标准(Advanced Encryption Standard,AES)算法。可替换实施例企图包含其它的算法,诸如Rijndael密文,Twofish密文等。回合计数字段1007的内容依据给定算法完成每一输入文字区块所给定的密码回合数。虽然以上的密码算法标准指定了每一输入文字区块的固定密码回合数,但是提供回合计数字段1007允许程序员更改该标准所指定的回合数。
在一个实施例中,程序员可以给每个区块指定0到15回合。最后,中间结果字段1004的内容指定一个输入文字区块的加密/解密是否根据算法字段1006指定的密码算法标准,以回合计数字段1007所指定的回合数执行者,或者该加密/解密是否根据ALG项1006指定的算法,以回合计数字段1007指定的回合数执行,而最后一回合执行结果是一个中间值而不是最终结果。本领域技术人员将希望在每一回合中,许多密码算法都执行相同的子运算,除了最后一回合所执行者以外。因此,对中间结果字段1004编程以提供中间结果而不是最后结果,可允许程序员更改施行运算法的中间步骤。例如,可以通过在一个文字区块上执行一回合加密、然后在该相同文字区块上执行两回合、然后3回合等,以获得累加的中间结果以验证算法的性能。提供可编程回合数和中间结果的功能之使用者能够验证密码编码性能、检测故障,并探究不同金钥结构和回合数的效用。
参照图11,方块图详细描述了依据本发明的密码单元(cryptographyunit)1100。密码单元1100包括一个通过微指令总线1114接收密码微指令电路(即载入和储存微指令)的微运算码缓存器1103。密码微指令电路提供至少一密码指令,其用来指示一密码运算,而指令电路包含逻辑电路、装置或微码(即微指令或本机指令(native instruction))、或是一个逻辑电路、装置或微码的组合,由于指令电路并非为本发明的重点,于此不再对此作详细说明。
密码单元1100也具有一控制字缓存器(control word register)1104、一输入-0缓存器1105及一输入-1缓存器1106、一金钥-0缓存器1107、一金钥-1缓存器1108。数据通过一载入总线(load bus)1111提供给缓存器1104-1108,如同在微指令缓存器(micro instruction register)1103里指定载入微指令内容。密码单元1100也包括连接到所有的缓存器1103-1108和金钥随机存取存储器(key RAM)1102的区块密码逻辑电路(block cipher logic)1101。区块密码逻辑电路提供一个延迟信号(stall signal)1113,并将区块结果提供到一输出-0缓存器1109和一输出-1缓存器1110。这些输出缓存器1109-1110通过一储存总线(store bus)1112发送它们的内容到一适合微处理器的相继级中。在一个实施例中,微指令缓存器1103是32位的,而其它的缓存器1104-1110则都是128位者。
在运算中,密码微指令顺序地传送给微指令缓存器1103,同时控制字缓存器1104或这些输入缓存器1105-1106中的一个,或这些金钥缓存器1107-1108中的一个所指定数据也被发送。在参照图8和图9所讨论的实施例中,一控制字首先通过一载入微指令载入到控制字缓存器1104中。然后通过后续载入微指令载入金钥或金钥目录。如果一个128位的金钥被载入,一载入微指令即可提供给指定缓存器金钥-01107。如果大于128位的金钥被载入,那么一载入微指令除了提供给指定缓存器金钥-01107外,也同时提供缓存器金钥-11108所指定的一载入微指令。
如果使用者生成金钥目录被载入,则缓存器金钥-01107所指定的后续载入微指令将被提供。被载入的金钥目录里的每个金钥都被依次储存在金钥随机存取存储器1102中在它们相应的密码回合中使用。继此之后,输入文字数据(如果不需要初始化向量)将被载入到输入-1缓存器1106。如果需要初始化向量,它将通过一条载入微指令被载入到输入-1缓存器1106。作用于输入-0缓存器1105的载入微指令驱动密码单元使载入输入文字数据到输入-0缓存器1105,并开始根据由控制字缓存器1104提供的参数,使用输入-1的初始化向量或两个输入缓存器1105-1106(如果输入数据系呈管线处理),以执行缓存器输入-01105输入文字数据的密码回合。在收到输入-01105所指定的载入微指令之后,区块密码逻辑电路1101通过控制字的内容开始执行所指定的密码运算。
如果一个单独的金钥需要被扩展,区块密码逻辑电路1101即在金钥目录里生成每个金钥,并且把它们储存在金钥随机存取存储器1102里。无论是否区块密码逻辑电路1101产生金钥目录或是否金钥目录从存储器载入,第一回合金钥被快取在该区块密码逻辑电路1101内,以便该第一个区块密码回合无需要存取金钥随机存取存储器1102即可执行。一旦起动,区块密码逻辑电路1101在至少一个输入文字区块继续执行规定的密码运算直到该运算被完成,像被使用的密码学算法所要求的那样从金钥随机存取存储器1102中连续截取回合金钥。密码单元1100在指定的输入文字区块上执行一个指定的区块密码运算。连续的输入文字区块即可经由相应且连续的载入和储存微指令执行加密或解密。当一储存微指令被执行后,如果被指定的输出数据(即输出-0或输出-1)还没完全产生,此时区块密码逻辑电路1101产生延迟信号1113。当输出数据产生并被置入一相应的输出缓存器1109-1110时,缓存器1109-1110的内容即被移转至储存总线1112。
现在看图12,一方块图说明了根据本发明使用进阶加密标准执行密码运算的一个区块密码逻辑电路(block cipher logic)1200的实施例。区块密码逻辑电路1200包括通过总线1211-1214和总线1216-1218连接到一回合引擎控制器(round engine controller)1210的回合引擎(round engine)1220。回合引擎控制器1210存取一微指令缓存器(micro instruction register)1201、控制字缓存器(control word register)1202、金钥-0缓存器1203、以及金钥-1缓存器1204,以存取指示密码运算的金钥数据、微指令和参数等。
输入缓存器(input register)1205-1206的内容被提供给回合引擎1220,以及回合引擎1220将相应的输出文字提供给输出缓存器1207-1208。输出缓存器1207-1208通过总线1216-1217连接到回合引擎控制器1210,以确保回合引擎控制器能够存取每个连续密码回合的结果,其通过总线NEXTIN 1218为下一个密码回合提供给回合引擎1220。金钥随机存取存储器(未图标)的金钥通过总线1215被存取。加密/解密(ENC/DEC)信号1211驱动回合引擎使用子运算执行加密(例如S-Box)或解密(例如倒置S-Box)。回合计数(RNDCON)总线1212的内容驱动回合引擎1220执行一第一进阶加密标准回合、一中间进阶加密标准回合或者最后的进阶加密标准回合。金钥产生(GENKEY)信号1214被用来指导回合引擎1220使根据总线1213所提供的金钥生成一金钥目录。当它的相应回合被执行时,金钥总线1213提供给回合引擎1220每一回合的金钥。
回合引擎1220包括连接到一第一缓存器缓存-01222上的第一金钥XOR逻辑电路1221。第一缓存器1222连接到S-Box逻辑电路1223,而S-Box逻辑电路1223则连接到移列逻辑电路(Shift Row logic)1224上。移列逻辑电路1224连接到一第二缓存器缓存-11225处。第二缓存器1225则连接到混栏逻辑电路(Mix Column logic)1226,混栏逻辑电路1226连接到一第三缓存器缓存-21227。这些在上面讨论的进阶加密标准FIPS标准中的第一金钥逻辑电路1221、S-Box逻辑电路1223、移列逻辑电路1224及混栏逻辑电路1226在输入文字数据上执行与它们名称相同的子运算。
移列逻辑电路1226在中间回合期间,需要通过金钥总线1213使用回合金钥在输入数据上执行进阶加密标准XOR功能。第一金钥逻辑电路1221、S-Box逻辑电路1223、移列逻辑电路1224、及混栏逻辑电路1226也用来在解密期间通过加密/解密信号1211控管来执行它们相应的逆进阶加密标准子运算。本领域技术人员希望根据由控制字缓存器1202的内容指定的特殊区块加密模式,使中间回合数据被反馈到回合引擎1220。初始化向量数据(如果需要)通过总线NEXTIN 1218提供给回合引擎1220。
在图12所示的实施例中,回合引擎被分为两个级:缓存-01222与缓存-11225之间是第一级,而缓存-11225与缓存-21227则是第二级。中间回合数据与频率信号(未图示)同步在级之间管线传送。当密码运算在一输入数据区块上完成时,相关输出数据即被存放到相应的输出缓存器1207-1208。一微指令“储存”的执行使得一指定输出缓存器1207-1208的内容被提供至一储存总线(未图示)处。
现在看图13,一流程图描述了根据本发明在一次中断事件期间保护密码参数状态的方法。根据本发明,当一微处理器执行指令流时,流程在方块1302处开始执行。指令流程并不是一定要包括一条在这里描述的密码指令。随后,流程处理判断方块1304。
在判断方块1304时,做出评估以确定是否一次中断事件(例如,可屏蔽中断、不可屏蔽中断、页面出错、任务切换等等)发生要求在改变当前的指令流(″中断处理器″)去处理中断事件。如果是,流程即执行方块1306。如果不是,流程在判断方块1034循环,在此指令会继续执行直到一次中断事件发生。
根据本发明,在方块1306时,因为有一中断事件发生,在将程控交给相应的中断处理器之前,中断逻辑电路指引清掉标记缓存器内的X位。X位的清除保证,当从中断处理器返回时,如果一区块密码运算在进行,它将被表明至少一个中断事件在发生,并且在由输入指针缓存器内容所指向的输入数据区块的区块密码运算继续之前,控制字数据和金钥数据一定要重新载入。随后流程处理方块1308。
在方块1308,根据本发明,给所有包含与执行区块密码运算有关的指针和计数器的结构缓存器系被储存到存储器。本领域技术人员希望在转交控制到中断处理器之前,保存结构缓存器是在当前数据计算装置完成的一个典型行为。从而,本发明的当前数据结构的目的在于整个中断事件期间提供透明化地执行。当缓存器被保存后,流程即处理到方块1310。
在方块1310,程序流被移转到中断处理器。随后流程即处理到方块1312。
在方块1312,该方法完成。本领域技术人员希望图13的方法从中断处理器返回后再次从方块1302开始。
现在参考图14,流程图描绘了依据本发明在至少一次中断事件发生的情况下,在数个输入数据区块上执行一指定输出反馈模式密码运算的方法。
流程在方块1402开始,根据本发明,在此一密码指令指引密码运算使用输出反馈模式开始执行。密码指令的执行可以是一第一执行,也可以是自一第一执行之后,由一中断事件执行中断的结果,程控在一中断处理器被执行后被传回到密码指令处。流程随后即处理到方块1404。
在方块1404,依据本发明,存储器内经由一输入指针缓存器的内容所指向的一数据区块从存储器被载入,并启动一指定的密码运算。特定的输入指针缓存器是由指定的特殊密码运算(例如,加密或解密)和指定的区块密码模式(例如电子码书式、密码区块串行、密码反馈、或输出反馈)所决定。例如,如果一加密运算使用输出反馈模式,那么输入指针缓存器及一初始化指针缓存器都被用来装置该数据。对于一输出反馈模式加密运算,输入指针缓存器指向下一个将要被加密的明文区块。对于一输出反馈模式解密运算,输入指针缓存器则指向下一个即将被解密的密文区块。对于输出反馈加密及解密两者,初始化向量缓存器指向一存储器中的初始化向量位置处。对于一第一区块,在存储器中初始化向量位置的内容为一初始化向量。对于后续的区块,初始化向量位置的内容相关于一前一区块之输出密文区块,其被用作为当前区块的一等效初始化向量。如果一解密运算被指定使用电子码书式模式,那么用以载入该数据之输入指针缓存器即为一指向存储器中下一个密文区块的缓存器。流程随后处理到判断方块1406。
在判断方块1406,一评估被用来决定是否在一标记缓存器中设置X位。如果X位被设置,即表明目前依据本发明载入到一密码单元的控制字和金钥目录是有效的。如果X位被清掉,即表明目前载入到密码单元的控制字和金钥目录是无效的。如上述间接提到的那样,参照图13,当一次中断事件发生时,X位即被清掉。另外,如上提到的那样,当需要载入一新控制字或金钥目录或两个都必须载入时,在发送该密码指令之前即必须清掉X位。在一使用X86标记缓存器的第30位的x86兼容实施例中,通过执行一条随后有一条POPFD指令的PUSHFD指令清掉X位。不过本领域技术人员将希望在其它可替代的实施例中,其它指令必须被用来清掉X位。如果X位被设置,流程将处理方块1412。如果X位被清掉,流程即处理方块1408。
在方块1408,由于一被清除的X位已经表明一中断事件已经发生,或者一个新控制字和/或金钥数据将被载入,因此一个控制字从存储器处被载入。在一个实施例中,载入控制字阻止密码单元执行如上述方块1404所述的指定密码运算。在这个典型的实施例中在方块1404里,启动一密码运算,允许通过假定利用目前载入的控制字和金钥数据,对多区块密码运算进行优化。因此,当前输入数据区块被载入,而且密码运算在检查判断方块1406中X位的状况前就已经开始。流程接下来即处理方块1410。
在方块1410,金钥数据(即一金钥或一完整的金钥目录)从存储器处被载入。另外,依据最新载入的控制字及金钥目录,在方块1404所述的输入区块及初始化向量(或等效初始化向量系被再次载入并执行密码运算。流程随即处理方块1412。
在方块1412,被载入到方块1404或方块1410中的输入数据区块(当前密文区块或当前明文区块)被保存到一内部缓存器TEMP。流程随后处理方块1414。
在方块1414,一相对应于被载入输入区块的输出区块被生成。对于输出反馈加密,输入区块为一明文区块,而输出区块则为一相对应的密文区块。对于输出反馈解密,输入区块为一密文区块,而输出区块则为一相对应的明文区块。流程随后处理方块1416。
在方块1416,一等效初始化向量IVEQ通过输出区块与TEMP内容互斥所产生。流程随后处理方块1418。
在方块1418,这些效初始化向量IVEQ被写给初始化向量指针缓存器IVPTR内容所指向的存储器位置,因此对随后输入区块所指定输出反馈模式密码运算的执行将使用适合的等效初始化向量。流程然后处理方块1420。
方块1412、1414、1416及1418内所描述的步骤被要求保证在一个状态,其允许使用区块密码输出反馈模式的一密码指令的执行随时被打断。例如,在一实施例中,一页面出错在一密码指令的执行期间可在任一点发生。
在方块1420,所生成的输出区块被储存到存储器。流程然后处理方块1422。
在方块1422,输入和输出区块指针缓存器的内容被修改成指向下一个输入和输出数据区块。另外,区块计多个缓存器的内容被修改,以表明在当前输入数据区块上密码运算的完成。在图14所讨论的实施例中,区块计多个缓存器是递减的。不过本领域技术人员将希望,可替代的实施例将区块计数缓存器内容的运算和测试也可容许输入文字区块的管线化执行。流程随后处理行判定方块1424。
在判定方块1426,一评估被用来决定是否一个输入数据区块待被执行。在这里描述的实施例中,为说明性的目的,区块计数器被用来决定它是否等于零。如果没有区块待被执行,流程即处理方块1428。如果一区块待被执行,流程开始处理方块1426。
在方块1426,由输入指针缓存器内容和初始化向量所指向的下一输入数据块及其等效初始化向量被载入。流程然后处理方块1412。
在方块1428,该方法处理完成。
本领域技术人员将希望方块1416、1418、1420、1422及1424所讨论的步骤能沿着它们的特殊流动路径,以不同的次序发生或者它们能并行发生。
虽然本发明和它的目标、特征和优势已经被详细描述,但是其它实施例也应被本发明所包含。例如,本发明对与x86结构兼容的实施例已经进行了详细讨论。但是,这样的讨论方式是因为x86结构被广泛地理解,因此提供一充足的手段以学习本发明。本发明仍然包括诸如PowerPC、MIPS及其类似者的其它指令集架构、以及其它完全是新的指令集架构相适应的实施例。
本发明尚包含在一计算***元件中,而非在微处理器本身中密码运算的执行。例如,依据本发明密码指令能容易地在一密码单元实施例中被使用,并非像微处理器内的集成电路那样必须作为计算机***一部分使用。预期本发明的实施例将被集成到一微处理器周围的一个芯片组(例如,北桥、南桥)或者作为执行密码运算的专用处理器,在此密码指令从一个主微处理器交给该处理器。预计本发明将应用于嵌入式控制器、工业控制器、信号处理器、阵列处理机和用于处理数据的其它设备中。本发明也包括在这里所描述执行密码运算所必须的元件组成的实施例。这样的一个设备作为在一个通信***内的一加密/解密处理器,的确将提供一低成本、低功率的选择以执行密码运算。为明确起见,本发明的发明人提及的这些可选择处理元件是上面所述的处理器。
另外,尽管本发明以128位区块加以描述,但是只需改变输入数据、输出数据、金钥和控制字缓存器的大小就可以实现不同的区块大小。
而且,虽然数据加密标准、三重数据加密标准和进阶加密标准在本发明有显著的描述,本发明人指出本发明也包括较小知名的区块密码算法,诸如MARS区块密码算法、Rijndael区块密码算法、Twofish区块密码算法、Blowfish区块密码算法、蛇区块密码算法和RC6区块密码算法。要充分领会的是,本发明提供专用区块密码装置,并且在一个微处理器内支持一套实现的方法,在那里微区块密码运算可以通过一条单独指令的执行被引动。
此外,虽然本发明按照区块密码算法以及对执行区块密码功能的相关技术进行了描述,应该注意到本发明完全包括除了区块密码以外的其它密码形式。它应该遵从:提供一条单独指令,凭此使用者能指示一兼容的微处理器进行一密码运算诸如加密或者解密,在此该微处理器包括一个专用的密码单元,密码单元通过指令完成被指定的密码功能。
而且,这里关于回合引擎的讨论提供一个2级的装置,这样两输入数据区块就可以管线执行。发明人指出其它的实施例可能多于2个级。预期支持更多输入数据区块的管线之级划分与一相称微处理器内的其它级是一致的。
最后,虽然本发明被作为一支持数个区块密码算法的单独密码单元已经被加以讨论,本发明也包括提供和在一兼容微处理器中的其它执行单元并行连接的数个密码单元,在此,这些密码单元中的每一个用以执行一特定的区块密码算法。例如,一第一单元配置成进阶加密标准,一第二单元则配置成数据加密标准等等。
那些本领域技术人员应该希望它们能容易使用揭示明确的概念和实施例,以作为完成本发明的目的基础设计或者修改其它结构,而依此所进行的各种改变、替代和变化均未脱离本发明所附权利要求所界定的精神及范围。

Claims (11)

1.一种用以执行密码运算的装置,包含
一密码指令电路,其提供至少一密码指令,该密码指令由一计算设备所接收,以作为在该计算设备上执行的一指令流的一部分,其中该密码指令指定多个密码运算之一,且其中指定的该密码运算包含:
在一相对应多个输入文字区块,执行多个输出反馈区块密码的运算;
一输出反馈区块模式逻辑电路,其被连接到该密码指令电路,以驱动该计算设备来更新指针缓存器和每一个所述输出反馈区块密码运算的一初始化向量位置;
一执行逻辑电路,其被连接到该输出反馈区块指标逻辑电路,以执行指定的该密码运算;以及
一位储存器,连接到该执行逻辑电路,其用以储存一位,该位用以表明指定的该密码运算是否已被一中断事件所打断。
2.如权利要求1所述的装置,其中指定的该密码运算还包含下列运算的至少一个:
一输出反馈区块模式加密运算,该输出反馈区块模式加密运算包含对多个明文区块加密以产生相应的多个密文区块;及
一输出反馈区块模式解密运算,该输出反馈区块模式解密运算包含对多个密文区块解密以产生相应的多个明文区块。
3.如权利要求1所述的装置,其中该密码指令指定执行指定的该密码运算的输出反馈模式。
4.如权利要求3所述的装置,其中该中断事件包含转移程控到一处理该中断事件的程序流程,及其中执行在当前输入文字区块指定的该密码运算被中断。
5.如权利要求4所述的装置,其中当从程控返回该密码指令时,指定的该密码运算在该当前输入文字区块中被执行。
6.如权利要求1所述的装置,其中在每一个相对应所述输入文字区块上的每一个所述输出反馈区块模式密码运算完成时,该输出反馈区块模式逻辑电路至少进行下列运作的一个:
指引该计算设备修改该指针缓存器,以指向下一个输入和输出文字区块;
指引该计算设备到一初始化向量缓存器的内容所指向的存储器位置,以储存当前的等效初始化向量;及
指引该计算设备,使经由一当前输入文字区块及一当前输出文字区块二者的互斥或运算,以产生该当前的等效初始化向量。
7.如权利要求1所述的装置,其中该中断事件包含一中断、一异常、一页面出错或一任务切换。
8.如权利要求1所述的装置,其中该密码指令参考到在该计算设备中的多个缓存器。
9.如权利要求8所述的装置,其中所述缓存器包含选自下列的一个:
一第一缓存器,其中该第一缓存器的内容包含一指向第一存储器地址的第一指针,该第一存储器地址指定在存储器中的一第一位置,在指定的该密码运算将被完成时存取所述输入数据区块;
一第二缓存器,其中该第二缓存器的内容包含指向一第二存储器地址的一第二指针,该第二存储器地址指定在该存储器中的第二位置以保存相对应的多个输出文字区块,所述相对应的输出文字区块在多个输入文字区块完成指定的该密码运算所产生的结果;
一第三缓存器,其中该第三缓存器的内容系表明在多个输入文字区块内的多个文字区块;
一第四缓存器,其中该第四缓存器的内容包含指向一第三存储器地址的一第三指针,该第三存储器地址指定一在存储器中的第三位置,以供在完成指定的该密码运算所使用密钥数据的存取;
一第五缓存器,其中该第五缓存器的内容包含一指向一第四存储器地址的第四指针,该第四存储器地址指定一在存储器中的第四位置,该第四位置包含该初始化向量位置,该初始化向量位置的内容包含一在完成指定的该密码运算时所使用的初始化向量或等效初始化向量;及
一第六缓存器,其中该第六缓存器的内容包含指向一第五存储器地址的一第五指针,该第五存储器地址指定一在存储器中的第五位置以供完成指定的该密码运算所使用控制字的存取,其中该控制字用以指定该密码运算所使用的多个密码参数。
10.如权利要求1所述的装置,其中该执行逻辑电路包含:
一个密码单元,其在每一个所述输入文字区块上执行多个密码回合,以产生相对应的每一个的多个输出文字区块,其中所述密码回合是由该密码单元的控制字所指定。
11.如权利要求1所述的装置,其中该密码指令电路兼容于x86、PowerPC、MIPS指定架构。
CN2012100514523A 2004-04-16 2005-03-10 执行通透性输出反馈模式密码功能的方法及装置 Pending CN102594547A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/826,745 2004-04-16
US10/826,745 US7529368B2 (en) 2003-04-18 2004-04-16 Apparatus and method for performing transparent output feedback mode cryptographic functions

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN200510054348XA Division CN1652163B (zh) 2004-04-16 2005-03-10 执行通透性输出反馈模式密码功能的方法及装置

Publications (1)

Publication Number Publication Date
CN102594547A true CN102594547A (zh) 2012-07-18

Family

ID=34887810

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2012100514523A Pending CN102594547A (zh) 2004-04-16 2005-03-10 执行通透性输出反馈模式密码功能的方法及装置
CN200510054348XA Active CN1652163B (zh) 2004-04-16 2005-03-10 执行通透性输出反馈模式密码功能的方法及装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN200510054348XA Active CN1652163B (zh) 2004-04-16 2005-03-10 执行通透性输出反馈模式密码功能的方法及装置

Country Status (2)

Country Link
CN (2) CN102594547A (zh)
TW (1) TWI272815B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109416630A (zh) * 2016-07-22 2019-03-01 英特尔公司 用于多个缓冲器的自适应处理的技术

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8128186B2 (en) * 2007-07-27 2012-03-06 Hewlett-Packard Development Company, L.P. Non-volatile memory data integrity validation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020191784A1 (en) * 2001-06-08 2002-12-19 Nhu-Ha Yup Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels
US20030185391A1 (en) * 2002-03-28 2003-10-02 Broadcom Corporation Methods and apparatus for performing hash operations in a cryptography accelerator
CN1558591A (zh) * 2003-12-04 2004-12-29 智慧第一公司 重组透明化区块密码编译方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4250546A (en) * 1978-07-31 1981-02-10 Motorola, Inc. Fast interrupt method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020191784A1 (en) * 2001-06-08 2002-12-19 Nhu-Ha Yup Circuit and method for implementing the advanced encryption standard block cipher algorithm in a system having a plurality of channels
US20030185391A1 (en) * 2002-03-28 2003-10-02 Broadcom Corporation Methods and apparatus for performing hash operations in a cryptography accelerator
CN1558591A (zh) * 2003-12-04 2004-12-29 智慧第一公司 重组透明化区块密码编译方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109416630A (zh) * 2016-07-22 2019-03-01 英特尔公司 用于多个缓冲器的自适应处理的技术
CN109416630B (zh) * 2016-07-22 2024-01-30 英特尔公司 用于多个缓冲器的自适应处理的方法和装置

Also Published As

Publication number Publication date
CN1652163B (zh) 2012-07-11
TW200536330A (en) 2005-11-01
CN1652163A (zh) 2005-08-10
TWI272815B (en) 2007-02-01

Similar Documents

Publication Publication Date Title
CN1655496B (zh) 产生密码钥匙排程的装置及方法
EP1596530B1 (en) Apparatus and method for employing cryptographic functions to generate a message digest
US7321910B2 (en) Microprocessor apparatus and method for performing block cipher cryptographic functions
US7532722B2 (en) Apparatus and method for performing transparent block cipher cryptographic functions
US7844053B2 (en) Microprocessor apparatus and method for performing 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) 重组透明化区块密码编译方法及装置
US7529368B2 (en) Apparatus and method for performing transparent output feedback mode cryptographic functions
US7536560B2 (en) Microprocessor apparatus and method for providing configurable cryptographic key size
US7900055B2 (en) Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms
US7542566B2 (en) Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
CN1661958B (zh) 区块密码功能的微处理器及方法
CN1652163B (zh) 执行通透性输出反馈模式密码功能的方法及装置
US7519833B2 (en) Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine
CN1332526C (zh) 微处理器区块密码编译方法与装置
CN1658548B (zh) 配置密码引擎资料区块的微处理器及方法
US7529367B2 (en) Apparatus and method for performing transparent cipher feedback mode cryptographic functions
CN100539495C (zh) 可设定密码金钥大小的微处理器装置及方法
CN100463392C (zh) 执行组态区块密码编译演算法的微处理器装置和方法
CN1649296A (zh) 执行透明化密码区块串行模式密码运算的装置及方法
CN100527664C (zh) 具最佳化区块密码功能的微处理器及方法
CN1684408B (zh) 提供可建构式加密区块加密效果的微处理装置及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20120718