微处理器与其中安全执行指令的方法

文档序号:10488903阅读:446来源:国知局
微处理器与其中安全执行指令的方法
【专利摘要】本发明涉及一种微处理器,其中加密的程序可变换不同片段解密用的解密密钥。该微处理器在面对加密的程序中一第一片段时解密且执行之,且解密并执行加密的密钥储存指令,以储存新一组的解密密钥。密钥储存指令执行后,微处理器用该新一组的解密密钥解密并执行加密的程序中的后续片段。执行中的密钥切换可能发生多次,对应相继的加密的密钥储存指令以及相继多组加密指令。
【专利说明】
微处理器与其中安全执行指令的方法
技术领域
[0001] 本发明设及一种微处理器(microprocessor)领域,特别用于增加微处理器所执行 的程序之安全性。 现有技术
[0002] 很多软件程序在面临破坏计算机系统安全的攻击时,通常是脆弱不堪的。例如,黑 客可藉由攻击一运行中程序的缓冲溢位区漏桐(buffer overflow vulnerability)植入不 当程序代码、并转移主控权给该不当程序代码。如此一来,所植入的程序代码将主导被攻击 的程序。一种防范软件程序遭攻击的方案为指令集随机化(instruction set randomization)。概略解释之,指令集随机化技术会先将程序加密(enc巧pt)为某些形式, 再于处理器将该程序自内存提取后,于该处理器内解密(dec巧pt)该程序。如此一来,黑客 便不易植入恶意指令,因为所植入的指令必须被适当地加密(例如,使用与所攻击程序相同 的加密密钥或算法)方会被正确地执行。例如,参阅文件「Counter Code-In jection Attacks with Instruction-Set Randomization,by Gaurav S.Kc, Angelos D.Keromytis,and 化ssilis Prevelakis,CCS'03,October 27-30,2003,Washington,DC, USA,ACM 1-58113-738-9/03/0010」,其中叙述 Bochs-x86Pentium 仿真器(emulator)之改良 版本。相关技术的缺点已被广泛讨论。例如,参阅数据「Where's the FEEB?The Effectiveness of Instruction Set Randomization,by Ana Nora Sovarel,David Evans,and Nathanael Paul,http://www.cs. Virginia.edu/feeb」。

【发明内容】

[0003] 本发明特点可W多种方式实现,其一为一种微处理器,包括一安全内存W及一指 令处理流水线。该安全内存储存且提供密钥编写的密钥,用于加密的指令的解密。该指令处 理流水线自一高速缓存提取并执行指令。该指令处理流水线包括一提取单元、一解密电路、 W及一或多个执行单元。该提取单元提取该微处理器所支持的一指令集架构中未加密W及 加密的指令。该指令集架构包括一密钥储存指令,用W储存一或多个密钥编写的密钥至该 安全内存。该微处理器支持加密的密钥储存指令。
[0004] 该解密电路W接收自该安全内存的上述密钥编写的密钥作加密的指令的解密。上 述一或多个执行单元用于执行指令、或执行指令所转译出的微指令。
[0005] 该微处理器采用加密的密钥储存指令时,系W-第一组的一或多个密钥编写的密 钥对加密的密钥储存指令作解密,之后执行解密后的密钥储存指令,之后采用上述加密的 密钥储存指令所提供的一第二组的一或多个密钥编写的密钥解密一后续组的一或多个加 密的指令。该微处理器因而致能一加密的程序,相应后续多组程序指令之解密变化提供多 组密钥编写的密钥。
[0006] -种实施方式中,该指令集架构包括一安全执行模式指令,要求自一一般执行模 式切换至一安全执行模式。该微处理器限制加密的程序的解密,直至该微处理器进入该安 全执行模式。
[0007] -种实施方式中,根据切换至该安全执行模式的一要求的指令的格式是否带有一 加密的参数,该微处理器条件允许该要求,符合的指令为一特权程序或程序的一部分,且该 加密的参数经解密后符合运行加密的程序的预设要求。一种实施方式中,上述加密的参数 与程序是用不同的密钥编写机制作加密。
[0008] -种实施方式中,该密钥储存指令在实时数据栏提供一或多个密钥编写的密钥的 内容。
[0009] -种实施方式中,该微处理器执行解密的指令或解密的指令转译出的微指令、且 不曝露解密的指令或微指令。
[0010] -种实施方式中,上述安全内存不可由该处理器总线存取,且不属于一高速缓存 级的一部份。此外,该安全内存不可由执行在非特权执行模式下的程序存取。此外,在一种 实施方式中,一AES或RSA加密信道致使密钥编写的密钥的数值写入该安全内存。
[0011] 本案特征更可实现作一微处理器中安全执行指令的方法。首先,该方法储存一第 一组的一或多个密钥编写的密钥至一安全内存用于加密的指令的解密,缓存一第一组的加 密的指令,且采用该第一组的一或多个密钥编写的密钥对该第一组的加密的指令作解密。 在某些时间点,该方法包括缓存加密的一密钥储存指令,W储存一第二组的一或多个密钥 编写的密钥至该安全内存,用作加密的指令的解密。在储存该第二组的一或多个密钥编写 的密钥之前,加密的该密钥储存指令系由该第一组的一或多个密钥编写的密钥解密。而后, 储存该第二组的一或多个密钥编写的密钥至该安全内存,作解密的该密钥储存指令之执 行。而后(或同时一该微处理器为流水线处理器(pipelined processor)),一第二组的加密 的指令遭缓存。取得该第二组的一或多个密钥编写的密钥后,所述方法采用该第二组的一 或多个密钥编写的密钥对该第二组的加密的指令作解密。W上步骤多数可反复执行,用于 处理后续的多个加密的密钥储存指令W及后续多组之加密指令。
[0012] 本发明有多种表征、保护方式,并不意图限定于W上叙述。本发明替代表征可仅包 括摘要描述的子集内容、或与其它未提及的内容结合之子集。专利保护范围实际界定要依 照其描述内容作解读。
【附图说明】
[0013] 图1为一方块图,图解根据本发明技术实现的一微处理器;
[0014] 图2为一方块图,用W详细说明图解第1图的提取单元;
[0015] 图3为一流程图,根据本发明技术,图解第2图提取单元之操作;
[0016] 图4为一方块图,根据本发明技术,图解第1图标志缓存器的字段;
[0017] 图5为一方块图,根据本发明技术,图解一密钥加载指令的格式;
[0018] 图6为一方块图,根据本发明技术,图解一密钥切换指令的格式;
[0019] 图7为一流程图,根据本发明技术,图解第1图微处理器的操作,其中执行第6图之 密钥切换指令;
[0020] 图8为一方块图,根据本发明技术,图解一加密程序的内存用量,该加密程序包括 多个第6图所掲露的密钥切换指令;
[0021] 图9为一方块图,根据本发明技术,图解一分支与切换密钥指令的格式;
[0022] 图10为一流程图,根据本发明技术,图解第1图微处理器的操作,其中执行第9图之 分支与切换密钥指令;
[0023] 图11为一流程图,根据本发明技术,图解一后处理器的操作,由软件工具实现,可 用于后部处理一程序、且加密之,W由第1图微处理器执行;
[0024] 图12为一方块图,图解本发明另外一种实施方式的分支与切换密钥指令的格式;
[0025] 图13为一方块图,根据本发明技术,图解块地址范围表;
[0026] 图14为一流程图,根据本发明技术,图解第1图微处理器的操作,其中执行第12图 之分支与切换密钥指令;
[0027] 图15为一方块图,图解本发明另外一种实施方式的分支与切换密钥指令的格式;
[0028] 图16为一方块图,根据本发明技术,图解块地址范围表;
[0029] 图17为一流程图,根据本发明技术,图解第1图微处理器的操作,其中执行第15图 之分支与切换密钥指令;
[0030] 图18为一流程图,图解本发明技术另外一种实施方式,其中叙述一后处理器的操 作,用于后部处理一程序、且加密之,由第1图微处理器执行;
[0031] 图19为一流程图,根据本发明技术,图解第1图微处理器的操作,用于应付一任务 切换,切换于一加密程序W及一纯文字程序之间;
[0032] 图20图解一流程图,根据本发明技术,图解第1图微处理器所执行的系统软件之操 作;
[0033] 图21图解一方块图,根据本发明另外一种实施方式,图解第1图标志缓存器的字 段;
[0034] 图22图为一流程图,根据本发明技术,图解采用第21图之标志缓存器的第1图微处 理器之操作,用于应付一任务切换,切换于多个加密程序之间;
[0035] 图23为一流程图,根据本发明技术,图解采用第21图之标志缓存器的第1图微处理 器之操作,用于应付一任务切换,切换于多个加密程序之间;
[0036] 图24为一方块图,根据本发明另外一种实施方式,图解第1图密钥缓存器档案中的 单一个缓存器;
[0037] 图25为一流程图,根据本发明另外一种实施方式,图解采用第21图标志缓存器W 及第24图密钥缓存器档案的第1图微处理器之操作,W应付一任务切换,切换于多个加密程 序之间;
[0038] 图26为一流程图,根据本发明另外一种实施方式,图解采用第21图标志缓存器W 及第24图密钥缓存器档案的第1图微处理器之操作,W应付一任务切换,切换于多个加密程 序之间;
[0039] 图27为一方块图,图解第1图微处理器100部分内容的其它实施方式;
[0040] 图28为一方块图,根据本发明技术,详细图解第27图的分支目标地址高速缓存 (BTAC);
[0041] 图29为一方块图,根据本发明技术,详细图解第28图之BTAC各单元之内容;
[0042] 图30为一流程图,根据本发明技术,图解第27图微处理器采用第28图BTAC的操作;
[0043] 图31为一流程图,根据本发明技术,图解第27图微处理器采用第28图BTAC的操作; W及
[0044] 图32为一流程图,根据本发明技术,图解第27图微处理器对一分支与切换密钥指 令的操作。
[0045] 符号说明
[0046] 100~微处理器; 102~指令高速缓存;
[0047] 104~提取单元; 106~指令数据(可为加密);
[004引 108~译码单元; 112~执行单元;
[0049] 114~引出单元; 118~通用缓存器;
[0050] 122~安全存储区; 124~密钥缓存器档案;
[0051] 128~标志缓存器; 132~微代码单元;
[0052] 134~提取地址; 142~主密钥缓存器;
[0053] 144~控制缓存器; 148~E位;
[0化4] 152~密钥扩展器; 154~多任务器;
[0055] 156~异或逻辑; 162~纯文字指令数据;
[0化6] 164~提取地址产生器; 172~两组密钥;
[0057] 174~解密密钥; 176~多位的二进制零值;
[005引 178~多任务器154的输出; 212~多任务器A;
[0化9] 214~多任务器B; 216~旋转器;
[0060] 218~加法/减法器; 234~第一密钥;
[0061] 236~第二密钥; 238~旋转器的输出;
[0062] 302-316~步骤方块; 402~E位字段;
[0063] 408~多个位的标准x86标志; 500~密钥加载指令;
[0064] 502~操作码; 504~密钥缓存器档案目标地址;
[00化]506~安全存储区来源地址; 600~密钥切换指令;
[0066] 602~操作码; 604~密钥缓存器档案索引;
[0067] 702-708~方块步骤; 800~内存用量;
[006引900~分支与切换密钥指令;
[0069] 902~操作码; 904~密钥缓存器档案索引;
[0070] 906~分支信息; 1002-1018~步骤方块;
[0071] 1102-1106~步骤方块; 1200~分支与切换密钥指令;
[0072] 1202~操作码; 1300~块地址范围表:
[0073] 1302~地址范围; 1304~密钥缓存器档案索引;
[0074] 1402-1418~步骤方块; 1500~分支与切换密钥指令;
[00巧]1502~操作码; 1600~块地址范围表:
[0076] 1604~安全存储区地址;
[0077] 1714~步骤方块; 1802-1806~步骤方块;
[0078] 1902-1944~步骤方块; 2002-2008~步骤方块;
[00巧]2104~索引; 2202-2216~步骤方块;
[0080] 2302-2316~步骤方块; 2402~淘汰位;
[0081 ] 2506~步骤方块; 2607、2609~步骤方块;
[0082] 2702~分支目标地址高速缓存(BTAC);
[0083] 2706~目标地址; 2708~采用/不采用指标;
[0084] 2712~密钥切换逻辑; 2714~型式指针;
[0085] 2716~密钥缓存器档案索引;
[0086] 2802 ~BTAC 阵列; 2808 ~BTAC 单元;
[0087] 2902~有效位; 2904~标记字段;
[008引 2906~目标地址; 2908~采用/不采用字段;
[0089] 2912~密钥缓存器档案索引;
[0090] 2914~型式字段; 3002-3004~步骤方块;
[0091] 3102-3116~步骤方块; 3208-3222~步骤方块;
[0092] ZEROES~多位的二进制零值。
【具体实施方式】
[0093] 参阅第1图,一方块图图解根据本发明技术所实现的一微处理器100。微处理器100 包括一流水线(pipeline),其中包括一指令高速缓存(inshuction cache) 102、一提取单 元(fetch unit)104、一译码单元(decode unit)108、一执行单元(execution unit)112、W 及一引出单元(retire unit)114。微处理器100更包括一微代码单元(microcode unit) 132,用W提供微代码指令(microcode instructions)给该执行单元112。微处理器100更包 括通用缓存器(general purpose registers)118W及标志缓存器(;EFLAGS registe;r)128, W提供指令操作数(instruction operands)给执行单元112。而且,透过引出单元114,将指 令执行结果更新于通用缓存器118W及标志缓存器128。在一种实施方式中,标志缓存器128 是由传统x86标志缓存器修改实现,详细实施方式将于后续篇幅说明。
[0094] 提取单元104自指令高速缓存102提取指令数据(ins化uction data) 106。提取单 元104操作于两种模式:一为解密模式(dec巧ption mode),另一为纯文字模式(plain text mode)。提取单元104内一控制缓存器(control registe;r)144的一E位巧bit)148决定该提 取单元104是操作于解密模式(设定E位)、或操作于纯文字模式(清空E位)。纯文字模式下, 提取单元104视自该指令高速缓存102所提取出的指令数据106为未加密、或纯文字指令数 据,因此,不对指令数据106作解密。然而,在解密模式下,提取单元104视自该指令高速缓存 102所提取出的指令数据106为加密指令数据,因此,需使用该提取单元104的一主密钥缓存 器(master key registe;r)142所储存的解密密钥(deciyption keys)将之解密为纯文字指 令数据,详细技术内容将参考第2图W及第3图进行讨论。
[00巧]提取单元104亦包括一提取地址产生器(fetch ad化ess generato;r)164,用W产 生一提取地址(fetch ad化ess) 134, W自该指令高速缓存102提取指令数据106。提取地址 134更供应给提取单元104的一密钥扩展器化巧expander) 152。密钥扩展器152自主密钥缓 存器142中选取两组密钥172,并对其实施运算W产生一解密密钥174,作为多任务器154的 第一输入。多任务器154的第二输入为多位的二进制零值(binary zeroes)176eE位148控制 多任务器154。若E位148被设定,多任务器154选择输出该解密密钥174。若E位148被清除,多 任务器154选择输出多位的二进制零值176。多任务器154的输出178将供应给异或逻辑156 作为其第一输入。异或逻辑156负责对提取的指令数据106W及多任务器输出178施行布尔 异或运算(Boolean exclusive-0R,X0R),W产生纯文字指令数据162。加密的指令数据106 乃预先W异或逻辑将其原本的纯文字指令数据W-加密密钥进行加密,其中该加密密钥之 数值与该解密密钥174相同。提取单元104的详细实施方式将配合第2图W及第3图内容于稍 后叙述。
[0096] 纯文字指令数据162将供应给译码单元108。译码单元108负责将纯文字指令数据 162之串流译码、并分割为多个X86指令,交由执行单元112执行。在一种实施方式中,译码单 元108包括缓冲器(buffers)或队列(queues),W在解碼之前或期间,缓冲存储的纯文字指 令数据162之串流。在一种实施方式中,译码单元108包括一指令转译器(instruction hanslator),用W将X86指令转译为微指令micro instruct ions或micro-ops,交由执行单 元112执行。译码单元108输出指令时,更会针对各指令输出一位值,该位值乃伴随该指令沿 所述流水线结构一路行进而至,用W指示该指令是否为加密指令。该位值将控制该执行单 元112W及该引出单元114,使之根据该指令自该指令高速缓存102取出时是加密指令或纯 文字指令而进行决策并且采取动作。在一种实施方式中,纯文字指令不被允许执行专供指 令解密模式设计的特定操作。
[0097] 在一种实施方式中,微处理器100为一x86架构处理器,然而,微处理器100也可W 其它架构之处理器实现。若一处理器可正确执行设计给x86处理器执行的大多数应用程序, 则视之为x86架构的处理器。若应用程序执行后可获得预期结果,则可判断该应用程序是被 正确执行。特别是,微处理器100是执行x86指令集的指令,且具有x86用户可用缓存器组 (x86 user-visible register set)。
[0098] 在一种实施方式中,微处理器100乃设计成供应一复合安全架构(comprehensive security architecture)一称为安全执行模式(secure execution mode,简称沈Μ)-W于 其中执行程序。根据一种实施方式,SEM程序的执行可由数种处理器事件(processor events)引发,且不受一般(非沈Μ)操作封锁。此外,沈ΜΕΝΑ化E指令可引发自一般执行模式 (normal execution mode)至安全执行模式(SEM mode)的转态。在一种实施方式中, SEMENABLE指令具有经加密的一参数,该参数系经授权单位的一私钥加密,属一种密钥编写 机制(cryptogra地ic mechanism),不同于加密程序之加密使用的对称密钥加密之密钥编 写机制(symmetric key encryption cryptogra地ic mechanism)。微处理器 100内的安全 码接口逻辑采用的为一公开密钥,该公开密钥是在制造程序中存入,用W解密且鉴定该参 数。该参数解密后,安全执行模式初始逻辑会初始化该安全模式。
[0099] 在一种实施方式中,为安全执行模式之数据所供应的安全非挥发性内存(未显示 于图中)一如,闪存一可用于储存解密密钥。该安全非挥发式内存经由一私有序列总线禪接 该微处理器100,且其中所有数据为AES加密且签名认证。在一种实施方式中,微控制器100 包括小尺寸非挥发性内存(未显示于图中),可用于储存解密密钥。在一种实施例中,上述非 挥发性内存为烙丝型非挥发储存装置(fuse-embodied non-volatile storage),详述于美 国专利案U. S.化tent No. 7,663,957,通过引用主张全文完整并入本文。本文所述之指令解 密特征之优点为展延安全执行模式,使得安全程序储存在微处理器100外的内存,无须将安 全程序完整储存在微处理器100之中。因此,安全程序代码可利用内存分级架构的完整尺寸 与功能。在一种实施方式中,架构上的例外/中断(例如,页面错误(page faults)、侦错断点 (debug breakpoint)…等)在安全执行模式运行下部分或全数除能。在一种实施方式中,架 构上的例外/中断在解密模式运行下(即,E-位148处设定状态)部分或全数除能。
[0100] 运行在安全执行模式的程序所执行的功能有多种例子,包括关键安全事件 (critical security task),如,辨识凭证并加密数据、监控系统软件活动、辨识系统软件 完整性、追踪资源使用、控制新软件安装…诸如此类。安全执行模式的例子详细描述于2013 年12月24日核发的美国专利案U.S.化tent No.8,615,799,其主张2008年5月24申请之美国 临时申请案U.S.Provisional Application No.61/055,980之优先权一W上文件皆通过引 用主张全文完整并入本文。
[0101] 在一种实施方式中,微处理器架构做一般模式W及安全模式两者的指令执行。若 运作在一般模式下,安全应用程序之安全执行所相关的资源无一为可观察或可操作。监视 逻辑(watchdog logic)监视安全码、数据、W及环境与物理属性的真实性,W捜集窜改证 据。针对安全执行模式所供应的中断处理W及异常逻辑不同于一般模式之中断处理W及异 常逻辑。
[0102] 微处理器100更包括一密钥缓存器档案化巧register file)124。密钥缓存器档 案124包括复数个缓存器,其中储存的密钥可藉由密钥切换指令(switch key instruction,后续讨论之)加载提取单元104的主密钥缓存器142, W解密所提取的加密指 令数据106。
[0103] 微处理器100更包括一安全存储区(se州re memory area,简写为SMA) 122,用于存 储解密密钥,该解密密钥待经第5图所示之密钥加载指令(load key inst;ruction)500进而 加载密钥缓存器档案124。在一种实施方式中,安全存储区122限定Wsai程序存取。也就是 说,安全存储区122不可藉一般执行模式(非SEM)下所执行的程序存取。此外,安全存储区 122也不可藉处理器总线存取,且不属于微处理器100之高速缓存级的一部份。因此,举例说 明之,缓存清空操作(cache flush operation)不会导致安全存储区122的内容写入内存。 关于安全存储区122的读写,微处理器100指令集架构中设计有特定指令。一种实施方式是 在安全存储区122中设计一隔离式随机存取内存(private RAM),相关技术内容可参考2008 年2月20日申请的美国专利申请案12/034,503(该案于2008年10月16日公开,公开号为 2008/0256336);可参照上述案件内容应用于本案发明。
[0104]起先,操作系统或其它特权程序(privileged program)下载密钥的初始化设定于 该安全存储区122、密钥缓存器档案124、W及主密钥缓存器142。微处理器100起先会W该密 钥的初始化设定W解密一加密程序。此外,加密程序本身可后续写入新的密钥至安全存储 区122、并自安全存储区122将密钥加载密钥缓存器档案124(藉由密钥加载指令)、且自密钥 缓存器档案124将密钥加载主密钥缓存器142(藉由密钥切换指令)。所述操作之优势在于: 所掲露的密钥切换指令使得加密程序在执行当下得W切换解密密钥组(on-the-fly switching),W下将详述之。新的密钥可由加密程序指令自身的实时数据组成。在一种实施 方式中,程序档案标头的一字段会指示程序指令是否为加密型式。
[0105] 第1图所描述的技术有多项优点。第一,自加密指令数据106所解密出来的纯文字 指令数据无法由微处理器100外部获得。
[0106] 第二,提取单元104提取加密指令数据所需的时间与提取纯文字指令数据所需的 时间相同。此特色关系着安全与否。反之,若有时间差存在,黑客可藉此破解加密技术。
[0107] 第Ξ,相较于传统设计,本案所掲露之指令解密技术不会额外增加提取单元104所 耗的频率数量。如W下讨论,密钥扩展器152增加解密密钥之有效长度,该解密密钥用于解 密一加密程序,且此方式不会使提取加密程序数据所需的时间长于提取纯文字程序数据所 需的时间。特别是,因为密钥扩展器152之运作限时于W提取地址134查表该指令高速缓存 102获得指令数据106之内完成,密钥扩展器152并不会增加一般的提取程序的时间。此外, 因为多任务器154W及密钥扩展器152-并限时于W提取地址134查表该指令高速缓存102 获得指令数据106之内完成,故不会增加一般的提取程序的时间。异或逻辑156是唯一添加 于一般提取路径的逻辑运算,所幸异或操作156的传播延迟相当小,不会增加工作周期。因 此,本案所掲露的指令解密技术不会增加提取单元104频率数量负担。此外,相较于一般技 术所应用于解密指令数据106的复杂解密机制,例如S盒(S-boxes),一般技术会增加提取W 及译码指令数据106时所需的工作周期且/或所消耗的频率数量。
[0108] 接着,参考第2图,一方块图详细图解第1图之提取单元104。特别是,第1图之密钥 扩展器152也详细图列其中。先前已讨论采用异或逻辑解密上述加密指令数据106的优点。 然而,快且小的异或逻辑有其缺点:若加密/解密密钥被重复使用,则异或逻辑属于一种脆 弱加密方法(weak encryption method)。不过,若密钥的有效长度等同所欲加密/解密之程 序的长度,异或逻辑加密会是一种强度极高的加密技术。微处理器100之特征在于可增长解 密密钥的有效长度,W降低密钥重复使用的需求。第一,主密钥缓存器档案142所储存的数 值为中大型尺寸:在一种实施方式中,其尺寸等同自指令高速缓存102所取出的指令数据 106之提取量、或区块尺寸,为128位(16字节)。第二,加密扩展器152用于增长解密密钥的有 效长度,例如,增至一实施方式所掲露的2048字节,将于后续篇幅详述。第Ξ,加密程序可藉 由密钥切换指令(或其变形)在操作中改变主密钥缓存器142内的数值,之后段落将详述之。
[0109] 在第2图所示实施方式中,142使用了五个主密钥缓存器,编号0-4。然而,在其它实 施方式中,也可W较少或较多量的主密钥缓存器142数量增长解密密钥长度。例如,一种实 施方式采用12个主密钥缓存器142。密钥扩充器152包括一第一多任务器A 212W及一第二 多任务器B 214,用W接收主密钥缓存器142所供应的密钥。提取地址134的部分内容用于控 制多任务器212/214。在第2图所示实施方式中,多任务器B 214为Ξ转一多任务器,而多任 务器A 212为四转一多任务器。表格1显示多任务器212/214如何根据各自的选择输入选取 该等主密钥缓存器142( W上述编号识别)。表格2显示上述选择输入的产生方式,W及基于 提取地址134的位[10:引所呈的主密钥缓存器142组合。
[0110]
[0111] 表格 1
[0112]
[0114] 表格 2
[0115] 多任务器B 214的输出236是供应给加法/减法器218。多任务器A 212的输出234是 供应给一旋转器(rotator)216。旋转器216接收提取地址134的位[7:4],据W旋转多任务器 输出234,决定旋转的字节数量。在一种实施方式中,提取地址134的位[7:4]在供应给旋转 器216控制旋转的字节数量前增量,W表格3显示之。旋转器216的输出238是供应给加法/减 法器218。加法器/减法器218接收提取地址134的位[7]。若该位[7]为清空,加法/减法器218 将旋转器216的输出238自多任务器B 214之输出236减去。若该位[7]为设定,加法/减法器 21則尋旋转器216的输出238加上多任务器B 214的输出236。加法/减法器218的输出即第1图 所示之解密密钥174,将供应给多任务器154。W下W第3图之流程图详述相关技术。
[0116] 接着,参阅第3图,一流程图基于本发明技术图解第2图提取单元104的操作。流程 始于方块302。
[0117] 在方块302,提取单元104W提取地址134读取指令高速缓存102, W开始提取一 16 字节之区块的指令数据106。指令数据106可为加密状态或为纯文字状态,视指令数据106是 为一加密程序或一纯文字程序的一部分而定,由E位148标示。流程接着进入方块304。
[0118] 参考方块304,根据提取地址134较高的数个位,多任务器A 212W及多任务器B 214分别自主密钥缓存器142所供应的密钥172中选取出一第一密钥234 W及一第二密钥 236。在一种实施方式中,提取地址134所供应的该些位施加于多任务器212/214, W产生特 定的密钥对(234/236key pair)组合。在第2图所示之实施方式中,所供应的主密钥缓存器 142数量为5,因此,存在10组可能的密钥对。为了简化硬件设计,仅使用了其中8组;此设计 将供应2048字节的有效密钥,将于后续段落详细讨论之。然而,其它实施方式也可能使用其 它数量的密钥缓存器142。W供应12个主密钥缓存器142的实施方式为例,主密钥缓存器142 的可能组合有66组,若采用其中64组,所产生的有效密钥将为16384字节。整体而言,假设上 述复数个密钥数值总量为K(例如:5,且采用全部组合),该解密密钥、W及上述复数个密钥 数值各自的长度为W字节(例如:16字节),则产生的有效密钥将为W2*化!/(巧化-2)!))字 节。流程接着进入方块306。
[0119] 在方块306,基于提取地址134的位[7:4],旋转器216使第一密钥234旋转相应数量 的字节。例如,若提取地址134的位[7:4]为数值9,旋转器216将第一密钥234朝右旋转9个字 节。流程接着进入方块308。
[0120] 在方块308,加法/减法器218将旋转后的第一密钥238加至/减自该第二密钥236, W产生第1图之解密密钥174。在一种实施方式中,若提取地址134的位[7]为1,则加法/减法 器21則尋旋转后的第一密钥234加至该第二密钥236;若提取地址134的位[7]为0,则加法/减 法器21則尋旋转后的第一密钥234自该第二密钥236减去。接着,流程进入方块312。
[0121] 在决策方块312,多任务器154根据其控制信号判断所提取的该区块之指令数据 106是来自一加密程序或一纯文字程序,所述控制信号来自控制缓存器144所供应的位E 148。若指令数据106为加密状态,流程进入方块314,反之,则流程进入方块316。
[0122] 在方块314,多任务器154选择输出解密密钥174,且异或逻辑156令加密指令数据 106W及解密密钥174进行一布尔异或运算,W产生第1图之纯文字指令数据162。流程止于 方块314。
[0123] 在方块316,多任务器154选择输出16字节的二进制零值176,且异或逻辑156令指 令数据1〇6(为纯文字)W及该16字节的二进制零值进行一布尔异或运算,W产生同样的纯 文字指令数据162。流程止于此方块316。
[0124] 参考第2图W及第3图所掲露内容,解密密钥174供应给所提取的该区块指令数据 106进行异或运算,且该解密密钥174是所选取的主密钥对234/236 W及提取地址134之函 数。相比于传统解密程序一使解密密钥为先前密钥值的一函数,其中持续修正密钥W供应 新的在下一次工作区间使用一本案所掲露之解密技术完全不同。W主密钥对234/236W及 提取地址134为函式获得解密密钥174的方式有至少W下两种优点。第一,如W上所讨论,加 密指令数据W及纯文字指令数据106之提取耗时相当,不会增加微处理器100所需的工作频 率。第二,遇到程序中的分支指令(branch ins化uction),提取指令数据106所需的时间不 会增加。在一种实施方式中,一分支预测器(branch predictor)接收提取地址134,并预测 该提取地址134所指之该区块的指令数据106是否存在一分支指令,并预测其方向W及目标 地址。W第2图所示实施方式为例,产出的解密密钥174是主密钥对234/236 W及提取地址 134的一函式,将在目标地址所指之该区块指令数据106送抵该异或逻辑156的同一时间产 出预测之目标地址的适当解密密钥174。与传统解密密钥运算手法针对目标地址计算解密 密钥所必须的多个「倒带(rewind)」步骤相较,本案所掲露技术在处理加密指令数据时不会 产生额外的延迟。
[0125] 另外,如第2图W及第3图所示,密钥扩展器152之旋转器216W及加法/减法器218 之联合设计,使得解密密钥长度有效扩展,超越主密钥之长度。例如,主密钥共贡献32字节 (2*16字节);更甚者,W黑客企图判断解密密钥174为何的角度而言,旋转器216 W及加法/ 减法器218有效地将位于主密钥缓存器142的32字节的主密钥扩展为256字节的密钥序列。 更具体地说,有效扩展后的密钥序列之字节η为:
[0126]
[0127] 姑。为第一主密钥234的字节η,且%。W为第二主密钥236的字节η+χ。如上所述,密 钥扩展器152所产生的前八套16字节解密密钥174是由减法方式产生,且后八套是由加法方 式产生。具体来说,选定的主密钥对234/236各自所提供的字节内容用于为16个连续的16字 节区块之指令数据各个字节产生解密密钥174字节,详情请见表格3。举例说明之,表格3第1 列的符号"15-00"表示第二主密钥236的字节0的内容会经8位算数运算(an eight-bit arithmetic operation)自第一主密钥234的字节15减去,W获得一字节的有效解密密钥 174,用W与一 16字节区块之指令数据106中的字节15进行异或运算。
[012 引
[0130] 表格 3
[0131] 给定适当的主密钥数值后,密钥扩展器152所产生的扩展密钥统计来说可有效预 防异或加密常见的攻击,包括令文件之加密区块W密钥长度位移、并对加密区块一并施行 异或运算,W下更详细讨论之。密钥扩展器152对选定主密钥对234/236之影响是:在所述实 施方式中,程序中W完全相同的密钥所加密的两个指令数据106字节之跨距可高达256字 节。在其它具有不同区块尺寸的指令数据106、W及不同主密钥长度的实施方式中,W同样 密钥加密的两个指令数据106字节的最大跨距可有不同的量。
[0132] 用来选定主密钥对234/236的主密钥缓存器142W及密钥扩展器152内的多任务器 212/214也会决定有效密钥长度的扩展程度。如W上讨论,第2图所示实施方式供应有5个主 密钥缓存器142,主密钥缓存器142所供应的内容因此可W10种方式组合,而多任务器212/ 214是用于自上述10种可能组合方式中选择八种作用。表格3所示各密钥对234/236所对应 的256字节有效密钥长度搭配八种主密钥对234/236组合后,所产生的有效密钥长度为2048 字节。也就是说,程序中W完全相同之密钥加密的两个指令数据106字节之跨距可高达2048 字节。
[0133] 为了更加说明密钥扩展器152所带来的优点,W下简短叙述异或加密程序所常见 的的攻击。若异或加密运算所采用的密钥长度短于所加密/解密之程序指令数据的长度,密 钥中的许多字节必须被重复使用,且被重复使用的字节数量视程序之长度而定。此弱点使 异或指令加密程序可被破解。第一,黑客尝试判断出重复密钥之长度,W下展示的说明(1) 至(3)令之为n+1。第二,黑客假定指令数据内各个密钥长度区块化ey-length block)是W 同样密钥加密。W下列举根据一传统异或加密运算加密得到的二密钥长度区块的数据:
[0136] 其中,??为第一密钥长度区块之数据的字节n,将被加密;为第二密钥长度区块 之数据的字节n,将被加密;且kn为密钥的字节η。第Ξ,黑客对所述两区块进行异或运算,使 其中密钥成分彼此相销,独留W下内容:
[0137]
[0138] 最后,由于计算出的字节为单纯两个纯文字字节的函式,黑客可W统计分析纯文 字内容之出现频率,W尝试求得纯文字字节的数值。
[0139] 然而,根据第2图W及第3图所掲露方式计算出的加密指令数据106字节之图样如 W下说明(4)与(5)所示:
[0140]
[0141]
[0142] 其中标示所加密之第一 16字节区块之指令数据的字节n,6"i标示所加密之第二 16字节区块之指令数据的字节n,*?,标示主密钥X的字节11,且知^标示主密钥y的字节η。如 前述,主密钥X与y为不同密钥。假定一种实施方式W五个主密钥缓存器142提供八种主密钥 对234/236组合,2048字节序列中各字节是与两个独立的主密钥字节的一组合进行异或运 算。因此,当加密数据W任何方式于256字节的区块中移位并且彼此作异或运算,所求得的 字节都会存在两个主密钥的复杂成分,因此,不若说明(3)的内容,此处所得的运算结果不 单纯只是纯文字字节。例如,假设黑客选择使同一 256字节区块中的16字节区块对齐并彼此 进行异或操作使同样的密钥零字节在各段中被使用,字节0之运算结果如说明(6)所示,所 获得的字节存在两个主密钥的复杂组合:
[0143]
[0144] 其中η不为1。
[0145] 再者,若黑客换成将选自不同256字节区块内的16字节区块对齐、且彼此作异或运 算,运算结果的字节0如说明(7)所示:
[0146]
[0147] 其中主密钥U与V中至少一者不同于主密钥xW及y。模拟随机主密钥数值所产生之 有效密钥字节之异或运算,可发现运算结果,)A (知。X + j呈现相当平滑的分布。
[0148] 当然,若黑客选择将不同的2048位组长度区块内的16字节区块对齐、并且彼此进 行异或操作,黑客可能会获得与说明(3)类似的结果。然而,请参照W下内容。第一,某些程 序一例如,安全性相关程序一可能短于2048字节。第二,相距2048字节的指令字节之统计相 关性(S化tistical correlation)很可能非常小,导致很难破解。第Ξ,如前述内容,所述技 术之实施方式可W较多数量实现主密钥缓存器142,使解密密钥之有效长度扩展;例如,W 12个主密钥缓存器142供应16384位组长度的解密密钥,甚至其它更长的解密密钥。第四,W 下将讨论的密钥下载指令500W及密钥切换指令600更使程序设计师得W载入新的数值至 主密钥缓存器142,W有效扩展密钥长度超过2048字节,或者,如果必要,也可扩展密钥长度 至程序的完整长度。
[0149] 现在,参考第4图,一方块图根据本发明技术图解第1图的标志缓存器128。根据第4 图所示之实施方式,标志缓存器128包括标准x86缓存器的复数个位408;不过,为了此处叙 述的新功能,第4图所示实施方式会动用x86架构中一般为预留(RESERVED)的一位。特别说 明之,标志缓存器128包括一E位字段402 dE位字段402用于修复控制缓存器144的E位148数 值,用W于加密W及纯文字程序间切换W及/或于不同加密程序间切换,W下将详细讨论 之。E位字段402标示目前所执行的程序是否有加密。若目前所执行的程序有加密,E位字段 402为设定状态,否则,为清除状态。当中断事件发生,控制权切换给其它程序(例如,中断 interrupt、异常exception如页错误page fault、或任务切换task switch),储存标志缓存 器128。反之,若控制权重回先前因中断事件中断的程序,则修复标志缓存器128。微处理器 100之设计会在标志缓存器128修复时W标志缓存器128之E位402字段数值更新控制缓存器 144之E位148数值,W下将详细讨论之。因此,若中断事件发生时一加密程序正在执行(即提 取单元104处于解密模式),当控制权交还给该加密程序时,W修复的E位字段402令E位148 为设定状态,W修复提取单元104为解密模式。在一种实施方式中,E位148 W及E位字段402 为同一个具体硬件位,因此,储存标志缓存器128的E位字段402中数值即是储存E位148,且 修复标志缓存器128的E位字段402的数值即是修复E位148。
[0150] 参阅第5图,一方块图图解根据本发明技术所实现的一密钥加载指令500之格式。 密钥加载指令500包括一操作码(opcode)502字段,特地标示其为微处理器100指令集内的 密钥加载指令500。在一种实施方式中,操作码字段502数值为0FA6/4U86领域)。密钥加载 指令500包括两个操作数:一密钥缓存器档案目标地址504W及一安全存储区来源地址506。 该安全存储区来源地址506为安全存储区122中储存一 16字节主密钥的一地址。密钥缓存器 档案地址504标示密钥缓存器档案124内的一个缓存器的地址,此缓存器将加载自安全存储 区122载出之16字节主密钥。在一种实施方式中,若一程序企图在微处理器100不为安全操 作模式下执行密钥加载指令500,则视之为无效指令异常;此外,若安全存储区来源地址506 数值位于有效安全存储区122之外,则视之为一般保护异常。在一种实施方式中,若一程序 试图在微处理器100不为最高权限级别时(例如,x86环0权限A86ring 0)执行密钥加载指 令500,则视之为无效指令异常。在某些状况下,16字节主密钥之构成可能包括在加密指令 的实时数据字段内。所述实时数据可被一块一块移至安全存储区122组成16字节的密钥。
[0151] 现在,参阅第6图,一方块图图解根据本发明技术所实现的一密钥切换指令600之 格式。密钥切换指令600包括一操作码602字段,特指其为微处理器100指令集内的密钥切换 指令600。密钥切换指令600更包括一密钥缓存器档案索引字段604,标示密钥缓存器档案 124-序列缓存器中的开端,W自此将密钥加载主密钥缓存器142。在一种实施方式中,若一 程序尝试在微处理器100不为安全操作模式时执行一密钥切换指令600,则视之为无效指令 异常。在一种实施方式中,若一程序意图在微处理器100不为最高权限级别(例如,x86环0权 限)时执行一密钥切换指令600,则视之为无效指令异常。在一种实施方式中,密钥切换指令 600为原子操作型式(atomic),即不可中断;此处所讨论,用于加载密钥至主密钥缓存器142 的其它指令也是如此一例如,W下将讨论的分支与切换密钥指令。
[0152] 现在,参阅第7图,一流程图图解第1图之微处理器100之操作,其中,根据本发明技 术执行第6图介绍的密钥切换指令600。流程始于方块702。
[0153] 在方块702,译码单元10則尋一密钥切换指令600译码,且将译码结果代入微代码单 元132内实现密钥切换指令600的微代码程序。流程接着进入方块704。
[0154] 在方块704,微代码会根据密钥缓存器档案索引字段604自密钥缓存器档案124下 载主密钥缓存器142的内容。较佳实施方式是:微代码W密钥缓存器档案索引字段604所标 示的密钥缓存器为起始,自密钥缓存器档案124下载连续的η个缓存器内容作为η个密钥存 入主密钥缓存器142,其中η为主密钥缓存器142的总数。在一种实施方式中,数值η可标示于 密钥切换指令600的一额外空间,设定为少于主密钥缓存器142的总数。流程接着进入方块 706。
[01巧]在方块706,微代码使微处理器100分支至后续的x86指令(即该密钥切换指令600 之后的指令),将导致微处理器100中较密钥切换指令600新的所有X86指令被清空,致使微 处理器100内、较切换至后续X86指令的微操作新的所有微操作被清空。上述被清空的指令 包括自指令高速缓存102提取出、缓冲暂存于提取单元104W及译码单元108内等待解密与 译码的所有指令字节106。流程接着进入方块708。
[0156] 在方块708,基于方块706分支至后续指令的操作,提取单元104开始利用方块704 加载主密钥缓存器142的新一组密钥值自指令高速缓存102提取并且解密指令数据106。流 程结束于方块708。
[0157] 如第7图所示,密钥切换指令600令正在执行中的加密程序在自指令高速缓存102 提取出来的同时得W改变主密钥缓存器142内所储存、供解密该加密程序使用的内容。所述 主密钥缓存器142动态调整技术使得加密该程序的有效密钥长度超越提取单元104先天支 持的长度(例如,第2图实施方式所提供的2048字节);如第8图所示程序,若将之W第1图微 处理器100操作,黑客会更不易攻破计算机系统的安全防护。
[0158] 现在,参阅第8图,一方块图图解根据本发明技术所实现的一加密程序的一内存用 量(memory footprint)800,其中采用第6图所示之密钥切换指令600。第8图所示之加密程 序内存用量800包括连续数「块chunk」指令数据字节。每一「块」的内容为一序列多个指令数 据字节(其中为预先加密的数据),且属于同一「块」的指令数据字节是由同样的一套主密钥 缓存器142数值解密。因此,不同两「块」的界线是由密钥切换指令600定义。也就是说,各「 块」的上、下界是由密钥切换指令600之位置区分(或者,W-程序的第一「块」为例,其上界 为该程序的起始处;此外,W该程序的最后一「块」为例,其下界为该程序的结束处)。因此, 各「块」指令数据字节是由提取单元104基于不同套主密钥缓存器142数值解密,意即各「块」 指令数据字节的解密是根据前一「块」所供应的一密钥切换指令600所加载主密钥缓存器 142数值。加密一程序的后处理器(post-processor)会知晓各密钥切换指令600所在之内存 地址,并且会利用此信息一即提取地址的相关地址位一配合密钥切换指令600密钥数值产 生加密密钥字节,W加密该程序。一些目的文件格式(object file format)允许程序设计 者标示程序加载内存何处,或至少载明特定大小的对齐形式(例如,页面边界page boundary),W提供足够的地址信息加密该程序。此外,一些操作系统默认值是将程序加载 页面边界上。
[0159] 密钥切换指令600可安置于程序的任何地方。然而,若密钥切换指令600加载特定 值至主密钥缓存器142供下一「块」指令数据字节解密使用、且密钥切换指令600(或甚至密 钥加载指令500)之位置导致每一「块」之长度短于、或等于提取单元104所能应付的有效密 钥长度(例如,第2图实施方式所掲露的2048字节),则程序可被W有效长度等同整体程序长 度的密钥加密,此为相当强健的加密方式。此外,即使密钥切换指令600的使用使得有效密 钥长度仍短于加密程序的长度(即,同样一套主密钥缓存器142数值被用于加密一程序的多 个「块」),改变「块」尺寸(例如,不限定全为2048字节)可增加黑客破解系统的困难度,因为, 黑客必须先判断W同一套主密钥缓存器142数值加密的「块」位于何处,并且必须判断该些 长度不一的「块」各自的尺寸。
[0160] 值得注意的是,W密钥切换指令600实现的动态密钥切换耗费相当大量的频率数 目,主要是因为流水线必须清空。此外,在一种实施方式中,密钥切换指令600主要是W微代 码(microcode)实现,通常较非微代码实现的指令慢。因此,程序代码开发者须考虑密钥切 换指令对效能的影响,在执行速度W及特定应用之安全性考虑之间寻求平衡点。
[0161] 现在,参阅第9图,一方块图图解根据本发明技术实现的一分支与切换密钥指令 900的格式。首先叙述该分支与切换密钥指令900的必要性。
[0162] 根据W上实施例所掲露内容,加密程序交由提取单元104提取的各个16字节区块 的指令数据是有先经过加密运算(采异或技术),所采用的加密密钥等同提取单元104用来 解密(异或运算)所提取之各区块之指令数据106的各个16字节长之解密密钥174。如W上所 述,解密密钥174的字节数值是由提取单元104基于W下两种输入计算而得:储存于主密钥 缓存器142的主密钥字节数值、W及所提取之16字节区块之指令数据106的提取地址134的 部分位第2图所掲露实施方式为例,为位[10:4])。因此,加密一程序使之由微处理器100 执行的一后处理器会知晓将储存于主密钥缓存器142的主密钥字节数值、W及一地址(或更 限定为该地址的数个相关位);该地址指示加密程序将被加载内存何处、且微处理器100将 自此处一连串地提取出该加密程序数个区块的指令数据。基于上述信息,后处理器得W适 切产生解密密钥174数值,用于加密该程序的各个16字节区块之指令数据。
[0163] 如W上所讨论,当一分支指令被预测到且/或被执行,提取单元104会W分支目标 地址更新提取地址134。只要加密程序从未改变(经由密钥切换指令600)主密钥缓存器142 内储存的主密钥数值,分支指令是由提取单元104透明控制。也就是说,提取单元104会采用 同样的主密钥缓存器142数值估算解密密钥174, W供解密包括该分支指令的一区块之指令 数据106、W及解密该分支指令之目标地址所指的一区块之指令数据106内的指令。然而,程 序改变(经由密钥切换指令600)主密钥缓存器142数值的能力意味着提取单元104有可能W 一套主密钥缓存器142数值估算解密密钥174解密包括该分支指令的一区块之指令数据 106,并W不同的另外一套主密钥缓存器142数值估算解密密钥174解密该分支指令之目标 地址所指的一区块之指令数据106内的指令。解决此问题的一种方法是限定分支目标地址 于程序同一「块」中。另外一种解决方式是采用第9图所掲露的分支与切换密钥指令900。
[0164] 再次参阅第9图,一方块图图解根据本发明技术实现的一分支与切换密钥指令900 的格式。分支与切换密钥指令900包括一操作码902字段,标示其为微处理器100指令集内的 分支与切换密钥指令900。分支与切换密钥指令900更包括一密钥缓存器档案索引字段904, 标示密钥缓存器档案124中一连串缓存器里的开端,W自此将密钥加载主密钥缓存器142。 分支与切换密钥指令900更包括一分支信息字段906,记载分支指令的典型信息一如,计算 目标地址的信息、W及分支条件。在一种实施方式中,若一程序在微处理器100不为安全执 行模式时尝试执行一分支与切换密钥指令900,则视之为无效指令异常。在一种实施方式 中,若一程序在微处理器100不为最高权限层级(例如,x86的环0权限)时试图执行分支与切 换密钥指令900,则视之为无效指令异常。在一种实施方式中,分支与切换密钥指令900为原 子操作型(atomic)。
[0165] 参阅第10图,一流程图图解第1图微处理器100之操作,其中,根据本发明技术执行 第9图所掲露之分支与切换密钥指令900。流程始于方块1002。
[0166] 在方块1002,译码单元108译码一分支与切换密钥指令900且将之代入微代码单元 132中实现该分支与切换密钥指令900的微代码程序。流程接着进入方块1006。
[0167] 在方块1006,微代码解出分支方向(采用、或不采用)、W及目标地址。值得注意的 是,对于无条件型分支指令(unconditional branch instruction),所述方向衡为采用。流 程接着进入判断方块1008。
[0168] 在判断方块1008,微代码判断方块1006所解出的方向是否为采用。若为采用,流程 进入方块1014。反之,流程进入方块1012。
[0169] 在方块1012,微代码不切换密钥、或跳至目标地址,因为分支操作未被采用。流程 结束于方块1012。
[0170] 在方块1014,微代码根据密钥缓存器档案索引字段904,将密钥自密钥缓存器档案 124加载主密钥缓存器142。较佳实施例是,微代码W密钥缓存器档案索引字段904所标示的 位置为起始,将密钥缓存器档案124内η个邻近缓存器所记载的η个密钥加载主密钥缓存器 142,其中η为主密钥缓存器142的总数。在一种实施方式中,η值可纪录于分支与切换密钥指 令900的一额外空间,设定为小于主密钥缓存器142总数的值。流程接着进入方块1016。
[0171] 在方块1016,微代码使得微处理器100跳至方块1006所解出的目标地址,将导致微 处理器100中较分支与切换密钥指令900新的所有χ86指令被清空,致使微处理器100内、较 分支至目标地址的微操作新的所有微操作被清空。上述被清空的指令包括自指令高速缓存 102提取出、缓冲暂存于提取单元104W及译码单元108内等待解密与译码的所有指令字节 106。流程接着进入方块1008。
[0172] 在方块1018,随着方块1016分支至目标地址的操作,提取单元104采用方块1014加 载主密钥缓存器142的新一组密钥数值开始自指令高速缓存102提取且解密指令数据106。 流程结束于方块1018。
[0173] 现在,参阅第11图,一流程图图解根据本发明技术所实现的一后处理器的操作。所 述后处理器为软件工具,可用于后处理一程序并加密之,W交由第1图的微处理器100执行。 流程始于方块1102。
[0174] 在方块1102,后处理器接收一程序的一目的文件。根据一种实施方式,该目的文件 内的分支指令的目标地址可在程序执行前确定;例如,指向固定目标地址的分支指令。在程 序运行前决定好目标地址的分支指令尚有另一形式,例如,一相对分支指令(relative branch instruction),其中记载一偏移量,用来加上分支指令所在之内存地址,W求得分 支目标地址。反之,关于目标地址不会在程序执行前确定的分支指令,其中一种例子是基于 缓存器或内存所储存的操作数计算出目标地址,因此,其值在程序执行当中可能有变动。流 程接着进入方块1104。
[01"7日]在方块1104,后微处理器将跨块分支指令(inter-chunk branch instruction)W 分支与切换密钥指令900取代,所述指令900在密钥缓存器档案索引空间904储存有适当的 数值,该数值乃基于分支指令之目标地址所坐落的「块」而设定。如第8图所掲露内容,一「 块」是由一序列多个指令数据字节所组成,将由同一套主密钥缓存器142数值解密。因此,跨 块分支指令之目标地址所坐落的「块」不同于分支指令本身的「块」。值得注意的是,块内分 支一即目标地址与本身位于同一「块」的分支指令一无须被替代。值得注意的是,产生出原 始档(source file) W产出目的档的程序设计及/或编译器可视需求明确包括分支与切换 密钥指令900, W降低后处理器取代操作的负担。流程接着进入方块1106。
[0176] 在方块1106,后处理器加密该程序。后处理器知道每一「块」之内存位置W及主密 钥缓存器142数值,并将之用于加密该程序。流程结束于方块1106。
[0177] 现在,参阅第12图,一方块图图解本发明技术另一种实施方式所实现的一分支与 切换密钥指令1200之格式。第12图所示之分支与切换密钥指令1200适用于目标地址在程序 执行前为未知的分支操作,W下将详细讨论之。分支与切换密钥指令1200包括一操作码 1202字段,用W标示其为微处理器100指令集内的分支与切换密钥指令1200。分支与切换密 钥指令1200同样包括一分支信息字段906,功用与第9图之分支与切换密钥指令900的该字 段类似。在一种实施方式中,若一程序在微处理器100不为安全执行模式时试图执行分支与 切换密钥指令1200,则视之为无效指令异常。在一种实施方式中,若一程序在微处理器100 不为最高权限级别(例如,x86环0权限)时试图执行一分支与切换密钥指令1200,则视之为 无效指令异常。在一种实施方式中,分支与切换密钥指令1200为原子型式。
[0178] 现在,参阅第13图,一方块图图解根据本发明技术实现的「块」地址范围表1300。表 格1300包括多个单元。每一单元与加密程序的一「块」相关。每一单元包括一地址范围字段 1302W及一密钥缓存器档案索引字段1304。地址范围字段1302标示所对应「块」的内存地址 范围。密钥缓存器档案索引字段1304标示密钥缓存器档案124内的缓存器,由分支与切换密 钥指令1200将索引所指的缓存器所储存的密钥数值加载主密钥缓存器142,供提取单元104 解密该「块」使用。W下参考第18图进行讨论,表格1300于需要存取表格1300内容的分支与 切换密钥指令1200执行前加载微处理器100。
[0179] 现在,参阅第14图,一流程图图解第1图微处理器100的操作,其中,根据本发明技 术执行第12图的分支与切换密钥指令1200。流程始于方块1402。
[0180] 在方块1402,译码单元108译码一分支与切换密钥指令1200且将之代入微代码单 元132中实现分支与切换密钥指令1200的微代码程序。流程接着进入方块1406。
[0181] 在方块1406,微代码解出分支方向(采用、或不采用)、且找出目标地址。流程接着 进入判断方块1408。
[0182] 在判断方块1408,微代码判断方块1406所解出的分支方向是否为采用。若为采用, 流程进入方块1414。反之,流程进入方块1412。
[0183] 在方块1412,微代码不切换密钥、或跳至目标地址,因为该分支未被采用。流程结 束于方块1412。
[0184] 在方块1414,微代码基于方块1406所解出的目标地址查询第13图所示之表格 1300,得到该目标地址所坐落之「块」所对应之密钥缓存器档案索引字段1304的内容。微代 码接着基于密钥缓存器档案索引字段1304内所记载的索引,自密钥缓存器档案124将密钥 数值加载主密钥缓存器142。较佳实施方式是,微代码根据密钥缓存器档案索引字段1304所 储存的索引,自密钥缓存器档案124将η个相邻缓存器储存的η个密钥值加载主密钥缓存器 142的,其中,η为主密钥缓存器142的总数。在一种实施方式中,数值η可纪录于分支与切换 密钥指令1200的一额外字段中,设定为少于主密钥缓存器142总数。流程接着进入方块 1416。
[0185] 在方块1416,微代码致使微处理器100分支至方块1406所解出的目标地址,将导致 微处理器100中较分支与切换密钥指令1200新的所有χ86指令被清空,致使微处理器100内、 较分支至目标地址的微操作新的所有微操作被清空。上述被清空的指令包括自指令高速缓 存102提取出、缓冲暂存于提取单元104W及译码单元108内等待解密与译码的所有指令字 节106。流程接着进入方块1418。
[0186] 在方块1418,随着方块1416分支至目标地址的操作,提取单元104采用方块1414加 载主密钥缓存器142的新一套密钥值,开始自指令高速缓存102提取并且解密指令数据106。 流程结束于方块1418。
[0187] 现在,参考第15图,一方块图图解根据本发明技术另外一种实施方式所实现的一 分支与切换密钥指令1500的格式。第15图所示之分支与切换密钥指令1500W及其操作类似 第12图所示之分支与切换密钥指令1200。然而,取代自密钥缓存器档案124加载密钥至主密 钥缓存器142,分支与切换密钥指令1500是自安全存储区122加载密钥至主密钥缓存器142, W下讨论之。
[0188] 现在,参考第16图,一方块图图解根据本发明技术所实现的「块」地址范围表1600。 第16图所示表格1600类似第13图所示之表格1300。然而,取代包括一密钥缓存器档案索引 字段1304,表格1600包括一安全存储区地址字段1604。安全存储区地址字段1604记载安全 存储区122内的一地址,该地址储存的密钥值须由分支与切换密钥指令1500加载主密钥缓 存器142, W供该提取单元104解密该「块」时使用。W下讨论参考第18图内容,表格1600是在 需要查询该表格1600的分支与切换密钥指令1500被执行前加载微处理器100。在一种实施 方式中,安全存储区122地址之较低数个位无须储存在安全存储区地址字段1604,特别是因 为安全存储区122中储存一组密钥的位置之总量相当大(例如,16字节X 5)、且该组密钥可 沿着一设定尺寸范围对齐。
[0189] 现在,参阅第17图,一流程图图解第1图微处理器100的操作,其中根据本发明技术 执行第15图的分支与切换密钥指令1500。流程始于方块1702。第17图之流程图的许多方块 与第14图的许多方块类似,因此采同样的编号。然而,方块1414是由方块1714取代,微代码 基于方块1406所求得的目标地址查表第16图之表格1600,W获得目标地址所坐落的「块」之 安全存储区地址字段1604数值。微代码接着根据安全存储区地址字段1604数值自安全存储 区122将密钥数值加载主密钥缓存器142。较佳实施方式是,微代码由安全存储区地址字段 1604数值自安全存储区122将η个邻近16字节空间位置内所储存的η个密钥数值加载主密钥 缓存器142,其中η为主密钥缓存器142的总数。在一种实施方式中,数值η可记载于分支与切 换密钥指令1500中一额外字段,设定为少于主密钥缓存器142总数。
[0190] 现在,参阅第18图,一流程图图解根据本发明另外一种实施方式所实现的一后处 理器的操作。所述后处理器可用于后处理一程序并加密之,W交由第1图的微处理器100执 行。流程始于方块1802。
[0191] 在方块1802,后处理器接收一程序的目的文件。根据一种实施方式,该目的文件内 的分支指令,可为目标地址在程序执行前判定、可为目标地址不可在程序执行前判定。流程 接着进入方块1803。
[0192] 在方块1803,后处理器建立第13图或第16图之「块」地址范围表1300或1600, W列 入该目标文件。在一种实施方式中,操作系统在加载且执行一加密程序前将表格1300/1600 加载微处理器100,使分支与切换密钥指令1200/1500得W存取之。在一种实施方式中,后处 理器在程序中插入指令,W在任何分支与切换密钥指令1200/1500执行前加载表格1300/ 1600至微处理器100。流程接着进入方块1804。
[0193] 在方块1804,类似先前所讨论、关于第11图之方块1104的操作,后处理器将每个执 行前目标地址可决定的跨块分支指令W第9图的分支与切换密钥指令900取代,指令900基 于分支指令目标地址所在「块」记载有合适的密钥缓存器档案索引字段904数值。流程接着 进入方块1805。
[0194] 在方块1805,后处理器根据方块1803所产生的表格型态(1300/1600)将每个限于 执行过程中决定目标地址的分支指令W第12图或第15图所示之分支与切换密钥指令1200 或1500取代。流程接着进入方块1806。
[01巧]在方块1806,后处理器加密该程序。该后处理器知道关于各「块」的内存位置与主 密钥缓存器142数值,将用于加密该程序。流程结束于方块1806。
[0196] 现在,参阅第19图,一流程图图解第1图微处理器100的操作,其中,根据本发明技 术处理加密程序W及纯文字程序之间的任务切换。流程始于方块1902。
[0197] 在方块1902,标志缓存器128的E位字段402的E位W及第1图控制缓存器144之E位 148由微处理器100的一重置操作清空。流程接着进入方块1904。
[0198] 在方块1904,微处理器100在执行其重置微代码进行初始化后,开始提取并且执行 使用者程序指令(例如,系统初体),其为纯文字程序指令。特别是,由于E位128为清空,如前 所述,提取单元104视提取出来的指令数据106为纯文字指令。流程接着进入方块1906。
[0199] 在方块1906,系统初体(例如,操作系统、初体、基本输入输出系统BIOS…等)接收 一要求(request),要执行一加密程序。在一种实施方式中,执行一加密程序的上述要求伴 随、或由一切换操作指示,W切换至微处理器100的一安全执行模式,如W上讨论内容。在一 种实施方式中,微处理器100仅在安全执行模式时,方允许操作于一解密模式(即,E位148为 设定状态)。在一种实施方式中,微处理器100仅在系统管理模式(system management mode,例如,x86架构中常见的SSM),方允许W解密模式操作。流程接着进入方块1908。
[0200] 在方块1908,系统软件于主密钥缓存器142中加载其初始值,与程序中将被执行的 第一「块」相关。在一种实施方式中,系统软件执行一密钥切换指令600下载密钥至主密钥缓 存器142。在加载密钥至主密钥缓存器142之前,密钥缓存器档案124的内容可由一或多个密 钥加载指令500加载。在一种实施方式中,加载密钥至主密钥缓存器142W及密钥缓存器档 案124之前,安全存储区122可先被写入密钥数值,其中,所述写入乃经由常见的安全通道技 术,例如,AES或RSA加密通道,W防止黑客窥探其值。如W上所讨论,W上密钥数值可储存在 一安全非挥发性内存(例如闪存)经由一隔离串行总线(private serial bus)禪接微处理 器100,或者,可储存在微处理器100的一非挥发性单次写入内存。如W上讨论,所述程序可 包含在单一「块」中。也就是说,所述程序可不包括密钥切换指令600,整个程序可由单一套 主密钥缓存器142数值解密。流程接着进入方块1916。
[0201] 在方块1916,随着控制权转移至加密程序,微处理器100设定标志缓存器128的E位 字段402标示目前所执行的程序为加密型式,且设定控制缓存器144的E位148,使提取单元 104处于解密模式。微处理器100更致使流水线内的指令被刷新,其动作类似第7图方块706 所实行的刷新操作。流程接着进入方块1918。
[0202] 在方块1918,提取单元104提取加密程序内的指令106,并且参考第1图至第3图所 掲露的技术将之W解密模式解密并且执行之。流程接着进入方块1922。
[0203] 在方块1922,微处理器100提取并且执行加密程序时,微处理器100接收到中断事 件。举例说明之,所述中断事件可为一中断interrupt、一异常exception(如页面错误page fault)、或任务切换化sk switch。当一中断事件发生,微处理器100流水线所有待处理的指 令会被清空。所W,若流水线中有任何先前提取的加密指令,将之清空。此外,自指令高速缓 存102所提取出、可能在缓冲储存在提取单元104W及译码单元108中等待被解密、译码的所 有指令字节会被清空。在一种实施方式中,微代码被唤起响应中断事件。流程接着进入方块 1924。
[0204]在方块1924,微处理器100储存标志缓存器128 (W及微处理器100其它结构状态, 包括受中断的加密程序的目前指令指针数值)至一堆找式内存(stack memory)。储存加密 程序之E位字段402数值将使其得W在后续操作中修复(在方块1934)。流程接着进入方块 1926。
[02化]在方块1926,当控制权转移到新的程序(例如,中断处理程序interrupt handler、 异常处理程序exception handler、或新任务),微处理器100清空标志缓存器128的E位字段 402、W及控制缓存器144的E位148, W应付纯文字的新程序。也就是说,第19图所示实施例 假设微处理器100同一时间只有允许运作一个加密程序,且已有一个加密程序在执行(但被 中断)。第22图至第26图另外掲露有其它种的实施方式。流程接着进入方块1928。
[0206] 在方块1928,提取单元104参考第1图至第3图所掲露内容W纯文字模式提取新程 序的指令106。特别是,控制缓存器144内E位148的清空状态使得多任务器154将指令数据 106与多位的二进制零值176进行异或运算,使得指令数据106不被解密操作。流程接着进入 方块1932。
[0207] 在方块1932,新程序执行一返回操作自中断指令(例如,X86IRET)或类似指令返 回,使得控制权回归加密程序。在一种实施方式中,自中断指令返回的操作由微代码实现。 流程接着进入方块1934。
[0208] 在方块1934,响应前述自中断指令返回的操作,由于控制权移转回加密程序,微处 理器100修复标志缓存器128,令标志缓存器128之E位字段402重回先前方块1924所储存的 设定状态。流程接着进入方块1938。
[0209] 在方块1938,由于控制权移转回加密程序,微处理器100W标志缓存器128的E位字 段402数值更新控制缓存器144的E位148,使得提取单元104重新提取并且解密该加密程序 之指令数据106。流程接着进入方块1942。
[0210] 在方块1942,微代码令微处理器100分支至先前方块1924储存于堆找式内存中的 指令指针数值,使得微处理器100中所有x86指令清空、且使得微处理器100中所有微操作清 空。所清空内容包括提取自指令高速缓存102、缓冲暂存在提取单元104W及译码单元108中 等待被解密、译码的所有指令字节106。流程接着进入方块1944。
[0211] 在方块1944,提取单元104重新开始提取该加密程序内的指令106,并且参考第1图 至第3图所掲露技术W解密模式解密并且执行之。流程结束于方块1944。
[0212] 现在,参考第20图,一流程图图解根据本发明技术实现的一系统软件之操作,由第 1图之微处理器100执行。第20图流程可配合第19图内容执行。流程始于方块2002。
[0213] 在方块2002,系统软件收到一要求,欲执行一个新的加密程序。流程接着进入决策 方块2004。
[0214] 在决策方块2004,系统软件判断此一加密程序是否为系统已在执行的程序之一。 在一种实施方式中,系统软件w-旗标标示一加密程序是否为系统中已在执行的程序之 一。若此加密程序是系统已在执行的程序之一,流程进入方块2006,反之,则流程进入方块 2008。
[0215] 在方块2006,系统软件等待该加密程序执行完毕且不再是系统执行中的程序之 一。流程接着进入方块2008。
[0216] 在方块2008,微处理器100允许新的加密程序开始执行。流程结束于方块2008。
[0217] 现在,参考第21图,一方块图根据本发明技术另外一种实施方式,图解第1图标志 缓存器128的字段。第21图的标志缓存器128类似第4图所示实施方式,相比之,更包括索引 字段(index bits)2104。根据一种实施方式,索引字段2104(类似E位402)通常是x86架构所 预留的位。索引字段2104用于应付多个加密程序的切换,W下详细讨论之。较佳实施方式 是,密钥切换指令600 W及分支与切换密钥指令900/1200 W本身的密钥缓存器索引字段 604/904/1304更新标志缓存器128的索引字段2104。
[0218] 现在,参考第22图,一流程图图解第1图微处理器100的操作,其中,根据本发明技 术采用第21图所示之标志缓存器128实行多个加密程序之间的任务切换。流程接着进入方 块2202。
[0219] 在方块2202,一要求发向该系统软件,要执行一个新的加密程序。流程接着进入决 策方块2204。
[0220] 在决策方块2204,系统软件判断密钥缓存器档案124中是否有空间应付一个新的 加密程序。在一种实施方式中,方块2202所产生的该要求会指出需要密钥缓存器档案124内 多少空间。若密钥缓存器档案124中有空间应付新的加密程序,流程进入方块2208,反之,流 程进入方块2206。
[0221] 在方块2206,系统软件等待一或多个加密程序完成、使密钥缓存器档案124腾出空 间应付新的加密程序。流程接着进入方块2208。
[0222] 在方块2208,系统软件将密钥缓存器档案124内的空间配置给新的加密程序,并且 随之填写标志缓存器128中的索引字段2104, W标示密钥缓存器档案124中新配置的空间。 流程接着进入方块2212。
[0223] 在方块2212,系统软件在方块2208所配置的密钥缓存器档案124位置加载供新程 序使用的密钥数值。如W上讨论,所加载的密钥数值可采用密钥加载指令500自安全存储区 122加载,或者,在必要情况下,可W安全管道由微处理器100外部位置取得。流程接着进入 方块2214。
[0224] 在方块2214,系统软件基于密钥缓存器档案索引字段604/904/1304将密钥自密钥 缓存器档案124加载主密钥缓存器142。在一种实施方式中,系统软件执行一密钥切换指令 600加载密钥至主密钥缓存器142。流程接着进入方块2216。
[0225] 在方块2216,由于控制权移转至加密程序,微处理器100设定标志缓存器128之E位 字段402W标示目前执行的程序为加密型式,并且设定控制缓存器144的E位148W设定提取 单元104为解密模式。流程结束于方块2216。
[0226] 现在,参考第23图,一流程图图解第1图微处理器100的操作,其中,根据本发明技 术采用第21图所示之标志缓存器128应付多个加密程序之间的任务切换。流程始于方块 2302。
[0227]在方块2302,目前执行的程序执行一返回操作,自一中断指令返回,引发一任务切 换至新程序;所述新程序先前曾被执行过但被跳开,且其结构状态(例如,标志缓存器128、 指令指针缓存器、W及通用缓存器)曾被储存在堆找式内存中。如先前所提过,在一种实施 方式中,自中断指令返回的操作是由微代码实现。现在执行中的程序W及新的程序可为加 密程序或纯文字程序。流程进入方块2304。
[02%]在方块2304,微处理器100根据堆找式内存修复标志缓存器128, W应付后续返回 的程序。也就是说,微处理器100将后续程序(即目前跳换回的程序)先前跳换出去时储存于 堆找式内存的标志缓存器128数值重新加载标志缓存器128。流程接着进入决策方块2306。
[0229] 在决策方块2306,微处理器100判断修复后的标志缓存器128之E位402是否为设定 状态。若是,则流程进入方块2308;反之,则流程进入方块2312。
[0230] 在方块2308,微处理器100根据方块2304所修复的EFLAGS缓存器128索引字段2104 数值将密钥加载密钥缓存器档案124。流程接着进入方块2312。
[0231] 在方块2312,微处理器100将控制缓存器144之E位148的内容W方块2304所修复的 标志缓存器128之E位字段402数值更新。因此,若后续的程序是一个加密程序,提取单元104 会被设定为解密模式,反之,则设定为纯文字模式。流程接着进入方块2314。
[0232] 在方块2314,微处理器100W堆找式内存的内容修复指令指针缓存器、并且分支跳 跃至指令指针所指的位置,所述动作将清除微处理器100所有X86指令,并且清除微处理器 所有微操作。所清除的包括自指令高速缓存102所提取出、缓冲暂存于提取单元104、译码单 元108中等待解密、译码的所有指令字节106。流程接着进入方块2316。
[0233] 在方块2316,提取单元104参考第1图至第3图技术重新开始自后续程序中提取指 令106,并视方块2312所修复的控制缓存器144之E位148数值W解密模式或纯文字模式操 作。流程结束于方块2316。
[0234] 现在,参考第24图,一方块图根据本发明、图解第1图密钥缓存器档案124之单一个 缓存器的另外一种实施方式。根据第24图所示之实施方式,每个密钥缓存器档案124更包括 一位一为淘汰位2402化ill bit, W下简称K位)dK位2402用于应付微处理器100对多个加密 程序的多任务(multitasking)操作,所述多个加密程序总计需要多于密钥缓存器档案124 空间尺寸的密钥储存空间,W下将详述之。
[0235] 现在,参考第25图,一流程图图解第1图微处理器100的操作,其中根据本发明技术 W第21图之标志缓存器128W及第24图之密钥缓存器档案124实现多个加密程序之间之任 务切换的另外一种实施方式。第25图所示流程类似第22图所示流程。不同处在于决策方块 2204判定密钥缓存器档案124中没有足够可用空间时,第25图流程会进入方块2506而非不 存在于第25图的方块2204。另外,若决策方块2204判定密钥缓存器档案124中尚有足够可用 空间,则第25图流程同样进入第22图之方块2208至方块2216。
[0236] 在方块2506,系统软件将密钥缓存器档案124中已经被其它加密程序使用(即已经 被配置)的空间(即缓存器)配置出来,并且设定所配置缓存器的K位2402为设定状态,并且 随之设定标志缓存器128的索引字段2104W标示新配置空间在密钥缓存器档案124中的位 置。K位2402之设定状态,是标示该缓存器中关于其它加密程序的密钥值将被方块2212的操 作覆写为新的加密程序的密钥值。然而,如W下第26图所叙述,其它加密程序的密钥值将在 其返回程序中由方块2609重新加载。第25图流程进入方块2506,会接着导向第22图所示之 方块2212,结束于方块2216。
[0237] 现在,参阅第26图,一流程图图解第1图微处理器100的操作,其中根据本发明技术 W第21图之标志缓存器128W及第24图之密钥缓存器档案124实现多个加密程序之间之任 务切换的另外一种实施方式。第26图所示流程类似第23图所示流程。不同处在于,若决策方 块2306判定标志缓存器128的E位402为设定,第26图令流程进入决策方块2607而非方块 2308。
[0238] 在决策方块2607,微处理器100判断密钥缓存器档案124中,由标志缓存器128索引 字段2104数值(于方块2304中修复)所标示的任何缓存器之K位2402是否为设定状态。若是, 则流程进入方块2609;若否,则流程进入方块2308。
[0239] 在方块2609,微处理器100产生一异常警示(exception)交由一异常处理程序处 理。在一种实施方式中,异常处理程序设计于系统软件中。在一种实施方式中,异常处理程 序是由安全执行模式架构提供。根据方块2304所修复的标志缓存器128索引字段2104数值, 异常处理程序将目前修复的加密程序(即现在所返回执行的加密程序)之密钥重新加载密 钥缓存器档案124。异常处理程序可类似先前第19图所提及的方块1908作动,将修复之加密 程序的密钥加载密钥缓存器档案124,或者,在必要情况下,自微处理器100外部将密钥载入 安全存储区122。同样地,若密钥缓存器档案124中被重新加载的缓存器有被其它加密程序 使用,系统软件会令其缓存器的K位2402为设定状态。流程接着自方块2609进入2308,且方 块2308至2316是参考第23图内容。
[0240] 如第24图至第26图所教示,此处所叙述的实施方式令微处理器100得W实行多个 加密程序的多任务操作,即便上述加密程序需要密钥暂存空间总合多于密钥缓存器124空 间尺寸。
[0241] 现在,参考第27图,一方块图图解修改自第1图微处理器100的本发明另外一种实 施方式。与第1图类似的组件是采用同样标号;例如,指令高速缓存102、提取单元104W及密 钥缓存器档案124。然而,此处提取单元104被修正成更包括密钥切换逻辑2712,禪接第1图 所介绍之主密钥缓存器档案142W及密钥缓存器档案124。第27图之微处理器100更包括一 分支目标地址高速缓存(branch ta巧et ad化ess cache,BTAC)2702eBTAC 2702接收第1图 所掲露之提取地址134,且与指令高速缓存102的存取平行,皆是基于该提取地址134。根据 提取地址134,BTAC 2702供应分支目标地址2706给第1图所掲露的提取地址产生器164,供 应一采用/不采用指标(T/NT indicator)2708?及一型式指针(type indicator)2714给密 钥切换逻辑2712,并且供应一密钥缓存器档案化R巧索引2716给密钥缓存器档案124。
[0242] 现在,参阅第28图,一方块图根据本发明技术更详细图解第27图的BTAC 2702。 BTAC 2702包括一BTAC矩阵2802,其中具有复数个BTAC单元2808,第29图图解BTAC单元2808 的内容。BTAC 2802储存的信息包括先前执行过的分支指令的历史信息,W预测后续执行之 分支指令的方向W及目标地址。特别是,BTAC 2802会采用储存的历史信息,基于提取的地 址134预测先前执行过的分支指令后续发生的提取操作。分支目标地址缓存之操作可参考 常见的分支预测技术。然而,本发明所掲露的BTAC 2802是更修正成记录先前执行过的分支 与切换密钥指令900/1200的历史信息,W进行相关的预测操作。特别是,储存的历史纪录使 得BTAC 2802得W在提取时间内预测所提取的分支与切换密钥指令900/1200将加载主密钥 缓存器142的该组数值。此操作致能密钥切换逻辑2712在分支与切换密钥指令900/1200实 际执行前将密钥数值加载,避免受限于需根据分支与切换密钥指令900/1200之执行清空微 处理器100的流水线内容,W下将详细讨论之。此外,根据一种实施方式,BTAC 2802更被修 正成储存包括先前执行过的密钥切换指令600的历史信息,W达到相同的效果。
[0243] 现在,参阅第29图,一方块图根据本发明技术更详细图解第28图BTAC单元2808的 内容。每个单元2808包括一有效位2902指示所属单元2808是否为有效。每个单元2808更包 括一标记字段2904,用W与提取地址134的部分内容比较。若提取地址134的索引部分选择 的单元2808使得提取地址134之标记部分吻合其中有效标记2904,则提取地址134正中BTAC 2802。每个阵列单元2808更包括一目标地址字段2906,用于储存先前执行过之分支指令一 包括分支与切换密钥指令900/1200-的目标地址。每个阵列单元2808更包括一采用/不采 用字段2908,用W储存先前执行过的分支指令一包括分支与切换密钥指令900/1200-的方 向(采用/不采用)记录。每个阵列单元2808更包括一密钥缓存器档案索引2912字段,用于储 存先前执行过的分支与切换密钥指令900/1200的密钥缓存器档案索引904/1304记录,W下 将详细讨论之。根据一种实施方式,BTAC 2802是在其密钥缓存器档案索引2912字段储存先 前执行过的密钥切换指令600的密钥缓存器档案索引604记录。每个阵列单元2808更包括一 型式字段2914,指示所纪录的指令的型式。例如,型式字段2914可标示所纪录的历史指令为 一呼叫(call)、返回(return)、条件跳跃(conditional jump)、无条件跳跃(unconditional jump)、分支与切换密钥指令900/1200、或密钥切换指令600。
[0244] 现在,参阅觀0图,一流程图图解第27图微处理器100的操作,其中,根据本发明技 术,所述微处理器100包括第28图掲露的BTAC 2802。流程始于方块3002。
[0245] 在方块3002,微处理器100执行一分支与切换密钥指令900/1200,W下将W第32图 详述之。流程接着进入方块3004。
[0246] 在方块3004,微处理器100在BTAC 2802中配置一阵列单元2808给执行过的分支与 切换密钥指令900/1200,将该分支与切换密钥指令900/1200解出的方向、目标地址、密钥缓 存器档案索引904/1304、W及指令型式分别纪录于所配置的该阵列单元2808之采用/不采 用字段2908、目标地址字段2906、密钥缓存器档案索引2912字段、W及型式字段2914中,W 作为该分支与切换密钥指令900/1200的历史信息。流程结束于方块3004。
[0247] 现在,参阅第31图,一流程图图解第27图微处理器100的操作,其中,根据本发明技 术,所述微处理器100包括第28图掲露的BTAC 2802。流程始于方块3102。
[0248] 在方块3102,提取地址134供应给指令高速缓存102 W及BTCA2802。流程接着进入 方块3104。
[0249] 在方块3104,提取地址134正中BTAC 2802,且BTAC 2802将对应的阵列单元2808之 目标地址2906、采用/不采用2908、密钥缓存器档案索引2912字段W及型式2914字段的内容 分别W目标地址2706、采用/不采用指针2708、密钥缓存器档案索引2716、W及型式指针 2714输出。特别是,型式字段2914用于指示所储存指令为一分支与切换密钥指令900/1200。 流程接着进入决策方块3106。
[0250] 在决策方块3106,密钥切换逻辑2712藉由检验采用/不采用输出2708判断分支与 切换密钥指令900/1200被BTAC 2802预测为会采用。若采用/不采用输出2708显示分支与切 换密钥指令900/1200被预测为采用,流程接着进入方块3112;反之,流程接着进入方块 3108。
[0251] 在方块3108,微处理器100随着分支与切换密钥指令900/1200顺着输送一指示,显 示BTAC 2802预测其不被采用。(此外,若采用/不采用输出2708显示该分支与切换密钥指令 被预测为采用,微处理器100在方块3112随着该分支与切换密钥指令900/1200顺着输送一 指示,显示BTAC 2802预测其会被采用)。流程结束于3108。
[0252] 在方块3112,提取地址产生器164 WBTAC 2802于方块3104所预测的目标地址2706 更新提取地址134。流程接着进入方块3114。
[0253] 在方块3114,根据BTAC 2802于方块3104所预测的密钥缓存器档案索引2712,密钥 切换逻辑2712W其所指示之密钥缓存器档案124位置更新主密钥缓存器142内的密钥数值。 在一种实施方式中,必要状况下,密钥切换逻辑2712会拖延提取单元104提取指令数据106 内的区块,直至主密钥缓存器142被更新。流程接着进入方块3116。
[0254] 在方块3116,提取单元104利用方块3114所加载的新主密钥缓存器142内容持续提 取并且解密指令数据106。流程结束于方块3116。
[0255] 现在,参阅第32图,一流程图图解第27图微处理器100的操作,其中,根据本发明技 术,执行一分支与切换密钥指令900/1200。第32图流程在某一方面类似第10图流程,且类似 的方块是采W同样标号。虽然第32图的讨论是参照第10图内容,其应用可更考虑第14图所 介绍的分支与切换密钥指令1200操作。第32图流程始于方块1002。
[0256] 在方块1002,译码单元108译码一分支与切换密钥指令900/1200,且将之代入微代 码单元132实现分支与切换密钥指令900/1200的微代码程序。流程接着进入方块1006。
[0257] 在方块1006,微代码解出分支方向(即采用/不采用及目标地址。流程接着进入 方块3208。
[0258] 在方块3208,微代码判断BTAC 2802是否为该分支与切换密钥指令900/1200提供 一预测。若有提供,流程接着进入决策方块3214;若无提供,流程接着进入第10图的方块 1008。
[0259] 在决策方块3214,微代码藉由将BTAC 2802输送出的采用/不采用指针2708W及目 标地址2706与方块1006所解出的方向W及目标地址判断BTAC2802所做的预测是否正确。若 BTAC 2802的预测正确,则流程结束;反之,则流程来到决策方块3216。
[0260] 在决策方块3216,微代码判断此不正确的BTAC 2802预测有没有被采用。若已被采 用,流程进入方块3222;若无,流程进入第10图的方块1014。
[0261] 在方块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。
[0262] 除了 W上所述、由微处理器100实现的指令解密实施方式所带来的安全优势,发明 人更发展出建议编码指南,其使用可配合W上实施方式,削弱藉由分析x86指令实际使用 量、对加密x86码W统计技巧发展出的黑客攻击。
[0263] 第一,由于黑客通常假设所提取的16字节的指令数据106全数为X86指令,因此,相 对于程序执行流程,编码时应当在16字节区块之间加入「桐化oles)」。也就是说,其编码应 当W多个指令跳跃一些指令字节,W未加密的字节产生多个「桐」,其中可填入适当的数值, W增加纯文字字节的赌值(entropy)。此外,倘若能更提升纯文字字节的赌值,其编码可尽 可能采用实时数据值。此外,所述实时数据值可作为假线索,指向错误的指令操作码地址。
[0264] 第二,所述编码可包括特别的N0P指令,其中包括"不理会"字段,填有适当数值W 增加上述赌值。例如,x86指令0x0F0D05xxxxxxxx属于7字节的N0P,其中最后四个字节可为 任意值。此外,N0P指令的操作码型式W及其「不理会」字节的数量更可有其它变化。
[0265] 第Ξ,许多X86指令具有与其它X86指令相同的基本功能。关于等效功能的指令,其 编码可舍弃重复使用同样的指令,改采用多重型式并且/或采用使纯文字赌值提升的型式。 例如,指令0XC10107W及指令0XC10025作的是同样的事情。甚至,某些等效指令是W不同长 度的版本呈现,例如,0XEB22 W及0XE90022;因此,编码时可采用多种长度但相同效果的指 令。
[0266] 第四,x86架构允许使用冗余且无意义的操作码前缀(opcode prefixes),因此,编 码时可小屯、应用之,W更增加上述赌值。例如,指令0x40 W及0X2627646567F2F340作的是完 全一样的事情。因为其中仅有8个安全的X86前缀,他们需被小屯、地安插在编码中,W避免过 度频繁地出现。
[0267] 虽然已经列举多种实施例W密钥扩展器对主密钥缓存器数值中的一对数值进行 旋转W及加/减运算,尚有其它实施方式可考虑使用,其中,密钥扩展器可对多于两个的主 密钥缓存器数值进行运算,此外,所进行的运算可不同于旋转W及加/减运算。此外,第6图 掲露的密钥切换指令600W及第9图掲露的分支与切换密钥指令900更可有其它实施方式, 例如,将新的密钥数值由安全存储区12巧日载主密钥缓存器142而非由密钥缓存器档案124 加载,并且,第15图所介绍的分支与切换密钥指令1500的其它实施方式是W索引字段2104 储存安全存储区122的地址。此外,虽然已列举多种实施例调整BTAC2702储存KRF索引配合 分支与切换密钥指令900/1200使用,尚有其它实施方式是调整BTAC 2702储存安全存储区 地址,W配合分支与切换密钥指令1500使用。
[0268] 特别是,由于解密密钥174衍生自第一 W及第二密钥234与236,主密钥172(包含组 成任一特定密钥对的第一W及第二密钥234与236)可替代为解密密钥元(dec巧ption k巧 primitives)。"元(primitive)"在此作为"衍生物(derivative)"的反义词。
[0269] W上列举的本发明诸多实施方式仅是作为说明例使用,并非意图限制发明范围。 相关计算机技术领域人员可在不偏离本发明范围的前提下作出形式W及细节的诸多变形。 例如,可W软件方式实现所述如函式、制作、模块化、模拟、说明、W及/或测试此篇所讨论之 设备与方法的方式。实现方式包括一般程序语言(例如,C、C++)、硬件描述语言包括Verilog HDL、V皿L···等、或其它可用的程序工具。所述软件可载于任何已知的计算器可读媒体,例 如,磁带、半导体、磁盘、或光盘(例如,CD-R0M、DVD-R0M等)、网络、有线传输、无线或其它通 讯媒体。所述设备与方法的实施方式可包含于半导体知识产权核屯、,例如一微处理器核屯、 (例如W皿L实现),并可转成硬件W集成电路实现。此外,所述之设备与方法可由软、硬件结 合方式实现。因此,本发明范围不应限定于所述任何实施方式,应当是w下列权利要求项w 及其等效技术界定之。特别是,本发明技术可W-般用途计算器所采用的微处理器实现。值 得注意的是,本技术领域人员可能不偏离权利要求所定义之发明范围、W所掲露之概念W 及特殊实施例为基础、设计或修正提出其它架构产生与本发明相同的效果。
【主权项】
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. -种计算机程序产品,编码于至少一非瞬时计算机介质由运算装置运行,该计算机 程序产品更包括: 计算机用程序代码,载于该非瞬时计算机介质描述微处理器,该计算机用程序代码包 括: 第一程序代码,描述安全内存储存、且提供密钥编写的密钥,用于加密的指令的解密; 第二程序代码,描述指令处理流水线自高速缓存提取并执行指令,且指令处理流水线 更包括: 第三程序代码,描述提取单元提取该微处理器所支持的指令集架构中未加密以及加密 的指令,其中,该指令集架构包括密钥储存指令,用以储存一或多个密钥编写的密钥至该安 全内存,且该微处理器支持加密的密钥储存指令; 第四程序代码,描述解密电路以接收自该安全内存的所述密钥编写的密钥作加密的指 令的解密;以及 第五程序代码,描述一或多个执行单元执行指令、或执行指令所转译出的微指令, 第六程序代码,描述该微处理器的架构,以响应加密的密钥储存指令,其中以第一组的 一或多个密钥编写的密钥对加密的密钥储存指令作解密,之后执行解密后的密钥储存指 令,之后采用所述加密的密钥储存指令所提供的第二组的一或多个密钥编写的密钥解密后 续组的一或多个加密的指令。
【文档编号】G06F15/78GK105843776SQ201610212909
【公开日】2016年8月10日
【申请日】2016年4月7日
【发明人】G.葛兰.亨利, 泰瑞.帕克斯, 布兰特.比恩, 汤姆士.A.克里斯宾
【申请人】威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1