CN1189819C - 抗干预微处理器 - Google Patents
抗干预微处理器 Download PDFInfo
- Publication number
- CN1189819C CN1189819C CNB011030003A CN01103000A CN1189819C CN 1189819 C CN1189819 C CN 1189819C CN B011030003 A CNB011030003 A CN B011030003A CN 01103000 A CN01103000 A CN 01103000A CN 1189819 C CN1189819 C CN 1189819C
- Authority
- CN
- China
- Prior art keywords
- key
- program
- contextual information
- microprocessor
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 claims description 140
- 230000004224 protection Effects 0.000 claims description 69
- 230000015654 memory Effects 0.000 claims description 62
- 230000006870 function Effects 0.000 claims description 58
- 238000003860 storage Methods 0.000 claims description 53
- 230000005055 memory storage Effects 0.000 claims description 25
- 230000033228 biological regulation Effects 0.000 claims description 18
- 238000004321 preservation Methods 0.000 claims description 13
- 230000006399 behavior Effects 0.000 claims description 6
- 238000005538 encapsulation Methods 0.000 claims description 5
- 238000012545 processing Methods 0.000 description 56
- 230000008569 process Effects 0.000 description 53
- 230000008859 change Effects 0.000 description 30
- 230000007246 mechanism Effects 0.000 description 23
- 238000012546 transfer Methods 0.000 description 20
- 238000005516 engineering process Methods 0.000 description 14
- 238000012795 verification Methods 0.000 description 13
- 238000004458 analytical method Methods 0.000 description 10
- 238000011084 recovery Methods 0.000 description 10
- 230000003716 rejuvenation Effects 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000005856 abnormality Effects 0.000 description 6
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000001343 mnemonic effect Effects 0.000 description 4
- 230000008929 regeneration Effects 0.000 description 4
- 238000011069 regeneration method Methods 0.000 description 4
- 230000006378 damage Effects 0.000 description 3
- 230000008672 reprogramming Effects 0.000 description 3
- 238000013478 data encryption standard Methods 0.000 description 2
- 230000004069 differentiation Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 150000003839 salts Chemical class 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 235000017166 Bambusa arundinacea Nutrition 0.000 description 1
- 235000017491 Bambusa tulda Nutrition 0.000 description 1
- 241001330002 Bambuseae Species 0.000 description 1
- 235000015334 Phyllostachys viridis Nutrition 0.000 description 1
- 239000011425 bamboo Substances 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000000505 pernicious effect Effects 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
-
- 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/123—Restricting unauthorised execution of programs by using dedicated hardware, e.g. dongles, smart cards, cryptographic processors, global positioning systems [GPS] devices
-
- 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/72—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 in cryptographic circuits
-
- 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/109—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM] by using specially-adapted hardware at the client
Abstract
在多任务环境下,抗干预微处理器保存一个其执行被中断的程序的上下文信息,其中该上下文信息含有指明该程序的执行状态和该程序的执行码密钥的信息。通过从保存的上下文信息恢复该程序的执行状态,可以重新启动该程序的执行。利用微处理器的公开密钥可以将此上下文信息加密,然后利用微处理器的秘密密钥进行解密。
Description
技术领域
本发明涉及可以在多任务程序执行环境下防止非法变更执行码和非法处理目标数据的微处理器。
背景技术
最近几年,微处理器的性能得到显著改善,以致微处理器除了具有传统的诸如计算和图形功能外,还可以实现对视频图像和音频声音的再生和编辑。通过在为最终用户设计的系统(以下简称:PC)中实现这种微处理器,用户可以在监视器上欣赏各种视频图像和音频声音。此外,通过将PC的再生视频图像和音频声音的功能与计算能力相结合,可以改善对游戏等的适用性。这种微处理器不是专为某种特定硬件设计的而是可以在各种硬件中实现,因此其优势在于,通过简单更换执行程序的微处理器,已经拥有PC的用户花费不多就可以欣赏视频图像和音频声音的再生和编辑。
如果在PC上处理视频图像和音频声音,就会产生原始图像和音乐的版权保护问题。在MD或数字视频重放装置中,通过在这些装置中事先实现防止非法复制的机制,可以防止无限复制。虽然这种装置还在制造,但是试图通过拆除或改变这些装置来进行非法复制的情况却很少,而且世界范围内的趋势是通过法律禁止制造和销售为了进行非法复制能够改变的装置。因此,由于基于硬件进行非法复制造成的损害并不很严重。
然而,在PC上对图像数据和音乐数据进行处理是通过软件进行的而不是通过硬件进行的,并且最终用户可以在PC上随意改变软件。即,如果用户具有某些知识,则通过分析程序并重写可执行软件,可以非常容易地进行非法复制。此外,不同于硬件的问题是,这样产生的用于非法复制的软件可以通过诸如网络的各种媒体迅速传播。
为了解决这些问题,用于再生诸如商业电影或音乐的版权保护内容的PC软件,传统上采用一种通过对软件进行加密防止分析和变更的技术。这种技术就是抗干预软件(参考David Aucsmith等人在Proceedings of the 1996 Intel Software Developer′s Conference上发表的“Tamper Resistant Software:An Implementation”)。
在防止通过PC向用户提供的有价值信息(不仅包括视频数据和音频数据而且包括文本和技术诀窍)的非法复制方面,以及在防止PC软件本身的技术诀窍被分析方面,抗干预软件技术仍然有效。
然而,抗干预软件技术是一种,通过在开始执行程序之前对要求保护的程序的一部分进行加密,在执行该部分之前对该部分立即进行解密并在该部分执行完毕后立即对该部分再加密,使得难于利用诸如反汇编程序或调试程序的软件工具进行分析。因此,只要处理器可以执行该程序,通过从程序的启动处开始一步一步进行分析总可以对程序进行分析。
此事实成为版权所有人向系统提供版权保护内容用于利用PC再生视频数据和音频数据的障碍。
在这方面,其它抗干预软件应用程序也易受攻击,并且此事实成为通过PC进行高级信息服务和将含有企业或个人技术诀窍的程序应用到PC的障碍。
总之,在软件保护方面同样存在这些问题,此外,PC是开放式平台,因此存在通过变更被确定为系统软件配置基础的操作系统(OS)进行攻击问题。换句话说,通过使用属于OS的特权,怀有恶意的熟练用户可以变更其自有PC的OS来废除或分析插入到应用程序内的版权保护机制。
当前的OS通过利用对存储器的特权操作功能和CPU中提供的特权执行控制功能,在计算机的控制下进行资源管理和资源使用仲裁。管理的目标包括传统目标(例如:设备、CPU和存储资源)以及网络层或应用层QoS(服务质量)。尽管如此,资源管理的基础仍然是对执行程序所需的资源进行配置。换句话说,分配CPU时间来执行此程序并将分配执行程序所需的存储空间是资源管理的基础。通过控制实现访问这些资源的程序的执行(通过分配CPU的时间和存储空间),对其它设备、网络和应用层服务质量Qos进行控制。
OS具有执行CPU时间分配和存储空间分配的特权。换句话说,为了对CPU分配时间,OS具有在任意时间中断并重新启动应用程序的特权并具有在任意时间将分配到应用程序的存储空间的内容转移到不同分层的存储空间的特权。(通常)通过利用应用程序的不同访问速度和访问能力隐匿分层存储系统,将分配到应用程序的存储空间的内容转移到不同分层的存储空间的特权还用于为应用程序提供平面存储器空间。
使用这两种特权,OS可以中断应用程序的执行状态并在任意时间对它进行快速转储,并且在对它进行拷贝或重写之后重新启动它。此功能还可以被用作分析隐藏在应用程序内的秘密的工具。
为了在计算机上防止应用程序被分析,有几种对程序或数据进行加密的公知技术(例如:Hampson,第4,847,902号美国专利、Hartman,第5,224,166号美国专利、Davis,第5,806,706号美国专利、Takahashi等,第5,825,878号美国专利、Buer等人,第6,003,117号美国专利、第11-282667号日本公开专利申请(1999))。然而,这些公知的技术均未涉及防止程序运行过程和数据秘密被OS进行上述特权操作问题。
基于Intel公司开发的X86结构的传统技术(Hartman,第5,224,166号美国专利)是一种通过利用规定的密钥Kx对执行码和数据进行加密以存储执行码和执行数据的技术。密钥Kx可以被表示为Ekp[Kx]的形式,利用与嵌入到处理器内的秘密密钥Ks对应的公开密钥Kp,可以对Ekp[Kx]进行加密。因此,只有知道Ks的处理器可以对存储器上的加密执行码进行解密。将密钥Kx存储到处理器内被称为段式寄存器的寄存器。
利用这种机制,通过对代码进行加密在某种程度上可以避免用户发现程序代码的秘密。此外,对于不知道代码密钥Kx的人来说,由于密码原因难于根据其内涵或利用密钥Kx解密时可执行的新产生代码来变更代码。
然而,采用这种技术的系统的缺点在于,利用被称为上下文切换的OS特权有可能对程序进行分析,而无需对加密的执行码进行解密。
更具体地说,当利用中断停止执行程序或当预期系统调用程序自行调用软件中断命令时,为了执行其它程序,OS进行上下文切换。上下文切换操作将指明该点寄存器值的集合的程序执行状态(以下简称为:上下文信息)存储到存储器,并将事先存储到存储器的另一个程序的上下文信息再存入寄存器。
图15示出在x86处理器中使用的传统上下文存储格式。这里存储了应用程序使用的寄存器的所有内容。当再启动被中断的程序时,将该程序的上下文信息再存入寄存器。为了并行运行多个程序,上下文切换是不可缺少的功能。在传统技术中,在上下文切换时,OS可以读取寄存器值,因此根据该程序的执行状态是如何改变的,即使不是全部,也可以猜测出该程序执行的大多数操作。
此外,通过控制在此时通过设置计时器等产生异常的时间,在程序的任意执行点可以进行此处理。除了中断执行和分析之外,还可以恶意重写寄存器信息。重写寄存器不仅可以改变程序运行而且可以使得对程序进行分析更容易。OS可以存储应用程序的任意状态,因此通过重写寄存器值并通过反复运行程序,可以分析程序的运行。除了上述功能之外,处理器还具有诸如逐步执行的调试支持功能,存在的问题是,利用所有这些功能,OS可以对应用程序进行分析。
就数据而论,第5,224,166号美国专利认为,仅通过利用加密代码段执行程序,程序可以访问加密数据。这里存在的问题是加密程序利用任意密钥可以自由读取加密数据,而与对程序加密的密钥无关,即使存在利用互相不同的密钥加密的程序。这种传统技术中未说明这些情况,即OS和应用程序独立具有它们自己的秘密并且应用程序的秘密不被OS发现,或者多个程序供应商分别具有它们自己的秘密。
当然,即使是在现有的处理器中,也可以在应用程序之间划分存储空间并利用虚拟存储机制提供的保护功能来禁止应用程序访问系统存储器。然而,只要虚拟存储制受OS的控制,则对应用程序秘密的保护就不能依赖于OS控制下的功能。这是由于OS可以忽略保护机制访问数据,并且在提供上述虚拟存储器方面,这种特权不可缺少。
作为另一种传统技术,第11-282667(1999)号日本公开专利申请公开了一种技术,这种技术为了存储应用程序的秘密信息而在CPU内设置秘密存储器。在这种技术中,为了访问秘密存储器内的数据,需要规定基准值。但是,此技术未披露如何防止同一个CPU内运行的多个程序(特别是OS)使用用于获得对秘密数据的访问权的基准数值。
此外,在第5,123,045号美国专利中,Ostrovsky等人公开了一种系统,该系统的先决条件是使用具有与应用程序对应的唯一秘密密钥的子处理器,在该系统中,不能根据这些子处理器访问主存储器上的程序的访问方式来推测程序运行。这是基于,通过将根据存储器实现运行的指令系统转换到与此指令系统不同的另一个指令系统,实现随机存储访问的机制。
然而,对不同的应用程序,这种技术要求不同的子处理器,因此这种技术的成本高,并且预期用于处理这种指令系统的编译程序和处理器硬件的执行和快速实现过程非常困难,这是由于它们与当前使用的处理器的编译程序和处理器硬件非常不同。除此之外,与上述说明的将程序码和数据简单加密的其它传统技术(例如:第5,224,166号美国专利和第11-282667号日本公开专利申请)比较,在这种处理器中,即使当数据和实际操作码的运行被观察到并被跟踪以致调试程序变得非常困难时,难于包含数据内容与运行之间的对应之处,因此,这种技术存在许多实际问题。
发明内容
因此,本发明的第一个目的是提供一种微处理器,该微处理器即使是在被中断停止执行时也可以防止在多任务环境下内部执行的算法和存储区内的数据状态被非法分析。
此第一个目的受传统技术能够保护程序码的数值而不能防止利用通过发生异常或调试功能中断程序的执行进行分析的启发。因此,本发明的目的是提供一种即使是在程序执行中断时仍能确实保护代码的微处理器,在此微处理器中,这种保护与当前OS要求的执行控制功能和存储器管理功能兼容。
本发明的第二个目的是提供一种即使执行多个利用不同密钥加密的程序,其各程序均可以独立获得正确可读/可写数据区的微处理器。
此第二个目的是受第5,224,166号美国专利公开的传统技术的启发,该技术仅提供简单保护,其中禁止利用非加密代码访问加密数据区,并且不可能独立地对多个程序保护它们的秘密。因此,本发明的目的还在于提供一种当多个应用程序具有它们各自的(加密的)秘密时具有用于防止各应用程序的秘密被OS使用的数据区的微处理器。
本发明的第三个目的是提供一种可以防止上述数据区的保护属性(即加密属性)被OS非法重写的微处理器。
此第三个目的是受第5,224,166号美国专利公开的传统技术的启发,该技术的缺点在于,通过利用上下文切换中断程序的执行,OS可以重写在段式寄存器内设置的加密属性。一旦,通过重写加密属性,程序进入以明文形式写入数据的状态,不加密就不将数据写入存储器。即使在某些时间应用程序校验段式寄存器的数值,但是,如果此后重写寄存器的数值,则结果相同。因此,本发明的目的还在于提供一种微处理器,该微处理器具有可以禁止这种变更或可以检测这种变更并可以对这种变更采取适当措施的机制。
本发明的第四个目的是提供一种微处理器,该微处理器可以防止加密属性受密码分析原理的所谓选择明文攻击法攻击,在密码分析原理中,程序可以使用任意数值作为数据密钥。
本发明的第五个目的是提供一种微处理器,该微处理器具有程序调试和反馈的机制。换句话说,本发明目的在于提供一种处理器,在该微处理器中,在执行失败时,可以以明文的形式调试程序并将关于缺陷的反馈信息送到程序码供应商(程序销售商)。
本发明的第六个目的是提供一种微处理器,该微处理器可以以低成本高性能的形式实现上述第一至第五个目的。
为了实现第一个目的,本发明的第一个方面具有下列特征。通过提供读取功能的总线接口单元,制成单芯片或单封装的微处理器从微处理器外部的存储器(例如:主存储器)读取多个利用代码密钥加密的程序。对于不同的程序,代码密钥不同。利用分别对应的解密密钥,解密单元对这些读出的程序进行解密,并且指令执行单元执行这些已解密程序。
在中断多个程序中一些程序的执行时,提供执行状态写入功能的上下文信息加密/解密单元利用对微处理器唯一的密钥对指明执行状态的信息进行加密直到中断程序的中断点和代码密钥出现,并将加密的信息作为上下文信息写入微处理器外部的存储器。
如果重新启动被中断的程序,提供重新启动功能的验证单元利用与微处理器的唯一密钥对应的唯一解密密钥解密上下文信息,并只有当包含在已解密上下文信息内的代码密钥(即:预定重新启动程序的代码密钥)与已中断程序的原始代码密钥一致时,才重新执行程序。
此外,为了实现第二和第三个目的,微处理器还具有:存储区(例如:寄存器),它在处理器的内部而且不能被读出到外部;加密属性写入单元(例如:指令TLB),用于将程序的处理目标数据加密属性写入存储器。加密属性包括程序的代码密钥和加密目标地址范围。在上下文信息中至少含有一部分加密属性。
上下文信息加密/解密单元还将对微处理器唯一的、基于秘密信息的签名附加到上下文信息。这样,验证单元判别解密上下文信息内的签名是否与对微处理器唯一的、基于秘密信息的原始签名一致,如果一致,就重新启动已中断的程序。
同样,将加密程序中断点前的执行状态存储到外部存储器作为上下文信息,而将执行处理目标数据的保护属性存储到处理器内部的寄存器,因此,可以防止非法变更数据。
为了实现第四个目的,本发明的第二个方面具有下列特征。制成单芯片或单封装的微处理器在其内保持不能读出到外部的唯一秘密密钥。具有读取功能的总线接口单元事先从微处理器外部的存储器读取利用与秘密密钥对应的、微处理器的唯一公开密钥加密的代码密钥。具有第一解密功能的密钥解密单元利用微处理器的秘密密钥对读出的代码密钥进行解密。总线接口单元还从外部存储器读出多个利用分别不同的代码密钥加密的程序。具有第二解密功能的代码解密单元对这些读出的程序进行解密。指令执行单元执行执行解密的程序。
如果中断多个程序中一些程序的执行,则随机数发生装置可以产生随机数作为临时密钥。上下文信息加密/解密单元将:第一数值,利用随机数,通过对指明中断程序的执行状态的信息进行加密获得;第二数值,利用中断程序的代码密钥,通过对此随机数进行加密获得;以及第三数值,利用微处理器的秘密密钥,通过对此随机数进行加密获得,写入外部存储器作为上下文信息。
如果重新启动执行程序,上下文信息加密/解密单元从外部存储器读出上下文信息,利用秘密密钥对上下文信息内的第三数值的随机数进行解密,并利用解密的随机数对上下文信息内的执行状态信息进行解密。同时,利用预定重新启动程序的代码密钥,对上下文信息内第二数值的随机数进行解密。将通过利用代码密钥解密第二数值获得的随机数和通过利用秘密密钥解密第三数值获得的随机数与临时密钥进行比较,并且仅在它们一致时,重新启动执行程序。
同样,利用在各存储时刻产生的随机数,将指明中断点时执行状态的上下文信息进行加密,并附加使用对微处理器唯一的秘密密钥的签名,因此,可以将上下文信息安全地存储到外部存储器。
为了实现第一至第三个以及第六个目的,本发明的第三个方面具有下列特征。制成单芯片或单封装的微处理器读出多个利用对不同程序不同的密钥加密的程序并执行它们。此微处理器具有不能读出到外部的内部存储器(例如:寄存器),此微处理器将将由各程序引用的数据(即处理目标数据)的加密属性和说明信息的加密属性存储到寄存器。上下文信息加密/解密单元将相关信息写入外部存储器,此相关信息与存储在寄存器内说明信息的并含有对微处理器唯一的签名的加密属性有关。根据程序提交的数据地址,保护表管理单元从外部存储器读取相关信息。利用秘密密钥,验证单元验证包含在所读出的相关信息内的签名。并且只有当此签名与对微处理器唯一的签名一致时,验证单元才根据说明信息的加密属性和读出的相关信息,允许程序引用数据。
在这种配置中,待存储到内部寄存器的信息与签名附在一起并存储到外部存储器,并且只将必要部分读出到微处理器。在读取时验证签名,可以确保不受代换之害。即使当增加要处理的程序数并增加加密属性的数目时,也无需扩大微处理器内的存储区,因此可以降低成本。
根据本发明的一个方面,提供了一种微处理器,该微处理器具有与不能读出到外部的唯一秘密密钥对应的唯一秘密密钥和唯一公开密钥,它包括:读取单元,用于从外部存储区读出多个利用不同执行码密钥加密的程序;解密单元,被进行配置以利用各自解密密钥,对多个通过读取单元读出的程序进行解密;执行单元,被进行配置以执行多个通过解密单元解密的程序;上下文信息保存单元,被进行配置以将其执行被中断的程序的上下文信息保存到外部存储器或保存到在微处理器内部设置的上下文信息存储器,该上下文信息含有指明此程序的执行状态的信息和此程序的执行码密钥;以及重新启动单元,被进行配置以通过从外部存储器或上下文信息存储器读出上下文信息并通过从上下文信息中恢复此程序的执行状态,重新启动执行此程序。
附图说明
通过以下结合附图的描述,本发明的其它特征和优势将会更加明显。
图1示出根据本发明第一实施例具有微处理器的系统的方框图。
图2示出在图1所示的微处理器内使用的全部存储空间的示意图。
图3示出根据本发明第二实施例的微处理器的基本配置的方框图。
图4示出图3所示的微处理器的详细配置的方框图。
图5示出在图3所示的微处理器中使用的页目录格式和页表格式的示意图。
图6示出在图3所示的微处理器中使用的页表格式和密钥输入格式。
图7A和图7B分别示出在图3所示的微处理器中使用的、交错前和交错后的典型数据。
图8示出在图3所示的微处理器内执行的代码解密过程的信息流。
图9示出在图3所示的微处理器内使用的CPU寄存器。
图10示出在图3所示的微处理器内使用的上下文保持格式。
图11示出在图3所示的微处理器内专执行的保护域切换过程的流程图。
图12示出在图3所示的微处理器内执行的数据加密和解密处理过程的信息流。
图13示出概念性说明利用图3所示的微处理器的调用过程和从保护域转移到非保护域的过程的示意图。
图14示出在传统处理器内使用的上下文保存格式。
图15示出在传统处理器内使用的上下文保存格式。
具体实施方式
现在将参考图1和图2详细说明根据本发明的抗干预微处理器的第一实施例。
此第一实施例涉及一种微处理器,该微处理器用于防止程序指令秘密(执行码)和上下文信息(执行状态)被目标系统的用户使用,其中利用公开密钥(非对称密钥)加密系统以加密形式提供程序指令秘密和上下文信息。
图1示出目标系统,通过总线2102,将目标系统的微处理器2101连接到主存储器2103。
如图1所示,在此实施例中,微处理器2101具有寄存器文件2111、指令执行单元2112、指令缓冲器2113、公开密钥解密功能块2114、秘密密钥寄存器2115、公共密钥解密功能块2116、公共密钥寄存器2117、BIU(总线接口单元)2118、缓冲寄存器2119、公开密钥寄存器2120、加密功能块2121、解密功能块2122以及以前的公共密钥寄存器2123,以下将对它们进行详细说明。
首先对将在下述描述中使用的术语进行说明,然后主要说明通用操作系统(OS)和应用程序的操作。程序是为特定目的编写的一组数据和一系列机器语言指令。OS是用于管理系统资源的程序,而应用程序是在OS资源管理的管理下运行的程序,该实施例预先支持多任务系统,因此,多个应用程序可以在OS的管理下以准并行的方式运行。以准并行方式运行的每个应用程序被称为进程。有时,将为相同目的执行进程的一组进程称为任务。
通常以文件的形式将应用程序的指令和数据存储到二级存储器。利用OS的装载程序,将它们设置到存储器,然后将它们作为进程执行。通常,利用输入/输出等引起的处理器异常处理(或中断)中断程序的执行。将执行异常处理的程序称为异常处理程序。通常利用OS安装异常处理程序。OS可以处理硬件的异常请求、中断应用程序的运行过程并在任意时间重新启动或启动另一个应用程序。中断进程包括:无需在执行异常处理程序后切换进程,就重新启动原始进程的执行的暂时情况;以及要求切换进程的情况。前者的例子具有简单计时器而后者的例子具有由于页异常处理的虚拟存储器。
此实施例的目的是防止程序指令(执行码)和执行状态被目标系统用户使用,目标系统用户可以自由读目标系统主存储器并可以自由变更OS程序或应用程序。
实现此目的的基本特征是对处理器内信息存储的访问控制和根据下列信息的加密过程。
(1)程序创建者选择的公共密钥Kx,利用使用此密钥的秘密密钥加密系统对应用程序进行加密。
(2)一对在处理器内设置的唯一公开密钥Kp和唯一秘密密钥Ks。利用指令程序可以读出公开密钥。
(3)密钥信息,其中的程序公共密钥Kx被利用处理器的公开密钥Kp加密。
[明文程序的执行]
此处理器可以执行具有共存明文指令和加密指令并被设置到主存储器的程序。这里将参考图1和图2所示的存储器分配,对在CPU内执行明文程序的运行过程进行说明。
图2示出整个存储器空间2201,在存储器空间中,将程序设置到主存储器上的区域2202至2204,其中区域2202和2204为明文区域,而区域2203为加密区域。区域2205存储解密区域2203时使用的密钥信息。
当利用转移指令将控制从OS跳转到程序等的顶部x时,启动该程序的执行。指令执行单元2112执行跳转到x的指令,并将指令的地址输出到BIU 2118。通过总线2102读取地址x的内容,并将地址x的内容从BIU 2118送到指令缓冲器2113,然后送到指令执行单元2112执行该指令。其运行结果反应到寄存器文件2111。当运行目标是对主存储器2103上的地址的读/写时,将其地址数值送到BIU 2118,将此地址从BIU 2118输出到总线2102,然后对存储器进行读/写操作。
指令缓冲器2113具有存储两条或多条指令的容量,并且从主存储器2103选择性地读出与指令缓冲器2103的容量对应的指令。
[加密指令的执行]
接着说明加密指令的执行情况。根据此实施例的处理器具有两种状态:明文指令的执行状态和加密指令的执行状态。因此提供了两种指令用于控制这两种状态。一种指令是加密执行启动指令,用于实现从明文指令的执行状态转换到加密指令的执行状态;另一个指令是明文返回指令,用于实现相反的转换。
[加密执行启动指令]
加密执行启动指令被表示为如下的助记符号“execenc”并具有一个操作数:
execenc keyaddr
其中“keyaddr”表示存储解密后续指令时使用的密钥信息的地址。
[密钥信息]
在此将说明密钥信息和程序加密过程。加密区域2203包括加密指令序列。将指令细分为以预取指令队列大小为单位的块,并利用诸如DES(数据加密标准)算法的秘密密钥算法对指令进行加密。以下将此加密过程中使用的密钥表示为Kx。由于使用了秘密密钥算法,所以解密时使用相同的密钥。
如果以明文的形式将此Kx设置到主存储器,则可以控制OS的用户可以容易地读取它并对加密程序进行分析。为了防止这种情况发生,将通过利用处理器的公开密钥Kp加密Kx获得的Ekp[Kx]设置到存储器区域2205。“keyaddr”表示区域2205的顶地址。
除非知道与公开密钥Kp对应的Ks,否则不可能用密码方法(计算方法)对Ekp[Kx]进行解密获得Kx。因此,只要目标系统的用户不知道Ks,就一定不会将程序的秘密泄露给用户。在处理器内部,以不能由外部读取的方式存储此Ks。处理器可以在内部解密Kx,而不会使用户得知此Ks,而且处理器还可以利用Kx对加密程序进行解密并执行此程序。
以下将详细说明加密执行启动指令和后续的加密指令的执行。通过执行区域2207内的转移指令,控制被转移到地址“启动”处的加密执行启动指令。在加密执行启动指令的操作数“keyaddr”指明的地址,将规定区域2205的内容作为数据读出到处理器的指令执行单元2112。指令执行单元2112将此数据Ekp[Kx]送到公开密钥解密功能块2114。通过利用在秘密密钥寄存器2115存储器储的、对处理器唯一的秘密密钥Ks解密Ekp[Kx]获得Kx。并将它存储到公共密钥寄存器2117。然后,处理器进入加密指令执行状态。
在此,假设这样制造处理器封装,以致不能利用处理器芯片的程序和调试程序将秘密密钥寄存器2115和公共密钥寄存器2117存储器储的内容读出到外部。
通过执行加密执行启动指令,将解密后续指令使用的密钥存储到公共密钥寄存器2117,然后处理器进入加密指令执行状态。当处理器处于加密指令执行状态时,将从主存储器2103读取的指令由BIU 2118送到公共密钥解密功能块2116,并利用存储在公共密钥寄存器2117内的密钥信息对它进行解密,然后将它存储到指令缓冲器2113。
在此实施例中,紧跟在加密执行启动指令之后存储到区域2204、利用密钥Kx加密的程序被解密并被存储到指令缓冲器2113,然后执行它。以指令缓冲器2113的大小为单位进行读取。图2示出指令缓冲器2113的大小为64位的典型情况,并且选择性地将16位大小的四条指令分别读出到指令缓冲器2113。
[明文返回指令]
通过执行明文返回指令,处于加密指令执行状态的处理器返回明文指令执行状态。
明文返回指令被表示为如下助记符号:
exitenc
它没有操作数。通过执行此指令,经过不通过公共密钥解密功能块2116的通路从主存储器2103读取该指令,然后处理器返回明文指令执行。
请注意,当在加密指令执行期间再执行加密执行启动指令时,改变指令解密密钥,以致可以利用不同密钥解密后续指令,然后执行后续指令。
[上下文保存和对其的攻击]
接着将说明为了在多任务环境下保护应用程序的秘密而安全保存执行状态的情况。
此处理器的寄存器文件2111具有32个通用寄存器(R0至R31)。R31用作程序计数器。将通用寄存器的内容存储到寄存器文件2111。当在上述加密程序的执行期间发生异常时,将寄存器文件2111的内容转移到缓冲寄存器2119,并用预定数值或随机数初始化寄存器文件2111的内容。然后,将用于解密加密程序的公共密钥数值存储到前一个公共密钥寄存器2123。只有完成这两种初始化之后,才可以将控制转移到异常处理程序并执行异常处理程序的指令。假设异常处理程序的指令未加密。
利用此寄存器文件的初始化功能,在此实施例的处理器中,即使是在由于加密程序的执行期间发生异常而将控制转移到异常处理程序的情况下,仍可以防止读取加密程序利用异常处理程序处理的寄存器数值。同时,将寄存器文件2111的内容保存到缓冲寄存器2119。以下将说明为了重新启动加密程序,用于恢复缓冲寄存器内容并用于将它们存储到存储器的功能块。
可以直接由异常处理程序的非加密程序读出存储在缓冲寄存器2119的寄存器内容。异常处理程序的非加密程序只允许对缓冲寄存器2119进行如下两步操作。
(1)恢复缓冲寄存器内容并重新启动执行原始加密程序。
(2)加密缓冲寄存器的内容并将它们存储到存储器,然后执行OS程序或其它加密程序。
在(1)操作情况下,当处理诸如计数器递增的异常处理程序完毕后,异常处理程序发出“cont”(继续)指令。当执行“cont”指令时,在寄存器文件2111和公共密钥寄存器2117内分别恢复缓冲寄存器2119的内容和前一个公共密钥寄存器2123的内容。由于在寄存器文件2111内含有程序计数器,因此通过使控制退回到中断加密程序执行的点,可以重新启动加密程序的执行。为了在重新启动之后对加密程序解密,可以使用从前一个公共密钥寄存器2123恢复的数值。与缓冲寄存器2119的内容相同,显然,该程序不能重写前一个公共密钥寄存器2123。
(2)操作情况与在执行异常处理程序定时发生的进程切换的情况对应。在这种情况下,处理器的异常处理程序或任务调度程序发出“savereg”(保存寄存器)指令用于将缓冲寄存器2119的内容保存到存储器。此“savereg”指令被表示为如下助记符号:
savereg dest
并且该指令具有一个操作数“dest”,操作数“dest”代表保存缓冲寄存器内容的地址。
发出“savereg”指令时,通过使用存储在公开密钥寄存器2120内的处理器公开密钥Kp,利用加密功能块2121对缓冲寄存器2119和前一个公共密钥寄存器2123的内容进行加密,并通过BIU2118将它们保存到主存储器2103内由“dest”规定的地址。主存储器2103在处理器的外部,因此有被用户访问的可能性,但是利用处理器的公开密钥可以将这些内容加密,这样不知道处理器的秘密密钥的用户不可能得知缓冲寄存器的内容。
保存缓冲寄存器的内容后,利用上述方法,OS激活另一个加密程序。如果未保存缓冲寄存器的内容就激活另一个加密程序,则当中断另一个加密程序的执行时,会将缓冲寄存器的内容重写到另一个加密程序的缓冲寄存器,并且由于原始加密程序已丢失,所以不可能将原始加密程序作为缓冲寄存器内容重新启动。
在此,假定缓冲寄存器的个数为1,但是为了处理多个异常,也可以具有多个缓冲寄存器。
[恢复过程]
接着,将说明已保存执行状态的恢复过程。
在重新启动被中断应用程序时,OS的调度程序发出“rcvrreg”(恢复寄存器)指令。此“rcvrreg”指令被表示为如下助记符号:
rcvrrdg addr
并且该指令具有一个操作数“addr”,该操作数“addr”代表保存执行状态的地址。
发出“rcvrreg”指令指令时,利用处理器BIU 2118,从“addr”规定的存储器地址取出加密执行状态信息,利用解密功能块2122,通过使用处理器的秘密密钥Ks对它进行解密,然后在寄存器文件2111内恢复寄存器信息,而在公共密钥寄存器2117内恢复程序解密密钥。恢复完成时,从程序计数器指明的点重新启动已中断程序的执行。此时,将从执行状态信息中恢复的密钥Kx用于加密程序的解密过程。
以上说明了由于异常中断的加密程序的执行状态的保存过程和恢复过程的细节。如上所述,加密程序可以避免受到可以控制目标系统OS用户的攻击。
接着,将说明防止两种攻击执行状态的方式的上述方法的安全性。
[攻击执行状态]
有两种方式可以攻击应用程序执行中产生的执行状态。一种方式是利用攻击者窥视保存的执行状态,而另一种方法是利用攻击将执行状态重写为要求数值。
在此,将定义如下两个用于解释非法访问执行状态的术语。首先,将产生执行状态的程序称为此执行状态的原始程序。通过在寄存器内恢复执行状态,可以重新启动原始程序。另外,将产生执行状态的程序以外的程序(即利用不同于原始程序的密钥或明文程序的密钥的密钥加密的程序)称为其它程序。
将对某些原始程序产生的执行状态的非法访问或攻击定义为,不知道原始程序密钥的第三方利用某些独立于处理器操作的方法对存储器上的执行状态进行直接分析的行为,或第三方利用在相同处理器上运行的其它程序分析执行状态或将执行状态重写为要求的数值的行为。
在此实施例的微处理器中,利用如下三种机制可以保护执行状态,这样就可以防止利用访问处理器外的存储器或利用其它程序进行非法访问。
首先,在此实施例中,当加密程序的执行被中断时,将寄存器信息保存到缓冲寄存器2119。然后,利用“rcvrreg”指令或“ savereg”指令方法之外的任何方法均不能访问缓冲寄存器2119和前一个公共密钥寄存器2123,所以,其它程序不能自由读取它们的内容。
在传统处理器中,利用异常处理程序可以自由读取发生异常时的寄存器内容。在此实施例的微处理器中,寄存器内容被保存到缓冲寄存器2119,因此可以禁止其它程序读取寄存器内容,为了防止系统用户窥视存储在存储器上的执行状态,提供用于通过利用处理器的公开密钥对它们进行加密来保存缓冲寄存器内容的指令。
第二种攻击方法是,通过在与原始程序相同的存储器地址设置为攻击者所知的某些其它程序指令来读取包含在执行状态内的寄存器数值,以致使此其它程序读取加密执行状态。
在此实施例的微处理器中,加密执行状态含有程序密钥,并且在重新启动时将此密钥用于解密加密程序。由于有此机制,即使在原始程序之外的其它程序试图读取执行状态时,由于密钥不匹,所以不能将程序直接解密并且不能按照攻击者的意图执行程序。这样,在此实施例的微处理器中就不可能使用第二种攻击方法。
通过利用处理器的公开密钥简单解密执行状态本身不能实现此效果,但是通过对原始程序的密钥和执行状态整体进行加密可以实现此效果。
请注意,为了使此效果最好,在使用公开密钥进行加密时,优先将寄存器(R0至R31)的数值和公共密钥Kx存储到相同的密码块。
[数据保护]
在此实施例的微处理器中,未考虑对数据进行加密。但是,对于本技术领域的技术人员来说显而易见,与在微处理器中进行数据加密用以支持将在第二实施例中说明的虚拟存储器相同,可以将数据加密功能添加到此实施例的微处理器。
现在参考图3至图14,详细说明根据本发明抗干预微处理器的第二实施例。
在此实施例中,对于使用基于Intel公司推出的、广泛使用的Pentium Pro微处理器结构的典型情况,说明根据本发明的微处理器,但是本发明并不局限于此特定结构。在以下的说明中,将说明PentiumPro微处理器结构的具体特征并将说明使用其它结构的情况。
请注意,Pentium Pro结构对地址空间划分了三种地址,它们包括:物理地址、线性地址以及逻辑地址,但是在此实施例中将Pentium术语中的线性地址称为逻辑地址。
在以下的说明中,除非另有说明,保护包括对应用程序秘密的保护(即利用加密进行保护)。因此,应清楚地将此实施例中的保护与通常使用的保护概念区别开,这是预防由于某些程序的运行对其它应用程序运行的干扰。然而,在本发明中,在普通意义上,当然由OS提供运行保护机制(由于它与本发明无关,所以省略了对这方面的说明),该保护机制与根据本发明应用程序的秘密保护并行。
此外,在以下说明中,将处理器可以执行的机器语言指令称为指令,并且选择性地将多条指令称为执行码或指令流。将加密指令流过程使用的密钥称为执行码密钥。
此外,在以下说明中,将秘密保护机制称为在OS管理下的应用程序保护秘密,但是可以将此机制用作防止OS本身被变更或分析的机制。
图3示出根据此实施例的微处理器的基本配置。图4示出图3所示的微处理器的详细配置。
微处理器101具有:处理器核心111、指令TLB(查表缓冲器)121、异常处理单元131、数据TLB(查表缓冲器)141、二级高速缓存152。处理器核心111包括总线接口单元112、代码和数据加密/解密处理单元113、一级高速缓存114以及指令执行单元115。指令执行单元115进一步包括指令提取/解码单元214、指令表215、指令执行转换单元216以及指令执行完成单元217。
异常处理单元131进一步包括寄存器文件253、上下文信息加密/解密单元254、异常处理单元255、秘密保护破坏检测单元256以及执行码密钥与签名验证单元257。
指令TLB 121进一步包括页表缓冲器230、执行码解密密钥表缓冲器231以及密钥单元232。数据TLB 141进一步包括保护表管理单元233。
微处理器101具有用于存储对此微处理器唯一的公开密钥Kp和秘密密钥Ks的密钥存储区241。现在研究从某些程序销售商购买要求的执行程序A并执行它的情况。程序销售商在提供执行程序A之前利用公共执行码密钥Kcode(EKcode[A])将程序A加密,然后将用于以利用微处理器101(EKp[Kcode])公开密钥Kp的加密方式进行加密的公共密钥Kcode送到微处理器101。微处理器101是一种多任务处理器,它不仅可以处理执行程序A而且可以以准并行方式处理多个不同的加密程序(即通过允许中断实现)。此外,微处理器101可以预先执行加密程序和明文程序。
通过总线接口单元(读取功能块)112,微处理器101从微处理器101外部的主存储器281读出多个利用不同的执行码密钥加密的程序。利用各自对应的解密密钥,执行码解密单元212对此多个读出程序进行解密,然后,指令执行单元115执行此多个解密程序。
在中断一些程序的执行的情况下,利用微处理器的公开密钥,异常处理单元131的上下文信息加密/解密单元254将指明被中断程序中断点处执行状态和此程序的代码密钥的信息加密,然后将此加密信息作为上下文信息写入主存储器281。
在重新启动中断程序的情况下,利用微处理器101的秘密密钥,执行码密钥与签名验证单元257将加密上下文信息解密,验证解密上下文信息内的执行码密钥(即:预定重新启动程序的执行码密钥)是否与中断程序的原始执行码密钥一致,只有在它们一致时才重新启动该程序的执行。
在说明微处理器101的详细配置和功能之前,这里先概括说明利用微处理器101对明文指令执行和执行加密程序的处理过程。
当微处理器101执行明文指令时,指令提取/解码单元214试图从L1指令高速缓存213读取由程序计数器(未示出)指明的地址上的内容。如果规定地址上的内容被高速缓存,则从L1指令高速缓存213读出程序并将此程序送到指令表215,然后执行它。指令表215可以并行执行多条指令,请求将完成执行的必要数据读到指令执行转换单元216,然后接收此数据。当并行执行指令并且确定它们的执行结果时,将执行结果送到指令执行完成单元217。当运行目标是微处理器101内的寄存器时,指令执行完成单元217将执行结果写入寄存器文件253;当执行目标是存储器时,指令执行完成单元217将执行结果写入L1数据高速缓存218。
L1数据高速缓存218的内容在总线接口单元112的控制下被L2高速缓存152再一次高速缓存,并被写入主存储器281。这里使用了虚拟存储器机制,图5所示的页表说明逻辑存储地址与物理存储地址有相似之处。
页表是一种设置到物理存储器的数据结构。实际上,数据TLB 141实现从逻辑地址到物理地址的转换,同时管理数据高速缓存。根据微处理器101内的寄存器指明的页表顶地址,数据TLB读取页表上的必要部分,并执行将逻辑地址转换到物理地址的操作。此时,根据将访问的逻辑地址,只将页表的必要部分读出到页表缓冲器234,而不是将存储器上的整个页表读出到数据TLB 141。
基本高速缓存操作稳定,与程序指令是否被加密无关。换句话说,将部分页表读出到指令TLB 121,并根据这里给出的解释进行地址转换。总线接口单元112从主存储器281或L2高速缓存152读取指令,并将这些指令存储到L1指令高速缓存213。将指令读出到L1指令高速缓存213是以由多个字组成的行单位实现,这样进行访问比以字为单位进行访问快。
利用物理存储器上的相同页表对已执行指令的处理目标数据进行地址转换,如上所述,在数据TLB 141进行这种转换。
此点前的操作基本上与一般高速缓冲存储器相同。
接着将说明执行加密程序情况的运行过程。在此实施例中,假设秘密被保护的执行码全部被加密,并且将加密的执行码称为保护码。此外,将相同密钥的保护范围称为保护域。换句话说,由相同密钥保护的代码集属于相同保护域,而由不同密钥保护的代码属于不同保护域。
首先,利用秘密密钥方法块密码算法加密的程序的执行码被存储到主存储器281。以下将说明装入程序销售商发送的加密程序的方法。
执行码的密码块大小可以是任意值,只要2的密码块大小次方与作为读/写高速缓冲存储器单位的行的大小一致就可以。然而,如果块大小太小以致块长度与指令长度相同,就产生了容易通过记录加密数据与可预测指令部分(例如:子例程的顶端部分)的相似之处分析指令的可能性。为此,在此实施例中,块被交错,以致在块内数据之间存在互相依赖性并且加密块含有关于多个指令字或操作数的信息。同样,难于使指令与加密块相符。
图7A和图7B示出可以用于此实施例的交错的实例。在此例中,假设高速缓存的行大小为32字节,块大小为64位(即8个字节)。如图7A所示,在进行交错前,一个字由4个字节组成,因此,字A由A0至A3的四个字节组成。一行由A至H的8个字组成。当这是以对应于64位块大小的8个字节为单位进行交错时,如图7B所示,将A0、B0、…、H0安排到对应于字0和字1的第一块,将A1、B1、…、H1安排到下一个块,等等。
通过使交错的区域长度更长,可以使攻击更难,但是由于一个高速缓存行的解密/加密依赖于另一行的读/写,所以具有比行大小更长长度的区域的交错使得处理更复杂了并降低了处理速度。因此优先在高速缓存行大小范围内设置交错范围。
使用交错块数据的方法,会在高速缓存行内的多个块的数据之间存在互相依赖性,但是还可以使用能在数据块之间产生依赖性的其它方法(例如:块密码的CBC(密码块链接)方式)。
根据页表确定加密执行码的解密密钥Kcode(即使在解密情况下,以下也将它称为加密密钥,因为在秘密密钥算法中,加密密钥与解密密钥相同)。图5和图6示出从逻辑地址转换到物理地址的表结构。
程序计数器的逻辑地址301列出一些数值,构成其高位的目录302和表303确定页入口307-j。页入口307-j含有密钥入口ID 307-j-k,而在密钥表309内根据此ID确定用于对此页进行解密的密钥入口309-m。用微处理器内的密钥表控制寄存器308存储密钥表309的物理地址。
在此实施例中,将密钥入口的ID设置到页入口而不是直接设置密钥信息,这样为了节省指令TLB 121上的有限存储区空间,在多个页之间共享大量的密钥信息。
如下所述更详细地将页表和密钥表信息存储到指令TLB 121。只将访问存储器所必须的部分从页表306、307和311读出到页表缓冲器230,从页表309读出到执行码解密密钥表缓冲器231。
在存储到主存储器的状态中,作为密钥表309的一个元素的密钥对象309-m基准计数器指明涉及此密钥对象的页表数。在将密钥对象读出到执行码解密密钥表缓冲器231的状态中,此基准计数器指明涉及此密钥对象并被读出到页表缓冲器230的页表数。在从执行码解密密钥表缓冲器231删除不必要的密钥对象时,此基准计数器用于判断。
此实施例的特征之一是密钥表入口具有固定长度,但是为了能够对付更高的密码分析能力,可以改变各表中使用的密钥长度,并在密钥表的密钥大小区说明在各表使用的密钥长度。这意谓着对微处理器101唯一的秘密密钥Ks固定,但是利用密钥入口的说明,可以改变用于程序加密与解密的Kcode的长度。为了说明可变长度密钥的位置,密钥入口309-m具有指向密钥入口的字段309-m-4,字段309-m-4指明密钥对象的地址。
在密钥对象区域310中,以使用微处理器101公开密钥Kp的公开密钥算法加密的Ekp[Kcode]的形式存储执行码密钥Kcode。为了以公开密钥算法的形式对数据可靠加密,必须有大冗余,因此,加密数据的长度比原始数据的长度长。这里将Ks和Kp的长度设置为1024位,将Kcode的长度设置为64位,通过填充可以将它扩展到256位,然后将E[Kcode]加密成1024位并存储到密钥对象区310。当Kcode具有这样的长度以致不能以1024位存储它时,就将它细分为多个分别是1024位大小的块,然后存储。
图8是以代码解密方式概括说明的信息流。程序计数器501指明在逻辑地址空间502上的加密代码区502的地址“Addr”。根据被读出到指令TLB 121的页表307,将逻辑地址“Addr’”转换为物理地址“Addr”。同时,将加密代码解密密钥E[Kcode]从密钥表309中取出,利用在CPU内提供的秘密密钥Ks,解密功能块506对它进行解密,然后将它存储到当前代码解密密钥存储单元507。程序销售商利用微处理器101的公开密钥Kp将用于代码加密的公共密钥Kcode加密,并与利用Kcode加密的程序一起提供公共密钥Kcode,因此不知道微处理器101的秘密密钥Ks的用户就不可能知道Kcode。
利用Kcode将程序执行码加密并发运之后,程序销售商保持并控制Kcode的安全性,以致不会将其秘密泄露给第三方。
将整个密钥表511和整个页表512设置到物理存储器510,并分别用密钥表寄存器508和CR3寄存器509来存储它们的地址。根据整个密钥表511和整个页表512,通过总线接口单元112,只将必须部分高速缓存到指令TLB 121。
通过总线接口单元112将对应于利用指令TLB 121转换的物理地址“Addr’”的内容503读出时,将此页加密,这样,就可以在代码解密功能块212将内容503解密。以高速缓存行大小为单位进行读,并在块单元内进行解密后,进行上述交错过程的反过程。将解密结果存储到L1指令高速缓存213,然后作为指令执行。
这里将说明载入加密程序和重定位加密程序的方法。为了将程序载入存储器,一种方法是,程序载入器改变程序执行码含有的地址值以处理由于载入程序引起的地址变化,但是这种方法不能应用于加密程序。然而,利用实现重定位的方法,可以将加密程序重定位,而无需利用被跳转地址表调用的表或IAT(输入地址表)直接重写执行码。
载入过程和对一般程序重定位的进一步详情可以参考,例如载入方法和加密程序的重定位可以参考本申请人申请的第2000-35898号日本专利申请。
利用上述解密程序的加密执行码并将它们读出到处理器内的高速缓冲存储器然后执行它们的方法,可以保护设置到处理器外部存储器上的执行码。
然而,在处理器内可以存在被解密为明文的执行码。即使不可能直接从处理器外部将它们读出,但是存在明文程序被在相同处理器内运行的其它程序读出并分析的可能性。
在此实施例中,在将数据读入L1数据高速缓存218时,未进行利用指令TLB 241内的秘密密钥241和密钥解密单元232的密钥解密处理过程。当对在页表中将加密标志307-j-E设置为“1”的加密页读取数据时,或者读出非解密原始数据或者读出规定数值“0”的数据,否则就发生异常不能读出正常解密的数据。请注意,当页表内的加密标志307-j-E被重写时,相应指令高速缓存的解密内容将会失效。
利用此机制,其它程序(包括专用程序)不可能读取加密程序的执行码作为数据,并且不可能利用处理器的功能对它们进行解密。
此外,其它程序显然不能读取指令高速缓存内的数据,因此可以保证执行码的安全性。以下将说明数据的安全性。
由于可以用同样的方法执行加密执行码,因此,在此实施例的微处理器中,通过适当选择加密算法和参数,用密码方法可以使不知道执行码加密密钥Kcode真实值的一方不能通过反汇编执行码来分析程序的操作过程。
因此,用户不可能知道执行码加密密钥Kcode的真实值,并且用密码的方法使用户不能根据用户的意图进行变更(例如:通过变更部分加密程序,非法复制应用程序处理的内容)。
接着,将说明此实施例微处理器的另一个特征,该特征涉及加密、签名及其在多任务环境下中断程序执行时对上下文的验证。
经常由异常来中断多任务环境下程序的执行。通常,当执行被中断时,将处理器的状态存储到存储器,然后在后来重新启动此程序的执行时恢复原始状态。同样,可以以准并行方式执行多个程序并认可中断处理过程。中断时的状态信息被称为上下文信息,上下文信息含有应用程序使用的寄存器信息,此外还含有在一些情况下不是应用程序明确使用的寄存器的信息。
在传统处理器中,当一些程序在执行期间发生中断时,将控制转移到OS的执行码,而保持应用程序的寄存器状态,因此,OS可以校验该程序的寄存器状态以推测执行了什么指令,或在中断期间变更以明文形式保持的上下文信息,因此,在重新启动该程序的执行后,可以改变程序的运行。
根据此事实,在此实施例中,当在保护代码的执行期间发生中断时,在此之前立即将执行的上下文信息加密或存储,而所有的应用程序寄存器或者被加密或者被初始化,并将处理器实现的签名附到上下文信息。在从中断恢复时验证签名以校验签名是否正确。当检测到不正确的签名时,就停止恢复,这样就可以防止用户变更上下文信息。此时,加密目标寄存器即图9所示的用户寄存器701至720。
在Pentium Pro结构中,存在支持将处理过程的上下文信息保存到存储器并将其恢复的硬件机制。保存状态的区域被称为TSS(任务状态段)。以下将说明将本发明应用于此机制的典型情况,但是本发明并不局限于Pentium Pro结构,并且通常同样可以应用于任何处理器结构。
在下列情况下,保存上下文和异常发生一起进行。当发生异常时,从称为IDT(中断描述表)的表中读出对应于中断原因的入口用于描述异常处理过程,并执行在此描述的异常过程。当入口指明TSS时,将在所指明的TSS内保存的上下文恢复到处理器。反之,将直到那时执行的过程的上下文保存到任务寄存器725此时规定的TSS区。
利用此自动上下文保存机制,可以将包括程序计数器和堆栈指针在内的应用程序的全部状态保存,并通过验证签名来检测恢复时的变更。然而,当使用此自动上下文保存时,除了由上下文切换产生大开销之外,还会产生没有使用TSS就不能实现中断处理的问题。
为了减少由于中断处理产生的开销,或为了保持与现有程序的兼容性,优先不使用自动上下文保存机制。但是在这种情况下,将程序计数器保存到堆栈而且不能作为验证目标,因此,它可以是被恶性OS变更的目标。应优先根据目的正确利用这两种情况。为此,由于更重视安全性,此实施例的微处理器对被保护的(被加密的)执行码采取自动上下文保存。不必所有的寄存器均是自动保存寄存器。
在此实施例中,上下文保存过程和恢复处理过程具有如下三个主要特征。
(1)只有产生上下文的微处理器和知道产生上下文的程序的加密密钥Kcode的人才可以将已保存的上下文内容解密。
(2)在一些执行码密钥X保护的程序被中断以及其上下文被保存的情况下,不能将其重新启动处理过程应用于非保护程序或利用另一个执行码密钥Y加密的程序的重新启动过程。换句话说,在重新启动时,利用另一个程序替换将由中断恢复的程序。
(3)禁止恢复被变更的上下文。换句话说,如果变更被保存的上下文,则该上下文不能被恢复。
利用上述特征(1),可以保持上下文信息的安全性,同时允许程序销售商分析上下文信息。为了通过根据用户使用程序的条件来分析产生故障的原因从而维护程序的质量,重要的是程序销售商具有分析上下文的权利。上述特征(2)能够有效防止攻击者为了分析程序B内的数据秘密或代码秘密或者变更程序B的运行,将通过执行程序A产生的上下文应用于另一个加密程序B并从上下文中保持的已知状态重新启动程序B。此功能还是如下所述的数据保护的先决条件,在数据保护中,多个应用程序中的各应用程序保持自有加密数据专用并独立于其它数据。
利用上述特征(3),可以严格避免利用重新启动程序的机会变更上下文信息。
提供这种功能的原因是为了根据处理器的秘密信息简单加密上下文信息可以防止按照攻击者的意图变更上下文信息,但是不可能避免由于随机错误重新启动程序导致随机变更上下文的可能性。
以下将详细说明具有上述三个特征的上下文保存和验证方法。
<上下文保存处理过程>
图10概念性示出根据此实施例的上下文保存格式。假设在保护程序的执行期间由于相关硬件原因或软件原因发生中断。如果对应于中断的IDT入口指明TSS,则此点的程序执行状态被加密,并被作为上下文信息保存到由当前任务寄存器725指明(而不是由TSS本身指明)的TSS。然后,将保存在IDT入口指明的TSS内的执行状态恢复到处理器。如果IDT入口未指明TSS,则只进行当前寄存器的加密和初始化,而且不会发生保存到TSS。当然,在这种情况下不可能重新启动该程序。然而,请注意,包括一部分标志寄存器和任务寄存器在内的系统寄存器被排除在寄存器的加密或初始化目标之外,以便继续OS运行。
实际上,图10所示的上下文内容是在块单元内被交错、加密,然后被存储到存储器。这里首先说明待存储的信息入口。在顶端,提供对应于各自特权描述的堆栈指针和用户寄存器802至825,然后接着设置指明TSS大小和加密的存在/不存在的一个字826。该字指明保存寄处理器的TSS是否被加密。即使在TSS被加密的情况下,此区域仍保持明文形式,无需进行加密。
此后,设置为了进行数据保护而附加的数据加密控制寄存器(CY0至CY3)区域827至830,并设置用于将大小调节到块长度的填充831。最后,设置:数值EKcode[Kr]832,利用使用执行码加密密钥Kcode的秘密密钥算法将其用于加密上下文的密钥Kr加密;数值EKp[Kr]833,利用处理器的公开密钥Kp将其用于加密上下文的密钥Kr加密;以及签名SKs[message]834,对它们使用处理器的秘密密钥Ks。此外,为了使OS能够进行任务调度,以明文形式将用于链接到先前任务的、在任务之间保持调用关系的区域801保存。
图4所示的异常处理单元131内上下文信息加密/解密单元254实现这些执行码加密过程和签名产生过程,它基于独立于执行码处理目标数据的加密过程的功能。在TSS内保存上下文信息时,即使利用其它数据加密功能在TSS导致规定了一些加密,但是可以忽略此规定并且以上下文加密的状态保存上下文信息。这是因为对各保护(加密)程序规定数据加密功能的加密属性,因此一些程序的重新启动不能依赖于此功能。
在加密上下文过程中,将以明文形式记录的TSS大小区域826内的字被复位为数值“0”。然后,进行与参考图7A和7B解释的交错相同的交错,并将上下文加密。此时,这样设置填充831的大小以致可以根据加密块的大小进行适当交错。
不利用处理器的公开密钥Kp或执行码加密密钥Kcode直接对寄存器进行加密的原因是为了允许程序销售商和处理器分析加密的上下文,而禁止用户对上下文进行解密。
由于程序销售商知道执行码加密密钥Kcode,所以程序销售商通过利用Kcode解密EKcode[Kr]可以获得上下文加密密钥Kr。此外,通过利用专用秘密密钥Ks解密EKp[Kr],微处理器101可以获得上下文加密密钥Kr。换句话说,程序销售商无需知道用户微处理器的秘密密钥通过解密上下文信息就可以分析故障,并且微处理器101本身通过利用自有秘密密钥Ks解密上下文信息可以重新启动执行。不具有这两个密钥的用户不能将保存的上下文信息解密。此外,不知道微处理器101的秘密密钥Ks的用户不可能对EKcode[Kr]和EKp[Kr]伪造上下文信息和签名SKs[message]。
为了使程序销售商和微处理器互相独立地对上下文信息进行解密,还可以考虑一种直接利用Kcode加密上下文信息的方法。然而,在已知寄存器状态的情况下,存在已知明文对执行码加密密钥Kcode攻击的可能性。换句话说,当用于加密数据的密钥数值固定时,就会产生下列问题。现在研究执行读取用户输入数据并通过对它进行加密临时将它写入工作存储器的程序的情况。通过监视存储器,可以确定将被加密并将被写入工作存储器的数据,因此,用户通过改变输入值可以重复输入多次并可以获得相应的加密数据。这意谓着,密码分析理论的选择明文攻击法是可能的。
已知明文攻击对秘密密钥算法并不是致命的,但是,仍然优先避免这种情况。为此,在每次保存上下文时,异常处理单元131内的随机数发生装置252产生随机数Kr,并将它送到上下文信息加密/解密单元254。通过使用随机数Kr的秘密密钥算法,上下文信息加密/解密单元254将上下文加密。然后,附加数值EKcode[Kr]832,通过同样的使用执行码密钥Kcode的秘密密钥算法可以将数值EKcode[Kr]832内的随机数Kr加密。通过使用微处理器的公开密钥Kp的公开密钥算法对随机数Kr进行加密可以获得数值EKp[Kr]833。
这里,随机数由随机数发生装置252产生。在程序被加密的情况下,通常程序码不发生变化,因此只要运行不被分析,就不可能非法获得相应的明文代码。既然是这样,为了进行密码分析就需要进行“仅知密文攻击法”攻击,因此,非常难以发现加密密钥。然而,在用户输入的数据将被通过加密存储到存储器的情况下,用户可以自由选择输入数据。为此,用户可以对密钥进行比“仅知密文攻击法”更有效的“选择明文攻击法”攻击。
为了防止选择明文攻击,可以采用一种措施通过将称为“盐”的随机数附加到待保护的明文将搜索空间加大。然而,以在应用编程层将“盐”随机数插入各数据中的方式保存到存储器很慢,因此,这样会降低编程的效率和效能。
为此,随机数发生装置252产生保存上下文时用于加密上下文的随机数(密钥)。由于可以任意选择密钥。因此可以在进程与进程之间或进程与设备之间实现更快速、安全、有效通信。这是因为,在存储器访问时用硬件加密数据的速度比用软件加密数据的速度慢得多。
相反,如果数据区域内的密钥数值被限制到规定的数值(例如:与执行码密钥相同的数值),这样就不可能对被利用其它密钥加密的或与设备共享加密数据的其它程序使用处理器的数据加密功能,因此,不可能利用处理器提供的快速硬件加密功能。
请注意,重新启动时进行的加密随机数Ekcode[Kr]832的解密过程和签名834的产生过程可以根据任何算法和秘密信息进行,只要满足条件:仅由微处理器可以实现加密随机数Ekcode[Kr]832的解密过程和签名834的产生过程即可。在上述实例中,对微处理器101唯一的秘密密钥Ks(它还用于执行码加密密钥Kcode的解密过程)用于加密随机数Ekcode[Kr]832的解密过程和签名834的产生过程,但是对这两种用途可以分别使用不同的数值。
此外,保存的上下文含有指明存在/不存在加密的标志,因此,根据需要,加密上下文信息和非加密上下文信息可以共存。以明文形式存储TSS的大小和指明存在/不存在加密的标志,因此可以容易地保持与过去程序的兼容性。
<重新启动中断程序的处理过程>
通过恢复上下文重新启动进程时,OS发布关于指明保存的TSS的TSS描述符的转移指令或调用指令。
参考图4,首先,利用处理器的秘密密钥Ks,异常处理单元131内的执行码密钥与签名验证单元257验证签名SKs[message]834,然后将验证结果送到异常处理单元255。验证结果失败时,异常处理单元255停止重新启动执行程序并产生异常。利用此验证,可以确认上下文信息确实是由具有秘密密钥的适当微处理器101产生的,并且未被变更。
当验证签名成功时,通过利用秘密密钥Ks解密上下文密钥EKp[Kr]833,上下文信息加密/解密单元254获得随机数Kr。反之,从页表缓冲器230内取出对应于程序计数器(EIP)809的执行码密钥Kcode,并将它送到当前代码密钥存储单元251。上下文信息加密/解密单元254利用执行码解密密钥Kcode将EKcode[Kr]解密,并将结果送到执行码密钥与签名验证单元257。执行码密钥与签名验证单元257验证EKcode[Kr]832的解密结果是否与微处理器利用秘密密钥Ks的解密结果一致。通过验证,可以确认此上下文信息是在执行利用秘密密钥Kcode加密的执行码时产生的。
如果不对上下文信息进行执行码加密密钥验证,则用户可以通过产生利用任意适当秘密密钥Ka加密的代码进行攻击并将通过执行这些代码获得的上下文信息应用于利用其它秘密密钥Kb加密的代码。上述验证排除了进行这种攻击的可能性并保证了保护码上下文信息的安全。
通过将秘密执行码密钥Kcode附加到上下文信息,也可以实现此目的,但是在此实施例中,通过使用利用程序销售商选择的执行码密钥Kcode对其用于加密上下文信息的秘密随机数Kr进行加密的数值EKcode[Kr],可以降低保存上下文信息所要求的存储量,因此,可以实现快速上下文转换和快速存储器保存。这还可以将上下文信息反馈到程序创建者。
当通过执行码密钥与签名验证单元257进行的执行码密钥的验证和签名的验证均成功时,将上下文恢复到寄存器文件253,并且恢复程序计数器数值,结果,在执行产生此上下文的中断时,控制返回地址。
当这两种验证中的任何一个验证失败以致异常处理单元255引起异常产生时,异常出现地址指明发布转移指令或调用指令的地址。此外,将指明TSS非法的数值存储到IDT表内的中断起因字段,并将转移目标TSS地址存储到存储中断起因地址的寄存器。同样,OS可以得知上下文转换失败的原因。
请注意,为了实现快速重新启动处理过程,还可以使用一种配置,在这种配置中,将由上下文信息加密/解密单元254加密的执行状态送到寄存器文件253与执行码密钥与签名验证单元257进行的验证处理过程并行进行,并且当验证失败时停止后续处理。
这种利用随机数的加密方法的安全性依赖于预测所使用的随机数序列的不可能性,在Onodera等人的第2980576号日本专利中披露了一种利用硬件产生非常难于预测的随机数的方法。
在根据用户使用程序的条件分析程序中产生故障的原因来改善程序质量方面,一个重要方面是程序销售商对上下文信息进行分析。在此实施例中,鉴于这种情况,所以采用既能实现上下文的安全性又能使程序销售商具有分析上下文信息的能力的上述方法,但是还有一个事实是使用该方法会增加上下文保存的开销。
此外,利用微处理器设定的签名对上下文信息进行验证可以防止利用任意选择的数值和密钥的组合执行非法上下文信息内的保护码,但是这种附加保护同样会增加开销。
因此,在不需要程序销售商具有分析上下文信息的能力或不需要排除利用非法上下文信息重新启动程序的机制的情况下,可以利用处理器的秘密密钥将含有用于标识执行码密钥信息的信息直接加密。即使在这种情况下,仍可以使利用密码方法随意变更上下文成为不可能,并可以防止上下文信息被施加到利用不同密钥加密的程序。
这里将进一步说明上下文保存格式。之后说明其与运行的关系。
在图10中,“R”位825-1是指明上下文是否可以重新启动的位。当将此位设置为“1”时,通过利用上述恢复过程恢复保存在上下文中的状态可以重新启动执行,而当此位被设置为“0”时,不能进行重新启动。其效果是可以防止重新启动在加密程序的执行期间检测到其非法性的上下文,因此将可重新启动的上下文仅限制到处于适当状态的上下文。
“U”位825-2是指明TSS是用户TSS还是系统TSS的标志。当此位被设置为“0”时,则所保存的TSS是系统TSS,而当此位被设置为“1”时,则所保存的TSS是用户TSS。通过如上所述伴随改变异常入口特权的任务切换或通过任务门调用可以保存或恢复的TSS为系统TSS。
系统TSS和用户TSS的差别在于,在恢复TSS时,指明当前执行程序的TSS保存地址的任务寄存器是否被更新。在系统TSS的恢复过程中,以链接到将被重新恢复的TSS的先前任务区域801的形式保存当前执行程序的任务寄存器,并将新TSS的段选择符读入任务寄存器。相反,在用户TSS的恢复过程中,不更新任务寄存器数值。用户TSS的目的仅在于程序寄存器状态的保存和恢复,因此特权模式不会发生变化。
异常包括应用程序进行系统调用的软件中断。在软件中断是为了进行系统调用的情况下,通用寄存器通常被用于参数交换,并且存在上下文信息加密过程妨碍参数交换的情况。
由于应用程序本身产生软件中断,所以在发生软件中断之前,应用程序可以破坏具有秘密的寄存器的信息。在这种假定条件下,可以使用一种只有软件中断情况不对寄存器进行加密的方法。当然,在这种情况下,应用程序创建者应考虑此事实并设计程序,从而可以保护程序的秘密。
接着将说明明文程序调试功能的抑制过程。
处理器具有:分步执行功能,每当执行指令时该功能总会产生中断;和调试功能,每当对特定地址进行存储器访问时该功能总会产生异常。这些功能对于程序开发来说有用,但是它们损害为了进行秘密保护被加密的程序的安全。因此,在此实施例的微处理器中,在执行加密程序期间对这种调试功能进行了抑制。
指令TLB 121可以判别当前执行码是否被保护(是否被加密)。在保护码的执行期间,为了防止调试标志和调试寄存器侵入加密程序分析,包括调试寄存器功能和分步执行功能的两种功能被禁止。
在调试寄存器功能中,事先将作为执行码和执行数据的存储器访问范围和访问方式(例如:读/写)设置到处理器内的调试寄存器,这样,每当发生相应的存储器访问时总会发生中断。在此实施例中,在保护码的执行期间,设置到调试寄存器的内容将被忽略,所以不会为了进行调试发生中断。然而,请注意,调试位被设置到页表被排除在此规则外。后面将对页表内的调试位进行说明。
在非保护码(明文)的执行中,如果EFLAGS寄存器内的分步执行位被置位,则每当执行一条指令时总会发生中断,但是在保护码的执行期间,此位也将被忽略,因此不会发生中断。
在此实施例中,除了为了防止分析加密执行码之外,通过利用调试寄存器或调试标志防止对程序进行动态分析,这些功能还使得用户难于对程序进行分析。
<数据保护>
接着将说明执行码处理目标数据的保护过程。
在此实施例中,保护数据的加密属性被限定到在微处理器101内部设置的四个寄存器CY0至CY3。它们对应于图9所示的区域717至720。在图9中,寄存器CY0至CY2的细节被省略,只示出寄存器CY3的细节。
现在以CY3寄存器717为例说明加密属性的各元素。在基地址717-1内规定指明待加密区域顶部的逻辑地址高位。在大小区域717-4内规定区域的大小。由于区域的大小是以高速缓存行为单位说明的,所以在低位存在无效部分。在区域717-5规定数据加密密钥。由于这里使用了秘密密钥算法,所以还将区域717-5用于解密密钥。当规定密钥数值为“0”时,就意谓着该寄存器指明的区域未被加密。
在区域的说明中,CY0给出最高优先权,而CY1至CY3依序给出连续较低优先权。例如,当CY0和CY1规定的区域重叠时,给出CY0的属性,即其优先权高于该区域内的CY1的优先权,此外,给出页表限定,即在作为执行码而不是作为处理目标数据进行存储器访问时具有最高优先权。
调试位717-4用于选择是在加密状态下还是在明文状态下进行调试状态中的数据运行。后面将说明调试位的细节。
图12示出在执行码处理目标数据的加密/解密过程中的信息流。这里,只在代码被保护状态下进行数据保护,即在加密状态下执行代码。然而,请注意,在以下说明的在调试状态下执行代码的情况被排除在此规则外。当代码被保护时,将数据加密控制寄存器(还可以称为:加密属性寄存器或数据保护属性寄存器)的内容CY0至CY3从图4所示的寄存器文件253读到在数据TLB 141内设置的数据密钥表236。
当某些指令将数据写入逻辑地址“Addr”时,通过校验数据密钥表236(参考图4),数据TLB 141判别逻辑地址“Addr”是否包含在CY0至CY3的范围内。通过判别,如果规定加密属性,数据TLB 141命令代码加密功能块212,在将对应的高速缓存行从L1数据高速缓存218存储器写入到存储器时利用规定的密钥对存储器内容加密。
同样,在读取情况下,如果目标地址具有加密属性,则数据TLB 141命令数据解密功能块219,在将高速缓存行读出到相应的L1数据高速缓存218时利用规定的密钥将该数据解密。
在此实施例中,通过在微处理器101内部的寄存器内设置所有数据加密属性,防止数据加密属性被非法重写(包括OS特权),并在执行中断时将寄存器内容作为上下文信息以安全的方式保存到微处理器101外部的存储器(例如:图4所示的主存储器281)。
正如上述关于上下文加密中说明的那样,以交错的高速缓存行为单位进行数据加密/解密。为此,即使在重写L1高速缓存114上的一个数据位时,则在存储器重写高速缓存行内的其它位。以高速缓存行为单位选择性地进行数据读/写,因此,增加的开销并不很大,但是,应该注意,不能以小于或等于高速缓存行大小的单位对加密存储区进行读/写。
以上说明了根据此实施例通过加密保护数据的方法。利用此方法,在主存储器上,可以通过利用密钥和应用程序规定的存储范围,在处理器内部将数据加密来处理加密数据,并根据应用程序的要求将它们作为明文数据读/写。
接着将说明两种机制,这两种机制均用于利用已读取这些数据的加密程序之外的程序(以下将被称为:其它程序)防止读取以明文形式存储在处理器内部的高速缓冲存储器内的数据。
首先,利用其密钥标识程序。利用在处理器内解密当前执行的指令时使用的密钥对象标识符进行此标识。在此,可以将密钥本身的数值用于此标识,但是执行码密钥的数值的大小多少有些大,即在解密前为1024位,而在解密后为128位。这样就会增加硬件的大小,因此使用总长度仅为10位的密钥对象标识符。
将存储解密执行码的L1指令高速缓存213具有与高速缓存行相符的属性存储器。当利用代码解密功能块212将解密执行码存储到L1指令高速缓存213时,将密钥对象标识符写入属性存储器。
此外,在从存储器读取加密数据并将它解密时,将数据保护属性寄存器CY0至CY3的内容从寄存器文件253读出到数据TLB 141的保护表管理功能块233。此时,还同时将对应于当前执行指令的密钥对象标识符从当前代码密钥存储单元251读出并保存到保护表管理功能块233。
与指令高速缓存的情况相同,数据高速缓存218也具有与高速缓存行相符的属性存储器。当利用数据解密功能块219将从存储器读出的数据解密并存储到L1数据高速缓存218时,将密钥对象标识符从保护表管理功能块233写入属性存储器。
当某些指令被执行并进行数据引用时,利用秘密保护破坏检测单元256将写入数据高速缓存属性的密钥对象标识符与指令高速缓存中该指令的密钥对象进行比较。如果它们不一致,则发生秘密保护破坏异常并且数据引用失败。在数据高速缓存属性指明明文的情况下,数据引用总是成功的。
请注意,当指令属性和数据属性不一致时,不是产生异常,而是会删除数据高速缓存的内容并再一次从存储器重读数据。
例如,现在研究执行码密钥以及数据保护属性寄存器CY0至CY3不同的程序-1和程序-2。如果由程序-1引用并写入高速缓存的加密数据被程序-2引用,则程序-2将读出不同的数据。此操作与保护秘密的目的一致。
如果两个程序具有相同数据密钥并且它们将相同地址的数据引用,则将读取相同数据,因此在它们之间可以共享此数据。
同样,在此实施例中,通过提供用于保持将执行指令的属性的功能块和指明它们最初所属的程序的数据,另一个程序-2可以防止程序-1产生的数据被引用,并在因为执行指令进行数据引用时,对它们的属性进行比较以检验它们是否一致。
<入口门>
在此实施例中,可以将控制从非保护码转移到保护码的情况仅限于下列两种:
(1)与重新启动地址一致的、利用执行码密钥加密的上下文(即:具有随机数的上下文)将被重新启动的情况;以及
(2)通过执行连续码或利用转移指令或调用指令,可以将控制从非保护码转移到保护码的入口门指令(“egate”指令)。
设置这种限制是为了防止攻击者通过执行任意位置的代码获得代码分段信息。在关于上下文恢复的说明中已经说明了上述(1)的过程。即,只有当上下文信息与在含有中断之前立即执行的代码的执行码密钥被验证一致,并验证微处理器101提供的正确签名被附加时,才将控制转移到保护码执行。
上述(2)是这样一种处理过程,即在将控制从非保护码转移到保护码的情况下,除非在控制开始时执行入口门(“egate”)指令调用的专用指令,否则就禁止转移到保护码的执行。
图11示出根据入口门指令转换保护域的过程。微处理器101将当前执行码的密钥保存到异常处理单元131的当前代码密钥存储单元251(如图4所示)。首先,判别此密钥数值是否与指令的执行同时改变(步骤601)。当检测到密钥数值发生变化时(步骤601中为NO),接着就校验在密钥数值发生变化的同时执行的指令是否是入口门(“egate”)指令(步骤602)。如果是入口门指令,就表示它是正确指令,因此可以将控制转移到已变化代码。因此,当被判别此指令是入口门指令(步骤602中为YES)时,就执行此指令。
相反,当判别该指令不是入口门指令(步骤602中为NO)时,就表示被中断的指令不是正确指令。既然如此,就判别刚执行的指令是否是加密(保护)指令(步骤603)。如果是非保护指令,就直接进行异常处理,但是,如果是保护指令,则需要进行异常处理同时保护该指令。
因此,当判别该指令为非保护指令(步骤603中为NO)时,就直接进行异常处理,而当判别该指令为保护指令(步骤603中为YES)时,则进行不能重新启动的异常处理,同时保持该保护状态。
利用此控制转移限制,禁止将控制从明文码直接转移到非入口门指令地址处的代码。恢复上下文意谓着恢复曾经被该程序通过入口门执行的状态。因此,必须通过入口门才能执行保护程序。通过在程序中将放置入口门的地址抑制到最小必要数,产生的效果是,可以防止通过执行各种地址上的程序猜测程序结构来进行攻击。
此外,在此入口门,对此数据保护属性寄存器进行初始化。当执行此入口门时,将随机数Kr载入图9所示的数据保护属性寄存器CY0至CY3中的717至720内的密钥区域(CY3内的区域717-5)。将加密目标顶部地址设置为“0”,将大小设置为存储器的最高限,并将逻辑地址空间设置为加密目标。如果在执行码中为设置调试属性,则将调试位(CY3内的717-3)设置为非调试。
换句话说,在开始执行加密码时,利用执行入口门时确定的随机数Kr,将所有的存储器访问加密。此外,如上所述,在执行码加密控制中,在页表定义中给出更高优先权。所产生的此随机数Kr独立于在上下文加密中使用的随机数。
利用此机制,将被新执行的保护程序被设置为总是被利用在所有存储器访问开始时随机确定的密钥加密。
当然,在此状态下,整个存储区被加密,因此不可能通过存储器或与其它程序进行数据交换来调用系统参数。为此,通过置位数据保护属性寄存器连续调节其处理环境,以致将必要存储区转换到明文从而可以访问此存储区,该程序进行处理过程。通过在利用随机数加密的初始设置中给予寄存器CY3较低优先权,同时将密钥设置为“0”作为其它寄存器的明文访问设置,由于通过加密被保持秘密的明文数据和写入数据会因为错误被驱出明文区域,所以可以降低访问非必要区域的风险。
即使是在入口门进行初始化时,数据保护属性寄存器之外的寄存器的内容也不被加密,并且在此可以存储指明堆栈地址或参数地址的指针。然而,应该注意,在将通过入口门执行的程序的处理过程中,通过将非法数值设置到寄存器调用入口门,程序的秘密就不会被窃用。
还可以使用一种配置,在这种配置中,在认为安全具有更重要意义时,在入口门将包括除数据保护属性寄存器之外的通用寄存器在内的所有寄存器初始化,而不将标志和程序计数器初始化,但是这样会使编程更受限制并且效率更低。即使如此,也可以通过由程序计数器的相对地址或绝对地址指定的存储区交换诸如堆栈的参数。然而,请注意,与保存上下文的情况相同,包括部分标志寄存器和任务寄存器的系统寄存器被排除在加密寄存器或初始化寄存器的目标之外以便OS继续运行。
既然如此,在根据此实施例的微处理器中,由于在控制从明文状态转移到保护程序时,将将要执行的第一条指令限制为入口门指令,并且通过执行入口门指令将包括数据保护属性寄存器内在的寄存器初始化,所以可以防止分段执行保护码,尤其可以防止非法设置数据保护状态。
接着将说明保护程序的控制过程。首先说明在保护域内被关闭的调用和转移。保护域内中的调用与普通程序中的调用完全相同。图13概念性示出保护域内的调用和转移。
当保护域外的线程1121转移到保护域“egate”(入口门)指令时,保护域内的代码1101开始执行。通过执行“egate”指令,所有寄存器均被初始化,然后通过执行程序,顺序建立数据保护属性。利用“jmpxxx”指令(处理过程1122),将控制转移到保护域内的转移目标“xxx”1111,然后执行位于地址“ppp”1112的“call yyy”指令(处理过程1123)。将调用源地址“ppp”1112推入堆栈存储器1102,并将控制转移到调用目标“yyy”1113。当调用目标处的处理被完成并执行“ret”指令时,将控制转移到堆栈返回地址“ppp”1112。不存在对执行控制的限制,但是执行码密钥保持不变。
接着,将说明从保护域到非保护域的调用和转移过程。对于此控制转移,为了避免从保护域转移到程序创建者不希望的非保护域并为了保护数据保护状态,所以进行如下所述的专用指令的执行和用户TSS运行。
图14概念性示出从保护域转移到非保护域的调用和转移,其中保护域的执行码1201和非保护域的执行码1202被设置到各自域内。此外,提供用于与非保护域交换参数的用户TSS区域1203和区域1204。
当线程1221执行“egate”指令时开始执行。在调用非保护域代码之前,保护域程序将用户TSS区域1203的地址保存到规定的参数区域1204。然后,通过执行“ecall”指令调用非保护域代码。“ecall”指令有两个操作数,一个是调用目标地址,另一个是执行状态的保存目标。调用时,“ecall”指令将寄存器状态(或更准确地说,当程序计数器处于发出“ ecall”指令后的状态时的寄存器状态)以与上述描述的加密TSS情况的格式相同的格式保存到由操作数“uTSS”规定的区域。以下将此区域称为用户TSS。
用户TSS与系统TSS之间的差别在于,图10所示的用户寄存器中,将U标志设置到TSS上的区域825-2。后面将说明操作方面的差别。与将上下文信息保存到系统TSS的情况相同,在将用户TSS保存到存储器过程中,也未使用用户在数据保护属性寄存器CY0至CY3中规定的数据保护属性。
由于通过执行“ecall”指令寄存器被初始化,所以非保护域的调用目标代码不能交换参数。为此,从规定地址“param”1204获得参数,并完成必要处理过程。在非保护域内对编程没有限制。在图14所示的实例中,调用子例程“qqq”1213(处理过程1225)。通过设置用于将堆栈指针设置和参数拷贝到堆栈的适配器代码,从保护域的调用适用于子例程“qqq”的调用语义,例如在“exx”与“qqq”调用之间。通过存储器上的参数区域1204将处理结果送到调用源(处理过程1226)。完成子例程的处理过程时,为了将控制返回调用源保护域,发出“sret”指令(处理过程1227)。
与没有操作数的“ret”指令不同,“sret”指令具有一个用于规定用户TSS的操作数。在此,通过存储在参数区域“param”1204的指针,可以间接将用户TSS 1203规定为恢复信息。利用“sret”指令的用户TSS恢复过程与系统TSS的恢复过程的主要差别在于,即使在恢复用户TSS时任务寄存器也完全不会受影响。用户TSS的任务链接字段被忽略。当在“sret”指令的操作数中规定具有被设置为“0”的U标志的系统TSS时,恢复将失败。
进行恢复时,进行上述说明的执行状态的解密过程和执行码密钥与签名的验证过程,并且当检测到破坏时,将产生秘密保护破坏异常。当验证成功时,从紧跟在调用源“ecall”指令之后的指令开始重新启动执行。此地址被加密并被标记到用户TSS,因此用密码的方法不可能伪造此地址。除程序计数器之外的所有寄存器被设置到调用前的状态,保护域的代码从参数区域1204获得子例程“exx”的执行结果。
在完成保护域的处理过程后将控制转移到非保护域时,使用“ejmp”指令。与“ecall”指令不同,“ejmp”指令不进行状态保存。如果利用“ecall”指令和“ejmp”指令之外的指令(例如:“jmp”指令和“call”指令)将控制从保护域转移到非保护域,则产生秘密保护破坏异常并将加密上下文信息保存到系统TSS区域(任务寄存器指明的区域)。请注意,此时,将上下文信息标记为不能重新启动。还请注意,将保护域内的地址规定为“ejmp”指令的转移目标不会产生破坏。
现在完成了对从保护域到非保护域的调用过程以及在此过程中新增加的指令的说明。
应用程序恢复用户TSS时,利用具有特权的OS替换用户TSS进行攻击不是完全不可能。然而,只要正确管理保护域执行码密钥,在这种情况下可交换的TSS信息显然只有上下文信息,上下文信息的执行总是通过“egate”指令开始进行,并且通过保存由中断或用户产生的执行状态来保存上下文信息。由于交换此上下文信息而泄露应用程序的秘密的可能性非常小,并且攻击者非常难于猜测到在获取应用程序秘密时哪种上下文信息交换是必须的。
如果在调用目标首先执行的是调用源侧的“egate”指令,则上述描述的从保护域到非保护域的调用过程还可以应用于控制在保护域之间转移的过程。
既然如此,通过对在保护域之间交换参数的区域进行加密,通过利用共享的密钥事先在这些保护域之间进行验证密钥交换,可以在保护域之间进行安全调用。
如上所述,根据本方面的微处理器,在多任务情况下,通过利用加密过程保护执行码和执行码的处理目标数据,可以防止OS或第三者进行非法分析。
此外,在保存加密数据情况下,它还可以防止非法重写加密属性。
此外,利用任意随机数Kr而不是利用固定密钥作为处理目标数据的密钥,它还可以防止加密数据被非法攻击。
此外,它还可以在明文状态进行调试,并且当发现错误时,可以将错误反馈送到知道执行码密钥的程序销售商。
此外,通过附加微处理器的签名将要求秘密保护的信息(例如:加密属性信息)保存到外部存储器,通过仅将必要部分读入微处理器内部的寄存器,以及通过在读取时进行签名验证,它还可以防止增加微处理器内的存储器并降低微处理器的成本。在此方法中,还可以确保防止读取时进行置换。
还请注意,除了以上说明的方法之外,根据上述实施例所作的许多变更和变换均离不开本发明的新颖特征和优势特征。因此,所有这些变更或变换均应属于所附权利要求所述的本发明范围。
Claims (20)
1.一种具有不能被读出到外部的唯一秘密密钥和与该唯一秘密密钥对应的唯一公开密钥的微处理器,该微处理器包括:
读取单元,被进行配置以从外部存储器读出多个利用不同执行码密钥加密的程序;
解密单元,被进行配置以利用各自解密密钥,对多个通过读取单元读出的程序进行解密;
执行单元,被进行配置以执行多个利用解密单元解密的程序;
上下文信息保存单元,被进行配置以将其执行被中断的一个程序的上下文信息保存到外部存储器或保存到在微处理器内部设置的上下文信息存储器,该上下文信息含有指明此程序的执行状态和此程序的执行码密钥的信息;以及
重新启动单元,被进行配置以通过从外部存储器或上下文信息存储器读出上下文信息并通过从上下文信息中恢复此程序的执行状态,重新启动执行此程序。
2.根据权利要求1所述的微处理器,其中所配置的上下文信息保存单元利用公开密钥对上下文信息进行加密,并将加密上下文信息保存到外部存储器;以及
所配置的重新启动单元通过从外部存储器读出加密上下文信息,利用秘密密钥解密加密上下文信息,以及从解密上下文信息中恢复一个程序的执行状态,重新启动此程序的执行。
3.根据权利要求2所述的微处理器,其中仅当包含在解密上下文信息内的解密执行码密钥与此程序的执行码密钥一致时,重新启动单元才重新启动此程序的执行。
4.根据权利要求2所述的微处理器,其中重新启动单元将包含在解密上下文信息内的解密执行码密钥用作解密密钥以解密此程序。
5.根据权利要求1所述的微处理器,其中所配置的上下文信息保存单元以明文形式将上下文信息保存到此程序被中断后所执行的另一个程序不可读的上下文信息存储器;以及
通过从上下文信息存储器读出上下文信息并从上下文信息恢复此程序的执行码,所配置的重新启动单元重新启动此程序的执行。
6.根据权利要求5所述的微处理器,其中重新启动单元根据另一个程序规定的指令重新启动此程序的执行。
7.根据权利要求6所述的微处理器,其中在此程序的执行被中断时,上下文信息保存单元将上下文信息保存到上下文信息存储器,并利用公开密钥将上下文信息存储器内的上下文信息加密,然后根据另一个程序规定的另一条指令的执行,将加密上下文信息存储到外部存储器。
8.根据权利要求5所述的微处理器,其中在此程序的执行被中断时,上下文信息保存单元将上下文信息保存到上下文信息存储器,利用公开密钥将上下文信息存储器内的上下文信息加密,然后将加密上下文信息存储到另一个程序规定的外部存储器。
9.根据权利要求1所述的微处理器,其中所配置的上下文信息保存单元产生作为临时密钥的随机数、加密上下文信息、然后将加密上下文信息存储到外部存储器,加密上下文信息含有:第一数值,通过对信息进行加密获得,利用临时密钥指明此程序的执行状态;以及第二数值,通过利用公开密钥加密临时密钥获得;以及
通过从外部存储器读出加密上下文信息,利用秘密密钥由包含在加密上下文信息内的第二数值解密获得临时密钥,利用解密的临时密钥由包含在加密上下文信息内第一数值解密出指明执行状态的信息,以及从解密上下文信息恢复此程序的执行状态,所配置的重新启动单元重新启动此程序的执行。
10.根据权利要求9所述的微处理器,其中上下文信息保存单元保存还含有利用此程序的执行码密钥对临时密钥进行加密获得的第三数值的加密上下文信息。
11.根据权利要求10所述的微处理器,其中重新启动单元利用秘密密钥由包含在加密上下文信息内的第二数值解密获得第一临时密钥,并利用第一解密临时密钥由包含在加密上下文信息内的第一数值解密获得指明执行状态的信息,同时利用该程序的执行码密钥由包含在加密上下文信息内的第三数值解密获得第二临时密钥,然后只在第一解密的临时密钥与第二解密的临时密钥一致时,重新启动此程序的执行。
12.根据权利要求1所述的微处理器,该微处理器进一步包括:
执行状态存储单元,用于存储当前执行程序的执行状态;以及
执行状态初始化单元,被进行配置以在此程序被中断后而在另一个程序开始之前,将执行状态存储单元的内容初始化为规定数值或将执行状态存储单元的内容加密。
13.根据权利要求1所述的微处理器,该微处理器进一步包括:
密钥读取单元,被进行配置以从外部存储器读出被事先利用公开密钥加密的各程序的执行码密钥;以及
密钥解密单元,被进行配置以利用秘密密钥解密通过密钥读取单元读出的执行码密钥;
其中解密单元利用作为解密密钥的执行码密钥解密各程序。
14.根据权利要求1所述的微处理器,该微处理器进一步包括:
执行状态存储单元,用于存储当前执行程序的执行状态和将被当前执行程序处理的数据的加密属性;以及
数据加密单元,被进行配置以根据存储在执行状态存储单元的加密属性对将由当前执行程序处理的数据进行加密。
15.根据权利要求1所述的微处理器,该微处理器进一步包括:
执行状态存储单元,用于存储当前执行程序的执行状态、将被当前执行程序处理的数据的加密属性以及用于规定加密属性的加密属性规定信息;
相关信息写入单元,被进行配置以将涉及加密属性规定信息并含有利用秘密密钥获得的签名的相关信息写入外部存储器;
相关信息读出单元,被进行配置以根据将由当前执行程序引用的数据的地址从外部存储器读出相关信息;
数据引用许可单元,被进行配置以利用公开密钥验证包含在相关信息内的签名,并且只有当相关信息内的签名与微处理器的原始签名一致时,才允许当前执行程序根据相关信息和规定信息的加密属性,通过确定密钥和用于数据引用的算法进行数据引用;以及
数据加密单元,被进行配置以根据存储在执行状态存储单元的加密属性将由当前执行程序引用的数据加密。
16.根据权利要求1所述的微处理器,该微处理器进一步包括:
高速缓冲存储器,用于以高速缓存行为单位高速缓存多个程序的明文指令和明文数据,该高速缓冲存储器具有属性区用于各高速缓存行,指明在解密其指令被高速缓存到各高速缓存行的各程序或其执行会将明文数据高速缓存到各高速缓存行的各程序时用于唯一标识解密密钥的解密密钥标识符;
高速缓存访问控制单元,被进行配置以只有当加密属性对一个高速缓存行指明的解密密钥标识符与加密属性对另一个高速缓存行指明的解密密钥标识符一致时,允许通过根据另一个高速缓存行内的一个高速缓存数据执行一个存储在一个高速缓存行的高速缓存程序引起的数据引用。
17.根据权利要求16所述的微处理器,其中当不允许进行数据引用时,将数据从外部存储器高速缓存到另一个高速缓存行。
18.根据权利要求16所述的微处理器,其中当不允许进行数据引用时,保护异常中断此高速缓存程序的执行。
19.根据权利要求1所述的微处理器,其中执行单元还执行明文程序,并具有调试功能块,在明文程序的执行期间,当执行特定地址或地址区域的程序时或将数据引用到特定地址或地址区域的数据时,该调试功能块用于产生异常,在执行加密程序期间,此调试程序无效。
20.根据权利要求1所述的微处理器,其中该微处理器的各组成单元包含在单一芯片或单一封装内。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000035898A JP3801833B2 (ja) | 2000-02-14 | 2000-02-14 | マイクロプロセッサ |
JP035898/2000 | 2000-02-14 | ||
JP135010/2000 | 2000-05-08 | ||
JP2000135010A JP4226760B2 (ja) | 2000-05-08 | 2000-05-08 | マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1309351A CN1309351A (zh) | 2001-08-22 |
CN1189819C true CN1189819C (zh) | 2005-02-16 |
Family
ID=26585335
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB011045124A Expired - Fee Related CN1220121C (zh) | 2000-02-14 | 2001-02-14 | 程序分发设备、客户设备、程序分发系统和程序分发方法 |
CNB011030003A Expired - Fee Related CN1189819C (zh) | 2000-02-14 | 2001-02-14 | 抗干预微处理器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB011045124A Expired - Fee Related CN1220121C (zh) | 2000-02-14 | 2001-02-14 | 程序分发设备、客户设备、程序分发系统和程序分发方法 |
Country Status (5)
Country | Link |
---|---|
US (3) | US6983374B2 (zh) |
EP (2) | EP1126356B1 (zh) |
KR (2) | KR100362219B1 (zh) |
CN (2) | CN1220121C (zh) |
DE (1) | DE60135695D1 (zh) |
Families Citing this family (208)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7996670B1 (en) | 1999-07-08 | 2011-08-09 | Broadcom Corporation | Classification engine in a cryptography acceleration chip |
US6983374B2 (en) | 2000-02-14 | 2006-01-03 | Kabushiki Kaisha Toshiba | Tamper resistant microprocessor |
US6895506B1 (en) * | 2000-05-16 | 2005-05-17 | Loay Abu-Husein | Secure storage and execution of processor control programs by encryption and a program loader/decryption mechanism |
US6986052B1 (en) | 2000-06-30 | 2006-01-10 | Intel Corporation | Method and apparatus for secure execution using a secure memory partition |
FR2817067B1 (fr) * | 2000-11-21 | 2003-02-21 | Cyber Comm | Procede et dispositif d'authentification de documents electroniques au moyen d'une signature numerique |
US20020114457A1 (en) * | 2001-01-26 | 2002-08-22 | Takahiro Sato | LSI having interpreter function and information recording/reproducing apparatus using the same |
US7260820B1 (en) | 2001-04-26 | 2007-08-21 | Vm Ware, Inc. | Undefeatable transformation for virtual machine I/O operations |
US7428636B1 (en) * | 2001-04-26 | 2008-09-23 | Vmware, Inc. | Selective encryption system and method for I/O operations |
CN1212565C (zh) * | 2001-05-14 | 2005-07-27 | 株式会社Ntt都科摩 | 应用程序发送系统和应用程序管理方法 |
US7051332B2 (en) * | 2001-05-21 | 2006-05-23 | Cyberscan Technology, Inc. | Controller having a restart engine configured to initiate a controller restart cycle upon receipt of a timeout signal from a watchdog timer |
US7979740B2 (en) * | 2001-05-21 | 2011-07-12 | Mudalla Technology, Inc. | Gaming machine having game play suspension and resumption features using biometrically-based authentication and method of operating same |
US7478266B2 (en) * | 2001-05-21 | 2009-01-13 | Mudalla Technology, Inc. | Method and apparatus for fast transaction commit over unreliable networks |
US7237121B2 (en) * | 2001-09-17 | 2007-06-26 | Texas Instruments Incorporated | Secure bootloader for securing digital devices |
US7181530B1 (en) * | 2001-07-27 | 2007-02-20 | Cisco Technology, Inc. | Rogue AP detection |
JP2003051819A (ja) * | 2001-08-08 | 2003-02-21 | Toshiba Corp | マイクロプロセッサ |
CA2461408C (en) * | 2001-09-28 | 2012-06-05 | High Density Devices As | Method and device for encryption/decryption of data on mass storage device |
JP4226816B2 (ja) * | 2001-09-28 | 2009-02-18 | 株式会社東芝 | マイクロプロセッサ |
US20040255136A1 (en) * | 2001-11-12 | 2004-12-16 | Alexey Borisovich Fadyushin | Method and device for protecting information against unauthorised use |
US20030115471A1 (en) * | 2001-12-19 | 2003-06-19 | Skeba Kirk W. | Method and apparatus for building operational radio firmware using incrementally certified modules |
KR100458515B1 (ko) * | 2001-12-21 | 2004-12-03 | 한국전자통신연구원 | 무선 인터넷을 통한 이동 단말용 응용프로그램 설치시스템 및 그 방법 |
US7305567B1 (en) * | 2002-03-01 | 2007-12-04 | Cavium Networks, In. | Decoupled architecture for data ciphering operations |
KR20030075018A (ko) * | 2002-03-15 | 2003-09-22 | 주식회사 셈틀로미디어 | 변조 방지용 소프트웨어 파일 생성 장치와 그 소프트웨어파일의 자가 무결성 검증 방법 및 클라이언트-서버환경에서의 소프트웨어 파일의 자가 무결성 검증 방법 |
US7900054B2 (en) * | 2002-03-25 | 2011-03-01 | Intel Corporation | Security protocols for processor-based systems |
JP2003330365A (ja) * | 2002-05-09 | 2003-11-19 | Toshiba Corp | コンテンツ配布/受信方法 |
CN1296790C (zh) | 2002-06-05 | 2007-01-24 | 富士通株式会社 | 存储器管理单元、代码验证装置以及代码译码装置 |
US7392415B2 (en) * | 2002-06-26 | 2008-06-24 | Intel Corporation | Sleep protection |
JP4073913B2 (ja) * | 2002-07-09 | 2008-04-09 | 富士通株式会社 | 開放型汎用耐攻撃cpu及びその応用システム |
JP2004054834A (ja) | 2002-07-24 | 2004-02-19 | Matsushita Electric Ind Co Ltd | プログラム開発方法、プログラム開発支援装置およびプログラム実装方法 |
US20040017918A1 (en) * | 2002-07-24 | 2004-01-29 | Christophe Nicolas | Process for point-to-point secured transmission of data and electronic module for implementing the process |
EP1429224A1 (en) * | 2002-12-10 | 2004-06-16 | Texas Instruments Incorporated | Firmware run-time authentication |
JP4099039B2 (ja) * | 2002-11-15 | 2008-06-11 | 松下電器産業株式会社 | プログラム更新方法 |
US7137109B2 (en) * | 2002-12-17 | 2006-11-14 | Hewlett-Packard Development Company, L.P. | System and method for managing access to a controlled space in a simulator environment |
US20040123120A1 (en) * | 2002-12-18 | 2004-06-24 | Broadcom Corporation | Cryptography accelerator input interface data handling |
US7434043B2 (en) | 2002-12-18 | 2008-10-07 | Broadcom Corporation | Cryptography accelerator data routing unit |
US7568110B2 (en) | 2002-12-18 | 2009-07-28 | Broadcom Corporation | Cryptography accelerator interface decoupling from cryptography processing cores |
US20040123123A1 (en) * | 2002-12-18 | 2004-06-24 | Buer Mark L. | Methods and apparatus for accessing security association information in a cryptography accelerator |
US7512811B2 (en) | 2003-01-14 | 2009-03-31 | Canon Kabushiki Kaisha | Encryption/decryption method for data limited in value range, apparatus and program therefor |
JP3880933B2 (ja) * | 2003-01-21 | 2007-02-14 | 株式会社東芝 | 耐タンパマイクロプロセッサ及びキャッシュメモリ搭載プロセッサによるデータアクセス制御方法 |
US8225290B2 (en) * | 2003-02-11 | 2012-07-17 | V. i. Laboratories, Inc. | Systems and methods for regulating execution of computer software |
US7370319B2 (en) * | 2003-02-11 | 2008-05-06 | V.I. Laboratories, Inc. | System and method for regulating execution of computer software |
US8060755B2 (en) * | 2003-04-18 | 2011-11-15 | Via Technologies, Inc | Apparatus and method for providing user-generated key schedule in a microprocessor cryptographic engine |
US7519833B2 (en) * | 2003-04-18 | 2009-04-14 | Via Technologies, Inc. | Microprocessor apparatus and method for enabling configurable data block size in a cryptographic engine |
US7925891B2 (en) * | 2003-04-18 | 2011-04-12 | Via Technologies, Inc. | Apparatus and method for employing cryptographic functions to generate a message digest |
US7539876B2 (en) * | 2003-04-18 | 2009-05-26 | Via Technologies, Inc. | Apparatus and method for generating a cryptographic key schedule in a microprocessor |
US7529368B2 (en) * | 2003-04-18 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for performing transparent output feedback mode cryptographic functions |
US7844053B2 (en) * | 2003-04-18 | 2010-11-30 | Ip-First, Llc | Microprocessor apparatus and method for performing block cipher cryptographic functions |
US7321910B2 (en) * | 2003-04-18 | 2008-01-22 | Ip-First, Llc | Microprocessor apparatus and method for performing block cipher cryptographic functions |
US7536560B2 (en) * | 2003-04-18 | 2009-05-19 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic key size |
US7392400B2 (en) * | 2003-04-18 | 2008-06-24 | Via Technologies, Inc. | Microprocessor apparatus and method for optimizing block cipher cryptographic functions |
US7502943B2 (en) * | 2003-04-18 | 2009-03-10 | Via Technologies, Inc. | Microprocessor apparatus and method for providing configurable cryptographic block cipher round results |
US7900055B2 (en) * | 2003-04-18 | 2011-03-01 | Via Technologies, Inc. | Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms |
US7532722B2 (en) * | 2003-04-18 | 2009-05-12 | Ip-First, Llc | Apparatus and method for performing transparent block cipher cryptographic functions |
US7542566B2 (en) * | 2003-04-18 | 2009-06-02 | Ip-First, Llc | Apparatus and method for performing transparent cipher block chaining mode cryptographic functions |
US7529367B2 (en) * | 2003-04-18 | 2009-05-05 | Via Technologies, Inc. | Apparatus and method for performing transparent cipher feedback mode cryptographic functions |
GB2403562A (en) * | 2003-07-04 | 2005-01-05 | Hewlett Packard Development Co | Secure processing environment in which executable code for services is only received by a secure loading process through the service request interface |
US7366302B2 (en) * | 2003-08-25 | 2008-04-29 | Sony Corporation | Apparatus and method for an iterative cryptographic block |
WO2005020043A2 (en) | 2003-08-26 | 2005-03-03 | Matsushita Electric Industrial Co., Ltd. | Program execution device |
JP4263976B2 (ja) * | 2003-09-24 | 2009-05-13 | 株式会社東芝 | オンチップマルチコア型耐タンパプロセッサ |
US7681046B1 (en) | 2003-09-26 | 2010-03-16 | Andrew Morgan | System with secure cryptographic capabilities using a hardware specific digital secret |
TWI247241B (en) * | 2003-09-29 | 2006-01-11 | Ip First Llc | Microprocessor apparatus and method for performing block cipher cryptographic functions |
TWI274280B (en) * | 2003-09-29 | 2007-02-21 | Via Tech Inc | Microprocessor apparatus and method for employing configurable block cipher cryptographic algorithms |
US7694151B1 (en) * | 2003-11-20 | 2010-04-06 | Johnson Richard C | Architecture, system, and method for operating on encrypted and/or hidden information |
US8156343B2 (en) * | 2003-11-26 | 2012-04-10 | Intel Corporation | Accessing private data about the state of a data processing machine from storage that is publicly accessible |
TWI274281B (en) * | 2003-12-04 | 2007-02-21 | Ip First Llc | Apparatus and method for performing transparent block cipher cryptographic functions |
JP4282472B2 (ja) * | 2003-12-26 | 2009-06-24 | 株式会社東芝 | マイクロプロセッサ |
CN1661958B (zh) * | 2004-03-15 | 2010-04-28 | 威盛电子股份有限公司 | 区块密码功能的微处理器及方法 |
US20070245419A1 (en) * | 2004-04-29 | 2007-10-18 | Padraig Omahony | Intrusion detection during program execution in a computer |
US9219729B2 (en) * | 2004-05-19 | 2015-12-22 | Philip Drope | Multimedia network system with content importation, content exportation, and integrated content management |
JP2005346182A (ja) * | 2004-05-31 | 2005-12-15 | Fujitsu Ltd | 情報処理装置、耐タンパ方法、耐タンパプログラム |
US20050276413A1 (en) * | 2004-06-14 | 2005-12-15 | Raja Neogi | Method and apparatus to manage heterogeneous cryptographic operations |
JP4559794B2 (ja) * | 2004-06-24 | 2010-10-13 | 株式会社東芝 | マイクロプロセッサ |
JP4612461B2 (ja) * | 2004-06-24 | 2011-01-12 | 株式会社東芝 | マイクロプロセッサ |
CN100354787C (zh) * | 2004-06-24 | 2007-12-12 | 株式会社东芝 | 微处理器 |
CN100353276C (zh) * | 2004-06-24 | 2007-12-05 | 株式会社东芝 | 微处理器 |
JP4447977B2 (ja) | 2004-06-30 | 2010-04-07 | 富士通マイクロエレクトロニクス株式会社 | セキュアプロセッサ、およびセキュアプロセッサ用プログラム。 |
JP4490192B2 (ja) * | 2004-07-02 | 2010-06-23 | 株式会社エヌ・ティ・ティ・ドコモ | マルチタスク実行システム |
JP4204522B2 (ja) * | 2004-07-07 | 2009-01-07 | 株式会社東芝 | マイクロプロセッサ |
JP2006023957A (ja) * | 2004-07-07 | 2006-01-26 | Sony Corp | 半導体集積回路及び情報処理装置 |
US20060136717A1 (en) | 2004-12-20 | 2006-06-22 | Mark Buer | System and method for authentication via a proximate device |
US8295484B2 (en) * | 2004-12-21 | 2012-10-23 | Broadcom Corporation | System and method for securing data from a remote input device |
JP2006202017A (ja) * | 2005-01-20 | 2006-08-03 | Sharp Corp | 情報処理装置、情報記憶装置、情報処理装置の機能拡張システム、情報処理装置の機能拡張方法及び機能削除方法、並びに情報処理装置の機能拡張プログラム及び機能削除プログラム |
EP1717723A1 (en) | 2005-04-29 | 2006-11-02 | ST Incard S.r.l. | Improved virtual machine or hardware processor for IC-card portable electronic devices |
JP2006311462A (ja) * | 2005-05-02 | 2006-11-09 | Toshiba Corp | コンテンツ検索装置及びその方法 |
US9633213B2 (en) * | 2005-05-16 | 2017-04-25 | Texas Instruments Incorporated | Secure emulation logic between page attribute table and test interface |
US20060259828A1 (en) | 2005-05-16 | 2006-11-16 | Texas Instruments Incorporated | Systems and methods for controlling access to secure debugging and profiling features of a computer system |
CN101233525A (zh) * | 2005-05-26 | 2008-07-30 | 松下电器产业株式会社 | 数据处理装置 |
US7953980B2 (en) * | 2005-06-30 | 2011-05-31 | Intel Corporation | Signed manifest for run-time verification of software program identity and integrity |
US7669242B2 (en) * | 2005-06-30 | 2010-02-23 | Intel Corporation | Agent presence monitor configured to execute in a secure environment |
US8839450B2 (en) | 2007-08-02 | 2014-09-16 | Intel Corporation | Secure vault service for software components within an execution environment |
US7571298B2 (en) * | 2005-06-30 | 2009-08-04 | Intel Corporation | Systems and methods for host virtual memory reconstitution |
US20070006307A1 (en) * | 2005-06-30 | 2007-01-04 | Hahn Scott D | Systems, apparatuses and methods for a host software presence check from an isolated partition |
EP1752937A1 (en) | 2005-07-29 | 2007-02-14 | Research In Motion Limited | System and method for encrypted smart card PIN entry |
JP2007058588A (ja) * | 2005-08-24 | 2007-03-08 | Toshiba Corp | プログラム保護機能を持つプロセッサ |
US8171268B2 (en) * | 2005-09-19 | 2012-05-01 | Intel Corporation | Technique for context state management to reduce save and restore operations between a memory and a processor using in-use vectors |
US20070067590A1 (en) * | 2005-09-22 | 2007-03-22 | Uday Savagaonkar | Providing protected access to critical memory regions |
US7496727B1 (en) | 2005-12-06 | 2009-02-24 | Transmeta Corporation | Secure memory access system and method |
US20070168680A1 (en) * | 2006-01-13 | 2007-07-19 | Lockheed Martin Corporation | Anti-tamper system |
US7428306B2 (en) * | 2006-04-18 | 2008-09-23 | International Business Machines Corporation | Encryption apparatus and method for providing an encrypted file system |
US7681047B2 (en) * | 2006-04-18 | 2010-03-16 | International Business Machines Corporation | Decryption of data in storage systems |
US8095802B2 (en) | 2006-09-12 | 2012-01-10 | International Business Machines Corporation | System and method for securely saving a program context to a shared memory |
US7660769B2 (en) | 2006-09-12 | 2010-02-09 | International Business Machines Corporation | System and method for digital content player with secure processing vault |
US7945789B2 (en) * | 2006-09-12 | 2011-05-17 | International Business Machines Corporation | System and method for securely restoring a program context from a shared memory |
US8190917B2 (en) | 2006-09-12 | 2012-05-29 | International Business Machines Corporation | System and method for securely saving and restoring a context of a secure program loader |
US8583938B2 (en) * | 2006-09-20 | 2013-11-12 | Kam Fu Chan | From polymorphic executable to polymorphic operating system |
US7802050B2 (en) * | 2006-09-29 | 2010-09-21 | Intel Corporation | Monitoring a target agent execution pattern on a VT-enabled system |
US7882318B2 (en) * | 2006-09-29 | 2011-02-01 | Intel Corporation | Tamper protection of software agents operating in a vitual technology environment methods and apparatuses |
US20080141382A1 (en) * | 2006-12-12 | 2008-06-12 | Lockheed Martin Corporation | Anti-tamper device |
US8495383B2 (en) * | 2006-12-14 | 2013-07-23 | Nokia Corporation | Method for the secure storing of program state data in an electronic device |
US8245307B1 (en) * | 2006-12-18 | 2012-08-14 | Nvidia Corporation | Providing secure access to a secret |
US20080148061A1 (en) * | 2006-12-19 | 2008-06-19 | Hongxia Jin | Method for effective tamper resistance |
US20080155273A1 (en) * | 2006-12-21 | 2008-06-26 | Texas Instruments, Inc. | Automatic Bus Encryption And Decryption |
US7949130B2 (en) | 2006-12-28 | 2011-05-24 | Intel Corporation | Architecture and instruction set for implementing advanced encryption standard (AES) |
US20080229117A1 (en) * | 2007-03-07 | 2008-09-18 | Shin Kang G | Apparatus for preventing digital piracy |
EP1978466A1 (en) * | 2007-04-05 | 2008-10-08 | STMicroelectronics (Research & Development) Limited | Integrated circuit and method for secure execution of software |
KR101405915B1 (ko) | 2007-04-26 | 2014-06-12 | 삼성전자주식회사 | 데이터의 암호화 저장 방법 및 암호화된 데이터의 판독방법 |
US20100088528A1 (en) * | 2007-05-03 | 2010-04-08 | Radu Sion | Method and apparatus for tamper-proof wirte-once-read-many computer storage |
EP2015561A1 (fr) * | 2007-07-10 | 2009-01-14 | Nagracard S.A. | Procédé d'envoi d'un code exécutable à un dispositif de réception et procédé d'exécution de ce code |
US8312518B1 (en) * | 2007-09-27 | 2012-11-13 | Avaya Inc. | Island of trust in a service-oriented environment |
JP5201716B2 (ja) * | 2007-09-28 | 2013-06-05 | 東芝ソリューション株式会社 | 暗号モジュール配信システム、暗号管理サーバ装置、暗号処理装置、クライアント装置、暗号管理プログラム、暗号処理プログラム、およびクライアントプログラム |
US8539098B2 (en) | 2007-10-17 | 2013-09-17 | Dispersive Networks, Inc. | Multiplexed client server (MCS) communications and systems |
US8560634B2 (en) | 2007-10-17 | 2013-10-15 | Dispersive Networks, Inc. | Apparatus, systems and methods utilizing dispersive networking |
US8099718B2 (en) * | 2007-11-13 | 2012-01-17 | Intel Corporation | Method and system for whitelisting software components |
JP4976991B2 (ja) * | 2007-11-22 | 2012-07-18 | 株式会社東芝 | 情報処理装置、プログラム検証方法及びプログラム |
US8819839B2 (en) * | 2008-05-24 | 2014-08-26 | Via Technologies, Inc. | Microprocessor having a secure execution mode with provisions for monitoring, indicating, and managing security levels |
US7788433B2 (en) * | 2008-05-24 | 2010-08-31 | Via Technologies, Inc. | Microprocessor apparatus providing for secure interrupts and exceptions |
US8175265B2 (en) | 2008-09-02 | 2012-05-08 | Apple Inc. | Systems and methods for implementing block cipher algorithms on attacker-controlled systems |
US8745411B2 (en) * | 2008-11-07 | 2014-06-03 | Broadcom Corporation | Protecting external volatile memories using low latency encryption/decryption |
JP5322620B2 (ja) | 2008-12-18 | 2013-10-23 | 株式会社東芝 | 情報処理装置、プログラム開発システム、プログラム検証方法及びプログラム |
US8364601B2 (en) * | 2008-12-31 | 2013-01-29 | Intel Corporation | Methods and systems to directly render an image and correlate corresponding user input in a secure memory domain |
US9298894B2 (en) | 2009-06-26 | 2016-03-29 | International Business Machines Corporation | Cache structure for a computer system providing support for secure objects |
US9846789B2 (en) | 2011-09-06 | 2017-12-19 | International Business Machines Corporation | Protecting application programs from malicious software or malware |
US9954875B2 (en) | 2009-06-26 | 2018-04-24 | International Business Machines Corporation | Protecting from unintentional malware download |
US8954752B2 (en) | 2011-02-23 | 2015-02-10 | International Business Machines Corporation | Building and distributing secure object software |
US8819446B2 (en) * | 2009-06-26 | 2014-08-26 | International Business Machines Corporation | Support for secure objects in a computer system |
US8578175B2 (en) | 2011-02-23 | 2013-11-05 | International Business Machines Corporation | Secure object having protected region, integrity tree, and unprotected region |
US8812872B2 (en) | 2010-02-08 | 2014-08-19 | Hypertech Co., Ltd. | Memory managment method |
WO2011101972A1 (ja) | 2010-02-18 | 2011-08-25 | 株式会社東芝 | プログラム |
DE102010010851A1 (de) * | 2010-03-10 | 2011-09-15 | Giesecke & Devrient Gmbh | Ausspähungsschutz bei der Ausführung einer Operationssequenz in einem tragbaren Datenträger |
US8370648B1 (en) * | 2010-03-15 | 2013-02-05 | Emc International Company | Writing and reading encrypted data using time-based encryption keys |
US20110258430A1 (en) * | 2010-04-15 | 2011-10-20 | Nokia Corporation | Method and apparatus for applying execution context criteria for execution context sharing |
TWI497344B (zh) * | 2010-05-17 | 2015-08-21 | Via Tech Inc | 微處理器及產生不可預測之鑰的方法 |
US9892283B2 (en) | 2010-05-25 | 2018-02-13 | Via Technologies, Inc. | Decryption of encrypted instructions using keys selected on basis of instruction fetch address |
US9967092B2 (en) | 2010-05-25 | 2018-05-08 | Via Technologies, Inc. | Key expansion logic using decryption key primitives |
US9798898B2 (en) | 2010-05-25 | 2017-10-24 | Via Technologies, Inc. | Microprocessor with secure execution mode and store key instructions |
US9911008B2 (en) | 2010-05-25 | 2018-03-06 | Via Technologies, Inc. | Microprocessor with on-the-fly switching of decryption keys |
US8683225B2 (en) | 2010-05-25 | 2014-03-25 | Via Technologies, Inc. | Microprocessor that facilitates task switching between encrypted and unencrypted programs |
US8812871B2 (en) * | 2010-05-27 | 2014-08-19 | Cisco Technology, Inc. | Method and apparatus for trusted execution in infrastructure as a service cloud environments |
US8990582B2 (en) * | 2010-05-27 | 2015-03-24 | Cisco Technology, Inc. | Virtual machine memory compartmentalization in multi-core architectures |
JP5171907B2 (ja) * | 2010-09-13 | 2013-03-27 | 株式会社東芝 | 情報処理装置、情報処理プログラム |
JP2012080295A (ja) * | 2010-09-30 | 2012-04-19 | Toshiba Corp | 情報記憶装置、情報記憶方法、及び電子機器 |
JP2012084071A (ja) * | 2010-10-14 | 2012-04-26 | Toshiba Corp | デジタルコンテンツの保護方法、復号方法、再生装置、記憶媒体、暗号装置 |
US8955110B1 (en) | 2011-01-14 | 2015-02-10 | Robert W. Twitchell, Jr. | IP jamming systems utilizing virtual dispersive networking |
US8941659B1 (en) | 2011-01-28 | 2015-01-27 | Rescon Ltd | Medical symptoms tracking apparatus, methods and systems |
US9864853B2 (en) | 2011-02-23 | 2018-01-09 | International Business Machines Corporation | Enhanced security mechanism for authentication of users of a system |
US8839001B2 (en) * | 2011-07-06 | 2014-09-16 | The Boeing Company | Infinite key memory transaction unit |
US8661527B2 (en) | 2011-08-31 | 2014-02-25 | Kabushiki Kaisha Toshiba | Authenticator, authenticatee and authentication method |
US9166953B2 (en) | 2011-10-31 | 2015-10-20 | Nokia Technologies Oy | Method and apparatus for providing identity based encryption in distributed computations |
US20130108038A1 (en) * | 2011-11-01 | 2013-05-02 | Apple Inc. | System and method for a collatz based hash function |
JP5275432B2 (ja) | 2011-11-11 | 2013-08-28 | 株式会社東芝 | ストレージメディア、ホスト装置、メモリ装置、及びシステム |
CN102509048A (zh) * | 2011-11-14 | 2012-06-20 | 西安电子科技大学 | 防止操作系统中断流程被非法转移的方法 |
JP5204290B1 (ja) | 2011-12-02 | 2013-06-05 | 株式会社東芝 | ホスト装置、システム、及び装置 |
JP5100884B1 (ja) | 2011-12-02 | 2012-12-19 | 株式会社東芝 | メモリ装置 |
JP5112555B1 (ja) | 2011-12-02 | 2013-01-09 | 株式会社東芝 | メモリカード、ストレージメディア、及びコントローラ |
JP5204291B1 (ja) | 2011-12-02 | 2013-06-05 | 株式会社東芝 | ホスト装置、装置、システム |
CN102521037B (zh) * | 2011-12-05 | 2013-12-25 | 晶门科技(深圳)有限公司 | 使用双上下文存储的密码学算法协处理器及数据流处理方法 |
JP5275482B2 (ja) | 2012-01-16 | 2013-08-28 | 株式会社東芝 | ストレージメディア、ホスト装置、メモリ装置、及びシステム |
US8954755B2 (en) | 2012-01-23 | 2015-02-10 | International Business Machines Corporation | Memory address translation-based data encryption with integrated encryption engine |
EP2653992A1 (en) * | 2012-04-17 | 2013-10-23 | Itron, Inc. | Microcontroller configured for external memory decryption |
JP6201298B2 (ja) * | 2012-11-14 | 2017-09-27 | オムロン株式会社 | コントローラおよびプログラム |
US9183161B2 (en) * | 2012-12-28 | 2015-11-10 | Intel Corporation | Apparatus and method for page walk extension for enhanced security checks |
US9201811B2 (en) | 2013-02-14 | 2015-12-01 | Kabushiki Kaisha Toshiba | Device and authentication method therefor |
US8984294B2 (en) | 2013-02-15 | 2015-03-17 | Kabushiki Kaisha Toshiba | System of authenticating an individual memory device via reading data including prohibited data and readable data |
US11044076B2 (en) * | 2013-02-25 | 2021-06-22 | Hecusys, LLC | Encrypted data processing |
US9280490B2 (en) * | 2013-04-17 | 2016-03-08 | Laurence H. Cooke | Secure computing |
US9846656B2 (en) | 2013-04-17 | 2017-12-19 | Laurence H. Cooke | Secure computing |
US10055588B2 (en) * | 2013-11-13 | 2018-08-21 | Via Technologies, Inc. | Event-based apparatus and method for securing BIOS in a trusted computing system during execution |
US9547767B2 (en) * | 2013-11-13 | 2017-01-17 | Via Technologies, Inc. | Event-based apparatus and method for securing bios in a trusted computing system during execution |
US9223965B2 (en) | 2013-12-10 | 2015-12-29 | International Business Machines Corporation | Secure generation and management of a virtual card on a mobile device |
US9235692B2 (en) | 2013-12-13 | 2016-01-12 | International Business Machines Corporation | Secure application debugging |
TWI712915B (zh) | 2014-06-12 | 2020-12-11 | 美商密碼研究公司 | 執行一密碼編譯操作之方法,以及電腦可讀非暫時性儲存媒體 |
US9954849B2 (en) * | 2014-06-27 | 2018-04-24 | Oath (Americas) Inc. | Systems and methods for managing secure sharing of online advertising data |
EP3183685A1 (en) * | 2014-08-20 | 2017-06-28 | Intel Corporation | Encrypted code execution |
US9967319B2 (en) * | 2014-10-07 | 2018-05-08 | Microsoft Technology Licensing, Llc | Security context management in multi-tenant environments |
GB2531770A (en) * | 2014-10-30 | 2016-05-04 | Ibm | Confidential Extracting System Internal Data |
US9418246B2 (en) * | 2014-12-15 | 2016-08-16 | Freescale Semiconductor, Inc. | Decryption systems and related methods for on-the-fly decryption within integrated circuits |
US9729319B2 (en) * | 2014-12-15 | 2017-08-08 | Nxp Usa, Inc. | Key management for on-the-fly hardware decryption within integrated circuits |
JP2016181836A (ja) * | 2015-03-24 | 2016-10-13 | キヤノン株式会社 | 情報処理装置、暗号装置、情報処理装置の制御方法、およびプログラム |
US10311229B1 (en) * | 2015-05-18 | 2019-06-04 | Amazon Technologies, Inc. | Mitigating timing side-channel attacks by obscuring alternatives in code |
US10868665B1 (en) * | 2015-05-18 | 2020-12-15 | Amazon Technologies, Inc. | Mitigating timing side-channel attacks by obscuring accesses to sensitive data |
CN105530088A (zh) * | 2015-09-01 | 2016-04-27 | 北京中电华大电子设计有限责任公司 | 一种安全的java卡密钥存储方法 |
US10297003B2 (en) * | 2015-09-21 | 2019-05-21 | Qualcomm Incorporated | Efficient saving and restoring of context information for context switches |
US9449189B1 (en) | 2015-11-03 | 2016-09-20 | International Business Machines Corporation | Protection of state data in computer system code |
US10210040B2 (en) | 2016-01-28 | 2019-02-19 | Nxp Usa, Inc. | Multi-dimensional parity checker (MDPC) systems and related methods for external memories |
US9418327B1 (en) | 2016-01-29 | 2016-08-16 | International Business Machines Corporation | Security key system |
US9866563B2 (en) * | 2016-04-12 | 2018-01-09 | Gaurdknox Cyber Technologies Ltd. | Specially programmed computing systems with associated devices configured to implement secure communication lockdowns and methods of use thereof |
KR101855905B1 (ko) * | 2016-07-15 | 2018-06-19 | 주식회사 마크애니 | 영상 반출 처리 서버, 영상 반출 웹 서버 및 영상 반출 관리 시스템, 및 암호화 영상에 대한 무결성 검증 방법 |
DE102016009439A1 (de) * | 2016-08-03 | 2018-02-08 | Giesecke+Devrient Mobile Security Gmbh | Individuelles Verschlüsseln von Steuerbefehlen |
CN107066331B (zh) * | 2016-12-20 | 2021-05-18 | 华为技术有限公司 | 一种基于TrustZone的资源分配方法及设备 |
DE102017212618B3 (de) | 2017-07-21 | 2018-12-13 | Bundesdruckerei Gmbh | Hardwaresystem mit Blockchain |
FR3069935A1 (fr) * | 2017-08-01 | 2019-02-08 | Maxim Integrated Products, Inc. | Dispositifs et procedes de protection de propriete intellectuelle de logiciel pour des plates-formes integrees |
KR20190075363A (ko) * | 2017-12-21 | 2019-07-01 | 삼성전자주식회사 | 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 모듈 |
GB2572579B (en) * | 2018-04-04 | 2020-09-16 | Advanced Risc Mach Ltd | Speculative side-channel hint instruction |
US11113424B2 (en) | 2019-05-07 | 2021-09-07 | Motorola Solutions, Inc. | Device, system and method for installing encrypted data |
JP7249968B2 (ja) * | 2020-03-09 | 2023-03-31 | 株式会社東芝 | 情報処理装置およびストレージ |
US11502832B2 (en) | 2020-06-04 | 2022-11-15 | PUFsecurity Corporation | Electronic device capable of protecting confidential data |
KR102512342B1 (ko) * | 2021-02-23 | 2023-03-22 | 엘아이지넥스원 주식회사 | 캐시 메모리에 비밀키를 저장하여 암복호화를 처리하는 점검 대상 점검 방법 및 그를 위한 장치 |
US20220414270A1 (en) * | 2021-06-24 | 2022-12-29 | International Business Machines Corporation | Encrypted data processing design including cleartext register files |
US11868275B2 (en) | 2021-06-24 | 2024-01-09 | International Business Machines Corporation | Encrypted data processing design including local buffers |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4168396A (en) | 1977-10-31 | 1979-09-18 | Best Robert M | Microprocessor for executing enciphered programs |
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 |
US4847902A (en) * | 1984-02-10 | 1989-07-11 | Prime Computer, Inc. | Digital computer system for executing encrypted programs |
GB2163577B (en) * | 1984-08-23 | 1988-01-13 | Nat Res Dev | Software protection device |
US4757533A (en) * | 1985-09-11 | 1988-07-12 | Computer Security Corporation | Security system for microcomputers |
US5123045A (en) * | 1989-08-18 | 1992-06-16 | Massachusetts Institute Of Technology | Comprehensive software protection system |
JPH0770629B2 (ja) | 1990-03-20 | 1995-07-31 | 株式会社東芝 | 不揮発性半導体記憶装置の製造方法 |
JPH0520197A (ja) | 1991-07-09 | 1993-01-29 | Hitachi Ltd | 記憶管理システム及びマイクロプロセツサ |
US5224166A (en) * | 1992-08-11 | 1993-06-29 | International Business Machines Corporation | System for seamless processing of encrypted and non-encrypted data and instructions |
US5495411A (en) * | 1993-12-22 | 1996-02-27 | Ananda; Mohan | Secure software rental system using continuous asynchronous password verification |
US5666411A (en) * | 1994-01-13 | 1997-09-09 | Mccarty; Johnnie C. | System for computer software protection |
US6473860B1 (en) * | 1994-04-07 | 2002-10-29 | Hark C. Chan | Information distribution and processing system |
US5805706A (en) * | 1996-04-17 | 1998-09-08 | Intel Corporation | Apparatus and method for re-encrypting data without unsecured exposure of its non-encrypted format |
US5701343A (en) | 1994-12-01 | 1997-12-23 | Nippon Telegraph & Telephone Corporation | Method and system for digital information protection |
CA2683230C (en) * | 1995-02-13 | 2013-08-27 | Intertrust Technologies Corporation | Systems and methods for secure transaction management and electronic rights protection |
US6246767B1 (en) * | 1995-04-03 | 2001-06-12 | Scientific-Atlanta, Inc. | Source authentication of download information in a conditional access system |
JPH08305558A (ja) | 1995-04-27 | 1996-11-22 | Casio Comput Co Ltd | 暗号化プログラム演算装置 |
US6006328A (en) * | 1995-07-14 | 1999-12-21 | Christopher N. Drake | Computer software authentication, protection, and security system |
US5894516A (en) * | 1996-07-10 | 1999-04-13 | Ncr Corporation | Broadcast software distribution |
US5825878A (en) * | 1996-09-20 | 1998-10-20 | Vlsi Technology, Inc. | Secure memory management unit for microprocessor |
JP2980576B2 (ja) | 1997-09-12 | 1999-11-22 | 株式会社東芝 | 物理乱数発生装置及び方法並びに物理乱数記録媒体 |
US6429879B1 (en) * | 1997-09-30 | 2002-08-06 | Compaq Computer Corporation | Customization schemes for content presentation in a device with converged functionality |
US6003117A (en) * | 1997-10-08 | 1999-12-14 | Vlsi Technology, Inc. | Secure memory management unit which utilizes a system processor to perform page swapping |
US6237137B1 (en) | 1997-10-15 | 2001-05-22 | Dell Usa, L.P. | Method and system for preventing unauthorized access to a computer program |
US6330549B1 (en) * | 1997-10-30 | 2001-12-11 | Xerox Corporation | Protected shareware |
JPH11282667A (ja) | 1998-03-31 | 1999-10-15 | Nakamichi Corp | 多重鍵方式の暗号処理機能を有するマイクロプロセッサ |
JP3713141B2 (ja) * | 1998-05-19 | 2005-11-02 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムの不正実行防止方法 |
US6385727B1 (en) * | 1998-09-25 | 2002-05-07 | Hughes Electronics Corporation | Apparatus for providing a secure processing environment |
AU743775B2 (en) | 1998-09-25 | 2002-02-07 | Hughes Electronics Corporation | An apparatus for providing a secure processing environment |
US6567915B1 (en) * | 1998-10-23 | 2003-05-20 | Microsoft Corporation | Integrated circuit card with identity authentication table and authorization tables defining access rights based on Boolean expressions of authenticated identities |
US6836847B1 (en) * | 1999-03-05 | 2004-12-28 | The Johns Hokins University | Software protection for single and multiple microprocessor systems |
US6691226B1 (en) * | 1999-03-16 | 2004-02-10 | Western Digital Ventures, Inc. | Computer system with disk drive having private key validation means for enabling features |
US6651171B1 (en) * | 1999-04-06 | 2003-11-18 | Microsoft Corporation | Secure execution of program code |
US6468160B2 (en) * | 1999-04-08 | 2002-10-22 | Nintendo Of America, Inc. | Security system for video game system with hard disk drive and internet access capability |
AU5910800A (en) * | 1999-06-30 | 2001-01-31 | Accenture Llp | A system, method and article of manufacture for tracking software sale transactions of an internet-based retailer for reporting to a software publisher |
US6983374B2 (en) | 2000-02-14 | 2006-01-03 | Kabushiki Kaisha Toshiba | Tamper resistant microprocessor |
JP4153653B2 (ja) | 2000-10-31 | 2008-09-24 | 株式会社東芝 | マイクロプロセッサおよびデータ保護方法 |
-
2001
- 2001-02-13 US US09/781,158 patent/US6983374B2/en not_active Expired - Fee Related
- 2001-02-13 US US09/781,284 patent/US7270193B2/en not_active Expired - Fee Related
- 2001-02-14 EP EP01301241A patent/EP1126356B1/en not_active Expired - Lifetime
- 2001-02-14 CN CNB011045124A patent/CN1220121C/zh not_active Expired - Fee Related
- 2001-02-14 KR KR1020010007301A patent/KR100362219B1/ko not_active IP Right Cessation
- 2001-02-14 EP EP01301240A patent/EP1126355A1/en not_active Ceased
- 2001-02-14 CN CNB011030003A patent/CN1189819C/zh not_active Expired - Fee Related
- 2001-02-14 KR KR10-2001-0007300A patent/KR100375158B1/ko not_active IP Right Cessation
- 2001-02-14 DE DE60135695T patent/DE60135695D1/de not_active Expired - Lifetime
-
2005
- 2005-03-04 US US11/071,327 patent/US7353404B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6983374B2 (en) | 2006-01-03 |
EP1126356A2 (en) | 2001-08-22 |
CN1309355A (zh) | 2001-08-22 |
KR100375158B1 (ko) | 2003-03-08 |
US7353404B2 (en) | 2008-04-01 |
US7270193B2 (en) | 2007-09-18 |
US20050166069A1 (en) | 2005-07-28 |
KR100362219B1 (ko) | 2002-11-23 |
DE60135695D1 (de) | 2008-10-23 |
EP1126356A3 (en) | 2003-01-08 |
KR20010082632A (ko) | 2001-08-30 |
KR20010082631A (ko) | 2001-08-30 |
US20010014157A1 (en) | 2001-08-16 |
US20010018736A1 (en) | 2001-08-30 |
EP1126356B1 (en) | 2008-09-10 |
CN1220121C (zh) | 2005-09-21 |
EP1126355A1 (en) | 2001-08-22 |
CN1309351A (zh) | 2001-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1189819C (zh) | 抗干预微处理器 | |
CN1266615C (zh) | 微处理器 | |
CN1656434A (zh) | 用于解密已加密数据并在存储器空间中定位用于执行的解密数据的方法和设备 | |
CN1197014C (zh) | 内部存储器型抗篡改处理器及保密方法 | |
US7874009B2 (en) | Data processing device | |
CN1410876A (zh) | 微处理机 | |
CN1261870C (zh) | 数据处理方法及其设备 | |
CN1252599C (zh) | 信息处理设备 | |
CN1668990A (zh) | 开放型通用抗攻击cpu及其应用系统 | |
CN1236132A (zh) | 应用块链接和块重新排序的带有外部存储器的安全处理器 | |
CN1871568A (zh) | 程序执行设备 | |
US8286001B2 (en) | Method and central processing unit for processing encrypted software | |
US20070014416A1 (en) | System and method for protecting against dictionary attacks on password-protected TPM keys | |
JP2001318787A (ja) | マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法 | |
CN101072097B (zh) | 用于受信数据处理的方法和系统 | |
CN1581118A (zh) | 安全设备、信息处理终端、集成电路、应用装置及方法 | |
CN1273902C (zh) | 调试系统,微处理器,以及调试器 | |
US20040143748A1 (en) | Data access control method for tamper resistant microprocessor using cache memory | |
CN1758178A (zh) | 非法分析/伪造预防系统 | |
CN1961275A (zh) | 执行装置 | |
JP2006085676A (ja) | 暗号化命令処理装置 | |
CN1922817A (zh) | 信息处理装置 | |
CN1897517A (zh) | 加密、解密电路 | |
CN1251065C (zh) | 一种用于信息安全的嵌入式cpu | |
CN100351815C (zh) | 基于公开密钥加密的数据存储和数据检索 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20050216 Termination date: 20140214 |