首页 [翻译]UCLinux - 一种用于实现基于可信计算使用控制的Linux安全模块

[翻译]UCLinux - 一种用于实现基于可信计算使用控制的Linux安全模块

举报
开通vip

[翻译]UCLinux - 一种用于实现基于可信计算使用控制的Linux安全模块UCLinux: a Linux Security Module for Trusted-Computing-based Usage Controls Enforcement UCLinux: 一种用于强制实施基于可信计算使用控制的Linux安全模块 摘要 使用控制(Usage Controls)允许信息的发布者限制信息的接收者如何使用这些信息。可信计算组(Trusted Computing Group, TCG)已经标准化了可信平台模块(Trusted Platform Module, TPM),它们正内嵌到...

[翻译]UCLinux - 一种用于实现基于可信计算使用控制的Linux安全模块
UCLinux: a Linux Security Module for Trusted-Computing-based Usage Controls Enforcement UCLinux: 一种用于强制实施基于可信计算使用控制的Linux安全模块 摘要 使用控制(Usage Controls)允许信息的发布者限制信息的接收者如何使用这些信息。可信计算组(Trusted Computing Group, TCG)已经 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 化了可信平台模块(Trusted Platform Module, TPM),它们正内嵌到越来越多的计算机并极大地加强了使用控制以应对各种欺骗。然而现有的操作系统只能部分地支持TPM。我们给出的UCLinux是一种新颖的Linux安全模块。跟前人的成果不同,在现有的处理器上它支持基于TPM的验证(attestation)、封印(sealing)和使用控制,而且它仅需要极少地修改操作系统内核和应用程序。实验显示UCLinux对系统的启动时延和实时运行性能仅有有限的影响。 1. 引言 使用控制允许信息的发布者限制信息的接收者如何使用这些信息。例如,一份文档的发布者也许允许接收者能够读这份文档但却不允许打印或复制文档。 使用控制在许多应用中都非常有用。例如,使用控制可以确保接收者服从保密协定或者受限的数据处理要求,如联邦健保隐私法规(HIPAA)中的那些规定。然而,在目前的计算机系统中对使用控制的有效支持仍较为匮乏。 一些现有的应用程序确实提供了使用控制。然而,这些控制是基于软件的,而且通常是可以被逆向工程回避的。例如,Adobe Acrobat软件允许一个PDF文档的创建者加密文档从而不允许打印该文档。回避这样的控制的诀窍可以很容易在互联网上找到。 可信计算组(Trusted Computing Group, TCG)已经标准化了可信平台模块(Trusted Platform Module, TPM),它们正内嵌到越来越多的计算机并极大地加强了使用控制以应对各种欺骗。TPM提供了一个基于硬件的信任根。该信任根带来了两个基本特性:验证(attestation)和封印(sealing)。利用验证,信息的发布者在发送信息给接收者之前可以确保接收者的系统配置是可信的。一个可信的配置是指(1)按照信息发布者验证过的配置对信息和各个使用策略加上封印,(2)即使接收者努力做其它事情,也按发布者的策略强制实施如何使用这些发布的信息。封印的信息通过一个密钥进行加密。如果系统的配置与发布者验证过的配置不同,TPM将不提供该密钥。 验证和封印都需要对操作系统进行改动,因为这两个基本特性在目前的主流操作系统中是缺失的。微软的Vista系统可以使用TPM来作安全启动和整个磁盘的加密,但是它不支持验证(attestation)。TcgLinux是Linux操作系统的一个版本,它支持验证但不支持封印(sealing)。Enforcer是一种Linux安全模块(LSM),它支持封印和一种可以代替验证的基于证书的认证。然而,Enforcer不能阻止接收系统管理员对发布者策略的欺骗。微软的下一代安全计算平台(NGSCB)将全面支持验证和封印特性。然而,它需要扩展的硬件,操作系统和应用程序均需要改动。目前NGSCB似乎已经中止了。 本文给出的UCLinux是一种新颖的Linux安全模块。跟前人的成果不同,在现有的处理器上它支持基于TPM的验证(attestation)、封印(sealing)和使用控制,而且它仅需要极少地修改操作系统内核和应用程序。实验显示UCLinux对系统的启动时延和实时运行性能仅有有限的影响。 本文其余部分描述了UCLinux的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 和实现。第2节回顾了相关的工作。第3节介绍了我们的威胁模型。4.1节描述了UCLinux的使用控制文件系统。4.2节描述了UCLinux用来实现封印(sealing)的预注册系统(prelog system)。4.3节解释了根用户出错进程(root tripping process),UCLinux用其来保护使用控制的文件避免管理员的访问。4.5节描述了UCLinux使用策略的编码。4.6节总结了UCLinux如何实现使用控制文件的传输。第5节讨论了实现UCLinux的linux安全模块(LSM)。第6节公布了用来评估UCLinux性能的实验结果。最终,第7节我们得出结论并讨论了将来的工作。 2. 相关工作 TcgLinux修改了操作系统内核来实现一种完整性测量架构(IMA)。系统中的每一个可执行文件在其第一次被执行的时候,IMA测量其安全哈希值并存进TPM。这样应用程序同样可以测量它们自身所依赖的配置或其它文件的安全哈希值并将其存进TPM中。IMA大量的内核修改借助TPM的状态相对于系统的实际配置保持不变这一特性来支持验证性(attestation)。每当新文件被执行的时候,IMA便会改变TPM的状态,这包括那些跟系统安全不相关的文件。这些改变是依赖于顺序的,虽然执行的顺序并不影响系统的安全。这种顺序依赖性使得IMA与封印(sealing)不相容,因为信息只能相应于一个特定的TPM状态而封印。为了克服这一限制而同时支持两种特性,UCLinux使用基于可信(TCB)的预注册(prelogging),这在4.2节中给予讨论。 Enforcer使用TPM来密封一个加密的文件系统作为整个系统配置的一部分。这部分包括BIOS,引导代码(boot loader),Enforcer LSM,但是不包括守护程序(daemons), root setuid和其它应用程序。一份被可信第三方签名的文件可以配置正确的应用程序安全哈希值和应用程序可以打开哪些特定文件的约束规定。可信的权威机构可以检验接收者的配置并签发证书,发布者便可核实该证书而不必自己去验证接收者的配置。然而,Enforcer没有针对接收系统的管理员提供保险措施。例如,在接收系统引导并装载了包含来自发布者消息的加密文件系统之后,系统管理员可以交互地登录系统并篡改Enforcer的操作来回避发布者的使用策略。UCLinux使用根用户出错(root tripping)机制来防止类似的篡改,这在4.3节中描述。 Trustworthy SELinux在IMA和SELinux之上实现了使用控制。SELinux是一种Linux安全模块,它扩展了Linux的访问控制架构。传统上Linux只提供无条件的访问控制(DAC)。在DAC中,任意用户可以任意地决定他创建对象的访问权,但是这些策略对享有特权的用户都不是强制实施的。相反,SELinux提供了一种强制访问控制(MAC)。在MAC中,访问策略一旦被设置即不能被用户否决,即使对特权用户同样如此。因此,在MAC系统中阻止回避使用控制的欺骗行为比在DAC系统中也许要容易些。Trustedworthy SELinux包含将用XACML写的使用策略自动翻译成SELinux可加载策略模块(LPM)的机制。这些机制使得使用控制配置更容易,而且使得当系统有一些享有特权的交互用户时使用控制下的一下对象亦可访问。然而,用户经常发现SELinux难以管理和使用。而IMA也不能让信息封印(sealed)。 Trusted SECTET 建立在Trustworthy SELinux之上,它使用了一种更高级的访问控制表述语言——SECTET-DSL。SECTET-DSL(区域说明语言,Domain Specification Language)给区域专家和商务专家提供了一个有用的抽象层,它可以自动翻译成XACML。这个系统提供了一个令人感兴趣的ODRL系统的替代系统,尤其在数据库系统中。 IBM的vTPM将TPM虚拟化,从而多个虚拟机可以安全地使用同一个物理TPM。虚拟机监视器(VMM),如Xen,可以将多个虚拟机隔离开来。UCLinux可以用来使运行在Xen和vTPM上的虚拟机拥有验证(attestation)和封印(sealing)的特性。 3. 威胁模型 UCLinux假设计算机的硬件和管理权限的获得者试图违反使用控制。如果攻击者能够获得受使用控制保护文件的不受约束或较少约束的访问权,或者修改文件发布者指定的使用策略,攻击即算成功。UCLinux假设攻击者会使用任意软件工具,也许还会将文件移到包含使用控制文件的其它计算机存储设备。然而,UCLinux假设攻击者缺乏工具或专业知识来进行硬件方面的攻击,如系统总线上的监听,计时分析,或者在电子显微镜下检查计算机的TPM。 4. 设计 4.1 使用控制文件系统 这小节描述UCLinux中使用控制机制下文件的存储。 UCLinux将使用控制保护的文件存储在使用控制文件系统中(UCFS)。使用控制文件系统(UCFS)和传统的文件系统有三方面的区别。第一,每个文件都有相应的使用策略。使用策略可以作为文件元数据(metadata,诠释数据的数据)存储,如Linux扩展属性。第二,文件和使用策略均用一密钥加密。这个可以通过将其存储在一传统加密文件系统(EFS)中完成。例如,Linux 2.6支持回环(loopback)文件系统和dm-crypt,这就可以用来达到这一目的。第三,EFS的密钥封印在一个可信的配置中。可信的配置不允许特权或非特权用户回避系统的使用控制机制。 4.2 基于可信的预注册(TCB prelogging) 这一小节描述UCLinux基于TPM数据封印的方法。 可信系统的可信来源于它的组成部件。在我们的系统中,这些组成部件有BIOS,引导代码(GRUB),初始的RAM文件系统(initramfs),引导程序文件,Linux内核和模块,UCLinux,一小套可执行文件和目前系统中的共享库。这些一起构成可信计算平台(TCB)。非特权应用程序,如字符编辑器,不需要是可信的。因此,我们没用将每一个可执行文件都包含在TCB中。同样地,只有那些被可信的执行文件调用的共享库才包含在TCB中。UCLinux用一个叫做TCB列表(TCB list)的文件来配置哪些可执行文件和共享库是TCB的组成部件。TCB列表包含一系列的可信文件,以及它们各自的全绝对路径名和SHA-1的安全哈希值。 引导阶段,UCLinux将TCB列表中的所有安全哈希值延伸到TPM中。这样TPM的状态就不再依赖于执行的顺序。系统的机密(如系统UCFS的密钥)就可以封印在这可预期的状态。 4.3 根用户出错(root tripping) 这一小节描述UCLinux如何使TCB prelogging与attestation并存。 借助TCB prelogging,attestation显示系统完全是期望的TCB,包括还没有被载入内存的TCB组件,它们的安全哈希还没有真正被测量。如果系统已经损害了,那它真实的配置可能会不同。 UCLinux使用root tripping来确保attestation是可信的。在UCLinux将CPU控制权交给任意享有有效特权用户程序前,UCLinux检查应用程序是在系统的TCB列表里,且该程序目前的hash值和TCB列表里的一致。当UCLinux为这样的进程打开系统TCB列表中的任意文件(如配置文件),UCLinux同样也会检查该文件目前的hash值是否和TCB列表里的一致。如果目前的hash值不同于期望的hash值,UCLinux将会把目前的hash值延伸到TPM中并丢弃所有的秘密联接(security association)。 在UCLinux中,仅有当系统处在可信配置下(这由TPM的状态来表示),系统才能够访问秘密联接。秘密联接可能包括如系统的UCFS或者可信网络连接等。 一旦所有的秘密联接均被成功丢弃了,造成这一错误的程序将能被正常执行。另一方面,如果任意秘密联接迟迟没有能关闭,tripping程序将会无限期地休眠。那么特权用户将无法执行任何非可信程序。计算机也许最终会崩溃,但是不可信进程将无法违背使用控制。一旦重启,计算机便会再一次进入一个可信的配置,使用控制文件也可在此被访问。 UCLinux对登录系统的特权用户(根用户或其它管理员)也类似处理。现有的系统通常允许特权用户不受约束地访问任意对象。UCLinux很难确保没有交互的命令会被恶意的管理员发现并用来回避使用控制。为了防止这样的回避,当特权用户登录系统时,UCLinux将这个登录延伸到TPM以报告这一事件,同时丢弃所有的秘密联接。因为延伸改变了TPM的状态,在root tripping之后,系统通常需要重新启动进入可信配置才能重新访问丢弃的秘密联接。 UCLinux使用一个牧羊人进程(shepherd process)来管理和保护秘密联接。这个进程负责获得秘密联接的访问权然后在发生root trip时丢弃秘密联接。UCLinux定义了三个过程:注册(register),启动(start)和结束(finish)。每个过程都要和内核通信来完成相应的功能。用于UCLinux的UCFS的牧羊人进程叫作mount-efs(用来守护文件安全)。 牧羊人进程在它首次启动时先运行注册(register)过程,此时它还没有执行任何安全相关的动作。注册过程通知内核当前进程是一个牧羊人进程,必须允许在root trip结束前丢弃它所有的秘密联接。一旦注册成功,牧羊人进程便可执行任何必要的动作来访问秘密联接。例如,mount-efs从/etc/crypt.key读取UCFS的密钥,解封印UCFS,把它送入cryptsetup管道,这样便建立起一个加密的回环设备,然后挂载文件系统。当牧羊人进程的安全联接可以访问后,它运行启动(start)过程。内核将牧羊人进程休眠,只有在root trip发生时才唤醒它。 当牧羊人进程醒来时,它必须丢弃所有的秘密联接。例如,mount-efs卸载UCFS,删除其加密回环设备。如果牧羊人进程确信它的秘密联接完全被保护着,它运行结束(finish)过程来通知内核可以安全地结束root trip并允许非可信程序以有效特权用户身份运行。如果牧羊人进程不确定它的秘密联接是否已经丢弃,则它仅仅简单地退出。 任意个秘密联接都可以通过这种方式进行保护。当root trip发生时,内核唤醒每个牧羊人进程,并确保在它完成root trip前每个牧羊人均调用了结束过程。 4.4 启动进程 这一小节描述UCLinux的引导过程。 UCLinux使用一个认证引导 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。UCLinux引导进程将可能影响到系统可信性的每个软件组件的安全hash存储到TPM中。如果这些组件的任意一个被修改了(也许是恶意的),它的当前安全hash也会被存储到TPM中。系统会继续引导,但是TPM不会提供封印的数据,如UCFS的密钥。这不同于安全引导方案,如微软的Vista操作系统采用的方案。如果任意安全hash被意外改动了,安全引导将会拒绝启动操作系统。 当带UCLinux的计算机第一次启动时,BIOS测量自己,它的配置以及boot loader,将测量结果存储到TPM中,这些与TCG 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 是一致的。然后引导代码,某个版本的GRUB,测量Linux内核和initramfs。initramfs包含一个用gzip压缩档案,里面有一个最小根文件系统。传统的Linux系统使用initramfs来载入挂载真正的根文件系统需要的内核模块。我们修改后的initramfs添加了TPM驱动(提供内核访问TPM的接口),UCLinux LSM,两个初始化TCB的程序——prelog和fsec_lockdown,一个启动这个初始化的脚本——init_fsec。 引导时,initramfs正常启动,载入它包含的内核模块,直到从它把文件系统由自身转换为真正的根文件系统。紧接着,它执行init_fsec,该脚本文件运行prelog和fsec_lockdown两个程序。prelog从存储在真正的根文件系统中的文件/etc/prelog读取TCB列表,把列表中的每一个条目都加载到内核,内核依次地再将hash值存储到TPM。 一旦prelog结束且真正的根文件系统已经挂载到位,程序fsec_lockdown通知内核启动enforcing root tripping(见4.3节)。我们将initramfs设计成运行时无需用户输入,禁止一切中断。因此,GRUB中一个单独的表示initramfs的PCR扩展足够用来保证一旦initramfs完成了系统即处在可信配置。 当initramfs结束之后,系统正常启动,最后运行init.d脚本,该脚本会执行mount-efs程序。后面的程序将会管理UCFS,如前文所述,确保只有系统在可信配置下UCFS才可用。 4.5 使用策略 这一小节讨论UCLinux如何表示使用策略。 UCLinux用两种形式来表示使用策略,一种是基于XML的开放数码权利语言(ODRL)衍生明文形式,另一种是扩展文件属性,更容易机器读取的形式。ODRL是一个开放的标准,它通过一系列的在某些约束下内容的访问和使用准许来表示数码权利。例如,一份PDF文档只能特定的人看,但是不可以打印。我们拓展地增加一个开放的准许,通过内核来强制实施,增加一份摘要到组织(party)的身份标签,那样通过TCB程序自身摘要的识别,对ODRL而言它们可以是一个组织,而不仅仅是人。例如,不再是一个特定的人能够看一份PDF文档,而仅是一个特定版本的xpdf软件可以用来看这份文档,当然仍然不能被打印。 由于ODRL是设计成机器可读,它不太适合操作系统内核来解释。仅解析XML就需要可观数量的代码,解释ODRL可能复杂的微妙之处需要更多的代码量。因此我们使用用户空间代码来从ODRL中提取出内核相关的信息,把它转化成我们的内核模块更容易理解的形式。为了执行这个动作,我们写了一个共享库,libchfsec (CHange File SECurity,改变文件安全),它被某些叫作embedder的程序调用。 每个扩展的属性都以前缀“user.fcrights.”开始。有这种前缀的属性只能被可信进程添加,修改或删除。我们使用如下的扩展属性来记录策略数据: user.fcrights.apps.i.hash 存储着每个程序的hash,i是序号 user.fcrights.apps.i.name存储着每个程序明文,人可读的名字 user.fcrights.apps.i.uid 存储着计算机和人可读的程序特定版本标识符 user.fcrights.apps.n 程序的序号 user.fcrights.perms.open 这个属性的存在表示内核必须保护这个文件。其它可能的准许也可能以“user.fcrights.perms.”为前缀,但只有“open”才被内核识别 user.fcrights.perms.open.expdate 文件的过期日期 程序Embedders负责接收使用控制保护的文件,并将其存储在UCFS中,应用适当的扩展属性策略。内核仅强制实施“开放”的准许,那么当embedder程序在对一个文件应用使用策略时,libchfsec库检查ODRL并决定它允许什么程序访问,什么样的终止/起始时间约束,并将这些信息放进文件的扩展属性中。其余的ODRL信息被存放成二进制形式,压缩并存储在一个扩展属性中。我们期望负责强制实施剩余策略信息的用户空间程序能够直接使用ODRL。 4.6 验证(Attestation) 这一小节总结了UCLinux在使用策略下如何传送文件。 为了允许信息的发布者服从于使用控制来核实一个基于UCLinux平台的可信性,UCLinux使用了一种拓展TLS v1.0 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ,在其握手期间包含验证。 TLS v1.0协议是web安全通信标准。它工作在现有的TCP套接字上,提供数据机密性,数据完整性和基于证书的服务器认证,可选的客户端认证。两个通信的主机可以通过执行TLS握手协议来初始化TLS。握手包括4个阶段。第一阶段协商握手参数,如TLS版本,加密和数字签名算法等。在第二、三阶段,主机执行服务器认证和可选的客户端认证,计算出一个共享会话密钥用来对称加密和认证。最后一个阶段核实所有握手信息的完整性及断言协商秘密参数。TLS v1.0协议的扩展提供了一个框架用来在客户端和服务器呼叫消息中交换额外的信息。例如,TLS扩展用来为椭圆曲线密码(ECC)加密算法传递参数。 UCLinux使用现有的TLS扩展框架来将平台验证包含在TLS协议里。框架允许添加新的扩展而不打破向后兼容性。扩展为了验证交换添加了两条额外的握手信息,发生在第三、四阶段之间新添加的一个新的阶段。 第一条消息由客户端发给服务器。这条消息包含客户端的验证识别密钥(由一个双方均可信的CA签名),一条由TPM产生的引用,里面列出了当前PCR的值(用验证识别密钥签名),以及测量记录。服务器一旦收到这条消息,将会核实识别密钥的签名,引用的签名,并会核对测量记录与引用中的PCR的值是否一致,检查测量记录符合已知的可信配置。 5. 实现 这一小节描述UCLinux作为Linux内核模块的实现。 系统的核心是uclinux.ko内核模块。它主要是一个Linux安全模块,但也执行其它的功能。LSM系统提供了丰富的钩子给各种操作系统函数而非普通的系统允许的UNIX准许。例如,SELinux是作为一个Linux安全模块实现的。我们模块的LSM部分拦截住了所有打开文件,写扩展属性,执行程序,映射文件至内存,为了调试依附到进程等动作的尝试。 5.1 程序执行钩子 当程序执行时,LSM首先对其进行检查。LSM使用程序的全路径搜索hash表。表中每个条目包含着最近一次的真实值和安全hash的时间戳。如果LSM还没有测量过这个文件,或者这个文件最近已经被修改了,LSM测量文件的安全hash并将其存储在表中对应的条目。如果测量值和TCB列表中的预期值一致,进程则被标记为可信的。否则,如果程序拥有特权,内核trip,阻塞进程直到所有的秘密联接都确认被关闭了。类似的,每当可信的进程映射一个文件到内存并允许其执行(如共享库),模块对该文件执行同样的动作,如果需要并trip。这就确保可信的程序只载入可信的共享库。 5.2 文件处理钩子 每当一个进程打开一个文件,inode_permission钩子触发,LSM检查该文件的扩展属性。如果扩展属性显示该文件是受保护的,LSM则检查当前进程是不是TCB的一部分。如果是,无论进程的hash是否与该文件扩展属性中所列hash匹配,进程均被允许打开文件。如果不是,访问则被拒绝。一旦可信程序被允许打开该文件,它自己的内容保护代码必须强制实施该文件策略中所指明的其它使用限制。LSM自身不强制实施应用程序具体的使用策略。LSM仅强制实施特定的程序是否能够打开一个文件。LSM同样会用同样的方式来检查许可,这个借助于file_permission钩子,它在任意时候一个文件被读或被写时触发。 5.3 扩展属性钩子 如果一个进程尝试修改扩展属性,LSM检查该属性是否与UCLinux相关(如有user.fcrights.prefix的前缀)。如果是,那么系统会查看该进程是否属于TCB并且已经设置了embedder标志位。如果有该标记,那么允许其修改。否则,访问被拒绝。因为扩展属性对受保护文件使用策略运行时强制实施是非常重要的,只有可信的程序能够写这些属性。我们相信仅允许TCB程序中的一个小子集能够修改文件策略可以是开发安全的TCB更容易些。然而,这个预防措施并不是严格必须的。读扩展属性并没有安全隐患,因此其亦没有约束。 5.4 程序跟踪钩子 如果一个进程尝试使用ptrace系统调用来调试其它进程,系统会检查被跟踪的进程是否是TCB的一部分。如果是,且跟踪的进程不是TCB的一部分,那么ptrace调用失败。如果一个不可信的进程能够成功地跟踪可信进程,那么后续的可信性就不能保证了。我们允许可信的进程使用ptrace跟踪可信的进程,因为一些重要的Linux系统依赖于无害地使用ptrace(如/proc文件系统)。自然地,这些可信的ptrace使用者一定不能够滥用那个系统调用的强大潜力。 5.5 用户空间通信 除了LSM功能外,本模块还提供了一种方法给用户空间支持程序(如prelog,fsec_lockdown,mount-efs),通过一个字符设备文件(/dev/fsec)与内核通信。那些程序执行ioctl系统调用来载入prelog信息,锁住内核,或者发送秘密联接基本命令。模块还提供/proc/measurement_log,这可用来读取一个当前的测量记录以达到远程验证的目的。 5.6 内核源码改动 我们对Linux内核源码自身有一些改动。我们添加了一个内部的内核接口给TPM驱动,包含在主线源码里,以允许uclinux.ko更容易地访问到TPM硬件。在常规的Linux内核中,当一个进程释放一页内存而内核恰将其分配给另一个进程时,数据便会泄漏。为了保护使用控制数据,我们更改了内存管理代码,每当内核返还原本分配给可信进程的内存至空闲列表时,便会清零这些内存页。最终,我们完全禁用了可信进程的核心转储(core dumping),因为一个核心转储页也许会包含当前一个正在结束的可信进程的所有数据。 5.7 产生一个原型配置 我们围绕着一个prelog文件构建了系统,它包括文件名,模式,TCB中每个成员的hash值。由于这个文件包含了每个必须以root运行的程序,每个这个程序用到的共享库,产生这个文件并不是没有价值的。我们的实现提供了一个shell脚本来使这个文件的产生更加容易,但是仍然较费时。以下指示可以产生一个让计算机启动而不会tripping的prelog文件: 1. 运行我们实现中提供的prelog_initialize。这个会扫描dmesg输出中所有TRIP消息,并且会添加导致这些消息的文件至prelog文件。 2. 重启计算机。因为启动,很多TRIP消息还是会闪过。 3. 一旦计算机启动完毕,从第1步开始重复该过程,一直到系统不再trip。 查看/var/log/messages以确保没有任何TRIP消息。/mnt/efs应该已经被挂载了。一旦prelog文件生成了,系统就能够运行了。 除非将prelog中的每个条目都彻底检查了对使用控制系统不会造成潜在的破坏,基于UCLinux的系统是不会安全的。为一个完整的系统完成这个任务已经超出了本文的范畴。 6. 实验结果 6.1 速度 我们执行了两个性能测试:启动时间和内核编译时间。我们两个测试都在IBM ThinkCentre上运行,奔腾四 3GHz主频,512MB内存。我们使用Ubuntu 6.06 GNU/Linux发行版。 为了评估TCB prelogging对启动时间的影响,我们测量了计算机在有和无UCLinux系统两种情况下启动所需要的时间。每次我们都冷启动开始,从在GRUB界面点击开始计时,当GDM登录界面出现并可以输入时停止计时。 我们发现,没有UCLinux,系统启动平均耗时51.16s。而有UCLinux时,系统启动平均耗时55.93s。UCLinux增加了启动时间约为9%。 UCLinux在启动后对系统性能的影响有两种方式。第一,UCLinux使用加密存储因而增加了加密消耗。第二,UCLinux在运行时解析各种系统调用,如执行或打开文件,也会使得这些调用更加费时。为了评估这些消耗,我们测量了编译Linux内核的必要时间,这是一个需要很多文件操作的任务。我们考虑两个因素:存储类型(加密或明文),载入UCLinux模块(uclinux.ko)至内核(载入和不载入)。对于加密存储,我们使用CBC模式下AES,包含在Linux3里的ESSIV IV代方案。对于加载了uclinux.ko的测试,我们配置每个内核源码文件使得只允许被一个可信的编译器使用。 (略) 我们的结果如图2所示。时间分解为“实时”,“用户”,“系统”。在我们的测试中,使用加密存储有微小的影响。UCLinux模块影响最大的是“系统”时间,这是指编译任务在内核态花费的时间,影响大约为61%。正如预期的,UCLinux模块对“用户”时间因为微小的影响。“用户”时间是指编译任务在用户态花费的时间。UCLinux在用户空间并没有作改动。“实时”时间是编译内核的总时间,它等于“系统”和“用户”的时间和加上一些没有考虑的花费。“实时”受UCLinux的影响仅有10%。 6.2 TCB大小 我们用如6.1节所描述的计算机平台和5.7节所述的方法生成了一个TCB原型。我们生成了一个最小的TCB,它可以不出错地启动系统,用户登录GDM并打开一个终端。我们的TCB一共419个条目。 7. 结论和将来的工作 我们已经描述了一个修改过的Linux系统,UCLinux,它能强制实施基于TPM的使用控制机制。它提供验证支持,封印支持和保护可信使用控制系统不被管理员滥用。它在现有硬件上实现,对当前广泛知晓的操作系统作了有限的修改。 我们目前致力于UCLinux的改进版本,它允许TCB列表中的文件可以被更新。研究在虚拟机监视器和更多近期更有力支持可信计算的处理器系统上UCLinux的使用也是一件有趣的事。
本文档为【[翻译]UCLinux - 一种用于实现基于可信计算使用控制的Linux安全模块】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_223636
暂无简介~
格式:doc
大小:186KB
软件:Word
页数:11
分类:互联网
上传时间:2010-08-29
浏览量:13