没有合适的资源?快使用搜索试试~ 我知道了~
博士学位论文L’UNIVERSITÉ DE RENNESC OMUE U级 B代表Oire和科尔 第601章第一次见面数学与信息通信科学与技术专业通过亚历山大·邓用于内存论文于2020年12月10日在雷恩提交并答辩研究单位:Celtique论文编号:答辩前的报告员:塔玛拉·雷兹克因里亚索菲亚安提波利斯亚历杭德罗·鲁索·查默斯理工大学评审团组成:请注意,如果评审团成员在答辩当天缺席,评审团的组成仅包括出席的成员。主席:姓名职位和执业机构(在审查员:弗雷德里克·贝松·因里亚·雷恩塔玛拉·雷兹克因里亚索菲亚安提波利斯亚历杭德罗·鲁索·查默斯理工大学海德曼·卡琳皮埃尔和玛丽·居里大学越南Triem Tong Valérie CentraleSupelecDir.论文作者:Thomas JENSENInria Rennes3C.保护的补偿记忆我们的生活越来越依赖于计算机系统,这一趋势在未来几年将变得更加明显。无论是在医疗保健、运输还是经济领域,如果不使用这些系统,这些不同的领域将不再能够正常运行。因此,由于网络攻击可能造成的本论文的目的是通过对程序的安全编译感兴趣来编译是将人类编写的源程序转换为机器可读代码的过程。由我们的处理器。安全编译有两种方法:通过应用程序或通过保留安全策略。应用策略 在编译过程中对程序进行安全保护的方法是将一个 一个这样的例子是修补了StackGuard [29]的gcc编译器,它产生的可执行文件可以抵抗缓冲区溢出攻击[70]。在这种情况下,应用的安全策略是由编译器选择的,当它与用户的选择不同时,可能会引起问题保持程序安全的编译器有一个不同的目标,即确保编译后的程序至少与源程序一样安全。例如,Jasmin [3]是一个专用于加密实现的编译器,它确保编译后的程序遵循与其源代码版本相同的安全属性。选择安全编译器的安全性取决于对要编译的源程序的信任程度。如果源程序的来源未知或恶意,则将使用安全应用程序来确保安全程序的输出。相反,当安全策略由开发人员在程序的源代码中4可执行程序本文将讨论这两种类型的安全编译。首先,我们开发了C OMP C ERT S FI编译器,它将软件故障隔离(SFI)技术应用于转换后论文的第二部分集中在编译过程中安全属性的保留上我们定义了一个名为Information Flow Pre-serving的属性,它可以确保COMP CERT SFI软件故障隔离(SFI)是一种试图最大限度地延长执行时间的隔离技术Wahbe 等人确立了 SFI 的基本原则 。 [114] 以及 随后的工作如 NaCl [117] 或Pittsfield [73]都是基于这些原理。我们首先介绍SFI的基础知识,然后看看我们的COMP CERT SFI编译器。软件故障隔离(SFI)存在不同的隔离方法,如进程之间的虚拟机或虚拟内存。SFI是一种最大限度地减少主机程序与可能是恶意的各种模块之间的交互的技术。为此,在SFI中,主机程序在其自己的内存中托管其希望与之交互的不同模块。为了防止这些模块损坏主机程序的内存,它们被放置在指定的内存区域,称为沙箱。Wahbe等人描述的SFI安全策略如下:— 内存安全性:模块不能读取、写入或跳出其沙箱。— 安全通信:主机与其模块之间的所有通信都要— 代码检查:模块执行的任何代码都已预先检查,以SFI由两个主要组件组成:生成器和验证器。生成器在编译过程中内置,并转换模块的代码,5''它满足存储器安全和安全通信的规则。然后,在将代码从模块加载到内存之前许多关于SFI 的工作已经完成,如MiSFit [107]、Pittsfield [73]或在GoogleChrome浏览器中使用的NaCl [117,98,6]。这项工作的主要目的是尽可能减少国际金融公司计划转型COMP CERT SFICOMP CERT SFI是一个基于COMP CERT的编译器,它生成的程序符合SFI的 安全 策略 。 COMP CERT 是 一个 经过 认证 的 C 语 言编 译器 , 使 用 Coq Proofl'assistant [ 112 ]进行了证明由于这个守恒定理,COMP CERT SFI可以从SFI工具中删除SFI检查器。实际上,COMP CERT SFI只有一个用于SFI的代码生成器,但没有验证器。这种方法最早关于COMP CERT SFI的SFI生成器的证明定理如下:— 安全性:生成器生成的代码不能访问位于其沙箱之外的内存,并且识别任何主机-模块交互。 并由受信任的库控制。— 安全性:产品代码不包含未定义的行为安全定理对应于SFI的存储器安全和安全通信原则的规则,并保证模块的隔离。安全性定理是应用COMP CERT的守恒定理所必需的,该定理引用:如果程序p不包含未定义的行为,则编译后的程序p具有与p相同的行为。由于这个守恒定理,我们可以保证以前由SFI生成器进行的变换在编译过程中被保留,并且编译后的程序在其沙箱中被很好地隔离。没有验证器有几个优点。首先,由于SFI转换是在高级别完成的6COMP CERT支持的所有体系结构。在传统的SFI方法中,我们被迫为每个体系结构开发一个生成器和一个检查器。另一个优点是SFI转换是在高级别完成的,这使得SFI构造实际上,在传统方法中,验证者必须能够因此,SFI转换未优化为我们对COMP CERT SFI进行了性能测量,并将其与NaCl进行了比较。平均而言,我们的编译器的性能与NaCl相似,我们观察到差异主要在于COMP CERT编译器在运行时的性能。事实上,C OMP-CERT比NaCl使用的gcc或Clang慢,并且我们的实验表明有几种可能的方法可以改进COMP CERT SFI。第一个是简单地通过使用更快的变体来提高COMPCERT的性能,如COM-PCERT SSA [10],它具有额外的优化。另一个想法是创建特定于SFI的优化,以进一步降低代码中添加的SFI构造所导致的速度减慢。保存信息流在论文的第二部分中,我们将重点讨论编译器的安全性。首先,我们解释了为什么为什么编译器不能保持安全性?一 个不熟悉计算机安全的人可能会惊讶于编译器不能保持程序的安全性。在实践中,这是一个反复出现的问题,目前还没有足够的解决办法。例如,一些用于从存储器中擦除秘密的指令不被编译器理解,并且可以被编译器移除以提高程序性能[116,104]。尽管源程序是安全的,但这会在编译后的程序中引入安全漏洞。7编译器被设计为在各种转换期间保持程序的行为。这些行为由所使用的源语言的标准定义。但是,对于那些 不能用这些标准来表达吗?例如,对于标准语言因此,编译器可能会误解开发人员的意图,并在程序中引入安全漏洞。随着新的隐藏通道攻击的出现,这种现象在今天变得更加明显这些攻击使用执行时间这些物理行为没有在语言标准中定义,因此也没有在源程序中建模。从因此,即使编写的代码是在本文中,我们将重点放在这个问题上,并提出了一个关于程序转换的属性,以我们定义了一个名为IFP的安全属性,它此攻击者模型除了这个定义,我们还提出了一种证明技术来证明还介绍了死存储消除(DSE)和寄存器分配(RA)编译过程的安全算法,其中我们使用我们的证明技术来证明还实现了一个使用我们的算法的注册表分配器,并对其进行了测试,以评估我们的安全性对程序性能的影响。我们对攻击者进行建模,该攻击者能够在执行程序时探测我们所有权的目的是8转换后的程序与源程序相同。为了能够将信息泄漏我们的安全属性引用一个转换是IFP,如果:对于任何部分攻击者,对于被转换程序的执行的每一个可能的观察,都有一个关于源程序执行的观察,它给出了至少与程序使用的数据一样多的信息。此属性向我们保证,对于可以在转换后的程序中找到的任何信息,因此,我们找到了一个充分条件来证明基于相同原理的IFP变换的性质。实际上,这个想法是,如果我们能够将转换后的程序的每个内存位置与源程序的内存位置相关联,使得这些位置包含相同的值,则该转换是IFP。这个条件是基于这样一个事实,即在转换后的程序中可用的任何信息也必须在源代码中可用。最后,我们提出了DSE和RA的安全版本,并通过证明仍然可以在从转换后的程序到源代码的内存位置之间创建这种相关性来证明实验表明,我们的安全注册表分配器提供了适度的运行时间延迟(在最坏的情况下为15%),这证实了我们的方法的可行性我们工作的最终目标是拥有一个完整的IFP编译器,未来的工作应该集中在证明我们对所有编译过程的所有权上C座桥中的T座9导言111背景191.1记忆威胁. ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...191.1.1对内存的常见攻击191.1.2侧通道攻击221.2 COMPCERT252保护内存免受外部模块的影响29软件故障隔离(SFI)。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...302.1.1SFI原则。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... ... ... ...312.1.2将SFI调整和扩展到其他体系结构。 . . . . . . . . ... 382.1.3扩展SFI。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... ... ... ... ... ...422.1.4优化。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... ... ... ... ... ...452.1.5注册管理机构。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......472.1.6范围分析。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... ... ... ... ...492.1.7技术验证。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......512.1.8结 5410论。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... ... ... ... ... ... ... ...2.2COMPC.ERTSFI。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...572.2.1背景资料。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... ... ... ... ... ... ...602.2.2一个线程感知沙箱。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...642.2.3内存安全掩码。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ......662.2.4控制流完整性的实施。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 702.2.5安全性和安全性证明。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...722.2.6SFI运行时和库。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...752.2.7实验。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... ... ... ... ... ... ...772.2.8相关工作。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... ... ... ... ... ...832.2.9结论。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...... ... ... ... ... ... ... ...84C座桥中的T座11内容表3保护内存免受试探性攻击3.1动机883.1.1内存探测攻击者883.1.2通过示例保存信息流893.1.3The “Full Information Flow” Paradox3.1.4防止信息泄露的一些923.2相关作品963.2.1安全再融资963.2.2功率分析973.2.3恒时实现的保存983.2.4信息流保存1003.3信息流保存转换1003.3.1信息流保存1013.3.2IFP充分条件及其证明原则1073.3.3保护死商店消除1103.3.4注册管理机构分配1133.3.5实验1253.3.6结果和分析1253.4讨论和观点1273.4.1我可以保留哪些属性........................................................................ 1283.4.2保护其他编译器通行证1313.4.3观察点132结论134参考书目141一、引言11第一个全折叠编译器是在1957年为FORTRAN语言编写的。Com- pilers将用高级语言编写的程序转换为机器代码。这些高级语言(如Python、C或Java)使用抽象来模仿实际机器的行为。这是抽象低级细节的第一个优点,这些细节提高了代码的清晰度和可读性,并使开发人员能够专注于程序逻辑。高级语言的另一个优点是程序通常可以跨多个体系结构进行移植。1957年编写的FORTRAN编译器还包括第一个编译器优化,以产生更高效的机器代码。从那时起,编译器优化已经通过飞跃和边界得到了改进,以至于它们在我们的系统中变得强制性的。然而,随着C语言的普及,它包含了许多未定义的行为。[115] [62]在deed中,像除法被零这样的指令被C标准归类为未定义的行为,实现的选择留给编译器。虽然这使编译的C程序速度更快,但它也可能导致意外的程序行为。一个名为Certified Compilation的研究领域解决了这样一个问题,并专注于在编译过程中保留程序的语义。COMP CERT [66]、Vellvm [119]或CakeML [61]等成功的项目诞生了,但很快就发现语义保留在安全性方面缺乏。对于非网络安全专家来说,这可能是一个过度的假设,但众所周知,编译器在这方面是不可靠的。[32当然,随着安全性在计算机系统中的重要性日益增加,安全编译器在最近几年已经成为一个活跃的研究领域。本文将重点讨论这一主题,并展示安全编译的两个方面第一种是由编译器强制执行安全属性,这些编译器在不考虑源程序的情况下生成安全可执行文件第二个是在编译过程中保留程序的安全属性,这确保了转换后的程序至少与其源程序一样安全。简介12当前编译编译器是将用高级语言编写的程序向下转换的工具。 可由计算机读取的二进制文件编译语言(C、Rust)经常遭到反对 解释语言(JavaScript、Python)。这两类语言之间存在着许多差异,尽管现在使用在运行时编译代码的Just In Time(JIT)编译器时,这种差异并不那么明显。— 自包含,编译器生成可由机器直接读取的可执行文件,在这些文件中,解释的程序需要相应的解释器运行。— 效率:编译程序通常比解释程序运行得更快编译器的优点是有更多的时间来解析源代码,这允许优化,而解释器只逐这种差异被JIT编译器的使用所掩盖,JIT编译器可以在运行时执行优化。— 在过去,大多数编程语言都依赖于体系结构,因此编译器用于可移植性。现在,虽然编译器需要支持多个体系结构,但解释器也是如此。现在存在许多编译器,每个编译器都强调代码的不同方面。自创建以来,高效编译代码的生产一直是编译器的一个活跃开发领域。随着便携式设备和物联网的兴起,最大限度地减少内存和功耗也已成为非常理想的标准。实际上,优化编译器GCC和Clang(主要用于编译C)有许多选项来自定义程序的编译。例如,您可以根据上下文选择优先考虑速度、代码大小或调试体验。另一种类型的编译器称为Just In Time(JIT)编译器,它为解释语言带来了编译的好处一个主要的优点是JIT编译器可以检测程序中执行密集的部分,并优化热代码。最著名的JIT编译器用于浏览器中,以加快JavaScript的执行速度,如Chrome V8 for Google Chrome或SpiderMonkey for Firefox。简介13认证编译器编译的另一个分支使用形式化方法来证明编译器的语义呈现。这些形式化方法用于证明不同编译器转换的语义守恒定理。该定理指出,被变换程序的行为应该包含在源程序可能的行为中。查看程序是否按预期工作的最常见方法是通过程序测试。将使用不同的输入运行程序,并测试输出是否具有预期值。测试的结果 不可能测试所有可能的输入。形式化方法是另一种除了测试之外还可以使用的技术,它可以增加我们对程序形式化方法使用数学技术来改进程序的设计和验证,以符合其规范。行业规范通常以自然语言(如英语)表示,其中单词或短语可能具有多种含义。因此,描述程序功能的规范可能会根据人员或上下文进行不同的解释。为了证明程序的正确性,形式化方法需要使用精确的数学术语来描述其行为。用数学语言来描述特定的行为,这样就有了对不同规则的唯一可能的解释。使用正式的方法,可以有更强有力的保证,即系统设计符合所施加的要求例如,在创建安全保护程序时,必须强制执行某些属性,如数据的机密性或参与方的身份验证因此,使用协议的形式化描述,可以证明设计逻辑将确保所需的安全属性。这种技术被广泛用于保护未来的协议,如5G、电子投票系统和互联网。. .除了改进系统的设计之外,形式化方法还可以用来证明系统的实现符合其形式化规范。对于巴黎地铁14号线,采用了B方法,以最大限度地减少规范和混凝土系统之间的差距。形式化方法的证明可以手工编写并由人类验证,但也存在证明助手,如Coq [15]或Isabelle [83],来编写提供更高信任度的机器验证的证明。简介14经过认证的语义保护编译器被证明符合语义正确性属性,该属性表示编译的程序符合源程序的预期,符合语言规范。编译器的一个核心目标是确保源语言抽象被保留到二进制代码中。有些编译器转换会意外地或出于各种原因(如速度)更改源程序的行为。这可能会在编译后的程序中引入错误,导致意外的结果,甚至在执行时出现安全漏洞-切割二进制文件。[115] [62]为了更好地保证语义正确性,研究团体已经在编译器中使用了形式化方法。在经过认证的编译器的情况下,形式化方法用数学术语定义了前面描述的语义正确性属性:根据语言规范,编译后的程序具有与源程序相同的行为。其次,开发的oped编译器将被证明满足语义正确性属性。认证编译器的示例包括COMPCERT [66]、Vellvm [119]或CakeML [61],这些都是过去几年创建的成功项目。COMP CERT在本论文中重复使用,并在第1.2节中进行了全面介绍。经过认证的编译器保留了源语言标准所描述的程序行为。然而,程序在用标准语言抽象的具体机器上运行。这一差距是--更高级别的抽象和具体的机器使经过认证的编译器无法保留与机器的低级细节相关的某些安全属性为什么编译器不能保护安全性?经认证的编译器确保编译的程序符合源代码程序的预期,符合高级语言规范。那么,那些无法用高级语言表达的具体行为呢?在语言标准的抽象中没有定义功耗、执行时间或缓存行为。一种称为侧通道攻击的新类型的攻击利用计算机系统的物理行为来执行它们的行为。针对这些攻击的保护可最大限度地因此,这些安全机制不能被标准编译器理解,并且可能在程序转换期间被删除或损害。我们以图1为例说明了这种短缺。简介15左边的DSE盒子有一个叫做加密的玩具密码机功能,它从一个密钥和一些文本t中计算出一个密码机c。像数据冗余这样的攻击可以探测到系统内存和窃取敏感数据。为了减轻这种攻击,最好尽可能减少程序中关键变量的生命周期。第3行,将键设置为0以从内存中擦除其值因此,能够在加密结束时探测内存的攻击者将无法获得程序的密钥。不幸的是,一个名为“死存储消除”(DSE)的编译器通行证被认为会破坏这种安全机制。[116][30][2对于编译器,擦除指令key = 0在计算密码c时没有用处。因此,为了提高编译代码的性能,DSE将优化擦除指令,并在右侧生成程序。在这种情况下,由于不理解擦除语句的用途,编译器在编译的代码中引入了漏洞通过浏览编译器项目[85]或加密库[91],可以很容易地找到这样的情况。存在多个工作流程来避免删除旧的安全指令,尽管这些工作流程要么局限于某些特殊情况,要么特定于尚未广泛采用的编译器。1Def加密(密钥,T):2c=键。3键= 04返回CDSE1Def加密(密钥,T):2c=键。3跳过4返回C图1编译器引入的漏洞示例不限于DSE。[108][113]通用编程语言在其规范中没有时间或功耗的概念。这意味着针对这些侧通道的任何对策都很难被编译器理解,并且可能会受到不同编译过程的影响。当一个人正在运行处理敏感数据的代码时,这是不可接受的编译器在用于关键代码时,应该能够保留在源代码级别强制执行的安全属性保留安全属性背后的原则是确保编译后的程序的安全性不低于源代码。简介16安全编译程序的生命周期可以分为从软件到执行的多个层。在我们专注于编译的情况下,我们将考虑:软件开发、编译和在硬件上执行。可以包括许多层,如操作系统或虚拟机,但为了简化我们的论证,我们将自己重新约束为这三个步骤。在执行安全性时,一个常见的问题是询问我们自己应该在哪一层执行程序的安全性。程序的语义取决于我们正在处理的抽象层。在源代码级别,程序的语义由所使用的源代码语言的标准定义。编译器转换此程序,直到获得语义由目标处理器定义的二进制程序。程序生命周期中最早的是程序视图。检查和维护程序抽象表示的安全性有几个优点。首先,程序抽象通常更容易理解,这允许我们定义更清晰、更可读的安全策略。第二,使用程序分析来执行这些安全策略也将更加实用。最后,抽象通常可移植到多个体系结构,这意味着分析对于多个实现是可重用的。另一方面,必须确保在抽象级别保持的安全属性在具体级别保持。此外,某些安全属性不能用抽象来表示,只能在较低级别实现。例如,在源代码级别编写低功耗程序是不自然的,因为在高级编程语言中没有功耗的概念硬件安全性安全性的最终目标是确保安全属性 当程序由软件执行时,我们希望强制执行是有效的。为了确保程序的安全执行,一个简单的解决方案是单独使用安全专用硬件来执行关键代码,如安全飞地[100]或硬件管理程序[39]。另一个优点是它不需要开发人员能够生成安全的源代码。虽然这种方法为安全性提供了强有力的保证,但这种想法的主要缺点是灵活性和实用性。开发新硬件需要相当长的时间,每天都有新的攻击被发现。因此,在零日攻击的情况下,单独使用硬件保护来保护我们的系统是不合适的。此外,随着智能手机和简介17物联网,个人数据被许多设备存储和使用。使用专用硬件保护所有这些设备听起来不合理,或者 太贵了。在编译期间执行安全性 这里的想法是使用编译 确保转换后的程序是安全的。无论输入程序如何,编译器都将生成满足定义的安全策略的程序。这比硬件安全更灵活,因为我们只需要更新编译器和重新编译程序,以抵御新的攻击。此外,我们不需要信任源程序具有较低级别的安全性。这在源代码提供程序不受信任但过于严格的情况下是理想的,因为我们让开发人员定义他们自己的安全策略。例如,源程序可能已经可以安全地防止缓冲区溢出,但安全的编译器仍将执行添加冗余保护的自己的对策。可以很容易地找到强制安全属性的编译器示例。gcc可以通过在编译程序的堆栈中插入金丝雀来强制针对缓冲区溢出的安全保护。为了缓解DSE引起的擦除问题,Simon等人 [104]提出了Clang编译器的一个变体,它在从敏感函数返回后擦除寄存器和堆栈帧。在第2章的本文中,使用了安全属性的强制来确保编译的程序满足软件故障隔离策略。在编译过程中保护安全性 安 全 性维护是最合适的对于开发人员需要程序安全性的情况,这是最灵活的解决方案,因为开发人员可以精确地定义要执行的安全策略。它想要。独立,使用安全硬件(分别编译器)仅保证硬件(或编译器)安全策略保持,但它可能不是开发人员所期望的。例如,让我们假设密码检查器写得如此之好,以至于用户可以看到最后键入的字符。安全编译器可能会认为这是一个安全漏洞,并更改密码检查器,使其看不到字符。虽然这是更安全的,但这也不是开发人员的意图,可能被视为编译器错误。许多工作都集中在编译过程中的安全性维护上。Jasmin是一个低级编译器,专注于保护加密实现的安全性。Bartheet al. [11]提出了一个编译器原型,用于在变换过程中保持恒定时间属性。我们面临的问题简介18第3章还涉及在程序转换期间维护安全属性。论文内容本文共分三章。第1章提供了更多的背景信息,我们首先介绍了第1.1节中要解决的多重内存攻击。然后,由于认证的COMP CERT编译器在论文中多次使用,第1.2节概述了COMP CERT。第2章处理软件故障隔离(SFI)。SFI是一种技术隔离,它允许程序通过将不受信任的主机模块放入沙箱中,将其安全地放入自己的内存中。SFI的原理和当前技术将首先在第2.1节中详细介绍。然后,我们将介绍我们的COMPCERT SFI编译器,它将C程序作为输入,并生成一个二进制文件,其执行被限制在沙箱中。COMP CERT SFI是从之前介绍的COMP CERT衍生而来的,并已被证明可生成SFI安全程序。停留在编译和安全的主题上,第3章处理问题在编译过程中保持程序的安全性。在我们的工作中,我们关注的是能够在执行过程中探测内存的攻击者(类似于功率分析攻击)。我们定义了一个称为信息流保存(IFP)转换的概念,它确保探测攻击者无法从转换后的程序中学习到比从源程序更多的信息。还介绍了IFP登记分配的实施情况,以显示我们方法的可行性。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功