CN100378666C - 用于防止泄露的程序分区的系统和方法 - Google Patents
用于防止泄露的程序分区的系统和方法 Download PDFInfo
- Publication number
- CN100378666C CN100378666C CNB038167239A CN03816723A CN100378666C CN 100378666 C CN100378666 C CN 100378666C CN B038167239 A CNB038167239 A CN B038167239A CN 03816723 A CN03816723 A CN 03816723A CN 100378666 C CN100378666 C CN 100378666C
- Authority
- CN
- China
- Prior art keywords
- program
- function
- sectioning
- subregion
- recursive function
- 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 title claims abstract description 101
- 238000004590 computer program Methods 0.000 title claims abstract description 29
- 238000005192 partition Methods 0.000 claims abstract description 99
- 230000015654 memory Effects 0.000 claims abstract description 61
- 230000006870 function Effects 0.000 claims description 205
- 230000008569 process Effects 0.000 claims description 29
- 238000000638 solvent extraction Methods 0.000 claims description 27
- 238000004891 communication Methods 0.000 claims description 7
- 238000004458 analytical method Methods 0.000 claims description 6
- 238000005457 optimization Methods 0.000 claims description 6
- 238000007596 consolidation process Methods 0.000 claims description 4
- 230000015572 biosynthetic process Effects 0.000 claims 6
- 230000006399 behavior Effects 0.000 abstract description 17
- 238000004422 calculation algorithm Methods 0.000 description 92
- 238000010586 diagram Methods 0.000 description 19
- 230000005540 biological transmission Effects 0.000 description 13
- 230000003068 static effect Effects 0.000 description 10
- 230000003190 augmentative effect Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000004454 trace mineral analysis Methods 0.000 description 5
- 230000009467 reduction Effects 0.000 description 4
- 230000000717 retained effect Effects 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- AYCPARAPKDAOEN-LJQANCHMSA-N N-[(1S)-2-(dimethylamino)-1-phenylethyl]-6,6-dimethyl-3-[(2-methyl-4-thieno[3,2-d]pyrimidinyl)amino]-1,4-dihydropyrrolo[3,4-c]pyrazole-5-carboxamide Chemical compound C1([C@H](NC(=O)N2C(C=3NN=C(NC=4C=5SC=CC=5N=C(C)N=4)C=3C2)(C)C)CN(C)C)=CC=CC=C1 AYCPARAPKDAOEN-LJQANCHMSA-N 0.000 description 1
- 235000012364 Peperomia pellucida Nutrition 0.000 description 1
- 240000007711 Peperomia pellucida Species 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 125000002015 acyclic group Chemical group 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000009415 formwork Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000032258 transport Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/556—Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
当整个程序不能装入一个装置的内存中时,将整个程序分区的系统、方法和计算机程序产品。在最低限度的安全程序分区执行之前,按照需要将它们从服务器下载到内嵌式装置上。将程序的代码和数据分区使得不会泄露与程序的控制流行为有关的信息。因此,通过观察从服务器下载到装置上的程序分区,攻击者不可能猜出采用的是程序的那一分支以及程序的控制流是什么。对诸如智能卡的安全内嵌装置来说,防止篡改的特性是很有价值的,这些装置能够保存敏感信息和/或执行诸如金融交易的关键性计算。
Description
技术领域
本发明一般涉及用于将程序分区的系统、方法和计算机程序产品。更特别的是,本发明涉及用于将程序的代码和数据分区以使程序分区能够在内存受限的装置上运行,并确保在将程序分区下载到该装置上时不被篡改的系统、方法和计算机程序产品。
背景技术
提供防止篡改的安全环境的一种重要的嵌入装置是智能卡。智能卡内的典型的应用程序执行环境涉及到以一种加密的方式装载到其上的数据以及在其内执行的整个应用程序。这就导致了防止篡改的重要特性。由于没有应用程序驻留在外部,所以对攻击者来说,智能卡就像没有人知道有什么在其内部运行的黑匣子一样。换句话说,没有人能够从提供防止篡改特性的智能卡外部观察到应用程序的特性。
新一代智能卡的大的关注点就是内存资源有限。典型的智能卡只有8-64KB的内存,这就阻止将大的应用程序装到智能卡上。典型地是,分布在多个卖主中的多种应用程序需要较高的互操作性并需要大量的资源。附加到资源有限的是甚至使应用程序开发者的可用空间更小的安全性相关的系统开销。例如,复杂的加密/解密方案,先进的安全和事务处理协议以及诸如生物统计码的各种鉴定应用程序都有大量的数据和/或代码段,将这些功能放进智能卡是一个大的挑战。这就导致智能卡应用领域变得非常有限并且专门化。为了使一张卡能够执行多种应用程序并且/或者能够存储大的应用程序,就必须将这些程序分成片段,换句话说,智能卡将只能装载那些当前激活或准备执行的应用程序部分。然而,分区应用程序就意味着将有部分应用程序位于智能卡外。而且,传送到智能卡的应用程序分区可能泄露应用程序的行为,它们可能反过来被攻击者用来发起恶意攻击。因此,必须确保装载到卡上的程序分区不会泄露信息。
作为程序行为结果的信息泄露的发生有许多不同的方式。它们基于攻击者可观察到的程序的特性,包括时序行为、功率行为和控制流行为。例如,通过观察时序,可猜出正在执行一个循环或通过观察功耗猜出正在有多个存储操作在进行。然后就可用这种信息破坏安全系统。时序或功率信息的泄露是不太直接的获取程序特性的方式,攻击者可能会去寻找有点相关的试验以得到有差别的行为。另一方面应用程序的控制流行为的泄露可能非常危险,对攻击者来说通过它可以非常简单地寻找到有差别的行为。即使任意的分区方法也可能引入控制流信息泄露并在安全性方面带来冒险,这就是防篡改装置在程序分区方面所遇到的核心问题。
将参考图1A和图1B来说明任意的分区的潜在危险。图1A是基本的自然分区算法10,它将程序分区成基本块,而图1B是对应于算法10的控制流框图(CFG)11。简而言之,算法10允许对在执行期间只下载所需要的那些程序部分实行较好的控制。
诸如本技术领域众所周知的Die-Hellman和RSA系统可能包括例如由R-yx对n取模计算组成的私人密钥操作,其中n是公开的,而y可被偷窃者发现。攻击者的目标是找到密钥X。为了说明问题,可假设执行过程使用图1A的简单模数取幂算法,他计算R=yx对n取模,其中x长w比特。对这一小段代码的相应的CFG 11如图1B所示。
假设用此算法分区传送给智能卡的程序,其中卡在它需要程序分区时会提出请求(即,为了内存的效率目的,它不缓存任何程序分区),很显然在循环主体里如果当前测得x为1,就执行IF部分(框16)。如果当前测得x为0,然后就执行ElSE部分(框18)。算法循环(框14,20)产生通过网络发送的IF或ELSE块的序列。如果攻击者检测到这个序列,从它的信息攻击者就会猜到x的各个比特是0或1,从而获得密钥x。攻击者没有必要知道它是IF部分或者ELSE部分;由于密钥或其组成部分被猜到的事实,仅具备区分IF部分和ELSE部分的能力就能够猜出密钥x。攻击者因此利用不同的程序分区序列来推断出程序的行为。
图1A和1B所说明的攻击类型背后的概念与以时序和功率区别的攻击类似。每一种方法试图从攻击者可能得到的不同中寻找信息。攻击者需要做的所有事情就是在传输的过程中从网络中找到移动的代码包,将它们与前面所传输的代码包相匹配,然后试图从所建立的序列中猜出程序行为。有了合理的功率计算和网络抽头后,攻击者就能够利用系统的安全漏洞。也应当理解,即使下载的程序分区是经过加密的也不可能阻挡这样的攻击者。典型的是,因为给定的程序分区及其加密版本将具有一对一的关系,所以攻击者可将多个传输的程序分区的加密版本匹配起来,为他们排序,然后从加密的序列中找出与来自非加密序列相同的信息。
在上面所描述的例子中,很明显通过基本块分区的主要问题是因此产生的程序分区将泄露所有的控制流信息。一个循环的多次反复之后,通过观察所传输的程序分区的序列攻击者可知道有循环以及哪个分区是循环的入口,哪个分区是循环的结束。攻击者还能够知道在循环主体内有IF-ELSE结构以及哪个是控制分支的程序分区。攻击者就可实质上推断出原程序的所有控制信息,这将带来巨大的潜在安全漏洞。
从上面的讨论和示例中显而易见,因此需要的是隐藏控制流信息的同时将程序分区的系统、方法和计算机程序产品,使得攻击者不能通过观察通过网络传输下载到装置上的程序分区来猜出程序的行为。所需要的还有用来分区程序的代码和数据的方法和计算机程序产品,他们在将程序分区下载到装置期间确保防止篡改的同时允许程序分区在内存受限的装置上运行。
发明内容
为了使大尺寸的程序能够很容易地在诸如智能卡的可用内存受限的装置上运行,本发明的系统、方法和计算机产品能够在程序不能装入装置的内存时分区整个程序。只是在执行前将最低限度的安全程序分区按照需要从服务器下载到内嵌式装置。该系统、方法和计算机程序产品将程序的代码和数据分区使得与程序的控制流行为有关的信息不会泄露出去。换句话说,通过观察从服务器下载的程序分区,攻击者不可能猜出执行的是程序的哪一分支以及程序的控制流是什么。在这里谈到的防篡改特性对诸如智能卡的安全嵌入式装置来说非常有价值,这种装置能够装载敏感的信息和/或执行诸如金融交易的关键计算。
根据本发明的一个方面,本发明的系统、方法和计算机程序产品为服务器方的代码和数据分区移动代码程序(在程序从服务器方传向装置的系统中),导致产生包括代码和由代码访问的数据的独立的程序分区。每一个程序分区包括的信息对它的执行来说都是足够的。将移动代码分区按照要求一个接一个下载到诸如内嵌式装置的装置上。在一个程序分区执行完毕后,就向服务器请求下一个;同时也可将更新后的数据值发回服务器以获得与服务器方数据的一致性。而且,在服务器方,每一个所要求的程序分区在发送到内嵌式装置之前可在中间形式(IF)层得到动态优化。
应当理解,虽然本发明是通过智能卡来描述的,也应当理解本发明的方法和计算机程序产品对任何安全和/或内存受限的装置都是有用的,诸如移动或蜂窝电话、个人数据助理(PDA)、手提电脑等,它们可受益于安全性的提高和/或所要求的应用程序和数据内存的减小。
附图说明:
已经总的描述了本发明,现在参照附图,附图没有必要按比例画出,其中:
图1A是一种泄露程序控制流信息的基本分区算法。
图1B是图1A的基本分区算法的控制流框图。
图2是根据本发明的一个实施例的程序分区系统的框图。
图3是根据本发明的一个方面,用C语言编写的在移动的程序内寻找递归函数和非递归函数的算法。
图4是根据本发明的一个实施例,图3的用来识别递归和非递归函数的算法所执行的步骤的流程图。
图5是根据本发明的示例包括函数调用的安全分区示意图。
图6A是根据本发明的示例包括循环的控制流图。
图6B是根据本发明的示例的另一个控制流图。
图7是根据本发明的一个方面,用C语言编写的用于分区非递归函数的算法。
图8是根据本发明的一个方面,用C语言编写的用于分区递归函数的算法。
图9是根据本发明的一个方面,用C语言编写的用于在非解除参考(non-dereferenced)数据访问中分区数据的算法。
图10是根据本发明的一个方面,在解除参考(dereferenced)数据访问非堆栈对象中分区数据的用C语言编写的算法。
图11是根据本发明的一个方面,用于最小安全程序分区合并的用C语言编写的算法。
图12是根据本发明的一个方面,用于函数高速缓存的用C语言编写的轨迹分析算法。
图13A是根据本发明的一个方面的一个函数调用示例,其中没有请求更新的高速缓存函数调用。
图13B是根据本发明的一个方面的一个函数调用示例,其中请求了更新的高速缓存函数调用。
图14是根据本发明的一个方面,用以确定是否需要更新的高速缓存函数调用的用C语言编写的算法。
具体实施方式
在此之后将参考附图更全面地说明本发明,其中将给出本发明的优选实施例。然而,本发明也可以多种不同的方式体现,也不应该解释为受此处提出的实施例的限制;更准确地说,提供这些实施例是为了使此公开内容全面和完整,并将本发明的应用范围充分地传达给本领域的技术人员。同样的标记在全文代表同样的单元。
图2是根据本发明的一个实施例说明程序分区系统30的框图。应当理解下面将参考框图和流程图说明来描述本发明的系统和方法。应当明白框图中的框和流程图说明以及它们的组合可由计算机程序指令分别执行。可将这些计算机程序指令装载到通用计算机、专用计算机、或其他可编程数据处理设备,以产生一种机制,使得在计算机或其他可编程数据处理设备执行的指令产生用于实现流程图或框图中所指定的功能的装置。
也可将这些计算机程序指令存储在能够指引计算机或其他可编程数据处理设备以一种特殊方式工作的计算机可读介质上,以便存储在计算机可读介质上的指令产生包括实现在流程图或框图所指定的功能的指令装置的产品。也可将计算机程序指令装载到计算机或其他可编程数据处理设备,以使一系列在计算机或其他可编程设备上执行的操作步骤产生计算机执行进程,以便计算机或其他可编程设备执行的指令提供执行流程图或框图所指定的功能的步骤。
因此,框图的各个框以及流程说明支持用于执行指定功能的方式的组合、用于执行指定功能的步骤组合和用于执行指定功能的程序指令装置。也应当理解框图的每一个框和流程说明,以及框图的框和流程说明的组合能够由执行指定功能,或步骤,或专用硬件和计算机指令的组合的基于硬件的专用计算机系统实现。
重新看图2,程序分区系统30包括移动代码服务器33和装置42。服务器33和装置42通过网络39相互通信。网络39可包括,例如,有线电连接,以及红外通信路径、蜂窝连接、蓝牙无线连接或像任何本领域的普通技术人员所知道的通信介质。本发明的方法和计算机程序产品在移动代码服务器33上运行以分区移动程序32,以便只将移动程序32的程序分区发送到内存受限的装置42。每一个程序分区所包括的信息对其执行来说是足够的,而且按照要求一个接一个将移动代码段下载到42。由于设备只接收移动程序32的可执行的分区部分,因此装置42就可执行由于装置42的内存有限而无法执行的程序。根据本发明的一个说明性实施例,装置42是内存受限的防篡改的装置,诸如智能卡。虽然将参照智能卡作为装置42提供剩下的内容,应当理解,装置42可代表任何从服务器33接收程序的安全装置或内存受限的装置,诸如PDA、移动电话、手提电脑或诸如此类的装置。
根据本发明,移动代码程序32首先经过程序编码和数据分析34。正如下面进一步的详细描述,程序编码和分析34就在装置42执行程序分区之前识别将要从服务器33按照要求下载到装置42的安全程序分区。由于安全的程序分区序列不会泄露控制流信息所以它能确保防止篡改。根据一个说明性例子,如果L1、L2、...、Ln代表利用特殊的程序分区方案和装置缓存策略(在这里也可称为客户策略)从服务器33传送到装置42的一系列程序分区,下面的程序分区序列是一个泄露控制流信息的序列(违反防止篡改原则):
...,Li、Lk、...、Li,Lm,...
在这种序列里,程序分区Li有时出现在程序分区Lk之前,但在后面又出现在与Lk不同的Lm之前。如果有这样的序列出现,攻击者就能够猜出程序分区Li也许是控制到Lk或Lm的执行路径的控制块。因此,应当理解,一个程序的安全分区就是程序的每个程序分区不应该如上面所示的程序分区序列那样在序列里出现两次。将安全分区的概念用于本发明的系统、方法和计算机程序产品,用以分区要传送到装置42的程序。而且,最小安全分区就是使最小安全分区的任何子分区将泄漏序列及由此泄漏控制信息的最小的安全分区。
再参考图2,根据本发明,在服务器33将移动程序32的代码和数据分区,导致产生包括代码及代码访问的数据的独立程序分区。尽管经过分区,每一个程序分区所包括的信息对其执行来说是足够的。通过观察这些从服务器33下载到装置42的程序分区,攻击者无法猜出程序选择的是哪一分支以及程序的控制流是什么。这种防篡改的特性对诸如智能卡的安全内嵌装置来说是很有价值,它们可以装载敏感信息和/或执行诸如金融交易的关键运算。根据本发明的一个方面,程序编码和数据分析34可由可用来编译C和C++移动程序的程序分区算法(没有说明)来实现。
在指定程序分区后,服务器33将程序分区成多个程序分区36。分区也可由程序分区程序来实现。程序分区产生后,将它们动态优化38,使得在将它们传送到装置42时将最小数量的安全程序分区组合起来,并仍确保所组合的程序分区不泄露有关程序的控制流行为的信息。下面将参考合并算法详细地讨论程序分区的合并。应当理解合并程序分区将减少从服务器33到装置42的传输数量。从内存利用的角度考虑,应首选的是安全分区尽可能的小或是最小的安全分区。然而,因为在运行时通过网络传送多个小的代码片断可能导致非常低的效率,可将邻近的最小安全程序分区结合成一个大的分区,而且由于将程序分区向终端42的传送将不会导致控制流信息的泄漏,所以合并后的结果将仍是安全的。
也可由分区程序的程序来执行的动态优化方案也能够询问装置42,以确定其内存需求或缓存策略,以便向装置42传送适当数量和大小的程序分区。应当理解,在分区程序时,为了防止在将程序分区从服务器33传送到装置42时泄漏控制流信息,很重要的是本发明的系统、方法和计算机程序产品只选择那些在应用户要求传送时通过观察其序列不会泄漏程序控制流信息的安全程序分区。根据本发明的安全分区不只是基于怎样分区和传送程序,而且基于怎样和何时将那些程序分区通过网络39发送到装置42。因为将什么传送到装置42依赖于装置42的缓存策略(例如,是否缓存整个或部分输送来的程序分区),本领域的技术人员应当理解安全的程序分区既取决于怎样来分区程序又取决于客户管理程序分区的策略。
根据本发明的一个方面,按照要求将所请求的移动代码段40、44一个接一个的下载到装置42。根据本发明的一个方面,在服务器方,可将每一个所请求的程序分区在传送到内嵌式装置之前在中间形式(IF)层动态优化。因为程序分区不是以汇编码传送,所以服务器33和装置42之间的通信能够比如果以原码传送程序分区的其他可能的诸如二进制码形式快得多,它们也许比中间形式大若干倍。
一接到程序分区,装置42就执行其分区管理程序和加载程序/链接程序46,它们确定程序分区的正确目的地。程序分区管理程序46因此解析程序分区并将它们的位置登记到内存内。在执行程序48后,装置42将任何所要求的结果或更新数据值50传送回服务器33。因为装置42在每次执行程序分区时也许不更新数据值,所以数据值的更新是可选的。执行48后装置42可传送下一个传输请求到服务器,以请求执行功能所需的下一个程序分区。
如上所述,防止篡改特性既受程序分区方法或技术影响又受客户缓存策略的影响,因为它们一起决定通过网络传送的程序分区。本发明的系统、方法和计算机程序产品可实现将程序分区下载到在以下三种独立装置缓存策略中的任何一个之下工作的装置:(1)‘保留接收到的所有内容’;(2)‘不保留接收到的内容’(3)‘保留保证返回控制的程序分区’。
在‘保留接收到的全部内容’下,装置将保留每一个服务器送来的程序分区直到所嵌入的程序执行完毕。这种策略下的内存利用率最低并给客户装置带来最重的内存负担。即使将来永远不再访问程序分区,装置也不得不将它保留在本地内存,浪费了内嵌式装置的宝贵的内存资源。然而,因为装置永久存储了程序分区,所以由于将程序分区传送到装置不必超过一次,该策略就不会带来特别的安全关注。
在‘不保留接收到的内容’下,装置将在程序分区执行后就将其立即抛掉。由于装置只需保存一个当前正在执行的程序分区,所以这种策略对客户装置带来的是最小的内存负担。可将这种策略用于客户内存非常有限的情况下,因为客户将不保存任何内容,所以在需要每一个程序分区时必须重新传送。
在第三种策略下,‘保留保证返回控制的程序分区’,装置将保留保证返回控制的安全程序分区。以这样的程序分区为例,考虑包含函数调用的基本块。在这种策略下,在函数调用后,保证将控制返回到在这种策略下保留在内存内的调用基本块。由于这种策略只保留明确的在将来还要再次访问的程序分区,所以它比保留接收到的全部内容的策略给客户机带来小得多的内存负担。
接下来,将关注根据本发明的程序分区算法。这些程序分区算法分区程序的代码和数据使得不会泄漏与程序的控制流行为有关的信息。
根据本发明的一个方面,本发明的系统、方法和计算机程序产品实现应用到移动程序的每一个函数的程序分区算法。因此,根据本发明的一个实施例,以函数为基础将程序分区应用于函数。以智能卡为装置的说明性实施例继续,可将本领域的技术人员众所周知的函数和适合于智能卡的数据一起传送到智能卡来执行函数。智能卡然后执行该函数,并返回一个响应给提供函数的服务器。如上面所述,控制信息的泄漏源自于反复地从服务器发送程序分区。因此,在程序运行期间是否能够多次调用函数是分区算法防止篡改的关键。
因为程序分区(或函数)的传输将可能带来控制流信息的泄漏,因此本发明的方法和计算机程序产品将函数分类为不递归和递归函数。只有有了这种分类后才能够有对程序的分区。
非递归函数是那些在程序执行期间最多被调用一次的函数。同样地,不必为了执行程序将这种函数多次传送给装置。非递归函数的一个示例就是用C语言编写的主函数,因为它在C程序中只出现一次。非递归函数的其他例子包括程序起始函数和终止函数。另一方面,递归函数就是那些将被多次调用的函数。这些就对本发明的系统、方法和计算机程序产品试图消除掉控制流信息泄漏问题带来了明确而特别的关注。
根据本发明,简单的静态的程序分析揭示出一个函数是递归还是非递归函数。图3所说明的用C语言编写的算法60就实现了这样的分析。根据本发明的一个方面,算法60至少包括一部分由服务器33所执行的程序分区算法。如算法60所示,首先建立一个本技术领域的技术人员众所周知的增广函数调用图表。通过以下三条信息增广调用图表的每一个节点:(1)该函数是否只有一次静态出现;(2)该函数是否曾经被循环体调用过;以及(3)是否曾经将该函数的地址分配给函数指针。增广调用图表的首次遍历然后就发生了。
在图4的流程图中以框图的形式说明了算法60的功能。流程图说明在建立增广调用图表后,在增广调用图表识别非根节点(框64)。如图4所示,每一个非根节点将受到一系列的询问以确定该非根节点是不递归的。首先,算法确定非根节点是否只有一次静态出现(框66)。如果不是,非根节点就被标为递归的(框72)。否则,算法将确定非根节点是否在一个循环体内(框68)。如果在,非根节点将被标为递归的(框72)。如果不在,算法接着确定非根节点的唯一的调用函数是否是非递归函数(框70)。如果不是,非根节点将被标为递归(框72)。否则,算法将确定非根节点的函数是否指向一个函数指针(框74)。如果是,非根节点被标为递归的(框72)。否则,将非根节点标为不递归节点(框76)。最后,虽然没有说明,每一个非根节点都要经过这样的一系列询问并用此过程将每一个节点标为递归或不递归。
应当理解,图3所说明的和图4的流程图用框图所提供的算法60不处理不包括在增广调用图表内的没有静态出现的函数。即就是,如果一个函数没有静态出现,本发明的方法将假定它是通过函数指针调用,并将通过默认将其归类为递归函数。因此,因为算法60不执行指针分析,所以是保守的算法。而且,无论何时将一个函数的地址分配给指针函数,算法60就假定该函数为递归函数。因为典型地只有一些非递归函数,所以算法60的保守实际上几乎不带来影响。
根据本发明的一个方面,由程序分区算法实现揭示函数是递归还是非递归函数的简单的静态程序分析。将分区问题分为非递归函数分区和递归函数分区后,程序分区算法将准备分区程序。对于上面所讨论的三种客户缓存策略,接着讨论本发明的程序分区算法的功能。
首先,在‘保留所有接收到的内容’策略下,客户装置将保留它接收到的每一个程序分区。因此,程序的每一分区将通过网络最多传送一次。照这样,由于控制信息的泄漏只在重复传送的程序分区发生,所以就不存在潜在的泄漏危险。因此,可进行随意的分区而且传送将保持其安全性。最小的安全分区是每一个基本的程序块,服务器能够用程序分区算法简单地发送每一个用户请求的程序分区。
另一方面,在‘不保留接收到的内容’和‘保留保证返回控制的程序分区’的策略下,程序分区算法必须阻止重复传送程序分区。原因是在这两种策略的每一种策略下,由于装置的内存不保留它在所有情况下执行都需要的所有程序信息的永久副本的事实,也许要有规律并且多次传送程序分区。在讨论对每一种策略由本发明实现分区算法之前,为了使本发明的分区算法的功能和目的清晰,应当简要说明函数调用对程序分区防止篡改的影响。
结合图5说明了在安全程序分区内函数调用的一个范例。如图5所示,在安全分区L1180内有一个函数调用F182。在图5的右侧是F182的函数主体92。在‘不保留接收到的内容’的策略下,当客户装置遇到函数调用时,它将寻找函数F182的安全程序分区,并抛弃安全分区L1180,以使用于输入的程序分区的可用内存最大。当执行完函数F182后,控制将返回到L1180。客户然后不得不请求重新传送L1180。因此,结果通过网络发送的分区序列为:
...,L1180,L2186,L2288,L2390,L1180,L1284。...
L1180后面分别跟着L2186和L1284。由于L11可能会被看作控制程序分区的事实,所以这违反了严格的防止篡改的定义。因此,应当理解在‘不保留任何内容’的策略下不能够分区带有函数调用的函数。在‘保留保证返回控制的程序分区’的策略下也会带来同样的结果。
不过,L1180不是控制到L2186或L1284的分支的控制块,并且从上面的序列攻击者在一个函数内不可能得到任何正确的控制流信息。在最坏的情况下,攻击者也许知道在L11那里有函数调用以及L21,L22,L23组成函数主体。然而,在‘不保留任何内容’和‘保留保证返回控制的程序分区’的策略下,函数调用如同分支那样不会泄漏程序的控制流信息,因为假设的正常函数调用返回通常执行在函数调用后的程序块。相反的是,函数调用只是模块化设计的表现,而且也许泄漏的是不能被有效用来改变控制流的模块性信息。
接下来,将描述在‘不保留任何内容’和‘保留保证返回控制的程序分区’的策略下用于分区程序的方法和计算机程序产品来分区非递归函数以及递归函数。因为对‘不保留任何内容’和‘保留保证返回控制的程序分区’策略来说,用于分区非递归和递归函数的分区算法是相同的,所以将同时考虑每一种策略的分区算法。
现在讨论对非递归函数的分区,本发明将不分区循环主体,其中当两个或多个独立的程序分区也许跟随某个特殊的程序分区时产生一个循环。根据本发明的一个说明性示例,图6A展示了包括循环的CFG94。该循环包括程序分区B1、B2、B3和B4。由于在B1后跟着要么B2、B4要么B3.B4,所以应当理解,包括循环的程序分区必须保持在一起或可得到控制流信息。结果,本发明的方法和计算机程序产品以及特别地是程序分区算法将保持循环主体(即就是包括循环的程序分区)在一起以传输到装置。
根据本发明的一个实施例,图7说明了一个用于分区非递归函数的用C语言编写的算法100。虽然算法100指向在‘不保留任何内容’策略下运行的装置,它也同样适用于在‘保留保证返回控制的程序分区’策略下运行的装置。算法100利用上面所陈述的规则产生最小的安全程序分区。根据本发明的一个方面,可通过程序分区算法来实现算法100。应用算法100到图6A的示例中,最小的安全程序分区应当是L1={B1,B2,B3,B4}和L2={B5}。由L1和L2给出程序分区的执行序列,但是通过网络传输的顺序是L1和L2,这是防止篡改的。本领域的技术人员应当立即理解,装置为了执行所期望的函数可能不会请求L1内的所有程序分区。例如,装置可能执行子程序分区B1,B2和B4流程,在这种情况下,执行时就不需要程序分区B3。然而,将这个程序分区传送到装置以维持防止篡改,正如不包括它可请求其重传到装置破坏防止篡改特性。
接下来,将讨论用于分区递归函数的方法和计算机程序产品。像非递归函数的分区一样,在将递归函数从服务器传送到装置期间,其内含有循环的递归函数也可能带来控制流信息的泄漏。因此,同样适用于循环主体不能分区的原则。根据本发明的一个实施例,图8说明了一种用于分区递归函数的用C语言编写的算法104。虽然算法104指向的是运行在‘不保留任何内容’策略下的装置,同样的算法104同样适用于运行在‘保留保证返回控制的程序分区’策略下的装置。算法104用上面所述规则创建最小安全程序分区,并能够由服务器正在执行的程序分区算法来实现。
应当理解,用于递归函数的算法104实际上与用于非递归函数的算法100相同,但是在服务器上的运行时间是不同的。对非递归函数来说,根据本发明,服务器只需按照客户的请求发送安全程序分区。但对递归函数来说,服务器将发送包括递归函数中所有被缩减的节点的预定的安全程序分区序列。然而,该序列不能是一个任意的序列。根据本发明的另一个示例,图6B展示了CFG程序分区序列96。例如,在图6B,R2不应当在R1之前传送。更确切地说,该序列对应缩减的图表节点的拓扑顺序之一。由于缩减图表的非循环特性以及强加到序列上的拓扑顺序,该序列是防止篡改的。对于图6B的CFG96,服务器将预先确定拓扑序列,例如R1、R2、R3、R4、R5。在运行时,服务器将不考虑控制流一直给客户发送这个序列。在发送的程序分区之间有虚设的安全程序分区。例如,如果真正的执行路径是R1、R2、R5,那么R3、R4就是虚设的程序分区。
应当理解,上面结合图7和图8所描述的分区算法提供最安全的最小程序分区。根据本发的次优实施例,也可识别安全,但不必最小的程序分区。为了执行这样的程序分区,可采用下面步骤将主程序分区到安全区域:(1)找到每一个循环的入口和出口,将节点的合并作为安全区域;以及(2)在循环主体做另一个基本块,但不是在第一个安全区域和第二个安全区域。对上面所描述的非递归函数的分区来说这些步骤是相同的,但不能确保最小的程序分区。另外,可用下面的步骤实现过程主体的分区:(1)为过程主体建立缩减的CFG;(2)因为那个过程的缩减CFG的入口节点本身是最小的安全区域,为这个安全区域设置最后的最小安全区域;(3)对在最后的最小安全区域内的缩减节点的所有接替者:如果特殊接替节点的所有前面节点没有被处理,就将这个接替节点加到当前的最小安全区域,否则什么都不做。(4)将所有的接替节点处理完后,设置最后的最小安全区域到当前最小安全区域;以及(5)重复步骤3和4直到将缩减CFG的出口节点处理完为止。这些步骤对上面所描述的递归函数的分区来说是可选的但也是类似的,但是不能确保最小程序分区。
如上面所述,这里所讨论的每一个算法可由服务器33内的程序分区算法实现。因此,程序分区算法能够有效地识别出移动程序内的递归和非递归函数,并能够根据上面所述的方法分区移动程序。给定装置的缓存策略,程序分区算法也可将合适的程序分区传送给客户装置。
虽然已经详细地描述了程序的分区,应当理解本程序的另一个方面是数据的分区。应当理解诸如智能卡的内存受限的装置不仅对执行程序包含有限的可用内存,对存储数据来说内存也是有限的。因此,本发明的系统、方法和计算机程序产品以及上面有关程序分区的描述也可用来实现数据分区。特别是,利用本发明,服务器33可只传输装置42请求使用的数据来执行当前算法。为了在客户一方运行程序分区,就需要代码分区所需的数据。不是传送整个数据段加堆栈和程序堆,那样是非常无效的,本发明的方法和计算机产品只发送特殊的代码分区所访问的数据。
代码分区的数据访问可分为三种:(1)非解除参考地数据访问,这对应于直接访问堆栈中的局部定义变量和数据段中的全局定义变量(不涉及到指针接除访问);(2)对非堆栈对象的解除参考地数据访问,其中指针可指向位于堆栈或程序数据段中的对象。那些对象被静态定义并分配到程序中,所以就可识别这种对象的静态信息的准确位置;以及(3)解除参考地数据访问堆栈对象:一个指向堆栈对象的指针。动态的分配和释放堆栈对象。图9和图10分别是用于分区上面的第一和第二类数据的算法108和110。像上面考虑的算法那样,可用程序分区算法实现这些算法,使得程序分区算法能够有效的分区运行一个分段程序所需要的程序和数据。应当理解,由于与提取访问过的堆栈对象相关的复杂性,所以第三类,即接除参考地堆栈访问,更适宜由客户装置独立管理。
接下来,将详细说明本发明的另外的方法,安全分区的合并。如同上面的由计算机程序产品,更准确的说由程序分区算法实现的方法,合并安全分区的方法也可在服务器33内实现。也可由程序分区算法实现安全分区的合并。
上面所公开的算法说明在不同的装置缓存策略下,为了识别最小安全程序分区是怎样操作本发明。根据这里所描述的防止篡改的分区算法,以这样的方式将函数主体分区成许多安全分区以保证在函数的调用过程中发送的安全分区的序列是相同的,目的是消除程序分区序列的不同引起的程序控制信息的泄漏。因此,在程序执行过程中安全分区的发送序列实际上是预先确定的和固定的,并且每次将传送相同的序列。由于这种重要特性,可将邻近的安全程序分区合并为一个大分区的并且不危及防止篡改的特性。
将多个程序分区合并的功能减少了下载程序到装置上的传输时间。由于在执行期间的小颗粒状,使得安全程序分区带来了低效率。为了缓解这个问题,本发明提供了一种新颖的解决方法,可扩展装置上的可用数据和代码内存的量。在内存容量受限的情况下,这可通过合并最小安全程序分区来获得。可证明这样做不违反防止篡改的特性。
由装置的代码大小限制和数据大小限制带来的资源有限引导合并算法(即就是,由服务器内的程序分区算法或一个独立的合并算法实现)。因此,合并算法以原始的最小安全程序分区和装置的代码大小限制和数据大小限制作为输入。然后就是代码段的合并,以确保作为多个程序分区的总和的合并程序分区不超过装置的内存资源。另外,既可实现对代码又可实现对数据的这样的合并。因此,数据合并的结果就是所引用的数据的合并。为了实现合并,本发明的方法找到了一个项目分区,使得在下面两种条件下程序分区的数量最小:(1)程序分区不可重新排序项目;以及(2)如果一个原始项目本身超过资源限制,它就不与别的项目合并。根据本发明的一个实施例,图11展示了最小安全程序分区合并的算法111。
最后根据仍是本发明的另一个方面,本发明的系统、方法和计算机的程序产品能够进一步优化没有足够内存的装置存储程序函数的能力。特别是,在没有将分区保留在内存的任何强制请求的情况下,每次在它们需要时从服务器提取需要的程序分区也许将带来相当大的开销。例如,在装置和服务器通过蜂窝网通信的地方,这些通信将变得很昂贵。即使将安全程序分区合并,也能够带来巨大的通信和下载开销。为了减少运行期间的开销,本发明,更准确说的是程序分区算法能够实现在客户装置的函数缓存。函数缓存能够使客户留出部分内存来缓存函数集合。当再次调用所缓存的函数时,客户将不再从服务器请求该函数而是直接从本地内存提取。应当将哪些函数在给定的程序节点保留在客户内存是由程序分区算法静态地确定,此后将此称为编译器。因为动态缓存驱逐算法在客户方装置上是很昂贵的,所以优选静态的解决方案。
本发明的函数缓存机制的框架包括三个步骤:(1)编程实现;(2)热函数集合(hot function set)识别和优化;以及(3)编译/运行时环境支持。特别是,在一段时间内程序有规律地调用函数的特定集合或热函数集合。在每一个调用点函数缓存识别热函数集合。每一个调用点的热函数集合是静态决定的,并且在程序运行期间是固定的。对于每一个用户定义的函数调用,指令释放出正在调用的函数的ID、正在调用的基本块的ID和所调用函数的ID。这样,携带在哪个函数点调用哪个函数的信息的轨迹就产生了。获得函数调用轨迹后,就可用本发明的方法和计算机产品捕获到轨迹上的模式。热函数是指那些ID在一定的时间内处于高频率模式的函数。
于是轨迹分析算法将轨迹区域的热函数集合的生存期分为三个阶段。对每一个阶段可能采用如下的不同策略:
(1)热集合(hot set)不断增长和趋于稳定。在这个阶段,建立一个新的热集合,并且也许这个热集合没有包括这个区域的所有热函数。在这个阶段里,该算法允许此热集合在没有干扰的情况下增长。当扫描到调用轨迹的长度超过热集合的预定最大尺寸时,当前热集合进入保持阶段。
(2)热集合保持。在这个阶段,已经建立起该区域的热集合。其后的函数调用应该展示为对热集合的命中。在这个阶段期间,由于建立了热集合所以就可以对总的热集合遗漏计数。如果遗漏的数量超过所允许的预先确定的最大遗漏数量,当前热集合就进入丢弃阶段。
(3)热集合丢弃。由于观察到指示热集合过渡点的热集合遗漏,该热集合进入这个阶段。一旦热集合进入这个阶段,就驱逐出热集合中的函数,并且如果函数的命中计数超过或等于预先确定的最小命中频率,将引导当前检测的区域去缓存这个函数。执行频率检测是为了消除热集合中的噪声。
在轨迹分析算法里有一些控制参数。通过增加最大热集合的尺寸,在冒着引入噪声并将多个热集合合并为一个集合的危险的同时可发现轨迹的较长模式。所允许的最大遗漏数量对最大热集合尺寸有类似的影响。最小命中频率是过滤热集合的噪声的保障并确保所发现的热函数足够热。不同的函数展示出不同的调用轨迹行为。这些参数允许我们很容易在执行性能和内存需求之间找到每个应用程序的平衡。图12的用C语言编写的算法112从较高级别展示了轨迹分析算法。
每一个调用点的热函数集合是要缓存到那个点的函数集合。在一点上要缓存的集合也许与另一点不相同。需要编译和运行时环境的支持以使热函数集合能够过渡。在移动代码程序的编译期间,程序分区算法(或编译器)就在必要时,在用户定义的函数调用之前插入函数调用update_cached_function(int current_func_id,intcurrent_BB_id)。这种函数调用是必须的,除非编译器能够静态地建立在运行时当前在调用点缓存的函数集合与将要缓存的函数集合相同的事实。由于在连接点的不同边缘有不同集合缓存,所以可能不知道在连接节点的两个集合是否相同。移动程序要求运行时环境通过所插入的函数调用更新所缓存的函数。当运行时环境装载程序时,它也为它们对应的热函数集合装载调用点图。当它接到请求时,它将比较当前调用点的对应的热函数集合与当前所缓存的函数,找到本地没有的将要缓存的函数,然后向服务器请求它们。
应当理解,将要缓存到每一个调用点的热函数集合被认为是轨迹分析算法的结果。然而,每一个调用点潜在地拥有不同的热函数集合。为了动态地将当前缓存的函数集合变为要在特殊的函数调用点缓存的函数集合,更新的缓存函数调用可计算此变化。这个功能可由程序分区算法来实现。更可取地是,函数调用就发生在用户定义的过程调用之前,并将带来一些运行时执行开销。另一方面,如果编译器能够确保当前缓存的函数集合与将要缓存的函数集合相同,用所插入的更新的缓存函数调用来改进执行情况就不是必须的。而且,根据本发明的一个方面,如果两个热函数集合不相同,就可能使用为运行时环境清晰地提供不同的更简单的调用版本,使得运行时环境本身不用去计算这些不同,这将带来较低开销。图13A是一个示例。
在图13A的示例114中,在基本块B1115中有一个函数调用foo()。将要缓存的集合是f1、f2和f3。基本块B2116之前只有B1。所以当程序执行到B2116时,可确保控制信息来自于B1115。同样,知道当前缓存的集合是{f1,f2,f3}。这与在函数调用点foo2()将要缓存的集合是相同的。因此,不需要用以改变缓存函数集合的更新的缓存函数调用。图13B是需要更新的缓存函数调用的示例。在这个例子中,在块B3123之前有块B1121和块B2122。当前所存储的函数集合将依赖于来自前面的块的控制而不同。因而,没有办法静态地知道在运行时当前缓存的是哪一个集合,所以就需要更新的缓存函数调用。图14根据本发明的一个方面,展示了用以确定是否需要更新的缓存函数调用的用C语言编写的算法126。
在识别了由每一调用点将要缓存的编译器引导的函数集合后,编译器将推导出程序的内存需求。它将首先确保在每一个调用点的热函数内存需求以实现好的性能,然后它将检查最小安全程序分区的最大尺寸,如同在一个特定的热集合被激活时看到的。它将这两者之和作为编译器在特定调用点推荐的内存分配大小。
如这里所公开的,本发明为安全内嵌式装置(如智能卡)提供了有效的和防止篡改的程序分区。因为在通过网络传送的程序分区的序列中没有可观察到的差别,本发明在将程序传送到装置时提供了防止篡改。接收程序分区的装置的不同缓存分区策略影响防止篡改程序分区技术和装置执行函数的性能(包括装置内的内存需求和程序应用的执行速度)。本发明的分区算法能够将应用程序分区成非常细粒的小段。然而,由于如果执行程序分区时没有进一步优化将可能使运行时性能降低,所以合并安全程序分区和函数缓存是两种用来减少由于程序分区带来的运行时开销的优化方案。
所属领域的技术人员将理解这里所提出的许多修改和本发明的其它实施例,并得益于前面所描述的讲义及相关附图。因此,本领域的普通技术人员应当理解本发明可以多种形式体现而不应该限制于上面所描述的实施例。因此,应当理解本发明不限制于所公开的具体实施例,并且在所附权利要求书的范围内可包括各种修改和其他实施例。虽然这里使用了特定的术语,但只是在普通和描述意义上使用它们而不是要限制它们。
Claims (27)
1.一种用于将程序分区以便传送到一个装置的方法,包括:
分析一个程序,以识别所述程序中的至少一个递归函数和至少一个非递归函数;
基于循环主体不能被分区以及构成循环主体的各部分的分区被保持在一起以便传送到装置的原则,利用对所述递归函数和非递归函数的识别,将所述程序分区为多个最小安全程序分区;以及
将所述多个最小安全程序分区中的至少一个传送到所述装置。
2.根据权利要求1的方法,其中由计算机程序代码实现对所述程序的分析。
3.根据权利要求1的方法,其中由计算机程序代码实现将程序分区成多个最小安全程序分区。
4.根据权利要求1的方法,进一步包括将所述多个最小安全程序分区的至少两个合并在一起,使得所述多个最小安全程序分区的至少两个可被一起发送到所述装置。
5.根据权利要求4的方法,进一步包括在将所述多个最小安全程序分区的至少两个合并以产生合并的程序分区之前,确定所述装置的内存容量。
6.根据权利要求4的方法,进一步包括将所述合并的程序分区传送给所述装置。
7.根据权利要求1的方法,其中对任何一个所述最小安全程序分区的进一步划分导致控制信息被泄露。
8.根据权利要求1的方法,其中在递归函数或非递归函数的执行期间,以固定顺序将每一个所述最小安全程序分区传送到所述装置。
9.根据权利要求1的方法,进一步包括将至少两个所述最小安全程序分区合并以创建一个安全的合并程序分区。
10.根据权利要求1的方法,进一步包括在所述装置内保留为高速缓存所述多个最小安全程序分区的至少一个所分配的内存。
11.一种用于将程序分区以便下载到一个装置的方法,包括:
提供一个程序,其中所述程序的尺寸超过所述装置的内存需求;
分析所述程序,以识别出所述程序中的至少一个递归函数和至少一个非递归函数;
基于循环主体不能被分区以及构成循环主体的各部分的分区被保持在一起以便传送到装置的原则,利用对所述递归函数和非递归函数的识别,将所述程序分区成多个最小安全程序分区;以及
传送所述多个最小安全程序分区中的至少一个到所述装置,使得所述程序的有效执行代码和数据完全驻留在所述装置内,而不是整个程序驻留在所述装置内。
12.根据权利要求11的方法,其中由计算机程序代码实现对所述程序的分析。
13.根据权利要求11的方法,其中由计算机程序代码实现将所述程序分区成多个最小安全程序分区。
14.根据权利要求11的方法,进一步包括:
合并所述多个最小安全程序分区的至少两个以产生一个合并的程序分区;以及
将所述合并的程序分区传送给所述装置。
15.根据权利要求14的方法,进一步包括在合并所述多个最小安全程序分区中的至少两个之前确定所述装置的内存容量。
16.根据权利要求11的方法,其中在将所述程序分区传送到所述装置期间,对任何一个所述最小安全程序分区的进一步划分导致所述程序的控制信息被泄露。
17.根据权利要求11的方法,其中在递归函数或非递归函数的执行期间,以固定的顺序将每一个所述最小安全程序分区传送给所述装置。
18.根据权利要求11的方法,进一步包括将至少两个所述最小安全程序分区合并以创建一个安全的合并程序分区。
19.根据权利要求11的方法,进一步包括在所述装置内保留为高速缓存所述多个最小安全程序分区的至少一个所分配的内存。
20.一种用于在装置上存储程序分区的方法,包括:
分析一个程序,以识别所述程序中的至少一个递归函数和至少一个非递归函数;
基于循环主体不能被分区以及构成循环主体的各部分的分区被保持在一起以便传送到装置的原则,利用对所述递归函数和非递归函数的识别,将所述程序分区成多个最小安全程序分区;
将所述多个最小安全程序分区的至少一个传送到所述装置;以及
只将对应于程序的执行所需的程序块的那些分区存储在所述装置上。
21.根据权利要求20的方法,其中所述分区的存储包括:选择性地只存储对应于程序的执行所需的程序块的那些分区,以及其中由所述装置实现所述选择性的存储。
22.一种用于将程序分区,使得所述程序只有一部分可下载到一个内存受限的装置并在其上运行的系统,包括:
服务器,其中所述服务器包括其中驻留一个程序的内存,且其中所述程序的尺寸超过一个装置的内存需求;以及
与所述服务器通信的一个装置,
其中所述服务器包括:
用于分析所述程序,以识别所述程序中的至少一个递归函数和至少一个非递归函数的部件;
基于循环主体不能被分区以及构成循环主体的各部分的分区被保持在一起以便传送到装置的原则,利用对所述递归函数和非递归函数的识别,将所述程序分区为多个最小安全程序分区的部件;以及
将所述多个最小安全程序分区中的至少一个传送给所述装置的部件,
使得所述程序的有效执行部分完全驻留在所述装置内,而不是整个程序驻留在所述装置上。
23.根据权利要求22的系统,其中所述服务器确定所述装置中可用于接收所述多个最小安全程序分区中的至少一个的内存。
24.根据权利要求22的系统,其中所述服务器合并所述多个最小安全程序分区中的至少两个,以创建一个传送给所述装置的合并的程序分区,从而减少传送给所述装置的独立分区的数量。
25.根据权利要求22的系统,其中所述装置包括智能卡。
26.一种用于将程序分区以便下载到一个装置的方法,包括:
分析一个程序,以识别所述程序中的至少一个递归函数和至少一个非递归函数;
基于循环主体不能被分区以及构成循环主体的各部分的分区被保持在一起以便传送到装置的原则,利用对所述递归函数和非递归函数的识别,将所述程序分区成多个最小安全程序分区;
确定所述装置所请求的多个最小安全程序分区中的至少一个,其中在所述至少一个最小安全程序分区传送到所述装置后,有效地执行所述程序的一个函数,而不是整个程序驻留在所述装置上。
27.一种用于优化装置的性能的方法,包括:
分析一个程序,以识别所述程序中的至少一个递归函数和至少一个非递归函数;以及
基于循环主体不能被分区以及构成循环主体的各部分的分区被保持在一起以便传送到装置的原则,利用对所述递归函数和非递归函数的识别,将所述程序分区成多个最小安全程序分区;以及
基于函数集合何时被装置调用来确定至少一个要本地存储的函数集合,并且当重复调用所述函数集合时,检索本地存储的函数集合,
其中在将所述多个最小安全程序分区中的至少一个传送给所述装置期间,所述多个最小安全程序分区不泄露所述程序的控制流信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US38571302P | 2002-06-04 | 2002-06-04 | |
US60/385,713 | 2002-06-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1708750A CN1708750A (zh) | 2005-12-14 |
CN100378666C true CN100378666C (zh) | 2008-04-02 |
Family
ID=29712204
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB038167239A Expired - Fee Related CN100378666C (zh) | 2002-06-04 | 2003-06-04 | 用于防止泄露的程序分区的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7269671B2 (zh) |
EP (1) | EP1516249B1 (zh) |
JP (1) | JP4727984B2 (zh) |
CN (1) | CN100378666C (zh) |
AU (1) | AU2003238876A1 (zh) |
WO (1) | WO2003102769A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105468543A (zh) * | 2014-09-11 | 2016-04-06 | 中兴通讯股份有限公司 | 一种保护敏感信息的方法及装置 |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003102769A2 (en) * | 2002-06-04 | 2003-12-11 | Georgia Tech Research Corporation | System, method and computer program product for leakage-proof program partitioning |
EP1613111A3 (en) * | 2004-07-02 | 2007-12-26 | Groundhog Technologies Inc. | Partitioning method for mobile communication network |
US20080021973A1 (en) * | 2006-06-02 | 2008-01-24 | Topia Technology | Communications network architecture |
US8321666B2 (en) * | 2006-08-15 | 2012-11-27 | Sap Ag | Implementations of secure computation protocols |
US20090075698A1 (en) * | 2007-09-14 | 2009-03-19 | Zhimin Ding | Removable Card And A Mobile Wireless Communication Device |
US8805949B2 (en) | 2008-01-16 | 2014-08-12 | Netapp, Inc. | System and method for populating a cache using behavioral adaptive policies |
US8572674B2 (en) * | 2008-08-13 | 2013-10-29 | International Business Machines Corporation | System, method, and apparatus for modular, string-sensitive, access rights analysis with demand-driven precision |
US9117094B2 (en) | 2008-10-29 | 2015-08-25 | Microsoft Technology Licensing, Llc | Data location obfuscation |
CN102143158B (zh) * | 2011-01-13 | 2013-10-09 | 北京邮电大学 | 基于tpm的数据防泄漏方法 |
CN104350504B (zh) * | 2012-02-10 | 2018-06-12 | 爱迪德技术有限公司 | 用于软件操作中的程序流的方法和装置 |
KR102392642B1 (ko) * | 2017-11-08 | 2022-04-29 | 한국전력공사 | Cfg를 이용한 패턴 기반의 소프트웨어 절차변경 동작 감시 장치 및 그 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5696971A (en) * | 1994-12-23 | 1997-12-09 | Recursive Technologies Associates | Recursive functions optimizier (RFO) for compliers of high-level programming languages |
EP0811911A2 (en) * | 1996-06-05 | 1997-12-10 | Sun Microsystems, Inc. | Computer system and method for executing network mobile code with reduced run-time memory space requirements |
EP1125196A1 (en) * | 1998-10-26 | 2001-08-22 | STMicroelectronics Asia Pacific Pte Ltd. | Modem architecture and method of data transfer |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5428793A (en) * | 1989-11-13 | 1995-06-27 | Hewlett-Packard Company | Method and apparatus for compiling computer programs with interproceduural register allocation |
JPH04337843A (ja) * | 1991-05-15 | 1992-11-25 | Hitachi Ltd | プログラム動作表示方法 |
JPH08234975A (ja) * | 1995-02-28 | 1996-09-13 | Fujitsu Ltd | プログラム生成装置および方法 |
JP3813769B2 (ja) * | 1998-08-03 | 2006-08-23 | 松下電器産業株式会社 | 制御プログラム送信方法及び制御プログラムダウンロード方法 |
JP3570308B2 (ja) * | 1999-09-10 | 2004-09-29 | 日本電気株式会社 | 通信システム |
JP2001333461A (ja) * | 2000-05-23 | 2001-11-30 | Hitachi Building Systems Co Ltd | 端末用プログラムの遠隔書換え方法 |
JP2001350684A (ja) * | 2000-06-05 | 2001-12-21 | Nec Gumma Ltd | ソフトウェア提供システム及びソフトウェア提供装置 |
AU2001267718A1 (en) | 2000-07-03 | 2002-01-14 | Neville Anthony Wylie Samuelson | A means for applying images to other images |
FR2817055B1 (fr) | 2000-11-22 | 2003-02-14 | Gemplus Card Int | Execution d'une application dans un objet electronique portable a faible capacite de memoire |
WO2003102769A2 (en) * | 2002-06-04 | 2003-12-11 | Georgia Tech Research Corporation | System, method and computer program product for leakage-proof program partitioning |
-
2003
- 2003-06-04 WO PCT/US2003/017578 patent/WO2003102769A2/en active Application Filing
- 2003-06-04 US US10/454,037 patent/US7269671B2/en not_active Expired - Lifetime
- 2003-06-04 JP JP2004509787A patent/JP4727984B2/ja not_active Expired - Fee Related
- 2003-06-04 AU AU2003238876A patent/AU2003238876A1/en not_active Abandoned
- 2003-06-04 CN CNB038167239A patent/CN100378666C/zh not_active Expired - Fee Related
- 2003-06-04 EP EP03734391A patent/EP1516249B1/en not_active Expired - Lifetime
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5696971A (en) * | 1994-12-23 | 1997-12-09 | Recursive Technologies Associates | Recursive functions optimizier (RFO) for compliers of high-level programming languages |
EP0811911A2 (en) * | 1996-06-05 | 1997-12-10 | Sun Microsystems, Inc. | Computer system and method for executing network mobile code with reduced run-time memory space requirements |
EP1125196A1 (en) * | 1998-10-26 | 2001-08-22 | STMicroelectronics Asia Pacific Pte Ltd. | Modem architecture and method of data transfer |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105468543A (zh) * | 2014-09-11 | 2016-04-06 | 中兴通讯股份有限公司 | 一种保护敏感信息的方法及装置 |
CN105468543B (zh) * | 2014-09-11 | 2020-06-16 | 中兴通讯股份有限公司 | 一种保护敏感信息的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP1516249B1 (en) | 2012-08-08 |
WO2003102769A3 (en) | 2005-01-20 |
US20040073898A1 (en) | 2004-04-15 |
WO2003102769A2 (en) | 2003-12-11 |
AU2003238876A8 (en) | 2003-12-19 |
JP2005528689A (ja) | 2005-09-22 |
AU2003238876A1 (en) | 2003-12-19 |
US7269671B2 (en) | 2007-09-11 |
CN1708750A (zh) | 2005-12-14 |
JP4727984B2 (ja) | 2011-07-20 |
EP1516249A2 (en) | 2005-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wu et al. | Eliminating timing side-channel leaks using program repair | |
JP7327744B2 (ja) | ファンクションアズアサービス(FaaS)システムの強化 | |
CN100378666C (zh) | 用于防止泄露的程序分区的系统和方法 | |
CN102549576B (zh) | 审核设备 | |
KR20040096501A (ko) | 리소스들을 프리로딩 하기 위한 방법 및 시스템 | |
WO2016199166A1 (en) | Potentate: a cryptography-obfuscating, self-policing, pervasive distribution system for digital content | |
Krohn et al. | Noninterference for a practical difc-based operating system | |
WO2004003861A1 (en) | Process for compiling and executing software applications in a multi-processor environment | |
US20050132347A1 (en) | System for controlling the use of a software application on a plurality of computers | |
US5574912A (en) | Lattice scheduler method for reducing the impact of covert-channel countermeasures | |
US7500108B2 (en) | Metered execution of code | |
US20210019155A1 (en) | Optimizing managed runtime applications for serverless environments | |
Cao et al. | Querying shared data with security heterogeneity | |
CN103729598B (zh) | 数据安全互联系统及其建立方法 | |
CN112425121A (zh) | 关于分布式数据库的使用控制数据网络 | |
CN115630392A (zh) | 一种基于无服务器架构的隐私数据管理方法和计算网关 | |
Zhang et al. | Tamper-resistant whole program partitioning | |
EP0969361A1 (en) | Class loader | |
Puliafito et al. | Security mechanisms for the MAP agent system | |
CN103729600A (zh) | 数据安全互联系统建立方法及数据安全互联系统 | |
US10747871B2 (en) | System and method for producing secure data management software | |
KR101995151B1 (ko) | 제2 애플리케이션에 의한 사용을 위해 제1 애플리케이션으로부터 제1 데이터를 전송하도록 구성된 집적 회로 카드 | |
WO2008043647A2 (en) | Defending smart cards against attacks by redundant processing | |
Bouffard et al. | Accessing secure information using export file fraudulence | |
KR102703286B1 (ko) | 트랜잭션을 수행하는 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080402 |
|
CF01 | Termination of patent right due to non-payment of annual fee |