首页> 中国专利> 执行组态区块密码编译演算法的微处理器装置和方法

执行组态区块密码编译演算法的微处理器装置和方法

摘要

本发明是关于一种执行组态区块密码编译演算法的微处理器装置和方法,本发明提供一种在微处理器内复数个输入数据区块上执行密码编译运算的装置和方法。在一较佳实施例中,提供一种在微处理器内执行密码编译运算的装置。而此装置包含密码编译指令、演算逻辑和施行逻辑。电脑装置会将密码编译指令接收,并加入至执行电脑装置的指令流程中,而密码编译指令负责一个密码编译运算和一个密码编译演算法。演算逻辑与密码编译指令连接,且演算逻辑会命令电脑装置,依据一个密码编译演算法来执行一个密码编译运算。而施行逻辑与演算逻辑连接,且施行逻辑会执行一个密码编译运算。

著录项

  • 公开/公告号CN1607763A

    专利类型发明专利

  • 公开/公告日2005-04-20

    原文格式PDF

  • 申请/专利权人 威盛电子股份有限公司;

    申请/专利号CN200410080551.X

  • 申请日2004-09-28

  • 分类号H04L9/06;G06F7/00;

  • 代理机构11019 北京中原华和知识产权代理有限责任公司;

  • 代理人寿宁;张华辉

  • 地址 中国台湾

  • 入库时间 2023-12-17 16:04:13

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2009-02-18

    授权

    授权

  • 2005-06-22

    实质审查的生效

    实质审查的生效

  • 2005-04-20

    公开

    公开

说明书

技术领域

本发明涉及一种微电子领域,特别是涉及一种在电脑装置中执行密码编译运算,而在电脑装置中执行特殊密码编译演算可在指令阶级编制程序的执行组态区块密码编译演算法的微处理器装置和方法。

背景技术

早期电脑系统都是独立作业,因为运作一个应用程序所需输入的数据(数据即资料,以下皆称为数据)是内建于早期电脑系统内或是由软件(软件即为软体,以下皆称为软件)工程师在程序运作时输入。应用程序执行后产生的输出数据通常是以白纸黑字的列印方式呈现,或是以一个档案的形式被写入磁碟、硬碟、或其他属于电脑系统一部分的储存装置中。接着这个输出档案可视为输入档案,在同一个电脑系统中执行下一个应用程序,或是如果这个输出数据先存成档案到大量储存装置,再用应用程序送到不同且相容的电脑系统。这些早期的系统对于保护敏感数据有一定的认知。而在其他数据保密措施中,执行密码编译应用程序,以保护未经许可而公开的敏感数据。这些密码编译程序通常于大量储存装置中,把存为档案的输出数据做加密或解密的动作。

几年之后,使用者发现可通过网络电脑来分享数据的好处。接着,网络架构、操作系统、数据传输规则所发展的范围,除了能支援分享的数据之外,还能提供重要的附加功能。例如,存取档案不同的工作站、或网络档案伺服器,或利用网络来取得新闻和其他资讯,或传输和接收电子讯息(如电子邮件)在数百种不同电脑。连接拍卖者的电脑系统并提供拍卖者信用卡或银行资料来购买产品,在餐厅、机场、或其他公共场使用无线网络来执行先前所提到的动作。对于今日电脑工作站的使用者来说,早已经习惯这种便利的生活了。因此,保护敏感数据和传送未经许可而公开的数据变成十分重要。今日通过电脑所传输的敏感数据需要保护的频率已大幅增加。因而目前新闻头条会发布如垃圾邮件、骇客、盗用身分、反向工程、诈欺和信用卡盗刷等有关电脑安全性资讯给社会大众,以唤起社会大众的警觉。这些侵害隐私动作的动机有时是纯属意外的无心过失,有些则是已计划好的恐怖手段。使得政府相关单位已制定好新的法令来严格执行,但是这些动作未能有效杜绝有心人士入侵电脑数据的浪潮。过去让政府单位、金融机构、军方和情报单位所担忧的问题,如今便成为每一位在家读取电子邮件或使用网络银行交易的社会大众最担心的问题之一。

资讯安全这个领域能提供数据加密的动作,可以让指定人士将数据解密,这个保护方式称为密码编译。在保护电脑与电脑间数据的传输上,通常使用密码编译来将敏感数据(如本文)转换成无法辨识的形式(如密文)。将本文转换成密文的变换过程称为“加密”,而将密文转换成本文的反向变换过程称为“解密”。

在密码解译的这个领域中,已发展几项程序和规则,可让使用者不需用太多密码编译的知识或花太大的努力,将数据以加密的形式传送给不同的使用者。除了加密数据以外,寄件者通常会给收件者一个“加密金钥”,让收件者能回复加密数据,或提供收件者进入未加密的原始数据的管道。熟知此技艺者了解,这些程序通常会通过密码保护、数学演算、及特别设计给加密和解密敏感数据的应用程序来执行。

目前有许多种类的演算法可用于加密和解密数据上。其中一种公开金钥加密演算法(如RSA演算法)使用两个加密金钥,一个公开金钥(publickey)和一个私密金钥(private key)来加密或解密数据。依据一些公开金钥加密演算法,寄件者所提供的公开金钥,将传送给收件者的数据加密。因为公开金钥和一个私密金钥间有某种特定的数学关系,收件者必须执行他的私密金钥来将传加密的数据解密,以还原原本的数据。虽然今日这种密码编译演算法广为大众所使用,可是加密和解密的运算过慢,就连处理少量的数据也是一样很慢。第二种演算法为对称加密金钥演算法,不但提供与第一种演算法等级的数据保密性,且执行速度更快。这种演算法会称为对称加密金钥演算法,是因为使用单一加密金钥来同时执行加密和解密的动作。在一些公家机关中,目前普遍使用三种单一金钥加密演算法:数据加密标准(Data Encryption Standard,DES)演算法、三元数据加密标准(Triple DES)演算法以及高阶加密标准(Advanced Encryption Standard,AES)演算法。由于这些演算法的强度足以保护敏感数据,因而目前被美国政府单位使用,但相信不久的未来,这些演算法中其中的一种或更多种能成为商业或是私人交易中的使用标准。从这些对称加密金钥演算法来看,将本文和密文分割成一定大小的片段来执行加密和解密的动作。例如,AES演算法在128位元的片段上进行密码编译运算的动作,并可使用大小为128、192、256位元的加密金钥。其他对称加密金钥演算法如Rijndael Cipher同样地可用于192、256位元的数据片段。因此,在一片段加密运算上,可将1024位元的本文加密分为8个128位元的片段。所有的对称加密金钥演算法使用相同种类的子运算来加密本文的片段。依据较常使用的对称加密金钥演算法,将一个初始的加密金钥扩展到多个金钥(如金钥程序表),作为对应的密码编译“回合”的每个金钥执行于本文片段中。例如,从金钥程序表的第一金钥用来执行本文片段中子运算的第一密码编译回合。第一回合的结果作为第二回合的输入数据,而第二回合会执行从金钥程序表的第二金钥以产生第二回合的结果。接着执行几个特定的回合以产生最后回合的结果“密文”。而在AES演算法,每一回合内的子运算指向相关文献中,如子位元(SubBytes、S-box)、移列(ShiftRows)、混栏(MixColums)和加入回合金钥(AddRoundKey)。密文片段解密相似于本文片段加密,就是把密文当作输入值输到反向加密。当进行每一回合时,执行反向子运算(如:反向混栏(Inyerse MixColums)、反向移列(Inverse ShiftRows)。而最后一回合的结果为本文片段。

DES和三元DES都使用不同的特定子运算,但这些子运算与AES的子运算相似,因为它们都用相似的方式将本文转变成密文片段。

为了在多个连续片段数据上执行加密运算,所有的对称加密金钥演算法使用相同种类的模式。这些模式包含电子书码(electronic code book)模式、连续编码片段(cipher block chaining)模式、编码反馈(cipherfeedback)模式和输出反馈(output feedback)模式。其中一些模式在执行子运算时需使用额外的初始化向量,而另一些模式使用第一段本文所执行的第一加密回合的加密输出值,其可作为第二段本文所执行的第二加密回合的输入值。若深入探讨每一个密码编译演算法和对称加密金钥演算法所执行的子运算,会超出本发明的应用范围。关于DES和三元DES的详细地实施规范探讨,读者可参阅西元1999年10月25日所出版的FederalInformation Processing Standards Publication 46-3(FIPS-46-3)。关于AES的详细地说明,可参阅西元2001年11月26日所出版的FederalInformation Processing Standards Publication 197(FIPS-197)。由National Institute of Standards and Technology(NIST)发行并维护先前所述的标准,在此作为参阅数据。除了上述的标准外,在NIST’s电脑安全资源中心(Computer Security Resource Center,CSRS)的网站http://csrs.nist.gov/提供单元教学、白皮书、套件(toolkits)和相关文章等。

熟知此技艺者了解,用于执行电脑系统的应用程序能进行密码编译运算(如加密和解密)。事实上,一些操作系统(操作系统即作业系统,以下皆称为操作系统)(如Microsoft、WindowsXP、Linux)通过密码编译基元(cryptographic primitives)、密码编译应用程序介面(cryptographicapplication program interfaces)及其他类似的介面,以提供直接加密/解密的服务。本发明者发现现今电脑密码编译的技术在某些方面上仍有许多缺点,因此读者们所见的图1,图中所说明的缺点会在下述讨论。

请参阅图1所示,为现今电脑密码编译应用的方框图。方框图100是连接到区域网络105的第一电脑工作站101。而区域网络105又连接到第二电脑工作站102、网络档案储存装置(network file storage device)106、第一路由器(first router)107、或其他连接至广域网络110(wide areanetwork)的介面。而其他连接至广域网络110(wide area network)的介面像是网络、无线网络路由器(wireless network router)108(如IEEE标准802.11规范)。膝上型电脑104则通过无线网络(wireless network)109与无线路由器108连接。而第二路由器(second router)111能提供与第三电脑工作站(third computer workstation)103的介面。

如先前所述,现今使用者在使用电脑时会多次遇到电脑资讯安全性的问题。例如,在多个操作系统控制之下,电脑工作站101的使用者能同时进行多样工作,而每样工作都需要密码编译运算。电脑工作站101的使用者需执行加密/解密应用112(通过操作系统执行),以在网络档案储存装置中储存部分档案。在储存档案的同时,使用者能将已加密的数据传输到电脑工作站102上的第二个使用者。电脑工作站102上的第二个使用者亦需要执行加密/解密应用112。而这个已加密的数据可能是即时的(如即时讯息)、或非即时的(如电子邮件)。因此,使用者能进入或提供他/她的金融资料(如信用卡号码、金融交易等等)或其他通过广域网络110从电脑工作站103所得到的敏感数据。电脑工作站103也能代表一个家庭办公室或其他远端电脑103。当电脑工作站101的使用者不在办公室时,需过通过网络来存取区域网络105的分享资源101、102、106、107、108、109。每一个上述的动作需执行加密/解密应用112。因此,无线网络109目前已被广泛使用在咖啡厅、机场、学校和其他的公共场所,膝上型电脑的使用者除了需要将传送给别的使用者的数据或从别的使用者接收的数据加密/解密之外,所有通过无线网络109到无线网络路由器的数据也都要加密/解密。

熟知此技艺者了解,在已知的电脑工作站101-104上需要做密码编译运算的动作时,且需执行加密/解密应用112。因此,在不久的将来,电脑110-104有可能会同时进行数百种的密码编译运算。

本发明的发明者已注意到使用上述电脑101-104的加密/解密应用112来执行密码编译运算,会有一些限制。例如,相较于用专门的硬件(硬件即为硬体,以下皆称为硬件)来执行特定功能,硬件的处理速度会比软件处理的速度来得快。每一次都需要执行加密/解密应用112,在电脑101-104正在执行的工作会被暂停。而密码编译运算的参数(如本文、密文、模式、金钥等等)必须通过操作系统传到加密/解密应用112,来完成密码编译运算。因为密码编译演算在数据的特殊片段中需执行许多回合的子运算。因此,加密/解密应用112要执行的指令数量繁多,让整个操作系统处理的速度明显下降。熟知此技艺者了解,在Microsoft Outlook中传送一封加密电子邮件的时间会是传送一封未加密电子邮件的时间的五倍。

介入电脑操作系统的延误也会影响目前的技术,大多应用程序不提供完整的金钥产生或加密/解密功能,因此,都是靠操作系统或插件软件来完成这些作业。而要获得操作系统的资源,要向操作系统发出中断指令或正在执行的应用软件对操作系统提出要求。

因此,本发明的发明者已注意,在电脑101-104中完成密码编译运算十分相似于微处理器内所出现的特定浮点单位之前的浮点数学运算。早期的浮点运算可用软件来执行,因此它们执行的速度非常慢。而密码编译运算通过软件处理的速度也很慢。随着浮点技术的发展,浮点指令会执行于浮点共同处理器(co-processor)。虽然整体系统的价格会升高,但这些浮点共同处理器所执行的浮点运算比执行软件的速度快很多。同样地,密码编译共同处理器是用附加卡(add-on boards)或通过平行接口或其他介面总线(如USB)到主处理器的插卡式或外挂式装置。这些共同处理器能让密码编译运算完成速度比单纯执行软件的速度快上许多。但密码编译共同处理器会增加系统组装的花费和耗电量提升,使得系统的整体可靠度降低。因为共同处理器和主处理器各处于不同的晶片,所以可从连接它们之间的管道来窃取数据。

因此内建现今微处理器内的特定密码编译运算的硬件是必要的。这个硬件应让应用软件只需发出一个命令便能完成密码编译运算的工作。发明者认为这种硬件可以减少介入电脑操作系统的必要性。本发明能提供应用软件执行密码编译指令的优先权,除了需相容于普及于市面上的微处理器之外,还要能支援先前老旧的操作系统和应用软件。因此,更需要提供一种执行密码编译运算的装置和方法,其可支援多种密码编译演算法,且能认证和测试硬件上的密码编译演算法、支援切换不同大小的多种数据片段和金钥、并提供可程序化片段加密/解密模式(如ECB、CBC、CFB和OFB)。

由此可见,上述现有的执行密码编译演算的微处理器装置和方法在结构、方法与使用上,显然仍存在有不便与缺陷,而亟待加以进一步改进。为了解决执行密码编译演算的微处理器装置和方法存在的问题,相关厂商莫不费尽心思来谋求解决之道,但长久以来一直未见适用的设计被发展完成,而一般产品又没有适切的结构能够解决上述问题,此显然是相关业者急欲解决的问题。

有鉴于上述现有的执行密码编译演算法的微处理器装置和方法存在的缺陷,本发明人基于从事此类产品设计制造多年丰富的实务经验及专业知识,并配合学理的运用,积极加以研究创新,以期创设一种新的执行组态区块密码编译演算法的微处理器装置和方法,能够改进一般现有的执行密码编译演算法的微处理器装置和方法,使其更加具有实用性。经过不断的研究、设计,并经反复试作样品及改进后,终于创设出确具实用价值的本发明。

发明内容

本发明的目的在于,克服现有的执行密码编译演算法的微处理器装置存在的缺陷,而提供一种新的执行组态区块密码编译演算法的微处理器装置和方法,所要解决的技术问题是使其提供一种在微处理器内执行密码编译运算的装置。而此装置包含密码编译指令、演算逻辑和施行逻辑。电脑装置会将密码编译指令接收,并加入至执行电脑装置的指令流程中,而密码编译指令负责一个密码编译运算和一个密码编译演算法。演算逻辑与密码编译指令连接,且演算逻辑会命令电脑装置,依据一个密码编译演算法来执行一个密码编译运算。而施行逻辑与演算逻辑连接,且施行逻辑会执行一个密码编译运算,从而更加适于实用。

本发明的另一目的在于,提供一种执行密码编译运算的装置。此装置具有装置内的一个密码编译单位和演算逻辑。密码编译单位执行其中的一个密码编译运算,反应到指令流程中密码编译指令的接收,而这个指令流程会负责一种密码编译运算。这个密码编译指令具有一个演算栏位,当执行其中的一种密码编译运算时,负责执行其中的一种密码编译演算。而演算逻辑连接到密码编译单位,且演算逻辑会依据这种密码编译演算法,来命令执行这种密码编译运算的装置,从而更加适于实用。

本发明的再一目的在于,提供另一种在装置中执行密码编译运算的方法。这种方法包含接收负责其中的一种密码编译运算的密码编译指令和其中的一种密码编译演算法,并依据这种密码编译演算法来执行这种密码编译运算,从而更加适于实用。

本发明的目的及解决其技术问题是采用以下技术方案来实现的。依据本发明提出的一种执行加密运算的装置,其包括:一加密指令藉由计算装置来接收,以作为执行该计算装置的部分指令流程,其中该加密指令规定其中之一复数个加密运算,且其中该加密指令规定其中之一复数个加密演算;一演算逻辑连接到该加密指令,其配置来命令该计算装置,依据其中之一该些加密演算以执行其中之一该些加密运算;以及一施行逻辑连接到该演算逻辑,其配置来执行其中之一该些加密运算。

本发明的目的及解决其技术问题还可采用以下技术措施进一步实现。

前述的执行加密运算的装置,其中之一该些加密运算更包括:一加密运算说明由复数个明文区块密码组成的加密运算,以产生对应的复数个密文区块。

前述的执行加密运算的装置,其中之一该些加密运算更包括:一解码运算说明由复数个密文区块密码组成的解码程序,以产生对应的复数个本文区块。

前述的执行加密运算的装置,其中之一该些加密演算包含高阶加密标准演算。

前述的执行加密运算的装置,其中之一该些加密演算包含数位加密标准演算。

前述的执行加密运算的装置,其中之一该些加密演算包含三度数位加密标准演算。

前述的执行加密运算的装置,其中所述加密指令包含依据x86指令形式规定。

前述的执行加密运算的装置,其中所述的加密程序关是到该计算装置内的复数个暂存器。

前述的执行加密运算的装置,其中所述的该些暂存器包括:第一暂存器,其中该第一暂存器包含第一指标到第一内存位址的内容,而该第一内存位址指定内存中的第一位址,依据完成其中之一该些加密过程,以存取该些输入文字区块。

前述的执行加密运算的装置,其中所述的该些暂存器包括:第二暂存器,其中该第二暂存器包含第二指标到第二内存位址的内容,而该第二内存位址指定内存中的第二位址,以存入对应的复数个输出文字区块,对应的该些输出文字区块产生由于完成依据该些输入文字区块的其中之一该些加密程序。

前述的执行加密运算的装置,其中所述的该些暂存器包括:第三暂存器,其中该第三暂存器的内容指示该些输入文字区块内的复数个文字区块。

前述的执行加密运算的装置,其中所述的该些暂存器包含:第四暂存器,其中该第四暂存器包含第三指标到第三内存位址的内容,而该第三内存位址指定内存中的第三位址,以存取用来完成其中之一该些加密程序的加密键数据。

前述的执行加密运算的装置,其中所述的该些暂存器包含:第五暂存器,其中该第五暂存器包含第四指标到第四内存位址的内容,而该第四位址指定内存中的第四位址,且该第四位址包含初始化向量位置,该初始化向量位置包含初始化向量或用来完成其中之一该些加密程序的初始化向量相等物。

前述的执行加密运算的装置,其中所述的该些暂存器包含:第六暂存器,其中该第六暂存器的内容包含第五指标到第五内存位址,而该第五位址指定内存中的第五位址,以存取用来完成其中之一该些加密程序的控制字,其中该控制字规定其中之一该些加密程序的加密参数。

前述的执行加密运算的装置,其中所述的执行逻辑包含:一加密单元,其配置来执行在每一该些输入文字区块上的复数个加密回合,以产生对应的每一该些输出文字区块,其中该些加密回合藉由该加密单元所提供的控制字来规定。

本发明的目的及解决其技术问题是采用以下技术方案来实现的。依据本发明提出的一种执行加密程序的装置,其包括:一装置内的加密单元,配置来执行其中之一复数个加密运算,其反应到接收其中之一该些加密运算所规定的指令流程内的加密指令,其中该加密指令包含:一演算栏位,配置来规定其中之一复数个加密演算,当执行其中一该些加密程序;以及一演算逻辑,连接到该加密单元,配置来命令该装置,依据其中之一该些加密演算以执行其中一该些加密程序。

本发明的目的及解决其技术问题还可采用以下技术措施进一步实现。

前述的执行加密运算的装置,其中之一该些加密演算包含高阶加密标准演算。

前述的执行加密运算的装置,其中之一该些加密演算包含数位加密标准演算。

前述的执行加密运算的装置,其中之一该些加密演算包含三度数位加密标准演算。

前述的执行加密运算的装置,其中所述的加密指令包含依据x86指令形式规定。

前述的执行加密运算的装置,其中所述的接收包含依据x86指令形式规定加密指令。

本发明的目的及解决其技术问题是采用以下技术方案来实现的。依据本发明提出的一种在装置中执行加密运算的方法,其包含以下步骤:接收一加密指令,用来规定其中之一复数个加密运算其中一复数个加密演算;以及依据其中之一该些加密演算,执行其中之一该些加密运算。

本发明的目的及解决其技术问题还可采用以下技术措施进一步实现。

前述的在装置中执行加密运算的方法,其中之一该些加密演算包含进阶加密标准演算。

本发明的目的及解决其技术问题还可采用以下技术措施进一步实现。

前述的在装置中执行加密运算的方法,其中之一该些加密演算包含数位加密标准演算。

本发明的目的及解决其技术问题还可采用以下技术措施进一步实现。

前述的在装置中执行加密运算的方法,其中之一该些加密演算包含三元数位加密标准演算。

经由上述可知,本发明是关于一种执行组态区块密码编译演算法的微处理器装置和方法,本发明提供一种在微处理器内复数个输入数据区块上执行密码编译运算的装置和方法。在一较佳实施例中,提供一种在微处理器内执行密码编译运算的装置。而此装置包含密码编译指令、演算逻辑和施行逻辑。电脑装置会将密码编译指令接收,并加入至执行电脑装置的指令流程中,而密码编译指令负责一个密码编译运算和一个密码编译演算法。演算逻辑与密码编译指令连接,且演算逻辑会命令电脑装置,依据一个密码编译演算法来执行一个密码编译运算。而施行逻辑与演算逻辑连接,且施行逻辑会执行一个密码编译运算。

综上所述,本发明执行组态区块密码编译演算法的微处理器装置和方法,具有上述诸多的优点及实用价值,并在同类产品及方法中未见有类似的结构设计及方法公开发表或使用而确属创新,其不论在产品结构、方法或功能上皆有较大的改进,在技术上有较大的进步,并产生了好用及实用的效果,且较现有的执行密码编译演算法的微处理器装置和方法具有增进的多项功效,从而更加适于实用,诚为一新颖、进步、实用的新设计。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并为了让本发明的上述和其他目的、特征和优点能更明显易懂,以下特举多个较佳实施例,并配合附图,详细说明如下。

附图说明

图1是现今密码编译应用的方框图。

图2是执行密码编译运算的技术的方框图。

图3是依据本发明一执行密码编译运算的微处理装置的方框图。

图4是依据本发明一atomic密码编译指令实施例的方框图。

图5是依据图4的atomic密码编译指令一区块编码模式栏位数值的对照表。

图6是依据本发明x86微处理器内密码编译单位的方框图。

图7是绘示微指令内的栏位,用来命令图6的微处理器内的密码编译子运算。

图8是依据图7一XLOAD微指令的暂存栏位数值的对照表。

图9是依据图7一XSTOR微指令的暂存栏位数值的对照表。

图10是依据本发明一个控制字元格式例子的方框图,控制字元规定密码编译运算的密码编译参数。

图11是依据本发明一详细说明密码编译单位例子的方框图。

图12是依据本发明一区块编码逻辑实施例,执行AES演算法的密码编译运算的方框图。

图13是依据本发明中断事件发生时保留密码编译状态的方法的流程图。

图14是依据本发明一或多个中断事件发生时在复数个输入数据片段中所指定的密码编译演算法,一执行密码编译运算的方法的流程图。

具体实施方式

为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的执行组态区块密码编译演算法的微处理器装置和方法其具体实施方式、结构、方法、步骤、特征及其功效,详细说明如后。

下述内容将参阅图2所延续先前技术背景的密码编译程序和现今电脑系统内执行加密及解密数据的相关技术。接下来请参阅图3~图12所示。本发明提供了一种效能和机制优越的装置和方法来执行密码编译运作,除此之外,更可达到介入操作系统的限制、独立完整性、老旧架构相容性、演算和模式切换性、骇客抵御性以及可测试性的目的。

现在请参阅图2所示,其方框图200是现今电脑系统内执行密码编译运算。方框图200包括一个微处理器201,这个微处理器201从应用内存203的系统记忆区内快取指令并存取应用程序所连结的数据。应用内存203内的程序控制和数据存取通常是由操作系统软件202处理,而操作系统软件202位于系统内存的保护区内。如先前所提及,一个施行应用程序(如:一个电子邮件的程序或一个档案储存的程序)需要执行密码编译运作,而此施行应用程序必须命令微处理器201施行一连串的指令,以完成密码编译运算。这些指令有些是此施行应用程序内的子程序,有些是连接到此施行应用程序的插件软件应用,或是操作系统202所提供的服务。无论怎么连结,这些指令都位于内存中的特定区域。为了方便讨论,这些记忆区位于应用内存203中且包含一个金钥产生软件204,此金钥产生软件一般负责产生和接受金钥的工作,并将金钥展开成为金钥程序表205,以用于密码编译回合运作。对于多片段加密运作,可执行片段加密应用。而区块加密应用执行指令来存取本文210区块、金钥程序表205、密码编译参数209,而密码编译参数209更指定加密运算的项目如模式、金钥程序表的位置等。如果需要指定模式,加密软件206也会存取初始化向量208。加密软件206执行内部指令以产生符合的密文211区块。解密流程大致上相同,当需要解读加密片段时,部分解密软件207会被呼叫。解密软件207执行指令以进入密文区块、金钥程序表205、密码编译参数209。其中密码编译参数209能提供解密的详细项目。若需要解密模式,解密软件207也会存取初始化向量208。而解密软件207执行内部指令来产生符合的本文210区块。

加密、解密和产生金钥的动作应该可以用更少的指令完成。先前提出由FIPS规范提供几个不同虚拟码来预估需要执行的指令数量,而目前技术需要数百个指令来完成一项简单的加密工作。微处理器201执行每一个指令,以完成所需的密码编译运算。除此之外,从这些执行的应用软件(如:档案管理、简讯、电子邮件、远端档案存取、信用卡交易)的角度来看,执行密码编译不是软件的主要用途,且会让使用执行应用软件者错觉应用软件效率差。至于独立或插件加密软件206和解密软件207,加密软件206和解密软件207的管理必须支援操作系统202的其他目的如支援中断、异常和其他状况。此外,电脑系统上每一个同时正在进行的密码编译都会需要在内存203内安排一定的空间给软件204、206和207,而且未来微处理器201所需处理的密码编译工作数量只会有增无减。

有鉴于现今电脑系统处理密码编译的这个缺陷,发明者体会需要在微处理器内改善密码编译处理速度的装置及方法的必要性。此密码编译单位通过单一密码编译指令来启动密码编译程序。关于此发明,将在图3~图12作更进一步的解释。

请参阅图3所示,其照本发明所提供的微处理器密码编译运作的装置方框图。方框图300是微处理器301经由内存总线319连接到系统内存321,而微处理器301包括转译逻辑303由指令暂存器302接收指令。转译逻辑303的构成可以是一个逻辑、电路、装置、微指令码(如微指令或原生指令)或是一个逻辑、电路、装置、微指令码、将指令转译成微指令码的连接序列的相同功效元件的结合。而转译逻辑303执行转译的元件可以与微处理器301内执行其他功能的线路、微指令码等元件共用。依据本发明的应用范围,微指令码指示一个或复数个微指令,而一个微指令(亦为原生指令)指示在密码编译单元层次可执行的指令。举例来说,精简指令集运算处理器(reduced instruction set computer microprocessor)都直接执行微指令。而加强指令集运算微处理器(complex instruction set computermicroprocessor)如与x86相容的微处理器,则先将x86指令转译成相关的微指令,而后再由内部一个或一个以上的单元执行指令。转译逻辑303和微指令队列(队列即伫列,以下皆称为队列)304连接,而微指令队列304中有复数个微指令入口305、306。由微指令队列304所提供的微指令到含有暂存器档案307的暂存器阶段逻辑,而暂存器档案307具有复数个暂存器308~313,这些暂存器会在进行规定的密码运算之前将数据输入。暂存器308~312指向内存中对应的位置323~327,包含执行所规定的密码编译运算的数据。暂存阶段连接在载入逻辑314,载入逻辑314则接合到快取记忆数据315,从快取记忆数据315读取规定的密码编译运算的所需数据,而快取记忆数据315经由内存总线319连接到内存321。施行逻辑328连接到载入逻辑314并执行先前阶段传下来的微指令运算,而施行逻辑328的构成可以是一个逻辑、电路、装置、微指令码(如微指令或原生指令)或是一个逻辑、电路、装置、微指令码、执行指令所指示运算的相同功效元件的结合。执行施行逻辑328内运算的元件能与执行在微处理器301内其他功能的其他电路、微指令码等结合。施行逻辑328包含一个密码编译单位316,而此密码编译单位316从载入逻辑314接收密码编译运算所需的数据。微指令命令密码编译单位316对复数个输入文字片段326进行密码编译,并输出对应的复数输出文字片段327。密码编译单位316的构成可以是一个逻辑、电路、装置、微指令码(如微指令或原生指令)或是一个逻辑、电路、装置、微指令码、执行密码运算的相同功效元件的结合。而在密码编译单位316内执行密码运算的元件可以和执行微处理器301内其他功能的其他电路、微指令码等共用。在一较佳实施例中,密码编译单位316与施行逻辑328内如整数单位、浮点单位等其他执行单位(未图示)平行执行。一“单位”的较佳实施例的构成是一个逻辑、电路、装置、微指令码(如微指令或原生指令)或是一个逻辑、电路、装置、微指令码、执行特定功能或特定运算的相同功效元件的结合。执行特殊单位内的特定功能或特定运算的元件能与执行微处理器301内其他功能或运算的其他电路、微程序码等共用。举例来说,在一较佳实施例,一整数单位的构成是一个逻辑、电路、装置、微指令码(如微指令或原生指令)或是一个逻辑、电路、装置、微指令码、执行整数指令的相同功效元件的结合。一浮点单位的构成是一个逻辑、电路、装置、微指令码(如微指令或原生指令)或是一个逻辑、电路、装置、微指令码、执行浮点指令的相同功效元件的结合。执行在整数单位内的元件与执行在浮点单位内的浮点指令的其他电路、微指令码等共用。在一个与x86架构相容的较佳实施例中,密码编译单位316与一x86整数单位、一x86浮点单位、一x86 MMX单位以及一x86 SSE单位平行运作。依据本发明应用范围,一相容于x86架构的较佳实施例可以支援大多数为x86所撰写的软件,要判断软件是否正确地执行,需检查执行软件是否得到所期望的结果。其他与x86相容的实施例是将密码编译单位视为x86执行单位中的一个子单位。密码编译单位316连接到储存逻辑317,并提供输出复数个对应的文字片段327。而储存逻辑317又与快取记忆数据315连接,快取记忆数据315将输出文字片段327发送到系统内存321储存。储存逻辑317与写回逻辑318连接,当密码编译运算完成后,写回逻辑318会更新暂存档案307内的暂存器308~313。在一较佳实施例中,微指令配合时脉信号(未图示)流向每一个先前所述的逻辑阶段302、303、304、307、314、316-318,这样运算可以如同生产线作业般同时执行多个运算。

系统内存321内,一应用程序若需要执行密码编译运算,可命令微处理器301执行经由单一密码编译指令322的运算,以下称为XCRYPT指令322。在加强指令集运算实施例中,XCRYPT指令322包含一个指示密码编译运算的指令。在精简指令集运算实施例中,XCRYPT指令322包含一个指示密码编译运算的微指令。在一较佳实施例中,XCRYPT指令322用现有指令集架构内的一个多余或未使用的指令运算码。在一个与x86相容的较佳实施例中,XCRYPT指令322是一个4位元指令,其包含x86前置(如0xF3),执行密码编译运算期间接着在未使用过的2位元运算码(0x0FA7),然后再接着一1位元特定区块解密模式。在一较佳实施例中,XCRYPT指令322依照应用软件能执行系统的层次,并直接将XCRYPT指令322写入指令程序流程,而复数个指令直接由应用程序或操作系统320提供到微处理器301。因为只需一个指令322命令微处理器301,以执行密码编译运算,所以密码编译的作业细节对操作系统320都是完全透明的。

电脑系统的运作模式,是由操作系统320呼叫执行各个应用程序,以执行在微处理器301。应用软件下令执行XCRYPT指令322,依据电脑系统中的一般指令流程,会从内存321传指令到暂存器302。在执行XCRYPT指令322之前,程序流程内的指令会下令微处理器301启动暂存器的内容,以至于指令指向内存321内的位置323~327,这些位置包含密码编译控制字元323、初始化密码编译控制金钥324、金钥程序表324、初始化向量325(若需要的话)、等着被处理的输入文字326以及输出文字327。在执行XCRYPT指令322之前需启动暂存器308~312,因为执行XCRYPT指令322会用到暂存器308~312中所有的数据。另外还有一个暂存器,其负责记录输入文字区326内有多少片段需要加密或解密。因此,转译逻辑303由快取逻辑302接收XCRYPT指令,转译指令成微指令对应序列,并下令微处理器301执行密码编译运作。微指令对应序列内的第一复数个微指令305~306下令密码编译单位316,将载入逻辑314的数据载入并开始执行指定次数的密码编译回合,以产生输出数据的对应区块且将输出数据的对应区块送到储存逻辑317,而储存逻辑317是经由快取记忆数据315用来储存内存321中的输出文字区327。在微指令的对应序列内第二复数个微指令(未图示)下令微处理器301内的其他执行单位(未图示),执行其他运作以完成密码编译运作,如非架构暂存器(未图示)通常包含临时结果和计数器,更新输入和输出指标暂存器311~312,若需要在输入文字326区块的加密/解密、中断程序等之后更新初始化向量指标暂存器310。在一较佳实施例中,暂存器308~313为架构暂存器,而架构暂存器308~313为定义特殊微处理器的指令集架构(ISA)内的暂存器。在一较佳实施例中,密码编译单位316被分为复数个阶段,因此允许连续输入的文字片段326管线化。

图3是本发明必要元件的方框图,许多现今微处理器301内部的逻辑没有在图300内显示。熟悉该技艺者会发现,为了能清楚说明本发明,许多微处理器301内包含逻辑在图300都被简化了,这是为了方便叙述。如载入逻辑可以包含一个地址产生步骤,接着一个快取记忆介面阶段,然后再接着一个快取记忆对齐阶段。但是有一点很重要,本发明对复数个输入文字片段进行密码编译326,操作系统只要通过单一指令便能完成。本发明密码编译工作的细节动作完全透明化,而且和微处理器301内其他施行单位同时进行运算。密码编译单位316和相关的XCRYPT指令322运作完全和现今legacy操作系统320运算相容。

现请参阅图4所示,其是依据本发明的密码编译指令400的方框图。密码编译指令400包含一个选择性的前置栏位401,接着一个重复前置栏位402,再接着运算码栏位403,然后再接着区块加密模式栏位404。在一较佳实施例中,栏位401~404的内容与x86指令集结构相容。

运算时,许多指令集结构中执行选择性的前置栏位401,可开启或关闭指示处理器的某些程序功能,例如直接作16位元或32位元的运算、直接处理或存取特定片段等。重复前置栏位402指示密码指令所作的密码运算,完成于输入数据的复数个区块(如明文或密文)。重复前置栏位402又命令相称的处理器来执行复数个架构暂存器的内容,作为指示器到内存中的位置,此位置包含密码编译的数据和需完成特定密码编译运算的参数。如先前所提及,在一与x86相容的较佳实施例中,重复前置栏位402的数值为0xF3。依据x86结构规定,密码编译指令十分近似于形成x86重复带指令(repeatstring instruction)如REP.MOVS。举例来说,当执行本发明与x86相容的微处理器的较佳实施例,重复前置栏位说明储存于结构性暂存器ECX中的计数器,一资源位址指示器(指到密码编译运算的输入数据)储存于暂存器ESI,以及对比位址指示器(指到内存的输出数据)储存于暂存器EDI。在一与x86相容的较佳实施例中,本发明更扩展传统重复带指令的概念到储存于暂存器EDX的控制字元指示器、储存于暂存器EBX的密码编译金钥指示器、储存于暂存器EAX的初始化向量(若需要加密模式)的指示器。

运算码栏位403规定微处理器执行控制字元指示的密码编译运算,这个控制字元实际上经由控制字元指示器被储存于内存内。本发明选择运算码值403作为现有指令集结构其中的一个多余或未使用运算码值,以便保留与legacy操作系统和应用软件相符的微处理器内的相容性。举例来说,与x86相容的实施例中的运算码栏位403执行0x0FA7,来下令执行特定密码编译运算。区块加密模式栏位404规定,在特定密码编译运算期间执行特殊的区块加密模式。

请参阅图5所示,是依据图4密码编译指令的一个区块加密模式栏位的对照表500。若区块加密模式栏位为0xC8时,微处理器就会以电子书码(ECB)模式来完成密码编译动作。若区块加密模式栏位为0xD0时,微处理器就会以编译方块连锁(CBC)模式来完成密码编译动作。若区块加密模式栏位为0xE0时,微处理器就会以编码反馈(CFB)模式来完成密码编译动作。且若区块加密模式栏位为0xE8时,微处理器就会以输出反馈(反馈即为回授,以下皆称为反馈)(CFB)模式来完成密码编译动作。以上所述各模式在FIPS文献中均有详细的说明。

现请参阅图6所示,其是一个与x86相容的微处理器600中的密码编译单位617的方框图。微处理器600包含一个快取逻辑601,而快取逻辑601是由内存(未图示)快取指令并连接转译逻辑602。转译逻辑602的构成是一个逻辑、电路、装置、微指令码(如微指令或原生指令)或是一个逻辑、电路、装置、微指令码、将指令转译成微指令的连结序列的相同功效元件的结合。而在转译逻辑602执行转译工作的元件会与在微处理器600内执行其他功能的其他电路、微指令码等共用。转译逻辑602包含与微指令码只读内存604连接的转译器603,以及与转译器603和微指令码只读内存604连接的演算逻辑640。而中断逻辑626通过总线628连接到转译逻辑602,软/硬件所发出的中断信号627都由中断逻辑626处理,而中断逻辑626传达指令让转译逻辑602中断。转译逻辑602连接到微处理器600的连续阶段,包含一个暂存器阶段605、一个位址阶段606、一个载入阶段607、一个施行阶段608、一个储存阶段618和一个写回阶段619。图6是施行阶段608内的施行逻辑632包含多个平行施行单位610、612、614、616、617。一个整数单位610负责由微指令队列609接收整数微指令。一个浮点单位612负责由微指令队列611接收浮点微指令。一个MMX单位614负责由微指令队列613接收MMX微指令。一个SSE单位616负责由微指令队列615接收SSE微指令。在一与x86相容的实施例中,经由一载入总线620、一闲置信号621和一储存总线622将密码编译单位617连接到SSE单位616。密码编译单位617和SSE单位共用同一个指令队列615。另一个实施例是将密码编译单位617设定为如单位610、612和614相同且完全独立的单位。一整数单位610与一x86 EFLAGS暂存器624连接。而EFLAGS暂存器包含一个x位元625,此x位元的状态用来指示密码编译运算是否在运作,且在此较佳实施例中x位元625是为x86 EFLAGS暂存器624的第30个位元。此外,整数单位610读取特定机器暂存器628来估算E位元629的状态。此E位元629的状态指出密码编译单位617是否存在于微处理器300内。此整数单位610也会读取在特征控制630内的D位元,来开启和关闭密码编译单元617。如第三图微处理器实施例301,为了能清楚表达发明特征,图6的微处理器600只显示出一些构造,其他部分则被汇集在一起或被省略。熟知此项技艺者通晓需要其他元件完成介面,例如负责快取记忆数据(未图示)、总线介面单位、时脉产生器和分散逻辑(未图示)等。

运算过程中,快取逻辑601将指令由内存(未图示)快取,并在配合时脉信号(未图示)时将指令送到转译逻辑602。转译逻辑602将每一个指令转译成微指令的对应序列,然后配合时脉信号送到微处理器600的后续阶段605~608、618、619。在一连串的微指令内的每一微指令下令执行子运算,这个子运算需要完成对应的指令指示的所有运算。例如由位址阶段606执行的位址产生指令,在整数单位内相加两个运算码,可由暂存器阶段605内的暂存器接收两个运算码的相加值,其中的一施行单位610、612、614、616、617所产生的结果都由储存逻辑618存入内存中。依据已转译的指令,转译逻辑602执行转译器603直接产生微指令的序列,或由微指令码只读内存快取序列,或执行转译器603直接产生一部分的序列且剩下的序列由微指令码只读内存604快取。微指令依照时脉信号在微处理器600中执行后续阶段605~608、618、619。当微指令送达到施行阶段608,藉由放置微指令到对应的微指令队列609、611、613、615,施行逻辑632将微指令发送到指定的施行单位610、612、614、616、617。施行单位610、612、614、616、617执行微指令,并将执行的结果送到储存阶段618。在一较佳实施例中,微指令包含指示是否能同时执行其他的运算的栏位。

如上所述快取XCRYPT指令,转译逻辑602产生相关微指令,命令微处理器600的后续阶段605~608、618、619内的逻辑,执行密码编译运算。相关微指令的特定概念部分藉由控制字元323内的演算栏位数值决定,将于下述中详细说明。举例来说,若演算栏位的数值指出使用AES演算,然后演算逻辑640将建构微指令的相关序列来下令微处理器600,执行依据AES演算的密码编译运算。若演算栏位的数值指出使用DES演算,然后演算逻辑640将建构微指令的相关序列来下令微处理器600,执行依据DES演算的密码编译运算。依据其他密码编译演算,演算逻辑640用大致相同的模式来执行密码编译运算的微指令序列。

因此,将第一相关复数个微指令直接送到密码编译单位617,并下令单位617将载入总线620所提供的数据载入。也有可能将输入数据的片段载入,并开始进行指定数量的密码编译回合,以产生输出数据片段。亦有可能储存逻辑618通过储存总线将输出数据的已知片段送到内存中。将第二复数个相关微指令发送到其他施行单位610、612、614、616,以执行其他子运算。而子运算需完成密码编译运算,如测试E位元、执行D位元631、将X位元625设定成指示密码编译正在执行、更新暂存器阶段605内的暂存器(如计数暂存器、输入文字指示暂存器、输出文字指示暂存器)、处理由中断逻辑626所指示的中断627等。为了实现最有效率的密码编译相关指令,微指令的顺序会被特别排列成将整数单位微指令穿插于密码编译微指令中,已达到整数运算与密码编译同时执行。微指令包含从暂停中断中恢复所需的相关微指令。因为提供所有由密码编译参数和数据的指示器于x86结构暂存器中,当收到中断时会储存这些状态,之后再恢复中断前的状态。当中断中回复时,微指令测试X位元625的状态,以决定是否有密码编译运算正在执行。若是有的话,当中断发生时,运算会重复执行于正在进行的输入数据的特殊片段。微指令的排列顺序会允许在处理中断627前,将指示暂存器和正在进行密码编译的结果先更新到暂存器内,而后再进行中断。

现请参阅图7所示,其是为一个微指令结构的范例。此微指令700是用来指示如图6所见的微处理器执行密码编译运算的指令。微指令700包含一微运算码栏位701、一数据暂存器栏位702、和一暂存器栏位703。微运算码栏位701指定执行特定的子运算,并指示微处理器600的一个或多个阶段内的逻辑来执行子运算。依据本发明,微运算码栏位701的指定值是用密码编译单位下令执行微指令。在一较佳的实施例中,有一对或多对微运算码栏位701的指定值。用第一对数值命令依据AES演算的密码编译子运算,而用第二对数值命令依据DES演算的密码编译子运算等。每一对中的第一数值(XLOAD)指示从内存位置所接收的数据,由数据暂存器栏位702的结构暂存器的内容指向内存的位址。将数据载入至密码编译单位内的暂存器,密码编译单位是由暂存器栏位703的内容指定。接收的数据(如密码编译金钥数据、控制字元、输入文字数据、初始化向量)用于密码编译单位。每一对微运算码栏位数值中的第二数值(XSTOR)指示将密码编译单位所产生的数据储存于内存位置,由数据暂存器栏位702的结构暂存器的内容指向内存的位址。在密码编译的多阶段实施例中,暂存器栏位703的内容规定存入内存内其中之一复数个输出数据区块。输出数据的片段被放在数据栏位704,供给储存逻辑读取。接下来,请参阅图8和图9所示,将更进一步探讨XLOAD与XSTOR微指令在密码编译单位的执行流程。

现请参阅图8,其依据图7的编排700绘示用于XLOAD微指令的暂存器栏位703数值。如先前所述,一连串的微指令会发生在转译XCRPYT指令。此微指令包含第一复数个微指令由密码编译单位执行,和第二复数个微指令则由一个或多个其他单位平行执行。第二复数个微指令下令执行子运算,例如更新计数器、临时的暂存器、于特定机器暂存器中测试和设定位元状态等。而第一复数个指令则提供金钥数据、密码编译参数、和密码编译单位的输入数据,并下令密码编译单位产生金钥程序表(或载入由内存接收的金钥程序表),以载入和开启(或关闭)输入文字数据,并储存输出文字数据。一个XLOAD微指令用于载入控制字元数据的密码编译单位、载入密码编译金钥或金钥程序表、载入初始化向量数据、载入输出文字数据。载入输出文字数据,并下令密码编译单位来开启密码编译运作。XLOAD微指令的暂存器栏位703内的数值0b010下令密码编译单位,以载入控制字元到内部控制字元暂存器。随着微指令在管线内进行,将结构性控制字元指示暂存器存取在暂存器阶段内,以获得控制字元所存取的内存中的位址。位址逻辑将位址转译成内存存取的物性位址。载入逻辑从快取内存中提出控制字元,放置控制字元到数据栏位704,然后密码编译单位会放入数据栏位704。相同的,暂存器栏位数值0b100下令密码编译单位载入数据栏位704中的输入文字数据。等到载入之后,开启密码编译运作。如同控制字元,输入数据是通过结构暂存器内的指示器来存取。数值0b101下令数据栏位704内的输入数据载入成内部暂存器1 IN-1。载入到暂存器1 IN-1的数据可为输入文字数据(管线化时),或为初始化向量。数值0b110和0b111各别下令密码编译单位,载入使用者产生的金钥程序表中的密码编译金钥或其中之一金钥的上、下位元。依据本发明得知,使用者是定义为执行特定功能或特定运作。而使用者可包含一应用程序、一操作系统、一机器或一个人。因此,在一较佳实施例中一应用程序能制成一使用者产生的金钥程序表。在另一较佳实施例中,可由一个人制成使用者产生的金钥程序表。

在一较佳实施例中,暂存器栏位数值0b100和0b101可视为具有两个阶段的密码编译单位,而连续输入文字数据的片段可被管线化。因此,为了管线化连续输入文字数据的两个片段,第一XLOAD微指令将第一段输入文字数据放入IN-1,第二XLOAD微指令将第二段输入文字数据放入IN-0。第二XLOAD微指令也会启动密码编译单位执行密码编译运算。

如果执行密码编译运算是用使用者产生的金钥程序表,而后XLOAD微指令的数量会与使用者产生的金钥程序表内的金钥数量相对应。使用者产生的金钥程序表会发送到密码编译单位,而密码编译单位会下令单位,从金钥程序表内载入每一回合所使用的金钥。

XLOAD微指令内暂存器栏位703的其他值为保留值。

请参阅图9所示,是依据图7XLOAD微指令内暂存器栏位703的数值的对照表900。将XLOAD微指令发送到密码编译单位,下令提供加密或解密输出文字片段,存到位置栏位702所指示内存内的位址。因此,依据本发明,转译逻辑先发送一特殊输出文字片段的XLOAD微指令,之后在发送对应的输入文字片段的XLOAD微指令。暂存器栏位703的数值0B100下令密码编译单位,以将输出0暂存器OUT-0的输出文字片段送到储存逻辑。输入文字片段的OUT-0内容会送到IN-0。相同地,由暂存器栏位数值0b101指向,输入文字片段的内部输出1暂存器的内容,会送到IN-1。因此,载入金钥和控制字元数据之后,发送密码编译微指令,复数个输入文字片段经由密码编译单位被管线化到顺序为XLOAD.IN-1、XLOAD.IN-0(XLOAD.IN-0下令密码编译以启动密码编译运算)、XSTOR.OUT-1、XSTOR.OUT-0、XLOAD.IN-1、XLOAD.IN-0(启动下两个输入文字片段的运作)等等。

现请参阅图10所示,其是控制字元格式1000的例子。使用者将控制字元程序化到内存中。在执行密码编译运算之前,会提供指示器到符合微处理器内的结构暂存器。因此,XCRYPT指令对应的部分微指令中,一XLOAD微指令下令微处理器,以读取含有指示器的结构暂存器,或是将指示器转换到物性内存位址,或是由内存(快取记忆数据)接收控制字元1000、或是将控制字元1000载入到密码编译单位的内部控制字元暂存器。控制字元1000包含一反向RSVD栏位1001、金钥大小KSIDE栏位1002、加密/解密E/D栏位1003、一中间结果IRSLT栏位1004、一金钥产生KGEN栏位1005、一演算ALG栏位1006、和一回合计数RCNT栏位1007。

反向栏位1001的所有值会被保留。金钥大小栏位1002的内容规定执行密码编译的大小以完成加密或解密。在一较佳实施例中,金钥大小栏位1002可为任一128位元、192位元、256位元。加密/解密栏位1003指定密码编译运算是否为加密运算或解密运算。金钥产生栏位1005指定是否提供于内存中的是使用者产生的金钥程序表或单一密码运算金钥。若为单一密码运算金钥,微指令会发送到密码编译金钥的密码编译单位,再依据演算栏位1006内容所指定的密码编译演算,下令单位扩展金钥到金钥程序表。在一较佳实施例中,演算栏位1006的指定值指定之前所讨论的DES演算法、三元DES演算法、或AES演算法。其他实施例则应用不同的密码编译演算法,如Rijndael Ciper、Twofish Ciper等等。回合计数栏位1007的内容规定,依据指定的演算法,完成密码编译回合的数量于每一个输入文字输入文字的片段片段。虽然以上所述的密码编译演算法的规范指定,对不同的输入文字片段进行固定次数回合的密码编译,回合计数栏位1007规定可从指定的标准改变回合的数量。最后,中间结果栏位1004的内容指定,依据演算栏位1006所指定的密码编译演算标准,或回合计数栏位1007所指定的数量回合,是否执行输入文字片段的加密/解密。而在回合计数栏位1007内所执行的最后回合代表一中间结果,而不是演算栏位所指定演算法的最后结果。熟知此记忆者通晓,除了最后一回合不同之外,许多密码编译的演算法在每一回合重复执行相同的子运算。因此,程序化一中间结果栏位1004提供一中间结果而非一最后结果,会让一程序师确认执行演算法的中间步骤。举例来说,获得演算法的额外中间结果,可对文字片段进行第一回合加密,然后再对相同的文字片段进行第二回合加密,而后进行第三回合加密等。提供可程序化回合中间结果的能力能让使用者确认密码编译能力,和研究各种金钥结构及回合计数器的实用性。

现请参阅图11所示,其是密码编译单位1100实施例的方框图。密码编译单位1100包含一微运算码暂存器1103,此微运算码暂存器1103经由微指令总线1114接收密码编译微指令(如XLOAD和XSTOR微指令)。密码编译单位1100也具有控制字元暂存器1104、输入0暂存器1105、输入1暂存器1106、金钥0暂存器1107和金钥1暂存器1108。随着微指令暂存器1103的XLOAD微指令的内容规定,数据会经由一载入总线1111送到暂存器1104~1108。密码编译单位1100又包含区块加密逻辑1101,其与所有暂存器1103~1108连接,亦与密码编译金钥RAM1102连接。在一较佳实施例中,区块加密逻辑1101包含AES演算逻辑1115、DES演算逻辑1116、和三元DES演算逻辑1117。在其他较佳实施例中,区块加密逻辑1101说明额外逻辑元件(未图示)的规定,依据一个或多个上述讨论控制字元1000内演算栏位1006数值的密码编译演算法,执行密码编译运算。举例来说,区块加密逻辑1101提供AES演算逻辑1115,依据AES演算逻辑1115来执行密码编译运算。任何可替代的实施例包含逻辑、电路、装置、微指令码(如微指令或原生指令)或是一个逻辑、电路、装置、微指令码、依据对应的密码编译演算来执行密码编译运算的相同功效元件的结合。依据对应的密码编译演算执行密码编译运作可与其他电路、微指令码等共用。而依据区块加密逻辑1101内其他对应的密码编译演算,其他电路、微指令码等执行其他密码编译运算。

区块加密逻辑1101又提供一中断信号(stall signal)1113,并提供区块结果到输出0暂存器1109和输出1暂存器1110。输出暂存器1109~1110将结果通过储存总线223发送到微处理器中的连续阶段。在一较佳实施例中,微指令暂存器1103的大小为32位元,剩下的每一个暂存器1104~1110的大小则为128位元。

在运算中,将密码编译微指令连续送到微指令暂存器1103,控制字元暂存器1104、或其中的一输入暂存器1105~1106、或其中的一金钥暂存器1107~1108的指定数据亦会送到微指令暂存器1103中。一配合第八图和第九图所讨论的较佳实施例中,经由XLOAD微指令将控制字元载入到控制字元暂存器1104。之后密码编译金钥或金钥程序表会经由连续的XLOAD微指令被载入。若载入128位元密码编译金钥,之后会将XLOAD微指令送到指定暂存器KEY-0 1107。若载入高于128位元密码编译金钥,之后会将XLOAD微指令送到指定暂存器KEY-0 1107和KEY-1 1108。若载入使用者产生的金钥程序表,之后会将连续的XLOAD微指令送到指定暂存器KEY-0 1107。金钥程序表所载入的每一个金钥会依序安排到金钥RAM 1102,以供给对应的密码编译回合中使用。接下来,将输入文字数据(若不需要初始化向量)送到IN-1暂存器1106。若需要初始化向量时,之后会经由XLOAD微指令将初始化向量送到IN-1暂存器1106。IN-0暂存器1105的XLOAD微指令下令密码编译,将输入文字数据载入到IN-0暂存器1105,再启动暂存器IN-01105内执行输入文字数据的密码编译回合。依据经由控制字元暂存器1104的内容所提供的参数,暂存器IN-0 1105使用初始化向量于IN-1或输入暂存器1105~1106(若输入值被管线化)。当接收指定暂存器IN-0 1105的微指令,密码编译运算由控制字元的内容来规定。若需要展开单一密码编译金钥,区块加密逻辑1101在金钥程序表中产生每一个金钥,之后再将金钥储存于密码编译金钥RAM 1102。无论区块加密逻辑1101产生金钥程序表或由内存载入金钥程序表,第一回合的金钥被快取记忆数据到区块加密逻辑1101,以致于不需存取密码编译金钥RAM 1102就能进行第一区块密码编译回合。一旦启动,区块加密逻辑会于一个或多个输入文字的片段持续执行密码编译运算,直到完成运算。当需要执行密码编译演算,由密码编译金钥RAM 1102连续地快取回合金钥。密码编译单位1100在输入文字的特定片段执行一特定区块密码编译运算。执行连续对应的XLOAD和XSTOR微指令,将输入文字的连续片段加密或解密。执行XSTOR微指令时,若尚未产生输出数据(如OUT-0或OUT-1),之后区块加密逻辑会执行中断信号(stallsignal)1113。一旦输出值已产生并放置在对应的输出暂存器1109~1110中,之后将暂存器1109~1110的内容转移到储存总线1112。将微指令700的特定数值微运算码栏位提供到微指令暂存器1103,已决定哪一个特定的演算逻辑1115~1117可执行密码运算。

现请参阅图12所示,是一个用高阶AES演算法执行密码编译运算的区块加密逻辑1200的方框图。区块加密逻辑1200方框图包含一个回合计算引擎(round engine)1220,此回合计算引擎会经由总线1211~1214和总线1216~1218与回合计算引擎控制器1210连接。回合计算引擎控制器1210可存取控制字元暂存器1202、金钥0暂存器1203、金钥1暂存器1204来读取金钥数据、微指令、密码编译运算的参数。输入暂存器1205~1206的内容会送到回合计算引擎1220,之后再由回合计算引擎1220将对应的输出文字送到输出暂存器1207~1208。而输出暂存器1207~1208又经由总线1216~1217与回合计算引擎控制器1210连接,让回合计算引擎控制器1210能读取每一个密码编译回合的结果,再经由总线NEXTIN 1218送到回合计算引擎1220来进行下一个密码编译回合。密码编译金钥通过总线1215从金钥RAM(未图示)提出。单一ENC/DEC 1211下令回合计算引擎,以执行加密(如S-Box)或解密(如反向S-Box)的子运算。总线RNDCON 1212的内容下令回合计算引擎1220,以执行第一回合的AES演算、中间回合的AES演算、或最后回合的AES演算。单一GENKEY 1214下令回合计算引擎1220,依据经由总线1213所提供的金钥来产生金钥程序表。

当进行对应的回合时,金钥总线1213会将每一个回合金钥送到回合计算引擎1220。

回合计算引擎1220包含第一金钥XOR逻辑1221,此第一金钥XOR逻辑1221会与第一暂存器REG-0 1222连接。第一暂存器1222会连接到S-Box逻辑1223,此S-Box逻辑又与移列逻辑(shift row logic)1224连接,而移列逻辑(shift row logic)1224又与第二暂存器REG-1 1225连接。第二暂存器REG-1 1225连接到混栏逻辑(Mix Column logic)1226,混栏逻辑(Mix Column logic)1226又与第三暂存器REG-2 1227连接。如上述所讨论的AES FIPS标准,第一金钥XOR逻辑1221、S-Box逻辑1223、移列逻辑(shift row logic)1224、混栏逻辑(Mix Column logic)1226在输入文字数据上进行名称相似的子运算。如需进行经由金钥总线1213所提供的回合金钥的中间回合,混栏逻辑1226进行输入数据上AES XOR功能。第一金钥XOR逻辑1221、S-Box逻辑1223、移列逻辑(shift row logic)1224、混栏逻辑(Mix Column logic)1226在进行经由ENC/DEC 1211状态所指向的解密动作时,亦能执行对应的反向AES子运算。熟知此技艺者可了解进行中间回合时,依据控制字元暂存器1202所指示的特殊区块解密模式,将数据反馈到回合计算引擎1220。初始化向量的数据(若需要)亦会通过NEXTIN总线1218送到回合计算引擎1220。

图12所示为一较佳实施例。回合计算引擎1220可分成两个阶段:REG-01222和REG-1 1225间的第一阶段以及REG-1 1225和REG-2 1227间的第二阶段。配合同步时脉(未图示),于阶段间管线化中间回合的数据。当完成密码编译运算于一块输入数据时,相关的输出数据会放至于对应的输出暂存器1207~1208。执行XSTOR微指令会使指定输出暂存器1207~1208将内容送到储存总线(未图示)。

现请参阅图13所示,其是中断事件发生时保留密码编译参数状态的方法流程图。当微处理器开始执行指令,方块1302开始进行这个流程。但不需要含有XCRYPT指令的指令流程,因此接下来必须进行方块1304的决定。

在决定方块1304时,必须评估一下中断事件的发生(如屏蔽中断(maskable interrupt)、非屏蔽中断(non-maskable interrupt)、页数错误(page fault)、作业转换(task switch)等等)是不是需要改变指令流程到中断处理器,以进行中断事件。如果是的话,接着会进行方块1306的流程。如果不是的话,接着流程会回到方块1304的决定,而指令会持续执行直到中断事件发生。

在方块1306,因为中断事件已经发生,在程序控制转移到对应的中断处理器前,中断逻辑会下令清除标志(标志即为旗标,以下皆称为标志)暂存器内的X位元。回到中断处理器,清除X位元若发生在进行区块密码编译运算时,会有一个或更多中断事件发生。且在一段输入数据持续进行区块密码编译运算前,控制字元数据和金钥数据必须重新载入。接下来进行方块1308。

在方块1308,所有架构暂存器具有指示器和计数器,执行区块密码编译运算,会储存于内存中。熟悉此技艺者了解,控制转移到中断处理器前,储存架构暂存器一般会完成于目前数据中。接着,本发明开发目前数据的架构以用于执行中断事件。在储存暂存器之后,接着进行方块1310。

在方块1310,转移程序流程到中断处理器。接着进行方块1312。

在方块1312,方法完成。熟悉此技艺者了解,回到中断处理器时图13的方法才会重回到方块1302。

现请参阅图14所示,其是发生一个或多个中断事件时执行密码编译运算的方法流程图。更明确地说,依据电子书区块加密模式(electroniccodebook block cipher mode)所讨论的流程,其用来执行特定密码编译运算。亦能使用其他区块加密模式(如输出反馈模式、加密反馈模式)。此外,更确切地说,虽然本发明讨论图10的一个或多个密码编译演算法的流程,不过还是在此说明AES、DES和三元DES演算法的流程。

方块1402开始进行这个流程,XCRPYT指令下令密码编译运算,让电子书区块加密模式开始执行。XCRPYT指令可为第一个执行指令,或执行于第一个执行指令之后。由于中断事件所作的中断功能,以至于在中断处理器执行之后,转移程序控制回到XCRPYT指令。接下来进行方块1404。

在方块1404,指向内存中的片段数据到由内存所载入的输入指示暂存器的内容,且开始执行密码编译运算。在一较佳实施例中,依据AES演算法开始执行密码编译运算。虽然之前有讨论电子书区块加密模式,本发明者声明由哪一种特殊密码编译运算(如加密或解密)以及哪一种区块加密模式(如ECB、CBC、CFB或OFB)来执行特定输入指示暂存器。例如,若使用OFB模式指定加密运算,接下来执行输入指示暂存器和初始化向量暂存器,以载入数据。对于OFB加密模式运算,输入指示暂存器指向下一个明文方块来进行加密动作。对于OFB加密和解密模式运算,初始化向量暂存器指向内存中初始化向量位置。在第一个方块中,内存中初始化向量位置的内容为初始化向量。在接下来的方块中,初始化向量位置为符合前一个方块的输出加密区块,可用来作为目前方块的初始化向量相等物(equivalent)。若使用ECB模式指定解密运算,接下来负责执行载入数据的输入指示暂存器可指向内存中下一个密文方块。接下来进行方块1406。

在决定方块1406时,必须评估一下是否设定标志暂存器内的X位元。若已设定X位元,控制字元和金钥程序表载入至密码编译单位内为有效的。若清除X位元,控制字元和金钥程序表载入至密码编译单位内为无效的。如先前所提及的图13,中断事件发生时,会清除X位元。此外,如先前所提及,当需要载入一个新的控制字元或金钥程序表、或将两者同时载入时,在发送指令之前需执行指令来清除X位元。在一与x86相容的较佳实施例中,执行x86标志暂存器内的第30个位元。藉由执行POPFD指令之后的PUSHFD指令可将X位元清除。一熟知此技艺者了解,亦可用其他实施例中的其他指令来清除X位元。若已设定X位元,流程将进行至方块1420。若清除X位元,流程将进行至方块1408。

在方块1408,因为由已清除的X位元可知中断事件已经发生,或将一个新的控制字元和/或金钥数据载入,而从内存载入控制字元。在一较佳实施例中,载入控制字元会将从方块1404密码编译运算所执行的密码编译单位停止。在方块1404内启动密码编译运算,藉由假定执行目前所载入的控制字元和金钥数据,和ECB模式为最佳的区块加密模式,允许用最佳化的多区块密码编译运算来执行ECB模式。因此,将目前的输入数据方块载入,并在确认X位元的状态决定是否重设区块1406之前,开启密码编译运算。接下来进行方块1410的决定。

在决定方块1410,评估方块1408所接收的控制字元的演算栏位,来决定需用哪一个密码编译演算法来执行密码编译运算。若演算栏位指定AES演算法,之后会进行方块1414。若演算栏位指定三元DES演算法,之后会进行方块1416。

在方块1412,选择电脑装置中的区块加密逻辑内的AES演算法。接下来进行方块1418。

在方块1414,选择电脑装置中的区块加密逻辑内的DES演算法。接下来进行方块1418。

在方块1416,选择电脑装置中的区块加密逻辑内的三元DES演算法。接下来进行方块1418。

在方块1418,金钥数据(如密码编译金钥或全部金钥程序表)从内存载入。此外,将方块1404所指出的输入片段和初始化向量(或初始化向量的同等物)再次载入。依据新载入的控制字元、已选择的演算逻辑和金钥程序表来启动密码编译运算。接下来进行方块1420。

在方块1420,产生符合已载入的输入区块的输出区块。进行加密时,输入区块为明文区块,而输出区块为对应的密文区块。进行解密时,输入区块为密文区块,而输出区块为对应的明文区块。接下来进行方块1422。

在方块1422,储存已产生的输出区块到内存中,接下来进行方块1424。在方块1424,修改输入区块指示暂存器和输出区块指示暂存器的内容,以指向下一个输入和输出数据区块。此外,修改输入计数暂存器的内容,以于目前输入数据区块上指示密码编译运算的完成。在图14所讨论的较佳实施例中,熟知此技艺者了解,亦可用其他实施例来运作,并测试区块计数暂存器的内容来将输入文字区块作管线化的执行。接下来进行方块1426。

在方块1426,评估输入数据区块是否运作。在此较佳实施例中,评估区块计数器是否为零。若输入数据区块运作,接着会进行方块1428。

在方块1428,如输入指示暂存器内容所指向,将下一个输入数据方块载入。

在方块1430,此方法完成。

虽然本发明的较佳实施例已揭露如上,例如本发明目前所实施例皆以x86架构作为基准,因为x86架构为一个众人所皆知的架构,特以x86架构说明较为方便。本发明亦可应用于其他架构上,如PowerPC、MIPS和其他指令集架构完全不同的系统上。

本发明更可应用于执行微处理器以外的电脑系统元件内密码编译运算。本发明所使用的密码编译指令能轻易地执行其他微处理器以外的电脑系统元件内密码编译运算。本发明的一些较佳实施例为微处理器的周边晶片组(如北桥、南桥)或执行密码编译运算的微处理器。而将密码编译指令从主机微处理器(host microprocessor)hand off到处理器。本发明亦可应用到执行嵌入式控制器、工业用控制器、信号处理器、阵列处理器以及任何相似的元件来处理数据。本发明亦包含可执行上述密码编译运算功能的元件。执行码编译运算功能的元件应为成本低、耗电量少以作为通讯系统内的加密/解密的处理器。

此外,虽然本发明所探讨的是128位元片段,改变暂存器的大小可执行各种不同大小片段,而暂存器可执行输入数据、输出数据、控制字元。

因此,虽然DES、三元DES和AES已应用于本发明,本发明者声明上述发明有较不为人知的区块密码编译演算,例如MARS cupher、Rijndaelcipher、Twofish cipher、Blowfish Cipher、Serpent Cipher和RC6 cipher。本发明提供指定的区块密码编译装置和微处理器内支撑方法,其区块密码编译运算能经由单一指令来执行。

虽然目前讨论范围都以区块密码编译运算法及其他运算法的相关技术来表现本发明的密码编译功能。在此需声明本发明可完全应用于其他密码编译运算法,只要能执行一密码编译运算如加密或解密。且微处理器包含一收到密码编译指令后进行密码编译功能。

另外,针对上述所讨论的回合计算引擎,提供两阶段装置来管线化两片段的输入数据。发明者声明该回合计算引擎中管线化输入数据不限于两阶段,决定多少阶段要视微处理器内所分割的阶段而定。

最后,虽然目前针对本发明的讨论仅限于单一密码编译单位处理复数个区块密码编译演算法。在此需声明本发明包含多个平行密码编译单位,与一微处理器中其他执行单位连接。其中复数个密码编译单位可分别处理不同区块演算法,例如第一单位负责处理高阶加密标准AES演算法,第二位负责处理数据加密标准DES演算法等等以此类推。

以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的方法及技术内容作出些许的更动或修饰为等同变化的等效实施例,但是凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号