CN1558591A - 重组透明化区块密码编译方法及装置 - Google Patents
重组透明化区块密码编译方法及装置 Download PDFInfo
- Publication number
- CN1558591A CN1558591A CNA2004100590645A CN200410059064A CN1558591A CN 1558591 A CN1558591 A CN 1558591A CN A2004100590645 A CNA2004100590645 A CN A2004100590645A CN 200410059064 A CN200410059064 A CN 200410059064A CN 1558591 A CN1558591 A CN 1558591A
- Authority
- CN
- China
- Prior art keywords
- cryptographic
- computing
- block
- register
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 91
- 230000006870 function Effects 0.000 title description 14
- 230000015654 memory Effects 0.000 claims description 73
- 239000012634 fragment Substances 0.000 claims description 37
- 230000009471 action Effects 0.000 claims description 34
- 239000013598 vector Substances 0.000 claims description 22
- 238000004364 calculation method Methods 0.000 claims description 18
- 230000009183 running Effects 0.000 claims description 17
- 238000012546 transfer Methods 0.000 claims description 11
- 230000008859 change Effects 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 6
- 238000012423 maintenance Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 description 34
- 238000013519 translation Methods 0.000 description 22
- 238000003860 storage Methods 0.000 description 20
- 238000013478 data encryption standard Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 15
- 230000015572 biosynthetic process Effects 0.000 description 14
- 238000005755 formation reaction Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 13
- 238000007667 floating Methods 0.000 description 9
- 238000000605 extraction Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 101710164820 Flotillin-2 Proteins 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000002950 deficient Effects 0.000 description 4
- 101710164822 Flotillin-1 Proteins 0.000 description 3
- 238000000429 assembly Methods 0.000 description 3
- 230000000712 assembly Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 239000007795 chemical reaction product Substances 0.000 description 2
- 239000012467 final product Substances 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000008521 reorganization Effects 0.000 description 2
- 101100381510 Mus musculus Bcl10 gene Proteins 0.000 description 1
- 241001441724 Tetraodontidae Species 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 210000000262 cochlear duct Anatomy 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000013101 initial test Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000013152 interventional procedure Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000036651 mood Effects 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
Images
Landscapes
- Storage Device Security (AREA)
- Input From Keyboards Or The Like (AREA)
Abstract
本发明涉及一种用以对处理器内的数个输入数据区块,执行密码运算的方法及装置。在一实施例中,提出一种用以执行密码运算的装置。此装置包括密码编译指令及执行逻辑器。密码编译指令由计算装置来接收,其为属于微处理器执行的指令流程中的一步骤,其中该密码指令指示微处理器进行一个特定的密码编译运算。执行逻辑器运作上耦接至密码编译指令,组态为用以执行该密码编译指令的该密码编译运算,其中该密码编译运算包括该密码编译运算是否已由一中断事件所中断。
Description
技术领域
本发明涉及一种微电子的领域,尤其涉及一种在微处理器或其它装置中执行重组透明化区块密码编译运算的方法及装置。
背景技术
早期计算机系统间的作业都是独立作业的,因为跑一个应用程序所需要的输入数据是内建于早期的计算机系统内或是由软件工程师在程序运行时输入。应用程序执行后产生的输出数据则通常是以白纸黑字的打印方式呈现,或者是以一个文件的型式被写入磁带、硬盘或是其它属于计算机系统一部份的储存装置中。这个输出的文件可以接着被下一个在同一个计算机系统中执行的应用程序当作输入文件使用或者如果这个文件是被存入一个可以被移动式的储存接口,它就能被其它不同但兼容的计算机系统中的应用软件使用。这些早期的系统对保护敏感的数据已有认知。其中一样数据保密措施,密码编译应用软件也被开发出来保护敏感的数据以免未经许可的被公开。这些密码编译软件通常把储存装置上的文件做加密或解密的动作。
多年后,使用者们才发现通过网络联机多台计算机来分享数据的这个优势。所以,网络架构、操作系统、数据传送协议也相对的发展。至今,除了能支持数据分享之外,它们所提供的附加功能也很显要。例如说,现在的使用者使用一个计算机工作台去取得另一个工作台上或另一个网络服务器上的文件,通过因特网取得新闻和其它数据,与其它数百台不同的计算机传送与接收电子信息,如电子邮件,或是连接供货商的计算机系统提供信用卡或是银行数据来购买物品,或是在餐厅、机场和其它公共场所通过无线网络来做上述的动作,已经习以为常了。所以保护敏感数据的传输也变的非常的重要。使用者通过计算机所传出去的数据需要保护的频率也日已遽增。新闻头条常揭发给社会大众滥发邮件,黑客,身分盗用,反向工程,IP(InternetProtocol)位置欺伪和信用卡诈欺等计算机数据安全问题。这些侵害隐私的动作的背后动机有时是纯属意外的无心之过,有时则是深思熟虑的网络恐怖攻击行动。相关单元以制定新法律,严格执行规范和教育大众等行动来响应。但是至今这些动作都还是无法成功杜绝侵害计算机数据的浪潮。从前只让政府,金融机构,军方和情报单元忧心的问题已经变成每一位在家检查电子邮件,使用网络银行服务的老百姓最担心的问题之一了。
信息安全这个领域中一项将数据加密,并只提供特定人士译码方式的保护技巧就是密码编译学。在保护计算机对计算机间数据的传输上,密码编译通常是采用将敏感数据(又称为明文,plaintext或cleartext)转成无法辨识的型式(又称为密文,ciphertext)。将明文转换成密文的程序被称为“加密”(encryption、enciphering或ciphering),而将密文转回明文的程序则被称为“解密”(decryption、deciphering或inverse ciphering)。
在密码编译这个领域中,几项方式和协议被开发出以便使用者不需要有太多密码编译知识或是花太多力量便能将数据以加密过的型式送出给不同的使用者。除了加密的数据之外,使用者通常会提供收件者一个用来解密的”密码密钥”。密码密钥让接收者能复原加密数据或者取得未加密的原始数据。以上所述的步骤,通常是通过密码保护,数学算法和加密解密的应用程序等方法为敏感数据加密和解密。
目前有很多种类型的算法被应用于数据的加密解密上。某个类型中的一个算法(如公开密钥加密算法,为RSA Rivest-Shamir-Adelman算法类之一)用了两个密钥(cryptographic key),一个公开密钥(Public Key)和一个私有密钥(private key)用来加密或解密。根据一些公开密钥算法则,接收者的公开密钥是由寄出者用来将数据加密以便送给接收者的。因为使用者的公开和私有密钥间有某种特定的数学关系,接收者一定要用私有密钥来解开收到的数据,还原原本的数据。虽然此类的加密算法受到广泛的使用,但是它处理加密和解密的速度十分的慢,就连处理小量的数据都十分的慢。还有一类算法,称作对称密钥加密算法(symmetric key algorithms),不但有与第一类算法同等级的数据保密性,而且执行的速度快上许多。这类算法会叫做对称密钥加密算法的原因就是它是用同一组加密编译钥来加密和解密。目前主要有三种单一密钥加密算法(single-key cryptographic algorithms):数据加密标准(DataEncryption Standard,DES),三度数据加密标准(Triple Data EncryptionStandard,Triple-DES)和高阶加密标准(Advanced Encryption Standard,AES)。因为这些算法的保护强度,现在美国政府的相关单元都采用这三种算法来保密数据。相信不久的将来,这其中一项或一项以上也会成为商业和私人交易中使用的标准。根据这些对称密钥加密算法则,明文和密文都被裁成一定大小的区块以进行加密和解密。例如高阶加密标准(AES)对128位大小的区块进行加密,并使用128、192和256位大小的加密编译钥。
所有的对称密钥加密算法(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),电子密码本(electronic code book,ECB),加密反馈模式(cipher feedback mode,CFB)和输出反馈模式(output feedback mode,OFB)。其中有些模式需要一个另外的初始化向量(initialization vector)才能进行次项运算,有些则是会将第一组加密编译后的密文加入第二组明文加密的运算中。若深入探讨每一个密码编译算法和当下对称密钥加密算法中每个次项运算步骤则就已超出本发明应用的范围了。关于数据加密标准DES和三度数据加密标准Triple-DES详细的实施规范探讨,读者们可以参考1999年10月25日的Federal InformationProcessing Standards Publication 46-3(FIPS-46-3),2001年11月26日的Federal Information Processing Standards Publication 197(FIPS-197)中则有AES详细的探讨。上述的刊物都是由National Institute of Standards andTechnology(NIST)所发行编译的,在此附为参考读物,所涵盖的近乎范围。除了这些刊物外,NIST的Computer Security Resource Center(CSRC)网站http://csrc.nist.gov/内也提供单元教学、白皮书、toolkits和相关文章等。
本领域的技术人员应该都了解计算机系统上有很多软件都能用来执行密码编译的动作(也就是加密和解密)。事实上,有些操作系统(例如微软窗口XP,Linux)通过密码编译基元(cryptographic primitives),密码编译应用软件接口(cryptographic application program interface)和其它类似接口提供直接加密/解密服务。但是现今计算机编译密码技巧上在多方面有许多缺陷。请参考图1,图中标示出这些缺陷,以下将探讨这些问题。
图1为公知计算机密码编译应用的方框图。方框图1显示了第一台计算机101连接到局域网络105、另外连接到局域网络105的还有第二台计算机102、网络文件储存装置106、第一个路由器107或是以其它形式的接口,比如说网络,连接至广域网络110(wide area network,WAN),和一个无线网络路由器108,例如符合IEEE 802.11规范的无线路由器。
在广域网络110(wide area network)另一端接的是第二个路由器111,用来提供与第三台计算机103的接口。
如前文所述,现今使用者在一般使用计算机时会需要保密计算机数据的时候越来越频繁。例如说,在操作系统控制之下,第一台计算机101的使用者可能同时进行多样工作,而每样工作都需要密码编译作业。第一台计算机101的使用者需要执行应用程序112来加密/解密(通过操作系统服务或者是操作系统行使的)将一个文件存入网络文件储存装置106。在储存文件的同时,使用者也可能将加密过的信息传给第二台计算机102的使用者,这个动作将也需要应用程序112执行加密和解密的工作。加密传出的信息有可能是实时的(例如实时信息)或不是实时的(例如电子邮件)。另外,使用者可能是在第三台计算机103上通过广域网络110在存取个人的金融数据(例如信用卡卡号、金融交易等)或是其它重要数据。第三台计算机103也可代表一个家庭办公室或是远程计算机103,其中第一台计算机101的使用者不在办公室内,则可以使用广域网络110来存取局域网络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密码编译作业方式与较早期微处理器内处理浮点运算单元还没成立专门处理单元前是很像的。早期的浮点运算是由软件处理,所以执行速度很慢。密码编译通过软件处理的速度也是很慢。随着浮点运算的技术演进,浮点运算指令被整合入中央处理器的辅助处理器。虽然加入浮点数辅助处理器使得整个系统的价格升高,但是处理浮点数的速度比软件快上许多。现在也有密码编译的中央处理器辅助处理硬件,大多是通过并行端口或其它总线接口(如通用性串行总线)插卡式或是外挂式装置。此类的中央处理器的辅助处理器可缩短计算机系统密码编译的工作处理时间。但除了增加系统的价格和耗电量之外,不但整个系统的稳定度降低,数据安全性成为考虑,因为辅助处理器的和微处理器并不存在同一个芯片上,所以它们之间的连接管道可能被窃听。
因此一个内建于微处理器中的密码编译硬件是必要的。这个硬件应让应用软件只需发一个指令便能完成密码编译。发明者认为这种硬件能减少介入计算机操作系统的必要。理想中此发明能提供应用软件执行密码编译指令的优先权,除了需要与目前市面上较普遍的微处理器架构兼容,还要能支持较老旧的操作系统和应用软件,更要有防止窃听机制。此硬件应该支持多种不同的密码编译算法,且能够认证和测试硬件上的密码编译算法。此发明需要能够切换本身运作模式,例如允许使用者选择提供自己的密钥或选择由硬件发行密钥及支持切换不同大小的数据片段及密钥大小。最后,此硬件所使用的加密/解密模式应该都可以被选择,例如是否用电子密码本(electronic codebook,ECB),加密块链模式(cipher block chaining mode,CBC),加密反馈模式(cipher feedback mode,CFB)或输出反馈模式(output feedback mode,OFB)做密码编译。
发明内容
本发明的目的为解决先前技术上面临的问题,提供一个优秀的微处理器内建密码编译技术。
为了实现上述目的,本发明提供一种用以执行密码编译运算的装置,包括:一密码编译指令,由一计算装置来接收,其为属于微处理器执行的指令流程中的一步骤,其中该密码指令指示微处理器进行一个特定的密码编译运算;以及执行逻辑器,运作上耦接至该密码编译指令,组态为用以执行该密码编译指令的该密码编译运算,其中该密码编译运算包括:显示该密码编译运算是否已由一中断事件所中断。
本发明还提供一种用以执行密码运算的装置,包括:一密码编译单元,位于一装置内,组态为接收属于一指令流程内的一密码编译指令,并用以响应执行该密码指令指示微处理器进行的一个特定的密码编译运算;以及一位,位于一寄存器内,运作上耦接至该密码编译单元,组态为用以显示该密码编译运算是否已由一中断事件所中断。
本发明又提供一种执行装置内的密码运算的方法,该方法包括有:响应于所接收的一密码编译指令,而执行该密码编译指令指定的一密码编译运算;以及显示在执行该密码编译运算期间,是否已发生一中断事件。
也就是说,一实施例中本发明是一个微处理器内密码编译的装置。装置内包含了密码编译指令及执行逻辑器。密码编译指令由一计算装置来接收,做为用以在该计算装置上执行的一指令流程的一部份,其中此密码编译指令用以指定进行这些密码编译运算中的一个。执行逻辑器运作上耦接至该密码编译指令,以执行该密码编译指令所指定的密码编译运算。该指定的密码编译运算包括显示该指定的密码编译运算是否已由中断事件所中断。
本发明的一实施例为一个处理密码编译程序的微处理器装置,此装置包括位于一装置内的密码单元,以及位于一寄存器内的一位。密码单元响应一被该装置接收的指令流程内的一密码编译指令,以执行该密码编译指令所指定的该密码编译运算。在寄存器内的该位在运作上耦接至该密码单元。此位用以显示该指定的密码编译运算的执行已由中断事件所中断。
本项发明又一实施例为一个在微处理器中执行密码编译的方法。这个方法包括了响应一密码编译指令,而执行该密码编译指令所指定的一密码编译运算;以及显示在此执行期间是否已发生中断事件。
配合以下的说明以及附图,本发明的其它目的、特性、以及优点将可更深入作一了解。
附图说明
图1描述公知密码编译应用的方框图。
图2描述计算机系统执行密码编译的方框图。
图3为根据本发明一处理密码编译运算的微处理器装置的方框图。
图4为根据本发明一独立密码编译指令集的方框图。
图5为根据本发明一区块解密模式字段值的对照表。
图6是根据本发明X86兼容微处理器内密码编译单元的方框图。
图7是根据本发明密码编译指令中包含字段的示范图,此指令指示图6中微处理器进行密码编译相关的次项运算。
图8是根据本发明XLOAD微指令中寄存器字段值和运算动作的对照表,XLOAD微指令的格式如图7所示。
图9是根据本发明XSTOR微指令中寄存器字段值和运算动作的对照表,XSTOR微指令的格式如图7所示。
图10是根据本发明一个控制字符格式的例子。控制字符指示密码编译运算的密码编译参数。
图11是根据本发明密码编译单元的方框图。
图12是根据本发明AES区块解密逻辑器的方框图。
图13为本发明的一流程图,其描述一用以保持中断事件期间的密码参数状态的方法。
图14为本发明的一流程图,其描述在存在一个或多个中断事件时,对数个输入数据区块,执行一特定密码编码运算的方法。
其中,附图标记说明如下:
101、102、103计算机工作站 104笔记型计算机
105局域网络 106储存装置
107第一个路由器 108无线路由器
109无线网络 110广域网络
111第二个路由器 112加密/解密软件
201微处理器 202操作系统
203应用程序存储区 204产生密钥的软件
205密钥程序表 206加密软件
207解密软件 208初始化向量
209密码编译参数 210明文
211密文
301微处理器 302、322 XCRYPT指令
303转译逻辑器 304微指令队列
305、306微指令 307寄存器文件
308、309、310、311、312、313寄存器
314加载逻辑器 315数据高速缓存
316密码编译单元 317储存逻辑器
318写回逻辑器 319内存总线
320操作系统 321系统内存
323控制字符 325初始化向量
324初始化密钥/密钥程序表 326输入文字
327输出文字
400密码编译指令 401选择性前置字段
402重复前置字段 403运算码字段
404区块解密模式字段
500区块密码字段值与微处理器运算动作对照表
600微处理器
601提取逻辑器 602转译逻辑器
603转译器 604微指令码只读存储器
605寄存器阶段 606地址阶段
607加载阶段 608执行阶段
609、611、613、615微指令队列
610整数单元 612浮点单元
614 MMX单元 616 SSE单元
617密码编译单元 618储存阶段
619写回阶段 620加载总线
621闲置信号 622储存总线
624 EFLAGS寄存器 625 X位
626中断逻辑器 627微指令
628 MSR寄存器 629 E位
630 FCR寄存器 631 D位
632执行逻辑器 623总线
700微指令 701微运算码字段
702数据寄存器字段 703寄存器字段703
800 XLOAD值对照表 900 XSTOR值对照表
1000控制字符 1001 RSVD字段
1002密钥大小的KSIZE字段 1003加密/解密E/D字段
1004中间结果IRSLT字段 1005密钥产生KGEN字段
1006算法ALG字段 1007回合数计数RCNT字段
1100密码编译单元 1101区块解密逻辑器
1102密钥随机存取内存 1103微程序码寄存器
1104控制字符寄存器
1105 input-0寄存器 1106 input-1寄存器
1107 key-0寄存器 1108 key-1寄存器
1109 output-0寄存器 1110 ouput-1寄存器
1111加载总线 1112储存总线
1113停止信号 1114微指令总线
1200 AES算法区块解密逻辑器
1201微指令寄存器 1202 CW寄存器
1203 KEY-0寄存器 1204 KEY-1寄存器
1205 IN-0寄存器 1206 IN-1寄存器
1207 OUT-0 1208 OUT-1
1210回合计算引擎控制器 1211加密/解密总线
1212 RNDCON总线 1213密钥总线
1214密钥产生信号 1215、1216、1217总线
1218 NEXTIN总线 1220回合计算引擎
1221第一密钥XOR逻辑器 1222寄存器REG-0
1223 S-Box逻辑器 1224移列逻辑器
1225寄存器REG-1 1226混栏逻辑器
1227寄存器REG-2
具体实施方式
以下内容将参考图2延续的前密码编译运算的相关技术背景以及其缺陷探讨。接下来请参照图3至图14。本发明提供了一个效能和机制优越的装置和方法来执行密码编译运作。此发明降低介入操作系统的必要性。除此之外,此发明也满足了其它要求,如独立完整性,与老旧架构兼容性,运算法及模式切换性,黑客抵御性,以及可测试性。
现在请看图2,图2描绘的是现今计算机系统执行密码编译的方框图。图2内包含了一个微处理器201,这个微处理器201负责从系统内存中应用程序存储区203中取得与应用程序相关的指令和存取相关的数据。应用程序存储区203中的软件控制和数据存取机制通常都是由系统存储中操作系统202处理。操作系统202被存放在系统存储中受到保护的区块中。如前文中描述,一个应用程序在执行中需要做译码编译的动作时(例如说一个电子邮件程序或是储存文件的软件),必须通知微处理器201,然后由微处理器201完成一连串数量庞大的指令才能完成密码编译。这些指令有些是这个执行中应用程序内的子程序,有些是连接到这个执行程序的软件插件程序,或者也有可能是操作系统202所提供的服务。无论这些指令源自何处,都位在内存中一个特定的区域中。为方便讨论,内存中这些不同区域的片段图中都被包在应用程序存储区203内。应用程序存储区203中还包含了一个产生密钥的软件204。这个密钥产生软件通常负责产生和接受密钥的工作,也将密钥展开成密钥程序表205。如果使用的加密模式需要,加密软件206会去读取初始化向量208。加密软件执行内部指令来完成明文加密的动作,最后输出密文211。解密的流程大致上是一样的,当需要解读一段密文时,解密软件207被呼叫。解密软件207执行特定的指令来取得密文211,密钥程序表205以及密码编译参数209。其中密码编译参数209能提供密码编译的详细细节。如果使用的解密模式有需要,解密软件207会去读取初始化向量208并执行那里面的指令来完成密文解密的动作,输出明文210。
加密,解密和产生密钥的动作应该可以用更少的指令就完成。之前提出由FIPS出版的规范中便有提供几个不同的伪码来预估完成一项简单密码编译工作微电脑处理器所需要执行的指令数量。而现在使用的技术所需处理编译密码的指令数量高达上百个以上。除此之外,从那些执行中的应用软件(文件管理,简讯,电子邮件,远程文件存取,信用卡交易软件)的角度来看,执行这些密码编译既不是软件本身主要的用途,而且又十分耗时。甚至会使软件的使用者错觉应用软件不够有效率。若加密软件206,解密软件207是软件插件的架构,则情况会更糟,因为计算机操作系统的工作项目又增加了支持呼叫和管理加密软件206,解密软件207软件。操作系统必须支持中断、例外等其它状况。除此之外,计算机系统上每一个同时正在进行的密码编译都会需要在应用程序存储区203内安排一些空间给产生密钥的软件204,加密软件206和解密软件207,而且未来微处理器201所需处理的密码编译工作数量只会有增无减。
发明者鉴于现今计算机系统处理密码编译的这个缺陷,体会需要一个内建微处理器,并能改善密码编译处理速度的装置及方法的必要性。此单元通过一个单一的密码编译指令便启动编译程序。关于此发明,我们将参照图3至图12来做更深入的解释。
现在请看图3,图3是依照本发明原理的微处理器密码编译运算装置方框图。图3显示微处理器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的构成可以是一个逻辑器,电路,装置,微指令码(就是微指令或原生指令)或是一个逻辑器,电路,装置,微指令码或其它可以达到同样功效组件的结合,处理密码编译。构成密码编译逻辑器316组件可以是和微处理器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、317、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传到提取逻辑器内。当然,软件里还会有其它指令指示微处理器301先将内存321中323-327的密码编译控制字符323,初始化密钥或密钥程序表324,初始化向量325(若需要的话)。等着被处理的输入文字326和输出文字327会被复制至对应的寄存器323-327中。此初始化寄存器308-312的动作一定要在执行XCRYPT指令322前完成。因为执行XCRYPT指令322时会用到寄存器308-312中所有的数据。另外还有一个寄存器,一个负责纪录输入文字有几个片段还需要被加密/解密的寄存器。转译逻辑器303从提取逻辑器取得指令,转译成对应的微指令,指示微处理器301完成密码编译运算。微指令305-306中的第一个指令会指示密码编译单元316将数据从加载逻辑器加载,然后开始执行指定次数的密码编译。执行完成的结果的输出文件会通过数据高速缓存315存入内存321中的储存逻辑器317的文字327区。第二组数个的指令(未显示)指示微处理器301内其它执行单元(未显示)。非架构寄存器通常包含临时结果和计数器更新输入和输出指针寄存器311-312。若有应用到初始向量寄存器的更新数据。其中一实施例便是寄存器308-313为架构寄存器。
一实施例中,密码编译单元316被分为数个阶段,允许连续的输入文字326片段被管线化。
图3所显示的组件为解释本发明的必要组件。许多现今的微处理器301内部的逻辑器没有在图3内中显示。本领域技术人员会发现,为了能清楚说明发明,许多微处理器301内包含的逻辑器在图3中都被简化了。这是为了方便叙述。如加载逻辑器314可以包括一个地址产生步骤,接者一个高速缓存接口阶段。然后再接着一个高速缓存对齐阶段。但是有一点很重要,本发明对数个输入文字326片段进行密码编译,操作系统只要通过单一个指令便能完成。本发明始密码编译工作的细节动作完全透明化,而且和微处理器301内其它执行逻辑器同时进行运算。密码编译单元316和相关的XCRYPT指令322运作完全和现今较老旧操作系统运算兼容。
现请参考图4,这是密码编译指令的方框图。密码编译指令400包含了一个前置字段401,一个重复前置字段402,一个运算码字段403,一个区块解密模式字段404。一实施例中,字段401-404的内容与x86指令结构兼容。
运算时,许多指令集结构都采取加入了一个选择性的前置字段401。此字段内容用来指示处理器开启或关闭一些运算功能。例如直接作16位或20位运算的功能和直接处理或存取特定片段的功能等。重复前置字段402的内容代表密码编译动作需要被重复执行的次数。重复前置字段402也隐含地指示符合的微处理器,使用其中当作指针器的数个架构性寄存器的内容,而送到包含完成指定密码运算所需的密码数据及参数的系统内存中的位置。如以上所提及,在x86兼容的实施例中,重复前置字段402的值为0xF3。并且,根据x86架构协议,密码编译指令的形式与x86重复字符串指令(如RFP.MOVS)非常类似。例如,当由本发明的x86兼容微处理器实施例来执行时,重复前置字段隐含地涉及储存于架构性寄存器ECX中的可变区块计数、储存于寄存器ESI中的来源地址指针器(指向密码运算的输入数据)、以及储存于寄存器EDI中的目的地址指针器(指向内存中的输出数据区)。在x86相容实施例中,本发明进一步会将传统的重复字符串指令概念延伸至进一步地涉及储存于寄存器EDX中的控制字组指针器、储存于寄存器EBX中的密码密钥指针器、以及储存于寄存器EAX中的初始化向量的指针器(若借助预定密码模式所需要的话)。
运算码字段403指微处理器去执行控制字符指示的密码编译运算,这个控制字符实际上是被存在内存内,一控制字指针指向控制字在内存中的位置。运算码的值会被设定为一个现有指令集内少用的值。如此一来,较老旧的操作系统及应用软件也能使用。例如说,一个x86兼容系统就可以将此值设为0x0FA7。区块解密模式字段404指示哪一项密码运算作业需被执行。请看图5。
图5是一个区块密码字段值与微处理器运算动作对照表例子。如图所示,若区块密码字段内的值为0xC8时,微处理器就会用电子密码本(ECB)模式来完成密码编译动作。当字段内的值为0xD0时,微处理器就会以加密块链(CBC)模式。OxE0表示微处理器应使用加密反馈模式(CFB),0xE8表示使用输出反馈模式(OFB)。以上所述各模式在FIPS文献中均有详细的描述。
请看图6。图6所要表现的是一个在X86兼容的微处理器600中的密码编译单元617的发明实施例。微处理器600内有一个提取逻辑器601。提取逻辑器601从内存(未显示)取得指令。转译逻辑器602由一个逻辑器,电路,微指令码(microcode)(就是微指令,micro instructions或原生码,nativeinstruction)装置或是其它可以将指令转成对照的微指令码的组件。转译逻辑器602内的转译组件可以与微处理器600内其它功能组件共享。如图所示,转译逻辑器602内包含了一个互相耦接的转译器603、微指令码只读存储器604和区段指针器逻辑器640。中断逻辑器626通过总线628耦接转译逻辑器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实施例中的其中一项是x86 EFLAGS寄存器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位625,以表示密钥数据及控制字组数据不再有效。在从中断中返回后,程控会立即转回到XCRYPT指令,以及如其对应的微指令的一部份,特定微指令会测试X位625的状态,以判断密钥数据及控制字组数据是否为有效。若如此,当中断发生时,会重复正进行处理的特定区块的输入数据的运算。若X位625的状态表示密钥数据及控制字组数据不再为有效,则会从内存中,重新加载伴随着正进行处理的特定区块的输入数据的密钥数据及控制字组。总之,根据本发明的XCRYPT指令的指令总是会涉及X位625的初始测试,以判断密码编译单元617内的密钥数据及控制字组数据的有效性。若密钥数据及控制字组数据不为有效,则密钥数据及控制字组数据会从内存中加载。然后,会加载借助输入指针寄存器的内容所指向的输入数据区块,并且会对输入数据区块执行预定密码运算。另外的方式是,会加载输入数据区块,并且不会先加载密钥数据及控制字组数据,而执行预定密码运算。
若产生新密钥数据或新控制字组,则在执行新XCRYPT指令之前,需要清除X位625。也会考虑到可使用相同的密钥数据及控制字组数据来执行连续的XCRYPT指令。在此种情况中,在加载初始密钥数据及控制字组数据之后,不需清除X位625。例如,为了与内存总线速度有关的最佳化目的,使用者可将例如是500个输入数据区块的加密/解密分解成5个XCRYPT指令,各自处理每一个的输入数据区块。
区块指针器逻辑器640可确信对应微指令会做安排,以允许用于指针寄存器,以及在处理中断627之前,更新对一序列输入文字区块的一序列区块密码运算的中间结果。区块指针器逻辑器640会指示将微指令插入对应微指令的流程,以至于在完成对第一区块的输入数据的密码运算时,内存中的输入及输出数据区块的指针器会修改成指向下个输入及输出数据区块。此外,区块指针器逻辑器640会指示将微指令插入对应微指令的流程,以修改区块计数器,以表示对目前区块的输入数据的密码运算已完成。再有,在使用区块密码器模式的事件中,当对紧接的区块数据执行密码运算时,需要使用起因于对目前区块的数据执行密码运算的数据,然后区块指针器逻辑器640也会指示将微指令插入对应微指令的流程,以保持或产生与保持起因于对目前区块的数据执行密码运算的数据在初始化向量所指定的内存的区域内,以至于在从中断事件返回后,对紧接的区块数据执行密码运算可持续下去。
请看图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的对照表。XSTORE指令指示密码编译单元将处理好的输出文字片段(加密过或解密过的)存到位置字段702所指示的内存内的位置。根据本发明,翻译逻辑器先产生一个XLOAD微指令加载一段输入文字,然后再发出XSTOR将该输入文字所产生的对应输出文字储存。寄存器字段703的值0b100指示密码编译单元提供内部寄存器output-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字段2002,一加密/解密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算法。其它应用不同密码编译算法的实施例,如RijndaelCipher,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-01107来储存这个密钥。若是密钥大小大于128位,则XLOAD会安排KEY-01107和KEY-11108来储存此密钥。如果加载的是一使用者产生密钥,接下来的XLOAD微指令会安排KEY-01107。每个密钥程序表中的密钥都会依序被排列在密钥随机存取内存1102中,以供每个密码编译回合中使用。接下来输入文字数据(若不需要初始化向量)会被加载IN-1寄存器1106。XLOAD中的一个微指令会指示IN-0寄存器1105将输入数据加载并且根据控制字寄存器1104中的内容,应用在IN-1寄存器或是在两个输入寄存器1105-1106内的初始化向量开始对寄存器内的数据进行密码编译工作。(如果输入数据被管线化)收到XLOAD微指令指定IN-0寄存器1005后,区块解密逻辑器便遵循控制字的内容开始进行密码编译。如果需要展开单一密码编译密钥,那么区块解密逻辑器便会产生密钥程序表内的每一把密钥,并且将它们存在密钥随机存取内存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/DEC 1211信号指示回合计算引擎进行加密(S-Box)或解密(反向S-Box)。RNDCON总线1212指示回合计算引擎进行第一AES回合或中级AES回合或是最后一回合的AES。GENKEY信号1214设定时代表回合计算引擎1220需要将从总线1213取得的密钥展开成密钥程序表。密钥总线1213也是用来提供密钥的,它会将每一回合所需要用的密钥提供给回合计算引擎1220。
回合计算引擎1220与第一个寄存器REG-0 1222耦接,内包含了第一密钥XOR逻辑器1221。第一个寄存器1222与S-Box逻辑器1223耦接。S-Box逻辑器1223与移列逻辑器1224(Shift Row logic)耦接。移列逻辑器1224与第二个寄存器REG-1 1225耦接。第二个寄存器REG-1 1225与混栏(MixColumn)逻辑器1226耦接。而混栏逻辑器与第三个寄存器REG-2 1227耦接。第一密钥逻辑器1221,S-Box逻辑器1223,移列逻辑器1224及混栏逻辑器1226作为执行名称相子程序运算。混栏逻辑器1226用途为对在进行中级密码运算回合中时加入的数据进行AESXOR运算,使用密钥总线1213所提供的回合密钥。当ENC/DNC状态指示进行解密时第一密钥逻辑器1221,S-Box逻辑器1223,移列逻辑器1224及混栏逻辑器1226也用来进行对应的逆AES子程序运算。本领域技术人员可以了解进行中级回合时数据会根据控制字符寄存器1202内容所指示的区块解密模式,将数据反馈至回合计算引擎1220。若需要初始化向量数据时,初始化向量会通过总线NEXTIN1218被传回回合计算引擎1220。
图12是一实施例。如图所示回合计算引擎被分割为两个阶段:REG-01222和REG-1 1225间的第一阶段和REG-1 1225和REG-2 1227间的第二阶段。中阶回合的数据被放在两个阶段中,配合时钟信号(位显示)移动。当密码编译运算完成一块输入数据,输出数据被存入对应的输出寄存器1207-1208。执行XSTOR微指令会使寄存器1207-1208将内含数据传送至储存总线(未显示)。
参照图13,所显示的流程图具有用以保持中断事件期间的密码参数的状态的根据本发明的方法的特性。当指令的流程借助根据本发明的微处理器来执行时,流程会从方框1302开始。指令的流程包括XCRYPT指令是不必要的,如在此所述。然后流程会继续进行判断方框1304。
在判断方框1304,会进行估算,以判断中断事件(例如,可屏蔽中断、不可屏蔽中断、分页错误、工作切换等)是否正发生,而需要将指令的此流程改变成指令的一种流程(“中断处理程序”),以处理中断事件,若如此,则流程会继续进行方框1306。若否,则指令执行的判断方框1304上的流程回路会持续,直到中断事件发生。
在方框1306,因为中断事件已发生,所以在程控转移到对应的中断处理程序之前,根据本发明的中断逻辑器会指示清除标记寄存器内的X位。清除X位可确信在从中断处理程序返回后,若区块密码器运算仍在进行,则其将显示发生一个或多个中断事件,并且在对由输入指针寄存器的内容所指示的此区块的输入数据,持续区块密码器运算之前,必须重新加载控制字组数据及密钥数据。然后,流程会继续进行方框1308。
在方框1308,包含对应于根据本发明的区块密码器运算的效能的指针器及计数器的所有架构性寄存器会储存到内存。本领域技术人员将了解到的是,架构性寄存器的储存为在控制转移到中断处理程序之前,通常会在目前数据计算装置中完成的动作。因此本发明利用目前数据架构的此种观点,来提供遍及中断事件的执行透明度。在寄存器储存之后,然后流程会继续进行方框1310。
在方框1310,程序流程会转移到中断处理程序。然后,流程会继续进行方框1312。
在方框1312,此方法会完成。本领域技术人员将了解到的是,在从中断处理程序返回后,图13的方法会再次从方框1302开始。
请看图14,所提供的流程图绘示根据本发明的方法出现一个或多个中断事件时,对数个输入数据区块,执行特定密码运算。
流程会从方框1402开始,其中,根据本发明的XCRYPT指令会开始执行。XCRYPT指令的执行会最优先执行,或由于中断事件的中断的执行,所以其可为紧接于最优先执行之后的执行,以致于在已执行中断处理程序之后,程控会转回到XCRYPT指令。然后流程会继续进行方框1404。
在方框1404,借助根据本发明的输入指针寄存器的内容所指示的内存中的一区块数据会从内存中加载,并且预定密码运算会开始。所使用的特定输入指针寄存器由指定的特定密码运算(例如,加密或解密),以及由指定的区块密码器模式(例如,ECB、CBC、CFB、或OFB)来决定。例如,若指定的加密运算使用OFB模式,则用来加载数据的输入指针寄存器为指示内存中的初始化向量的寄存器。若指定的解密运算使用ECB模式,则用来加载数据的输入指针寄存器为指示内存中的下个区块的密文的寄存器。然后,流程会继续进行判断方框1406。
在判断方框1406,会进行估算,以判断标记寄存器内的X位是否已设定。若X位已设定,则其表示目前加载于根据本发明的密码单元元内的控制字组及密钥清单为有效。若X位已清除,则其表示目前加载于密码单元内的控制字组及密钥清单为无效。如以上配合图13所提及的,当中断事件发生时,会清除X位。此外,如已所提及,当需加载新控制字组或密钥清单,或二者时,在发出XCRYPT指令之前,需执行清除X位的指令。在使用x86EFLAGS寄存器的位30的x-86兼容实施例中,X位可借助紧接于POPFD指令的PUSHFD指令来执行清除。然而,本领域技术人员将了解的是,在另外实施例中,必须使用其它指令来清除X位。若X位已设定,则流程会继续进行方框1412。若X位已清除,则流程会继续进行方框1408。
在方框1408,因为清除的X位已表示已发生中断事件,或已加载新控制字组及/或密钥数据,所以控制词会从内存中加载。在一实施例中,加载控制字组会阻止密码单元执行以上配合方框1404所提及的预定密码运算。在此范例的实施例中,方框1404中的开始密码运算可使借助假设使用目前加载的控制字组及密钥数据的多个区块密码器运算最佳化。因此,在判断方框1406中的检查X位的状态之前,会加载目前区块的输入数据,并且会开始密码运算。然后,流程会继续进行方框1410。
在方框1410,密钥数据(亦即,密码密钥或完整密钥程序表)会从内存中加载。此外,方框1404中所提及的输入区块会再次加载,并且会根据最新加载的控制字组及密钥程序表,而使密码运算开始。然后,流程会继续进行方框1412。
在方框1412,会产生对应于加载的输入区块的输出区块。然后,流程会继续进行方框1414。
在方框1414,若借助区块密码器模式及预定密码运算所需要,则会产生下个区块的输入数据。例如,在配置用于OFB加密的一实施例中,为了产生下个区块的输入数据,需要将目前产生的密文区块与目前区块的明文进行互斥或。执行此运算会产生用于下次区块运算的输入数据(亦即,用于第一输入区块之后的所有区块的“等效初始化向量”)。在此方框内所述的步骤需确信将允许随时会中断的XCRYPT指令的执行的状态。例如,在一实施例中,在XCRYPT指令的执行期间,分页错误随时会发生。因此,当已完成对目前输入数据区块的预定密码运算时,需要设定用以处理下个输入数据区块的等效初始化向量(若借助区块密码器模式所需要)。当借助使用的特定区块密码器模式所需要时,等效初始化向量会储存到借助初始化向量指针寄存器的内容所指示的位置的内存。然后,流程会继续进行方框1418。
在方框1416,产生的输出区块会存入内存。然后,流程会继续进行方框1418。
在方框1418,输入及输出区块指针寄存器的内容会改为指向下个输入及输出数据区块。此外,区块计数寄存器的内容会改为显示完成对目前输入数据区块的密码运算。在配合图14所讨论的实施例中,区块计数寄存器会减少。然而,本领域技术人员将了解的是,另外实施例会考虑区块计数寄存器的操控及测试,而也可使输入文字区块的执行管线化。然后,流程会继续进行判断方框1420。
在判断方框1420,会进行估算,以判断输入数据区块是否仍进行运算。在此实施例在此所具有的特性中,为了说明的目的,会估算区块计数器,以判断其是否等于0。若没有区块仍进行运算,则流程会继续进行方框1424。若有区块仍进行运算,则流程会继续进行方框1422。
在方框1422,会加载下个区块的输入数据,如由输入指针寄存器的内容所指示的。然后,流程会继续进行方框1412。
在方框1424,此方法会完成。
本领域技术人员将了解的是,配合方框1412、1414、1416、以及1418所讨论的步骤不必依序产生,而可无次序或并行地产生。
虽然本发明已以较佳实施例揭示如上。例如本发明目前实施例皆以x86架构作为基准,因为x86架构是一个较多人熟悉的架构,因此以x86架构讲述较方便。本发明也可以同样被应用在其它架构上,如PowerPC,MIPS,或其它指令集架构完全不同的系统上。
本发明可以应用于微处理器以外的计算机系统密码编译运算上。本发明所使用的指令模式可以轻易的被转换利用于别种微处理器以外的计算机处理系统上。本发明可以被包含于微处理器的周边芯片组内,如北桥,南桥,或是被制作成一个与微处理器相连,专门负责处理密码编译的密码编译微处理器。当微处理器看见密码编译相关的动作时就把工作交给这个密码编译微处理器。本发明可应用于嵌入式控制器,工业用控制器,信号处理器,阵列处理机,以及其它处理数据用的处理器内。本发明可被实现成一个只包含实施密码编译运算所需的必要原件,而成为一个低成本和低耗电量的密码编译运算执行器。例如通讯系统内处理加密/解密的处理器。为求明确起见其它的处理组件以上一概称微处理器。
另外,本发明至今虽都以128-位大小的区块考虑,但是其它不同大小的区块也能应用。只要将输入数据,输出数据,密钥和控制字符寄存器的大小做调整即可。
本发明目前应用范围虽然都属于较广泛应用的DES,Triple-DES和AES算法,但是较鲜为人知的区块密码模式,如MARS Cipher,Rijndeal cipher,Twofish cipher,Blowfish Cipher,Serpant Cipher和RC6 cipher,也都是本发明可能的应用范围。
虽然目前讨论范围都以区块密码编译算法和其算法相关技巧来表现本发明的密码编译功能,在此需声明本发明可以完全的被应用于其它密码编译算法上。只要是能够执行一密码编译运算,加密或解密,并且微处理器内包含一个专门在收到密码编译指令后进行密码编译功能即可。
另外,针对以上所讨论的回合计算引擎,但是该回合计算引擎中管线化处理输入片段的阶段不限于以上所述的两个阶段。该回合计算引擎的管线阶段可为两个或两个以上。
最后,虽然目前针对本发明的讨论目前限于单一个密码编译单元处理数个区块密码编译算法,在此需声明本发明可以包含多个平行密码编译单元,与一微处理器中其它执行单元耦结。其中数个密码编译单元可以是分别处理不同区块算法。例如第一个单元负责处理高阶加密标准AES算法,第二单元处理数据加密标准DES算法等等以此类推。
以上所述,仅为本发明较佳实施例而已,并非用来限定本发明实施的范围。即凡依本发明所作的均等变化与修饰,皆为本发明专利范围所涵盖。
Claims (33)
1.一种用以执行密码编译运算的装置,包括:
一密码编译指令,由一计算装置来接收,其为属于微处理器执行的指令流程中的一步骤,其中该密码指令指示微处理器进行一个特定的密码编译运算;以及
执行逻辑器,运作上耦接至该密码编译指令,组态为用以执行该密码编译指令的该密码编译运算,其中该密码编译运算包括:
显示该密码编译运算是否已由一中断事件所中断。
2.根据权利要求1所述的装置,其中该密码编译运算至少包括下列之一或其组合:
一加密运算,将数个明文片段转成对应的数个密文片段;
一解密运算,将数个密文片段转成对应的数个明文片段。
3.根据权利要求1所述的装置,其中该密码编译指令会指定一区块密码器模式,该区块密码器模式用于完成该密码编译运算。
4.根据权利要求3所述的装置,其中该区块密码器模式选自下列之一或其组合:电子密码本模式、加密块链模式、加密反馈模式、输出反馈模式。
5.根据权利要求1所述的装置,其中密码编译指令指示对数个的文字片段进行该密码编译运算。
6.根据权利要求5所述的装置,其中还包括:
一位,耦接至该执行逻辑器,组态为用以显示该密码编译运算是否已由一中断事件所中断。
7.根据权利要求6所述的装置,其中该位包含于一标记寄存器中,该标记寄存器包括一x86-兼容微处理器内的一EFLAGS寄存器,并且其中该位包括该EFLAGS寄存器内的位30。
8.根据权利要求1所述的装置,其中该中断事件包括程控转移到配置用以处理该中断事件的一程序流程,并且其中对一目前输入数据区块所执行的该密码编译运算会中断。
9.根据权利要求8所述的装置,其中在程控返回该密码编译指令之后,对该目前输入数据区块,会立即执行该密码编译运算。
10.根据权利要求1所述的装置,其中还包括:
区块指针器逻辑器,运作上耦接至该执行逻辑器,组态为用以指示该计算装置,在对一目前输入数据区块,完成该密码编译运算时,将内存中的输入及输出数据区块的指针器修改为指向下个输入及输出数据区块。
11.根据权利要求1所述的装置,其中还包括:
区块指针器逻辑器,运作上耦接至该执行逻辑器,组态为用以指示该计算装置,修改一区块计数寄存器的内容,以表示已对一目前输入数据区块,完成该密码编译运算;以及
区块指针器逻辑器,运作上耦接至该执行逻辑器,配置用以指示该计算装置,保持,或产生与保持起因于对一目前区块的数据,执行该密码编译运算的数据,以致于在从该中断事件返回之后,对接下来的数据,执行该密码编译运算会持续下去。
12.根据权利要求1所述的装置,其中该中断事件包括一中断、一例外、一分页错误、及一工作切换。
13.根据权利要求1所述的装置,其中该密码编译指令间接指向微处理器内数个寄存器。
14.根据权利要求13所述的装置,其中这些寄存器至少包括下列之一或其组合:
一第一寄存器,其中含有第一个指针指向第一个内存位置,此第一内存位置是数个输入文字片段中第一个文字片段的位置;
一第二寄存器,其中含有第二个指针指向第二个内存位置,此第二内存位置是内存中储存数个输出文字片段的位置,这些输出文字片段是输入文字片段经历过密码编译运算的结果;
一个第三寄存器,其中是指示输入文字片段的总数;
一个第四寄存器,其中第四寄存器的内容包含了第三指针,指向第三个内存位置,这个内存位置是密码编译密钥在内存中的位置;
一个第五寄存器,其中第五寄存器内中包含了第四指针,指向第四个内存位置,这个内存位置是初始化向量在内存里的位置;以及
一个第六寄存器,其中第六寄存器内中包含了第五指针,指向第五个内存位置,这个内存位置是控制字符的位置,此控制字符是密码编译参数之一。
15.根据权利要求14所述的装置,其中该密码编译密钥数据下列之一或其组合:一密码密钥及一密码密钥程序表。
16.根据权利要求1所述的装置,其中该执行单元包括:
一密码编译单元,组态为接收第一组数个微指令,对数个输入文字片段分别执行数回合的密码编译指令,产生数个输出文字片段,其中数个密码编译回合由密码编译单元中控制字符控制。
17.一种用以执行密码运算的装置,包括:
一密码编译单元,位于一装置内,组态为接收属于一指令流程内的一密码编译指令,并用以响应执行该密码指令指示微处理器进行的一个特定的密码编译运算;以及
一位,位于一寄存器内,运作上耦接至该密码编译单元,组态为用以显示该密码编译运算是否已由一中断事件所中断。
18.根据权利要求17所述的装置,其中该中断事件包括一中断、一例外、一分页错误、及一工作切换。
19.根据权利要求17所述的装置,其中该中断事件包括程控转移到配置用以处理该中断事件的一程序流程,并且其中对一目前输入数据区块所执行的该密码编译运算会中断。
20.根据权利要求19所述的装置,其中在程控返回该密码编译指令之后,对该目前输入数据区块,会立即执行该密码编译运算。
21.根据权利要求17所述的装置,其中还至少包括下列之一或其组合:
区块指针器逻辑器,运作上耦接至该执行逻辑器,配置用以指示该计算装置,在对一目前输入数据区块,完成该密码编译运算时,将内存中的输入及输出数据区块的指针器修改为指向下个输入及输出数据区块;
区块指针器逻辑器,运作上耦接至该执行逻辑器,配置用以指示该计算装置,修改一区块计数寄存器的内容,以表示已对一目前输入数据区块,完成该密码编译运算;以及
区块指针器逻辑器,运作上耦接至该执行逻辑器,配置用以指示该计算装置,保持,或产生与保持起因于对一目前区块的数据,执行该密码编译运算的数据,以致于在从该中断事件返回之后,对接下来的数据,执行该密码编译运算会持续下去。
22.一种执行装置内的密码运算的方法,该方法包括有:
响应于所接收的一密码编译指令,而执行该密码编译指令指定的一密码编译运算;以及
显示在执行该密码编译运算期间,是否已发生一中断事件。
23.根据权利要求22所述的方法,其中该显示动作包括在该执行期间,指出是否已发生一中断、一例外、一分页错误或一工作切换动作之一。
24.根据权利要求23所述的方法,其中该显示动作包括修改该装置内的一寄存器中的一位的状态。
25.根据权利要求23所述的方法,其中还包括:
将程控转移到配置用以处理该中断事件的一程序流程,并且使对一目前输入数据区块的该密码编译运算的该执行动作中断。
26.根据权利要求25所述的方法,其中还包括:
在程控返回紧接于该转移的该密码编译指令之后,会立即执行对该目前输入数据区块的该执行动作。
27.根据权利要求22所述的方法,其中还包括:
指示该装置,在对一目前输入数据区块,完成该密码编译运算时,将内存中的输入及输出数据区块的指针器修改为指向下个输入及输出数据区块。
28.根据权利要求22所述的方法,其中还包括:
指示该装置,修改一区块计数寄存器的内容,以表示已对一目前输入数据区块,完成该该密码编译运算。
29.根据权利要求22所述的方法,其中还包括:
指示该装置,保持,或产生与保持起因于对一目前区块的数据,执行该密码编译运算的数据,以致于在从该中断事件返回之后,对接下来的数据,执行该密码编译运算会持续下去。
30.根据权利要求22所述的方法,其中该接收动作包括:
指定一加密运算当作该密码编译运算,其中该加密运算包括将对数片段的明文加密,变成多个密文片段。
31.根据权利要求22所述的方法,其中该接收动作包括:
指定一解密运算当作该密码编译运算,其中该解密运算包括将对数片的密文解密,变成数片的明文。
32.根据权利要求22所述的方法,其中该接收动作包括:
在该密码编译指令内,指定用于完成该密码编译运算的一区块密码器模式。
33.根据权利要求32所述的方法,其中该区块密码器模式选自下列之一或其组合:电子密码本模式、加密块链模式、加密反馈模式、输出反馈模式。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/727,973 US7532722B2 (en) | 2003-04-18 | 2003-12-04 | Apparatus and method for performing transparent block cipher cryptographic functions |
US10/727,973 | 2003-12-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1558591A true CN1558591A (zh) | 2004-12-29 |
CN100391145C CN100391145C (zh) | 2008-05-28 |
Family
ID=34377722
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100590645A Expired - Lifetime CN100391145C (zh) | 2003-12-04 | 2004-07-29 | 重组透明化区块密码编译方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN100391145C (zh) |
TW (1) | TWI274281B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101583122A (zh) * | 2009-03-26 | 2009-11-18 | 郭长来 | 一种无线拨号上网避免异地漫游的方法 |
CN1655496B (zh) * | 2004-04-16 | 2010-07-14 | 威盛电子股份有限公司 | 产生密码钥匙排程的装置及方法 |
CN1652163B (zh) * | 2004-04-16 | 2012-07-11 | 威盛电子股份有限公司 | 执行通透性输出反馈模式密码功能的方法及装置 |
CN106888082A (zh) * | 2015-12-16 | 2017-06-23 | 北京京航计算通讯研究所 | 一种用于加密解密的方法和处理器 |
CN109804596A (zh) * | 2016-12-09 | 2019-05-24 | 密码研究公司 | 具有加掩码的输入的可编程块密码器 |
CN109949463A (zh) * | 2019-03-29 | 2019-06-28 | 天津经纬恒润科技有限公司 | 一种解密方法及装置 |
CN113722702A (zh) * | 2021-09-01 | 2021-11-30 | 上海兆芯集成电路有限公司 | 具备分组密码算法的处理器及其处理方法 |
CN117668326A (zh) * | 2024-01-30 | 2024-03-08 | 深圳柯赛标识智能科技有限公司 | 智慧标识的数据处理方法、系统和设备 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5404030B2 (ja) * | 2008-12-26 | 2014-01-29 | デジタルア−ツ株式会社 | 電子ファイル送信方法 |
US11264063B2 (en) * | 2019-08-21 | 2022-03-01 | Macronix International Co., Ltd. | Memory device having security command decoder and security logic circuitry performing encryption/decryption commands from a requesting host |
US11960769B2 (en) | 2022-02-14 | 2024-04-16 | Macronix International Co., Ltd. | High performance secure read in secure memory providing a continuous output of encrypted information and specific context |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4250546A (en) * | 1978-07-31 | 1981-02-10 | Motorola, Inc. | Fast interrupt method |
AU5730200A (en) * | 1999-06-08 | 2000-12-28 | General Instrument Corporation | Cryptographic processing system |
US7270193B2 (en) * | 2000-02-14 | 2007-09-18 | Kabushiki Kaisha Toshiba | Method and system for distributing programs using tamper resistant processor |
-
2004
- 2004-04-30 TW TW93112126A patent/TWI274281B/zh not_active IP Right Cessation
- 2004-07-29 CN CNB2004100590645A patent/CN100391145C/zh not_active Expired - Lifetime
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1655496B (zh) * | 2004-04-16 | 2010-07-14 | 威盛电子股份有限公司 | 产生密码钥匙排程的装置及方法 |
CN1652163B (zh) * | 2004-04-16 | 2012-07-11 | 威盛电子股份有限公司 | 执行通透性输出反馈模式密码功能的方法及装置 |
CN102594547A (zh) * | 2004-04-16 | 2012-07-18 | 威盛电子股份有限公司 | 执行通透性输出反馈模式密码功能的方法及装置 |
CN101583122A (zh) * | 2009-03-26 | 2009-11-18 | 郭长来 | 一种无线拨号上网避免异地漫游的方法 |
CN106888082A (zh) * | 2015-12-16 | 2017-06-23 | 北京京航计算通讯研究所 | 一种用于加密解密的方法和处理器 |
CN106888082B (zh) * | 2015-12-16 | 2019-09-10 | 北京京航计算通讯研究所 | 一种用于加密解密的方法和处理器 |
CN109804596B (zh) * | 2016-12-09 | 2023-05-09 | 密码研究公司 | 具有加掩码的输入的可编程块密码器 |
CN109804596A (zh) * | 2016-12-09 | 2019-05-24 | 密码研究公司 | 具有加掩码的输入的可编程块密码器 |
CN109949463A (zh) * | 2019-03-29 | 2019-06-28 | 天津经纬恒润科技有限公司 | 一种解密方法及装置 |
CN109949463B (zh) * | 2019-03-29 | 2021-08-24 | 天津经纬恒润科技有限公司 | 一种解密方法及装置 |
CN113722702A (zh) * | 2021-09-01 | 2021-11-30 | 上海兆芯集成电路有限公司 | 具备分组密码算法的处理器及其处理方法 |
CN117668326A (zh) * | 2024-01-30 | 2024-03-08 | 深圳柯赛标识智能科技有限公司 | 智慧标识的数据处理方法、系统和设备 |
CN117668326B (zh) * | 2024-01-30 | 2024-04-30 | 深圳柯赛标识智能科技有限公司 | 智慧标识的数据处理方法、系统和设备 |
Also Published As
Publication number | Publication date |
---|---|
CN100391145C (zh) | 2008-05-28 |
TWI274281B (en) | 2007-02-21 |
TW200519738A (en) | 2005-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1655496A (zh) | 产生密码钥匙排程的装置及方法 | |
EP1596530B1 (en) | Apparatus and method for employing cryptographic functions to generate a message digest | |
EP1469371B1 (en) | Microprocessor apparatus and method for performing block cipher cryptographic functions | |
CN1838140A (zh) | 运用加密功能以产生信息摘要的设备及方法 | |
CN1684412A (zh) | 利用安全散列演算法的装置与方法 | |
EP1496421B1 (en) | Apparatus and method for performing transparent block cipher cryptographic functions | |
EP1538510B1 (en) | Microprocessor apparatus and method for performing block cipher cryptographic functions | |
EP1519509B1 (en) | Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine | |
CN1558591A (zh) | 重组透明化区块密码编译方法及装置 | |
US7502943B2 (en) | Microprocessor apparatus and method for providing configurable cryptographic block cipher round results | |
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 | |
CN1658550A (zh) | 用于执行密码操作的装置和方法 | |
CN1661958A (zh) | 区块密码功能的微处理器及方法 | |
US7542566B2 (en) | Apparatus and method for performing transparent cipher block chaining mode cryptographic functions | |
CN1538656A (zh) | 微处理器区块密码编译方法与装置 | |
US7519833B2 (en) | Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine | |
CN1649296A (zh) | 执行透明化密码区块串行模式密码运算的装置及方法 | |
CN1652163A (zh) | 执行通透性输出反馈模式密码功能的方法及装置 | |
CN1658548A (zh) | 配置密码引擎资料区块的微处理器及方法 | |
CN1607763A (zh) | 执行组态区块密码编译演算法的微处理器装置和方法 | |
CN1684408A (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 | ||
CX01 | Expiry of patent term |
Granted publication date: 20080528 |
|
CX01 | Expiry of patent term |