CN107015926B - 微处理器以及相关的操作方法 - Google Patents

微处理器以及相关的操作方法 Download PDF

Info

Publication number
CN107015926B
CN107015926B CN201710066089.5A CN201710066089A CN107015926B CN 107015926 B CN107015926 B CN 107015926B CN 201710066089 A CN201710066089 A CN 201710066089A CN 107015926 B CN107015926 B CN 107015926B
Authority
CN
China
Prior art keywords
key
microprocessor
block
instruction
instruction data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710066089.5A
Other languages
English (en)
Other versions
CN107015926A (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
Priority claimed from US13/091,828 external-priority patent/US8645714B2/en
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN107015926A publication Critical patent/CN107015926A/zh
Application granted granted Critical
Publication of CN107015926B publication Critical patent/CN107015926B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/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
    • 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/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日、申请号为201310687857.0的发明名称为“微处理器以及相关的操作方法”的申请案(其中该申请案的原申请的申请日和申请号分别为2011年5月25日和201110136447.8)的分案申请。
技术领域
本发明涉及微处理器(microprocessor)领域,特别是涉及用于增加微处理器所执行的程序的安全性。
背景技术
很多软件程序在面临破坏计算机系统安全的攻击时,通常是脆弱不堪的。例如,黑客可藉由攻击一运行中程序的缓冲溢位区漏洞(buffer overflow vulnerability)植入不当程序码、并转移主控权给该不当程序码。如此一来,所植入的程序码将主导被攻击的程序。一种防范软件程序遭攻击的方案为指令集随机化(instruction set randomization)。概略解释之,指令集随机化技术会先将程序加密(encrypt)为某些形式,再于处理器将该程序自存储器提取后,于该处理器内解密(decrypt)该程序。如此一来,黑客便不易植入恶意指令,因为所植入的指令必须被适当地加密(例如,使用与所攻击程序相同的加密密钥或演算法)方会被正确地执行。例如,参阅文件「Counter Code-Injection Attacks withInstruction-Set Randomization,by Gaurav S.Kc,Angelos D.Keromytis,and VassilisPrevelakis,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 SetRandomization,by Ana Nora Sovarel,David Evans,and Nathanael Paul,http:// www.cs.virginia.edu/feeb」。
发明内容
本发明一种实施方式揭示一微处理器。该微处理器用以操作以解密加密指令数据为纯文字指令数据并安全地予以执行,避免加密指令数据在该微处理器外部被看见。该微处理器可以包含:主密钥寄存器,包含多个主密钥;选择逻辑电路,从多个主密钥中选取至少两个主密钥之组合;密钥扩展电路,对所选取的主密钥执行至少一数学运算以产生该解密密钥;以及指令译码电路,对该加密指令数据与该解密密钥执行一数学运算以对该加密指令数据进行解密而产生该纯文字指令数据。
本发明另外一种实施方式揭示一种在微处理器中,安全地执行加密指令数据的方法。该方法包含:在储存于微处理器中的主密钥寄存器文档中,选取多个该主密钥至少两者的一新组合;在该微处理器中,在选取的该主密钥执行至少一数学运算以产生该解密密钥;在该微处理器中,对该加密指令数据进行解密成为纯文字指令数据;以及于避免加密指令数据在该微处理器外部被看到的情形下,在该微处理器中安全地执行该纯文字指令数据。
本发明另外一种实施方式揭示一种在微处理器中,安全地执行加密指令数据的方法。该方法包含:在微处理器中提取加密指令区块,其中每个该区块包含多个提区数量;对每个提取区块,接收多个密钥,该密钥的长度等于提取单元所提取区块的长度;对每个提取数量,对所选取密钥执行至少一密钥扩展数学运算以产生一解密密钥,其中该密钥扩展数学运算使得一解密密钥的长度至少为区块的长度;在该微处理器中,利用该解密密钥对该加密指令区块进行解密以产生纯文字指令数据,且在该微处理器中安全地执行该纯文字指令数据,避免加密指令数据在该微处理器外部被看见。
本发明一种实施方式揭示一微处理器。该微处理器包括一指令高速缓冲存储器、一指令解码单元、以及一提取单元。该提取单元用于:(a)自该指令高速缓冲存储器提取一区块的指令数据;(b)以一数据实体对该区块执行一布林异运算,以产生纯文字指令数据;以及(c)将上述纯文字指令数据提供给该指令解码单元。在一第一状况下,该区块包括加密指令数据、且该数据实体为解密密钥。在一第二状况下,该区块包括非加密指令数据、且该数据实体为多个位的二进位零值。无论该区块的指令数据为加密或非加密,实行上述内容(a)、(b)以及(c)所需要的时间在该第一状况下以及该第二状况下是相同的。
本发明另外一种实施方式揭示一方法,用以操作具有一指令高速缓冲存储器的一微处理器。该方法包括:(a)自该指令高速缓冲存储器提取一区块的指令数据;(b)以一数据实体对该区块进行一布林异运算,以产生纯文字指令数据;以及(c)供应上述纯文字指令数据给一指令解码单元。在一第一状况下,该区块包括加密指令数据、且该数据实体为解密密钥。在一第二状况下,该区块包括非加密指令数据、且该数据实体为多个位的二进位零值。无论该区块的指令数据为加密或非加密,实行上述内容(a)、(b)以及(c)所需要的时间在该第一状况下以及该第二状况下是相同的。
本发明一种实施方式提供一微处理器。该微处理器包括一指令高速缓冲存储器以及一提取单元。该提取单元会自该指令高速缓冲存储器一序列多个提取地址提取一加密程序一序列多个区块的加密指令。在提取该序列各个区块时,提取单元更以多个密钥数值以及所提取该区块的提取地址的部份内容为一函数,生成解密密钥。针对提取出的该序列各个区块,提取单元还采用对应的解密密钥解密其中加密指令。该微处理器还包括一密钥切换指令,在该提取单元自该指令高速缓冲存储器提取该序列上述多个区块时,指示该微处理器更新该提取单元内的这些密钥数值。
本发明另外一种实施方式揭示一种方法,操作具有一指令高速缓冲存储器的一微处理器。该方法包括自该指令高速缓冲存储器提取一程序多个第一加密指令,且将之以一第一解密密钥解密为多个第一非加密指令。该方法还包括将该第一解密密钥以一第二解密密钥取代,回应这些第一非加密指令中的一密钥切换指令。该方法还包括自该指令高速缓冲存储器提取该程序的多个第二加密指令,且将之以该第二解密密钥解密为多个第二非加密指令。
本发明另外一种实施方式揭示一种方法,用于操作一微处理器。该方法包括自一指令高速缓冲存储器一序列多个提取地址提取一加密程序一序列多个区块的加密指令。该方法还包括在提取该序列各个区块时,以多个密钥数值以及所提取该区块的提取地址的部份内容为一函数生成解密密钥。该方法还包括针对该序列内各区块,使用对应的上述解密密钥解密其中的加密指令。该方法还包括在提取该序列上述多个区块时,执行一密钥切换指令。执行上述密钥切换指令包括更新用于生成上述解密密钥的这些密钥数值。
本发明一种实施方式揭示一种微处理器。该微处理器包括一提取单元,使用第一解密密钥数据提取并且解密一分支与切换密钥指令。该微处理器还包括微代码。上述微代码在该分支与切换密钥指令的方向不被采用的状况下,令该提取单元采用上述第一解密密钥数据提取并且解密该分支与切换密钥指令之后的接续指令。该微代码还在该分支与切换密钥指令被采用的状况下,令该提取单元采用不同于上述第一解密密钥数据的第二解密密钥数据提取并且解密该分支与切换密钥指令的一目标指令。
本发明另外一种实施方式揭示一方法,以一微处理器处理一加密程序。该方法包括使用第一解密密钥数据提取并且解密一分支与切换密钥指令。此方法还包括,在该分支与切换密钥指令的方向不被采取的状况下,以上述第一解密密钥数据提取并且解密该分支与切换密钥指令之后的接续指令。该方法还包括,在该分支与切换密钥指令的方向被采取的状况下,以不同于上述第一解密密钥数据的第二解密密钥数据提取并且解密该分支与切换密钥指令的一目标指令。
本发明另外一种实施方式亦揭示一方法,用于加密一程序,以供用于解密与执行加密程序的一微处理器日后执行。该方法包括接收一非加密程序的一目的文件,其中包括传统分支指令,所指示的目标地址可于该微处理器执行该程序前判定。该方法还包括分析该程序以获得块信息。上述块信息将该程序划分成一序列多个块。各块包括一序列多个指令。上述块信息还包括各块相关的加密密钥数据。各块对应的加密密钥数据不相同。该方法还包括将上述传统分支指令中目标地址与自身坐落不同块者各自以一分支与切换密钥指令取代。该方法还包括基于上述块信息加密该程序。
本本发明另外一种实施方式亦揭示一方法,用于加密一程序,以供用于解密与执行加密程序的一微处理器日后执行。该方法包括接收一非加密程序的一目的文件,其中包括传统分支指令,所指示的目标地址仅能在该微处理器执行该程序时判定。该方法还包括分析该程序以获得块信息。上述块信息将该程序划分成一序列多个块。各块包括一序列多个指令。上述块信息还包括各块相关的加密密钥数据。各块对应的加密密钥数据不相同。该方法还包括将上述传统分支指令各自以一分支与切换密钥指令取代。该方法还包括基于上述块信息,加密该程序。
本发明一种实施方式揭示一微处理器。该微处理器包括一架构寄存器,该架构寄存器包括一位。该微处理器负责设定该位。该微处理器还包括一提取单元。该提取单元自一指令高速缓冲存储器提取加密指令、并在执行上述加密指令前将上述加密指令解密,以回应该微处理器将该位设定的操作。若接收到一中断,该微处理器储存该位的数值至一堆迭内存、并且随后将该位清除。在微处理器清除该位后,该提取指令是自该指令高速缓冲存储器提取非加密指令,并不对上述非加密指令作解密操作即执行之。该微处理器还自该堆迭内存将先前储存的数值用来修复该架构寄存器的该位,以回应自中断指令返回的操作。若判定该位修复后的数值为设定状态,该提取单元重新提取并且解密加密指令。
本发明另外一种实施方式揭示一种方法,用于操作具有一指令高速缓冲存储器以及一架构寄存器的一微处理器。该方法包括设定该架构寄存器内的一位,并且随后自该指令高速缓冲存储器提取加密指令,并且在执行上述加密指令前将上述加密指令解密。在面对一中断时,该方法还包括储存该架构寄存器该位的数值,并且随后清除该位。在清除该位后,该方法还包括自该指令高速缓冲存储器提取非加密指令,并且不作解密即执行上述非加密指令。该方法还包括以先前储存的数值修复该架构寄存器该位,以回应自中断指令返回的操作。若判定该位修复后的数值为设定状态,该方法还包括重新提取并且解密并且执行加密指令。
本发明另外一种实施方式揭示一微处理器。该微处理器包括一架构寄存器以及一提取单元,该架构寄存器包括一位。该微处理器储存该位的数值,以回应中断执行中程序的一要求。该位标示执行中程序为加密或非加密。该微处理器以先前储存的数值修复该位,并且重新提取被中断的程序作为执行中程序,以回应自中断指令返回的操作。若该位修复后的数值为设定状态,该微处理器在重新提取中断的程序之前,先将解密密钥数值修复,以使用修复的解密密钥数值解密所提取的指令。若该位修复后的数值为清除状态,该微处理器不作解密密钥数值修复、并且不对所提取的指令作解密。
本发明另外一种实施方式揭示一种方法,用以操作一微处理器。该方法包括储存该微处理器一位的数值,以回应中断执行中程序的一要求。该位标示执行中程序为加密或非加密。回应自中断指令返回的操作,该方法还包括以先前储存的数值修复该位,并且重新提取中断的程序作为执行中程序。若该位修复后的数值为设定状态,该方法还包括在重新提取中断程序之前,将解密密钥数值修复,并且以修复后的解密密钥数值解密所提取的指令。若该位修复后的数值为清除状态,该方法不会作解密密钥修复操作,也不对提取的指令作解密。
本发明一种实施方式揭示一种微处理器。该微处理器包括一储存元件,具有多个位置各自储存一个加密程序的解密密钥数据。该微处理器还包括一控制寄存器,以一字段标示该储存元件上述多个位置中与执行中的加密程序相关者。回应自中断指令返回的操作,该微处理器自存储器将先前储存的该字段的数值用来修复该控制寄存器。该微处理器还包括一提取单元,用以提取执行中的加密程序的加密指令、并且将之以该字段修复后的数值在该储存元件所标示的位置所储存的解密密钥数据解密。
本发明另外一种实施方式揭示一方法,用以操作具有一控制寄存器以及一储存元件的一微处理器,该储存元件内多个位置各自储存一个加密程序的解密密钥数据。该方法包括自存储器将先前储存的该字段的数值用来修复该控制寄存器内一字段,以回应自中断指令返回的操作,其中,该字段的数值标示该储存元件上述多个位置中与执行中加密程序有关。该方法还包括提取执行中的加密程序的加密指令。该方法还包括以该字段修复后的数值在该储存元件所标示的位置所储存的解密密钥数据解密所提取的加密指令。
本发明一种实施方式揭示一种微处理器。该微处理器包括一分支目标地址高速缓冲存储器(BTAC)记录先前执行过的分支与切换密钥指令的历史信息。上述历史信息包括所记录的分支与切换密钥指令的目标地址以及标识符。上述标识符标示与所属的分支与切换密钥指令相关的多个密钥数值。该微处理器还包括一提取单元,耦接该分支目标地址高速缓冲存储器。该提取单元提取先前执行过的分支与切换密钥指令时,会接收该分支目标地址高速缓冲存储器所作的预测、并且自该分支目标地址高速缓冲存储器接收关于所提取的分支与切换密钥指令的上述目标地址以及标识符。该提取单元还根据所接收的目标地址提取加密指令数据、并且根据所接收的标识符所标示的多个密钥数值解密所提取的加密指令数据,以回应接收到的上述预测。
本发明另外一种实施方式揭示一种方法,用于操作一微处理器。该方法包括以一分支目标地址高速缓冲存储器(BTAC)记录先前执行过的分支与切换密钥指令的历史信息。上述历史信息包括所记录的分支与切换密钥指令的目标地址以及标识符。上述标识符标示与所属的分支与切换密钥指令相关的多个密钥数值。该方法更于先前执行过的分支与切换密钥指令被提取时接收该分支目标地址高速缓冲存储器所作的预测、并且自该分支目标地址高速缓冲存储器接收关于所提取的分支与切换密钥指令的上述目标地址以及标识符。该方法更根据所接收的目标地址提取加密指令数据、并且根据所接收的标识符所标示的多个密钥数值解密所提取的加密指令数据,以回应接收到的上述预测。
附图说明
图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位(Ebit)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包括一指令转译器(instructiontranslator),用以将X86指令转译为微指令microinstructions或micro-ops,交由执行单元112执行。解码单元108输出指令时,更会针对各指令输出一位值,该位值乃伴随该指令沿所述管线结构一路行进而至,用以指示该指令是否为加密指令。该位值将控制该执行单元112以及该引出单元114,使的根据该指令自该指令高速缓冲存储器102取出时是加密指令或纯文字指令而进行决策并且采取动作。在一种实施方式中,纯文字指令不被允许执行专供指令解密模式设计的特定操作。
在一种实施方式中,微处理器100为一x86架构处理器,然而,微处理器100也可以其他架构的处理器实现。若一处理器可正确执行设计给x86处理器执行的大多数应用程序,则视之为x86架构的处理器。若应用程序执行后可获得预期结果,则可判断该应用程序是被正确执行。特别是,微处理器100是执行x86指令集的指令,且具有x86用户可用寄存器组(x86user-visible register set)。
在一种实施方式中,微处理器100设计成供应一复合安全架构(comprehensivesecurity architecture)─称为安全执行模式(secure execution mode,简称SEM)─以于其中执行程序。根据一种实施方式,SEM程序的执行可由数种处理器事件(processorevents)引发,且不受一般(非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)─可用于存储解密密钥,并藉由一隔离串行总线(privateserial 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-flyswitching),以下将详述之。新的密钥可由加密程序指令自身的即时数据组成。在一种实施方式中,程序文档标头的一字段会指示程序指令是否为加密型式。
图1所描述的技术有多项优点。第一,自加密指令数据106所解密出来的纯文字指令数据无法由微处理器100外部获得。
第二,提取单元104提取加密指令数据所需的时间与提取纯文字指令数据所需的时间相同。此特色关系着安全与否。反之,若有时间差存在,黑客可藉此破解加密技术。
第三,相较于传统设计,本发明所揭示的指令解密技术不会额外增加提取单元104所耗的时钟数量。如以下讨论,密钥扩展器152增加解密密钥的有效长度,该解密密钥用于解密一加密程序,且此方式不会使提取加密程序数据所需的时间长于提取纯文字程序数据所需的时间。特别是,因为密钥扩展器152的运作限时于以提取地址134查表该指令高速缓冲存储器102获得指令数据106之内完成,密钥扩展器152并不会增加一般的提取程序的时间。此外,因为多工器154以及密钥扩展器152一并限时于以提取地址134查表该指令高速缓冲存储器102获得指令数据106之内完成,故不会增加一般的提取程序的时间。异逻辑156是唯一添加于一般提取路径的逻辑运算,所幸异操作156的传播延迟相当小,不会增加工作周期。因此,本发明所揭示的指令解密技术不会增加提取单元104时钟数量负担。此外,相较于一般技术所应用于解密指令数据106的复杂解密机制,例如S盒(S-boxes),一般技术会增加提取以及解码指令数据106时所需的工作周期且/或所消耗的时钟数量。
接着,参考图2,一方块图详细图解图1的提取单元104。特别是,图1的密钥扩展器152也详细图列其中。先前已讨论采用异逻辑解密上述加密指令数据106的优点。然而,快且小的异逻辑有其缺点:若加密/解密密钥被重复使用,则异逻辑属于一种脆弱加密方法(weak encryption method)。不过,若密钥的有效长度等同所欲加密/解密的程序的长度,异逻辑加密会是一种强度极高的加密技术。微处理器100的特征在于可增长解密密钥的有效长度,以降低密钥重复使用的需求。第一,主密钥寄存器142所储存的数值(文档)为中大型尺寸:在一种实施方式中,其尺寸等同自指令高速缓冲存储器102所取出的指令数据106的提取量、或区块尺寸,为128位(16字节)。第二,加密扩展器152用于增长解密密钥的有效长度,例如,增至一实施方式所揭示的2084字节,将于后续篇幅详述。第三,加密程序可藉由密钥切换指令(或其变形)在操作中改变主密钥寄存器142内的数值,之后段落将详述之。
在图2所示实施方式中,使用了五个主密钥寄存器142,编号0-4。然而,在其他实施方式中,也可以较少或较多量的主密钥寄存器142数量增长解密密钥长度。例如,一种实施方式采用12个主密钥寄存器142。密钥扩充器152包括一第一多工器A 212以及一第二多工器B 214,用以接收主密钥寄存器142所供应的密钥。提取地址134的部分内容用于控制多工器212/214。在图2所示实施方式中,多工器B 214为三转一多工器,而多工器A 212为四转一多工器。表格1显示多工器212/214如何根据各自的选择输入选取这些主密钥寄存器142(以上述编号识别)。表格2显示上述选择输入的产生方式,以及基于提取地址134的位[10:8]所呈的主密钥寄存器142组合。
Figure BDA0001220808010000151
表格1
Figure BDA0001220808010000152
Figure BDA0001220808010000161
表格2
多工器B 214的输出236是供应给加法/减法器218。多工器A 212的输出234是供应给一旋转器(rotator)216。旋转器216接收提取地址134的位[7:4],据以旋转多工器输出234,决定旋转的字节数量。在一种实施方式中,提取地址134的位[7:4]在供应给旋转器216控制旋转的字节数量前增量,以上述表格3显示。旋转器216的输出238是供应给加法/减法器218。加法器/减法器218接收提取地址134的位[7]。若该位[7]为清空,加法/减法器218将旋转器216的输出238自多工器B 214的输出236减去。若该位[7]为设定,加法/减法器218将旋转器216的输出238加上多工器B 214的输出236。加法/减法器218的输出即图1所示的解密密钥174,将供应给多工器154。以下以图3的流程图详述相关技术。
接着,参阅图3,一流程图基于本发明技术图解图2提取单元104的操作。流程始于方块302。
在方块302,提取单元104以提取地址134读取指令高速缓冲存储器102,以开始提取一16字节的区块的指令数据106。指令数据106可为加密状态或为纯文字状态,视指令数据106是为一加密程序或一纯文字程序的一部分而定,由E位148标示。流程接着进入方块304。
参考方块304,根据提取地址134较高的数个位,多工器A 212以及多工器B 214分别自主密钥寄存器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所供应的位E 148。若指令数据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为:
Figure BDA0001220808010000181
Figure BDA0001220808010000182
为第一主密钥234的字节n,且
Figure BDA0001220808010000183
为第二主密钥的字节n+x。如上所述,密钥扩展器152所产生的前八套16字节解密密钥174是由减法方式产生,且后八套是由加法方式产生。具体来说,选定的主密钥对234/236各自所提供的字节内容用于为16个连续的16字节区块的指令数据各个字节产生解密密钥174字节,详情请见表格3。举例说明,表格3第1列的符号”15-00”表示第二主密钥236的字节0的内容会经8位算数运算(an eight-bitarithmetic operation)自第一主密钥234的字节15减去,以获得一字节的有效解密密钥174,用以与一16字节区块的指令数据106中的字节15进行异运算。
Figure BDA0001220808010000184
Figure BDA0001220808010000191
表格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)是以同样密钥加密。以下列举根据一传统异加密运算加密得到的二密钥长度区块的数据:
(1)
Figure BDA0001220808010000201
(1)
Figure BDA0001220808010000202
其中,
Figure BDA0001220808010000203
为第一密钥长度区块的数据的字节n,将被加密;
Figure BDA0001220808010000204
为第二密钥长度区块的数据的字节n,将被加密;且kn为密钥的字节n。第三,黑客对所述两区块进行异运算,使其中密钥成分彼此相销,独留以下内容:
(3)
Figure BDA0001220808010000205
最后,由于计算出的字节为单纯两个纯文字字节的函数,黑客可以统计分析纯文字内容的出现频率,以尝试求得纯文字字节的数值。
然而,根据图2以及图3所揭示方式计算出的加密指令数据106字节的图样如以下说明(4)与(5)所示:
(4)
Figure BDA0001220808010000211
(5)
Figure BDA0001220808010000212
其中
Figure BDA0001220808010000213
标示所加密的第一16字节区块的指令数据的字节n,
Figure BDA0001220808010000214
标示所加密的第二16字节区块的指令数据的字节n,
Figure BDA0001220808010000215
标示主密钥x的字节n,且
Figure BDA0001220808010000216
标示主密钥y的字节n。如前述,主密钥x与y为不同密钥。假定一种实施方式以五个主密钥寄存器142提供八种主密钥对234/236组合,2048字节序列中各字节是与两个独立的主密钥字节的一组合进行异运算。因此,当加密数据以任何方式于256字节的区块中移位并且彼此作异运算,所求得的字节都会存在两个主密钥的复杂成分,因此,不若说明(3)的内容,此处所得的运算结果不单纯只是纯文字字节。例如,假设黑客选择使同一256字节区块中的16字节区块对齐并彼此进行异操作使同样的密钥零字节在各段中被使用,字节0的运算结果如说明(6)所示,所获得的字节存在两个主密钥的复杂组合:
(6)
Figure BDA0001220808010000217
其中n不为1。
再者,若黑客换成将选自不同256字节区块内的16字节区块对齐、且彼此作异运算,运算结果的字节0如说明(7)所示:
(7)
Figure BDA0001220808010000221
其中主密钥u与v中至少一个不同于主密钥x以及y。模拟随机主密钥数值所产生的有效密钥字节的异运算,可发现运算结果
Figure BDA0001220808010000222
呈现相当平滑的分布。
当然,若黑客选择将不同的2048字节长度区块内的16字节区块对齐、并且彼此进行异操作,黑客可能会获得与说明(3)类似的结果。然而,请参照以下内容。第一,某些程序─例如,安全性相关程序─可能短于2048字节。第二,相距2048字节的指令字节的统计相关性(statistical correlation)很可能非常小,导致很难破解。第三,如前述内容,所述技术的实施方式可以较多数量实现主密钥寄存器142,使解密密钥的有效长度扩展;例如,以12个主密钥寄存器142供应16384字节长度的解密密钥,甚至其他更长的解密密钥。第四,以下将讨论的密钥下载指令500以及密钥切换指令600更使程序设计师得以载入新的数值至主密钥寄存器142,以有效扩展密钥长度超过2048字节,或者,如果必要,也可扩展密钥长度至程序的完整长度。
现在,参考图4,一方块图根据本发明技术图解图1的标志寄存器128。根据图4所示的实施方式,标志寄存器128包括标准x86寄存器的多个位408;不过,为了此处叙述的新功能,图4所示实施方式会动用x86架构中一般为预留(RESERVED)的一位。特别说明,标志寄存器128包括一E位字段402。E位字段402用于修复控制寄存器144的E位148数值,用以于加密以及纯文字程序间切换和/或于不同加密程序间切换,以下将详细讨论的。E位字段402标示目前所执行的程序是否有加密。若目前所执行的程序有加密,E位字段402为设定状态,否则,为清除状态。当中断事件发生,控制权切换给其他程序(例如,中断interrupt、异常exception如页错误page fault、或任务切换task switch),储存标志寄存器128。反之,若控制权重回先前因中断事件中断的程序,则修复标志寄存器128。微处理器100的设计会在标志寄存器128修复时以标志寄存器128的E位402字段数值更新控制寄存器144的E位148数值,以下将详细讨论。因此,若中断事件发生时一加密程序正在执行(即提取单元104处于解密模式),当控制权交还给该加密程序时,以修复的E位字段402令E位148为设定状态,以修复提取单元104为解密模式。在一种实施方式中,E位148以及E位字段402为同一个具体硬件位,因此,储存标志寄存器128的E位字段402中数值即是储存E位148,且修复标志寄存器128的E位字段402的数值即是修复E位148。
参阅图5,一方块图图解根据本发明技术所实现的一密钥下载指令500的格式。密钥下载指令500包括一操作码(opcode)502字段,特地标示其为微处理器100指令集内的密钥下载指令500。在一种实施方式中,操作码字段502数值为0FA6/4(x86领域)。密钥下载指令500包括两个运算元:一密钥寄存器文档目标地址504以及一安全存储区来源地址506。该安全存储区来源地址506为安全存储区122中储存一16字节主密钥的一地址。密钥寄存器文档地址504标示密钥寄存器文档124内的一个寄存器的地址,此寄存器将载入自安全存储区122载出的16字节主密钥。在一种实施方式中,若一程序企图在微处理器100不为安全操作模式下执行密钥载入指令500,则视之为无效指令异常;此外,若安全存储区来源地址506数值位于有效安全存储区122之外,则视之为一般保护异常。在一种实施方式中,若一程序试图在微处理器100不为最高权限级别时(例如,x86环0权限/x86ring 0)执行密钥下载指令500,则视之为无效指令异常。在某些状况下,16字节主密钥的构成可能包括在加密指令的即时数据字段内。所述即时数据可被一块一块移至安全存储区122组成16字节的密钥。
现在,参阅图6,一方块图图解根据本发明技术所实现的一密钥切换指令600的格式。密钥切换指令600包括一操作码602字段,特地其为微处理器100指令集内的密钥切换指令600。密钥切换指令600还包括一密钥寄存器文档索引字段604,标示密钥寄存器文档124一序列寄存器中的开端,以自此将密钥载入主密钥寄存器142。在一种实施方式中,若一程序尝试在微处理器100不为安全操作模式时执行一密钥切换指令600,则视之为无效指令异常。在一种实施方式中,若一程序意图在微处理器100不为最高权限级别(例如,x86环0权限)时执行一密钥切换指令600,则视之为无效指令异常。在一种实施方式中,密钥切换指令600为原子操作型式(atomic),即不可中断;此处所讨论,用于载入密钥至主密钥寄存器142的其他指令也是如此─例如,以下将讨论的分支与切换密钥指令。
现在,参阅图7,一流程图图解图1的微处理器100的操作,其中,根据本发明技术执行图6介绍的密钥切换指令600。流程始于方块702。
在方块702,解码单元108将一密钥切换指令600解码,且将解码结果代入微代码单元132内实现密钥切换指令600的微代码程序。流程接着进入方块704。
在方块704,微代码会根据密钥寄存器文档索引字段604自密钥寄存器文档124下载主密钥寄存器142的内容。较佳实施方式是:微代码以密钥寄存器文档索引字段604所标示的密钥寄存器为起始,自密钥寄存器文档124下载连续的n个寄存器内容作为n个密钥存入主密钥寄存器142,其中n为主密钥寄存器142的总数。在一种实施方式中,数值n可标示于密钥切换指令600的一额外空间,设定为少于主密钥寄存器142的总数。流程接着进入方块706。
在方块706,微代码使微处理器100分支至接续的x86指令(即该密钥切换指令600之后的指令),将导致微处理器100中较密钥切换指令600新的所有x86指令被清空,致使微处理器100内、较切换至接续x86指令的微操作新的所有微操作被清空。上述被清空的指令包括自指令高速缓冲存储器102提取出、缓冲暂存于提取单元104以及解码单元108内等待解密与解码的所有指令字节106。流程接着进入方块708。
在方块708,基于方块706分支至接续指令的操作,提取单元104开始利用方块704载入主密钥寄存器142的新一组密钥值自指令高速缓冲存储器102提取并且解密指令数据106。流程结束于方块708。
如图7所示,密钥切换指令600令正在执行中的加密程序在自指令高速缓冲存储器102提取出来的同时得以改变主密钥寄存器142内所储存、供解密该加密程序使用的内容。所述主密钥寄存器142动态调整技术使得加密该程序的有效密钥长度超越提取单元104先天支援的长度(例如,图2实施方式所提供的2048字节);如图8所示程序,若将之以图1微处理器100操作,黑客会更不易攻破计算机系统的安全防护。
现在,参阅图8,一方块图图解根据本发明技术所实现的一加密程序的一存储器用量(memory footprint)800,其中采用图6所示的密钥切换指令600。图8所示的加密程序存储器用量800包括连续数「块chunk」指令数据字节。每一「块」的内容为一序列多个指令数据字节(其中为预先加密的数据),且属于同一「块」的指令数据字节是由同样的一套主密钥寄存器142数值解密。因此,不同两「块」的界线是由密钥切换指令600定义。也就是说,各「块」的上、下界是由密钥切换指令600的位置区分(或者,以一程序的第一「块」为例,其上界为该程序的起始处;此外,以该程序的最后一「块」为例,其下界为该程序的结束处)。因此,各「块」指令数据字节是由提取单元104基于不同套主密钥寄存器142数值解密,意即各「块」指令数据字节的解密是根据前一「块」所供应的一密钥切换指令600所载入主密钥寄存器142数值。加密一程序的后处理器(post-processor)会知晓各密钥切换指令600所在的存储器地址,并且会利用此信息─即提取地址的相关地址位─结合密钥切换指令600密钥数值产生加密密钥字节,以加密该程序。一些目的文件格式(object file format)允许程序设计者标示程序载入存储器何处,或至少载明特定大小的对齐形式(例如,页面边界pageboundary),以提供足够的地址信息加密该程序。此外,一些操作系统预设值是将程序载入页面边界上。
密钥切换指令600可安置于程序的任何地方。然而,若密钥切换指令600载入特定值至主密钥寄存器142供下一「块」指令数据字节解密使用、且密钥切换指令600(或甚至密钥载入指令500)的位置导致每一「块」的长度短于、或等于提取单元104所能应付的有效密钥长度(例如,图2实施方式所揭示的2048字节),则程序可被以有效长度等同整体程序长度的密钥加密,此为相当强健的加密方式。此外,即使密钥切换指令600的使用使得有效密钥长度仍短于加密程序的长度(即,同样一套主密钥寄存器142数值被用于加密一程序的多个「块」),改变「块」尺寸(例如,不限定全为2048字节)可增加黑客破解系统的困难度,因为,黑客必须先判断以同一套主密钥寄存器142数值加密的「块」位于何处,并且必须判断该些长度不一的「块」各自的尺寸。
值得注意的是,以密钥切换指令600实现的动态密钥切换耗费相当大量的时钟数目,主要是因为管线必须清空。此外,在一种实施方式中,密钥切换指令600主要是以微代码(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,后处理器接收一程序的一目的文件。根据一种实施方式,该目的文件内的分支指令的目标地址可在程序执行前确定;例如,指向固定目标地址的分支指令。在程序运行前决定好目标地址的分支指令尚有另一形式,例如,一相对分支指令(relativebranch instruction),其中记载一偏移量,用来加上分支指令所在的存储器地址,以求得分支目标地址。反之,关于目标地址不会在程序执行前确定的分支指令,其中一种例子是基于寄存器或存储器所储存的运算元计算出目标地址,因此,其值在程序执行当中可能有变动。流程接着进入方块1104。
在方块1104,后微处理器将跨块分支指令(inter-chunk branch instruction)以分支与切换密钥指令900取代,所述指令900在密钥寄存器文档索引空间904储存有适当的数值,该数值乃基于分支指令的目标地址所坐落的「块」而设定。如图8所揭示内容,一「块」是由一序列多个指令数据字节所组成,将由同一套主密钥寄存器142数值解密。因此,跨块分支指令的目标地址所坐落的「块」不同于分支指令本身的「块」。值得注意的是,块内分支─即目标地址与本身位于同一「块」的分支指令─无须被替代。值得注意的是,产生出原始档(source file)以产出目的文件的程序设计及/或编译器可视需求明确包括分支与切换密钥指令900,以降低后处理器取代操作的负担。流程接着进入方块1106。
在方块1106,后处理器加密该程序。后处理器知道每一「块」的存储器位置以及主密钥寄存器142数值,并将之用于加密该程序。流程结束于方块1106。
现在,参阅图12,一方块图图解本发明技术另一种实施方式所实现的一分支与切换密钥指令1200的格式。图12所示的分支与切换密钥指令1200适用于目标地址在程序执行前为未知的分支操作,以下将详细讨论。分支与切换密钥指令1200包括一操作码1202字段,用以标示其为微处理器100指令集内的分支与切换密钥指令1200。分支与切换密钥指令1200同样包括一分支信息字段906,功用与图9的分支与切换密钥指令900的该字段类似。在一种实施方式中,若一程序在微处理器100不为安全执行模式时试图执行分支与切换密钥指令1200,则视之为无效指令异常。在一种实施方式中,若一程序在微处理器100不为最高权限级别(例如,x86环0权限)时试图执行一分支与切换密钥指令1200,则视之为无效指令异常。在一种实施方式中,分支与切换密钥指令1200为原子型式。
现在,参阅图13,一方块图图解根据本发明技术实现的「块」地址范围表1300。表格1300包括多个单元。每一单元与加密程序的一「块」相关。每一单元包括一地址范围字段1302以及一密钥寄存器文档索引字段1304。地址范围字段1302标示所对应「块」的存储器地址范围。密钥寄存器文档索引字段1304标示密钥寄存器文档124内的寄存器,由分支与切换密钥指令1200将索引所指的寄存器所储存的密钥数值载入主密钥寄存器142,供提取单元104解密该「块」使用。以下参考图18进行讨论,表格1300于需要存取表格1300内容的分支与切换密钥指令1200执行前载入微处理器100。
现在,参阅图14,一流程图图解图1微处理器100的操作,其中,根据本发明技术执行图12的分支与切换密钥指令1200。流程始于方块1402。
在方块1402,解码单元108解码一分支与切换密钥指令1200且将之代入微代码单元132中实现分支与切换密钥指令1200的微代码程序。流程接着进入方块1406。
在方块1406,微代码解出分支方向(采用、或不采用)、且找出目标地址。流程接着进入判断方块1408。
在判断方块1408,微代码判断方块1406所解出的分支方向是否为采用。若为采用,流程进入方块1414。反之,流程进入方块1412。
在方块1412,微代码不切换密钥、或跳至目标地址,因为该分支未被采用。流程结束于方块1412。
在方块1414,微代码基于方块1406所解出的目标地址查询图13所示的表格1300,得到该目标地址所坐落的「块」所对应的密钥寄存器文档索引字段1304的内容。微代码接着基于密钥寄存器文档索引字段1304内所记载的索引,自密钥寄存器文档124将密钥数值载入主密钥寄存器142。较佳实施方式是,微代码根据密钥寄存器文档索引字段1304所储存的索引,自密钥寄存器文档124中将n个相邻寄存器储存的n个密钥值载入主密钥寄存器142的,其中,n为主密钥寄存器142的总数。在一种实施方式中,数值n可记录于分支与切换密钥指令1200的一额外字段中,设定为少于主密钥寄存器142总数。流程接着进入方块1416。
在方块1416,微代码致使微处理器100分支至方块1406所解出的目标地址,将导致微处理器100中较分支与切换密钥指令1200新的所有x86指令被清空,致使微处理器100内、较分支至目标地址的微操作新的所有微操作被清空。上述被清空的指令包括自指令高速缓冲存储器102提取出、缓冲暂存于提取单元104以及解码单元108内等待解密与解码的所有指令字节106。流程接着进入方块1418。
在方块1418,随着方块1416分支至目标地址的操作,提取单元104采用方块1414载入主密钥寄存器142的新一套密钥值,开始自指令高速缓冲存储器102提取并且解密指令数据106。流程结束于方块1418。
现在,参考图15,一方块图图解根据本发明技术另外一种实施方式所实现的一分支与切换密钥指令1500的格式。图15所示的分支与切换密钥指令1500以及其操作类似图12所示的分支与切换密钥指令1200。然而,取代自密钥寄存器文档124载入密钥至主密钥寄存器142,分支与切换密钥指令1500是自安全存储区122载入密钥至主密钥寄存器142,以下讨论之。
现在,参考图16,一方块图图解根据本发明技术所实现的一「块」地址范围表1600。图16所示表格1600类似图13所示的表格1300。然而,取代包括一密钥寄存器文档索引字段1304,表格1600包括一安全存储区地址字段1604。安全存储区地址字段1604记载安全存储区122内的一地址,该地址储存的密钥值须由分支与切换密钥指令1500载入主密钥寄存器142,以供该提取单元1046解密该「块」时使用。以下讨论参考图18内容,表格1600是在需要查询该表格1600的分支与切换密钥指令1500被执行前载入微处理器100。在一种实施方式中,安全存储区122地址的较低数个位无须储存在安全存储区地址字段1604,特别是因为安全存储区122中储存一组密钥的位置的总量相当大(例如,16字节x 5)、且该组密钥可沿着一设定尺寸范为对齐。
现在,参阅图17,一流程图图解图1微处理器100的操作,其中根据本发明技术执行图15的分支与切换密钥指令1500。流程始于方块1702。图17的流程图的许多方块与图14的许多方块类似,因此采同样的编号。然而,方块1414是由方块1714取代,微代码基于方块1406所求得的目标地址查表图16的表格1600,以获得目标地址所坐落的「块」的安全存储区地址字段1604数值。微代码接着根据安全存储区地址字段1604数值自安全存储区122将密钥数值载入主密钥寄存器142。较佳实施方式是,微代码由安全存储区地址字段1604数值自安全存储区122将n个邻近16字节空间位置内所储存的n个密钥数值载入主密钥寄存器142,其中n为主密钥寄存器142的总数。在一种实施方式中,数值n可记载于分支与切换密钥指令1500中一额外字段,设定为少于主密钥寄存器142总数。
现在,参阅图18,一流程图图解根据本发明另外一种实施方式所实现的一后处理器的操作。所述后处理器可用于后处理一程序并加密,以交由图1的微处理器100执行。流程始于方块1802。
在方块1802,后处理器接收一程序的目的文件。根据一种实施方式,该目的文件内的分支指令,可为目标地址在程序执行前判定、可为目标地址不可在程序执行前判定。流程接着进入方块1803。
在方块1803,后处理器建立图13或图16的「块」地址范围表1300或1600,以列入该目标档。在一种实施方式中,操作系统在载入且执行一加密程序前将表格1300/1600载入微处理器100,使分支与切换密钥指令1200/1500得以存取的。在一种实施方式中,后处理器在程序中插入指令,以在任何分支与切换密钥指令1200/1500执行前载入表格1300/1600至微处理器100。流程接着进入方块1804。
在方块1804,类似先前所讨论、关于图11的方块1104的操作,后处理器将每个执行前目标地址可决定的跨块分支指令以图9的分支与切换密钥指令900取代,指令900基于分支指令目标地址所在「块」记载有合适的密钥寄存器文档索引字段904数值。流程接着进入方块1805。
在方块1805,后处理器根据方块1803所产生的表格型态(1300/1600)将每个限于执行过程中决定目标地址的分支指令以图12或图15所示的分支与切换密钥指令1200或1500取代。流程接着进入方块1806。
在方块1806,后处理器加密该程序。该后处理器知道关于各「块」的存储器位置与主密钥寄存器142数值,将用于加密该程序。流程结束于方块1806。
现在,参阅图19,一流程图图解图1微处理器100的操作,其中,根据本发明技术处理加密程序以及纯文字程序之间的任务切换。流程始于方块1902。
在方块1902,标志寄存器128的E位字段402的E位以及图1控制寄存器144的E位148由微处理器100的一重置操作清空。流程接着进入方块1904。
在方块1904,微处理器100在执行其重置微代码进行初始化后,开始提取并且执行使用者程序指令(例如,系统固件),其为纯文字程序指令。特别是,由于E位128为清空,如前所述,提取单元104视提取出来的指令数据106为纯文字指令。流程接着进入方块1906。
在方块1906,系统固件(例如,操作系统、固件、基本输入输出系统BIOS…等)接收一要求(request),要执行一加密程序。在一种实施方式中,执行一加密程序的上述要求伴随、或由一切换操作指示,以切换至微处理器100的一安全执行模式,如以上讨论内容。在一种实施方式中,微处理器100仅在安全执行模式时,方允许操作于一解密模式(即,E位148为设定状态)。在一种实施方式中,微处理器100仅在系统管理模式(system managementmode,例如,x86架构中常见的SSM),方允许以解密模式操作。流程接着进入方块1908。
在方块1908,系统软件于主密钥寄存器142中载入其初始值,与程序中将被执行的第一「块」相关。在一种实施方式中,系统软件执行一密钥切换指令600下载密钥至主密钥寄存器142。在载入密钥至主密钥寄存器142之前,密钥寄存器文档124的内容可由一个或多个密钥载入指令500载入。在一种实施方式中,载入密钥至主密钥寄存器142以及密钥寄存器文档124之前,安全存储区122可先被写入密钥数值,其中,所述写入乃经由常见的安全通道技术,例如,AES或RSA加密通道,以防止黑客窥探其值。如以上所讨论,以上密钥数值可储存在一安全非易失性性存储器(例如快闪存储器)经由一隔离串行总线(private serialbus)耦接微处理器100,或者,可储存在微处理器100的一非易失性性单次写入存储器。如以上讨论,所述程序可包含在单一「块」中。也就是说,所述程序可不包括密钥切换指令600,整个程序可由单一套主密钥寄存器142数值解密。流程接着进入方块1916。
在方块1916,随着控制权转移至加密程序,微处理器100设定标志寄存器128的E位字段402标示目前所执行的程序为加密型式,且设定控制寄存器144的E位148,使提取单元104处于解密模式。微处理器100更致使管线内的指令被刷新,其动作类似图7方块706所实行的刷新操作。流程接着进入方块1918。
在方块1918,提取单元104提取加密程序内的指令106,并且参考图1至图3所揭示的技术将之以解密模式解密并且执行。流程接着进入方块1922。
在方块1922,微处理器100提取并且执行加密程序时,微处理器100接收到中断事件。举例说明,所述中断事件可为一中断interrupt、一异常exception(如页面错误pagefault)、或任务切换task switch。当一中断事件发生,微处理器100管线所有待处理的指令会被清空。所以,若管线中有任何先前提取的加密指令,将之清空。此外,自指令高速缓冲存储器102所提取出、可能在缓冲储存在提取单元104以及解码单元108中等待被解密、解码的所有指令字节会被清空。在一种实施方式中,微代码被唤起回应中断事件。流程接着进入方块1924。
在方块1924,微处理器100储存标志寄存器128(以及微处理器100其他结构状态,包括受中断的加密程序的目前指令指标数值)至一堆迭式存储器(stack memory)。储存加密程序的E位字段402数值将使其得以在后续操作中修复(在方块1934)。流程接着进入方块1926。
在方块1926,当控制权转移到新的程序(例如,中断处理程序interrupt handler、异常处理程序exception handler、或新任务),微处理器100清空标志寄存器128的E位字段402、以及控制寄存器144的E位148,以应付纯文字的新程序。也就是说,图19所示实施例假设微处理器100同一时间只有允许运作一个加密程序,且已有一个加密程序在执行(但被中断)。图22至图26另外揭示有其他种的实施方式。流程接着进入方块1928。
在方块1928,提取单元104参考图1至图3所揭示内容以纯文字模式提取新程序的指令106。特别是,控制寄存器144内E位148的清空状态使得多工器154将指令数据106与多位的二进位零值176进行异运算,使得指令数据106不被解密操作。流程接着进入方块1932。
在方块1932,新程序执行一返回操作自中断指令(例如,x86IRET)或类似指令返回,使得控制权回归加密程序。在一种实施方式中,自中断指令返回的操作由微代码实现。流程接着进入方块1934。
在方块1934,回应前述自中断指令返回的操作,由于控制权移转回加密程序,微处理器100修复标志寄存器128,令标志寄存器128的E位字段402重回先前方块1924所储存的设定状态。流程接着进入方块1938。
在方块1938,由于控制权移转回加密程序,微处理器100以标志寄存器128的E位字段402数值更新控制寄存器144的E位148,使得提取单元104重新提取并且解密该加密程序的指令数据106。流程接着进入方块1942。
在方块1942,微代码令微处理器100分支至先前方块1924储存于堆迭式存储器中的指令指标数值,使得微处理器100中所有x86指令清空、且使得微处理器100中所有微操作清空。所清空内容包括提取自指令高速缓冲存储器102、缓冲暂存在提取单元104以及解码单元108中等待被解密、解码的所有指令字节106。流程接着进入方块1944。
在方块1944,提取单元104重新开始提取该加密程序内的指令106,并且参考图1至图3所揭示技术以解密模式解密并且执行。流程结束于方块1944。
现在,参考图20,一流程图图解根据本发明技术实现的一系统软件的操作,由图1的微处理器100执行。图20流程可结合图19内容执行。流程始于方块2002。
在方块2002,系统软件收到一要求,欲执行一个新的加密程序。流程接着进入决策方块2004。
在决策方块2004,系统软件判断此一加密程序是否为系统已在执行的程序之一。在一种实施方式中,系统软件以一标志标示一加密程序是否为系统中已在执行的程序之一。若此加密程序是系统已在执行的程序之一,流程进入方块2006,反之,则流程进入方块2008。
在方块2006,系统软件等待该加密程序执行完毕且不再是系统执行中的程序之一。流程接着进入方块2008。
在方块2008,微处理器100允许新的加密程序开始执行。流程结束于方块2008。
现在,参考图21,一方块图根据本发明技术另外一种实施方式,图解图1标志寄存器128的字段。图21的标志寄存器128类似图4所示实施方式,相比的,还包括索引字段(index bits)2104。根据一种实施方式,包括索引字段2104类似E位402通常是x86架构所预留的位。索引字段2104用于应付多个加密程序的切换,以下详细讨论。较佳实施方式是,密钥切换指令600以及分支与切换密钥指令900/1200以本身的密钥寄存器索引字段604/904/1304更新标志寄存器128的索引字段2104。
现在,参考图22,一流程图图解图1微处理器100的操作,其中,根据本发明技术采用图21所示的标志寄存器128实行多个加密程序之间的任务切换。流程接着进入方块2202。
在方块2202,一要求发向该系统软件,要执行一个新的加密程序。流程接着进入决策方块2204。
在决策方块2204,系统软件判断密钥寄存器文档124中是否有空间应付一个新的加密程序。在一种实施方式中,方块2202所产生的该要求会指出需要密钥寄存器文档124内多少空间。若密钥寄存器文档124中有空间应付新的加密程序,流程进入方块2208,反之,流程进入方块2206。
在方块2206,系统软件等待一个或多个加密程序完成、使密钥寄存器文档124腾出空间应付新的加密程序。流程接着进入方块2208。
在方块2208,系统软件将密钥寄存器文档124内的空间配置给新的加密程序,并且随之填写标志寄存器128中的索引字段2104,以标示密钥寄存器文档124中新配置的空间。流程接着进入方块2212。
在方块2212,系统软件在方块2208所配置的密钥寄存器文档124位置载入供新程序使用的密钥数值。如以上讨论,所载入的密钥数值可采用密钥下载指令500自安全存储区122载入,或者,在必要情况下,可以安全管道由微处理器100外部位置取得。流程接着进入方块2214。
在方块2214,系统软件基于密钥寄存器文档索引字段604/904/1304将密钥自密钥寄存器文档124载入主密钥寄存器142。在一种实施方式中,系统软件执行一密钥切换指令600载入密钥至主密钥寄存器142。流程接着进入方块2216。
在方块2216,由于控制权移转至加密程序,微处理器100设定标志寄存器128的E位字段402以标示目前执行的程序为加密型式,并且设定控制寄存器144的E位148以设定提取单元104为解密模式。流程结束于方块2216。
现在,参考图23,一流程图图解图1微处理器100的操作,其中,根据本发明技术采用图21所示的标志寄存器128应付多个加密程序之间的任务切换。流程始于方块2302。
在方块2302,目前执行的程序执行一返回操作,自一中断指令返回,引发一任务切换至新程序;所述新程序先前曾被执行过但被跳开,且其结构状态(例如,标志寄存器128、指令指标寄存器、以及通用寄存器)曾被储存在堆迭式存储器中。如先前所提过,在一种实施方式中,自中断指令返回的操作是由微代码实现。现在执行中的程序以及新的程序可为加密程序或纯文字程序。流程进入方块2304。
在方块2304,微处理器100根据堆迭式存储器修复标志寄存器128,以应付接续返回的程序。也就是说,微处理器100将接续程序(即目前跳换回的程序)先前跳换出去时储存于堆迭式存储器的标志寄存器128数值重新载入标志寄存器128。流程接着进入决策方块2306。
在决策方块2306,微处理器100判断修复后的标志寄存器128的E位402是否为设定状态。若是,则流程进入方块2308;反之,则流程进入方块2312。
在方块2308,微处理器100根据方块2304所修复的EFLAGS寄存器128索引字段2104数值将密钥载入密钥寄存器文档124。流程接着进入方块2312。
在方块2312,微处理器100将控制寄存器144的E位148的内容以方块2304所修复的标志寄存器128的E位字段402数值更新。因此,若接续的程序是一个加密程序,提取单元104会被设定为解密模式,反之,则设定为纯文字模式。流程接着进入方块2314。
在方块2314,微处理器100以堆迭式存储器的内容修复指令指标寄存器、并且分支跳跃至指令指标所指的位置,所述动作将清除微处理器100所有x86指令,并且清除微处理器所有微操作。所清除的包括自指令高速缓冲存储器102所提取出、缓冲暂存于提取单元104、解码单元108中等待解密、解码的所有指令字节106。流程接着进入方块2316。
在方块2316,提取单元104参考图1至图3技术重新开始自接续程序中提取指令106,并视方块2312所修复的控制寄存器144的E位148数值以解密模式或纯文字模式操作。流程结束于方块2316。
现在,参考图24,一方块图根据本发明、图解图1密钥寄存器文档124的单一个寄存器的另外一种实施方式。根据图24所示的实施方式,每个密钥寄存器文档124还包括一位─为淘汰位2402(kill bit,以下简称K位)。K位2402用于应付微处理器100对多个加密程序的多任务(multitasking)操作,所述多个加密程序总计需要多于密钥寄存器文档124空间尺寸的密钥储存空间,以下将详述之。
现在,参考图25,一流程图图解图1微处理器100的操作,其中根据本发明技术以图21的标志寄存器128以及图24的密钥寄存器文档124实现多个加密程序之间的任务切换的另外一种实施方式。图25所示流程类似图22所示流程。不同处在于决策方块2204判定密钥寄存器文档124中没有足够可用空间时,图25流程会进入方块2506而非不存在于图25的方块2204。另外,若决策方块2204判定密钥寄存器文档124中尚有足够可用空间,则图25流程同样进入图22的方块2208至方块2216。
在方块2506,系统软件将密钥寄存器文档124中已经被其他加密程序使用(即已经被配置)的空间(即寄存器)配置出来,并且设定所配置寄存器的K位2402为设定状态,并且随之设定标志寄存器128的索引字段2104以标示新配置空间在密钥寄存器文档124中的位置。K位2402的设定状态,是标示该寄存器中关于其他加密程序的密钥值将被方块2212的操作覆写为新的加密程序的密钥值。然而,如以下图26所叙述,其他加密程序的密钥值将在其返回程序中由方块2609重新载入。图25流程进入方块2506,会接着导向图22所示的方块2212,结束于方块2216。
现在,参阅图26,一流程图图解图1微处理器100的操作,其中根据本发明技术以图21的标志寄存器128以及图24的密钥寄存器文档124实现多个加密程序之间的任务切换的另外一种实施方式。图26所示流程类似图23所示流程。不同处在于,若决策方块2306判定标志寄存器128的E位402为设定,图26令流程进入决策方块2607而非方块2308。
在决策方块2607,微处理器100判断密钥寄存器文档124中,由标志寄存器128索引字段2104数值(于方块2304中修复)所标示的任何寄存器的K位2402是否为设定状态。若是,则流程进入方块2609;若否,则流程进入方块2308。
在方块2609,微处理器100产生一异常警示(exception)交由一异常处理程序处理。在一种实施方式中,异常处理程序设计于系统软件中。在一种实施方式中,异常处理程序是由安全执行模式架构提供。根据方块2304所修复的标志寄存器128索引字段2104数值,异常处理程序将目前修复的加密程序(即现在所返回执行的加密程序)的密钥重新载入密钥寄存器文档124。异常处理程序可类似先前图19所提及的方块1908作动,将修复的加密程序的密钥载入密钥寄存器文档124,或者,在必要情况下,自微处理器100外部将密钥载入安全存储区122。同样地,若密钥寄存器文档124中被重新载入的寄存器有被其他加密程序使用,系统软件会令其寄存器的K位2402为设定状态。流程接着自方块2609进入2308,且方块2308至2316是参考图23内容。
如图24至图26所教示,此处所叙述的实施方式令微处理器100得以实行多个加密程序的多任务操作,即便上述加密程序需要密钥暂存空间总合多于密钥寄存器124空间尺寸。
现在,参考图27,一方块图图解修改自图1微处理器100的本发明另外一种实施方式。与图1类似的元件是采用同样标号;例如,指令高速缓冲存储器102、提取单元104以及密钥寄存器文档124。然而,此处提取单元104被修正成还包括密钥切换逻辑2712,耦接图1所介绍的主密钥寄存器文档142以及密钥寄存器文档124。图27的微处理器100还包括一分支目标地址高速缓冲存储器(branch target address cache,BTAC)2702。BTAC 2702接收图1所揭示的提取地址134,且与指令高速缓冲存储器102的存取平行,皆是基于该提取地址134。根据提取地址134,BTAC 2702供应分支目标地址2706给图1所揭示的提取地址产生器164,供应一采用/不采用指标(T/NT indicator)2708以及一型式指标(type indicator)2714给密钥切换逻辑2712,并且供应一密钥寄存器文档(KRF)索引2716给密钥寄存器文档124。
现在,参阅图28,一方块图根据本发明技术更详细图解图27的BTAC2702。BTAC2702包括一BTAC矩阵2802,其中具有多个BTAC单元2808,图29图解BTAC单元2808的内容。BTAC 2802储存的信息包括先前执行过的分支指令的历史信息,以预测接续执行的分支指令的方向以及目标地址。特别是,BTAC 2802会采用储存的历史信息,基于提取的地址134预测先前执行过的分支指令后续发生的提取操作。分支目标地址高速缓冲的操作可参考常见的分支预测技术。然而,本发明所揭示的BTAC 2802是更修正成记录先前执行过的分支与切换密钥指令900/1200的历史信息,以进行相关的预测操作。特别是,储存的历史记录使得BTAC 2802得以在提取时间内预测所提取的分支与切换密钥指令900/1200将载入主密钥寄存器142的该组数值。此操作致能密钥切换逻辑2712在分支与切换密钥指令900/1200实际执行前将密钥数值载入,避免受限于需根据分支与切换密钥指令900/1200的执行清空微处理器100的管线内容,以下将详细讨论。此外,根据一种实施方式,BTAC 2802更被修正成储存包括先前执行过的密钥切换指令600的历史信息,以达到相同的效果。
现在,参阅图29,一方块图根据本发明技术更详细图解图28BTAC单元2808的内容。每个单元2808包括一有效位2902指示所属单元2808是否为有效。每个单元2808还包括一标记字段2904,用以与提取地址134的部分内容比较。若提取地址134的索引部分选择的单元2808使得提取地址134的标记部分吻合其中有效标记2904,则提取地址134正中BTAC 2802。每个阵列单元2808还包括一目标地址字段2906,用于储存先前执行过的分支指令─包括分支与切换密钥指令900/1200─的目标地址。每个阵列单元2808还包括一采用/不采用字段2908,用以储存先前执行过的分支指令─包括分支与切换密钥指令900/1200─的方向(采用/不采用)记录。每个阵列单元2808还包括一密钥寄存器索引字段2912,用于储存先前执行过的分支与切换密钥指令900/1200的密钥寄存器文档索引904/1304记录,以下将详细讨论。根据一种实施方式,BTAC 2802是在其密钥寄存器文档索引字段2912储存先前执行过的密钥切换指令600的密钥寄存器文档索引604记录。每个阵列单元2808还包括一型式字段2914,指示所记录的指令的型式。例如,型式字段2914可标示所记录的历史指令为一呼叫(call)、返回(return)、条件跳跃(conditional jump)、无条件跳跃(unconditionaljump)、分支与切换密钥指令900/1200、或密钥切换指令600。
现在,参阅图30,一流程图图解图27微处理器100的操作,其中,根据本发明技术,所述微处理器100包括图28揭示的BTAC 2802。流程始于方块3002。
在方块3002,微处理器100执行一分支与切换密钥指令900/1200,以下将以图32详述。流程接着进入方块3004。
在方块3004,微处理器100在BTAC 2802中配置一阵列单元2808给执行过的分支与切换密钥指令900/1200,将该分支与切换密钥指令900/1200解出的方向、目标地址、密钥寄存器文档索引904/1304、以及指令型式分别记录于所配置的该阵列单元2808的采用/不采用字段2908、目标地址字段2906、密钥寄存器文档索引字段2912、以及型式字段2914中,以作为该分支与切换密钥指令900/1200的历史信息。流程结束于方块3004。
现在,参阅图31,一流程图图解图27微处理器100的操作,其中,根据本发明技术,所述微处理器100包括图28揭示的BTAC 2802。流程始于方块3102。
在方块3102,提取地址134供应给指令高速缓冲存储器102以及BTCA2802。流程接着进入方块3104。
在方块3104,提取地址134正中BTAC 2802,且BTAC 2802将对应的阵列单元2808的目标地址2906、采用/不采用2908、密钥寄存器文档索引2912以及型式2914字段的内容分别以目标地址2706、采用/不采用指标2708、密钥寄存器文档索引2712、以及型式指标2714输出。特别是,型式字段2914用于指示所储存指令为一分支与切换密钥指令900/1200。流程接着进入决策方块3106。
在决策方块3106,密钥切换逻辑2712藉由检验采用/不采用输出2708判断分支与切换密钥指令900/1200被BTAC 2802预测为会采用。若采用/不采用输出2708显示分支与切换密钥指令900/1200被预测为采用,流程接着进入方块3112;反之,流程接着进入方块3108。
在方块3108,微处理器100随着分支与切换密钥指令900/1200顺着输送一指示,显示BTAC 2802预测其不被采用。(此外,若采用/不采用输出2708显示该分支与切换密钥指令被预测为采用,微处理器100在方块3112随着该分支与切换密钥指令900/1200顺着输送一指示,显示BTAC 2802预测其会被采用)。流程结束于3108
在方块3112,提取地址产生器164以BTAC 2802于方块3104所预测的目标地址2706更新提取地址134。流程接着进入方块3114。
在方块3114,根据BTAC 2802于方块3104所预测的密钥寄存器文档索引2712,密钥切换逻辑2712以其所指示的密钥寄存器文档124位置更新主密钥寄存器142内的密钥数值。在一种实施方式中,必要状况下,密钥切换逻辑2712会拖延提取单元104提取指令数据106内的区块,直至主密钥寄存器142被更新。流程接着进入方块3116。
在方块3116,提取单元104利用方块3114所载入的新主密钥寄存器142内容持续提取并且解密指令数据106。流程结束于方块3116。
现在,参阅图32,一流程图图解图27微处理器100的操作,其中,根据本发明技术,执行一分支与切换密钥指令900/1200。图32流程在某一方面类似图10流程,且类似的方块是采以同样标号。虽然图32的讨论是参照图10内容,其应用可更考虑图14所介绍的分支与切换密钥指令1200操作。图32流程始于方块1002。
在方块1002,解码单元108解码一分支与切换密钥指令900/1200,且将之代入微代码单元132实现分支与切换密钥指令900/1200的微代码程序。流程接着进入方块1006。
在方块1006,微代码解出分支方向(即采用/不采用)以及目标地址。流程接着进入方块3208。
在方块3208,微代码判断BTAC 2802是否为该分支与切换密钥指令900/1200提供一预测。若有提供,流程接着进入决策方块3214;若无提供,流程接着进入图10的方块1008。
在决策方块3214,微代码藉由将BTAC 2802输送出的采用/不采用指标2708以及目标地址2706与方块1006所解出的方向以及目标地址判断BTAC 2802所做的预测是否正确。若BTAC 2802的预测正确,则流程结束;反之,则流程来到决策方块3216。
在决策方块3216,微代码判断此不正确的BTAC 2802预测有没有被采用。若已被采用,流程进入方块3222;若无,流程进入图10的方块1014。
在方块3222,微代码修复主密钥寄存器142的内容,因为BTAC 2802对分支与切换密钥指令900/1200所做的错误预测被采用,导致图31方块3104将错误的密钥数值载入其中。在一种实施方式中,密钥切换逻辑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的地址。此外,虽然已列举多种实施例调整BTAC 2702储存KRF索引结合分支与切换密钥指令900/1200使用,尚有其他实施方式是调整BTAC 2702储存安全存储区地址,以结合分支与切换密钥指令1500使用。
以上列举的本发明诸多实施方式仅是作为说明例使用,并非意图限制发明范围。相关计算机技术领域的技术人员可在不偏离本发明范围的前提下作出形式以及细节的诸多变形。例如,可以软件方式实现所述如函数、制作、模组化、模拟、说明、和/或测试此篇所讨论的设备与方法的方式。实现方式包括一般程序语言(例如,C、C++)、硬件描述语言包括Verilog HDL、VHDL…等、或其他可用的程序工具。所述软件可载于任何已知的计算机可读媒体,例如,磁带、半导体、磁盘、或光盘(例如,CD-ROM、DVD-ROM等)、网路、有线传输、无线或其他通讯媒体。所述设备与方法的实施方式可包含于半导体知识产权核心,例如一微处理器核心(例如以HDL实现),并可转成硬件以集成电路实现。此外,所述的设备与方法可由软、硬件结合方式实现。因此,本发明范围不应限定于所述任何实施方式,应当是以本发明的权利要求以及其等效技术界定。特别是,本发明技术可以一般用途计算机所采用的微处理器实现。值得注意的是,本领域技术人员可能不偏离权利要求所定义的发明范围、以所揭示的概念以及特殊实施例为基础、设计或修正提出其他架构产生与本发明相同的效果。

Claims (24)

1.一种微处理器,用以操作以解密加密指令数据为纯文字指令数据并安全地予以执行,避免加密指令数据在该微处理器外部被看见,该微处理器包含:
主密钥寄存器,包含多个主密钥;
选择逻辑电路,从多个主密钥中选取至少两个主密钥之组合;
密钥扩展电路,对所选取的主密钥执行至少一数学运算以产生一解密密钥;
指令译码电路,对该加密指令数据与该解密密钥执行一数学运算以对该加密指令数据进行解密而产生该纯文字指令数据;以及
提取单元,用以提取解密指令数据区块,其中每个该解密指令数据区块包含多个加密指令数据的提取数量,且每个提取数量包含多个指令数据位,其中每个该主密钥系至少为一个提取单元的提取数量。
2.如权利要求1所述的微处理器,其中该密钥扩展电路对所选取的主密钥以每个新提取的加密指令数据位的提取数量执行一新数学运算。
3.如权利要求1所述的微处理器,其中该选择逻辑电路以经由提取单元所提取的加密指令数据的每个新区块,来选取多个主密钥中的至少两者的一新组合。
4.如权利要求1所述的微处理器,其中该选择逻辑电路包含一第一多任务器与一第二多任务器,其中该第一多任务器用以从主密钥寄存器文档选取一第一主密钥,该第二多任务器用以从该主密钥寄存器文档选取一第二主密钥。
5.如权利要求1所述的微处理器,其中该选择逻辑电路使用该加密指令数据的提取地址的一部份以从该主密钥寄存器文档选取该主密钥。
6.如权利要求1所述的微处理器,其中该密钥扩展电路选择性地加上或减去两个被选取的主密钥。
7.如权利要求1所述的微处理器,其中该密钥扩展电路对所选取的主密钥中的至少一者利用一位移量进行旋转运算。
8.如权利要求7所述的微处理器,其中该位移量为该指令的提取地址的函数。
9.如权利要求8所述的微处理器,其中该位移量系该指令所在的提取数量的提取地址的位最低集合的函数,以使该位移量在每当加密指令数据的一新提取数量被提取时做改变。
10.如权利要求1所述的微处理器,其中该密钥扩展电路对所选取的主密钥中的至少一者利用一位移量进行旋转运算以产生旋转后的主密钥,并选择性地在所选取的主密钥中的另一个上加上或减去该旋转后的主密钥。
11.如权利要求1所述的微处理器,其中该指令加密电路利用该加密指令数据以异或操作于该解密密钥。
12.一种在微处理器中安全地执行加密指令数据的方法,该方法包含:
在储存于微处理器中的主密钥寄存器文档中,选取多个主密钥中的至少两者的一新组合;
在该微处理器中,对所选取的主密钥执行至少一数学运算以产生解密密钥;
在该微处理器中,对该加密指令数据进行解密成为纯文字指令数据;
于避免加密指令数据在该微处理器外部被看到的情形下,在该微处理器中安全地执行该纯文字指令数据;以及
提取解密指令数据区块,其中每个该解密指令数据区块包含多个加密指令数据的提取数量,且每个提取数量包含多个指令数据位,其中该主密钥的长度等于提取单元所提取区块的长度。
13.如权利要求12所述的方法,还包含:
利用加密指令数据位的每个新提取区块,对所选取的主密钥执行至少一数学运算。
14.如权利要求12所述的方法,包含经由该提取单元所提取的加密指令数据的每个新区块,来选取多个主密钥中的至少两者的一新组合。
15.如权利要求12所述的方法,包含一第一多任务器与一第二多任务器,其中该第一多任务器用以从该主密钥寄存器文档选取一第一主密钥,该第二多任务器用以从该主密钥寄存器文档选取一第二主密钥。
16.如权利要求12所述的方法,其中选取多个主密钥中的至少两者的一新组合系使用该加密指令数据的提取地址的一部份以从该主密钥寄存器文档选取该主密钥。
17.如权利要求12所述的方法,其中该至少一数学运算包含选择性地加上或减去两个被选取的主密钥。
18.如权利要求12所述的方法,其中该至少一数学运算包含对所选取的主密钥中的至少一者利用一位移量进行旋转运算。
19.如权利要求18所述的方法,其中该位移量为该指令的提取地址的函数。
20.如权利要求19所述的方法,其中该位移量系该指令所在的提取数量的提取地址的位最低集合的函数,以使该位移量在每当加密指令数据的一新提取数量被提取时做改变。
21.如权利要求12所述的方法,包含对所选取的主密钥中的至少一者利用一位移量进行旋转运算以产生旋转后的主密钥,并选择性地在所选取的主密钥中的另一个上加上或减去该旋转后的主密钥。
22.如权利要求12所述的方法,其中解密该加密指令数据系以异或操作于该解密密钥。
23.一种在微处理器中安全地执行加密指令数据的方法,该方法包含:
在微处理器中提取加密指令区块,其中每个该区块包含多个提取数量;
对每个提取区块,接收多个密钥,该密钥的长度等于提取单元所提取区块的长度;
对每个提取数量,对所选取密钥执行至少一密钥扩展数学运算以产生一解密密钥,其中该密钥扩展数学运算使得一解密密钥的长度至少为区块的长度;
在该微处理器中,利用该解密密钥对该加密指令区块进行解密以产生纯文字指令数据,且在该微处理器中安全地执行该纯文字指令数据,避免加密指令数据在该微处理器外部被看见;以及
其中该密钥扩展数学运算系提取数量的提取地址的函数。
24.如权利要求23所述的方法,其中接收多个密钥包含选取多个密钥为该区块提取地址的函数。
CN201710066089.5A 2010-05-25 2011-05-25 微处理器以及相关的操作方法 Active CN107015926B (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,785 2011-04-21
US13/091,487 2011-04-21
US13/091,828 2011-04-21
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,547 US8700919B2 (en) 2010-05-25 2011-04-21 Switch key instruction in a microprocessor that fetches and decrypts encrypted instructions
US13/091,547 2011-04-21
US13/091,641 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
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,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,698 US8683225B2 (en) 2010-05-25 2011-04-21 Microprocessor that facilitates task switching between encrypted and unencrypted programs
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
CN107015926A CN107015926A (zh) 2017-08-04
CN107015926B true CN107015926B (zh) 2020-08-07

Family

ID=44778550

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201710066089.5A Active CN107015926B (zh) 2010-05-25 2011-05-25 微处理器以及相关的操作方法
CN201611195519.5A Active CN107102843B (zh) 2010-05-25 2011-05-25 微处理器与其中安全执行指令的方法
CN201110136447.8A Active CN102221989B (zh) 2010-05-25 2011-05-25 微处理器以及相关的操作方法、以及加密、解密方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
CN201611195519.5A Active CN107102843B (zh) 2010-05-25 2011-05-25 微处理器与其中安全执行指令的方法
CN201110136447.8A Active CN102221989B (zh) 2010-05-25 2011-05-25 微处理器以及相关的操作方法、以及加密、解密方法

Country Status (1)

Country Link
CN (3) CN107015926B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9043613B2 (en) * 2013-06-28 2015-05-26 International Business Machines Corporation Multiple volume encryption of storage devices using self encrypting drive (SED)
US9753863B2 (en) * 2014-12-27 2017-09-05 Intel Corporation Memory protection with non-readable pages
US10210090B1 (en) * 2017-10-12 2019-02-19 Texas Instruments Incorporated Servicing CPU demand requests with inflight prefetchs
CN107612684B (zh) * 2017-10-20 2020-09-15 中博龙辉装备集团股份有限公司 基于国产化处理器平台专有指令集的数据对称加密方法
US11469890B2 (en) * 2020-02-06 2022-10-11 Google Llc Derived keys for connectionless network protocols

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1722046A (zh) * 2004-06-30 2006-01-18 富士通株式会社 安全处理器和用于安全处理器的程序
US7702100B2 (en) * 2006-06-20 2010-04-20 Lattice Semiconductor Corporation Key generation for advanced encryption standard (AES) Decryption and the like

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5926642A (en) * 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US6704871B1 (en) * 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
CN1737879A (zh) * 2004-08-20 2006-02-22 松下电器产业株式会社 加密指令处理设备
US7797745B2 (en) * 2004-12-22 2010-09-14 Electronics And Telecommunications Research Institute MAC security entity for link security entity and transmitting and receiving method therefor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1722046A (zh) * 2004-06-30 2006-01-18 富士通株式会社 安全处理器和用于安全处理器的程序
US7702100B2 (en) * 2006-06-20 2010-04-20 Lattice Semiconductor Corporation Key generation for advanced encryption standard (AES) Decryption and the like

Also Published As

Publication number Publication date
CN107102843A (zh) 2017-08-29
CN107015926A (zh) 2017-08-04
CN102221989B (zh) 2014-07-16
CN102221989A (zh) 2011-10-19
CN107102843B (zh) 2021-04-20

Similar Documents

Publication Publication Date Title
TWI511044B (zh) 解密密鑰產生裝置與方法
US9892283B2 (en) Decryption of encrypted instructions using keys selected on basis of instruction fetch address
TWI627556B (zh) 微處理器與其中安全執行指令的方法
CN107015926B (zh) 微处理器以及相关的操作方法
TWI437489B (zh) 微處理器以及相關的操作方法、以及加密、解密方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant