CN110659458A - 支持软件代码数据保密可信执行的中央处理器设计方法 - Google Patents
支持软件代码数据保密可信执行的中央处理器设计方法 Download PDFInfo
- Publication number
- CN110659458A CN110659458A CN201910956687.9A CN201910956687A CN110659458A CN 110659458 A CN110659458 A CN 110659458A CN 201910956687 A CN201910956687 A CN 201910956687A CN 110659458 A CN110659458 A CN 110659458A
- Authority
- CN
- China
- Prior art keywords
- code
- data
- chip
- address
- memory
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 238000013461 design Methods 0.000 title claims abstract description 12
- 238000012544 monitoring process Methods 0.000 claims abstract description 103
- 238000012545 processing Methods 0.000 claims abstract description 56
- 230000006870 function Effects 0.000 claims description 37
- 230000008569 process Effects 0.000 claims description 32
- 230000007246 mechanism Effects 0.000 claims description 30
- 230000001960 triggered effect Effects 0.000 claims description 22
- 238000005516 engineering process Methods 0.000 claims description 9
- 238000003860 storage Methods 0.000 claims description 6
- 238000002955 isolation Methods 0.000 claims description 5
- 238000013524 data verification Methods 0.000 claims description 3
- 230000009191 jumping Effects 0.000 claims description 3
- 238000012795 verification Methods 0.000 claims description 3
- 230000003139 buffering effect Effects 0.000 claims 1
- 230000006399 behavior Effects 0.000 description 12
- 238000012986 modification Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 8
- 230000036316 preload Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000009826 distribution Methods 0.000 description 3
- 241000700605 Viruses Species 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000005242 forging Methods 0.000 description 1
- ZXQYGBMAQZUVMI-GCMPRSNUSA-N gamma-cyhalothrin Chemical compound CC1(C)[C@@H](\C=C(/Cl)C(F)(F)F)[C@H]1C(=O)O[C@H](C#N)C1=CC=CC(OC=2C=CC=CC=2)=C1 ZXQYGBMAQZUVMI-GCMPRSNUSA-N 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/75—Protecting 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 by inhibiting the analysis of circuitry or operation
- G06F21/755—Protecting 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 by inhibiting the analysis of circuitry or operation with measures against power attack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Abstract
本发明提供一种中央处理器设计方法,属数字电路领域,方法包括:划分并保留内存地址范围用于片内添加只读存储器和随机存储器、限定片外内存中指令读写片内存储器内容时无效、片内持久存储私钥证书和安全内核代码、实现监控内存访问并触发地址监控事件中断、编写地址监控事件中断处理程序实现待访问数据的实时解密加密、实现将待执行指令预置到寄存器并从寄存器执行。在所述新型中央处理器上可实现可信计算系统并可实时装载执行含有加密密文形式代码段和数据段的应用程序,并同时保障应用程序的机密信息不被越权访问和泄露到外部总线,保护这类应用程序中机密信息的机密性、完整性、真实性。
Description
技术领域
本发明涉及几项中央处理器(CPU)的体系结构和功能设计,这些设计可用于保护应用软件的代码和数据的信息安全,主要属于数字电路领域。
背景技术
信息安全具有四个侧面:设备安全、数据安全、内容安全与行为安全。通过数据的加密可以保障数据的安全,比如SSL和TLS协议给出了保障网络通信中信道数据安全的方法。通过数据生产者对数据内容的签名认证可保证内容来源安全可靠。可信计算属于行为安全,据中国信息安全专家在《软件行为学》一书中描述,行为安全应该包括:行为的机密性、行为的完整性、行为的真实性等特征。在可信计算领域就是要保证计算数据的机密性,计算过程的完整性,计算结果的真实性。
目前支持可信计算最活跃的方式是通过安全芯片。TCG(国际可信计算工作组)定义了一套名为TPM的硬件安全芯片标准。国内也制定了一套对应的TCM安全芯片标准。安全芯片可以存储密钥以及作为一项计算机系统外设为系统提供加密认证功能,但是计算机系统中的通用中央处理器(CPU)才是信息的最终获得者和使用者,如果CPU的体系结构不对数据进行保密,或者CPU中执行不安全的应用程序,仍然存在数据泄露的隐患,只有安全的CPU才能弥补信息安全的最终短板。
现在很多系列的CPU通过对CPU的体系结构的扩展试图在可信的操作系统基础上建立可信执行环境(TEE,Trusted Execution Environment)如ARM架构CPU中的 TrustZone技术和Intel 80x86体系结构CPU中新增加的SGX技术。ARM TrustZone技术通过AMBA AXI总线和特定的 TrustZone 系统 IP 块在系统中进行扩展。该技术通过在CPU总线中新增的NS信号线来确定选通安全或普通的物理设备。并在CPU内部隔离程序在安全区域还是普通区域下执行,限制普通区域下的代码访问安全区域下的数据或设备的权限。现代Intel处理器加入了Intel Software Guard eXtensions (SGX)技术 ,允许应用创建enclave,enclave可以理解为一个数据运行的安全环境也被称为“小黑匣”。SGX对于软件的保护是将合法软件对于敏感数据(如加密密钥、密码、用户数据等)的操作封装在一个由内存地址范围限定的“小黑匣”中,在操作系统支持下限制这些数据的访问权限。但这两类CPU的安全技术都难以防止侧信道攻击。攻击者可以通过专门设计的硬件来截取或伪造CPU同设备之间的数据交换,攻击者也可以修改操作系统来绕过CPU的隔离机制,攻击者也可以通过在软件虚拟机或软件虚拟CPU中执行的方式来截获软件中代码和数据的内存分布并以此为基础进行进一步的攻击,这些攻击方式限制了上述技术的适用性和有效性。
目前使用广泛SSL/TLS协议能够保障数据在通信信道中保密传输,但网络传输的加密数据最终需要在用户终端中应用程序或浏览器中还原,如果用户终端应用程序或浏览器或操作系统不安全也无法保障通信数据的安全性,比如在浏览器中植入恶意插件就可以窃取用户的通信数据,信息安全还依赖于所执行的软件的安全性,为保障应用程序可信执行,常见的方法依赖于通过检验应用程序文件的开发者签名是否可信,并依赖于系统从初始化到最终执行应用软件所建立的环境的过程的层层验证所构成的信任链,但这一过程和方法太过于繁琐,存在太多的中间环节,难以配置和快速的适应环境的变化,只适合环境相对固定的专用场景,如软硬件系统的升级会使一些过分依赖旧版系统的安保手段出错或失效,太多的中间环节都可以因使用者行为而变得不可靠,而往往不能保证接触系统的人员的可信比如恶意或有不良习惯的用户。
目前很多安全技术都假设应用软件的使用者是值得信任的,但实际上应用软件的攻击者也是应用软件使用者中的一员,甚至一些普通用户为了获得一些灰色利益甚至主动的使用破解软件、外挂等软件去修改商业软件,这些非授权的修改对软件的正常使用起破坏作用,比如为某网络游戏添加外挂会破坏游戏公平性影响其他玩家的体验,又比如盗版用户修改程序绕开软件授权认证,这些修改行为最终也可能损害用户利益,比如攻击者可以据此向应用程序或用户操作系统植入木马和病毒以及恶意软件,并进一步截获用户输入的用户账户和密码或其他用户隐私信息,另一方面通常软件开发者只希望软件用户只是单纯的使用应用软件的功能,而不想不怀好意者特别是竞争对手去逆向分析软件代码或还原出软件的源代码截获软件的核心算法和制作方法和内部逻辑或篡改软件以实现某种不良目的,但软件使用过程中最无法保证的就是用户群体和用户使用行为的多样性,不可以假定使用应用程序的所有用户都是可信任的尤其是公开发售的用户数量巨大的软件会给破解该类软件的人带来巨大的灰色利益就更难以抑制大量的破解者的破解行为,如果没有CPU硬件体系结构和操作系统的顶层设计上为软件的安全提供有效支持,开发者试图在对外发行的软件中隐藏信息(比如隐藏密钥、隐藏机密数据、隐藏机密代码的算法逻辑)以及反篡改反外挂以及实施严密的版权保护是非常困难的,而目前就只能依靠代码的复杂性这种不可靠的方式,寄希望于攻击者的技术水平不高、没有耐心或运气不佳。
发明内容
由于外部设备侧信道攻击是建立在数据以明文在外设上传输的基础上。虚拟机侧信道攻击和对软件的篡改攻击都是建立在应用程序的代码和数据以明文形式存储和分发的基础上的。如果假设应用程序的使用者也是不可信任的,那么开发者就应该把一些机密的信息对应用程序使用者隐藏。如果应用程序以加密密文的形式存储机密代码和机密数据,并且保证机密代码和机密数据的明文不会出现在CPU以外的设备上或信道上,并且只有可信的授权的代码可以访问受保护的数据,就可以抵抗上述攻击。由于CPU核心只能执行以明文形式提交的代码,所以如果所述的代码和数据在内存中以密文形式存储,则所述的代码和数据被载入CPU核心前必须被解密还原为CPU能识别的明文指令和正确数据,但是现有的通用CPU体系结构只支持从外部总线的内存上去装载执行代码,所以用现有的通用CPU体系结构去执行上述带有密文形式代码和数据的应用程序则难以避免的需要将还原出的明文写回外部总线上的内存,这就存在泄露应用程序中保密代码和数据的风险。本发明通过对现有通用CPU体系结构做少量的修改,添加一些必要的且容易实现的功能模块,在兼容通用CPU大部分体系结构和工作方式的前提下设计出新型CPU,所述新型CPU支持实时解密出应用程序中以密文形式存储的应用程序的机密代码和机密数据的明文,且所述新型CPU支持在内部直接使用解密还原出的明文代码和明文数据,并且所述新型CPU对数据进行有效的隔离防止解密后的明文或解密密钥被泄露到所述新型CPU的外部总线。由于攻击者无法在所述CPU和所述应用程序存储方式下获知应用程序密文代码和密文数据的信息,也无对加密的部分进行逆向工程和跟踪调试,所以难以在修改应用程序后保证应用程序还能正常工作,所以以所述新型CPU体系结构为基础实现的可信计算系统就可以保障应用程序中密文形式存储的机密数据和机密代码不被攻击者逆向工程和截获篡改,保护这类应用程序的机密数据和代码的机密性、完整性、真实性,有效的支持可信计算和软件保护。本发明对CPU体系结构扩展方法具体包括:
所述CPU保留一定范围的物理内存地址用于所述CPU内部总线上的存储设备,这段内存地址称为“片内安全区”,并限定只有该保留物理地址范围内的代码才能读写该物理地址范围内的存储单元的数据,而其它内存地址保存的代码指令如果读写该保留物理地址范围内的数据将视为无效指令。也就是通过在代码执行机制中检测指令计数器(PC)的值和指令寄存器(IR)中指令和指令译码执行时的总线地址访问可以决定是否执行当前指令。这一机制称为“片内安全区访问限制”。
在所述CPU内部总线上集成一块片内只读存储器(称为:“片内安全ROM”),该片内只读存储器的物理地址在上述的“片内安全区”的保留物理内存地址范围内。这片只读存储器用于保存:“私钥证书库”和“安全内核代码”。“片内安全区访问限制”保证了片内只读存储器中数据在外部内存和外设中不可见,保证了片内安全区的内容无法被“片内安全区”地址范围外的用户输入的程序指令读取和输出。
在所述新型CPU内部总线上集成一块片内随机存储器(称为:“片内安全RAM”),该片内随机存储器的地址的物理地址在上述的“片内安全区”的保留物理内存地址范围内。“片内安全RAM”可以用于“安全内核代码”运行时建立堆栈并用于保存一些只对“安全内核代码”可见的机密数据,“片内安全区访问限制” 保证了“片内安全区”内数据在外部内存和外设中不可见。
在所述CPU体系结构中“引入监控内存地址访问并触发中断的机制”具体为:增加n组“地址监控寄存器”,每组寄存器内可设置监控的虚拟内存地址范围,并为每组“地址监控寄存器”增加控制寄存器和定义控制位,所述控制位用于设置 “地址监控寄存器”的“使能条件”,在使能条件满足和待执行指令所在地址或引用地址命中“地址监控寄存器组”的地址范围会触发“地址监控事件中断”,设置所述控制位可以在必要时“使能”或“禁用”“地址监控寄存器”的地址检查和中断触发。例如可以定义 “执行地址触发控制位”,它为1代表当指令计数器(PC)指向的地址范围命中“地址监控寄存器组”的地址范围会触发“地址监控事件中断”;还可以定义“总线读入触发控制位”和“总线写回触发控制位”,它们为1的情况下当指令寄存器(IR)中当前待执行的指令译码时,指令源操作数或目标操作数被执行电路译码计算出的待访问的内存总线地址命中“地址监控寄存器组”中设定的地址范围时会触发“地址监控事件中断”。CPU体系结构中需要增加寄存器来记录当前“地址监控事件中断”是因命中哪组“地址监控寄存器”的内存地址范围并因何原因或因何待执行的指令代码触发的,以便“地址监控事件中断”的中断处理程序能分析触发中断的原因并分类处理。通过监控内存地址的引用和访问情况并引发中断就可以实现当CPU访问到含有密文数据的内存地址时,触发“地址监控事件中断”并通过执行“安全内核代码”中该中断的中断处理程序就可以解密还原出CPU待执行的明文代码或当前指令引用的明文数据或把当前指令的结果加密成密文数据输出到外部内存。这里“地址监控事件中断处理程序”可以用纯软件的方式通过CPU自身算力来解密或加密数据,也可以通过CPU内部总线上的特定的元件的来加速解密或加密数据。
在所述CPU体系结构中“引入预置待执行指令代码机制”包括:增加“预置代码寄存器”预置代码寄存器中可设置任意一条机器指令所以该寄存器的长度为该CPU最长指令的长度。同时CPU体系结构中需要添加新指令: “中断返回并执行预置代码指令”这条指令会恢复指令计数器(PC)到中断前的代码地址,并执行“预置代码寄存器”中置入的代码。CPU在执行“中断返回并执行预置指令”时首先恢复了指令计数器(PC)的内容,这时会在这条指令执行过程中自动禁止因指令计数器(PC)中地址命中“监控地址范围”触发的中断(因先前解密当前待执行指令时已经命中过一次),但在将“预置代码寄存器”中代码送入IR寄存器中执行时,如果该指令译码执行时访问读写的内存总线地址如果也命中“监控地址范围”任然可以触发新的中断。“预置代码寄存器”的作用是当CPU当前执行到密文形式的代码段中代码时,会触发“地址监控事件中断”,该中断的中断处理程序会解密出待执行的明文代码,由于要保证该明文在CPU外部总线不可见,所以解密出的代码不能写回原内存位置只能通过放入“预置代码寄存器”中并在中断返回时执行。
将“安全内核代码”预写入“片内安全ROM”。“安全内核代码”是CPU厂商提供的一系列出厂前固定的,并具有读写、访问、调用、生成、处理“片内安全区”中数据或代码权限的程序集合,是用户代码在严格的权限限制下使用安全区中隐秘数据的接口,其中包含:“私钥证书非对称加密解密认证类函数”、 “会话密钥对称加密解密类函数”、 “地址监控事件中断处理程序”、 “加密段权证注册类函数”、“数据校验和权限检查类函数”、 “监控地址注册类函数”等。
通过在所述新型CPU上实现以上所述的体系结构扩展,就可以实现可信计算系统,该系统利用所述新型CPU装载执行机密代码和机密数据仅以对称加密后的密文形式在CPU外的介质中存储的一类应用程序;所述的CPU内置的私钥证书用于保密的获取此类应用程序中机密代码段和机密数据段的加密密钥、数据校验、权限限制等数据内容;所述新型CPU使用以上数据内容在运行时监控应用程序密文代码段和密文数据段所在的内存地址范围,通过实时触发所述的“地址监控事件中断”的机制并运用CPU本身的计算能力实时在CPU内部解密执行应用程序中的密文形式的代码和在CPU内部解密访问密文形式的数据以及将CPU输出到监控内存地址范围的数据先行加密;所述“片内安全区访问限制”限制所述CPU的指令在不同物理内存地址处的访问权限和限制CPU访存指令在不同执行上下文环境中的有效性,使系统只能使用CPU厂商提供的不可更改没有安全隐患的所述“内置安全代码”或在外部总线输出受限的环境中访问所述“片内安全区”内的隐秘数据,这就实现了对外部总线隔离解密出的明文数据和所述“片内安全区”中的隐秘数据,使这类数据仅在CPU内部储存,用户无法将此类数据越权输出到CPU外部总线;所述的“片内安全区访问限制”限制系统只能通过CPU内置安全内核代码访问应用程序的机密代码和机密数据,而安全内核代码在访问这些机密数据时会执行检查和校验,以禁止无权限代码、数据被篡改代码或非使用相同加密密钥加密的代码或其它进程的代码访问应用程序加密数据和加密代码。为防止篡改应用程序中代码来访问应用程序的加密段数据,规定只有使用相同“会话密钥”的加密代码段才具有访问相同“会话密钥”加密数据段的权限,加密代码段有访问该段本身数据的权限,非加密的代码仅可以跳转到或函数调用加密的代码段中的代码,非拥有相同“会话密钥”的代码段读取加密段的数据会抛出异常,“安全内核代码”中的“地址监控事件中断处理程序”在处理中断时会使用“片内安全RAM”中的数据检查触发中断的代码是否拥有访问加密段数据的权限。
所述CPU体系结构存在重复多次解密相同地址处数据的性能问题,通过缓存解密后的明文数据可以避免重复解密带来的性能问题。一种简单的扩展称为软CACHE方法,不需要修改上述的CPU体系结构,只需要修改“安全内核代码”,在“片内安全RAM”中分配一定的空间,建立一个以内存地址和进程PID为键的字典,该字典会缓存使用频率高的加密段数据的明文,当应用程序触发地址监控中断处理程序后,中断程序会首先去该字典中查找加密数据的明文,仅在字典中找不到时,才调用解密程序,并将解密的结果缓存到该字典。还有一种方法需要进一步修改CPU体系结构和CPU内的CACHE单元和CPU外部总线接口单元的工作方式称为“硬CACHE”方法。CPU体系结构中需要加入两类新的指令:“直写入内存指令”和“仅写入CACHE指令”。 “直写入内存指令”会把寄存器中的内容写入内存,CPU内部总线会用新增的信号线告诉片内CACHE不用把该数值记录入CACHE中。“仅写入CACHE指令”只会把数据写入CACHE中,如果CACHE是Write-through模式的会屏蔽对外部总线的内存写信号和数据输出,如果CACHE是Write-back模式的CPU内部总线会用新增信号线告诉CACHE单元不需要回写数据到内存。硬CACHE架构下“地址监控事件中断处理程序”会把解密出的明文用“仅写入CACHE指令”写入CACHE,而把需要回写到内存的数据的加密成的密文用“直写入内存指令”写入内存的同时用“仅写入CACHE指令”将该数据的明文写入CACHE。这样CACHE中始终保存的是明文。新型CPU记录内存读数据的状态,区分指令从总线获得的数据是来自于内部总线上的CACHE还是来自于外部总线上的内存,并且CPU对下条待执行的指令会预装载,如果待执行的指令所在的地址命中“地址监控寄存器”,则会继续判断预读入指令数据来自于CACHE 还是来自于内存,只有当数据来自于内存才发生中断。同样针对当前待执行指令需要访问监控内存地址的情况,会预执行该指令,并且只当预取内存数据时发现数据来自于内存而不是CACHE才会回退预执行的指令并引发“内存地址监控命中”中断。通过对加密段内存数据实施上述“软CACHE”或“硬CACHE”方法能有效的提高本所述CPU体系结构的效率,减少重复的加解密运算。
上述CPU体系结构修改方案中通过“片内安全区访问限制”虽然可以防止“片内安全RAM”和“片内安全ROM”数据的泄露但也限制了系统的可扩展性,进阶的方法有:在CPU中增加“进入外部总线输出隔离模式指令”,该指令会备份寄存器的值,并使CPU进入一种工作状态,该状态下CPU向外部总线(非安全区地址范围外的内存地址)输出数据的指令无效,在该状态下可忽略严格的“片内安全区访问限制” 使即使非安全区地址范围内的代码指令也可以访问“片内安全RAM”和“片内安全ROM”数据,执行“退出外部总线输出隔离模式指令”会退出该输出受限状态并恢复进入该模式前的寄存器值,这就避免了通过寄存器来窃取安全区内数据。通过这种方式可以让用户代码也拥有对安全区内数据进行自定义处理能力但不用担心泄露安全区内数据,这种方式能增强系统的可扩展性。
不论上述软CACHE还是硬CACHE的方式都不可避免的会出现重复的解密应用程序中的密文数据的情况,如果“片内安全RAM”的冗余空间足够大,就可以在应用程序加载时将一些密文存储的机密代码段和机密数据段整体解密后的明文缓存在“片内安全RAM”里面,并重新链接内存中应用程序,修正应用程序代码的内存地址访问,以便用 “片内安全RAM”里解密缓存的明文段代替了原应用程序的密文段,不用反复的解密,可以最大化提高运行效率;这种方式仅仅需要前述体系结构扩展中的CPU内置“片内安全ROM”和“片内安全RAM”以及实现“片内安全区访问限制”,不需要“地址监控事件中断”机制,只是由于这种方式也使应用程序的代码被注入了片内安全区并且绕过了“片内安全区访问限制”机制,需要防止注入“片内安全RAM”的用户代码越权访问“片内安全RAM”中隐秘数据,所以必须限制注入到“片内安全RAM”的用户代码访问的数据地址范围不能超越“片内安全RAM”分配给该段应用程序代码的地址范围, 由于用户代码的灵活性,用软件的方式检查这类用户代码访问地址是否越界难以实现,所以执行“片内安全RAM”中代码时,需要增加一组“安全区指令地址越界检查寄存器”,该组寄存器中记录了“片内安全RAM”中当前执行的用户代码的地址范围,CPU会使“片内安全RAM”中访问该地址范围外的片内安全区内地址的指令无效,由于执行“片内安全RAM”中代码必须首先设置该寄存器以保护安全区数据不被越权访问,所以规定内存中的应用程序直接跳转调用“片内安全RAM”中代码的指令无效,这类跳转或调用需要修改为经由“安全内核代码”中提供的“片内安全RAM缓存代码调用函数”间接的跳转或调用,而该函数会在执行“片内安全RAM”中代码前首先设置好“安全区指令地址越界检查寄存器”防止用户代码越界访问;同样由于“安全区访问限制”安全区外的代码不能直接访问安全区内数据,所以“片内安全RAM”整段缓存的数据也只能由同属一段的代码访问,应用程序作者编写需要加密并通过整段解密缓存到“片内安全RAM”的代码段时应避免其他段对该代码段中数据的跨段直接访问;这类在“片类安全RAM”整段缓存应用程序密文段的解密明文的方式的缺陷是应用程序需要大量和长时间独占一块“片类安全RAM”中的存储空间。
所述CPU体系结构中,如果用户代码可以跳转和调用“片内安全ROM”中任意地址执行,尽管用户不清楚“片内安全ROM”中代码的构成,只知道其公开的调用接口,但存在一种攻击行为表现在:攻击者书写的代码不通过公开的接口地址调用“片内安全ROM”中代码,而是试图通过使用不符合规范的地址试探调用“片内安全ROM”中代码,以达到越权访问的目的。为了使所述新型CPU更安全,可以添加逻辑电路,限制用户调用或跳转到“片内安全ROM”中代码的入口地址范围,实现仅允许安全区外代码通过有限几个暴露的接口地址和中断处理程序入口地址调用或跳转到“片内安全ROM”中代码执行。一种简单有效的方式是在“片内安全ROM”中划出一连续范围内存地址,称为“片内安全ROM的API入口区”,该内存地址范围内代码均为跳转到具体“安全内核代码”各API入口的代码或直接返回代码,并通过类似“安全区访问限制”的逻辑电路实现方式,限制片外内存中的指令代码不允许调用或跳转到“片内安全ROM的API入口区”之外的片内安全区其他地址执行。
本发明的有益效果在于:本发明扩展的CPU体系结构可以保护应用程序中的“机密数据和机密代码”,使其无法被除了“知道所述CPU内置私钥的所述CPU制造商”和“应用程序开发者”外的第三方截获,因为这些“机密数据机密代码”在CPU以外的介质中都以“密文形式”存储,并且在不能获得CPU的内置私钥的情况下无法获得解密这些加密数据的“会话密钥”。只有应用程序中“会话密钥”相同的加密程序段才能在CPU中运行时读取加密数据段中的加密数据。由于访问加密数据的代码段也是以密文的形式保存在CPU外部的介质或内存中,在攻击者没有该加密代码段“会话密钥”的前提下攻击者无法篡改应用程序中加密代码段的代码并使其符合原始“加密段注册权证”中的校验,也无法伪造“加密段注册权证”,使其包含解密“加密段”数据的正确“会话密钥”。所以本发明能用于保护应用程序中机密数据和机密代码的机密性和完整性及真实性。同现有的CPU安全技术SGX,TrustZone相比本发明可以防止侧信道攻击和虚拟机跟踪调试,同外置TPM或TCM安全芯片相比本发明不增加外部硬件系统总线电路的复杂性也同时可以防止通过串联监听总线通信的侧信道攻击,同上述技术相比本发明不单保护数据还保护应用软件的代码。本发明还可以应用于:防止应用软件机密代码被逆向工程和跟踪调试、防止实现软件功能的机密技术算法被逆向工程获取、安全的将机密数据如口令密钥证书等隐藏到应用软件中、防止软件被篡改以绕过版权保护、防止篡改应用程序伪造计算结果、防止游戏外挂截获和伪造游戏数据、将自校验代码写入加密代码段来防止木马和计算机病毒入侵使应用程序有自我保护能力。同时本发明所涉及的CPU体系结构修改不会过多的改变现有CPU的指令集也不会过多的增加CPU集成电路元件的数量和设计负担,支持本发明仅需要现有操作系统做少量的修改,可以非常平滑的兼容原有的产业生态系统。
附图说明
图1为本发明所述CPU体系结构扩展方法的CPU内外总线结构图,该图描述了新型CPU结构和各组成部分功能上的变化。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图1及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
实施例1
参阅附图1,设原有CPU体系结构有32位地址线,物理地址空间范围为0x00000000~0xFFFFFFFF,每一物理地址以字节Byte(8bit)为单位存储数据的数据,总地址空间为4GByte,扩展该CPU的新型CPU体系结构中设定地址空间中0xE0000000~0xFFFFFFFF共512MByte的地址空间为片内安全区保留地址空间,其中0xF8000000~0xFFFFFFFF这128M Byte地址空间分配给片内安全ROM,0xE0000000~0xF7FFFFFF这384M Byte分配给片内安全RAM,在CPU内部集成128M Byte OPTROM,地址空间0xF8000000~0xFFFFFFFF,这就是本例中的片内安全ROM,在CPU内部集成SRAM地址空间为0xE0000000~0xF7FFFFFF,这就是本例中片内安全RAM。在新型CPU封装时将事先准备好的“安全内核代码”和“CPU内置私钥证书库”合成的影像文件一次性写入片内封装的OPTROM。当CPU内部总线的地址线上出现0xE0000000~0xFFFFFFFF之间的地址时,CPU中的外部总线接口会被新增检查CPU内部总线地址线上数据的逻辑电路“关闭选通”,以防止CPU访问片内安全区保留地址空间的指令执行时,数据被泄露到外部总线。
在CPU指令的逻辑执行过程中添加“总线地址检查周期”,“总线地址检查周期”插入“总线读写周期”前,增加“片内安全区访问限制逻辑电路”,该电路在“总线地址检查周期”开始工作,该电路会检查当前指令解码电路解码后的结果,检查其访问的总线地址判断地址是否处于“片内安全区”保留地址范围,在本例中是0xE0000000~0xFFFFFFFF之间,同时该逻辑电路还检查程序计数器(PC)的值是否处于“片内安全区”保留地址范围,如果程序计数器(PC)的值不处于“片内安全区”保留地址范围但当前指令即将访问的总线地址却在该范围时,该逻辑电路取消当前指令的执行,并回退指令执行过程,同时让程序计数器(PC)指向下一条指令。这就实现发明内容中的“片内安全区访问限制”。
增加寄存器R_CA_S,R_CA_E,用于分别存储一对32位起止地址范围,此即为本例中的“地址监控寄存器”(定义的汇编助记符寄存器名中:R代表寄存器,CA代表Check Address地址检查,S代表开始地址,E代表结束地址),并添加向该寄存赋值的指令集和逻辑电路。R_CA_S存储监控地址范围的起始地址,R_CA_E存储监控地址范围的终止地址。增加寄存器R_CA_CS(_CS中C代表控制Control ,S代表状态State),其中R_CA_CS第0位代表“地址监控寄存器使能”;R_CA_CS的第1位代表“执行地址(当前PC指向地址)命中地址监控使能”,也就是当程序计数器(PC)中的地址数值在R_CA_S和R_CA_C之间时会触发“地址监控事件中断”;R_CA_CS第2位代表当指令寄存器(IR)中当前指令为从监控地址范围内读数据时,触发“地址监控事件中断”;R_CA_CS第3位代表当指令寄存器(IR)中当前指令为向监控地址范围内内存地址写数据时,触发“地址监控事件中断”。设计PC地址监控逻辑电路,当每次程序计数器(PC)中数据变化后会比较程序计数器(PC)中数据是否在R_CA_S,R_CA_E中保存的地址范围之间,如果是在该范围内就触发“地址监控事件中断”并在接下来的取值周期中忽略从内存中取指,令IR寄存器暂时以无操作指令填充,该PC地址监控逻辑电路触发中断的机制需要R_CA_CS中的第0位为1且第1位为1时才被“使能”并工作。当PC地址监控中断发生时会自动将R_CA_CS第5位设置为1,以告知中断处理程序是PC地址命中产生的中断。设计IR地址监控逻辑电路,该电路类似于上面所述的“片内安全区访问限制逻辑电路”,也是在“总线地址检查周期”中检查即将锁存到总线的地址,判断其范围是否在R_CA_S,R_CA_E中保存的地址范围之间,如果是在该范围内就触发“地址监控事件中断”并将当前执行的指令保存到新增加寄存器R_CA_EVENT_CODE(即“地址监控中断事件代码寄存器”),读内存数据的指令引发“地址监控事件中断”除了需要地址范围在监控地址范围内外,还需要R_CA_CS第0位和第2位为1,并且触发中断后需要自动就将R_CA_CS第6位置为1,写内存数据的指令引发“地址监控事件中断”除了需要地址范围在监控地址范围内外,还需要R_CA_CS第0位和第3位为1,并且触发中断后需要自动就将R_CA_CS第7位置为1。本例中还定义一新的寄存器R_CA_EVENT_ADDRESS用于记录引发地址监控事件中断的具体地址。此即为本例中实现发明内容中“引入监控内存地址访问并触发中断的机制”。
增加寄存器R_PRE_LOAD_CODE,此即为本例中的“预置代码寄存器”,并增加向该寄存器赋值的相关指令,增加指令IRET_RUN_PRE_LOAD_CODE,此即为本例中的“中断范围并执行预置代码”指令,该指令将从中断处理程序中返回,恢复指令计数器的值,并将R_PRE_LOAD_CODE寄存器的值载入IR中译码执行,并且在该指令执行过程中暂时禁用上述“PC地址监控逻辑电路”也就是暂时屏蔽禁用因PC命中而触发地址监控事件中断,该中断已经因先行执行过程中相同的PC地址命中触发过一次了,这时不能重复触发。此即为本例中实现发明内容中的“引入预置待执行指令代码机制”。
编写“地址监控事件中断处理程序”,该程序按以下方式实现:进入该程序首先赋值R_CA_CS第0位置其为0屏蔽掉地址监控检查避免在中断程序执行中监控内存地址;然后需要判断R_CA_CS的值。如果R_CA_CS第5位为1,代表因程序计数器(PC)命中监控地址引发的中断,代表当前执行到加密的代码段,就从R_CA_EVENT_ADDRESS中获得代码所在内存地址,并根据加密算法的对齐和长度规定,取该地址附近的内存中的一段加密数据,从片内RAM中获取该加密段事先注册的“会话密钥”,并用此密钥解密数据,获得解密出的明文代码赋值给寄存器R_PRE_LOAD_CODE,然后调用IRET_RUN_PRE_LOAD_CODE。如果R_CA_CS第6位为1,代表当前指令读取监控范围的内存中的加密数据,这时中断处理程序读入R_CA_EVENT_ADDRESS记录的地址所指向的内存中的密文数据,并从注册的片内RAM数据中获取“会话密钥”并解密出该数据的明文,中断处理程序分析R_CA_EVENT_CODE中指令格式,分析应该将读入的结果放入那个目标寄存器中,中断处理程序将解密出明文写入到该寄存器对应的堆栈地址以便于中断返回时从堆栈中将该数值恢复到该目标寄存器,然后调用中断返回。如果R_CA_CS第7位为1,代表当前指令向监控范围的内存中写入数据,中断处理程序分析R_CA_EVENT_CODE中指令格式,分析待写入数据来源于那个源寄存器,中断处理程序从堆栈中获得该源寄存器的数据,由于加密算法往往不只加密1个字节数据而是同时加密固定长度的一段数据,所以还需按加密算法的对齐标准读入R_CA_EVENT_ADDRESS记录地址附近的内存数据,并先行解密,并将待写入的数据置换这段解密出数据中相应偏移处的数据,并再次用“会话密钥”加密这段数据,中断处理程序将加密后的密文按加密算法的对齐要求写回R_CA_EVENT_ADDRESS寄存器记录的地址附近相关的内存区域,然后调用中断返回。退出中断处理程序前都需要将R_CA_CS第0位复置为1以便于恢复内存地址监控。此即为本例中实现发明内容中“通过地址监控事件中断处理程序实现实时解密加密”。
通过以上实例的CPU体系架构扩展设计就可以让该实例的CPU在硬件上支持运行机密代码和机密数据以密文形式保存和分发的应用程序了。为了更清楚的理解以上CPU修改实例是如何支持具体应用程序执行和建立可信计算环境的,下面给出该新型CPU的工作模型和工作流程:
首先应用程序开发者在编译完所开发应用程序后,应使用本例CPU提供的“加密应用程序链接器”软件,指定“会话密钥”和待加密的段的段名,所属链接器会用本例CPU内部使用的“对称加密算法”将应用程序中该段加密成密文,所述链接器还会将加密段的“段名”,“会话密钥”,“段数据校验码”,“段权限”合成的数据结构,用 本例CPU的“CPU内置私钥证书”对应写入了链接程序的“公钥”进行加密,生成“加密段注册权证”,并用本例中修订操作系统所新制定的数据结构将加密段的数据以及“加密段注册权证”和原应用程序中无需加密的段部分一起打包到“新型加密可执行文件”中。
载入执行该“新型加密可执行文件”的操作系统需要为此类文件格式定义新的扩展名比如“.EEX”和编写新的装载程序,以及修改进程管理部分以支持该类应用程序的进程管理。
所述操作系统装载此类含有加密段的“新型加密可执行文件”时,在装载加密的数据段和代码段时会调用“片内安全ROM”中的“监控地址注册函数”将加密段的内存地址范围以操作系统为该“新型加密可执行文件”的进程分配的进程PID为主键,记录到“片内安全RAM”中“各进程地址监控范围表”中。
同时还需要调用“加密段权证注册函数”加载该“新型加密可执行文件”的加密段的“加密段注册权证”,该函数会调用CPU“片内安全ROM”中的”私钥证书非对称加密解密认证函数库”中解密函数并利用“片内安全ROM”中保存的“CPU内置私钥证书”解密“加密段注册权证”,并将解密得到的“段名”,“会话密钥”,“段数据校验码”,“段权限”信息以PID为主键记录到“片内安全RAM”的“各进程监控地址范围密钥、校验、权限表”数据结构中。
所述修订后的操作系统在装载“新型加密可执行文件”的加密段时需要校对加密段的校验码是否同加密段中数据一致,不一致就抛出异常提示应用程序加载失败。
当应用程序加载成功后,所述修订后的操作系统切换到“新型加密可执行文件”的进程时,会调用“片内安全ROM”中代码将“片内安全RAM”中记录的该“新型加密可执行文件”的加密段的内存地址范围载入到 “地址监控寄存器”R_CA_S和R_CA_E中并设置R_CA_CS中位使“地址监控事件中断机制”正常工作。
这样当应用程序跳转执行到“新型加密可执行文件”内存映像中“加密段”所在的内存地址,就会触发中断执行“片内安全ROM”中的“地址监控事件中断处理程序”,该中断程序会在“片内安全RAM”中查找该进程PID和监控地址对应的“会话密钥”并调用“片内安全ROM”中“对称加密解密函数库”中的解密函数解密内存中代码密文到R_PRE_LOAD_CODE(“预置代码寄存器”)并调用IRET_RUN_PRE_LOAD_CODE(“中断返回并执行预置指令”)指令使该加密段中的代码得以解密和执行。
如果即将执行的指令代码需要读取“新型加密可执行文件”内存映像中“加密段”所在内存地址范围中的数据到一个目标寄存器按上述实例CPU体系结构同样会触发中断,上述实例的“地址监控事件中断处理程序”会在“片内安全RAM”中查找该进程PID和监控地址对应的“会话密钥”,并用于解密从R_EVENT_ADDRESS中锁存地址附近按加密算法对齐规则读取的一段密文数据,并分析R_EVENT_CODE(“地址监控事件代码寄存器”)中保存的指令代码将解密数据写入正确的堆栈偏移处以使解密结果在中断返回后正确的设置到R_EVENT_CODE中指令要写入的目标寄存器中。
如果即将执行的指令代码需要将源寄存中数值写入到“新型加密可执行文件”内存映像中“加密段”所在内存地址范围中的某个内存地址处,按上述实例CPU体系结构也会触发相应的中断,中断程序会分析“地址监控事件代码寄存器”中保存的触发中断的指令,取出待写回内存的源寄存器数据,在“片内安全RAM”中查找该进程PID和监控地址对应的“会话密钥”,并按加密算法的对齐标准读入R_CA_EVENT_ADDRESS记录地址附近的内存数据,并先行解密,并将待写入的数据置换这段解密出数据中相应偏移处的数据构成新的一段明文数据,然后对这段数据用查到的“会话密钥”加密成密文,写回按加密算法数据对齐的方式写回R_CA_EVENT_ADDRESS保存的内存地址附近的存储区域。
由于本例CPU体系结构只实现了一组“地址监控寄存器”只支持了一个进程一个加密段,所以不需要复杂的权限检查,只需要在“地址监控事件中断处理程序中”检验访问加密数据的指令是否来源于寄存器锁存的监控地址范围,在监控范围外的指令访问了监控范围内的数据时抛出异常,就可实现加密段的权限检查。当然本发明也同样支持实现多组地址监控和加密段间跨段数据访问的情况,发明内容部分有相应的权限检查规则。
通过上述工作模型可发现,本例新型CPU在修订的操作系统的支持下可以支持运行含有一个密文代码段的“新型加密可执行文件”,这就可以使开发者将机密数据隐藏到加密段中以实现一些信息安全需求,例如:将软件用户名和口令验证的代码部分的代码段加密就可以防止攻击者从软件逆向工程中获取应用程序探测用户口令;又如在游戏应用中将生命值和伤害的计算部分所在的代码段加密就可以防止用户用游戏工具跟踪到这些数据并在内存中锁定这些数据去实现无限生命的作弊行为;又如可以将软件的序列号和注册码验证的算法和软件保护的代码隐藏到加密段中防止破解者通过反向工程得到软件保护的流程制作出软件破解器。
实施例2
本例在实施例1的新型CPU结构的基础上继续添加逻辑电路,以充分利用CPU内部CACHE,减少加密段数据重复解密的频率,提升效率。本例具体实施方法如下:
本例CPU内部CACHE以Look-aside结构同CPU核心相连,本例CPU使用Write-through模式实现向内存的数据写回,CPU内部总线增加2条控制线,一条称为“CACHE关闭控制线”,该控制线通过逻辑电路与片内CACHE“片选接口”相连,该控制线输出1(高电平信号)时,内部CACHE单元关闭;一条称为“外部总线关闭控制线”,该控制线通过逻辑电路与“CPU外部接口单元”的“片选接口”相连,当输出为1(高电平信号)时,外部总线接口部件接口关闭。将CPU指令集中向内存中写数据的指令增加两类,一类为MOV_MEM_NO_CACHE也即是“直写入内存指令”,这类指令会在总线写周期前使“CACHE关闭控制线”中输出1,这样数据就不会被写入CACHE而是直接输出CPU外部总线的内存中;一类为MOV_CACHE_NO_MEM也即是“仅写入缓存指令”,这类指令将使“外部总线关闭控制线”输出1,从而在总线写周期时只向CACHE写入数据而不向外部总线输出数据。
本例CPU在读数据周期会根据内部总线上反映的各级CACHE命中的情况记录数据来自于CACHE还是来自于外部总线的内存,用 “写数据总线地址检查周期”和“读数据总线地址检查周期”来替代实施例1中的“总线地址检查周期”,将指令执行中读数据和写数据指令的“总线地址检查周期”分开,“写数据总线地址检查周期”在CPU指令执行周期中的顺序不变,但“读数据总线地址检查周期”放在“读总线周期”之后,“读数据总线地址检查周期”需要判断读入数据的来源是来自于CACHE还是来自于外部总线,只有数据来自于外部总线才会触发“地址监控事件中断”。同样修改实施例1中PC地址监控逻辑电路执行的时机,使其放在从总线上取值周期之后,以便判断指令代码来自于CACHE还是外部总线中的内存,只有当指令来自于外部总线中的内存才会因程序计数器(PC)命中监控地址触发“地址监控事件中断”。
修改实施例1中“地址监控事件中断处理程序” 以便于把CPU需要读取的内存中的密文数据解密出的数据“明文”用MOV_CACHE_NO_MEM(“仅写入CACHE指令”)写入CACHE,而将CPU需要输出到外部总线内存的数据加密并调用MOV_MEM_NO_CACHE (“直写入内存指令”)写入“密文”的同时也把该数据的“明文”用MOV_CACHE_NO_MEM(“仅写入CACHE指令”)写入CACHE。
在实施例1的基础上通过本实施例对实施例1的上述修改就可以使本例中新型CPU的内部CACHE缓存当前时间段频繁使用的外部内存中加密段数据的“明文”数据,在CPU访问加密的内存段中数据时,在CACHE命中的前提下,因为CACHE中已经缓存了所需数据的“明文”故可以直接从CACHE中获取数据的“明文”而不需要频繁重复的触发“地址监控事件中断”来解密获取“明文”,可以显著提高系统的运行效率。
实施例3
本例有别于实施例1,2不使用“地址监控事件中断机制”而用本发明所述的另外一种方法“加密段整段解密缓存机制”来实现。本例具体实施方法如下:
本例延续实施例1的设定将在CPU内部集成128M Byte OPTROM,地址空间0xF8000000~0xFFFFFFFF,作为片内安全ROM;在CPU内部集成SRAM地址空间为0xE0000000~0xF7FFFFFF,作为片内安全RAM。0xE0000000~0xFFFFFFFF共512M Byte的地址空间为片内安全区保留地址空间。仿照实施例1实现“片内安全区访问限制”,也即是规定只有在0xE0000000~0xFFFFFFFF地址范围内的指令代码才可以读写0xE0000000~0xFFFFFFFF地址范围内的数据,在0x00000000~0xDFFFFFFF地址范围内的指令如果读写xE0000000~0xFFFFFFFF地址范围内的数据,则CPU执行该指令时无效。
本例中还增加进一步的访问限制,就是0x00000000~0xDFFFFFFF地址范围内的指令不能直接跳转到0xE0000000~0xF7FFFFFF地址范围内的代码执行,可以通过添加匿名寄存器在程序计数器(PC)的值变化时缓存原程序计数器(PC)的值,并添加逻辑电路检查程序计数器(PC)值是否是从0x00000000~0xDFFFFFFF地址范围变化到0xE0000000~0xF7FFFFFF地址范围,如果是就恢复程序计数器(PC)的值到此变化前的值并抛出异常。
本例中CPU体系结构增加一对寄存器R_SAFE_RAM_CA_S(“安全区指令地址越界检查起始地址寄存器”)和R_SAFE_RAM_CA_E(“安全区指令地址越界检查终止地址寄存器”),可以通过赋值将0xE0000000~0xF7FFFFFF之间的内存地址中选择一个区域将该区域的起止地址存入这对寄存器,CPU增加逻辑电路使当R_SAFE_RAM_CA_S的数值到R_SAFE_RAM_CA_E的数值范围的内存地址中的代码执行时,如果当前指令访问0xE0000000~0xF7FFFFFF之间但在R_SAFE_RAM_CA_S中数值~R_SAFE_RAM_CA_E中数值代表的内存地址范围之外的数据时该指令无效并抛出异常。
在“片内安全ROM”内置入“解密内存段并在片内安全RAM中整段缓存函数”,该函数调用需要以“新型加密可执行文件”进程的加密段的起始内存地址和加密段的“加密段注册权证”数据,以及该加密段的“段内重定位符号表”数据为参数,该函数利用CPU内置私钥证书首先从“加密段注册权证”数据中获得“会话密钥”,然后该函数在片内安全RAM的剩余空间足够的情况下将“新型加密可执行文件”进程中的整个加密段用“会话密钥”解密缓存到“片内安全RAM”内,并将缓存该段数据占用的地址范围记录到“片内安全RAM”中的“各进程整段解密缓存地址范围表”中,同时该函数会利用段内重定位符号表修正该该段内程序代码的数据寻址,并向调用代码返回该加密段在“片内安全RAM”中的地址范围。修订的操作系统的“新型加密可执行文件”装载程序在装载该文件时就可以调用“解密内存段并在片内安全RAM中整段缓存函数”整段的把该文件的加密段整段的缓存到“片内安全RAM”中,并用返回的地址,对原应用程序跳转调用该段中代码的部分进行修改,因为进入“片内安全RAM”内执行代码需要先设置“安全区指令地址越界检查起止地址寄存器”本例中为R_SAFE_RAM_CA_S和R_SAFE_RAM_CA_E以防止用户代码越权访问安全区中机密数据,所以通过硬件电路限制不允许安全区范围外的代码直接调用或跳转到“片内安全RAM”中缓存的代码,所以应将原有的直接调用或跳转到被整体缓存了的密文代码段执行的代码修改为使用“片内安全ROM”的“片内安全RAM缓存代码调用函数”间接的调用和跳转到整段缓存到“片内安全RAM”中的加密段对应的明文代码地址处执行。而该“片内安全RAM缓存代码调用函数”在跳转到“片内安全RAM”中代码执行前,会查阅 “片内安全RAM”中的“各进程整段解密缓存地址范围表”,找到“片内安全RAM”中整段缓存用户加密段数据的地址范围,并将地址范围设置入R_SAFE_RAM_CA_S和R_SAFE_RAM_CA_E,以便于跳转到“片内安全RAM”中缓存的用户代码段执行时能限制该段用户代码中代码的内存访问范围,防止该段代码越权访问“片内安全区”中该段代码地址范围外的其他保密数据。
本实施例中新型CPU体系结构不是用类似实施例1中的通过监控地址访问触发中断一边执行一边解密的方式,而是修订的操作系统在加载“新型加密可执行文件”时就整个的解密了文件中包含的密文段,并整段的缓存到CPU内部的“片内安全RAM”中,因此数据不用反复的加密解密,其执行效率是本发明所有给出方式中最高的,这一实例适用于软件需要保护机密代码段的机密性又同时需要保持该段的执行效率的情形。这一实例的缺点是由于“片内安全RAM”容量有限而其中数据为防止泄露不能支持“内存页换入换出”,所以该区域的存储空间在CPU运行时是每加载一个“新型加密可执行文件”的加密段就用一份少一份的,系统无法同时承载大量的需要整段缓存加密段的应用程序进程同时运行,只适合系统中运行少数几个“新型加密可执行文件”进程的情形。
Claims (9)
1.一种中央处理器设计方法,其特征是:实现支持包含密文机密代码段和/或密文机密数据段的新型应用程序安全装载、保密执行、安全保护的硬件机制;
所述密文机密代码段是指应用程序的代码段以保密密钥和对称加密算法加密处理后的密文形式编码和存储所形成的代码段;
所述密文机密数据段是指应用程序的数据段以保密密钥和对称加密算法加密处理后的密文形式编码和存储所形成的数据段;
所述安全装载的硬件机制是指所述新型中央处理器在特定操作系统支持下在装载所述新型应用程序的同时通过硬件机制保障密文代码或密文数据的保密密钥等机密信息被正确和保密的传入所述新型中央处理器内部;
所述保密执行的硬件机制是指所述中央处理器在特定操作系统支持下可以执行所述新型应用程序并通过硬件机制来保障密文机密代码段和密文机密数据段中数据在执行过程中解密出的明文只在所述中央处理器内部使用不会出现在中央处理器的外部总线;
所述安全保护的硬件机制是指所述新型中央处理器具有保护所述新型应用程序中的机密信息所对应明文信息的硬件机制,使其无法被非所述应用程序保密密钥的知情者也非所述中央处理器内部私钥的知情者的用户通过编写执行指令代码或外部总线监听的方式越权访问。
2.根据权利要求1所述的中央处理器设计方法,其特征是,实现支持权利要求1所述包含密文机密代码段和/或密文机密数据段的新型应用程序安全装载、保密执行、安全保护的一系列硬件机制,具体包括:划分并保留内存地址范围用于片内存储器、片内添加只读存储器、片内添加随机存储器、添加逻辑电路限定片外地址处指令无法读写片内存储器中数据、向片内只读存储器中存入私钥证书和安全内核代码、添加逻辑电路实现监控内存地址访问请求并触发地址监控事件中断的机制、通过地址监控事件中断处理程序实现待访问数据的实时解密加密、添加逻辑电路实现将待执行指令写入寄存器并从寄存器执行的机制;
其中:划分并保留内存地址范围用于片内存储器,是指,所述新型中央处理器保留一定范围的物理内存地址用于中央处理器内部总线上的存储设备,这段内存地址范围称为“片内安全区”,片内添加的只读存储器被称为“片内安全ROM”,片内添加的随机存储器被称呼为“片内安全RAM”,地址范围都在“片内安全区”地址范围内;
添加逻辑电路限定片外地址处指令无法读写片内存储器中数据,是指,通过添加逻辑电路来限定“片内安全区”地址范围外的外部总线中内存地址处的代码指令,如果读写“片内安全区”物理地址范围内的数据,则该指令不会执行等同于无操作指令,这一指令限制机制被称为“片内安全区访问限制”;
向片内只读存储器中存入私钥证书和安全内核代码,是指,在“片内安全ROM”内持久保存用于向中央处理器内部保密传递数据的非对称加密技术使用的“CPU内置私钥证书”和“安全内核代码”,“安全内核代码”是指所述新型中央处理器制造者提供的一系列出厂前固定的,并具有读写、访问、调用、生成、处理“片内安全区”中数据或代码权限的程序集合,是用户代码在严格的权限限制下使用安全区中隐秘数据的接口;
添加逻辑电路实现监控内存地址访问请求并触发地址监控事件中断的机制,是指,在中央处理器核心中设计增加一组或多组“地址监控寄存器”,每组寄存器内可设置监控的内存地址范围,并为每组“地址监控寄存器”增加控制寄存器和定义控制位,这类控制位用于设置 “地址监控寄存器”的“使能条件”,在使能条件满足和待执行指令所在地址或引用地址命中“地址监控寄存器组”的地址范围会触发“地址监控事件中断”,设置控制位可以在必要时“使能”或“禁用”“地址监控寄存器”的地址检查和中断触发,同时可增加寄存器来记录当前“地址监控事件中断”是因命中哪组“地址监控寄存器”的内存地址范围并因何原因或因何待执行的指令代码触发的;
通过地址监控事件中断处理程序实现待访问数据的实时解密加密,是指,通过 “地址监控事件中断”的中断处理程序分析触发中断的原因,调用安全内核代码中的解密或加密函数或访问特定内部总线单元,处理内存或寄存器或指令操作数中数据,以便于译码并装载执行该中断触发前待执行的尚未解密的指令密文,或准备该中断触发前待执行指令所需要引用的等待读入或等待写回的数据;
添加逻辑电路实现将待执行指令写入寄存器并从寄存器执行的机制,是指,在中央处理器核心中设计添加“预置代码寄存器”该寄存器中可被赋值语句设置一条待执行的机器语言指令代码,增加一类新指令“中断返回并执行预置指令代码”指令,此类指令会恢复指令计数器到中断前待执行的代码地址,并执行“预置代码寄存器”中被植入的代码,作用是当所述新型中央处理器中当前待执行的代码是以密文形式读入内存的代码时,在触发的中断处理程序中可解密出待执行的明文代码,为防止泄露,该代码不能写回外部总线和原内存地址只能通过放入“预置代码寄存器”中执行来模拟代码在原内存地址处执行。
3.一种根据权利要求2所述的中央处理器设计方法支持实现的软件代码数据保密可信执行的方法,其特征是,包括:权利要求2所述新型中央处理器装载执行权利要求1所述包含密文机密代码段和/或密文机密数据段的应用程序;权利要求2所述的“CPU内置私钥证书”用于保密的获取此类应用程序中机密代码段和机密数据段的加密密钥、数据校验、权限限制等数据内容;权利要求2所述新型中央处理器使用以上数据内容在运行时通过实时触发权利要求2所述的“地址监控事件中断”的机制实时解密执行应用程序中的密文形式的代码和访问密文形式的数据;通过权利要求2所述“片内安全区访问限制”限制所述新型中央处理器指令在不同物理内存地址处的访问权限和限制所述新型中央处理器指令在不同执行上下文环境中的有效性,使系统只能使用所述新型中央处理器提供的不可更改没有安全隐患的内置安全代码或外部总线输出受限的环境中访问权利要求2所述“片内安全区”内的隐秘数据,以便对外部总线隔离解密出的明文数据和权利要求2所述“片内安全区”中的隐秘数据,使这类数据仅在所述新型中央处理器内部储存防止此类数据被越权输出到所述新型中央处理器外部总线;权利要求2所述的“片内安全区访问限制”限制系统只能通过权利要求2所述“安全内核代码”访问应用程序的机密代码和机密数据,在访问这些机密数据时安全内核代码会执行检查和校验,以禁止无权限代码、数据被篡改代码或非使用相同加密密钥加密的机密代码或其它进程的代码访问应用程序机密数据和机密代码。
4.一种如权利要求2所述的中央处理器设计方法,其特征是:为改进权利要求2所述体系结构的效率,减少数据频繁的重复的解密,优化“内存监控事件中断处理程序”中代码实现缓存解密后明文的机制,为加密数据的运行时解密出的明文在如权利要求2所述的“片内安全RAM”中分配空间,建立以内存地址和进程标识符PID为键的字典,该字典缓存运行时解密出的明文,在解密时优先从此字典中查找以提高解密效率。
5.一种如权利要求2或4所述的中央处理器设计方法,其特征是:为改进权利要求2所述体系结构的效率,减少数据频繁的重复的解密,减少权利要求2所述的“地址监控事件中断”触发频率,引入新增指令架构和逻辑电路以支持通过所述新型中央处理器内部的CACHE单元缓存解密后明文的机制,这些指令包括,“直写入内存指令”和“仅写入CACHE指令”,“直写入内存指令”会把数据内容直接写入所述新型中央处理器外部总线连接的内存中而不写入所述新型中央处理器片内的CACHE, “仅写入CACHE指令”会把数据仅仅写入所述新型中央处理器片内CACHE单元而不输出到所述新型中央处理器外部总线,在所述新型中央处理器核心中设计增加逻辑电路以记录内存访问的数据获取渠道,区分来自于CACHE单元还是外部内存,以支持当读取的代码或数据完全来自于CACHE时可以不触发“地址监控事件中断”,并且修改权利要求2所述“地址监控事件中断处理程序”以便于把所述新型中央处理器需要读取的内存中的密文数据解密出的数据明文用“仅写入CACHE指令”写入CACHE,而将所述新型中央处理器需要输出到外部总线中内存的数据加密并调用“直写入内存指令”写入密文的同时也把该数据的明文用“仅写入CACHE指令”写入CACHE。
6.一种如权利要求2或4或5所述的中央处理器设计方法,其特征是:为改进权利要求2所述体系结构“安全内核代码”的可扩展性,以允许“安全内核代码”可以在有效的安全隔离机制下调用操作系统代码,在所述新型中央处理器中设计增加“进入外部总线输出隔离模式指令”,该指令会备份寄存器的值,并使所述新型中央处理器进入一种工作状态,该状态下所述新型中央处理器向外部总线中安全区保留地址范围外的内存地址输出数据的指令无效,在该状态下所述新型中央处理器可忽略权利要求2所述的 “片内安全区访问限制”,使安全区地址范围以外的代码指令在所述新型中央处理器处于该禁止向所述新型中央处理器外部总线输出数据的状态的前提下也可以访问“片内安全RAM”和“片内安全ROM”数据,执行“退出外部总线输出隔离模式指令”会退出该输出受限状态并将进入该模式前备份的寄存器值还原到寄存器,同时所述新型中央处理器在非所述输出受限状态继续严格遵守权利要求2所述的“片内安全区访问限制”。
7.一种如权利要求1所述的中央处理器设计方法,其特征是:实现权利要求2所述中央处理器设计方法中的划分并保留内存地址范围用于片内存储器、片内添加只读存储器、片内添加随机存储器、添加逻辑电路限定片外地址处指令无法读写片内存储器中数据、向片内只读存储器中存入私钥证书和安全内核代码,并在所述中央处理器核心中设计增加“安全区指令地址越界检查寄存器”,该寄存器用于限定权利要求2所述的“片内安全RAM”中应用程序代码的内存访问,使访问“片内安全区”保留内存地址范围内数据的指令在访问地址超出该寄存器中存储的地址范围时无效;在所述中央处理器核心中设计增加访问限制电路,禁止从安全区外代码直接跳转到“片内安全RAM”中代码执行,使这类语句无效,但不禁止安全区外代码调用“片内安全ROM”中的“安全内核代码”;在“片内安全ROM”中的“安全内核代码”中添加“解密内存段并在片内安全RAM中整段缓存函数” 、“片内安全RAM缓存代码调用函数”;其中“解密内存段并在片内安全RAM中整段缓存函数”系由装载应用程序的操作系统程序调用,它负责将应用程序在内存中用密文保存并设置了“需要整体解密缓存标记”的密文代码段,调用“安全内核代码”中解密函数整体解密后存储到“片内安全RAM”,并返回该段在“片内安全RAM”的地址给调用它的应用程序装载程序以便于装载程序重新链接应用程序以修正相关的地址访问和代码调用;“片内安全RAM缓存代码调用函数”用于“片内安全区”保留地址外的程序通过“片内安全ROM”中的该函数间接的调用“片内安全RAM”中缓存的代码,并且该函数在执行时会将调用到的“片内安全RAM”中代码所在代码段的地址设置到“安全区指令地址越界检查寄存器”,以阻止“片内安全RAM”中代码执行时越权访问隐秘数据。
8.一种如权利要求2或4或5或6所述的中央处理器设计方法,其特征是包括:权利要求7所述的中央处理器设计方法的特征。
9.一种如权利要求2或4或5或6或7或8所述的中央处理器设计方法,其特征是包括:增加逻辑电路实现仅允许安全区外代码通过有限几个暴露的接口地址和中断处理程序入口地址调用或跳转到“片内安全ROM”中代码执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910956687.9A CN110659458A (zh) | 2019-10-10 | 2019-10-10 | 支持软件代码数据保密可信执行的中央处理器设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910956687.9A CN110659458A (zh) | 2019-10-10 | 2019-10-10 | 支持软件代码数据保密可信执行的中央处理器设计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110659458A true CN110659458A (zh) | 2020-01-07 |
Family
ID=69040490
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910956687.9A Pending CN110659458A (zh) | 2019-10-10 | 2019-10-10 | 支持软件代码数据保密可信执行的中央处理器设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110659458A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111143821A (zh) * | 2019-12-20 | 2020-05-12 | 上海爱信诺航芯电子科技有限公司 | 处理器及其原生MPU的SBoot处理方法 |
CN111221629A (zh) * | 2020-01-09 | 2020-06-02 | 上海沄界信息科技有限公司 | 计算资源使用量量化方法及装置 |
CN112380503A (zh) * | 2021-01-14 | 2021-02-19 | 北京东方通软件有限公司 | 一种保护核心程序及内存的方法 |
CN112446064A (zh) * | 2020-12-14 | 2021-03-05 | 中国人民解放军海军工程大学 | 基于控制流隐藏的轻量级密码芯片总线防护系统及方法 |
CN112905995A (zh) * | 2021-02-05 | 2021-06-04 | 电子科技大学 | 一种处理器内部寄存器组异常行为实时检测方法及系统 |
CN113139175A (zh) * | 2020-01-19 | 2021-07-20 | 阿里巴巴集团控股有限公司 | 处理单元、电子设备以及安全控制方法 |
CN113468079A (zh) * | 2021-09-03 | 2021-10-01 | 支付宝(杭州)信息技术有限公司 | 内存访问方法及装置 |
CN113609038A (zh) * | 2021-10-11 | 2021-11-05 | 摩尔线程智能科技(北京)有限责任公司 | 中断处理方法、装置和电子设备 |
CN116702129A (zh) * | 2023-06-08 | 2023-09-05 | 合芯科技有限公司 | 一种power架构运行服务代码的安全调用方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4558176A (en) * | 1982-09-20 | 1985-12-10 | Arnold Mark G | Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software |
US20040158742A1 (en) * | 2003-02-07 | 2004-08-12 | Broadon | Secure and backward-compatible processor and secure software execution thereon |
US20060015748A1 (en) * | 2004-06-30 | 2006-01-19 | Fujitsu Limited | Secure processor and a program for a secure processor |
US20090293129A1 (en) * | 2008-05-24 | 2009-11-26 | Via Technologies, Inc | Termination of secure execution mode in a microprocessor providing for execution of secure code |
US20100281273A1 (en) * | 2009-01-16 | 2010-11-04 | Lee Ruby B | System and Method for Processor-Based Security |
US20130061058A1 (en) * | 2011-09-06 | 2013-03-07 | International Business Machines Corporation | Protecting application programs from malicious software or malware |
US20170060637A1 (en) * | 2015-08-26 | 2017-03-02 | Arm Limited | Data processing systems |
CN106815494A (zh) * | 2016-12-28 | 2017-06-09 | 中软信息系统工程有限公司 | 一种基于cpu时空隔离机制实现应用程序安全认证的方法 |
CN109840410A (zh) * | 2017-12-28 | 2019-06-04 | 中国科学院计算技术研究所 | 一种进程内数据隔离与保护的方法和系统 |
-
2019
- 2019-10-10 CN CN201910956687.9A patent/CN110659458A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4558176A (en) * | 1982-09-20 | 1985-12-10 | Arnold Mark G | Computer systems to inhibit unauthorized copying, unauthorized usage, and automated cracking of protected software |
US20040158742A1 (en) * | 2003-02-07 | 2004-08-12 | Broadon | Secure and backward-compatible processor and secure software execution thereon |
US20060015748A1 (en) * | 2004-06-30 | 2006-01-19 | Fujitsu Limited | Secure processor and a program for a secure processor |
US20090293129A1 (en) * | 2008-05-24 | 2009-11-26 | Via Technologies, Inc | Termination of secure execution mode in a microprocessor providing for execution of secure code |
US20100281273A1 (en) * | 2009-01-16 | 2010-11-04 | Lee Ruby B | System and Method for Processor-Based Security |
US20130061058A1 (en) * | 2011-09-06 | 2013-03-07 | International Business Machines Corporation | Protecting application programs from malicious software or malware |
US20170060637A1 (en) * | 2015-08-26 | 2017-03-02 | Arm Limited | Data processing systems |
CN106815494A (zh) * | 2016-12-28 | 2017-06-09 | 中软信息系统工程有限公司 | 一种基于cpu时空隔离机制实现应用程序安全认证的方法 |
CN109840410A (zh) * | 2017-12-28 | 2019-06-04 | 中国科学院计算技术研究所 | 一种进程内数据隔离与保护的方法和系统 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111143821A (zh) * | 2019-12-20 | 2020-05-12 | 上海爱信诺航芯电子科技有限公司 | 处理器及其原生MPU的SBoot处理方法 |
CN111143821B (zh) * | 2019-12-20 | 2023-04-11 | 上海航芯电子科技股份有限公司 | 处理器及其原生MPU的SBoot处理方法 |
CN111221629A (zh) * | 2020-01-09 | 2020-06-02 | 上海沄界信息科技有限公司 | 计算资源使用量量化方法及装置 |
CN111221629B (zh) * | 2020-01-09 | 2023-09-05 | 上海沄界信息科技有限公司 | 计算资源使用量量化方法及装置 |
CN113139175A (zh) * | 2020-01-19 | 2021-07-20 | 阿里巴巴集团控股有限公司 | 处理单元、电子设备以及安全控制方法 |
CN112446064A (zh) * | 2020-12-14 | 2021-03-05 | 中国人民解放军海军工程大学 | 基于控制流隐藏的轻量级密码芯片总线防护系统及方法 |
CN112380503B (zh) * | 2021-01-14 | 2021-04-30 | 北京东方通软件有限公司 | 一种保护核心程序及内存的方法 |
CN112380503A (zh) * | 2021-01-14 | 2021-02-19 | 北京东方通软件有限公司 | 一种保护核心程序及内存的方法 |
CN112905995A (zh) * | 2021-02-05 | 2021-06-04 | 电子科技大学 | 一种处理器内部寄存器组异常行为实时检测方法及系统 |
CN112905995B (zh) * | 2021-02-05 | 2022-08-05 | 电子科技大学 | 一种处理器内部寄存器组异常行为实时检测方法及系统 |
CN113468079A (zh) * | 2021-09-03 | 2021-10-01 | 支付宝(杭州)信息技术有限公司 | 内存访问方法及装置 |
CN113609038A (zh) * | 2021-10-11 | 2021-11-05 | 摩尔线程智能科技(北京)有限责任公司 | 中断处理方法、装置和电子设备 |
CN116702129A (zh) * | 2023-06-08 | 2023-09-05 | 合芯科技有限公司 | 一种power架构运行服务代码的安全调用方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110659458A (zh) | 支持软件代码数据保密可信执行的中央处理器设计方法 | |
US11550962B2 (en) | Secure processor and a program for a secure processor | |
CN109522736B (zh) | 一种在操作系统中进行密码运算的方法和系统 | |
US9756048B2 (en) | System and methods for executing encrypted managed programs | |
Zhang et al. | Memory forensic challenges under misused architectural features | |
CN110069935A (zh) | 基于标记内存的内部敏感数据保护方法及系统 | |
Olson et al. | Security implications of third-party accelerators | |
Shi et al. | Towards the issues in architectural support for protection of software execution | |
Branco et al. | Blinded random corruption attacks | |
Zhou et al. | Smile: Secure memory introspection for live enclave | |
Kwon et al. | ZeroKernel: Secure context-isolated execution on commodity GPUs | |
Bloom et al. | Hardware and Security: Vulnerabilities and | |
JP4847827B2 (ja) | アクセス制御装置 | |
Resh et al. | Can keys be hidden inside the CPU on modern windows host | |
Zonouz et al. | Dynamic memory protection via Intel SGX-supported heap allocation | |
Zheng et al. | TZ-KPM: Kernel protection mechanism on embedded devices on hardware-assisted isolated environment | |
Wang et al. | Trustict: an efficient trusted interaction interface between isolated execution domains on ARM multi-core processors | |
Chen et al. | IP-Tag: Tag-Based Runtime 3PIP Hardware Trojan Detection in SoC Platforms | |
Shi et al. | Attacks and risk analysis for hardware supported software copy protection systems | |
Duc et al. | Improving virus protection with an efficient secure architecture with memory encryption, integrity and information leakage protection | |
Chi et al. | Lightweight Hardware-Based Memory Protection Mechanism on IoT Processors | |
Roodsari et al. | A Secure Canary-Based Hardware Approach Against ROP. | |
Taassori | Low Overhead Secure Systems | |
Platte | A security architecture for microprocessors | |
Henson | Attack mitigation through memory encryption |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20200107 |
|
WD01 | Invention patent application deemed withdrawn after publication |