CN1332526C - 微处理器区块密码编译方法与装置 - Google Patents

微处理器区块密码编译方法与装置 Download PDF

Info

Publication number
CN1332526C
CN1332526C CNB2004100351856A CN200410035185A CN1332526C CN 1332526 C CN1332526 C CN 1332526C CN B2004100351856 A CNB2004100351856 A CN B2004100351856A CN 200410035185 A CN200410035185 A CN 200410035185A CN 1332526 C CN1332526 C CN 1332526C
Authority
CN
China
Prior art keywords
cryptographic
register
computing
instruction
fragments
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.)
Expired - Lifetime
Application number
CNB2004100351856A
Other languages
English (en)
Other versions
CN1538656A (zh
Inventor
汤玛斯·A·克利斯宾
G·葛兰·亨利
泰瑞·派克斯
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.)
INTELLIGENCE FIRST CO
Original Assignee
INTELLIGENCE FIRST CO
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/674,057 external-priority patent/US7321910B2/en
Application filed by INTELLIGENCE FIRST CO filed Critical INTELLIGENCE FIRST CO
Publication of CN1538656A publication Critical patent/CN1538656A/zh
Application granted granted Critical
Publication of CN1332526C publication Critical patent/CN1332526C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • 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/3017Runtime instruction translation, e.g. macros

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

微处理器区块密码编译方法与装置
技术领域
本发明涉及微电子领域,特别是关于一种应用于微处理器中加密的装置和方式。
背景技术
早期计算机系统间的作业都是独立作业的,因为运行一个运用程序所需要的输入数据是内建于早期的计算机系统内或是由软件工程师在程序运行时输入。应用程序执行后产生的输出数据则通常是以白纸黑字的打印方式呈现,或者是以一个文件的型式被写入磁带,磁盘或是其它属于计算机系统一部份的储存装置中。这个输出的文件可以接着被下一个在同一个计算机系统中执行的应用程序当作输入文件使用或者如果这个文件是被存入一个可以被移动式的储存接口,它就能被其它不同但兼容的计算机系统中的应用软件使用。这些早期的系统对保护敏感的数据已有认知。其中一种数据保密措施,即密码编译应用软件也被开发出来保护敏感的数据以免未经许可的被公开。这些密码编译软件通常对储存接口上的文件做加密或解密的动作。
多年后,使用者们才发现将网络联机多台计算机来分享数据的这个优势。所以,网络结构、操作系统、数据传送的规约也相对的发展。至今,除了能支持数据分享之外,它们所提供的附加功能也很重要。例如说,现在的使用者使用一个计算机工作台去取得另一个工作台上或另一个网络服务器上的文件,通过因特网取得新闻和其它数据,与其它数百台不同的计算机传送电子邮件,连接供货商的计算机系统提供信用卡或是银行数据来购买物品,在餐厅、机场和其它公共场所通过无线网络来做上述的动作,已经习以为常了。所以保护敏感数据的传输也变得非常的重要。使用者通过计算机所传出去的数据需要保护的频率也日已遽增。新闻头条经常揭发给社会大众滥发邮件、黑客、身分盗用、反向工程、IP位置欺伪和信用卡诈欺等计算机数据的安全问题。这些侵害隐私的动作的背后动机有时是纯属意外的无心之过,有时则是深思熟虑的网络恐怖攻击行为。相关单位以制定新法律,严格执行规范和教育大众等行动来响应。但是至今这些行动都还是无法成功杜绝侵害计算机数据的浪潮。从前只让政府、金融机构、军方和情报单位忧心的问题已经变成每一位在家检查电子邮件,使用网络银行服务的老百姓最担心的问题之一了。
信息安全这个领域中的一项将数据加密并只提供特定人士译码方式的保护技巧就是密码编译学。在保护计算机对计算机之间数据的传输上,密码编译通常是采用将敏感数据(又称为明文,plaintest,cleartext)转成无法辨识的型式(又称为密文,ciphertext)。将明文转换成密文的程序被称为“加密”(encryption)而将密文转回明文的程序则被称为“解密”(decryption)。
在密码编译这个领域中,几项方式和规约被开发出以便使用者不需要有太多密码编译知识或是花太多力量便能将数据以加密过的型式送出给不同的使用者。除了加密的数据之外,使用者通常会提供收件者一个用来解密的“密码金钥”。密码金钥让接收者能复原加密数据或者有时候是提供收件者取得未加密数据的通路。以上所述的步骤,通常是通过密码保护、数学算法和加密解密的应用程序等方法为敏感数据加密和解密。
目前有很多种类型的算法被应用于数据的加、解密上。这些类型中的特别一个算法(公开金钥加密算法,RSA“Rivest-Shamir-Adelman”算法类之一)用了两个金钥(cryptographic key)。一个公开金钥(Public Key)和一个私密金钥(private key)用来加密或解密。根据一些公开金钥算法,接收者的公开金钥是由寄出者用来将数据加密以便送给接收者的。因为使用者的公开和私密金钥间有某种特定的数学关系,接收者一定要用私密金钥来解开收到的数据,还原原本的数据。虽然此类的加密算法受到广泛的使用,但是它处理加密和解密的速度十分的慢。就连处理小量的数据都是十分的慢。还有一类算法,称作对称加密算法,不但比第一类算法等级的数据保密,而且执行的速度要快上许多。这类算法会叫作对称加密算法的原因就是它是用同一组加密编译钥来加密和解密。目前国家机关内使用的主要三种单一金钥加密算法(single-key cryptographic algorithms)为:数据加密标准(Data EncryptionStandard,DES)、三度数据加密标准(Triple Data Encryption Standard,TripleDES)和高阶加密标准(Advanced Encryption standard,AES)。因为这些算法的保护强度,现在美国政府的相关单位都采用这三种算法来保密数据。相信不久的将来,这其中一项或一项以上也会成为商业和私人交易中使用的标准。根据这些对称加密算法,明文和密文都被裁成一定大小的片段,再进行加密和解密。例如说高阶加密标准(AES)对128bits大的片段进行加密,并使用128-,192-和256-bits大小的加密编译钥。
所有的对称金钥加密算法(symmetric key algorithms)将明文加密的子运算(sub-operation)步骤都是相同的。根据那些比较常用的对称加密算法,一个初始的密码编译钥会被扩张至多个金钥(也就是金钥程序表,keyschedule),每个金钥都会被用在密码编译时将一段明文加密程序中子运算中的其中一回合(round)。第一回合运算完的结果变成是第二回合的输入数据(input text)。第二回合运算就使用金钥程序表中第二个金钥做运算,然后产生第二个结果。明文在经过特定的几回合后就成为密文。在高阶加密标准(AES)运算法中,每一回合中的子运算中的运算在相关文献数据中可被称为子位(SubByte,或S-box)、移列(ShiftRows)、混栏(MixColums)和回合金钥(round key)加入(AddRoundKey)。一段密文译码的步骤事实上和加密是很相似的,就是把加密文当作输入值,并且在每一回合进行反向译码和反向运算,最后一回合的输出值就是明文。
数据加密标准(DES)和三度数据加密标准(Triple-DES)应用的子运算在小细节上不太相同但是它们与AES运算法基本上十分类似,因为它们用相似方式将明文片段转为一段段的密文。
所有对称加密算法将多个连续片段数据加密的模式都是一样的。这些包括了编辑方块连锁(cipher block chaining mode,CBC),电子书码(electroniccode book,ECB),编码反馈(cipher feedback mode,CFB)和输出反馈(outputfeedback mode,OFB)。其中有些模式需要一个另外的初始化向量(initialization vector)才能进行子运算,有些则是会将第一组加密编译后的密文加入第二组明文加密的运算中。若深入探讨每一个密码编译算法和目前对称加密算法中每个子运算步骤则就已超出本发明应用的范围了。关于数据加密标准DES和三度数据加密标准Triple DES详细的实施规范探讨,读者们可以参考1999年10月25日的“美国联邦信息处理标准46-3(FIPS-46-3)”(“Federal Information Processing Standards Publication 46-3(FIPS-46-3)”),2001年11月26日的“美国联邦信息处理标准197(FIPS-197)”(“Federal Information Processing Standards Publication 197(FIPS-197)”),其中有AES详细的探讨。上述的刊物都是由美国标准与技术研究院(“National Institute of Standards and Technology”)(NIST)所发行编译的。除了这些刊物外,NIST的计算机保密资源清算中心(“Computer SecurityResource Center”)(CSRC)网站http://csrc.nist.gov/内也提供单元教学、白皮书、工具包和相关文章等。
熟知这方面技术的读者应该都了解计算机系统上有很多软件都能用来执行密码编译的动作(也就是加密和解密)。事实上,有些操作系统(例如微软窗口XP,Linux)通过密码编译基元(cryptographic primitives)、密码编译应用软件接口(cryptographic application program interface)和其它类似接口提供直接加密/解密服务。目前发明人发现现今计算机编译密码技巧上在许多方面都有缺陷。请读者参看图1,图中标示出了这些缺失,以下将探讨这些问题。
图1为现今计算机密码编译应用的方框图。图100显示第一台计算机101连接到局域网络105。另外接到网络105的还有第二台计算机、网络文件储存装置、第一个路由器107或是其它连接至广域网络110(wide areanetwork,WAN),比如说网络的接口,和一个无线路由器108,例如符合IEEE802.11规范的无线路由器。在广域网络110(wide area network)另一端接的是第二个路由器111,用来提供第三台计算机103的接口。
如前文所述,现今使用者在使用计算机时需要保密计算机数据的时候越来越频繁。例如说,在操作系统控制之下,计算机101的使用者可能同时进行多样工作,而每样工作都需要密码编译作业。计算机101的使用者需要执行加密/解密(通过操作系统服务或者是操作系统行使的)将一个文件存入网络储存装置106。在储存文件的同时,使用者也可能将加密过的信息传给第二台计算机102的使用者,这个动作也需要应用程序112执行加密和解密的工作。加密传出的信息有可能是实时的(例如实时信息)或不是实时的(例如电子邮件)。另外,使用者可能是在计算机103上通过广域网络110在存取个人的金融数据(例如信用卡卡号、金融交易等)或是其它重要数据。计算机103也可代表一个家庭办公室或是远程计算机103,其中计算机101的使用者不在办公室内,而是使用网络来存取局域网络105上101、102、106、107、108和109内部的数据。以上所述的行为都需要呼叫应用程序112来执行相关加密和解密的动作。此外,无线网络109已被广泛的布局在咖啡厅、机场、学校等公共场所,所以笔记本计算机104的使用者除了必须将接收或传送给别的使用者的数据加密或解密外,所有通过无线网络109传给无线路由器108的数据也都要加以加密/解密。
熟知此技术领域的人士可以了解当计算机101-104需要进行密码编译的动作时,应用程序112会被呼叫,然后进行加密或解密的动作。所以未来计算机101-104有可能必须同时进行上百个密码编译运算。
发明者发现计算机系统101-104同时呼叫一个或一个以上加密或解密应用程序112的做法有下列缺点。例如说,若可以使用一个专门的硬件来处理这些功能,硬件处理的速度会比用软件快。每次应用程序112需要进行加密解密时,计算机101-104正在执行的工作就必须先暂停来传送密码编译动作所需的参数(明文、密文、模式、金钥)给计算机操作系统,然后计算机操作系统在将这些数据传给应用程序112来完成密码编译动作。由于应用程序112在编译一段数据时需要执行许多回合的子运算,因此,计算机要执行的指令数目繁多且让整个操作系统处理的速度显著下降。熟悉此技术领域的人员能了解为什么在微软Outlook环境中发出一封加密电子邮件后所需的传输时间会是未加密邮件的五倍之多。
介入计算机操作系统会延误时间,这也会影响现在使用的这项技术。目前应用软件内大多没有完整的金钥产生或加密/解密功能,所以都是靠操作系统或是插件软件(plug-in software)来完成这些作业。而要获得操作系统资源,要向操作系统发出中断指令(interrupt)或是由正在执行的应用软件对操作系统提出要求。
发明者还发现计算机系统101-104密码编译作业方式与较早期微处理器内处理浮点运算单元还没成立专门处理单元前是很像的。早期的浮点运算是由软件处理,所以执行速度很慢。密码编译通过软件处理的速度也很慢。随着浮点运算的技术进步,浮点运算指令被整合入中央处理器的辅助处理器。虽然加入浮点数辅助处理器使得整个系统的价格升高,但是处理浮点数的速度比软件快上许多。现在也有密码编译的中央处理器辅助处理硬件,大多是通过平行端口或其它总线接口(如通用串行总线)的插卡式或是外挂式装置。此类的中央处理器的辅助处理器可缩短计算机系统密码编译的工作处理时间。但除了增加系统的价格和耗电量之外,不但整个系统的稳定度降低,资料安全性也存在隐患,因为辅助处理器和微处理器并不存在同一个芯片上,所以它们之间的连接通路可能被窃听。
因此一个内建于微处理器中的密码编译硬件是必要的。这个硬件应让应用软件只需发一个指令便能完成密码编译。发明者认为这种硬件能减少介入计算机操作系统的必要。理想中此发明能提供应用软件执行密码编译指令的优先权,除了需要与目前市面上较普遍的微处理器结构兼容,还要能支持较陈旧的操作系统和应用软件,更要有防止窃听的机制。此硬件应该支持多种不同的密码编译算法,且能够认证和测试硬件上的密码编译算法。此发明需要能够切换本身运作模式,例如允许使用者选择提供自己的金钥或选择由硬件发行金钥及支持切换不同大小的数据片段和金钥大小。最后,此硬件所使用的加密/解密模式应该都可以被选择,例如是否用电子书码(ECB),编辑方块连锁(CBC),编码反馈(CFB)或输出反馈(OFB)做密码编译。
发明内容
本发明解决了现有技术面临的问题,提供了一个优秀的微处理器内建密码编译技术。一实施例中,本发明是一个微处理器内密码编译的装置。装置内包含了转译逻辑模块和执行逻辑模块,转译逻辑模块收到密码编译指令后将收到的密码编译指令转译成一组对应的微电脑指令,指示运算的步骤。执行逻辑模块和转译逻辑模块的运作是相连的,执行逻辑模块从转译逻辑模块接受到微电脑指令和步骤后才能开始作运算。
本发明可被视为一个处理密码编译程序的微处理器装置,此装置有一个密码编译指令和一个转译逻辑模块。这个微处理器装置包含了一个密码编译指令和转译逻辑模块。密码指令提供给微处理器,微处理器会将接到的指令加入指令流程中。这个密码指令指示处理器运作。转译逻辑模块将密码编译指令转译成相对的微电脑指令,指示处理器该执行的步骤。
本发明从某个角度看是一个处理密码编译程序的装置。这个装置包含了一个密码编译指令和执行逻辑模块。微处理器内的逻辑收到密码编译指令后,从指令解读出需要执行哪一个密码编译动作,执行逻辑模块和处理器的动作是连接的,所以执行逻辑模块此时就会执行那个特定的密码编译动作。
本发明也可被视为一个在微处理器中执行密码编译的方法。这个方法包括了如何接收和执行密码编译指令,其中接收一个密码编译指令,密码编译指令指定至少一个密码编译运算动作,以及执行被指定的密码编译运算。
本发明提供了一种微处理器内处理密码编译运算的装置,包括:转译逻辑模块,用来接受密码编译指令,该指令指示需要进行的密码编译运算,转译逻辑模块负责将密码编译指令转译为一组微指令,指示需要做的子运算;多个寄存器,其中含有密码编译运算所需要的数据,并在进行密码编译运算前将运算所需要的数据加载;数据高速缓存,通过存储器总线与内存耦接并执行收到的指令;加载逻辑模块,与数据高速缓存耦接,从数据高速缓存读取密码编译运算所需要的数据;执行逻辑模块,与加载逻辑模块耦接,负责接收微指令并进行子运算;储存逻辑模块,与执行逻辑模块和数据高速缓存耦接,提供输出多个对应文字片段并将输出文字数据分送至内存储存;以及写回逻辑模块,与储存逻辑模块耦接,在密码编译运算完成后写回寄存器的内容。
本发明还提供了一种在微处理器内执行密码编译运算的方法,包含:接收一个密码编译指令,其中密码编译指令指定至少一个密码编译运算动作,以及执行被指定的密码编译运算;遵照AES算法完成密码编译运算;将第一组多个连续微指令分送至密码编译单元;以及在密码解译单元内,对多个输入文字片段做多个回合的密码编译,产生对应的多个输出文字片段,其中多个密码编译回合由密码编译单元中控制字符控制。
以下解释及图式能帮助了解本发明的这些及其它内容、特征和优点。
附图说明
图1描述了公知密码编译应用的方框图。
图2描述了编译密码运算技术的方框图。
图3为根据本发明一处理密码编译的微处理器装置的方框图。
图4为根据本发明一独立密码编译指令集的方框图。
图5为根据本发明一区块解密模式字段值的对照表的例子。
图6是根据本发明X86兼容微处理器内密码编译单元的方框图。
图7是根据本发明密码编译指令中包含字段的示范图,此指令指示图6中微处理器进行密码编译相关的子运算。
图8是根据本发明XLOAD微指令中寄存器字段值和运算动作的对照表,XLOAD微指令的格式如图7所示。
图9是根据本发明XSTOR微指令中寄存器字段值和运算动作的对照表,XSTOR微指令的格式如图7所示。
图10是根据本发明一个控制字符格式的例子,其中控制字符指示密码编译运算的密码编译参数。
图11是根据本发明密码编译单元的方框图。
图12是根据本发明AES区块解密逻辑模块的方框图。
其中,附图标记说明如下:
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 XCRYPT指令  303转译逻辑模块
304微指令队列      305微指令       306微指令
307寄存器文件      308寄存器       309寄存器
310寄存器          311寄存器       312寄存器
313寄存器          314加载逻辑模块 315数据高速缓存
316密码编译单元    317储存逻辑模块 318写回逻辑模块
319存储器总线      320操作系统     321系统内存
322 XCRYPT指令     323控制字符     324初始化金钥/金钥程序表
325初始化向量         326输入文字       327输出文字
400密码编译指令方框图
401选择性前置字段     402重复前置字段   403运算码字段
404区块解密模式字段
500区块密码字段值与微处理器运算动作对照表
600密码编译单元发明实施例中的微处理器
601指令取得逻辑模块   602转译逻辑模块   603转译器
604微指令码只读存储器                   605寄存器阶段
606地址阶段           607加载阶段       608执行阶段
609微指令队列         610整数单元       611微指令队列
612浮点单元           613微指令队列     614MMX单元
615微指令队列         616SSE单元        617密码编译单元
618储存阶段           619写回阶段       620加载总线
621闲置信号           622储存总线       624EFLAGS寄存器
625X位                626中断逻辑模块   627微指令(中断要求)
628MSR寄存器          629E位            630FCR寄存器
631D位                632执行逻辑模块   633总线
700微指令的结构范例
701微运算码字段       702数据寄存器字段 703寄存器字段
800 XLOAD值对照表
900 XSTOR值对照表
1000控制字符格式
1001RSVD字段            1002金钥大小的KSIZE字段
1003加密/解密E/D字段    1004中间结果IRSLT字段
1005金钥产生KGEN字段    1006算法ALG字段
1007回合数计数RCNT字段  1100密码编译单元
1101区块解密逻辑模块    1102金钥随机存取内存
1103微程序代码寄存器    1104控制字符寄存器
1105input-0寄存器       1106input-1寄存器
1107 key-0寄存器           1108key-1寄存器
1109 output-0寄存器        1110ouput-1寄存器
1111加载总线               1112储存总线
1113停止信号               1114微指令总线
1200AES算法区块解密逻辑模块的方框图
1201微指令寄存器    1202CW寄存器       1203KEY-0寄存器
1204KEY-1寄存器     1205IN-0寄存器     1206IN-1寄存器
1207OUT-0           1208OUT-1          1212RNDCON总线
1210回合计算引擎控制器     1211加密/解密信号
1213金钥总线        1214金钥产生信号   1215总线
1216总线            1217总线           1218NEXTIN总线
1220合计算引擎      1221第一XOR逻辑金钥模块
1222寄存器REG-0     1223S-Box逻辑模块  1224移列逻辑模块
1225寄存器REG-1     1226混栏逻辑模块   1227寄存器REG-2
具体实施方式
以下所述仅为本发明的较佳实施例,并非用来限定本发明实施的范围。即凡依本发明权利要求所作的均等变化与修饰,都应为本发明专利范围所涵盖。
以下内容将参考图2延续前面的密码编译运算的相关技术背景及其缺点进行探讨。接下来请参照图3-12。本发明提供了一个效果和机制优越的装置和方法来执行密码编译运作。此发明降低了介入操作系统的必要性。除此之外,此发明也满足了其它要求,如独立完整性、与陈旧结构的兼容性、运算法及模式切换性、黑客抵御性以及可测试性。
现在请看图2,图2描绘的是现今计算机系统执行密码编译的方框图。方框图200内包含了一个微处理器201,这个微处理器201负责从系统内存中应用程序存储区203中取得与应用程序相关的指令和存取相关的数据。应用程序存储区203中的软件控制和数据存取机制通常都是由系统内存中的操作系统202处理。操作系统202被存放在系统内存中受到保护的区块中。如前文中所描述的,一个应用程序在执行中需要做译码编译的动作时(例如一个电子邮件程序或是储存文件的软件),必须通知微处理器201,然后由微处理器201完成一连串数量庞大的指令才能完成密码编译。这些指令有些是这个执行中应用程序内的子程序,有些是连接到这个执行程序的软件插件程序,或者也有可能是操作系统202所提供的服务。无论这些指令源自何处,都位于内存中一个特定的区域中。为方便讨论,内存中这些不同区域的片段在图中都被包含在应用程序存储区203内。应用程序存储区203中还包含了一个产生金钥的软件204。这个产生金钥的软件通常负责产生和接受金钥的工作,也将金钥展开成金钥程序表205。如果使用的加密模式需要,加密软件206会去读取初始化向量208。加密软件执行内部指令来完成明文加密的动作,最后输出密文211。解密的流程大致上是一样的,当需要解读一段密文时,解密软件207被呼叫。解密软件207执行特定的指令来取得密文211,金钥程序表205以及密码编译参数。其中密码编译参数能提供密码编译的详细细节。如果使用的解密模式有需要,解密软件207会去读取初始化向量208并执行那里面的指令来完成密文解密的动作,输出明文210。
加密、解密和产生金钥的动作应该可以用更少的指令就完成。之前提出的由FIPS出版的规范中便提供有几个不同的伪码来预估完成一项简单密码编译工作的微电脑处理器所需要执行的指令数量。而现在使用的技术所需处理编译密码的指令数量高达上百个以上。除此之外,从那些执行中的应用软件(文件管理、简讯、电子邮件、远程文件存取、信用卡交易软件)的角度来看,执行这些密码编译不仅不是软件本身主要的用途,而且还十分耗时。甚至会使软件的使用者错觉应用软件不够有效率。若加密软件206、解密软件207是软件插件的结构,则情况会更糟,因为计算机操作系统的工作项目又增加了支持呼叫和管理206、207软件。操作系统必须支持中断、例外等其它状况。除此之外,计算机系统上每一个同时正在进行的密码编译都会需要在存储器203内安排一些空间给软件204、206和207。而且未来微处理器201所需处理的密码编译工作数量只会有增无减。
发明者有鉴于现今计算机系统处理密码编译的这个缺陷,体会到需要一个内建微处理器、能改善密码编译处理速度的装置及方法的必要性,由此通过一个单一的密码编译指令便启动编译程序。关于此发明,将参照图3-12做更深入的解释。
请参看图3,图3是依照本发明原理的微处理器密码编译运算装置的方框图300。图中显示了微处理器301通过存储器总线319与系统内存321结合。微处理器301包含了转译逻辑模块303。转译逻辑模块303从指令寄存器302接收指令。密码转译逻辑模块303的构成可以是一个逻辑、电路、装置、微指令码(就是微指令或原生指令)或是一个逻辑、电路、装置、微指令码或其它可以达到同样功效组件的结合,将指令转成对照的微指令码的组件。构成密码转译逻辑模块303的组件可以与微处理器301内执行其它功能的线路、微指令码等组件共享。根据本发明的应用范围,微指令码指的是多个微指令。微指令(也可以被称做原生指令)指的是密码编译单元层次可执行的指令。比方说,精简指令集运算处理器都直接执行微指令,而加强指令集运算处理器,如x86兼容的处理器,则先将指令翻译成微指令然后再由内部一个或一个以上的单元执行。转译逻辑模块303和指令队列304耦接。指令队列304中有多个微指令305,306,这些微指令是由微指令队列304交给寄存器阶段逻辑的。其中寄存器阶段逻辑包含了寄存器文件307。微指令从指令队列移动至寄存逻辑区。寄存逻辑包含了一个寄存器文件307,寄存器文件307内有多个寄存器308-313。这些寄存器会在进行编码编译运算前将运算所需要的数据加载。每个寄存器都指向内存321中323-327其中含有编译密码运算所需要的数据。寄存区逻辑与加载逻辑模块314耦接。加载逻辑模块与数据高速缓存315耦接,从数据高速缓存315读取密码编译运算所需要的数据。数据高速缓存通过存储器总线319与内存耦接并且执行收到的指令。执行逻辑模块328的构成可以是一个逻辑、电路、装置、微指令码(就是微指令或原生指令)或是一个逻辑、电路、装置、微指令码或其它可以达到同样功效组件的结合,执行指令所指示的运算。构成执行逻辑模块328的组件可以和微处理器301内别的功能共享。执行逻辑模块328包含了一个密码编译单元316。密码编译单元316从加载逻辑模块314接收密码编译运算所需数据。微指令指示密码编译单元316对多个输入文字片段326进行密码编译,并输出对应的多个输出文字片段327。密码编译单元316的构成可以是一个逻辑、电路、装置、微指令码(就是微指令或原生指令)或是一个逻辑、电路、装置、微指令码或其它可以达到同样功效组件的结合,处理密码编译。构成密码转译逻辑模块303的组件可以是和微处理器301内执行其它功能的线路、微指令码等组件共享。一实施例中密码编译单元316与执行逻辑模块328内如浮点单元和整数单元等执行单元平行执行(未显示)。一“单元”的实施例的构成可以是一个逻辑、电路、装置、微指令码(就是微指令或原生指令)或是一个逻辑、电路、装置、微指令码或其它可以达到同样功效组件的结合。构成此单元的组件可以和微处理器301内执行其它功能的线路、微指令码等组件共享。一实施例中,整数单元的构成可以是一个逻辑、电路、装置、微指令码(就是微指令或原生指令)或是一个逻辑、电路、装置、微指令码或其它可以达到同样功效组件的结合,执行整数指令。一个浮点单元的构成可以是一个逻辑、电路、装置、微指令码(就是微指令或原生指令)或是一个逻辑、电路、装置、微指令码或其它可以达到同样功效组件的结合,执行浮点指令。构成整数单元内执行整数指令的组件可以和浮点运算单元中处理浮点运算指令的组件的线路、微指令码等共享。一与x86结构兼容的实施例中,密码编译单元316与一x86整数单元、一x86浮点单元、一x86 MMX单元和一x86 SSE单元平行运作。根据本发明,一与x86兼容结构的实施例可以支持大多数为x86处理器撰写的软件。判断软件是否正确被执行的方法为检查软件执行后是否得到正确的结果。其它与x86兼容的实施例是将密码编译单元视为x86执行单元中的一个子单元。密码编译单元316与储存逻辑模块317耦接并提供输出多个对应文字片段327。储存逻辑模块又与数据高速缓存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前置(prefix)(也就是0xF3),一指令集内未被使用过的2位运算码(就是0x0FA7),和一一位区块解密模式。一实施例中XCRYPT指令322依照应用软件被允许执行的层次,可以直接将XCRYPT指令322写入微处理器301的指令流程或是由操作系统320写入。因为软件或操作系统只需要下一个指令322就能完成密码编译,所以密码编译的作业细节对操作系统都是透明的。
计算机系统的运作模式,是由操作系统320呼叫执行各个应用软件。应用软件下令执行XCRYPT指令322时,根据计算机系统中一般指令流程,这个指令会被从内存321传到指令取得逻辑模块302内。当然,软件里还会有其它指令指示微处理器301先将内存321中323-327的密码编译控制字符323,初始密码编译控制金钥或金钥程序表324、初始化向量325(若需要的话)。接着被处理的输入文字326和输出文字327会被复制至对应的寄存器308-312中。此初始化寄存器308-312的动作一定要在执行XCRYPT322前完成。因为执行XCRYPT322指令时会用到寄存器308-312中所有的数据。另外还有一个寄存器,一个负责纪录输入文字有几个片段还需要被加密/解密的寄存器。转译逻辑模块303从提取逻辑模块302取得指令,转译成对应的微指令,指示微处理器301完成密码编译运算。微指令305-306中的第一个指令会指示密码编译单元316将数据从加载逻辑模块加载,然后开始执行指定次数的密码编译。执行完成的结果的输出文件会通过数据高速缓存315存入内存321中的储存逻辑模块317的文字区327。第二组的多个指令(未显示)指示微处理器301内其它执行单元(未显示)。非结构寄存器通常包含临时结果和计数器更新输入和输出指针寄存器311-312。若有应用到初始向量寄存器的更新数据,其中一实施例便是寄存器308-313为结构寄存器。
一实施例中,密码编译单元316被分为多个阶段,允许连续输入的文字片段326被管线化。
图3所显示的组件为解释本发明的必要组件。许多现今的微处理器301内部的逻辑没有在微处理器密码编译运算装置的方框图300中显示。熟知该项技术的人士会发现,为了能清楚说明本发明,许多微处理器301内包含的逻辑在方框图300中都被简化了。这是为了方便叙述。如加载逻辑模块314可以包括一个地址产生步骤,接着是一个高速缓存接口阶段,然后再接着一个高速缓存对齐阶段。但是有一点很重要,本发明对多个输入文字片段326进行密码编译,操作系统只要通过单个指令便能完成。本发明使密码编译工作的细节动作完全透明化,而且和微处理器301内其它执行逻辑模块同时进行运算。密码编译单元316和相关的XCRYPT指令322的运作完全和现今较陈旧的操作系统的运算兼容。
现请参考图4,这是密码编译指令的方框图400。密码编译指令包含了一个前置字段401,一个重复前置字段402,一个运算码字段403,一个区块解密模式字段404。在一实施例中,字段401-404的内容与x86指令结构兼容。
运算时,许多指令集结构都采取加入一个选择性的前置字段401。此字段内容用来指示处理器开启或关闭一些运算功能。例如直接作16位或20位运算的功能和直接处理或存取特定片段的功能等。重复前置字段402的内容代表密码编译动作需要被重复执行的次数。
运算码字段403指微处理器去执行控制字符指示的密码编译运算,这个控制字符实际上是被存在内存内,一控制字指针指向控制字在内存中的位置。运算码的值会被设定为一个现有指令集内少用的值。如此一来,较陈旧的操作系统及应用软件也能使用。例如说,一个x86兼容系统就可以将此值设为0x0FA7。区块解密模式字段404指示哪一项密码运算作业需被执行。
请看图5。
图5是一个区块密码字段值与微处理器运算动作对照表的例子。如图所示,若区块密码字段内的值(BCM值)为0xC8时,微处理器就会用电子书码(ECB)模式来完成密码编译动作。当字段内的值为0xD0时,微处理器就会以编辑方块连锁(CBC)模式完成密码编译动作。OxE0表示微处理器应使用编码反馈(CFB)模式,0xE8表示使用输出反馈(OFB)模式。以上所述各模式在FIPS文献中均有详细的描述。
现请看图6。图6所要表现的是一个在X86兼容的微处理器600中的密码编译单元617的发明实施例。微处理器600内有一个指令取得逻辑模块601。指令取得逻辑模块601从内存(未显示)取得指令。转译逻辑模块602由一个逻辑、电路、微指令码(microcode)(就是微指令,micro instructions或原生码,native instruction)装置或是其它可以将指令转成对照的微指令码的组件。转译逻辑模块602内的转译组件可以与微处理器600内其它功能的组件共享。如图所示,转译逻辑模块602内包含了一个互相耦接的转译器603和微指令码只读存储器604。中断逻辑模块626通过总线633耦接转译逻辑模块602。软/硬件所发出的中断要求信号627都由中断逻辑模块626处理。中断逻辑模块626转达指令转译逻辑模块602的中断。如图6所示,指令转译逻辑模块与以下连串性阶段耦接,该连串性阶段包括寄存器阶段605、地址阶段606、加载阶段607、执行阶段608、储存阶段618以及写回阶段619。图6所描绘的执行阶段608内包含了一个执行逻辑模块632。执行逻辑模块632内有多个同时作业的执行单元610、612、614、616和617。整数单元610负责执行微指令队列609内的整数微指令,浮点单元612负责执行微指令队列611内的浮点微指令,MMX单元614负责执行指令队列613内的MMX微指令,SSE单元616负责执行微指令队列615内的SSE微指令。SSE单元616和密码编译单元617耦接。两单元中间有一个加载总线620、一个闲置信号621和一个储存总线622。密码编译单元617和SSE单元共享同一个微指令队列615。另一个实施例的做法是将密码编译单元617设为一个如单元610、612及614相同的完全独立的单元。整数单元610和x86 EFLAGS寄存器是耦接的。EFLAGS寄存器包含了一个X位625。这个X位内的值描述目前是否有密码编译运算正在作业。X位625实施例中的其中一项是x86EFLAGS寄存器624中的第30个位。另外,整数单元610会读取寄存器628中的数据来分析一个E位629的状态。E位中的值指示密码编译单元617是否存在于微处理器600内。整数单元610也会读取一个D位631。这个位位于特征控制寄存器630内,用来开启和关闭密码编译单元617。如图3微处理器301的实施例,图6的微处理器600为了能清楚表达本发明特征,在图中只显示出一些微处理器的构造,其它部分则被汇集在一起或者已被省略。熟知此项技术的人士是可以理解这些组件的,例如负责数据高速缓存(未显示)的接口、总线接口单元(未显示)以及时钟发生器和分散逻辑等其它微处理器的单元都被省略。
运算过程中,指令取得逻辑模块配合时钟信号(未显示)将指令从内存(未显示)提至转译逻辑模块602。转译逻辑模块602将指令转编为对应的微指令然后配合时钟信号转供给微处理器600内的605-608,618及619等单元。每个指令对应的一连串微指令指示微处理器该做的子动作来完成该项指令。例如一个由地址阶段606执行的地址产生指令,就包含了先从寄存器阶段605特定的两个寄存器(未显示)内取得两个操作数,然后再于整数单元610相加两个操作数。所有执行单元610、612、614、616及617所产生的结果都由储存阶段618负责存入内存中。转译逻辑模块602会判断指令的类型,然后使用转译器603直接产生一连贯的微指令,或是转译逻辑模块602会从微指令码只读存储器604中提取一连贯的微指令。或者转译逻辑模块602会产生部分的微指令,剩下的再从微指令码只读存储器中提出。微指令按照时钟速度在微处理器600中遵循605-608,618和619各阶段的顺序执行。当微指令移动到执行阶段608时,执行逻辑模块632将微指令发送至执行单元610、612、614、616及617,所执行运算产生的结果接着进入储存阶段618。在一实施例中,微指令包含了表明能否与其它运算同时进行的范围。
转译逻辑模块602接收到XCRYPT指令后,产生对应的微指令,指挥微处理器600内其它阶段605-608,618,619来执行密码编译运算指令。前面的多个微指令会直接被分派到密码编译单元617内来指挥单元617从加载总线加载需要的数据。或是加载一个片段的输入数据,开始进行指示次数的密码编译回合。也有可能是将一段输出数据通过储存总线622传到储存逻辑618,然后再存入内存中。接下来第二组的多个指令会被分送到执行单元610、612、614和616来执行其它必要的子运算。例如测试E位629,设定D位631,将X位625的值设定为显示密码编译运算正在执行中,将X位625的值设定为显示密码编译运算正在执行中。更新寄存器(如计数寄存器,输入文字指针寄存器,输出文字指针寄存器)在寄存器阶段605范围内的工作,处理由中断逻辑模块626送来的中断要求627等工作。为了实现最有效率的密码编译的相关指令,微指令的顺序会被特别排列成将整数单元微指令穿插于密码编译微指令中,已达到整数运算与密码编译运算平行执行。微指令中包含了从暂停中断627中恢复所需要的微指令。所有指向密码编译参数(cryptographic parameter)和数据的指针都位于x86结构寄存器内,收到中断要求时,它们的状态都会被储存,中断结束后,数据及参数会被恢复。在从中断中恢复时,会有一组微指令负责测试X位的状态,判断是否有密码编译运算正在进行。如果有,微处理器会开始继续处理接到中断要求时正在处理到一半的输入数据。微指令的排列顺序会允许在处理中断627前先把指针寄存器及正在进行密码编译的中间结果先更新至寄存器内,然后再进行中断。
现在请看图7,图7是一个微指令结构的范例。这个微指令700就是用来指示如图6所示的微处理器来执行密码编译运算的指令。微指令700包含了一个微运算码字段701、一个数据寄存器字段702和一个寄存器字段703。微运算码字段701提供了微处理器600执行那些子运算程序和每阶段所要使用的逻辑。在本发明中,特定的值是被指定到微指令以供译码单元运作使用。第一个值(XLOAD)指示从内存中数据寄存器字段702指向的位置中的数据。这个数据应被加载到由寄存器字段703的内容所指向的在密码编译单元中的位置。这个提出的数据(例如密码编译金钥数据、控制字、输入文字数据、初始化向量)是提供给密码编译单元用的。第二个微运算码字段701的值(XSTOR)指示密码编译单元运算产生的结果应存入内存中数据寄存器字段702所指向的位置。针对多阶结构的密码编译单元,寄存器字段703的内容指示在多个输出数据片段中的一个应该被存入内存中。输出数据片段被放在数据字段704,供给储存逻辑模块读取。接下来,参考图8与图9,将更进一步探讨XLOAD和XSTOR在密码编译单元中的执行流程。
现请参考图8,表格800是如先前所述,微处理器转译XCRPYT指令得到的一组微指令。这组微指令中的前面第一组多个微指令由密码编译单元直接执行,接下来第二组多个微指令则是由一个或是多个其它单元平行执行。第二组多个微指令所进行的动作包括更新计数器、临时寄存器、结构寄存器,测试和设定机械特定寄存器的位状态等。第一组多个微指令则提供金钥数据、密码编译参数,和输入数据给密码编译单元,并指挥密码编译单元产生金钥程序表(或加载由内存中提出的金钥程序表),加载或将输入文字加密或解密,储存输出文字数据。一XLOAD微指令指示密码编译单元加载控制字数据,加载密码编译金钥或金钥程序表,加载初始化向量数据,加载输入文字数据,和指示开始进行密码编译运算。当微指令为XLOAD时,寄存器字段703中的值0b010指示密码编译单元将控制字加载控制字指针寄存器。随着这个指令在管线中前进,其中会遇到一个寄存器内存控制字指针。这个指针指向内存中控制字的位置。加载逻辑模块从高速缓存中提出这个控制字,放入数据字段704。相同的,寄存器字段值0b100指示密码编译单元加载数据字段704中的输入文字数据。然后再进行密码编译运算。如同控制字符一样,输入数据是通过一个存在结构寄存器内的指针提出。
一实施例中,寄存器字段0b100和0b101可被视为一个两阶段的密码编译单元。连续的输入文字数据可被管线化。第一个XLOAD微指令将第一段输入文字放入IN-1,第二个XLOAD微指令将第二段输入文字放入IN-0,第二个XLOAD微指令也会启动密码编译单元执行密码编译运算。
如果密码编译运算所使用的是使用者自行产生的金钥程序表,则XLOAD微指令的数目与使用者自行产生的金钥程序表中金钥的数目相对应。使用者自行产生的金钥程序表会被分送到密码编译单元内,此单元会依照密码编译进行的状况从金钥程序表中加载该回合所使用的金钥。
XLOAD微指令寄存器字段703中其它值都为保留值。
现请看图9,图9的表格中显示XSTOR微指令寄存器字段703的对照表900。XSTORE指令指示密码编译单元将处理好的输出文字片段(加密过或解密过的)存到位置字段702所指示的内存内的位置。根据本发明,转译逻辑模块先产生一个XLOAD微指令加载一段输入文字,然后再发出XSTOR将该输入文字所产生的对应输出文字储存。寄存器字段703的值0b100指示密码编译单元提供内部寄存器output-0(OUT-0),OUT-0中的输出文字片段供给储存逻辑模块做储存。OUT-0的内容与IN-0中输入文字片段对应。相同的,寄存字段0b101指向内部寄存器output-1,其内容与IN-1中输入数据对应。加载金钥和控制字数据后,通过顺序执行XLOAD.IN-1,XLOAD.IN-0(XLOAD.IN-0也是指示密码编译单元开始执行密码编译运算),XSTOR.OUTPUT-1,XSTOR.OUT-0,XLOAD.IN-1,XLOAD.IN-0(开始替下一个输入文字片段进行运算)等等的微指令,多个输入文字片段可以被管线化的加载密码编译单元。
现请看图10,图10是一个控制字符1000的格式例子。控制字符中包含了指示密码编译运算所用的密码编译参数。控制字符1000是由使用者编制入内存中。在进行密码编译运算前,指向控制字符的指针位于一个结构寄存器内。所以XCRYPT指令对应的一组微指令中,LOAD微指令指示微处理器读取含有该指针的结构寄存器,并将指针转成实体地址,从内存(高速缓存)取出控制字符1000,放入密码编译单元内部的控制字寄存器。控制字符1000包含了一个保留的RSVD字段1001、一表示金钥大小的KSIZE字段1002、一加密/解密E/D字段1003、一中间结果IRSLT字段1004、一金钥产生KGEN字段1005、一算法ALG字段1006和一回合数计数RCNT字段1007。
所有保留字段1001的值都要被保留。KSIZE字段1002的值表示加密或解密所用的金钥的大小。一实施例中,KSIZE字段1002指示金钥究竟是128位,192位还是256位。E/D字段1003注明这个密码编译表达式是加密还是解密运算。KGEN字段1005指示内存中金钥是使用者产生的金钥程序表还是一个单一金钥。如果内存中的是单一金钥,则微指令会把这个密码编译金钥,根据ALG字段1006内容指定密码编译算法展开成一金钥程序表。一实施例中,ALG字段1006指定AES算法,所以迄今为止,我们所作的讨论都是针对Triple-DES和AES算法。其它的实施例可应用不同密码编译算法,如Rijndael Cipher,Twofish Ciper等。RCNT字段1007的内容指示密码编译时遵循所用的算法对每个文字片段所需重复进行密码编译的回合数。虽然以上所述的密码编译算法的规范只是对不同的输入文字片段进行固定次数回合的密码编译,但是RCNT字段1007允许程序编制员将RCNT字段1007的值设为可以依照使用的算法而改变。一实施例中程序编制员指定要对每段文字进行0至15回合密码编译。最后,IRSLT字段1004内容注明对输入文字加密/解密的回合次数是否参照RCNT字段1007和ALG字段1006注明的算法或是根据ALG字段1006中注明的算法,RCNT字段1007做的演算数目产生的只是一个中间结果,并不是最后结果。熟知此项技术的人士能了解,许多密码编译算法会重复进行同一个子运算,最后一回合时再做不同的运算。所以IRSLT字段1004所提供的是一个中间结果,并且允许程序编制员能够在进行下一步动作前对这个中间结果先加以确认。例如如最后结果是对中间结果增值而来的,可以先对文字进行一回合的加密,然后再对同样的一个文字片段进行二回合的密码编译,然后再进行三回合,等等。这个可以设定的密码编译回合设定功能和中间结果功能使使用者能够评估密码编译的效能,用以解决问题,并且也是一个研究不同金钥结构和回合次数的工具。
现请看图11,一个密码编译单元1100的方框图。密码编译单元包含了一个微程序代码寄存器1103。微程序代码寄存器1103通过微指令总线1114接收微指令(如XLOAD和XSTOR等微指令)。密码编译单元1100也包含了一个控制字符寄存器1104,一input-0寄存器1105,一input-1寄存器1106,一key-0寄存器1107,和一key-1寄存器1108。加载总线1111遵照XLOAD微指令在微指令寄存器1103中的内容将数据加载到寄存器1104-1108中。密码编译单元1100还包含了一个与所有寄存器1103-1108和金钥随机存取内存1102耦接的区块解密逻辑模块1101。区块解密逻辑模块提供一停止信号1113和一区块结果至output-0寄存器1109和ouput-1寄存器1110。输出寄存器1109-1110会将内部内容循序的通过储存总线1112送至微处理器。一实施例中微指令寄存器1103是32位的,而其它寄存器1104-1110则是128位的。
在运算中,密码编译微指令依序的被送至微指令寄存器1103,另外,控制字符寄存器1104和输入寄存器1105-1106其中之一或金钥寄存器1107-1108其中之一也会被跟着一起送至微指令寄存器内。一配合图8和9所讨论的实施例中,控制字先在XLOAD微指令发出后被加载到控制字符寄存器1104内。然后,密码编译金钥或金钥程序表在接下来的XLOAD微指令的指挥下也被加载。如果要加载的是一个128位大小的密码编译金钥,则XLOAD微指令会安排KEY-0寄存器1107来储存这个金钥。若金钥大小大于128位,则XLOAD会安排KEY-0寄存器1107和KEY-1寄存器1108来储存此金钥。如果加载的是一使用者产生的金钥,接下来的XLOAD微指令会安排KEY-0寄存器1107。每个金钥程序表中的金钥都会依序被排列在金钥随机存取内存1102中,以供每个密码编译回合中使用。接下来输入的文字数据(若不需要初始化向量)会被加载到IN-1(input-1)寄存器1106。XLOAD中的一个微指令会指示IN-0(input-0)寄存器1105将输入数据加载并且根据控制字符寄存器1104中的内容,应用在IN-1寄存器或是在两个输入寄存器1105-1106内的初始化向量开始对寄存器内的数据进行密码编译工作。(如果输入数据被管线化)收到XLOAD微指令指定IN-0寄存器1105后,区块解密逻辑模块便遵循控制字的内容开始进行密码编译。如果需要展开单一密码编译金钥,那么区块解密逻辑模块便会产生金钥程序表内的每一把金钥,并且将它们存在金钥随机存取内存1102内。不管区块解密逻辑模块是否需要产生金钥程序表或是金钥程序表已经从内存内加载,密码解密第一回合所用到的金钥一定是被存在区块解密逻辑模块1101中的高速缓存内,这样第一区块的密码解译回合就可以直接进行,无须再从金钥随机存取内存1102取得。一但区块解密逻辑模块开始动作,便会对一块或一块以上的输入文字进行密码编译运算,逐次地从金钥随机内存中提取所要用到的金钥。密码编译单元1100对指定的输入片段文字进行特定的密码编译运算。下达XLOAD和XSTOR微指令来对输入文字进行加密或解密。执行XSTOR微指令时,若输出数据(OUT-0或OUT-1)还没准备好,则区块解密逻辑模块会设一个停止信号1113。一但输出数据产生完成并且已被存入对应的寄存器1109-1110内,那么寄存器里的内容就会被转入储存总线1112。
现请看图12。图12是一个AES算法区块解密逻辑模块1200的方框图。区块解密逻辑模块1200包含了一个回合计算引擎(round engine)1220,一个回合计算引擎控制器1210。回合计算引擎1220通过总线1211-1214和总线1216-1218与回合计算引擎控制器1210耦接。回合计算引擎控制器可以存取微指令寄存器1201,KEY-1寄存器1204来读取金钥数据、微指令和密码编译运算参数。寄存器1205-1206中的内容,供给回合计算引擎1220,然后回合计算引擎1220再将对应的输出文字传到输出寄存器1207-1208内。输出寄存器1207-1208通过总线1216-1217与回合计算引擎控制器1210耦接。这样回合计算引擎控制器就能读取每一密码编译回合的结果,再供给回合计算引擎1220,让回合计算引擎1220能通过总线NEXTIN1218进行下一回合的密码编译运算。密码编译金钥通过总线1215从金钥随机存取内存(未显示)中被提出。ENC/DEC1211信号指示回合计算引擎进行加密(S-Box)或解密(反向S-Box)。RNDCON总线1212指示回合计算引擎进行第一AES回合或中间AES回合或是最后一回合的AES。GENKEY信号1214设定时代表回合计算引擎1220需要将从总线1213取得的金钥展开成金钥程序表。金钥总线1213也是用来提供金钥的,它会将每一回合所需要用的金钥提供给回合计算引擎1220。
回合计算引擎1220包含了与第一个寄存器REG-0 1222耦接的第一XOR逻辑金钥模块1221。第一个寄存器REG-0 1222与S-Box逻辑模块1223耦接。S-Box逻辑模块1223与移列逻辑模块1224(Shift Row logic)耦接。移列逻辑模块1224与第二个寄存器REG-1 1225耦接。第二个寄存器REG-11225与混栏(Mix Column)逻辑1226耦接。而混栏逻辑模块与第三个寄存器REG-2 1227耦接。第一金钥逻辑模块1221、S-Box逻辑模块1223、移列逻辑模块1224及混栏逻辑模块1226设定为执行命名的子程序运算。混栏逻辑模块1226用途为对在进行中间密码运算回合中时加入的数据进行AES XOR运算,使用金钥总线1213所提供的回合金钥。当ENC/DNC状态指示进行解密时,第一金钥逻辑模块1221,S-Box逻辑模块1223,移列逻辑模块1224及混栏逻辑模块1226也用来进行对应的逆AES子程序运算。熟知此技术的人士可以了解进行中间回合时数据会根据控制字符寄存器1202内容所指示的区块解密模式,将数据反馈至回合计算引擎1220。若需要初始化向量数据时,初始化向量会通过总线NEXTIN1218被传回回合计算引擎1220。
图12是一实施例。如图所示回合计算引擎被分割为两个阶段:REG-01222和REG-11225间的第一阶段和REG-1 1225和REG-2 1227间的第二阶段。中间回合的资料被放在两个阶段中,配合时钟信号(位显示)移动。当密码编译运算完成一区块的输入数据,输出数据被存入对应的输出寄存器1207-1208。执行XSTOR微指令会使寄存器1207-1208将内含数据传送至储存总线(未显示)。
本发明已以较佳实施例揭示如上。例如本发明目前的实施例都是以x86结构作为基准,因为x86结构是一个较多人熟悉的结构,因此以x86结构讲述较方便。本发明也可以同样被应用在其它结构上,如PowerPC,MIPS,或其它指令集结构完全不同的系统上。
本发明可以应用于微处理器以外的计算机系统密码编译运算上。本发明所使用的指令模式可以轻易的被转换利用于别种微处理器以外的计算机处理系统上。本发明可以被包含于微处理器的周边芯片组内,如北桥、南桥,或是被制作成一个与微处理器相连,专门负责处理密码编译的密码编译微处理器。当微处理器看见密码编译相关的动作时就把工作交给这个密码编译微处理器。本发明可应用于嵌入式控制器、工业用控制器、信号处理器、阵列处理机以及其它处理数据用的处理器内。本发明可被实现成一个只包含实施密码编译运算所需的必要原件,而成为一个低成本和低耗电量的密码编译运算执行器。例如通讯系统内处理加密/解密的处理器。为明确起见,其它的处理组件以上一概称为微处理器。
另外,本发明至今虽都以128-位大小的区块考虑,但是其它不同大小的区块也能应用。只要将输入数据、输出数据、金钥和控制字符寄存器的大小做调整即可。
本发明目前的应用范围虽然都属于较广泛应用的DES,Triple-DES和AES算法,但是较鲜为人知的区块密码模式,如MARS Cipher,Rijndealcipher,Twofish cipher,Blowfish Cipher,Serpant Cipher和RC6 cipher。
虽然目前的讨论范围都是以区块密码编译算法和其算法的相关技巧来表现本发明的密码编译功能,在此需声明本发明可以完全的被应用于其它密码编译算法上。只要是能够执行一密码编译运算、加密或解密,并且微处理器内包含一个专门在收到密码编译指令后进行密码编译功能即可。
另外,针对以上所讨论的回合计算引擎,发明者声明该回合计算引擎中管线化处理输入片段的阶段不限于以上所述的两个阶段。该回合计算引擎的管线化处理输入阶段可为两个或两个以上。
最后,虽然针对本发明的讨论目前只限于单一一个密码编译单元处理多个区块密码编译算法,在此需声明本发明可以包含多个平行密码编译单元,并与一微处理器中其它执行单元耦结。其中多个密码编译单元可以是分别处理不同区块算法。例如第一个单元负责处理高阶加密标准AES算法,第二个单元处理数据加密标准DES算法,等等以此类推。
需说明的是,以上所述只是本发明的具体实施例及所用的技术原理,根据本发明的说明书及图示所涵盖的精神及功能所作的变化,均应属于本发明的范围。

Claims (20)

1.一种微处理器内处理密码编译运算的装置,包括:
转译逻辑模块,用来接受密码编译指令,该指令指示需要进行的密码编译运算,转译逻辑模块负责将密码编译指令转译为一组微指令,指示需要做的子运算;
多个寄存器,其中含有密码编译运算所需要的数据,并在进行密码编译运算前将运算所需要的数据加载;
数据高速缓存,通过存储器总线与内存耦接并执行收到的指令;
加载逻辑模块,与数据高速缓存耦接,从数据高速缓存读取密码编译运算所需要的数据;
执行逻辑模块,与加载逻辑模块耦接,负责接收微指令并进行子运算;
储存逻辑模块,与执行逻辑模块和数据高速缓存耦接,提供输出多个对应文字片段并将输出文字数据分送至内存储存;以及
写回逻辑模块,与储存逻辑模块耦接,在密码编译运算完成后写回寄存器的内容。
2.如权利要求1所述的装置,其中该密码编译运算包含:
一加密运算,对多个片段的明文加密,变成多个密文片段;以及
一解密运算,对多个片段的密文解密,变成多个明文。
3.如权利要求1所述的装置,其中密码编译指令指示该密码编译运算中所使用的片段编译模式,用以对多个文字片段进行多种密码编译运算的一种密码编译运算。
4.如权利要求3所述的装置,其中片段编译模式选自于由电子书码模式、编辑方块连锁模式、编码反馈模式以及输出反馈模式所组成的模式中的一种。
5.如权利要求1所述的装置,其中密码编译指令间接指向微处理器内的多个寄存器。
6.如权利要求5所述的装置,其中所述多个寄存器包含:
一第一寄存器,其中含有第一个指针指向第一个内存位置,该第一个内存位置是多个输入文字片段中第一个文字片段的位置;
一第二寄存器,其中含有第二个指针指向第二个内存位置,该第二个内存位置是内存中储存多个输出文字片段的位置,这些输出文字片段是输入文字片段经过密码编译运算的结果;
一第三寄存器,其中表明输入文字片段的总数;
一第四寄存器,其中第四寄存器的内容包含了第三个指针,指向第三个内存位置,这个内存位置是密码编译金钥在内存中的位置;
一第五寄存器,其中第五寄存器的内容包含了第四个指针,指向第四个内存位置,这个内存位置是初始化向量在内存里的位置;
一第六寄存器,其中第六寄存器的内容包含了第五个指针,指向第五个内存位置,这个内存位置是控制字符的位置,此控制字符是密码编译参数之一。
7.如权利要求6所述的装置,其中密码编译金钥数据包含一密码金钥、一金钥程序表以及加密/解密字段,组态指示密码编译运算进行加密或解密动作。
8.如权利要求1所述的装置,其中执行逻辑模块包含:
一密码编译单元,其接收第一组多个微指令,对多个输入文字片段分别执行多个回合的密码编译指令,产生多个输出文字片段,其中多个密码编译回合由密码编译单元中控制字符控制。
9.如权利要求8所述的装置,其中密码编译单元包含:
区块密码逻辑模块,其对多个输入文字片段分别进行多个回合的密码编译运算,产生多个对应的输出文字片段,以及金钥随机存取内存,与区块密码逻辑模块运作上耦接,其储存金钥程序表,此金钥程序表包含了多个回合的金钥,分别与多个密码编译回合对应,提供区块密码逻辑模块多个金钥以完成多个密码编译回合。
10.如权利要求9所述的装置,其中区块密码逻辑模块被分割为二个或二个以上的阶段,同时向二个或二个以上多个文字输入片段进行密码编译。
11.如权利要求8所述的装置,其中执行逻辑模块还进一步包含:
一整数单元,与密码编译单元平行耦接,接收第二组多个微指令,并执行密码编译运算所需执行的多个整数运算。
12.如权利要求8所述的装置,其中微指令包含:
一第一组微指令,指示密码编译单元分别加载多个输入文字和进行多个密码编译回合。
13.一种在微处理器内执行密码编译运算的方法,包含:
接收一个密码编译指令,其中密码编译指令指定至少一个密码编译运算动作,以及执行被指定的密码编译运算;
遵照AES算法完成密码编译运算;
将第一组多个连续微指令分送至密码编译单元;以及
在密码解译单元内,对多个输入文字片段做多个回合的密码编译,产生对应的多个输出文字片段,其中多个密码编译回合由密码编译单元中控制字符控制。
14.如权利要求13所述的方法,其中所述的接收一个密码编译指令还包含:
指定一项加密的密码编译运算动作,其中加密运算包含了将多个明文片段加密,产生多个加密文字片段;
指定一项解密的密码编译运算动作,其中解密运算包含了将多个加密片段解密,产生多个明文文字片段;
在密码编译指令中指定密码编译运算所使用的区块解密模式;
密码编译指令说明一项要对多个文字片段进行的密码编译运算;
间接读取微处理器中多个寄存器。
15.如权利要求1 4所述的方法,其中所述的区块解密模式包含电子书码模式、编辑方块连锁模式、编码反馈模式以及输出反馈模式。
16.如权利要求14所述的方法,其中所述的间接读取还包含:
读取一第一寄存器,其中第一寄存器的内容含有第一个指针,指向第一个内存位置,此第一个内存位置是多个输入文字片段中第一个文字片段的位置;
读取一第二寄存器,其中第二寄存器的内容含有第二个指针,指向第二个内存位置,此第二个内存位置是内存中储存多个输出文字片段的位置,这些输出文字片段是输入文字片段经过密码编译运算的结果;
读取一第三寄存器,其中第三寄存器的内容含有输入文字片段的总数;
读取一第四寄存器,其中第四寄存器的内容包含了第三个指针,指向第三个内存位置,这个内存位置是密码编译金钥在内存中的位置;
读取一第五寄存器,其中第五寄存器的内容中包含了第四个指针,指向第四个内存位置,这个内存位置是初始化向量在内存里的位置;
读取一第六寄存器,其中第六寄存器的内容中包含了第五个指针,指向第五个内存位置,这个内存位置是控制字符的位置,此控制字符是密码编译参数之一,在此,该控制字符可以被用来指定至少一所述密码编译运算中所使用的至少一密码编译参数。
17.如权利要求16所述的方法,其中密码编译金钥数据包含一密码金钥以及一金钥程序表。
18.如权利要求13所述的方法,其中对多个输入文字片段做多个回合的密码编译步骤还包含:
在密码编译单元内储存一金钥程序表,其中此金钥程序表包含了多个回合的金钥,分别与多个密码编译回合对应;
使用多个回合的金钥来为区块密码逻辑完成多个密码编译回合。
19.如权利要求13所述的方法,还包含:
将第二组多个连续的微指令分送至与密码编译单元平行耦接的整数单元内,然后执行密码编译运算所需执行的多个整数运算。
20.如权利要求13所述的方法,还包含:
转译密码编译指令为一组微指令,指示所述执行部分需要做的子运算。
CNB2004100351856A 2003-09-29 2004-04-30 微处理器区块密码编译方法与装置 Expired - Lifetime CN1332526C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/674,057 2003-09-29
US10/674,057 US7321910B2 (en) 2003-04-18 2003-09-29 Microprocessor apparatus and method for performing block cipher cryptographic functions

Publications (2)

Publication Number Publication Date
CN1538656A CN1538656A (zh) 2004-10-20
CN1332526C true CN1332526C (zh) 2007-08-15

Family

ID=34376785

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100351856A Expired - Lifetime CN1332526C (zh) 2003-09-29 2004-04-30 微处理器区块密码编译方法与装置

Country Status (2)

Country Link
CN (1) CN1332526C (zh)
TW (1) TWI247241B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101882192B (zh) * 2009-05-08 2012-08-22 晨星软件研发(深圳)有限公司 电路保护装置、电路保护方法及电路保护层

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9753863B2 (en) * 2014-12-27 2017-09-05 Intel Corporation Memory protection with non-readable pages
CN104679479B (zh) * 2015-03-12 2017-10-24 中国人民解放军信息工程大学 一种基于任务编号的调度控制机制的多核密码处理器
CN106250099A (zh) * 2016-07-18 2016-12-21 青岛大学 一种固定解密算法的直接执行已加密指令的处理器架构
CN117668326B (zh) * 2024-01-30 2024-04-30 深圳柯赛标识智能科技有限公司 智慧标识的数据处理方法、系统和设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6118870A (en) * 1996-10-09 2000-09-12 Lsi Logic Corp. Microprocessor having instruction set extensions for decryption and multimedia applications
CN1309351A (zh) * 2000-02-14 2001-08-22 株式会社东芝 抗干预微处理器
CN1431584A (zh) * 2002-08-22 2003-07-23 智慧第一公司 延伸微处理器数据模式的装置及方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6118870A (en) * 1996-10-09 2000-09-12 Lsi Logic Corp. Microprocessor having instruction set extensions for decryption and multimedia applications
CN1309351A (zh) * 2000-02-14 2001-08-22 株式会社东芝 抗干预微处理器
CN1431584A (zh) * 2002-08-22 2003-07-23 智慧第一公司 延伸微处理器数据模式的装置及方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101882192B (zh) * 2009-05-08 2012-08-22 晨星软件研发(深圳)有限公司 电路保护装置、电路保护方法及电路保护层

Also Published As

Publication number Publication date
TWI247241B (en) 2006-01-11
CN1538656A (zh) 2004-10-20
TW200512648A (en) 2005-04-01

Similar Documents

Publication Publication Date Title
CN1655496B (zh) 产生密码钥匙排程的装置及方法
US7321910B2 (en) Microprocessor apparatus and method for performing block cipher cryptographic functions
EP1596530B1 (en) Apparatus and method for employing cryptographic functions to generate a message digest
EP1538510B1 (en) Microprocessor apparatus and method for performing block cipher cryptographic functions
US7532722B2 (en) Apparatus and method for performing transparent block cipher cryptographic functions
EP1519509B1 (en) Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine
US7392400B2 (en) Microprocessor apparatus and method for optimizing block cipher cryptographic functions
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
CN1332526C (zh) 微处理器区块密码编译方法与装置
US7542566B2 (en) Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
CN1661958B (zh) 区块密码功能的微处理器及方法
US7519833B2 (en) Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine
CN1658548B (zh) 配置密码引擎资料区块的微处理器及方法
US7529367B2 (en) Apparatus and method for performing transparent cipher feedback mode cryptographic functions
CN100463392C (zh) 执行组态区块密码编译演算法的微处理器装置和方法
CN1652163B (zh) 执行通透性输出反馈模式密码功能的方法及装置
CN100539495C (zh) 可设定密码金钥大小的微处理器装置及方法
CN100527664C (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