CN105843776B - 微处理器与其中安全执行指令的方法 - Google Patents
微处理器与其中安全执行指令的方法 Download PDFInfo
- Publication number
- CN105843776B CN105843776B CN201610212909.2A CN201610212909A CN105843776B CN 105843776 B CN105843776 B CN 105843776B CN 201610212909 A CN201610212909 A CN 201610212909A CN 105843776 B CN105843776 B CN 105843776B
- Authority
- CN
- China
- Prior art keywords
- instruction
- key
- encryption
- microprocessor
- square
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7839—Architectures of general purpose stored program computers comprising a single central processing unit with memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
Abstract
本发明涉及一种微处理器,其中加密的程序可变换不同片段解密用的解密密钥。该微处理器在面对加密的程序中一第一片段时解密且执行之,且解密并执行加密的密钥储存指令,以储存新一组的解密密钥。密钥储存指令执行后,微处理器用该新一组的解密密钥解密并执行加密的程序中的后续片段。执行中的密钥切换可能发生多次,对应相继的加密的密钥储存指令以及相继多组加密指令。
Description
技术领域
本发明涉及一种微处理器(microprocessor)领域,特别用于增加微处理器所执行的程序之安全性。
现有技术
很多软件程序在面临破坏计算机系统安全的攻击时,通常是脆弱不堪的。例如,黑客可藉由攻击一运行中程序的缓冲溢位区漏洞(buffer overflow vulnerability)植入不当程序代码、并转移主控权给该不当程序代码。如此一来,所植入的程序代码将主导被攻击的程序。一种防范软件程序遭攻击的方案为指令集随机化(instruction setrandomization)。概略解释之,指令集随机化技术会先将程序加密(encrypt)为某些形式,再于处理器将该程序自内存提取后,于该处理器内解密(decrypt)该程序。如此一来,黑客便不易植入恶意指令,因为所植入的指令必须被适当地加密(例如,使用与所攻击程序相同的加密密钥或算法)方会被正确地执行。例如,参阅文件「Counter Code-InjectionAttacks with Instruction-Set Randomization,by Gaurav S.Kc,AngelosD.Keromytis,and Vassilis Prevelakis,CCS’03,October 27-30,2003,Washington,DC,USA,ACM 1-58113-738-9/03/0010」,其中叙述Bochs-x86Pentium仿真器(emulator)之改良版本。相关技术的缺点已被广泛讨论。例如,参阅数据「Where’s the FEEB?TheEffectiveness of Instruction Set Randomization,by Ana Nora Sovarel,DavidEvans,and Nathanael Paul,http://www.cs.virginia.edu/feeb」。
发明内容
本发明特点可以多种方式实现,其一为一种微处理器,包括一安全内存以及一指令处理流水线。该安全内存储存且提供密钥编写的密钥,用于加密的指令的解密。该指令处理流水线自一高速缓存提取并执行指令。该指令处理流水线包括一提取单元、一解密电路、以及一或多个执行单元。该提取单元提取该微处理器所支持的一指令集架构中未加密以及加密的指令。该指令集架构包括一密钥储存指令,用以储存一或多个密钥编写的密钥至该安全内存。该微处理器支持加密的密钥储存指令。
该解密电路以接收自该安全内存的上述密钥编写的密钥作加密的指令的解密。上述一或多个执行单元用于执行指令、或执行指令所转译出的微指令。
该微处理器采用加密的密钥储存指令时,系以一第一组的一或多个密钥编写的密钥对加密的密钥储存指令作解密,之后执行解密后的密钥储存指令,之后采用上述加密的密钥储存指令所提供的一第二组的一或多个密钥编写的密钥解密一后续组的一或多个加密的指令。该微处理器因而致能一加密的程序,相应后续多组程序指令之解密变化提供多组密钥编写的密钥。
一种实施方式中,该指令集架构包括一安全执行模式指令,要求自一一般执行模式切换至一安全执行模式。该微处理器限制加密的程序的解密,直至该微处理器进入该安全执行模式。
一种实施方式中,根据切换至该安全执行模式的一要求的指令的格式是否带有一加密的参数,该微处理器条件允许该要求,符合的指令为一特权程序或程序的一部分,且该加密的参数经解密后符合运行加密的程序的预设要求。一种实施方式中,上述加密的参数与程序是用不同的密钥编写机制作加密。
一种实施方式中,该密钥储存指令在实时数据栏提供一或多个密钥编写的密钥的内容。
一种实施方式中,该微处理器执行解密的指令或解密的指令转译出的微指令、且不曝露解密的指令或微指令。
一种实施方式中,上述安全内存不可由该处理器总线存取,且不属于一高速缓存级的一部份。此外,该安全内存不可由执行在非特权执行模式下的程序存取。此外,在一种实施方式中,一AES或RSA加密信道致使密钥编写的密钥的数值写入该安全内存。
本案特征更可实现作一微处理器中安全执行指令的方法。首先,该方法储存一第一组的一或多个密钥编写的密钥至一安全内存用于加密的指令的解密,缓存一第一组的加密的指令,且采用该第一组的一或多个密钥编写的密钥对该第一组的加密的指令作解密。在某些时间点,该方法包括缓存加密的一密钥储存指令,以储存一第二组的一或多个密钥编写的密钥至该安全内存,用作加密的指令的解密。在储存该第二组的一或多个密钥编写的密钥之前,加密的该密钥储存指令系由该第一组的一或多个密钥编写的密钥解密。而后,储存该第二组的一或多个密钥编写的密钥至该安全内存,作解密的该密钥储存指令之执行。而后(或同时─该微处理器为流水线处理器(pipelined processor)),一第二组的加密的指令遭缓存。取得该第二组的一或多个密钥编写的密钥后,所述方法采用该第二组的一或多个密钥编写的密钥对该第二组的加密的指令作解密。以上步骤多数可反复执行,用于处理后续的多个加密的密钥储存指令以及后续多组之加密指令。
本发明有多种表征、保护方式,并不意图限定于以上叙述。本发明替代表征可仅包括摘要描述的子集内容、或与其它未提及的内容结合之子集。专利保护范围实际界定要依照其描述内容作解读。
附图说明
图1为一方块图,图解根据本发明技术实现的一微处理器;
图2为一方块图,用以详细说明图解第1图的提取单元;
图3为一流程图,根据本发明技术,图解第2图提取单元之操作;
图4为一方块图,根据本发明技术,图解第1图标志缓存器的字段;
图5为一方块图,根据本发明技术,图解一密钥加载指令的格式;
图6为一方块图,根据本发明技术,图解一密钥切换指令的格式;
图7为一流程图,根据本发明技术,图解第1图微处理器的操作,其中执行第6图之密钥切换指令;
图8为一方块图,根据本发明技术,图解一加密程序的内存用量,该加密程序包括多个第6图所揭露的密钥切换指令;
图9为一方块图,根据本发明技术,图解一分支与切换密钥指令的格式;
图10为一流程图,根据本发明技术,图解第1图微处理器的操作,其中执行第9图之分支与切换密钥指令;
图11为一流程图,根据本发明技术,图解一后处理器的操作,由软件工具实现,可用于后部处理一程序、且加密之,以由第1图微处理器执行;
图12为一方块图,图解本发明另外一种实施方式的分支与切换密钥指令的格式;
图13为一方块图,根据本发明技术,图解块地址范围表;
图14为一流程图,根据本发明技术,图解第1图微处理器的操作,其中执行第12图之分支与切换密钥指令;
图15为一方块图,图解本发明另外一种实施方式的分支与切换密钥指令的格式;
图16为一方块图,根据本发明技术,图解块地址范围表;
图17为一流程图,根据本发明技术,图解第1图微处理器的操作,其中执行第15图之分支与切换密钥指令;
图18为一流程图,图解本发明技术另外一种实施方式,其中叙述一后处理器的操作,用于后部处理一程序、且加密之,由第1图微处理器执行;
图19为一流程图,根据本发明技术,图解第1图微处理器的操作,用于应付一任务切换,切换于一加密程序以及一纯文字程序之间;
图20图解一流程图,根据本发明技术,图解第1图微处理器所执行的系统软件之操作;
图21图解一方块图,根据本发明另外一种实施方式,图解第1图标志缓存器的字段;
图22为一流程图,根据本发明技术,图解采用第21图之标志缓存器的第1图微处理器之操作,用于应付一任务切换,切换于多个加密程序之间;
图23为一流程图,根据本发明技术,图解采用第21图之标志缓存器的第1图微处理器之操作,用于应付一任务切换,切换于多个加密程序之间;
图24为一方块图,根据本发明另外一种实施方式,图解第1图密钥缓存器档案中的单一个缓存器;
图25为一流程图,根据本发明另外一种实施方式,图解采用第21图标志缓存器以及第24图密钥缓存器档案的第1图微处理器之操作,以应付一任务切换,切换于多个加密程序之间;
图26为一流程图,根据本发明另外一种实施方式,图解采用第21图标志缓存器以及第24图密钥缓存器档案的第1图微处理器之操作,以应付一任务切换,切换于多个加密程序之间;
图27为一方块图,图解第1图微处理器100部分内容的其它实施方式;
图28为一方块图,根据本发明技术,详细图解第27图的分支目标地址高速缓存(BTAC);
图29为一方块图,根据本发明技术,详细图解第28图之BTAC各单元之内容;
图30为一流程图,根据本发明技术,图解第27图微处理器采用第28图BTAC的操作;
图31为一流程图,根据本发明技术,图解第27图微处理器采用第28图BTAC的操作;以及
图32为一流程图,根据本发明技术,图解第27图微处理器对一分支与切换密钥指令的操作。
符号说明
100~微处理器; 102~指令高速缓存;
104~提取单元; 106~指令数据(可为加密);
108~译码单元; 112~执行单元;
114~引出单元; 118~通用缓存器;
122~安全存储区; 124~密钥缓存器档案;
128~标志缓存器; 132~微代码单元;
134~提取地址; 142~主密钥缓存器;
144~控制缓存器; 148~E位;
152~密钥扩展器; 154~多任务器;
156~异或逻辑; 162~纯文字指令数据;
164~提取地址产生器; 172~两组密钥;
174~解密密钥; 176~多位的二进制零值;
178~多任务器154的输出; 212~多任务器A;
214~多任务器B; 216~旋转器;
218~加法/减法器; 234~第一密钥;
236~第二密钥; 238~旋转器的输出;
302-316~步骤方块; 402~E位字段;
408~多个位的标准x86标志; 500~密钥加载指令;
502~操作码; 504~密钥缓存器档案目标地址;
506~安全存储区来源地址; 600~密钥切换指令;
602~操作码; 604~密钥缓存器档案索引;
702-708~方块步骤; 800~内存用量;
900~分支与切换密钥指令;
902~操作码; 904~密钥缓存器档案索引;
906~分支信息; 1002-1018~步骤方块;
1102-1106~步骤方块; 1200~分支与切换密钥指令;
1202~操作码; 1300~块地址范围表:
1302~地址范围; 1304~密钥缓存器档案索引;
1402-1418~步骤方块; 1500~分支与切换密钥指令;
1502~操作码; 1600~块地址范围表:
1604~安全存储区地址;
1714~步骤方块; 1802-1806~步骤方块;
1902-1944~步骤方块; 2002-2008~步骤方块;
2104~索引; 2202-2216~步骤方块;
2302-2316~步骤方块; 2402~淘汰位;
2506~步骤方块; 2607、2609~步骤方块;
2702~分支目标地址高速缓存(BTAC);
2706~目标地址; 2708~采用/不采用指标;
2712~密钥切换逻辑; 2714~型式指针;
2716~密钥缓存器档案索引;
2802~BTAC阵列; 2808~BTAC单元;
2902~有效位; 2904~标记字段;
2906~目标地址; 2908~采用/不采用字段;
2912~密钥缓存器档案索引;
2914~型式字段; 3002-3004~步骤方块;
3102-3116~步骤方块; 3208-3222~步骤方块;
ZEROES~多位的二进制零值。
具体实施方式
参阅第1图,一方块图图解根据本发明技术所实现的一微处理器100。微处理器100包括一流水线(pipeline),其中包括一指令高速缓存(instruction cache)102、一提取单元(fetch unit)104、一译码单元(decode unit)108、一执行单元(execution unit)112、以及一引出单元(retire unit)114。微处理器100更包括一微代码单元(microcode unit)132,用以提供微代码指令(microcode instructions)给该执行单元112。微处理器100更包括通用缓存器(general purpose registers)118以及标志缓存器(EFLAGS register)128,以提供指令操作数(instruction operands)给执行单元112。而且,透过引出单元114,将指令执行结果更新于通用缓存器118以及标志缓存器128。在一种实施方式中,标志缓存器128是由传统x86标志缓存器修改实现,详细实施方式将于后续篇幅说明。
提取单元104自指令高速缓存102提取指令数据(instruction data)106。提取单元104操作于两种模式:一为解密模式(decryption mode),另一为纯文字模式(plain textmode)。提取单元104内一控制缓存器(control register)144的一E位(E bit)148决定该提取单元104是操作于解密模式(设定E位)、或操作于纯文字模式(清空E位)。纯文字模式下,提取单元104视自该指令高速缓存102所提取出的指令数据106为未加密、或纯文字指令数据,因此,不对指令数据106作解密。然而,在解密模式下,提取单元104视自该指令高速缓存102所提取出的指令数据106为加密指令数据,因此,需使用该提取单元104的一主密钥缓存器(master key register)142所储存的解密密钥(decryption keys)将之解密为纯文字指令数据,详细技术内容将参考第2图以及第3图进行讨论。
提取单元104亦包括一提取地址产生器(fetch address generator)164,用以产生一提取地址(fetch address)134,以自该指令高速缓存102提取指令数据106。提取地址134更供应给提取单元104的一密钥扩展器(key expander)152。密钥扩展器152自主密钥缓存器142中选取两组密钥172,并对其实施运算以产生一解密密钥174,作为多任务器154的第一输入。多任务器154的第二输入为多位的二进制零值(binary zeroes)176。E位148控制多任务器154。若E位148被设定,多任务器154选择输出该解密密钥174。若E位148被清除,多任务器154选择输出多位的二进制零值176。多任务器154的输出178将供应给异或逻辑156作为其第一输入。异或逻辑156负责对提取的指令数据106以及多任务器输出178施行布尔异或运算(Boolean exclusive-OR,XOR),以产生纯文字指令数据162。加密的指令数据106乃预先以异或逻辑将其原本的纯文字指令数据以一加密密钥进行加密,其中该加密密钥之数值与该解密密钥174相同。提取单元104的详细实施方式将配合第2图以及第3图内容于稍后叙述。
纯文字指令数据162将供应给译码单元108。译码单元108负责将纯文字指令数据162之串流译码、并分割为多个X86指令,交由执行单元112执行。在一种实施方式中,译码单元108包括缓冲器(buffers)或队列(queues),以在解碼之前或期间,缓冲存储的纯文字指令数据162之串流。在一种实施方式中,译码单元108包括一指令转译器(instructiontranslator),用以将X86指令转译为微指令microinstructions或micro-ops,交由执行单元112执行。译码单元108输出指令时,更会针对各指令输出一位值,该位值乃伴随该指令沿所述流水线结构一路行进而至,用以指示该指令是否为加密指令。该位值将控制该执行单元112以及该引出单元114,使之根据该指令自该指令高速缓存102取出时是加密指令或纯文字指令而进行决策并且采取动作。在一种实施方式中,纯文字指令不被允许执行专供指令解密模式设计的特定操作。
在一种实施方式中,微处理器100为一x86架构处理器,然而,微处理器100也可以其它架构之处理器实现。若一处理器可正确执行设计给x86处理器执行的大多数应用程序,则视之为x86架构的处理器。若应用程序执行后可获得预期结果,则可判断该应用程序是被正确执行。特别是,微处理器100是执行x86指令集的指令,且具有x86用户可用缓存器组(x86 user-visible register set)。
在一种实施方式中,微处理器100乃设计成供应一复合安全架构(comprehensivesecurity architecture)─称为安全执行模式(secure execution mode,简称SEM)─以于其中执行程序。根据一种实施方式,SEM程序的执行可由数种处理器事件(processorevents)引发,且不受一般(非SEM)操作封锁。此外,SEMENABLE指令可引发自一般执行模式(normal execution mode)至安全执行模式(SEM mode)的转态。在一种实施方式中,SEMENABLE指令具有经加密的一参数,该参数系经授权单位的一私钥加密,属一种密钥编写机制(cryptographic mechanism),不同于加密程序之加密使用的对称密钥加密之密钥编写机制(symmetric key encryption cryptographic mechanism)。微处理器100内的安全码接口逻辑采用的为一公开密钥,该公开密钥是在制造程序中存入,用以解密且鉴定该参数。该参数解密后,安全执行模式初始逻辑会初始化该安全模式。
在一种实施方式中,为安全执行模式之数据所供应的安全非挥发性内存(未显示于图中)─如,闪存─可用于储存解密密钥。该安全非挥发式内存经由一私有序列总线耦接该微处理器100,且其中所有数据为AES加密且签名认证。在一种实施方式中,微控制器100包括小尺寸非挥发性内存(未显示于图中),可用于储存解密密钥。在一种实施例中,上述非挥发性内存为熔丝型非挥发储存装置(fuse-embodied non-volatile storage),详述于美国专利案U.S.Patent No.7,663,957,通过引用主张全文完整并入本文。本文所述之指令解密特征之优点为展延安全执行模式,使得安全程序储存在微处理器100外的内存,无须将安全程序完整储存在微处理器100之中。因此,安全程序代码可利用内存分级架构的完整尺寸与功能。在一种实施方式中,架构上的例外/中断(例如,页面错误(page faults)、侦错断点(debug breakpoint)…等)在安全执行模式运行下部分或全数除能。在一种实施方式中,架构上的例外/中断在解密模式运行下(即,E-位148处设定状态)部分或全数除能。
运行在安全执行模式的程序所执行的功能有多种例子,包括关键安全事件(critical security task),如,辨识凭证并加密数据、监控系统软件活动、辨识系统软件完整性、追踪资源使用、控制新软件安装…诸如此类。安全执行模式的例子详细描述于2013年12月24日核发的美国专利案U.S.Patent No.8,615,799,其主张2008年5月24申请之美国临时申请案U.S.Provisional Application No.61/055,980之优先权─以上文件皆通过引用主张全文完整并入本文。
在一种实施方式中,微处理器架构做一般模式以及安全模式两者的指令执行。若运作在一般模式下,安全应用程序之安全执行所相关的资源无一为可观察或可操作。监视逻辑(watchdog logic)监视安全码、数据、以及环境与物理属性的真实性,以搜集窜改证据。针对安全执行模式所供应的中断处理以及异常逻辑不同于一般模式之中断处理以及异常逻辑。
微处理器100更包括一密钥缓存器档案(key register file)124。密钥缓存器档案124包括复数个缓存器,其中储存的密钥可藉由密钥切换指令(switch keyinstruction,后续讨论之)加载提取单元104的主密钥缓存器142,以解密所提取的加密指令数据106。
微处理器100更包括一安全存储区(secure memory area,简写为SMA)122,用于存储解密密钥,该解密密钥待经第5图所示之密钥加载指令(load key instruction)500进而加载密钥缓存器档案124。在一种实施方式中,安全存储区122限定以SEM程序存取。也就是说,安全存储区122不可藉一般执行模式(非SEM)下所执行的程序存取。此外,安全存储区122也不可藉处理器总线存取,且不属于微处理器100之高速缓存级的一部份。因此,举例说明之,缓存清空操作(cache flush operation)不会导致安全存储区122的内容写入内存。关于安全存储区122的读写,微处理器100指令集架构中设计有特定指令。一种实施方式是在安全存储区122中设计一隔离式随机存取内存(private RAM),相关技术内容可参考2008年2月20日申请的美国专利申请案12/034,503(该案于2008年10月16日公开,公开号为2008/0256336);可参照上述案件内容应用于本案发明。
起先,操作系统或其它特权程序(privileged program)下载密钥的初始化设定于该安全存储区122、密钥缓存器档案124、以及主密钥缓存器142。微处理器100起先会以该密钥的初始化设定以解密一加密程序。此外,加密程序本身可后续写入新的密钥至安全存储区122、并自安全存储区122将密钥加载密钥缓存器档案124(藉由密钥加载指令)、且自密钥缓存器档案124将密钥加载主密钥缓存器142(藉由密钥切换指令)。所述操作之优势在于:所揭露的密钥切换指令使得加密程序在执行当下得以切换解密密钥组(on-the-flyswitching),以下将详述之。新的密钥可由加密程序指令自身的实时数据组成。在一种实施方式中,程序档案标头的一字段会指示程序指令是否为加密型式。
第1图所描述的技术有多项优点。第一,自加密指令数据106所解密出来的纯文字指令数据无法由微处理器100外部获得。
第二,提取单元104提取加密指令数据所需的时间与提取纯文字指令数据所需的时间相同。此特色关系着安全与否。反之,若有时间差存在,黑客可藉此破解加密技术。
第三,相较于传统设计,本案所揭露之指令解密技术不会额外增加提取单元104所耗的频率数量。如以下讨论,密钥扩展器152增加解密密钥之有效长度,该解密密钥用于解密一加密程序,且此方式不会使提取加密程序数据所需的时间长于提取纯文字程序数据所需的时间。特别是,因为密钥扩展器152之运作限时于以提取地址134查表该指令高速缓存102获得指令数据106之内完成,密钥扩展器152并不会增加一般的提取程序的时间。此外,因为多任务器154以及密钥扩展器152一并限时于以提取地址134查表该指令高速缓存102获得指令数据106之内完成,故不会增加一般的提取程序的时间。异或逻辑156是唯一添加于一般提取路径的逻辑运算,所幸异或操作156的传播延迟相当小,不会增加工作周期。因此,本案所揭露的指令解密技术不会增加提取单元104频率数量负担。此外,相较于一般技术所应用于解密指令数据106的复杂解密机制,例如S盒(S-boxes),一般技术会增加提取以及译码指令数据106时所需的工作周期且/或所消耗的频率数量。
接着,参考第2图,一方块图详细图解第1图之提取单元104。特别是,第1图之密钥扩展器152也详细图列其中。先前已讨论采用异或逻辑解密上述加密指令数据106的优点。然而,快且小的异或逻辑有其缺点:若加密/解密密钥被重复使用,则异或逻辑属于一种脆弱加密方法(weak encryption method)。不过,若密钥的有效长度等同所欲加密/解密之程序的长度,异或逻辑加密会是一种强度极高的加密技术。微处理器100之特征在于可增长解密密钥的有效长度,以降低密钥重复使用的需求。第一,主密钥缓存器档案142所储存的数值为中大型尺寸:在一种实施方式中,其尺寸等同自指令高速缓存102所取出的指令数据106之提取量、或区块尺寸,为128位(16字节)。第二,加密扩展器152用于增长解密密钥的有效长度,例如,增至一实施方式所揭露的2048字节,将于后续篇幅详述。第三,加密程序可藉由密钥切换指令(或其变形)在操作中改变主密钥缓存器142内的数值,之后段落将详述之。
在第2图所示实施方式中,142使用了五个主密钥缓存器,编号0-4。然而,在其它实施方式中,也可以较少或较多量的主密钥缓存器142数量增长解密密钥长度。例如,一种实施方式采用12个主密钥缓存器142。密钥扩充器152包括一第一多任务器A 212以及一第二多任务器B 214,用以接收主密钥缓存器142所供应的密钥。提取地址134的部分内容用于控制多任务器212/214。在第2图所示实施方式中,多任务器B 214为三转一多任务器,而多任务器A 212为四转一多任务器。表格1显示多任务器212/214如何根据各自的选择输入选取该等主密钥缓存器142(以上述编号识别)。表格2显示上述选择输入的产生方式,以及基于提取地址134的位[10:8]所呈的主密钥缓存器142组合。
表格1
表格2
多任务器B 214的输出236是供应给加法/减法器218。多任务器A 212的输出234是供应给一旋转器(rotator)216。旋转器216接收提取地址134的位[7:4],据以旋转多任务器输出234,决定旋转的字节数量。在一种实施方式中,提取地址134的位[7:4]在供应给旋转器216控制旋转的字节数量前增量,以表格3显示之。旋转器216的输出238是供应给加法/减法器218。加法器/减法器218接收提取地址134的位[7]。若该位[7]为清空,加法/减法器218将旋转器216的输出238自多任务器B 214之输出236减去。若该位[7]为设定,加法/减法器218将旋转器216的输出238加上多任务器B 214的输出236。加法/减法器218的输出即第1图所示之解密密钥174,将供应给多任务器154。以下以第3图之流程图详述相关技术。
接着,参阅第3图,一流程图基于本发明技术图解第2图提取单元104的操作。流程始于方块302。
在方块302,提取单元104以提取地址134读取指令高速缓存102,以开始提取一16字节之区块的指令数据106。指令数据106可为加密状态或为纯文字状态,视指令数据106是为一加密程序或一纯文字程序的一部分而定,由E位148标示。流程接着进入方块304。
参考方块304,根据提取地址134较高的数个位,多任务器A 212以及多任务器B214分别自主密钥缓存器142所供应的密钥172中选取出一第一密钥234以及一第二密钥236。在一种实施方式中,提取地址134所供应的该些位施加于多任务器212/214,以产生特定的密钥对(234/236key pair)组合。在第2图所示之实施方式中,所供应的主密钥缓存器142数量为5,因此,存在10组可能的密钥对。为了简化硬件设计,仅使用了其中8组;此设计将供应2048字节的有效密钥,将于后续段落详细讨论之。然而,其它实施方式也可能使用其它数量的密钥缓存器142。以供应12个主密钥缓存器142的实施方式为例,主密钥缓存器142的可能组合有66组,若采用其中64组,所产生的有效密钥将为16384字节。整体而言,假设上述复数个密钥数值总量为K(例如:5,且采用全部组合),该解密密钥、以及上述复数个密钥数值各自的长度为W字节(例如:16字节),则产生的有效密钥将为W2*(K!/(2*(K-2)!))字节。流程接着进入方块306。
在方块306,基于提取地址134的位[7:4],旋转器216使第一密钥234旋转相应数量的字节。例如,若提取地址134的位[7:4]为数值9,旋转器216将第一密钥234朝右旋转9个字节。流程接着进入方块308。
在方块308,加法/减法器218将旋转后的第一密钥238加至/减自该第二密钥236,以产生第1图之解密密钥174。在一种实施方式中,若提取地址134的位[7]为1,则加法/减法器218将旋转后的第一密钥234加至该第二密钥236;若提取地址134的位[7]为0,则加法/减法器218将旋转后的第一密钥234自该第二密钥236减去。接着,流程进入方块312。
在决策方块312,多任务器154根据其控制信号判断所提取的该区块之指令数据106是来自一加密程序或一纯文字程序,所述控制信号来自控制缓存器144所供应的位E148。若指令数据106为加密状态,流程进入方块314,反之,则流程进入方块316。
在方块314,多任务器154选择输出解密密钥174,且异或逻辑156令加密指令数据106以及解密密钥174进行一布尔异或运算,以产生第1图之纯文字指令数据162。流程止于方块314。
在方块316,多任务器154选择输出16字节的二进制零值176,且异或逻辑156令指令数据106(为纯文字)以及该16字节的二进制零值进行一布尔异或运算,以产生同样的纯文字指令数据162。流程止于此方块316。
参考第2图以及第3图所揭露内容,解密密钥174供应给所提取的该区块指令数据106进行异或运算,且该解密密钥174是所选取的主密钥对234/236以及提取地址134之函数。相比于传统解密程序─使解密密钥为先前密钥值的一函数,其中持续修正密钥以供应新的在下一次工作区间使用─本案所揭露之解密技术完全不同。以主密钥对234/236以及提取地址134为函式获得解密密钥174的方式有至少以下两种优点。第一,如以上所讨论,加密指令数据以及纯文字指令数据106之提取耗时相当,不会增加微处理器100所需的工作频率。第二,遇到程序中的分支指令(branch instruction),提取指令数据106所需的时间不会增加。在一种实施方式中,一分支预测器(branch predictor)接收提取地址134,并预测该提取地址134所指之该区块的指令数据106是否存在一分支指令,并预测其方向以及目标地址。以第2图所示实施方式为例,产出的解密密钥174是主密钥对234/236以及提取地址134的一函式,将在目标地址所指之该区块指令数据106送抵该异或逻辑156的同一时间产出预测之目标地址的适当解密密钥174。与传统解密密钥运算手法针对目标地址计算解密密钥所必须的多个「倒带(rewind)」步骤相较,本案所揭露技术在处理加密指令数据时不会产生额外的延迟。
另外,如第2图以及第3图所示,密钥扩展器152之旋转器216以及加法/减法器218之联合设计,使得解密密钥长度有效扩展,超越主密钥之长度。例如,主密钥共贡献32字节(2*16字节);更甚者,以黑客企图判断解密密钥174为何的角度而言,旋转器216以及加法/减法器218有效地将位于主密钥缓存器142的32字节的主密钥扩展为256字节的密钥序列。更具体地说,有效扩展后的密钥序列之字节n为:
为第一主密钥234的字节n,且为第二主密钥236的字节n+x。如上所述,密钥扩展器152所产生的前八套16字节解密密钥174是由减法方式产生,且后八套是由加法方式产生。具体来说,选定的主密钥对234/236各自所提供的字节内容用于为16个连续的16字节区块之指令数据各个字节产生解密密钥174字节,详情请见表格3。举例说明之,表格3第1列的符号“15-00”表示第二主密钥236的字节0的内容会经8位算数运算(an eight-bitarithmetic operation)自第一主密钥234的字节15减去,以获得一字节的有效解密密钥174,用以与一16字节区块之指令数据106中的字节15进行异或运算。
表格3
给定适当的主密钥数值后,密钥扩展器152所产生的扩展密钥统计来说可有效预防异或加密常见的攻击,包括令文件之加密区块以密钥长度位移、并对加密区块一并施行异或运算,以下更详细讨论之。密钥扩展器152对选定主密钥对234/236之影响是:在所述实施方式中,程序中以完全相同的密钥所加密的两个指令数据106字节之跨距可高达256字节。在其它具有不同区块尺寸的指令数据106、以及不同主密钥长度的实施方式中,以同样密钥加密的两个指令数据106字节的最大跨距可有不同的量。
用来选定主密钥对234/236的主密钥缓存器142以及密钥扩展器152内的多任务器212/214也会决定有效密钥长度的扩展程度。如以上讨论,第2图所示实施方式供应有5个主密钥缓存器142,主密钥缓存器142所供应的内容因此可以10种方式组合,而多任务器212/214是用于自上述10种可能组合方式中选择八种作用。表格3所示各密钥对234/236所对应的256字节有效密钥长度搭配八种主密钥对234/236组合后,所产生的有效密钥长度为2048字节。也就是说,程序中以完全相同之密钥加密的两个指令数据106字节之跨距可高达2048字节。
为了更加说明密钥扩展器152所带来的优点,以下简短叙述异或加密程序所常见的的攻击。若异或加密运算所采用的密钥长度短于所加密/解密之程序指令数据的长度,密钥中的许多字节必须被重复使用,且被重复使用的字节数量视程序之长度而定。此弱点使异或指令加密程序可被破解。第一,黑客尝试判断出重复密钥之长度,以下展示的说明(1)至(3)令之为n+1。第二,黑客假定指令数据内各个密钥长度区块(key-length block)是以同样密钥加密。以下列举根据一传统异或加密运算加密得到的二密钥长度区块的数据:
其中,为第一密钥长度区块之数据的字节n,将被加密;为第二密钥长度区块之数据的字节n,将被加密;且kn为密钥的字节n。第三,黑客对所述两区块进行异或运算,使其中密钥成分彼此相销,独留以下内容:
最后,由于计算出的字节为单纯两个纯文字字节的函式,黑客可以统计分析纯文字内容之出现频率,以尝试求得纯文字字节的数值。
然而,根据第2图以及第3图所揭露方式计算出的加密指令数据106字节之图样如以下说明(4)与(5)所示:
其中标示所加密之第一16字节区块之指令数据的字节n,标示所加密之第二16字节区块之指令数据的字节n,标示主密钥x的字节n,且标示主密钥y的字节n。如前述,主密钥x与y为不同密钥。假定一种实施方式以五个主密钥缓存器142提供八种主密钥对234/236组合,2048字节序列中各字节是与两个独立的主密钥字节的一组合进行异或运算。因此,当加密数据以任何方式于256字节的区块中移位并且彼此作异或运算,所求得的字节都会存在两个主密钥的复杂成分,因此,不若说明(3)的内容,此处所得的运算结果不单纯只是纯文字字节。例如,假设黑客选择使同一256字节区块中的16字节区块对齐并彼此进行异或操作使同样的密钥零字节在各段中被使用,字节0之运算结果如说明(6)所示,所获得的字节存在两个主密钥的复杂组合:
其中n不为1。
再者,若黑客换成将选自不同256字节区块内的16字节区块对齐、且彼此作异或运算,运算结果的字节0如说明(7)所示:
其中主密钥u与v中至少一者不同于主密钥x以及y。模拟随机主密钥数值所产生之有效密钥字节之异或运算,可发现运算结果呈现相当平滑的分布。
当然,若黑客选择将不同的2048位组长度区块内的16字节区块对齐、并且彼此进行异或操作,黑客可能会获得与说明(3)类似的结果。然而,请参照以下内容。第一,某些程序─例如,安全性相关程序─可能短于2048字节。第二,相距2048字节的指令字节之统计相关性(statistical correlation)很可能非常小,导致很难破解。第三,如前述内容,所述技术之实施方式可以较多数量实现主密钥缓存器142,使解密密钥之有效长度扩展;例如,以12个主密钥缓存器142供应16384位组长度的解密密钥,甚至其它更长的解密密钥。第四,以下将讨论的密钥下载指令500以及密钥切换指令600更使程序设计师得以载入新的数值至主密钥缓存器142,以有效扩展密钥长度超过2048字节,或者,如果必要,也可扩展密钥长度至程序的完整长度。
现在,参考第4图,一方块图根据本发明技术图解第1图的标志缓存器128。根据第4图所示之实施方式,标志缓存器128包括标准x86缓存器的复数个位408;不过,为了此处叙述的新功能,第4图所示实施方式会动用x86架构中一般为预留(RESERVED)的一位。特别说明之,标志缓存器128包括一E位字段402。E位字段402用于修复控制缓存器144的E位148数值,用以于加密以及纯文字程序间切换以及/或于不同加密程序间切换,以下将详细讨论之。E位字段402标示目前所执行的程序是否有加密。若目前所执行的程序有加密,E位字段402为设定状态,否则,为清除状态。当中断事件发生,控制权切换给其它程序(例如,中断interrupt、异常exception如页错误page fault、或任务切换task switch),储存标志缓存器128。反之,若控制权重回先前因中断事件中断的程序,则修复标志缓存器128。微处理器100之设计会在标志缓存器128修复时以标志缓存器128之E位402字段数值更新控制缓存器144之E位148数值,以下将详细讨论之。因此,若中断事件发生时一加密程序正在执行(即提取单元104处于解密模式),当控制权交还给该加密程序时,以修复的E位字段402令E位148为设定状态,以修复提取单元104为解密模式。在一种实施方式中,E位148以及E位字段402为同一个具体硬件位,因此,储存标志缓存器128的E位字段402中数值即是储存E位148,且修复标志缓存器128的E位字段402的数值即是修复E位148。
参阅第5图,一方块图图解根据本发明技术所实现的一密钥加载指令500之格式。密钥加载指令500包括一操作码(opcode)502字段,特地标示其为微处理器100指令集内的密钥加载指令500。在一种实施方式中,操作码字段502数值为0FA6/4(x86领域)。密钥加载指令500包括两个操作数:一密钥缓存器档案目标地址504以及一安全存储区来源地址506。该安全存储区来源地址506为安全存储区122中储存一16字节主密钥的一地址。密钥缓存器档案地址504标示密钥缓存器档案124内的一个缓存器的地址,此缓存器将加载自安全存储区122载出之16字节主密钥。在一种实施方式中,若一程序企图在微处理器100不为安全操作模式下执行密钥加载指令500,则视之为无效指令异常;此外,若安全存储区来源地址506数值位于有效安全存储区122之外,则视之为一般保护异常。在一种实施方式中,若一程序试图在微处理器100不为最高权限级别时(例如,x86环0权限/x86ring 0)执行密钥加载指令500,则视之为无效指令异常。在某些状况下,16字节主密钥之构成可能包括在加密指令的实时数据字段内。所述实时数据可被一块一块移至安全存储区122组成16字节的密钥。
现在,参阅第6图,一方块图图解根据本发明技术所实现的一密钥切换指令600之格式。密钥切换指令600包括一操作码602字段,特指其为微处理器100指令集内的密钥切换指令600。密钥切换指令600更包括一密钥缓存器档案索引字段604,标示密钥缓存器档案124一序列缓存器中的开端,以自此将密钥加载主密钥缓存器142。在一种实施方式中,若一程序尝试在微处理器100不为安全操作模式时执行一密钥切换指令600,则视之为无效指令异常。在一种实施方式中,若一程序意图在微处理器100不为最高权限级别(例如,x86环0权限)时执行一密钥切换指令600,则视之为无效指令异常。在一种实施方式中,密钥切换指令600为原子操作型式(atomic),即不可中断;此处所讨论,用于加载密钥至主密钥缓存器142的其它指令也是如此─例如,以下将讨论的分支与切换密钥指令。
现在,参阅第7图,一流程图图解第1图之微处理器100之操作,其中,根据本发明技术执行第6图介绍的密钥切换指令600。流程始于方块702。
在方块702,译码单元108将一密钥切换指令600译码,且将译码结果代入微代码单元132内实现密钥切换指令600的微代码程序。流程接着进入方块704。
在方块704,微代码会根据密钥缓存器档案索引字段604自密钥缓存器档案124下载主密钥缓存器142的内容。较佳实施方式是:微代码以密钥缓存器档案索引字段604所标示的密钥缓存器为起始,自密钥缓存器档案124下载连续的n个缓存器内容作为n个密钥存入主密钥缓存器142,其中n为主密钥缓存器142的总数。在一种实施方式中,数值n可标示于密钥切换指令600的一额外空间,设定为少于主密钥缓存器142的总数。流程接着进入方块706。
在方块706,微代码使微处理器100分支至后续的x86指令(即该密钥切换指令600之后的指令),将导致微处理器100中较密钥切换指令600新的所有x86指令被清空,致使微处理器100内、较切换至后续x86指令的微操作新的所有微操作被清空。上述被清空的指令包括自指令高速缓存102提取出、缓冲暂存于提取单元104以及译码单元108内等待解密与译码的所有指令字节106。流程接着进入方块708。
在方块708,基于方块706分支至后续指令的操作,提取单元104开始利用方块704加载主密钥缓存器142的新一组密钥值自指令高速缓存102提取并且解密指令数据106。流程结束于方块708。
如第7图所示,密钥切换指令600令正在执行中的加密程序在自指令高速缓存102提取出来的同时得以改变主密钥缓存器142内所储存、供解密该加密程序使用的内容。所述主密钥缓存器142动态调整技术使得加密该程序的有效密钥长度超越提取单元104先天支持的长度(例如,第2图实施方式所提供的2048字节);如第8图所示程序,若将之以第1图微处理器100操作,黑客会更不易攻破计算机系统的安全防护。
现在,参阅第8图,一方块图图解根据本发明技术所实现的一加密程序的一内存用量(memory footprint)800,其中采用第6图所示之密钥切换指令600。第8图所示之加密程序内存用量800包括连续数「块chunk」指令数据字节。每一「块」的内容为一序列多个指令数据字节(其中为预先加密的数据),且属于同一「块」的指令数据字节是由同样的一套主密钥缓存器142数值解密。因此,不同两「块」的界线是由密钥切换指令600定义。也就是说,各「块」的上、下界是由密钥切换指令600之位置区分(或者,以一程序的第一「块」为例,其上界为该程序的起始处;此外,以该程序的最后一「块」为例,其下界为该程序的结束处)。因此,各「块」指令数据字节是由提取单元104基于不同套主密钥缓存器142数值解密,意即各「块」指令数据字节的解密是根据前一「块」所供应的一密钥切换指令600所加载主密钥缓存器142数值。加密一程序的后处理器(post-processor)会知晓各密钥切换指令600所在之内存地址,并且会利用此信息─即提取地址的相关地址位─配合密钥切换指令600密钥数值产生加密密钥字节,以加密该程序。一些目的文件格式(object file format)允许程序设计者标示程序加载内存何处,或至少载明特定大小的对齐形式(例如,页面边界pageboundary),以提供足够的地址信息加密该程序。此外,一些操作系统默认值是将程序加载页面边界上。
密钥切换指令600可安置于程序的任何地方。然而,若密钥切换指令600加载特定值至主密钥缓存器142供下一「块」指令数据字节解密使用、且密钥切换指令600(或甚至密钥加载指令500)之位置导致每一「块」之长度短于、或等于提取单元104所能应付的有效密钥长度(例如,第2图实施方式所揭露的2048字节),则程序可被以有效长度等同整体程序长度的密钥加密,此为相当强健的加密方式。此外,即使密钥切换指令600的使用使得有效密钥长度仍短于加密程序的长度(即,同样一套主密钥缓存器142数值被用于加密一程序的多个「块」),改变「块」尺寸(例如,不限定全为2048字节)可增加黑客破解系统的困难度,因为,黑客必须先判断以同一套主密钥缓存器142数值加密的「块」位于何处,并且必须判断该些长度不一的「块」各自的尺寸。
值得注意的是,以密钥切换指令600实现的动态密钥切换耗费相当大量的频率数目,主要是因为流水线必须清空。此外,在一种实施方式中,密钥切换指令600主要是以微代码(microcode)实现,通常较非微代码实现的指令慢。因此,程序代码开发者须考虑密钥切换指令对效能的影响,在执行速度以及特定应用之安全性考虑之间寻求平衡点。
现在,参阅第9图,一方块图图解根据本发明技术实现的一分支与切换密钥指令900的格式。首先叙述该分支与切换密钥指令900的必要性。
根据以上实施例所揭露内容,加密程序交由提取单元104提取的各个16字节区块的指令数据是有先经过加密运算(采异或技术),所采用的加密密钥等同提取单元104用来解密(异或运算)所提取之各区块之指令数据106的各个16字节长之解密密钥174。如以上所述,解密密钥174的字节数值是由提取单元104基于以下两种输入计算而得:储存于主密钥缓存器142的主密钥字节数值、以及所提取之16字节区块之指令数据106的提取地址134的部分位(以第2图所揭露实施方式为例,为位[10:4])。因此,加密一程序使之由微处理器100执行的一后处理器会知晓将储存于主密钥缓存器142的主密钥字节数值、以及一地址(或更限定为该地址的数个相关位);该地址指示加密程序将被加载内存何处、且微处理器100将自此处一连串地提取出该加密程序数个区块的指令数据。基于上述信息,后处理器得以适切产生解密密钥174数值,用于加密该程序的各个16字节区块之指令数据。
如以上所讨论,当一分支指令被预测到且/或被执行,提取单元104会以分支目标地址更新提取地址134。只要加密程序从未改变(经由密钥切换指令600)主密钥缓存器142内储存的主密钥数值,分支指令是由提取单元104透明控制。也就是说,提取单元104会采用同样的主密钥缓存器142数值估算解密密钥174,以供解密包括该分支指令的一区块之指令数据106、以及解密该分支指令之目标地址所指的一区块之指令数据106内的指令。然而,程序改变(经由密钥切换指令600)主密钥缓存器142数值的能力意味着提取单元104有可能以一套主密钥缓存器142数值估算解密密钥174解密包括该分支指令的一区块之指令数据106,并以不同的另外一套主密钥缓存器142数值估算解密密钥174解密该分支指令之目标地址所指的一区块之指令数据106内的指令。解决此问题的一种方法是限定分支目标地址于程序同一「块」中。另外一种解决方式是采用第9图所揭露的分支与切换密钥指令900。
再次参阅第9图,一方块图图解根据本发明技术实现的一分支与切换密钥指令900的格式。分支与切换密钥指令900包括一操作码902字段,标示其为微处理器100指令集内的分支与切换密钥指令900。分支与切换密钥指令900更包括一密钥缓存器档案索引字段904,标示密钥缓存器档案124中一连串缓存器里的开端,以自此将密钥加载主密钥缓存器142。分支与切换密钥指令900更包括一分支信息字段906,记载分支指令的典型信息─如,计算目标地址的信息、以及分支条件。在一种实施方式中,若一程序在微处理器100不为安全执行模式时尝试执行一分支与切换密钥指令900,则视之为无效指令异常。在一种实施方式中,若一程序在微处理器100不为最高权限层级(例如,x86的环0权限)时试图执行分支与切换密钥指令900,则视之为无效指令异常。在一种实施方式中,分支与切换密钥指令900为原子操作型(atomic)。
参阅第10图,一流程图图解第1图微处理器100之操作,其中,根据本发明技术执行第9图所揭露之分支与切换密钥指令900。流程始于方块1002。
在方块1002,译码单元108译码一分支与切换密钥指令900且将之代入微代码单元132中实现该分支与切换密钥指令900的微代码程序。流程接着进入方块1006。
在方块1006,微代码解出分支方向(采用、或不采用)、以及目标地址。值得注意的是,对于无条件型分支指令(unconditional branch instruction),所述方向衡为采用。流程接着进入判断方块1008。
在判断方块1008,微代码判断方块1006所解出的方向是否为采用。若为采用,流程进入方块1014。反之,流程进入方块1012。
在方块1012,微代码不切换密钥、或跳至目标地址,因为分支操作未被采用。流程结束于方块1012。
在方块1014,微代码根据密钥缓存器档案索引字段904,将密钥自密钥缓存器档案124加载主密钥缓存器142。较佳实施例是,微代码以密钥缓存器档案索引字段904所标示的位置为起始,将密钥缓存器档案124内n个邻近缓存器所记载的n个密钥加载主密钥缓存器142,其中n为主密钥缓存器142的总数。在一种实施方式中,n值可纪录于分支与切换密钥指令900的一额外空间,设定为小于主密钥缓存器142总数的值。流程接着进入方块1016。
在方块1016,微代码使得微处理器100跳至方块1006所解出的目标地址,将导致微处理器100中较分支与切换密钥指令900新的所有x86指令被清空,致使微处理器100内、较分支至目标地址的微操作新的所有微操作被清空。上述被清空的指令包括自指令高速缓存102提取出、缓冲暂存于提取单元104以及译码单元108内等待解密与译码的所有指令字节106。流程接着进入方块1008。
在方块1018,随着方块1016分支至目标地址的操作,提取单元104采用方块1014加载主密钥缓存器142的新一组密钥数值开始自指令高速缓存102提取且解密指令数据106。流程结束于方块1018。
现在,参阅第11图,一流程图图解根据本发明技术所实现的一后处理器的操作。所述后处理器为软件工具,可用于后处理一程序并加密之,以交由第1图的微处理器100执行。流程始于方块1102。
在方块1102,后处理器接收一程序的一目的文件。根据一种实施方式,该目的文件内的分支指令的目标地址可在程序执行前确定;例如,指向固定目标地址的分支指令。在程序运行前决定好目标地址的分支指令尚有另一形式,例如,一相对分支指令(relativebranch instruction),其中记载一偏移量,用来加上分支指令所在之内存地址,以求得分支目标地址。反之,关于目标地址不会在程序执行前确定的分支指令,其中一种例子是基于缓存器或内存所储存的操作数计算出目标地址,因此,其值在程序执行当中可能有变动。流程接着进入方块1104。
在方块1104,后微处理器将跨块分支指令(inter-chunk branch instruction)以分支与切换密钥指令900取代,所述指令900在密钥缓存器档案索引空间904储存有适当的数值,该数值乃基于分支指令之目标地址所坐落的「块」而设定。如第8图所揭露内容,一「块」是由一序列多个指令数据字节所组成,将由同一套主密钥缓存器142数值解密。因此,跨块分支指令之目标地址所坐落的「块」不同于分支指令本身的「块」。值得注意的是,块内分支─即目标地址与本身位于同一「块」的分支指令─无须被替代。值得注意的是,产生出原始档(source file)以产出目的档的程序设计及/或编译器可视需求明确包括分支与切换密钥指令900,以降低后处理器取代操作的负担。流程接着进入方块1106。
在方块1106,后处理器加密该程序。后处理器知道每一「块」之内存位置以及主密钥缓存器142数值,并将之用于加密该程序。流程结束于方块1106。
现在,参阅第12图,一方块图图解本发明技术另一种实施方式所实现的一分支与切换密钥指令1200之格式。第12图所示之分支与切换密钥指令1200适用于目标地址在程序执行前为未知的分支操作,以下将详细讨论之。分支与切换密钥指令1200包括一操作码1202字段,用以标示其为微处理器100指令集内的分支与切换密钥指令1200。分支与切换密钥指令1200同样包括一分支信息字段906,功用与第9图之分支与切换密钥指令900的该字段类似。在一种实施方式中,若一程序在微处理器100不为安全执行模式时试图执行分支与切换密钥指令1200,则视之为无效指令异常。在一种实施方式中,若一程序在微处理器100不为最高权限级别(例如,x86环0权限)时试图执行一分支与切换密钥指令1200,则视之为无效指令异常。在一种实施方式中,分支与切换密钥指令1200为原子型式。
现在,参阅第13图,一方块图图解根据本发明技术实现的「块」地址范围表1300。表格1300包括多个单元。每一单元与加密程序的一「块」相关。每一单元包括一地址范围字段1302以及一密钥缓存器档案索引字段1304。地址范围字段1302标示所对应「块」的内存地址范围。密钥缓存器档案索引字段1304标示密钥缓存器档案124内的缓存器,由分支与切换密钥指令1200将索引所指的缓存器所储存的密钥数值加载主密钥缓存器142,供提取单元104解密该「块」使用。以下参考第18图进行讨论,表格1300于需要存取表格1300内容的分支与切换密钥指令1200执行前加载微处理器100。
现在,参阅第14图,一流程图图解第1图微处理器100的操作,其中,根据本发明技术执行第12图的分支与切换密钥指令1200。流程始于方块1402。
在方块1402,译码单元108译码一分支与切换密钥指令1200且将之代入微代码单元132中实现分支与切换密钥指令1200的微代码程序。流程接着进入方块1406。
在方块1406,微代码解出分支方向(采用、或不采用)、且找出目标地址。流程接着进入判断方块1408。
在判断方块1408,微代码判断方块1406所解出的分支方向是否为采用。若为采用,流程进入方块1414。反之,流程进入方块1412。
在方块1412,微代码不切换密钥、或跳至目标地址,因为该分支未被采用。流程结束于方块1412。
在方块1414,微代码基于方块1406所解出的目标地址查询第13图所示之表格1300,得到该目标地址所坐落之「块」所对应之密钥缓存器档案索引字段1304的内容。微代码接着基于密钥缓存器档案索引字段1304内所记载的索引,自密钥缓存器档案124将密钥数值加载主密钥缓存器142。较佳实施方式是,微代码根据密钥缓存器档案索引字段1304所储存的索引,自密钥缓存器档案124将n个相邻缓存器储存的n个密钥值加载主密钥缓存器142的,其中,n为主密钥缓存器142的总数。在一种实施方式中,数值n可纪录于分支与切换密钥指令1200的一额外字段中,设定为少于主密钥缓存器142总数。流程接着进入方块1416。
在方块1416,微代码致使微处理器100分支至方块1406所解出的目标地址,将导致微处理器100中较分支与切换密钥指令1200新的所有x86指令被清空,致使微处理器100内、较分支至目标地址的微操作新的所有微操作被清空。上述被清空的指令包括自指令高速缓存102提取出、缓冲暂存于提取单元104以及译码单元108内等待解密与译码的所有指令字节106。流程接着进入方块1418。
在方块1418,随着方块1416分支至目标地址的操作,提取单元104采用方块1414加载主密钥缓存器142的新一套密钥值,开始自指令高速缓存102提取并且解密指令数据106。流程结束于方块1418。
现在,参考第15图,一方块图图解根据本发明技术另外一种实施方式所实现的一分支与切换密钥指令1500的格式。第15图所示之分支与切换密钥指令1500以及其操作类似第12图所示之分支与切换密钥指令1200。然而,取代自密钥缓存器档案124加载密钥至主密钥缓存器142,分支与切换密钥指令1500是自安全存储区122加载密钥至主密钥缓存器142,以下讨论之。
现在,参考第16图,一方块图图解根据本发明技术所实现的「块」地址范围表1600。第16图所示表格1600类似第13图所示之表格1300。然而,取代包括一密钥缓存器档案索引字段1304,表格1600包括一安全存储区地址字段1604。安全存储区地址字段1604记载安全存储区122内的一地址,该地址储存的密钥值须由分支与切换密钥指令1500加载主密钥缓存器142,以供该提取单元104解密该「块」时使用。以下讨论参考第18图内容,表格1600是在需要查询该表格1600的分支与切换密钥指令1500被执行前加载微处理器100。在一种实施方式中,安全存储区122地址之较低数个位无须储存在安全存储区地址字段1604,特别是因为安全存储区122中储存一组密钥的位置之总量相当大(例如,16字节x 5)、且该组密钥可沿着一设定尺寸范围对齐。
现在,参阅第17图,一流程图图解第1图微处理器100的操作,其中根据本发明技术执行第15图的分支与切换密钥指令1500。流程始于方块1702。第17图之流程图的许多方块与第14图的许多方块类似,因此采同样的编号。然而,方块1414是由方块1714取代,微代码基于方块1406所求得的目标地址查表第16图之表格1600,以获得目标地址所坐落的「块」之安全存储区地址字段1604数值。微代码接着根据安全存储区地址字段1604数值自安全存储区122将密钥数值加载主密钥缓存器142。较佳实施方式是,微代码由安全存储区地址字段1604数值自安全存储区122将n个邻近16字节空间位置内所储存的n个密钥数值加载主密钥缓存器142,其中n为主密钥缓存器142的总数。在一种实施方式中,数值n可记载于分支与切换密钥指令1500中一额外字段,设定为少于主密钥缓存器142总数。
现在,参阅第18图,一流程图图解根据本发明另外一种实施方式所实现的一后处理器的操作。所述后处理器可用于后处理一程序并加密之,以交由第1图的微处理器100执行。流程始于方块1802。
在方块1802,后处理器接收一程序的目的文件。根据一种实施方式,该目的文件内的分支指令,可为目标地址在程序执行前判定、可为目标地址不可在程序执行前判定。流程接着进入方块1803。
在方块1803,后处理器建立第13图或第16图之「块」地址范围表1300或1600,以列入该目标文件。在一种实施方式中,操作系统在加载且执行一加密程序前将表格1300/1600加载微处理器100,使分支与切换密钥指令1200/1500得以存取之。在一种实施方式中,后处理器在程序中插入指令,以在任何分支与切换密钥指令1200/1500执行前加载表格1300/1600至微处理器100。流程接着进入方块1804。
在方块1804,类似先前所讨论、关于第11图之方块1104的操作,后处理器将每个执行前目标地址可决定的跨块分支指令以第9图的分支与切换密钥指令900取代,指令900基于分支指令目标地址所在「块」记载有合适的密钥缓存器档案索引字段904数值。流程接着进入方块1805。
在方块1805,后处理器根据方块1803所产生的表格型态(1300/1600)将每个限于执行过程中决定目标地址的分支指令以第12图或第15图所示之分支与切换密钥指令1200或1500取代。流程接着进入方块1806。
在方块1806,后处理器加密该程序。该后处理器知道关于各「块」的内存位置与主密钥缓存器142数值,将用于加密该程序。流程结束于方块1806。
现在,参阅第19图,一流程图图解第1图微处理器100的操作,其中,根据本发明技术处理加密程序以及纯文字程序之间的任务切换。流程始于方块1902。
在方块1902,标志缓存器128的E位字段402的E位以及第1图控制缓存器144之E位148由微处理器100的一重置操作清空。流程接着进入方块1904。
在方块1904,微处理器100在执行其重置微代码进行初始化后,开始提取并且执行使用者程序指令(例如,系统韧体),其为纯文字程序指令。特别是,由于E位128为清空,如前所述,提取单元104视提取出来的指令数据106为纯文字指令。流程接着进入方块1906。
在方块1906,系统韧体(例如,操作系统、韧体、基本输入输出系统BIOS…等)接收一要求(request),要执行一加密程序。在一种实施方式中,执行一加密程序的上述要求伴随、或由一切换操作指示,以切换至微处理器100的一安全执行模式,如以上讨论内容。在一种实施方式中,微处理器100仅在安全执行模式时,方允许操作于一解密模式(即,E位148为设定状态)。在一种实施方式中,微处理器100仅在系统管理模式(system managementmode,例如,x86架构中常见的SSM),方允许以解密模式操作。流程接着进入方块1908。
在方块1908,系统软件于主密钥缓存器142中加载其初始值,与程序中将被执行的第一「块」相关。在一种实施方式中,系统软件执行一密钥切换指令600下载密钥至主密钥缓存器142。在加载密钥至主密钥缓存器142之前,密钥缓存器档案124的内容可由一或多个密钥加载指令500加载。在一种实施方式中,加载密钥至主密钥缓存器142以及密钥缓存器档案124之前,安全存储区122可先被写入密钥数值,其中,所述写入乃经由常见的安全通道技术,例如,AES或RSA加密通道,以防止黑客窥探其值。如以上所讨论,以上密钥数值可储存在一安全非挥发性内存(例如闪存)经由一隔离串行总线(private serial bus)耦接微处理器100,或者,可储存在微处理器100的一非挥发性单次写入内存。如以上讨论,所述程序可包含在单一「块」中。也就是说,所述程序可不包括密钥切换指令600,整个程序可由单一套主密钥缓存器142数值解密。流程接着进入方块1916。
在方块1916,随着控制权转移至加密程序,微处理器100设定标志缓存器128的E位字段402标示目前所执行的程序为加密型式,且设定控制缓存器144的E位148,使提取单元104处于解密模式。微处理器100更致使流水线内的指令被刷新,其动作类似第7图方块706所实行的刷新操作。流程接着进入方块1918。
在方块1918,提取单元104提取加密程序内的指令106,并且参考第1图至第3图所揭露的技术将之以解密模式解密并且执行之。流程接着进入方块1922。
在方块1922,微处理器100提取并且执行加密程序时,微处理器100接收到中断事件。举例说明之,所述中断事件可为一中断interrupt、一异常exception(如页面错误pagefault)、或任务切换task switch。当一中断事件发生,微处理器100流水线所有待处理的指令会被清空。所以,若流水线中有任何先前提取的加密指令,将之清空。此外,自指令高速缓存102所提取出、可能在缓冲储存在提取单元104以及译码单元108中等待被解密、译码的所有指令字节会被清空。在一种实施方式中,微代码被唤起响应中断事件。流程接着进入方块1924。
在方块1924,微处理器100储存标志缓存器128(以及微处理器100其它结构状态,包括受中断的加密程序的目前指令指针数值)至一堆栈式内存(stack memory)。储存加密程序之E位字段402数值将使其得以在后续操作中修复(在方块1934)。流程接着进入方块1926。
在方块1926,当控制权转移到新的程序(例如,中断处理程序interrupt handler、异常处理程序exception handler、或新任务),微处理器100清空标志缓存器128的E位字段402、以及控制缓存器144的E位148,以应付纯文字的新程序。也就是说,第19图所示实施例假设微处理器100同一时间只有允许运作一个加密程序,且已有一个加密程序在执行(但被中断)。第22图至第26图另外揭露有其它种的实施方式。流程接着进入方块1928。
在方块1928,提取单元104参考第1图至第3图所揭露内容以纯文字模式提取新程序的指令106。特别是,控制缓存器144内E位148的清空状态使得多任务器154将指令数据106与多位的二进制零值176进行异或运算,使得指令数据106不被解密操作。流程接着进入方块1932。
在方块1932,新程序执行一返回操作自中断指令(例如,x86IRET)或类似指令返回,使得控制权回归加密程序。在一种实施方式中,自中断指令返回的操作由微代码实现。流程接着进入方块1934。
在方块1934,响应前述自中断指令返回的操作,由于控制权移转回加密程序,微处理器100修复标志缓存器128,令标志缓存器128之E位字段402重回先前方块1924所储存的设定状态。流程接着进入方块1938。
在方块1938,由于控制权移转回加密程序,微处理器100以标志缓存器128的E位字段402数值更新控制缓存器144的E位148,使得提取单元104重新提取并且解密该加密程序之指令数据106。流程接着进入方块1942。
在方块1942,微代码令微处理器100分支至先前方块1924储存于堆栈式内存中的指令指针数值,使得微处理器100中所有x86指令清空、且使得微处理器100中所有微操作清空。所清空内容包括提取自指令高速缓存102、缓冲暂存在提取单元104以及译码单元108中等待被解密、译码的所有指令字节106。流程接着进入方块1944。
在方块1944,提取单元104重新开始提取该加密程序内的指令106,并且参考第1图至第3图所揭露技术以解密模式解密并且执行之。流程结束于方块1944。
现在,参考第20图,一流程图图解根据本发明技术实现的一系统软件之操作,由第1图之微处理器100执行。第20图流程可配合第19图内容执行。流程始于方块2002。
在方块2002,系统软件收到一要求,欲执行一个新的加密程序。流程接着进入决策方块2004。
在决策方块2004,系统软件判断此一加密程序是否为系统已在执行的程序之一。在一种实施方式中,系统软件以一旗标标示一加密程序是否为系统中已在执行的程序之一。若此加密程序是系统已在执行的程序之一,流程进入方块2006,反之,则流程进入方块2008。
在方块2006,系统软件等待该加密程序执行完毕且不再是系统执行中的程序之一。流程接着进入方块2008。
在方块2008,微处理器100允许新的加密程序开始执行。流程结束于方块2008。
现在,参考第21图,一方块图根据本发明技术另外一种实施方式,图解第1图标志缓存器128的字段。第21图的标志缓存器128类似第4图所示实施方式,相比之,更包括索引字段(index bits)2104。根据一种实施方式,索引字段2104(类似E位402)通常是x86架构所预留的位。索引字段2104用于应付多个加密程序的切换,以下详细讨论之。较佳实施方式是,密钥切换指令600以及分支与切换密钥指令900/1200以本身的密钥缓存器索引字段604/904/1304更新标志缓存器128的索引字段2104。
现在,参考第22图,一流程图图解第1图微处理器100的操作,其中,根据本发明技术采用第21图所示之标志缓存器128实行多个加密程序之间的任务切换。流程接着进入方块2202。
在方块2202,一要求发向该系统软件,要执行一个新的加密程序。流程接着进入决策方块2204。
在决策方块2204,系统软件判断密钥缓存器档案124中是否有空间应付一个新的加密程序。在一种实施方式中,方块2202所产生的该要求会指出需要密钥缓存器档案124内多少空间。若密钥缓存器档案124中有空间应付新的加密程序,流程进入方块2208,反之,流程进入方块2206。
在方块2206,系统软件等待一或多个加密程序完成、使密钥缓存器档案124腾出空间应付新的加密程序。流程接着进入方块2208。
在方块2208,系统软件将密钥缓存器档案124内的空间配置给新的加密程序,并且随之填写标志缓存器128中的索引字段2104,以标示密钥缓存器档案124中新配置的空间。流程接着进入方块2212。
在方块2212,系统软件在方块2208所配置的密钥缓存器档案124位置加载供新程序使用的密钥数值。如以上讨论,所加载的密钥数值可采用密钥加载指令500自安全存储区122加载,或者,在必要情况下,可以安全管道由微处理器100外部位置取得。流程接着进入方块2214。
在方块2214,系统软件基于密钥缓存器档案索引字段604/904/1304将密钥自密钥缓存器档案124加载主密钥缓存器142。在一种实施方式中,系统软件执行一密钥切换指令600加载密钥至主密钥缓存器142。流程接着进入方块2216。
在方块2216,由于控制权移转至加密程序,微处理器100设定标志缓存器128之E位字段402以标示目前执行的程序为加密型式,并且设定控制缓存器144的E位148以设定提取单元104为解密模式。流程结束于方块2216。
现在,参考第23图,一流程图图解第1图微处理器100的操作,其中,根据本发明技术采用第21图所示之标志缓存器128应付多个加密程序之间的任务切换。流程始于方块2302。
在方块2302,目前执行的程序执行一返回操作,自一中断指令返回,引发一任务切换至新程序;所述新程序先前曾被执行过但被跳开,且其结构状态(例如,标志缓存器128、指令指针缓存器、以及通用缓存器)曾被储存在堆栈式内存中。如先前所提过,在一种实施方式中,自中断指令返回的操作是由微代码实现。现在执行中的程序以及新的程序可为加密程序或纯文字程序。流程进入方块2304。
在方块2304,微处理器100根据堆栈式内存修复标志缓存器128,以应付后续返回的程序。也就是说,微处理器100将后续程序(即目前跳换回的程序)先前跳换出去时储存于堆栈式内存的标志缓存器128数值重新加载标志缓存器128。流程接着进入决策方块2306。
在决策方块2306,微处理器100判断修复后的标志缓存器128之E位402是否为设定状态。若是,则流程进入方块2308;反之,则流程进入方块2312。
在方块2308,微处理器100根据方块2304所修复的EFLAGS缓存器128索引字段2104数值将密钥加载密钥缓存器档案124。流程接着进入方块2312。
在方块2312,微处理器100将控制缓存器144之E位148的内容以方块2304所修复的标志缓存器128之E位字段402数值更新。因此,若后续的程序是一个加密程序,提取单元104会被设定为解密模式,反之,则设定为纯文字模式。流程接着进入方块2314。
在方块2314,微处理器100以堆栈式内存的内容修复指令指针缓存器、并且分支跳跃至指令指针所指的位置,所述动作将清除微处理器100所有x86指令,并且清除微处理器所有微操作。所清除的包括自指令高速缓存102所提取出、缓冲暂存于提取单元104、译码单元108中等待解密、译码的所有指令字节106。流程接着进入方块2316。
在方块2316,提取单元104参考第1图至第3图技术重新开始自后续程序中提取指令106,并视方块2312所修复的控制缓存器144之E位148数值以解密模式或纯文字模式操作。流程结束于方块2316。
现在,参考第24图,一方块图根据本发明、图解第1图密钥缓存器档案124之单一个缓存器的另外一种实施方式。根据第24图所示之实施方式,每个密钥缓存器档案124更包括一位─为淘汰位2402(kill bit,以下简称K位)。K位2402用于应付微处理器100对多个加密程序的多任务(multitasking)操作,所述多个加密程序总计需要多于密钥缓存器档案124空间尺寸的密钥储存空间,以下将详述之。
现在,参考第25图,一流程图图解第1图微处理器100的操作,其中根据本发明技术以第21图之标志缓存器128以及第24图之密钥缓存器档案124实现多个加密程序之间之任务切换的另外一种实施方式。第25图所示流程类似第22图所示流程。不同处在于决策方块2204判定密钥缓存器档案124中没有足够可用空间时,第25图流程会进入方块2506而非不存在于第25图的方块2204。另外,若决策方块2204判定密钥缓存器档案124中尚有足够可用空间,则第25图流程同样进入第22图之方块2208至方块2216。
在方块2506,系统软件将密钥缓存器档案124中已经被其它加密程序使用(即已经被配置)的空间(即缓存器)配置出来,并且设定所配置缓存器的K位2402为设定状态,并且随之设定标志缓存器128的索引字段2104以标示新配置空间在密钥缓存器档案124中的位置。K位2402之设定状态,是标示该缓存器中关于其它加密程序的密钥值将被方块2212的操作覆写为新的加密程序的密钥值。然而,如以下第26图所叙述,其它加密程序的密钥值将在其返回程序中由方块2609重新加载。第25图流程进入方块2506,会接着导向第22图所示之方块2212,结束于方块2216。
现在,参阅第26图,一流程图图解第1图微处理器100的操作,其中根据本发明技术以第21图之标志缓存器128以及第24图之密钥缓存器档案124实现多个加密程序之间之任务切换的另外一种实施方式。第26图所示流程类似第23图所示流程。不同处在于,若决策方块2306判定标志缓存器128的E位402为设定,第26图令流程进入决策方块2607而非方块2308。
在决策方块2607,微处理器100判断密钥缓存器档案124中,由标志缓存器128索引字段2104数值(于方块2304中修复)所标示的任何缓存器之K位2402是否为设定状态。若是,则流程进入方块2609;若否,则流程进入方块2308。
在方块2609,微处理器100产生一异常警示(exception)交由一异常处理程序处理。在一种实施方式中,异常处理程序设计于系统软件中。在一种实施方式中,异常处理程序是由安全执行模式架构提供。根据方块2304所修复的标志缓存器128索引字段2104数值,异常处理程序将目前修复的加密程序(即现在所返回执行的加密程序)之密钥重新加载密钥缓存器档案124。异常处理程序可类似先前第19图所提及的方块1908作动,将修复之加密程序的密钥加载密钥缓存器档案124,或者,在必要情况下,自微处理器100外部将密钥载入安全存储区122。同样地,若密钥缓存器档案124中被重新加载的缓存器有被其它加密程序使用,系统软件会令其缓存器的K位2402为设定状态。流程接着自方块2609进入2308,且方块2308至2316是参考第23图内容。
如第24图至第26图所教示,此处所叙述的实施方式令微处理器100得以实行多个加密程序的多任务操作,即便上述加密程序需要密钥暂存空间总合多于密钥缓存器124空间尺寸。
现在,参考第27图,一方块图图解修改自第1图微处理器100的本发明另外一种实施方式。与第1图类似的组件是采用同样标号;例如,指令高速缓存102、提取单元104以及密钥缓存器档案124。然而,此处提取单元104被修正成更包括密钥切换逻辑2712,耦接第1图所介绍之主密钥缓存器档案142以及密钥缓存器档案124。第27图之微处理器100更包括一分支目标地址高速缓存(branch target address cache,BTAC)2702。BTAC 2702接收第1图所揭露之提取地址134,且与指令高速缓存102的存取平行,皆是基于该提取地址134。根据提取地址134,BTAC 2702供应分支目标地址2706给第1图所揭露的提取地址产生器164,供应一采用/不采用指标(T/NT indicator)2708以及一型式指针(type indicator)2714给密钥切换逻辑2712,并且供应一密钥缓存器档案(KRF)索引2716给密钥缓存器档案124。
现在,参阅第28图,一方块图根据本发明技术更详细图解第27图的BTAC 2702。BTAC 2702包括一BTAC矩阵2802,其中具有复数个BTAC单元2808,第29图图解BTAC单元2808的内容。BTAC 2802储存的信息包括先前执行过的分支指令的历史信息,以预测后续执行之分支指令的方向以及目标地址。特别是,BTAC 2802会采用储存的历史信息,基于提取的地址134预测先前执行过的分支指令后续发生的提取操作。分支目标地址缓存之操作可参考常见的分支预测技术。然而,本发明所揭露的BTAC 2802是更修正成记录先前执行过的分支与切换密钥指令900/1200的历史信息,以进行相关的预测操作。特别是,储存的历史纪录使得BTAC 2802得以在提取时间内预测所提取的分支与切换密钥指令900/1200将加载主密钥缓存器142的该组数值。此操作致能密钥切换逻辑2712在分支与切换密钥指令900/1200实际执行前将密钥数值加载,避免受限于需根据分支与切换密钥指令900/1200之执行清空微处理器100的流水线内容,以下将详细讨论之。此外,根据一种实施方式,BTAC 2802更被修正成储存包括先前执行过的密钥切换指令600的历史信息,以达到相同的效果。
现在,参阅第29图,一方块图根据本发明技术更详细图解第28图BTAC单元2808的内容。每个单元2808包括一有效位2902指示所属单元2808是否为有效。每个单元2808更包括一标记字段2904,用以与提取地址134的部分内容比较。若提取地址134的索引部分选择的单元2808使得提取地址134之标记部分吻合其中有效标记2904,则提取地址134正中BTAC2802。每个阵列单元2808更包括一目标地址字段2906,用于储存先前执行过之分支指令─包括分支与切换密钥指令900/1200─的目标地址。每个阵列单元2808更包括一采用/不采用字段2908,用以储存先前执行过的分支指令─包括分支与切换密钥指令900/1200─的方向(采用/不采用)记录。每个阵列单元2808更包括一密钥缓存器档案索引2912字段,用于储存先前执行过的分支与切换密钥指令900/1200的密钥缓存器档案索引904/1304记录,以下将详细讨论之。根据一种实施方式,BTAC 2802是在其密钥缓存器档案索引2912字段储存先前执行过的密钥切换指令600的密钥缓存器档案索引604记录。每个阵列单元2808更包括一型式字段2914,指示所纪录的指令的型式。例如,型式字段2914可标示所纪录的历史指令为一呼叫(call)、返回(return)、条件跳跃(conditional jump)、无条件跳跃(unconditionaljump)、分支与切换密钥指令900/1200、或密钥切换指令600。
现在,参阅第30图,一流程图图解第27图微处理器100的操作,其中,根据本发明技术,所述微处理器100包括第28图揭露的BTAC 2802。流程始于方块3002。
在方块3002,微处理器100执行一分支与切换密钥指令900/1200,以下将以第32图详述之。流程接着进入方块3004。
在方块3004,微处理器100在BTAC 2802中配置一阵列单元2808给执行过的分支与切换密钥指令900/1200,将该分支与切换密钥指令900/1200解出的方向、目标地址、密钥缓存器档案索引904/1304、以及指令型式分别纪录于所配置的该阵列单元2808之采用/不采用字段2908、目标地址字段2906、密钥缓存器档案索引2912字段、以及型式字段2914中,以作为该分支与切换密钥指令900/1200的历史信息。流程结束于方块3004。
现在,参阅第31图,一流程图图解第27图微处理器100的操作,其中,根据本发明技术,所述微处理器100包括第28图揭露的BTAC 2802。流程始于方块3102。
在方块3102,提取地址134供应给指令高速缓存102以及BTCA2802。流程接着进入方块3104。
在方块3104,提取地址134正中BTAC 2802,且BTAC 2802将对应的阵列单元2808之目标地址2906、采用/不采用2908、密钥缓存器档案索引2912字段以及型式2914字段的内容分别以目标地址2706、采用/不采用指针2708、密钥缓存器档案索引2716、以及型式指针2714输出。特别是,型式字段2914用于指示所储存指令为一分支与切换密钥指令900/1200。流程接着进入决策方块3106。
在决策方块3106,密钥切换逻辑2712藉由检验采用/不采用输出2708判断分支与切换密钥指令900/1200被BTAC 2802预测为会采用。若采用/不采用输出2708显示分支与切换密钥指令900/1200被预测为采用,流程接着进入方块3112;反之,流程接着进入方块3108。
在方块3108,微处理器100随着分支与切换密钥指令900/1200顺着输送一指示,显示BTAC 2802预测其不被采用。(此外,若采用/不采用输出2708显示该分支与切换密钥指令被预测为采用,微处理器100在方块3112随着该分支与切换密钥指令900/1200顺着输送一指示,显示BTAC 2802预测其会被采用)。流程结束于3108。
在方块3112,提取地址产生器164以BTAC 2802于方块3104所预测的目标地址2706更新提取地址134。流程接着进入方块3114。
在方块3114,根据BTAC 2802于方块3104所预测的密钥缓存器档案索引2712,密钥切换逻辑2712以其所指示之密钥缓存器档案124位置更新主密钥缓存器142内的密钥数值。在一种实施方式中,必要状况下,密钥切换逻辑2712会拖延提取单元104提取指令数据106内的区块,直至主密钥缓存器142被更新。流程接着进入方块3116。
在方块3116,提取单元104利用方块3114所加载的新主密钥缓存器142内容持续提取并且解密指令数据106。流程结束于方块3116。
现在,参阅第32图,一流程图图解第27图微处理器100的操作,其中,根据本发明技术,执行一分支与切换密钥指令900/1200。第32图流程在某一方面类似第10图流程,且类似的方块是采以同样标号。虽然第32图的讨论是参照第10图内容,其应用可更考虑第14图所介绍的分支与切换密钥指令1200操作。第32图流程始于方块1002。
在方块1002,译码单元108译码一分支与切换密钥指令900/1200,且将之代入微代码单元132实现分支与切换密钥指令900/1200的微代码程序。流程接着进入方块1006。
在方块1006,微代码解出分支方向(即采用/不采用)以及目标地址。流程接着进入方块3208。
在方块3208,微代码判断BTAC 2802是否为该分支与切换密钥指令900/1200提供一预测。若有提供,流程接着进入决策方块3214;若无提供,流程接着进入第10图的方块1008。
在决策方块3214,微代码藉由将BTAC 2802输送出的采用/不采用指针2708以及目标地址2706与方块1006所解出的方向以及目标地址判断BTAC2802所做的预测是否正确。若BTAC 2802的预测正确,则流程结束;反之,则流程来到决策方块3216。
在决策方块3216,微代码判断此不正确的BTAC 2802预测有没有被采用。若已被采用,流程进入方块3222;若无,流程进入第10图的方块1014。
在方块3222,微代码修复主密钥缓存器142的内容,因为BTAC 2802对分支与切换密钥指令900/1200所做的错误预测被采用,导致第31图方块3114将错误的密钥数值加载其中。在一种实施方式中,密钥切换逻辑2712包括修复主密钥缓存器142所需的储存组件与逻辑。在一种实施方式中,微代码产生一异常警示交由一异常处理器修复主密钥缓存器142。此外,微代码使得微处理器100分支跳跃到该分支与切换密钥指令900/1200之后后续的x86指令,使得微处理器100中新于该分支与切换密钥指令900/1200的所有x86指令清空,并且使微处理器100中较分支至目标地址之微代码新的所有微代码清空。被清空的内容包括读取自指令高速缓存102、且缓冲暂存于提取单元104、译码单元108中等待被译码的所有指令字节106。随着分支至后续的指令,提取单元104开始使用主密钥缓存器142内的该组修复后的密钥数值自指令高速缓存102提取并且解密指令数据106。流程结束于方块3222。
除了以上所述、由微处理器100实现的指令解密实施方式所带来的安全优势,发明人更发展出建议编码指南,其使用可配合以上实施方式,削弱藉由分析x86指令实际使用量、对加密x86码以统计技巧发展出的黑客攻击。
第一,由于黑客通常假设所提取的16字节的指令数据106全数为x86指令,因此,相对于程序执行流程,编码时应当在16字节区块之间加入「洞(holes)」。也就是说,其编码应当以多个指令跳跃一些指令字节,以未加密的字节产生多个「洞」,其中可填入适当的数值,以增加纯文字字节的熵值(entropy)。此外,倘若能更提升纯文字字节的熵值,其编码可尽可能采用实时数据值。此外,所述实时数据值可作为假线索,指向错误的指令操作码地址。
第二,所述编码可包括特别的NOP指令,其中包括“不理会”字段,填有适当数值以增加上述熵值。例如,x86指令0x0F0D05xxxxxxxx属于7字节的NOP,其中最后四个字节可为任意值。此外,NOP指令的操作码型式以及其「不理会」字节的数量更可有其它变化。
第三,许多x86指令具有与其它x86指令相同的基本功能。关于等效功能的指令,其编码可舍弃重复使用同样的指令,改采用多重型式并且/或采用使纯文字熵值提升的型式。例如,指令0xC10107以及指令0xC10025作的是同样的事情。甚至,某些等效指令是以不同长度的版本呈现,例如,0xEB22以及0xE90022;因此,编码时可采用多种长度但相同效果的指令。
第四,x86架构允许使用冗余且无意义的操作码前缀(opcode prefixes),因此,编码时可小心应用之,以更增加上述熵值。例如,指令0x40以及0x2627646567F2F340作的是完全一样的事情。因为其中仅有8个安全的x86前缀,他们需被小心地安插在编码中,以避免过度频繁地出现。
虽然已经列举多种实施例以密钥扩展器对主密钥缓存器数值中的一对数值进行旋转以及加/减运算,尚有其它实施方式可考虑使用,其中,密钥扩展器可对多于两个的主密钥缓存器数值进行运算,此外,所进行的运算可不同于旋转以及加/减运算。此外,第6图揭露的密钥切换指令600以及第9图揭露的分支与切换密钥指令900更可有其它实施方式,例如,将新的密钥数值由安全存储区122加载主密钥缓存器142而非由密钥缓存器档案124加载,并且,第15图所介绍的分支与切换密钥指令1500的其它实施方式是以索引字段2104储存安全存储区122的地址。此外,虽然已列举多种实施例调整BTAC2702储存KRF索引配合分支与切换密钥指令900/1200使用,尚有其它实施方式是调整BTAC 2702储存安全存储区地址,以配合分支与切换密钥指令1500使用。
特别是,由于解密密钥174衍生自第一以及第二密钥234与236,主密钥172(包含组成任一特定密钥对的第一以及第二密钥234与236)可替代为解密密钥元(decryption keyprimitives)。”元(primitive)”在此作为”衍生物(derivative)”的反义词。
以上列举的本发明诸多实施方式仅是作为说明例使用,并非意图限制发明范围。相关计算机技术领域人员可在不偏离本发明范围的前提下作出形式以及细节的诸多变形。例如,可以软件方式实现所述如函式、制作、模块化、模拟、说明、以及/或测试此篇所讨论之设备与方法的方式。实现方式包括一般程序语言(例如,C、C++)、硬件描述语言包括VerilogHDL、VHDL…等、或其它可用的程序工具。所述软件可载于任何已知的计算器可读媒体,例如,磁带、半导体、磁盘、或光盘(例如,CD-ROM、DVD-ROM等)、网络、有线传输、无线或其它通讯媒体。所述设备与方法的实施方式可包含于半导体知识产权核心,例如一微处理器核心(例如以HDL实现),并可转成硬件以集成电路实现。此外,所述之设备与方法可由软、硬件结合方式实现。因此,本发明范围不应限定于所述任何实施方式,应当是以下列权利要求项以及其等效技术界定之。特别是,本发明技术可以一般用途计算器所采用的微处理器实现。值得注意的是,本技术领域人员可能不偏离权利要求所定义之发明范围、以所揭露之概念以及特殊实施例为基础、设计或修正提出其它架构产生与本发明相同的效果。
Claims (17)
1.一种微处理器,包括:
安全内存,设置来储存、且提供加密密钥,用于加密的指令的解密;
指令处理流水线,被配置为提取并执行来自高速缓存的指令,更包括:
提取单元,提取该微处理器所支持的指令集架构中未加密以及加密的指令;
解密电路,被配置为使用从该安全内存接收的加密密钥对加密的指令进行解密;以及
一或多个执行单元,执行指令、或执行指令所转译出的微指令,
其中,该指令集架构包括密钥储存指令,用以储存一或多个加密密钥至该安全内存,其中,该微处理器支持加密的密钥储存指令,
其中,该微处理器采用加密的密钥储存指令时,是以第一组一或多个加密密钥对加密的密钥储存指令作解密,之后执行解密后的密钥储存指令,之后采用所述加密的密钥储存指令所提供的第二组的一或多个加密密钥解密后续组的一或多个加密的指令,
该微处理器因而使能加密的程序,以改变被用于解密后续多组程序指令的多组加密密钥。
2.如权利要求1所述的微处理器,其中该指令集架构包括安全执行模式指令,要求自一一般执行模式切换至一安全执行模式,其中该微处理器限制加密的程序的解密,直至该微处理器进入该安全执行模式。
3.如权利要求2所述的微处理器,其中根据切换至该安全执行模式的要求的指令的格式是否带有加密的参数,该微处理器条件允许该要求,符合的指令为特权程序或程序的一部分,且该加密的参数经解密后符合运行加密的程序的预设要求。
4.如权利要求3所述的微处理器,其中所述加密的参数与程序是不同的密钥编写机制作加密。
5.如权利要求1所述的微处理器,其中该密钥储存指令在实时数据栏提供一或多个加密密钥的内容。
6.如权利要求1所述的微处理器,执行解密的指令或解密的指令转译出的微指令且不曝露解密的指令或微指令。
7.如权利要求1所述的微处理器,更包括处理器总线,其中所述安全内存不可由该处理器总线存取。
8.如权利要求1所述的微处理器,还包括隔离于该安全内存的高速缓存级。
9.如权利要求1所述的微处理器,更包括AES或RSA加密通道,致使加密密钥的数值写入该安全内存。
10.如权利要求1所述的微处理器,其中,该安全内存不可由执行在非特权执行模式下的程序存取。
11.一种在微处理器中安全执行指令的方法,包括:
储存第一组的一或多个加密密钥至一安全内存,用于加密的指令的解密;
缓存第一组的加密的指令;
采用该第一组的一或多个加密密钥对该第一组的加密的指令作解密;
缓存加密的一密钥储存指令,以储存一第二组的一或多个加密密钥至该安全内存,用作加密的指令的解密;
采用该第一组的一或多个加密密钥对加密的该密钥储存指令作解密;
通过存储该第二组的一或多个加密密钥至该安全内存,以执行解密的密钥储存指令;
缓存一第二组的加密的指令;
采用该第二组的一或多个加密密钥对该第二组的加密的指令作解密。
12.如权利要求11所述之方法,更包括执行安全执行模式切换,要求自一般执行模式切换至安全执行模式,其中该微处理器限制加密的指令的解密,直至该微处理器进入该安全执行模式。
13.如权利要求12所述之方法,更根据切换至该安全执行模式的一要求的指令的格式是否带有加密的参数,允许切换至该安全执行模式的该要求,符合的指令为特权程序或程序的一部分,且该加密的参数经解密后符合运行加密的程序的预设要求。
14.如权利要求13所述之方法,更采用不同的密钥编写机制作所述加密的参数与程序之加密。
15.如权利要求11所述之方法,其中,该密钥储存指令在实时数据栏提供一或多个加密密钥的内容。
16.如权利要求11所述之方法,更经AES或RSA加密通道,将加密密钥的数值写入该安全内存。
17.一种非瞬时计算机介质,该计算机介质由运算装置运行,包括:
计算机用程序代码,载于该非瞬时计算机介质描述微处理器,该计算机用程序代码包括:
第一程序代码,描述安全内存储存、且提供加密密钥,用于加密的指令的解密;
第二程序代码,描述被配置为提取并执行来自高速缓存的指令的指令处理流水线,且指令处理流水线更包括:
第三程序代码,描述提取单元提取该微处理器所支持的指令集架构中未加密以及加密的指令,其中,该指令集架构包括密钥储存指令,用以储存一或多个加密密钥至该安全内存,且该微处理器支持加密的密钥储存指令;
第四程序代码,描述解密电路,所述解密电路被配置为使用从所述安全内存接收的加密密钥对加密的指令进行解密;以及
第五程序代码,描述一或多个执行单元执行指令、或执行指令所转译出的微指令,
第六程序代码,描述该微处理器的架构,以响应加密的密钥储存指令,其中以第一组的一或多个加密密钥对加密的密钥储存指令作解密,之后执行解密后的密钥储存指令,之后采用所述加密的密钥储存指令所提供的第二组的一或多个加密密钥解密后续组的一或多个加密的指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/884,547 US9911008B2 (en) | 2010-05-25 | 2015-10-15 | Microprocessor with on-the-fly switching of decryption keys |
US14/884,547 | 2015-10-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105843776A CN105843776A (zh) | 2016-08-10 |
CN105843776B true CN105843776B (zh) | 2018-11-27 |
Family
ID=56596903
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610212909.2A Active CN105843776B (zh) | 2015-10-15 | 2016-04-07 | 微处理器与其中安全执行指令的方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105843776B (zh) |
TW (2) | TWI627556B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789006A (zh) * | 2016-11-28 | 2017-05-31 | 范睿心 | 一种解密方法及系统 |
CN107145308B (zh) * | 2017-05-04 | 2021-06-22 | 惠州Tcl移动通信有限公司 | 移动终端、及其sd卡操作控制方法、系统、存储装置 |
US11070375B2 (en) | 2018-02-08 | 2021-07-20 | Micron Technology, Inc. | Key encryption handling |
TWI813815B (zh) * | 2019-05-09 | 2023-09-01 | 韓商愛思開海力士有限公司 | 記憶體模組、其操作方法、記憶體系統以及其操作方法 |
TWI786543B (zh) * | 2021-02-17 | 2022-12-11 | 韋僑科技股份有限公司 | 無線通訊模組及其應用裝置控制系統與應用裝置控制方法 |
US11632688B2 (en) * | 2021-07-15 | 2023-04-18 | Realtek Singapore Pte Ltd. | Network device and uplink data transmission method therefor |
CN115145832B (zh) * | 2022-09-05 | 2022-11-11 | 北京麟卓信息科技有限公司 | 一种公共数据的多线程访问轨迹的分析方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100361039C (zh) * | 2004-06-30 | 2008-01-09 | 富士通株式会社 | 安全处理器 |
TW200937248A (en) * | 2007-12-07 | 2009-09-01 | Atmel Corp | Secure software download |
CN104424407A (zh) * | 2013-08-27 | 2015-03-18 | 宇宙互联有限公司 | 存储管理系统及方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6996725B2 (en) * | 2001-08-16 | 2006-02-07 | Dallas Semiconductor Corporation | Encryption-based security protection for processors |
JP4263976B2 (ja) * | 2003-09-24 | 2009-05-13 | 株式会社東芝 | オンチップマルチコア型耐タンパプロセッサ |
US7502928B2 (en) * | 2004-11-12 | 2009-03-10 | Sony Computer Entertainment Inc. | Methods and apparatus for secure data processing and transmission |
US8978132B2 (en) * | 2008-05-24 | 2015-03-10 | Via Technologies, Inc. | Apparatus and method for managing a microprocessor providing for a secure execution mode |
TWI372340B (en) * | 2008-08-29 | 2012-09-11 | Phison Electronics Corp | Storage system, controller and data protecting method thereof |
TWI479358B (zh) * | 2012-10-11 | 2015-04-01 | Phison Electronics Corp | 資料保護方法、行動通訊裝置與記憶體儲存裝置 |
US9256551B2 (en) * | 2013-08-09 | 2016-02-09 | Apple Inc. | Embedded encryption/secure memory management unit for peripheral interface controller |
-
2016
- 2016-02-26 TW TW105132329A patent/TWI627556B/zh active
- 2016-02-26 TW TW105105820A patent/TWI560575B/zh active
- 2016-04-07 CN CN201610212909.2A patent/CN105843776B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100361039C (zh) * | 2004-06-30 | 2008-01-09 | 富士通株式会社 | 安全处理器 |
TW200937248A (en) * | 2007-12-07 | 2009-09-01 | Atmel Corp | Secure software download |
CN104424407A (zh) * | 2013-08-27 | 2015-03-18 | 宇宙互联有限公司 | 存储管理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105843776A (zh) | 2016-08-10 |
TWI627556B (zh) | 2018-06-21 |
TW201714114A (zh) | 2017-04-16 |
TWI560575B (en) | 2016-12-01 |
TW201715434A (zh) | 2017-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105912305B (zh) | 微处理器以及相关的操作方法、以及加密方法 | |
CN105843776B (zh) | 微处理器与其中安全执行指令的方法 | |
US9911008B2 (en) | Microprocessor with on-the-fly switching of decryption keys | |
US9892283B2 (en) | Decryption of encrypted instructions using keys selected on basis of instruction fetch address | |
US9798898B2 (en) | Microprocessor with secure execution mode and store key instructions | |
CN107015926B (zh) | 微处理器以及相关的操作方法 | |
TWI437489B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |