CN103713883A - 解密密钥产生装置与方法 - Google Patents

解密密钥产生装置与方法 Download PDF

Info

Publication number
CN103713883A
CN103713883A CN201310738005.XA CN201310738005A CN103713883A CN 103713883 A CN103713883 A CN 103713883A CN 201310738005 A CN201310738005 A CN 201310738005A CN 103713883 A CN103713883 A CN 103713883A
Authority
CN
China
Prior art keywords
key
instruction
microprocessor
key value
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.)
Granted
Application number
CN201310738005.XA
Other languages
English (en)
Other versions
CN103713883B (zh
Inventor
G·葛兰·亨利
泰瑞·派克斯
布兰特·比恩
汤姆士·A·克理斯宾
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Priority claimed from CN201110136447.8A external-priority patent/CN102221989B/zh
Publication of CN103713883A publication Critical patent/CN103713883A/zh
Application granted granted Critical
Publication of CN103713883B publication Critical patent/CN103713883B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0827Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) involving distinctive intermediate devices or communication paths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2107File encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/20Manipulating the length of blocks of bits, e.g. padding or block truncation

Abstract

本发明涉及一种解密密钥产生装置,所产生的解密密钥用于解密取自一微处理器的指令高速缓存一提取地址的一区块的加密指令数据。该解密密钥产生装置以两个多工器基于该提取地址的第一部份自多个密钥值中选出一第一以及一第二密钥值,更以一旋转器基于该提取地址的第二部分循环移位该第一密钥值,更以一计算单元基于该提取地址的第三部分选择将循环位移后的该第一密钥值加入该第二密钥值、或将该第二密钥值减去循环位移后的该第一密钥值,以产生该解密密钥。该解密密钥自加密指令数据解密出的纯文字数据自该微处理器外部不可见。

Description

解密密钥产生装置与方法
本申请为申请日为2011年5月25日、申请号为201110136447.8的发明名称为“微处理器以及相关的操作方法、以及加密、解密方法”的申请案的分案申请。 
技术领域
本发明涉及微处理器(microprocessor)领域,特别是涉及用于增加微处理器所执行的程序的安全性。 
背景技术
很多软件程序在面临破坏计算机系统安全的攻击时,通常是脆弱不堪的。例如,黑客可藉由攻击一运行中程序的缓冲溢位区漏洞(buffer overflow vulnerability)植入不当程序码、并转移主控权给该不当程序码。如此一来,所植入的程序码将主导被攻击的程序。一种防范软件程序遭攻击的方案为指令集随机化(instruction set randomization)。概略解释之,指令集随机化技术会先将程序加密(encrypt)为某些形式,再于处理器将该程序自存储器提取后,于该处理器内解密(decrypt)该程序。如此一来,黑客便不易植入恶意指令,因为所植入的指令必须被适当地加密(例如,使用与所攻击程序相同的加密密钥或演算法)方会被正确地执行。例如,参阅文件「Counter Code-Injection Attacks with Instruction-Set Randomization,by Gaurav S.Kc,Angelos D.Keromytis,and Vassilis Prevelakis,CCS’03,October27-30,2003,Washington,DC,USA,ACM1-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」。 
发明内容
本发明一种实施方式揭露一种解密密钥产生装置,所产生的解密密钥用于解密一区块的加密指令数据。该区块的加密指令数据是取自一微处理器的一指令高速缓存的一提取地址。该解密密钥产生装置包括:一第一多工器、一第二多工器、一旋转器以及一计算单元。该第一多工器是设置来基于该提取地址的一第一部份自多个密钥值中选出一第一密钥值。该第二多工器是设置来基于该提取地址的该第一部份自该多个密钥值中选出一第二密钥值。该旋转器是设置来基于该提取地址的一第二部分循环移位该第一密钥值。该计算单元是设置来基于该提取地址的一第三部分选择将循环位移后的该第一密钥值加入该第二密钥值、或将该第二密钥值减去循环位移后的该第一密钥值,以产生该解密密钥。 
在一种实施方式中,该解密密钥自加密指令数据解密出的纯文字数据(plain text data)自该微处理器外部不可见(unoberservable)。 
在另外一种实施方式中,所揭露的解密密钥产生装置更包括一控制位,设置来储存一标示,反映该处理器处于一解密模式或一纯文字模式。该微处理器处于该解密模式时,该解密密钥是与提取出的该区块的加密指令数据做布林异或运算,以于解密该区块的加密指令数据。该微处理器处于该纯文字模式时,提取出的该区块的加密指令数据是与二进制零值(zeroes)做布林异或运算。 
在另外一种实施方式中,该第一以及该第二密钥值所选自的该多个密钥值是取决于一更新操作,该更新操作早于该第一以及该第二多工器的选择操作。 
本发明一种实施方式揭露一种解密密钥产生方法,所产生的解密密钥用于解密一区块的加密指令数据。该区块的加密指令数据的取自一微处理器的一指令高速缓存的一提取地址。该解密密钥产生方法包括:基于该提取地址的一第一部份,自多个密钥值中选出一第一密钥值;基于该提取地址的该第一部份,自该多个密钥值中选出一第二密钥值;基于该提取地址的一第二部分,循环移位该第一密钥值;以及,基于该提取地址的一第三部分,选择将循环位移后的该第一密钥值加入该第二密钥值、或将该第二密钥值减去循环位移后的该第一密钥值,以产生该解密密钥。该第一以及该第二密钥值所选自的该多个密钥值的取决于一更新操作,该更新操作早于选择该第一以及该第二密钥值的操作。 
附图说明
图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微处理器采用图28BTAC的操作; 
图31为一流程图,根据本发明技术,图解图27微处理器采用图28BTAC的操作;以及 
图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~步骤方块;以及 
ZEROS~多位的二进位零值。 
具体实施方式
参阅图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 text mode)。提取单元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 zeros)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)或队列(queus),以在解码之前或期间,缓冲存储的纯文字指令数据162的串流。在一种实施方式中,解码单元108包括一指令转译器(instruction translator),用以将X86指令转译为微指令microinstructions或micro-ops,交由执行单元112执行。解码单元108输出指令时,更会针对各指令输出一位值,该位值乃伴随该指 令沿所述管线结构一路行进而至,用以指示该指令是否为加密指令。该位值将控制该执行单元112以及该引出单元114,使的根据该指令自该指令高速缓冲存储器102取出时是加密指令或纯文字指令而进行决策并且采取动作。在一种实施方式中,纯文字指令不被允许执行专供指令解密模式设计的特定操作。 
在一种实施方式中,微处理器100为一x86架构处理器,然而,微处理器100也可以其他架构的处理器实现。若一处理器可正确执行设计给x86处理器执行的大多数应用程序,则视之为x86架构的处理器。若应用程序执行后可获得预期结果,则可判断该应用程序是被正确执行。特别是,微处理器100是执行x86指令集的指令,且具有x86用户可用寄存器组(x86user-visible register set)。 
在一种实施方式中,微处理器100设计成供应一复合安全架构(comprehensive security architecture)─称为安全执行模式(secure execution mode,简称SEM)─以于其中执行程序。根据一种实施方式,SEM程序的执行可由数种处理器事件(processor events)引发,且不受一般(非SEM)操作封锁。以下举例说明限定于SEM下执行的程序所实现的功能,其中包括关键安全任务(critical security tasks)如:凭证核对以及数据加密、系统软件活动监控、系统软件完整性验证、资源使用追踪、新软件的安装控制…等。关于SEM的实施方式请参考本公司于2008年10月31日申请的美国专利申请案,案号12/263,131,(美国专利公开号为2009-0292893,于2009年11月26日公开);该案的优先权主张溯及2008年5月24日的美国专利临时申请案(案号61/055,980);本申请案相关技术部份可参照上述案件内容。在一种实施方式中,用于存储SEM数据为安全非易失性存储器(未显示在图示)─如高速缓冲存储器(flash memory)─可用于存储解密密钥,并藉由一隔离串行总线(private serial bus)耦接微处理器100,且其中所有数据乃AES加密(AES-encrypted)且经过签署验正(signature-verified)的。在一种实施方式中,微处理器100包括少量的单一次写入性非易失性存储器(non-volatile write-once memory,未显示于图示),用于存储解密密钥;其中一种实施方式可参考美国专利案7,663,957所揭示的一熔丝型非易失性存储器;可参照上述案件内容应用于本发明。本发明所揭示的指令解密特征的其中一项优点为:扩展安全执行模式(SEM)的应用范围,使安全性程序(secure program)得 以存储在微处理器100外的存储器,无须限定完整存储于微处理器100内部。因此,安全性程序可利用存储器阶层架构所提供的完整空间以及功能。在一种实施方式中,部分或全部的结构性异常/中断(architectural exceptions/interrupts,例如,页面错误page faults、除错中断点debugbreakpoints)…等,在SEM模式下是除能(disable)的。在一种实施方式中,部分或全部的结构性异常/中断在解密模式(即E位148为设定)下是除能(disable)的。 
微处理器100还包括一密钥寄存器文档(key register file)124。密钥寄存器文档124包括多个寄存器,其中储存的密钥可藉由密钥切换指令(switch key instruction,后续讨论之)载入提取单元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-fly switching),以下将详述之。新的密钥可由加密程序指令自身的即 时数据组成。在一种实施方式中,程序文档标头的一字段会指示程序指令是否为加密型式。 
图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包括一第一多工器A212以及一第二多工器B214,用以接收主密钥寄存器142所供应的密钥。提取地址134的部分内容用于控制多工器212/214。在图2所示实施方式中,多工器B214为三转一多工器,而多工器A212为四转一多工器。表格1显示多工器212/214如何根据各自的选择输入选取这些主密钥寄存器142(以上述编号识别)。表格2显示上述选择输入的产生方式,以及基于提取地址134的位[10:8]所呈的主密钥寄存器142组合。 
Figure BDA0000448025660000111
表格1 
Figure BDA0000448025660000112
Figure BDA0000448025660000121
表格2 
多工器B214的输出236是供应给加法/减法器218。多工器A212的输出234是供应给一旋转器(rotator)216。旋转器216接收提取地址134的位[7:4],据以旋转多工器输出234,决定旋转的字节数量。在一种实施方式中,提取地址134的位[7:4]在供应给旋转器216控制旋转的字节数量前增量,以上述表格3显示。旋转器216的输出238是供应给加法/减法器218。加法器/减法器218接收提取地址134的位[7]。若该位[7]为清空,加法/减法器218将旋转器216的输出238自多工器B214的输出236减去。若该位[7]为设定,加法/减法器218将旋转器216的输出238加上多工器B214的输出236。加法/减法器218的输出即图1所示的解密密钥174,将供应给多工器154。以下以图3的流程图详述相关技术。 
接着,参阅图3,一流程图基于本发明技术图解图2提取单元104的操作。流程始于方块302。 
在方块302,提取单元104以提取地址134读取指令高速缓冲存储器102,以开始提取一16字节的区块的指令数据106。指令数据106可为加密状态或为纯文字状态,视指令数据106是为一加密程序或一纯文字程序的一部分而定,由E位148标示。流程接着进入方块304。 
参考方块304,根据提取地址134较高的数个位,多工器A212以及多工器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为: 
k 0 n ± k 1 n + x
为第一主密钥234的字节n,且为第二主密钥的字节n+x。如上所述,密钥扩展器152所产生的前八套16字节解密密钥174是由减法方式产生,且后八套是由加法方式产生。具体来说,选定的主密钥对234/236各自所提供的字节内容用于为16个连续的16字节区块的指令数据各个字节产生解密密钥174字节,详情请见表格3。举例说明,表格3第1列的符号”15-00”表示第二主密钥236的字节0的内容会经8位算数运算(an eight-bit arithmetic operation)自第一主密钥234的字节15减去,以获得一字节的有效解密密钥174,用以与一16字节区块的指令数据106中的字节15进行异运算。 
Figure BDA0000448025660000144
Figure BDA0000448025660000151
表格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)是以同样密钥加密。以下列举根据一传统异加密运算加密得到的二密钥长度区块的数据: 
Figure BDA0000448025660000161
Figure 201310738005X1000021
其中,
Figure BDA0000448025660000162
为第一密钥长度区块的数据的字节n,将被加密;
Figure BDA0000448025660000163
为第二密钥长度区块的数据的字节n,将被加密;且kn为密钥的字节n。第三,黑客对所述两区块进行异运算,使其中密钥成分彼此相销,独留以下内容: 
Figure BDA0000448025660000164
最后,由于计算出的字节为单纯两个纯文字字节的函数,黑客可以统计分析纯文字内容的出现频率,以尝试求得纯文字字节的数值。 
然而,根据图2以及图3所揭示方式计算出的加密指令数据106字节的 图样如以下说明(4)与(5)所示: 
Figure BDA0000448025660000171
其中
Figure BDA0000448025660000173
标示所加密的第一16字节区块的指令数据的字节n,标示所加密的第二16字节区块的指令数据的字节n,
Figure BDA0000448025660000175
标示主密钥x的字节n,且
Figure BDA0000448025660000176
标示主密钥y的字节n。如前述,主密钥x与y为不同密钥。假定一种实施方式以五个主密钥寄存器142提供八种主密钥对234/236组合,2048字节序列中各字节是与两个独立的主密钥字节的一组合进行异运算。因此,当加密数据以任何方式于256字节的区块中移位并且彼此作异运算,所求得的字节都会存在两个主密钥的复杂成分,因此,不若说明(3)的内容,此处所得的运算结果不单纯只是纯文字字节。例如,假设黑客选择使同一256字节区块中的16字节区块对齐并彼此进行异操作使同样的密钥零字节在各段中被使用,字节0的运算结果如说明(6)所示,所获得的字节存在两个主密钥的复杂组合: 
其中n不为1。 
再者,若黑客换成将选自不同256字节区块内的16字节区块对齐、且彼此作异运算,运算结果的字节0如说明(7)所示: 
Figure BDA0000448025660000178
其中主密钥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权限/x86ring0)执行密钥下载指令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)允许程序设计者标示程序载入存储器何处,或至少载明特定大小的对齐形式(例如,页面边界page boundary),以提供足够的地址信息加密该程序。此外,一些操作系统预设值是将程序载入页面边界上。 
密钥切换指令600可安置于程序的任何地方。然而,若密钥切换指令600载入特定值至主密钥寄存器142供下一「块」指令数据字节解密使用、且密钥切换指令600(或甚至密钥载入指令500)的位置导致每一「块」的长度短于、或等于提取单元104所能应付的有效密钥长度(例如,图2实施方式所揭示的2048字节),则程序可被以有效长度等同整体程序长度的密钥加密,此为相当强健的加密方式。此外,即使密钥切换指令600的使用使得有效密钥长度仍短于加密程序的长度(即,同样一套主密钥寄存器142数值被用于加密一程序的多个「块」),改变「块」尺寸(例如,不限定全为2048字节)可增加黑客破解系统的困难度,因为,黑客必须先判断以同一套主密钥寄存器142数值加密的「块」位于何处,并且必须判断该些长度不一的「块」各自的尺寸。 
值得注意的是,以密钥切换指令600实现的动态密钥切换耗费相当大量的时钟数目,主要是因为管线必须清空。此外,在一种实施方式中,密钥切换指令600主要是以微代码(microcede)实现,通常较非微代码实现的指令慢。因此,程序码开发者须考虑密钥切换指令对效能的影响,在执行速度以及特定应用的安全性考量之间寻求平衡点。 
现在,参阅图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,后处理器接收一程序的一目的文件。根据一种实施方式, 该目的文件内的分支指令的目标地址可在程序执行前确定;例如,指向固定目标地址的分支指令。在程序运行前决定好目标地址的分支指令尚有另一形式,例如,一相对分支指令(relative branch 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,以供该提取单元1046解密该「块」时使用。以下讨论参考图18内容,表格1600是在需要查询该表格1600的分支与切换密钥指令1500被执行前载入微处理器100。在一种实施方式中,安全存储区122地址的较低数个位无须储存在安全存储区地址字段1604,特别是因为安全存储区122中储存一组密钥的位置的总量相当大(例如,16字节x5)、且该组密钥可沿着一设定尺寸范为对齐。 
现在,参阅图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 management mode,例如,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(如页面错误page fault)、或任务切换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。BTAC2702接收图1所揭示的提取地址134,且与指令高速缓冲存储器102的存取平行,皆是基于该提取地址134。根据提取地址134,BTAC2702供应分支目标地址2706给图1所揭示的提取地址产生器164,供应一采用/不采用指标(T/NT indicator)2708以及一型式指标(type indicator)2714给密钥切换逻辑2712,并且供应一密钥寄存器文档(KRF)索引2716给密钥寄存器文档124。 
现在,参阅图28,一方块图根据本发明技术更详细图解图27的BTAC2702。BTAC2702包括一BTAC矩阵2802,其中具有多个BTAC单元2808,图29图解BTAC单元2808的内容。BTAC2802储存的信息包括先前执行过的分支指令的历史信息,以预测接续执行的分支指令的方向以及目标地址。特别是,BTAC2802会采用储存的历史信息,基于提取的地址134预测先前执行过的分支指令后续发生的提取操作。分支目标地址高速缓冲的操作可参考常见的分支预测技术。然而,本发明所揭示的BTAC2802是更修正成记录先前执行过的分支与切换密钥指令900/1200的历史信息,以进行相关的预测操作。特别是,储存的历史记录使得BTAC2802得以在提取时间内预测所提取的分支与切换密钥指令900/1200将载入主密钥寄存器142的该组数值。此操作致能密钥切换逻辑2712在分支与切换密钥指令900/1200实际执行前将密钥数值载入,避免受限于需根据分支与切换密钥指令900/1200的执行清空微处理器100的管线内容,以下将详细讨论。此外,根据一种实施方式,BTAC2802更被修正成储存包括先前执行过的密钥切换指令600的历史信息,以达到相同的效果。 
现在,参阅图29,一方块图根据本发明技术更详细图解图28BTAC单元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记录,以下将详细讨论。根据一种实施方式,BTAC2802是在其密钥寄存器文档索引字段2912储存先前执行过的密钥切换指令600的密钥寄存器文档索引604记录。每个阵列单元2808还包括一型式字段2914,指示所记录的指令的型式。例如,型式字段2914可标示所记录的历史指令为一呼叫(call)、返回(return)、条件跳跃(conditional jump)、无条件跳跃(unconditional jump)、分支与切换密钥指令900/1200、或密钥切换指令600。 
现在,参阅图30,一流程图图解图27微处理器100的操作,其中,根据本发明技术,所述微处理器100包括图28揭示的BTAC2802。流程始于方块3002。 
在方块3002,微处理器100执行一分支与切换密钥指令900/1200,以下将以图32详述。流程接着进入方块3004。 
在方块3004,微处理器100在BTAC2802中配置一阵列单元2808给执行过的分支与切换密钥指令900/1200,将该分支与切换密钥指令900/1200解出的方向、目标地址、密钥寄存器文档索引904/1304、以及指令型式分别记录于所配置的该阵列单元2808的采用/不采用字段2908、目标地址字段2906、密钥寄存器文档索引字段2912、以及型式字段2914中,以作为该分支与切换密钥指令900/1200的历史信息。流程结束于方块3004。 
现在,参阅图31,一流程图图解图27微处理器100的操作,其中,根据本发明技术,所述微处理器100包括图28揭示的BTAC2802。流程始于方块3102。 
在方块3102,提取地址134供应给指令高速缓冲存储器102以及BTCA2802。流程接着进入方块3104。 
在方块3104,提取地址134正中BTAC2802,且BTAC2802将对应的阵列单元2808的目标地址2906、采用/不采用2908、密钥寄存器文档索引2912以及型式2914字段的内容分别以目标地址2706、采用/不采用指标2708、密钥寄存器文档索引2716、以及型式指标2714输出。特别是,型式字段2914用于指示所储存指令为一分支与切换密钥指令900/1200。流程接着进入决策方块3106。 
在决策方块3106,密钥切换逻辑2712藉由检验采用/不采用输出2708判断分支与切换密钥指令900/1200被BTAC2802预测为会采用。若采用/不采用输出2708显示分支与切换密钥指令900/1200被预测为采用,流程接着进入方块3112;反之,流程接着进入方块3108。 
在方块3108,微处理器100随着分支与切换密钥指令900/1200顺着输送一指示,显示BTAC2802预测其不被采用。(此外,若采用/不采用输出2708显示该分支与切换密钥指令被预测为采用,微处理器100在方块3112随着该分支与切换密钥指令900/1200顺着输送一指示,显示BTAC2802预测其会被采用)。流程结束于3108 
在方块3112,提取地址产生器164以BTAC2802于方块3104所预测的目标地址2706更新提取地址134。流程接着进入方块3114。 
在方块3114,根据BTAC2802于方块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,微代码判断BTAC2802是否为该分支与切换密钥指令900/1200提供一预测。若有提供,流程接着进入决策方块3214;若无提供,流程接着进入图10的方块1008。 
在决策方块3214,微代码藉由将BTAC2802输送出的采用/不采用指标2708以及目标地址2706与方块1006所解出的方向以及目标地址判断BTAC2802所做的预测是否正确。若BTAC2802的预测正确,则流程结束;反之,则流程来到决策方块3216。 
在决策方块3216,微代码判断此不正确的BTAC2802预测有没有被采用。若已被采用,流程进入方块3222;若无,流程进入图10的方块1014。 
在方块3222,微代码修复主密钥寄存器142的内容,因为BTAC2802对分支与切换密钥指令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 predix),因此,编码时可小心应用,以更增加上述熵值。例如,指令0x40以及0x2627646567F2F340作的是完全一样的事情。因为其中仅有8个安全的x86字首,他们需被小心地安插在编码中,以避免过度频繁地出现。 
虽然已经列举多种实施例以密钥扩展器对主密钥寄存器数值中的一对数值进行旋转以及加/减运算,尚有其他实施方式可考虑使用,其中,密钥扩展器可对多于两个的主密钥寄存器数值进行运算,此外,所进行的运算可不同于旋转以及加/减运算。此外,图6揭示的密钥切换指令600以及图9揭示的分支与切换密钥指令900还可有其他实施方式,例如,将新的密钥数值由安全存储区122载入主密钥寄存器142而非由密钥寄存器文档124载入,并且,图15所介绍的分支与切换密钥指令1500的其他实施方式是以索引字段2104储存安全存储区122的地址。此外,虽然已列举多种实施例调整BTAC2702储存KRF索引结合分支与切换密钥指令900/1200使用,尚有其他实施方式是调整BTAC2702储存安全存储区地址,以结合分支与切换密钥指令1500使用。 
以上列举的本发明诸多实施方式仅是作为说明例使用,并非意图限制发 明范围。相关计算机技术领域的技术人员可在不偏离本发明范围的前提下作出形式以及细节的诸多变形。例如,可以软件方式实现所述如函数、制作、模组化、模拟、说明、和/或测试此篇所讨论的设备与方法的方式。实现方式包括一般程序语言(例如,C、C++)、硬件描述语言包括Verilog HDL、VHDL…等、或其他可用的程序工具。所述软件可载于任何已知的计算机可读媒体,例如,磁带、半导体、磁盘、或光盘(例如,CD-ROM、DVD-ROM等)、网路、有线传输、无线或其他通讯媒体。所述设备与方法的实施方式可包含于半导体知识产权核心,例如一微处理器核心(例如以HDL实现),并可转成硬件以集成电路实现。此外,所述的设备与方法可由软、硬件结合方式实现。因此,本发明范围不应限定于所述任何实施方式,应当是以本发明的权利要求以及其等效技术界定。特别是,本发明技术可以一般用途计算机所采用的微处理器实现。值得注意的是,本领域技术人员可能不偏离权利要求所定义的发明范围、以所揭示的概念以及特殊实施例为基础、设计或修正提出其他架构产生与本发明相同的效果。 

Claims (10)

1.一种解密密钥产生装置,所产生的解密密钥用于解密一区块的加密指令数据,该区块的加密指令数据是取自一微处理器的一指令高速缓存的一提取地址,该解密密钥产生装置包括:
一第一多工器,设置来基于该提取地址的一第一部份自多个密钥值中选出一第一密钥值;
一第二多工器,设置来基于该提取地址的该第一部份自该多个密钥值中选出一第二密钥值;
一旋转器,设置来基于该提取地址的一第二部分循环移位该第一密钥值;以及
一计算单元,设置来基于该提取地址的一第三部分选择将循环位移后的该第一密钥值加入该第二密钥值、或将该第二密钥值减去循环位移后的该第一密钥值,以产生该解密密钥,
其中,以该解密密钥自加密指令数据解密出的纯文字数据自该微处理器外部不可见。
2.一种解密密钥产生装置,所产生的解密密钥用于解密一区块的加密指令数据,该区块的加密指令数据是取自一微处理器的一指令高速缓存的一提取地址,该解密密钥产生装置包括:
一第一多工器,设置来基于该提取地址的一第一部份自多个密钥值中选出一第一密钥值;
一第二多工器,设置来基于该提取地址的该第一部份自该多个密钥值中选出一第二密钥值;
一旋转器,设置来基于该提取地址的一第二部分循环移位该第一密钥值;
一计算单元,设置来基于该提取地址的一第三部分选择将循环位移后的该第一密钥值加入该第二密钥值、或将该第二密钥值减去循环位移后的该第一密钥值,以产生该解密密钥;以及
一控制位,设置来储存一标示,反映该处理器处于一解密模式或一纯文字模式,
其中:
该解密密钥是生成来为该微处理器所用,该解密密钥是与提取出的该区块的加密指令数据做布林异或运算,以于该微处理器处于该解密模式时解密该区块的加密指令数据;且
该微处理器处于该纯文字模式时,提取出的该区块的加密指令数据是与二进制零值做布林异或运算。
3.一种解密密钥产生装置,所产生的解密密钥用于解密一区块的加密指令数据,该区块的加密指令数据是取自一微处理器的一指令高速缓存的一提取地址,该解密密钥产生装置包括:
一第一多工器,设置来基于该提取地址的一第一部份自多个密钥值中选出一第一密钥值;
一第二多工器,设置来基于该提取地址的该第一部份自该多个密钥值中选出一第二密钥值;
一旋转器,设置来基于该提取地址的一第二部分循环移位该第一密钥值;以及
一计算单元,设置来基于该提取地址的一第三部分选择将循环位移后的该第一密钥值加入该第二密钥值、或将该第二密钥值减去循环位移后的该第一密钥值,以产生该解密密钥,
其中,该第一密钥值以及该第二密钥值所选自的该多个密钥值是取决于一更新操作,该更新操作早于该第一多工器以及该第二多工器的选择操作。
4.如权利要求3所述的解密密钥产生装置,其中:
该更新操作的执行是响应命令该微处理器执行该更新操作的一指令的执行。
5.如权利要求4所述的解密密钥产生装置,其中:
该指令更命令该微处理器只有条件符合时有条件地分支至执行该更新操作。
6.如权利要求3所述的解密密钥产生装置,其中:
该更新操作的执行是响应该微处理器的一任务切换。
7.如权利要求3所述的解密密钥产生装置,其中:
该更新操作的执行是响应该微处理器执行的回复自一中断指令的一返回操作。
8.一种解密密钥产生方法,所产生的解密密钥用于解密一区块的加密指令数据,该区块的加密指令数据是取自一微处理器的一指令高速缓存的一提取地址,该解密密钥产生方法包括:
基于该提取地址的一第一部份,自多个密钥值中选出一第一密钥值;
基于该提取地址的该第一部份,自该多个密钥值中选出一第二密钥值;
基于该提取地址的一第二部分,循环移位该第一密钥值;以及
基于该提取地址的一第三部分,选择将循环位移后的该第一密钥值加入该第二密钥值、或将该第二密钥值减去循环位移后的该第一密钥值,以产生该解密密钥,
其中,该第一密钥值以及该第二密钥值所选自的该多个密钥值是取决于一更新操作,该更新操作早于选择该第一密钥值以及该第二密钥值的操作。
9.如权利要求8所述的解密密钥产生方法,其中:
该更新操作的执行是响应命令该微处理器执行该更新操作的一指令的执行。
10.如权利要求8所述的解密密钥产生方法,其中:
该更新操作的执行是响应该微处理器的一任务切换。
CN201310738005.XA 2010-05-25 2011-05-25 解密密钥产生装置与方法 Active CN103713883B (zh)

Applications Claiming Priority (15)

Application Number Priority Date Filing Date Title
US34812710P 2010-05-25 2010-05-25
US61/348,127 2010-05-25
US13/091,547 2011-04-21
US13/091,698 2011-04-21
US13/091,785 US8719589B2 (en) 2010-05-25 2011-04-21 Microprocessor that facilitates task switching between multiple encrypted programs having different associated decryption key values
US13/091,828 US8645714B2 (en) 2010-05-25 2011-04-21 Branch target address cache for predicting instruction decryption keys in a microprocessor that fetches and decrypts encrypted instructions
US13/091,487 2011-04-21
US13/091,547 US8700919B2 (en) 2010-05-25 2011-04-21 Switch key instruction in a microprocessor that fetches and decrypts encrypted instructions
US13/091,785 2011-04-21
US13/091,698 US8683225B2 (en) 2010-05-25 2011-04-21 Microprocessor that facilitates task switching between encrypted and unencrypted programs
US13/091,641 US8639945B2 (en) 2010-05-25 2011-04-21 Branch and switch key instruction in a microprocessor that fetches and decrypts encrypted instructions
US13/091,641 2011-04-21
US13/091,828 2011-04-21
US13/091,487 US8671285B2 (en) 2010-05-25 2011-04-21 Microprocessor that fetches and decrypts encrypted instructions in same time as plain text instructions
CN201110136447.8A CN102221989B (zh) 2010-05-25 2011-05-25 微处理器以及相关的操作方法、以及加密、解密方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201110136447.8A Division CN102221989B (zh) 2010-05-25 2011-05-25 微处理器以及相关的操作方法、以及加密、解密方法

Publications (2)

Publication Number Publication Date
CN103713883A true CN103713883A (zh) 2014-04-09
CN103713883B CN103713883B (zh) 2016-08-17

Family

ID=45023130

Family Applications (7)

Application Number Title Priority Date Filing Date
CN201310674396.3A Active CN103699832B (zh) 2010-05-25 2011-05-25 微处理器以及相关的操作方法
CN201310680125.9A Active CN103645885B (zh) 2010-05-25 2011-05-25 微处理器以及相关的操作方法
CN201310687857.0A Active CN103839001B (zh) 2010-05-25 2011-05-25 微处理器以及相关的操作方法
CN201310680122.5A Active CN103699833B (zh) 2010-05-25 2011-05-25 微处理器以及相关的操作方法
CN201610227267.3A Active CN105912305B (zh) 2010-05-25 2011-05-25 微处理器以及相关的操作方法、以及加密方法
CN201310681951.5A Active CN103761070B (zh) 2010-05-25 2011-05-25 微处理器以及相关的操作方法、以及加密方法
CN201310738005.XA Active CN103713883B (zh) 2010-05-25 2011-05-25 解密密钥产生装置与方法

Family Applications Before (6)

Application Number Title Priority Date Filing Date
CN201310674396.3A Active CN103699832B (zh) 2010-05-25 2011-05-25 微处理器以及相关的操作方法
CN201310680125.9A Active CN103645885B (zh) 2010-05-25 2011-05-25 微处理器以及相关的操作方法
CN201310687857.0A Active CN103839001B (zh) 2010-05-25 2011-05-25 微处理器以及相关的操作方法
CN201310680122.5A Active CN103699833B (zh) 2010-05-25 2011-05-25 微处理器以及相关的操作方法
CN201610227267.3A Active CN105912305B (zh) 2010-05-25 2011-05-25 微处理器以及相关的操作方法、以及加密方法
CN201310681951.5A Active CN103761070B (zh) 2010-05-25 2011-05-25 微处理器以及相关的操作方法、以及加密方法

Country Status (3)

Country Link
US (10) US8639945B2 (zh)
CN (7) CN103699832B (zh)
TW (7) TWI564797B (zh)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9892283B2 (en) 2010-05-25 2018-02-13 Via Technologies, Inc. Decryption of encrypted instructions using keys selected on basis of instruction fetch address
US9911008B2 (en) 2010-05-25 2018-03-06 Via Technologies, Inc. Microprocessor with on-the-fly switching of decryption keys
US9798898B2 (en) 2010-05-25 2017-10-24 Via Technologies, Inc. Microprocessor with secure execution mode and store key instructions
US8639945B2 (en) 2010-05-25 2014-01-28 Via Technologies, Inc. Branch and switch key instruction in a microprocessor that fetches and decrypts encrypted instructions
US9967092B2 (en) 2010-05-25 2018-05-08 Via Technologies, Inc. Key expansion logic using decryption key primitives
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US10503662B2 (en) * 2012-06-29 2019-12-10 Intel Corporation Systems, apparatuses, and methods for implementing temporary escalated privilege
US9652245B2 (en) 2012-07-16 2017-05-16 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Branch prediction for indirect jumps by hashing current and previous branch instruction addresses
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9298947B2 (en) 2013-02-07 2016-03-29 Qualcomm Incorporated Method for protecting the integrity of a fixed-length data structure
US9846656B2 (en) 2013-04-17 2017-12-19 Laurence H. Cooke Secure computing
US9280490B2 (en) * 2013-04-17 2016-03-08 Laurence H. Cooke Secure computing
WO2014210277A1 (en) * 2013-06-28 2014-12-31 The Trustees Of Columbia University In The City Of New York Diversified instruction set processing to enhance security
US9251098B2 (en) * 2013-07-29 2016-02-02 Infineon Technologies Austria Ag Apparatus and method for accessing an encrypted memory portion
US9311493B2 (en) * 2013-07-30 2016-04-12 Battelle Memorial Institute System for processing an encrypted instruction stream in hardware
US9213807B2 (en) * 2013-09-04 2015-12-15 Raytheon Cyber Products, Llc Detection of code injection attacks
JP6265783B2 (ja) * 2014-03-06 2018-01-24 キヤノン株式会社 暗号化/復号化システム及びその制御方法、並びにプログラム
JP6368531B2 (ja) * 2014-04-28 2018-08-01 達広 白井 暗号処理装置、暗号処理システム、および暗号処理方法
TWI558152B (zh) * 2014-07-18 2016-11-11 Hao-Xi Zhuang Key replacement method and computer program products
US10922402B2 (en) * 2014-09-29 2021-02-16 Vmware, Inc. Securing secret data embedded in code against compromised interrupt and exception handlers
US20160179538A1 (en) * 2014-12-19 2016-06-23 Intel Corporation Method and apparatus for implementing and maintaining a stack of predicate values with stack synchronization instructions in an out of order hardware software co-designed processor
DE102015201430A1 (de) * 2015-01-28 2016-07-28 Ihp Gmbh - Innovations For High Performance Microelectronics / Leibniz-Institut Für Innovative Mikroelektronik Intrinsische Authentifizierung von Programcode
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US9720693B2 (en) * 2015-06-26 2017-08-01 Microsoft Technology Licensing, Llc Bulk allocation of instruction blocks to a processor instruction window
US9667606B2 (en) 2015-07-01 2017-05-30 Cyphermatrix, Inc. Systems, methods and computer readable medium to implement secured computational infrastructure for cloud and data center environments
EP3119031A1 (en) * 2015-07-16 2017-01-18 ABB Schweiz AG Encryption scheme using multiple parties
US9767318B1 (en) * 2015-08-28 2017-09-19 Frank Dropps Secure controller systems and associated methods thereof
US9864879B2 (en) 2015-10-06 2018-01-09 Micron Technology, Inc. Secure subsystem
US10768935B2 (en) * 2015-10-29 2020-09-08 Intel Corporation Boosting local memory performance in processor graphics
EP3387530B1 (en) 2015-12-07 2023-08-30 Laurence H. Cooke Secure computing
US10049057B2 (en) * 2015-12-18 2018-08-14 Intel Corporation Instruction and logic for secure instruction execution pipeline
US10958414B2 (en) * 2016-02-23 2021-03-23 Google Llc Clock period randomization for defense against cryptographic attacks
US10210323B2 (en) * 2016-05-06 2019-02-19 The Boeing Company Information assurance system for secure program execution
GB2564878B (en) * 2017-07-25 2020-02-26 Advanced Risc Mach Ltd Parallel processing of fetch blocks of data
US10534725B2 (en) 2017-07-25 2020-01-14 International Business Machines Corporation Computer system software/firmware and a processor unit with a security module
FR3069935A1 (fr) * 2017-08-01 2019-02-08 Maxim Integrated Products, Inc. Dispositifs et procedes de protection de propriete intellectuelle de logiciel pour des plates-formes integrees
EP3460709B1 (en) * 2017-09-26 2022-02-09 Secure-IC SAS Devices and methods for secured processors
US10721072B2 (en) * 2017-09-29 2020-07-21 Xilinx, Inc. Network interface device and method
CN107967414B (zh) * 2017-11-03 2023-07-28 深圳市航顺芯片技术研发有限公司 微控制芯片指令加密方法、解密方法及加/解密系统
US10819736B2 (en) * 2017-11-29 2020-10-27 Arm Limited Encoding of input to branch prediction circuitry
US11321095B2 (en) * 2018-12-14 2022-05-03 Apple Inc. Indirect branch predictor security protection
CN110347432B (zh) * 2019-06-17 2021-09-14 海光信息技术股份有限公司 处理器、分支预测器及其数据处理方法、分支预测方法
US11580234B2 (en) 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US11250165B2 (en) 2019-12-20 2022-02-15 Intel Corporation Binding of cryptographic operations to context or speculative execution restrictions
US20200145187A1 (en) * 2019-12-20 2020-05-07 Intel Corporation Bit-length parameterizable cipher
US11403234B2 (en) 2019-06-29 2022-08-02 Intel Corporation Cryptographic computing using encrypted base addresses and used in multi-tenant environments
US11556656B2 (en) 2019-09-25 2023-01-17 Micron Technology, Inc. Exclusive or engine on random access memory
US11233631B2 (en) * 2019-10-09 2022-01-25 Google Llc Key management for encrypted data
US11436342B2 (en) 2019-12-26 2022-09-06 Intel Corporation TDX islands with self-contained scope enabling TDX KeyID scaling
JP7249968B2 (ja) * 2020-03-09 2023-03-31 株式会社東芝 情報処理装置およびストレージ
US20230269076A1 (en) * 2020-09-01 2023-08-24 Intel Corporation Creating, using, and managing protected cryptography keys
US11461103B2 (en) * 2020-10-23 2022-10-04 Centaur Technology, Inc. Dual branch execute and table update with single port
US11263153B1 (en) * 2020-11-02 2022-03-01 Silicon Motion, Inc. Data accessing method using data protection with aid of advanced encryption standard processing circuit, and associated apparatus
US11580035B2 (en) 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing
US11409846B2 (en) * 2021-01-14 2022-08-09 Safelishare, Inc. User controlled trusted and isolated computing environments
CN113127901B (zh) * 2021-04-21 2023-05-16 中国人民解放军战略支援部队信息工程大学 一种数据加密传输的处理方法、装置及芯片
TWI777598B (zh) * 2021-06-04 2022-09-11 逢甲大學 程式保護系統
CN114090079B (zh) * 2021-11-16 2023-04-21 海光信息技术股份有限公司 串操作方法、串操作装置以及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1737879A (zh) * 2004-08-20 2006-02-22 松下电器产业株式会社 加密指令处理设备
US20060136715A1 (en) * 2004-12-22 2006-06-22 Kyeong Soo Han MAC security entity for link security entity and transmitting and receiving method therefor
US20080019504A1 (en) * 2006-06-20 2008-01-24 Wei Han Key Generation For Advanced Encryption Standard (AES) Decryption And The Like

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4737975A (en) 1984-09-18 1988-04-12 Metrofone, Inc. Programmable system for interfacing a standard telephone set with a radio transceiver
JPH0820950B2 (ja) 1990-10-09 1996-03-04 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチ予測型分岐予測機構
JP2801135B2 (ja) * 1993-11-26 1998-09-21 富士通株式会社 パイプラインプロセッサの命令読み出し方法及び命令読み出し装置
WO1997015001A2 (en) 1995-10-06 1997-04-24 Patriot Scientific Corporation Risc microprocessor architecture
US5926642A (en) 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US6093213A (en) 1995-10-06 2000-07-25 Advanced Micro Devices, Inc. Flexible implementation of a system management mode (SMM) in a processor
US5864697A (en) 1996-06-28 1999-01-26 Texas Instruments Incorporated Microprocessor using combined actual and speculative branch history prediction
US6118870A (en) 1996-10-09 2000-09-12 Lsi Logic Corp. Microprocessor having instruction set extensions for decryption and multimedia applications
US6707463B1 (en) * 1997-04-30 2004-03-16 Canon Kabushiki Kaisha Data normalization technique
US6061749A (en) 1997-04-30 2000-05-09 Canon Kabushiki Kaisha Transformation of a first dataword received from a FIFO into an input register and subsequent dataword from the FIFO into a normalized output dataword
US6704871B1 (en) 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
DE69834654T2 (de) 1997-09-25 2007-01-25 John Wolfgang Halpern Datenverschlüsselungssystem für internet-kommunikation
JP3606435B2 (ja) 1999-09-29 2005-01-05 富士通株式会社 モードを変更する分岐命令を制御する命令処理装置および方法
US6983374B2 (en) * 2000-02-14 2006-01-03 Kabushiki Kaisha Toshiba Tamper resistant microprocessor
GB2366643B (en) * 2000-05-25 2002-05-01 Siroyan Ltd Methods of compressing instructions for processors
US7117372B1 (en) * 2000-11-28 2006-10-03 Xilinx, Inc. Programmable logic device with decryption and structure for preventing design relocation
JP4098478B2 (ja) 2001-01-31 2008-06-11 株式会社東芝 マイクロプロセッサ
US7039814B2 (en) 2001-03-07 2006-05-02 Sony Corporation Method for securing software via late stage processor instruction decryption
US6996725B2 (en) 2001-08-16 2006-02-07 Dallas Semiconductor Corporation Encryption-based security protection for processors
US7853778B2 (en) * 2001-12-20 2010-12-14 Intel Corporation Load/move and duplicate instructions for a processor
US20030149869A1 (en) 2002-02-01 2003-08-07 Paul Gleichauf Method and system for securely storing and trasmitting data by applying a one-time pad
US7260217B1 (en) 2002-03-01 2007-08-21 Cavium Networks, Inc. Speculative execution for data ciphering operations
US8135962B2 (en) 2002-03-27 2012-03-13 Globalfoundries Inc. System and method providing region-granular, hardware-controlled memory encryption
US7130951B1 (en) * 2002-04-18 2006-10-31 Advanced Micro Devices, Inc. Method for selectively disabling interrupts on a secure execution mode-capable processor
JP2004265194A (ja) * 2003-03-03 2004-09-24 Matsushita Electric Ind Co Ltd 情報処理装置、および情報処理方法
US7321910B2 (en) 2003-04-18 2008-01-22 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
US7900055B2 (en) 2003-04-18 2011-03-01 Via Technologies, Inc. Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms
US7532722B2 (en) 2003-04-18 2009-05-12 Ip-First, Llc Apparatus and method for performing transparent block cipher cryptographic functions
US7529368B2 (en) 2003-04-18 2009-05-05 Via Technologies, Inc. Apparatus and method for performing transparent output feedback mode cryptographic functions
US7844053B2 (en) * 2003-04-18 2010-11-30 Ip-First, Llc Microprocessor apparatus and method for performing block cipher cryptographic functions
EP1508853A1 (en) * 2003-08-19 2005-02-23 STMicroelectronics Limited Computer system and method for loading non-aligned words
JP4263976B2 (ja) 2003-09-24 2009-05-13 株式会社東芝 オンチップマルチコア型耐タンパプロセッサ
US7694151B1 (en) 2003-11-20 2010-04-06 Johnson Richard C Architecture, system, and method for operating on encrypted and/or hidden information
JP4009248B2 (ja) 2003-12-05 2007-11-14 富士通株式会社 分岐予測装置および分岐予測方法
TWI268686B (en) * 2004-04-16 2006-12-11 Via Tech Inc Apparatus and method for performing transparent cipher block chaining mode cryptographic functions
JP4282546B2 (ja) * 2004-05-19 2009-06-24 株式会社東芝 暗号装置、復号装置、鍵生成装置、プログラム及び方法
JP4447977B2 (ja) * 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
WO2006018822A1 (en) * 2004-08-20 2006-02-23 Koninklijke Philips Electronics, N.V. Combined load and computation execution unit
JP2006085676A (ja) 2004-08-20 2006-03-30 Matsushita Electric Ind Co Ltd 暗号化命令処理装置
TW200617703A (en) * 2004-11-30 2006-06-01 Tokyo Electron Ltd Dynamically reconfigurable processor
US7447882B2 (en) 2005-04-20 2008-11-04 Arm Limited Context switching within a data processing system having a branch prediction mechanism
JP4795812B2 (ja) 2006-02-22 2011-10-19 富士通セミコンダクター株式会社 セキュアプロセッサ
US20080148061A1 (en) 2006-12-19 2008-06-19 Hongxia Jin Method for effective tamper resistance
US8233607B1 (en) * 2007-07-30 2012-07-31 At&T Mobility Ii Llc Easy call abandon
US20090217017A1 (en) 2008-02-26 2009-08-27 International Business Machines Corporation Method, system and computer program product for minimizing branch prediction latency
US8838924B2 (en) * 2008-05-24 2014-09-16 Via Technologies, Inc. Microprocessor having internal secure memory
US8555015B2 (en) * 2008-10-23 2013-10-08 Maxim Integrated Products, Inc. Multi-layer content protecting microcontroller
US9336160B2 (en) * 2008-10-30 2016-05-10 Qualcomm Incorporated Low latency block cipher
US8572356B2 (en) 2010-01-05 2013-10-29 Oracle America, Inc. Space-efficient mechanism to support additional scouting in a processor using checkpoints
US8495607B2 (en) 2010-03-01 2013-07-23 International Business Machines Corporation Performing aggressive code optimization with an ability to rollback changes made by the aggressive optimizations
US8639945B2 (en) 2010-05-25 2014-01-28 Via Technologies, Inc. Branch and switch key instruction in a microprocessor that fetches and decrypts encrypted instructions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1737879A (zh) * 2004-08-20 2006-02-22 松下电器产业株式会社 加密指令处理设备
US20060136715A1 (en) * 2004-12-22 2006-06-22 Kyeong Soo Han MAC security entity for link security entity and transmitting and receiving method therefor
US20080019504A1 (en) * 2006-06-20 2008-01-24 Wei Han Key Generation For Advanced Encryption Standard (AES) Decryption And The Like

Also Published As

Publication number Publication date
TW201426539A (zh) 2014-07-01
US9461818B2 (en) 2016-10-04
US8645714B2 (en) 2014-02-04
CN103839001A (zh) 2014-06-04
US20140195823A1 (en) 2014-07-10
US8719589B2 (en) 2014-05-06
TWI564797B (zh) 2017-01-01
US8880902B2 (en) 2014-11-04
CN103839001B (zh) 2018-11-02
TW201419142A (zh) 2014-05-16
CN103645885A (zh) 2014-03-19
TWI506545B (zh) 2015-11-01
TW201426541A (zh) 2014-07-01
US20140195821A1 (en) 2014-07-10
CN103713883B (zh) 2016-08-17
CN103761070A (zh) 2014-04-30
TWI531968B (zh) 2016-05-01
US20110296203A1 (en) 2011-12-01
TWI511044B (zh) 2015-12-01
CN103761070B (zh) 2017-03-01
US20140195820A1 (en) 2014-07-10
US8671285B2 (en) 2014-03-11
CN103645885B (zh) 2016-08-17
TW201426540A (zh) 2014-07-01
CN103699832B (zh) 2017-03-01
TWI502497B (zh) 2015-10-01
TW201426538A (zh) 2014-07-01
US8700919B2 (en) 2014-04-15
US8683225B2 (en) 2014-03-25
TWI514271B (zh) 2015-12-21
TW201616343A (zh) 2016-05-01
US8850229B2 (en) 2014-09-30
US20110296202A1 (en) 2011-12-01
CN105912305B (zh) 2018-11-16
US20110296205A1 (en) 2011-12-01
TW201426537A (zh) 2014-07-01
US8639945B2 (en) 2014-01-28
CN103699833B (zh) 2017-01-04
CN105912305A (zh) 2016-08-31
CN103699832A (zh) 2014-04-02
CN103699833A (zh) 2014-04-02
US8886960B2 (en) 2014-11-11
US20140195822A1 (en) 2014-07-10
US20110296206A1 (en) 2011-12-01
US20120096282A1 (en) 2012-04-19
TWI522911B (zh) 2016-02-21
US20110296204A1 (en) 2011-12-01

Similar Documents

Publication Publication Date Title
CN103699832B (zh) 微处理器以及相关的操作方法
CN105843776B (zh) 微处理器与其中安全执行指令的方法
US9911008B2 (en) Microprocessor with on-the-fly switching of decryption keys
US9798898B2 (en) Microprocessor with secure execution mode and store key instructions
CN102221989B (zh) 微处理器以及相关的操作方法、以及加密、解密方法
TWI437489B (zh) 微處理器以及相關的操作方法、以及加密、解密方法
EP3387530B1 (en) Secure computing

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