(计算机软件与理论专业论文)linux加密文件系统的设计和实现.pdf_第1页
(计算机软件与理论专业论文)linux加密文件系统的设计和实现.pdf_第2页
(计算机软件与理论专业论文)linux加密文件系统的设计和实现.pdf_第3页
(计算机软件与理论专业论文)linux加密文件系统的设计和实现.pdf_第4页
(计算机软件与理论专业论文)linux加密文件系统的设计和实现.pdf_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

l i n u x 加密文件系统 第1 章绪论 1 1 信息社会面临的安全威胁 在当今社会,科学技术发展迅速,然而人们面临的信息安全威胁并没有随着 技术的发展而减弱。一方面,信息社会中,信息或者说相应的数据变得越来越重 要,另一方面科技的发展往往带来更多新的安全威胁。便携式设备的普及就是其 中的一个例子,便携式设备包括笔记本电脑,p d a 等等经常随身携带。丢失和失 窃的情况白然经常发生。如果有敏感数据保存在这些丢失的设备中,对相关的机 构和组织往往会造成无法估量的损失。 总的米说,加密文件系统主要要舸决的问题,就是物理安全的问题。通常我 们依靠操作系统提供的安全机制米保护数据的安全。但是如果入侵者绕过安全的 操作系统米访问大多数安全机制将无能为力。以普通的个人计算机来说,通常 允许通过启动软盘引导系统。这样对于物理上能够接触到涉密计算机的入侵者米 说,他可以简单地启动到一个不同的操作系统,该系统完全由入侵者控制,此时 他就可以完全避开正常的权限检查。入侵者甚至有可能盗走保存有机密数据的硬 盘,或者整台计算机。由于笔记本电脑在现今社会应用广泛,而且很可能随身携 带。出现遗失和被窃的可能性自然大大地增加。相对于通过计算机网络系统入侵, 物理入侵带来的安全威胁相对耍小一些,但是只要数据足够重要,这种安全威胁 就绝对不能忽略。威胁的根源是数据在存储介质中以明文方式保存,而应对这种 威胁的唯一方法就是使用数据加密技术。 另一方面,使用加密文件系统可以极大地减少敏感数据被非法用户窃取的可 能性。当需要保护的数据存放在组织机构的网络环境中的时候,这尤其重要。首 先我们可能不能完全信任服务器的系统管理员,尤其是在大的组织机构中,服务 器的系统管理员可能和文件的拥有者属于不同的部门,或者属于不同的级别。我 们不能把文件的安全完全寄托于组织内部的系统管理员都是诚实可靠的假设上。 而且在网络环境中,入侵者也可能突破系统的安全保护机斜封,获得访问用户文件 的访问权。加密文件系统可以在用户的加密文件系统口令未被泄露的前提下,保 证用户的加密文件的安全。要注意的是,和物理安全问题不同,仅仅依靠加密文 件系统不能完全抵御此类安全威胁,加密文件系统需要和系统的其他安全机制共 同作用来实现对机密数据的保护。一个例子是,用户登陆加密文件系统的工具需 要被审记工具保护,以防被木马工具替代。 1 2 加密文件系统介绍 121 基本概念 文件系统: 操作系统中负责管理和存取文件信息的软件机构称为文件管理系统。简称为 文件系统。文件系统为用户提供了存取简便,格式统一,安全可靠地管理各种信 息( 文件) 的方法,它描述了数据是如何以文件的形式存放在存储介质中。文件系 统管理文件的各种属性,例如文件名称,时间戳,存取权限,文件大小,文件类 型,文件拥有者和文件的实际数据。 加密技术: l i n u x 力鼾文件系统 使消息保密的技术和科学叫做密码编码学,简称为密码学。密码学最初地发 展动力来源于战争中对机密信息的安全通信的需要。在密码学中,消息被称为明 文。用某种方法伪装消息以隐藏它的内容的过程称为加密,加了密的消息称为密 文而把密文转变为明文的过程称为解密。加密的目的是保障消息的发送者和接 受者能够正确地进行消息的传递,而监听到通信的攻击者却不能从中得到有用的 信息。这称为保护消息的机密性,除此之外,密码学还用于对消息提供鉴别、完 整性和抗抵赖的功能。 加密文件系统: 加密文件系统扩展了普通文件系统的功能,它以种对用户透明地方式为用 户提供了将数据以加密方式存放的功能。 122 存储系统的加密方式 存储系统的加密可以使用3 种方式。即常规的文件加密方式,存储介质加密 方式和加密文件系统。 ( 1 ) 文件加密方式: 最基本的文件加密方式是使用某种文件加密工具,它不需要操作系统支持。 例如在e - m a i l 通信时常用的p g p 工具。用户通过他自己选择的密码对文件进行加 密。用户在访问加密过的文件的时候,需要使用工具先进行解密,使用完毕后再 进行加密。这种繁琐的方式使得它在实际应用中缺乏足够的吸引力。由于需要用 户参与较多,所以比较容易出错。如果用户遗忘了密码,文件内容将无法恢复, 如果用户使用容易猜测的密码( 用户通常倾向于使用比较容易记忆的口令,这通 常也往往是容易猜测的口令) ,就会增加非法访问者解密的可能性。同时处于使用 状态的明文数据文件完全没有保护,入侵系统的非法用户也可以使用替换加密工 具,记录用户键盘输入等等方法得到数据的访问权,所以只适合对安全性要求不 高的场合使用。 ( 2 ) 存储介质加密方式 存储介质加密方式通常在设备驱动程序层实现。由驱动程序透明地进行加密 作。它们通常使用创建一个容器文件,通过某种机制,例如l o o p 设备,在此容 器文件中创建一个文件系统。整个容器文件是加密的,作为一个虚拟分区被安装 和使用。 使用这种方式实现的加密系统有b e s t c r y p t ,p g p d i s k 和l i n u xc r y p t o l o o p 。 ( 3 ) 加密文件系统 加密文件系统是在文件系统中实现加密功能。它和使用存储介质加密方式一 样,能够提供对用户透明的文件加密功能。在这3 种加密方式中,加密文件系统 在性能和安全性上得到了最好的平衡。相对于使用存储介质加密方式,它的主要 特点是可以支持文件粒度的加密。也就是说,用户可以选择对那些文件加密,对 哪些文件不加密。由于直接在物理设备而不是在容器文件内创建文件系统,再加 上不用对整个存储卷加密,加密文件系统能够提供更好的性能。根据我们后面的 测试数据,可以看出加密的开销相对于c p u 的处理能力还是不可忽略的,而一个 文件系统中通常只有少数文件需要加密,这样的结果是加密文件系统相对于储存 介质加密,在性能上会有较大的优势。同时加密文件系统支持用户粒度上的加密, 即不同的用户使用各自的加密密钥对文件加密,而存储介质加密方式由于只有一 2 l i n u x 力密文件系统 个系统加密密钥,对所有的用户都是透明访问,无法在用户间提供相应的保护。 手i :加密方式在三者中是最差的一种方法,因为它在应用中有几个问题无法 解决。首先是使用复杂,当用户需要访问某个加密文件的时候,需要用工具解密, 访问完还需要重新加密,当需要处理的文件比较多的时候,对用户来说简直就是 一种痫苦的经历。访问中的文件是蚍明文方式存在的,安全性也得不到保证。如 果加密文件很大的话,整个加密解密的过程也非常费时。( 对于加密文件系统来说, 大文件则不是问题因为在加密文件系统中访问加密文件时,只需要处理用户访 问到的部分文件内容,而不是对整个文件做加密解密的操作。) 1 2 3 其他的加密文件系统 c f s 系统以及对在c f s 基础上的扩展系统 c f s 1 1 由a t & t 实验室开发,c f s 可能是最早的发表于学术文献的加密文件 系统,它在u n i x 操作系统上实现,通过加密硬盘上的数据对文件进行保护。c f s 把对文件的加密操作放到客户端文件系统中,通过一组标准的u n i x 文件系统接口 对文件加密,提供文件系统级的安全存储。用户给每个他们想保护的目录一个加 密密钥。这些目录中的文件内容以及它们的路径名都不用用户的干预自动进行加 密解密;明文信息永远不会在硬盘上存储或者在网络上传输。实际上,它在客户 端和服务器端提供了端到端的加密,但是在服务器端不需要任何实际的加密要求。 c f s 可以不用修改地使用任何可用的文件存储介质,包括远程文件服务器,例如 n f s 等。象文件备份等的系统管理功能和普通文件系统一样,不需要知道文件的 密钥。不需要对保存加密文件的文件系统进行任何修改,文件系统的服务,如备 份,恢复,记帐,和归档:1 :作可以在加密的文件或目录上进行,不需要使用密钥。 c f s 保证明文的文件内容或者文件名绝对不会在磁盘上存放或者在网络上传输。 c f s 在客户端机器上提供了一个虚拟的文件系统,一般是挂装 l l j c r y p t 目录,用户 通过这个目录访问他们的文件。文件内容加密以后存储在磁盘上,文件名也要加 密存储。加密后的耳录可以保存在任何文件系统中,包括象n f s 和a f s 这样的 远程文件系统。不需要为c f s 目录预先分配空间。 c r y p t f s 7 是c f s 的一个扩展,它运行在内核,因为进行更少的进程上下文的 切换,它比c f s 更加高效。它使用用户i d 和会话i d 得到密钥,如果想要得到用 户密钥或者更改用户密钥,必须提供用户帐号的认证信息和最先得到密钥的进程 的会话i d 。 c r y p t f s 是一个分层的虚拟节点( v n o d e ) 接口,虚拟节点是在u n i x 家族操作系 统中的一个数据结构,用来表示一个打开的文件,目录,设备或者其他能够在文 件系统明文空间中出现的实体( 如s o c k e t ) 。它考虑文件物理层的实现,由下层进 行处理具体的文件物理操作。在l i n u x 系统中对应虚拟节点的是索引节点( i n o d e ) 。 虚拟节点概念的最重要的方面是对文件操作的分层,虚拟节点位于最高层,提供 虚拟节点接e l ,当高层的操作系统代码调用虚拟节点接口进行文件操作的时候, 虚拟节点会调用和具体的文件系统相关的操作完成具体的文件操作。通过上层的 虚拟节点调用下层的节点,下层的节点调用次下层的节点,最后就能完成文件操 作。c r y p t f s 在虚拟节点层和下层节点层之间加入一个c r y p t f s 层,由c r y p t f s 层自动 实施安全操作以后调用下层的节点层( 例如调用u f s 层) 完成操作。 t c f s 5 是c f s 的另一个扩展,它提供了简单的接口向内核传递密钥,在基本 的密钥管理上面可以建立复杂的密钥管理机制。t c f s 有3 种密钥管理机制:原始 l i n u x 加密文件系统 密钥,基本密钥和k e r b e r o s 化的密钥。t c f s 可以在不同的级别上实施密钥管理: 进程级中,每个进程有自己的密钥来访问t c f s 文件系统;用户级别中,同一个 用户的所有进程共享自己用户的密钥,每个用户都有自己的密钥。t c f s 对每个文 件设置一个密钥,密钥使用用户的密钥加密放到文件头信息中。仅仅对文件的数 据和文件名进行加密。目录结构和其他的元数据不会进行加密。 n a s d 面向网络的安全磁盘系统( n a s d ) 是由c a r n e g i em e l l o n 大学的并行数据 实验室( p d l ) 开发的存储体系结构,n a s d 结构改变了服务器的角色,它不再出 现在数据传输路径中,g o b o f f 称这时的服务器为文件管理器,它的功能是负责提 供对文件访问的分配权限策略以及提供一些高级的功能,例如管理缓存的一致性 和进行文件名字空间的管理。数据在磁盘上明文存放,但是所有的通信都是加密 进行的,每次通信过程中,发送信息端需要加密,接收端需要解密,系统的效率 受到很火制约。因为数据明文存储在磁盘上,n a s d 对通过存储服务器的直接攻 击是很脆弱的,只要攻破存储服务器或者得到硬盘就能得到数据。因为所有的认 证和授权都是通过文件管理器进行的,对文件管理器的破坏将会导致能够得到机 密数据。 r e i s e r 4 r e i s e r f s 是l i n u x 上重要的日志文件系统,由h a n sr e i s e r 开发。当前稳定的 版本为r e i s e r f s v 3 正在开发中的第4 版称为r e i s e r 4 。r e i s e r f s 是一个很有特点的 文件系统,它对小文件的读写和储存空间做了优化处理,采用b + 树算法允许在同 一目录下包含上千个文件而不降低系统效率,同时它是l i n u x 操作系统下最早实 现日志功能的文件系统。在r e i s e r 4 中,该文件系统开始对加密文件提供支持。目 前r e i s e f f s 和e x t 2 e x t 3 文件系统是在l i n u x 上应用的最广泛的两个文件系统。 w i n d o w s 加密文件系统( e f s ) 【8 e f s 提供的文件加密技术可以将加密的n t f s 文件存储到磁盘上。e f s 特别考 虑了其他操作系统上的现有工具引起的安全性问题,通过e f s ,n t f s 文件中的 数据可以在磁盘上进行加密。e f s 加密技术是基于公共密钥的,它用一个随机产 生的文件密钥k i l ee n c r y p t i o nk e y ,f e k ) 通过加强型的数据加密标准( d a t a e n c r y p t i o ns t a n d a r d ,d e s ) 算法一d e s x 对文件进行加密。e f s 加密技术作为一 个集成系统服务运行,易于管理,不易受攻击,并且对用户是透明的。如果用户 要访问一个加密的n t f s 文件,并且有这个文件的密钥,那么用户能够打开这个 文件,并透明地将该文件作为普通文档使用。否则的话,系统将拒绝用户对该文 件的访闽。 相对丁1 上述加密文件系统,我们在l i n u x 操作系统基础上设计和实现的加密 文件系统c r y p t f s 在原理和使用上与e f s 摄为接近。不过,c r y p t f s 并不象e f s 那样和某个文件系统0 i t f s ) 紧密地联系在一起。c r y p t f s 独立于下层的文件系统。 可以应用在大多数l i r l u x 支持的文件系统之上。例如e x t 2 e x t 3 ,r e i s e r f s ,j f s 等 等。 4 l i n u x 加密文件系统 1 3 安全相关的标准 1 3 1 国际安全评价标准的发展及其联系 计算机系统安全评价标准是一种技术性法规。在信息安全这一特殊领域,如 果没有这一标准,与此相关的立法、执法就会有失偏颇,最终会给国家的信息安 全带来严重后果。由于信息安全产品和系统的安全评价事关国家的安全利益,因 此许多国家都在充分借鉴国际标准的前提下,积极制订本国的计算机安全评价认 证标准。 第一个有关信息技术安全评价的标准诞生于八十年代的美国,就是著名的“可 信计算机系统评价准则”( t c s e c ,又称桔皮书) 。该准则对计算机操作系统的安 全性规定了不同的等级。从九十年代开始,一些国家和国际组织相继提出了新的 安全评价准则。1 9 9 1 年,欧共体发布了“信息技术安全评价准则”( i t s e c ) 。1 9 9 3 年,加拿大发布了“加拿大可信计算机产品评价准则”( c t c p e c ) ,c t c p e c 综 合了t c s e c 和i t s e c 两个准则的优点。同年,美国在对t c s e c 进行修改补充并 吸收i t s e c 优点的基础上,发布了“信息技术安全评价联邦准则”( f c ) 。1 9 9 3 年6 月,上述国家共同起草了一份通用准则( c c ) ,并将c c 推广为国际标准。 c c 发布的目的是建立一个各国都能接受的通用的安全评价准则,国家与国家之间 可以通过签订互认协议来决定相互接受的认可级别,这样能使基础性安全产品在 通过c c 准则评价并得到许可进入国际市场时,不需要再作评价。此外,国际标 准化组织和国际电一委也已经制订了上百项安全标准,其中包括专门针对银行业 务制订的信息安全标准。国际电信联盟和欧洲计算机制造商协会也推出了许多安 全标准。 1 3 2 美国可信计算机安全评价标准( t c s e c ) t c s e c 标准是计算机系统安全评估的第一个正式标准,具有划时代的意义。 该准则于1 9 7 0 年由美国国防科学委员会提出,并于1 9 8 5 年1 2 月由美国国防部公 布。t c s e c 最初只是军用标准,后来延至民用领域。t c s e c 将计算机系统的安 全划分为4 个等级、8 个级别。 d 类安全等级:d 类安全等级只包括d 1 一个级别。d 1 的安全等级最低。d 1 系统只为文件和用户提供安全保护。d 1 系统最普通的形式是本地操作系统,或者 是一个完全没有保护的网络。 c 类安全等级:该类安全等级能够提供审慎的保护,并为用户的行动和责任 提供审计能力。c 类安全等级可划分为c 1 和c 2 两类。c l 系统的可信任运算基 础体制( t r u s t e dc o m p u t i n gb a s e ,t c b ) 通过将用户和数据分开来达到安全的目 的。在c 1 系统中,所有的用户以同样的灵敏度来处理数据,即用户认为c 1 系统 中的所有文档都具有相同的机密性。c 2 系统比c l 系统加强了可调的审慎控制。 在连接到网络上时,c 2 系统的用户分别对各自的行为负责。c 2 系统通过登陆过 程、安全事件和资源隔离来增强这种控制。c 2 系统具有c 1 系统中所有的安全性 特征。 b 类安全等级:b 类安全等级可分为b 1 、b 2 和b 3 三类。b 类系统具有强制 性保护功能。强制性保护意味着如果用户没有与安全等级相连,系统就不会让用 户存取对象。b 1 系统满足下列要求:系统对网络控制下的每个对象都进行灵敏度 标记:系统使用灵敏度标记作为所有强迫访问控制的基础;系统在把导入的、非 标记的对象放入系统前标记它们;灵敏度标记必须准确地表示其所联系的对象的 l i n u x 加密文件系统 安全级别:当系统管理员创建系统或者增加新的通信通道或i o 设备时,管理员必 须指定每个通信通道和i o 设备是单级还是多级,并且管理员只能手丁改变指定: 单级设备并不保持传输信息的灵敏度级别:所有直接面向用户位置的输出( 无论是 虚拟的还是物理的) 都必须产生标记米指示关于输出对象的灵敏度;系统必须使用 用户的u 令或证明米决定用户的安全访问级别;系统必须通过审计来记录未授权 访问的企图。 b 2 系统必须满足b 1 系统的所有要求。另外,b 2 系统的管理员必须使用一个 明确的、文档化的安全策略模式作为系统的可信任运算基础体制。b 2 系统必须满 足i - ,l j 要求:系统必须立即通知系统中的每一个用户所有与之相关的网络连接的 改变;只有用户能够在可信任通信路径中进行初始化通信;可信任运算基础体制 能够支持独立的操作者和管理员。 b 3 系统必须符合b 2 系统的所有安全需求。b 3 系统具有很强的监视委托管理 访问能力和抗干扰能力。b 3 系统必须设有安全管理员。b 3 系统应满足以下要求: 除了控制对个别对象的访问外,b 3 必须产生一个可读的安全列表;每个被命名的 对象提供对该对象没有访问权的用户列表说明;b 3 系统在进行任何操作前,要求 用户进行身份验证;b 3 系统验证每个用户,同时还会发送一个取消访问的审计跟 踪消息;设计者必须正确区分可信任的通信路径和其他路径:可信任的通信基础 体制为每一个被命名的对象建立安全审计跟踪;可信任的运算基础体制支持独立 的安全管理。 a 类安全等级:a 系统的安全级别最高。目前,a 类安全等级只包含a i 一个 安全类别。a 1 类与b 3 类相似,对系统的结构和策略不作特别要求。a l 系统的显 著特征是,系统的设计者必须按照一个正式的设计规范来分析系统。对系统分析 后,设计者必须运用核对技术来确保系统符合设计规范。a 1 系统必须满足下列要 求:系统管理员必须从开发者那里接收到一个安全策略的正式模型;所有的安装操 作都必须由系统管理员进行;系统管理员进行的每一步安装操作都必须有正式文 档。 1 3 3 欧洲的安全评价标准( i t $ c e ) i t s c e 是欧洲多国安全评价方法的综合产物,应用领域为军队、政府和商业。 该标准将安全概念分为功能与评估两部分。功能准则从f i f 1 0 共分1 0 级。1 5 级对应于t c s e c 的d 到a 。f 6 至f 1 0 级分别对应数据和程序的完整性、系统的 可用性、数据通信的完整性、数据通信的保密性以及机密性和完整性的网络安全。 评估准则分为6 级,分别是测试、配置控制和可控的分配、能访问详细设计和源 码、详细的脆弱性分析、设计与源码明显对应以及设计与源码在形式上一致。 1 3 4 国际通用准则( 0 0 ) c c 是国际标准化组织统一现有多种准则的结果,是目前最全面的评价准则。 1 9 9 6 年6 月,c c 第一版发布;1 9 9 8 年5 月,c c 第二版发布;1 9 9 9 年1 0 月c c v 2 1 版发布,并且成为i s o 标准。c c 的主要思想和框架都取白i t s e c 和f c ,并充分 突出了“保护轮廓”概念。c c 将评估过程划分为功能和保证两部分,评估等级分 为e a l l 、e a l 2 、e a l 3 、e a l 4 、e a l 5 、e a l 6 和e a l 7 共七个等级。每一级均 需评估7 个功能类,分别是配置管理、分发和操作、开发过程、指导文献、生命 期的技术支持、测试和脆弱性评估。 6 l i n u x 加密文件系统 1 4 红旗l in u x 安全操作系统 红旗安全操作系统产品是严格遵照国家标准g b l 7 8 5 9 1 9 9 9 ,参照国家推荐标 准g b t 1 8 3 3 6 2 0 0 1 f 等同丁国际最新c c 标准) 的要求,基于l i n u x2 4 内核开发的 商品化安全操作系统。产品结合国内信息安全市场需求,在实现g b l 7 8 5 9 全部三 级和部分四级功能,增加了若干用户急需的安全功能,并在安全操作系统实现方 法上有重要创新。产品提供多种先进的访问控制机制,安全审计,基t - v f s 的高 强度加密文件系统,安全域隔离,可信路径等安全机制。其中访问控制机制包括 角色访问控制,基于b l p 模型的强制访问控制,基于b i b a 模型的完貉性访问控 制,a c l 等,是国内支持访问控制模型最多的安全操作系统。 产品在国内首次采用基于o f a c ( 通用访问控制框架) 的安全操作系统体系机 构,将安全属性数据,安全决策,决策实施三者分离,可以灵活的支持多种访问 控制机制。在实现方法上的重要创新包括安全属性数据与具体文件系统独立,加 密文什系统与具体文件系统独立等,使安全操作系统可以根据不同的用户需求采 用不同的文件系统,并可兼容用户过去的使用环境,实现平滑升级。此外产品 在性能、可管理性、易用性、应用环境适应性方面进行了大量优化,使之符合企 业级大规模应用的要求。同时,针对网络环境中的各种威胁,将安全操作系统与 应用层安全方案相结合,提供从操作系统层到应用层的完整安全解决方案。 r f s o s4 0 的系统原理图如下: 7 l i n u x 加密文件系统 ,- i1 讯镜技j i 毋辅 红旗安全操作系统4 0 ( 以下简称r f s o s4 o ) 将安全政策,决策实施,安全 数据库三者分离,可以灵活的支持多种访问控制机制。系统通过修改核心中与安 全相关的系统调h j 在具体操作执行前请求安全决策,根据决策结果决定是否允 许实施操作。 我们把系统内核分为安全决策( s d ) 和决策实施( d e ) 两个部分,s d 依赖 丁安全政策,负责判断一个安全相关行为是否可以执行,d e 与安全政策无关,负 责执行一个已经得到许可的行为所要执行的任务。s d 内部设立相互独立的政策支 持机制,每个安全政策对应一个政策支持机制,这样做的目的是希望在安全政策 的支持方面获得一定的灵活性。在系统中,多种访问控制机制、安全审计、加密 文件系统等安全机制相互结合,构成了一个强大的安全内核。 下图是r f s o s4 0 所采用的g f a c 访问控制体系结构图。从图中可以看出访 问控制决策与实施的流程。 嘲2g f a c 体系结构劁 当一个主体访问客体时,相关系统调用会请求安全决策( s d ) ,s d 的相应机 制首先根据安全请求的类型确定应采用的安全政策,再把决策任务转交给对应的 政策支持机制,最后将决策结果返回给决策实施机制去执行。此间要借助安全属 性信息,这些信息由内核的其他部分提供给s d 。从内核的角度看,安全相关行为 是由系统调用触发的。以o p e n 系统调用打开文件为例,这是个安全相关行为,首 先决策实施模块把打开文件的请求提交给安全决策子系统,决策系统受理这个请 求,并由相应的政策支持机制作出判断。决策结果返回给决策实施部分,决策实 施部分根据决策结果实施相应动作,并将结果信息返回给o p e n 系统调用。o p e n 系统调用根据这个安全决策结果确定下一步的行为。 8 b i n u x 加密文件系统 1 5 红旗安全操作系统对加密文件系统的设计要求 我们在红旗l i n u x 安全操作系统4 0 中,开始提供对加密文件系统的支持。对 加密文伺:系统的设计要求是: ( 1 ) 安全性 安全性是首要考虑的目标,所使用的加密算法应该有足够的强度,c r y p t f s 应对的主要威胁是在物理设备失窃时保证数据的安全。对于非法用户通过入侵主 机系统,非法获得文件访问权限,而对用户数据造成的威胁,不在c r y p t f s 的考 虑z 内。这方面的威胁由安全操作系统的其他模块例如强制访问控制,自主访问 控制,审计等来处理。 ( 2 ) 性能 加密文件系统应该有较高的效率,相对于未使用加密文件系统的情况,不麻 该用过多的内存或c p u 处理能力。关于性能在后面我们会详加描述。 ( 3 ) 容易使用 加密文件系统应该提供用户简便的使用方式。对用户来说,加密文件系统的 使用应该尽可能的透明。越少用户参与越好。 ( 4 ) 实现文件一级的细粒度的加密方式。 用户可以自由的选择那些文件加密,那些不加密。不同的用户对文件的加密 密钥应该不同以保证用户数据的安全。 ( 5 ) 加密文件系统只需要支持普通文件和目录的加密,不支持对其他的特殊文什 的加密请求。l i n u x 操作系统对设备,网络通信,命名管道等等都作为文件对待, 我们不需要对它们进行任何的加解密工作,只需要简单的拒绝用户对这些特殊文 件的加密要求即可。 ( 6 ) 用户可定制的加密算法; 考虑到不同的加密算法强度各不相同,加密速度也不样。我们允许用户在安装 红旗加密文件系统的时候选择适合于用户需求的算法,以便在性能和安全性之间 得到台理的平衡。 9 l i n u x 加密文件系统 第2 章加密文件系统的设计 2 1 加密文件系统的密码体系 加密文件系统中存在着下列密钥: 文件密钥f e k 我们使用公开密钥算法和对称密钥算法的组合设计加密文件系统的安全体 系。文件数据通过一个快速而安全的对称加密算法进行加密文件加密密钥简称 为f e k ( f i l ee n c r y p t i o nk e y ) ,是一个通过随机数产生器按某种方式产生的随机 数,它应该满足对称加密算法对密钥的长度和其他限制。 f e k 和被加密文件是1 对l 对应关系,也就是说每次需要对一个文件加密, 就会产生一个随机的f e k 加密文件系统使用产生的f e k 对文件数据进行加密, 一个文件的f e k 一旦产生通常就不再改变,f e k 本身以加密的形式被保存在加密 文件系统中。 使用1 对1 的f e k 好处是加密文件系统中,不存在多个以相同对称密钥加密 的文件。这样增加了安全性,同时也是在加密文件系统中支持加密文件共享的基 础。考虑某个文件需要被多个用户共享,这时每个用户都需要拥有此文件的密钥, 由于密钥只用于这一个文件,所以不会有安全性的问题。 用户密钥u e k 每个用户有自己的公开密钥算法的密码对,我们称为u e k ( u s e re n c r y p t i o n k e y ) ,其中的公钥部分被用来对用户的f e k 加密,在加密文件系统中f e k 只以 加密的形式保存在存储设备中,u e k 的公钥部分则以明文方式存放。u e k 的私钥 被用来解密加密过的f e k 。它是整个加密文件系统的关键信息需要被安全的存 放。一种合理的方式是存放在s m a r t c a r d 中或其他物理上安全的地方。目前在 c r y p t f s 加密文什系统中我们使用用户设置的口令通过对称加密算法对u e k 的 私钥进行加密并保存在加密文件系统中。此方案对安全性有一定的损害,特别是 入侵者存在用暴力尝试的方式来攻击用户的私钥的可能性。以后我们会考虑使用 其他更安全的方式解决这个问题。 u e k 对于加密文件系统来说是重要的。我们之所以使用u e k 来对f e k 进行 加密,而不是直接以用户的加密文件系统口令对f e k 进行加密有2 个原因。首先, 用户口令经常会变动,一但变动,需要对所有的f e k 进行重新加密,很不方便。 有了u e k ,我们只需要对u e k 进行重新加密即可。其次,因为u e k 使用的是公 开密钥算法,所以我们可以实现多用户共享加密文件,具体的介绍见2 2 9 文件系统密钥s e k f e k 是重要信息,丢失后就会造成数据丢失。f e k 的丢失通常是由于用户遗 忘了他的加密文件系统口令而引起的。另外当用户离开组织后,组织也需要有方 法可以访问该用户的加密数据。所以需要在加密文件系统中保存f e k 的备份。这 同样通过公钥算法来保护。对加密文件系统,存在着一个系统加密密钥 s e k ( s y s t e me n c r y p t i o nk e y ) 。所有的f e k 使用s e k 的公钥进行加密后保存在加 密文件系统中,在需要恢复丢失的f e k 的时候,系统管理员使用s e k 的私钥可 以成功地恢复出f e k 。由于丢失f e k 的情况不会经常发生,s e k 的私钥不在加 密文件系统中保存,只在恢复的时候才导入到系统,恢复完,就立即卸出。由于 0 l i n u x 加密文件系统 s e k 是一个非常敏感的数据,所以在加密文件系统的实际应用中,需要制定相应 的管理制度来加以管理和保护。当然加密文件系统本身也应该对其提供更安全的 机制。例如设计s e k 分片保存机制,使得只有n 个系统管理员合作才能恢复出 s e k 。mb l a z e 在他的论文 3 】中提出了一种基于s m a r t c a r d 的恢复密钥管理机制, 该机制能够防i r 对恢复密钥的非法使用和非法复制。由于时间的关系,我们对s e k 的保护未做更多的t 作。 图2 - 1 加密过程 上图描述了数据加密的过程,由u e k 私钥解出f e k ,由f e k 对数据块加密。 解密的过程和加密的过程相似。在任何时候,用户或应用程序注意到的都是解密 后的明文数据,他们不会观察到数据已经被加密了,而在存储介质中永远都不会 有明文数据存在。其中加解密都是针对数据块进行的。无论是加密还是解密的过 程,只对用户进行读写操作的数据所在的数据块( 块对齐的) 进行加解密的操作。 对于l i n u x 文件系统,数据块的大小和具体的文件系统相关,是5 1 2 的倍数, 数据块最大为4 0 9 6 字节,也就是一个页面的大小。加密解密的操作针对数据块进 行。加密算法一次可以加密的数据大小称为数据分组,大多数对称加密算法使用 6 4 b i t 的数据分组,a e s 加密使用1 2 8 b i t 的数据分组。所以一个数据块会包含多个 数据分组。整个数据块使用c b c 模式加密,也就是说,后面的数据分组的初始向 量i v 由前面的数据分组的加密结果提供。 l i n u x 加密文件系统 图2 - 2 加密系统的完整视图 上幽描述了加密文件系统的完整视图,其中标注着1 的步骤是文件数据块加 密侑 密的步骤,发生在用户数据从磁盘读出和写回到磁盘的时候。步骤2 是文件 加密密钥产生的过程,发生在对一个未加密的文件设置加密标志的同时,这个过 程对用户来说是透明的。步骤3 发生在用户打开一个加密文件的时候,系统使用 u e k 的私钥将加密的f e k 解密。步骤4 发生在用户登陆加密文件系统的时候。 j 刳户的加密文件系统口令和用户帐户的口令是不同的,主要是考虑到这样可以使 用强度更高的加密算法同时用户也应该使用长度更长的口令作为他的加密文件 系统的口令。步骤5 发生在用户的f e k 丢失的时候,这时用户应该请求系统管理 员协助使用备份的f e k 恢复用户丢失的f e k 。 密钥恢复机制是一个双刃剑,目前用户可以通过两种方法避免密钥恢复机 制被滥用。首先机构可以通过销毁s e k 的私钥,完全禁止恢复机制。其次用户可 以在加密文件的时候通过命令行参数选择该加密文件不被恢复机制保护( 即请求 系统不保存该文件密钥以s e k 加密的密文版本) 加密文件系统中所有的密钥,只在核心空间使用,在l i n u x 操作系统中,只 有映射到用户空间的页面才会被换出,所以密钥不会以明文的形式保存在文件系 统中或交换设备中。 2 2 加密文件系统的实现 我们在设计加密文件系统的时候,面临两种选择,一是在现有的文件系统的 基础上对文件系统的存储结构加以调整以容纳加密信息,并修改文件系统代码来 实现加密文件系统。e f s 和r e i s e r 4 都以这种方式实现。另一种是在l i n u x 操作系 统的虚拟文件系统中实现加密文件功能。我们选择了后者。这样我们的实现独立 1 2 l i n u x 加密文件系统 丁具体的文件系统,用户可以自由地选择满足他们需求的文件系统,同时又拥有 了加密文件系统的功能。从这个角度来说,我们可以认为c r y p t f s 是一个存在于 v f s 和具体的文件系统之间的虚拟层。事实上,在磁盘上也不会存在c r y p t f s 格 式的分区,用户看到的仍然是e x t 2 e x t 3 等等传统的l i n u x 文件系统,只不过用 户现在可以对其中的文什和目录设置加密属性。为了讨论方便,我们称下层的文 什系统为宿主文件系统。 22 1 加密属性的存放 这样我们需要考虑的第一个问题是在什么地方存放加密属性,包括文件是否 加密,文件密钥f e k 等等信息。我们采用在宿主文件系统中创建加密文件系统元 文件来实现文件加密属性的保存。加密文件系统元文件是宿主文件系统根目录中 的普通文件,但是通过安全操作系统的强制访问控制机制加以保护,所有用户都 没有此元文件的访问权限,所以它是足够安全的。元文件的内容在系统启动前将 由操作系统核心读取并构造相应的内存中的数据结构,在系统空闲的时候由一个 核心进程将被修改的信息保存回加密文件系统元文件中。 基于性能方面的考虑,我们同时在在内存中的i n o d e 结构中设置了一个标志 位,通过该位可以判断文件是否是一个加密文件。我们在用户使用o p e n 系统调用 打开文件的时候,从加密系统元文件中( 在m o u n t 文件系统时已经被读入内存) 检 查该目标文件是否是一个加密文件,并设置该文件对应的内存i n o d e 结构的加密 标志1 1 i ) :。由于在l i n u x 操作系统中,i n o d e 和文件是一一对应的关系,凡是涉及到 文件操作的代码,我们总可访问到该文件的m o d e 结构,所以一但在该结构中设 置了标志位,我们就可以方便的判断我们的操作是不是针对一个加密文件的,并 做相应的加密或解密的处理。 2 22 加密文件系统的注册 用户需要首先注册加密文件系统才可以访问他的加密文件,注册的过程实际 上就是提供加密文件系统的用户口令,注册后加密文件系统就可以得到用户的私 钥u e k ,通过u e k ,系统就可以得到文件的f e k ,才可以完成对文件内容的加解 密。要求用户注册加密文件系统才可以使用加密文件主要的考虑是使用户的加密 文件系统的口令独立于它的系统口令。这样避免了系统管理员修改口令的可能性。 同时用户只有在需要访问他的加密文件的时候才需要注册加密文件系统,所以对 于攻击者米说,攻击的时间窗口会变得比较小。 2 2 3 加密解密操作的实现 c r y p t - f s 加密文件系统实现的难点之一在于找到l i n u x 核心代码中合适的地 点进行加解密的工作。加密位置选择的好,便于实现,而且对系统性能影响比较 小。选择的首要原则是尽可能的将加密解密操作延后。对于写,只有当需要实际 写入磁盘的时候才进行加密,对于读,只有在接近送到用户空间的缓冲区的时刻 才进行解密。加密的位置要求在b u f f e rc a c h e 中数据以明文形式存在,以便充分 利用l i n u x 的缓冲机制提高加密文件系统的性能。我们知道磁盘读写速度相对于 计算机系统的处理能力实在是太慢了,b u f f e r c a c h e 极大地增加了l i n u x 操作系统 的文件系统的效率。如果在l i n u xb u f f e rc a c h e 层之上进行加解密的话。意味着 对丁加密的文件,b u f f e r c a c h e 中存在的将是密文,每次核心需要b u f f e r c a c h e 中 的内容的话将进行加解密的工作。而根据我们屏蔽了缓冲机制后的测试显示f 使 用同步方式安装文件系统,进行写操作) 对加密文件的操作由于涉及到费时的加 l i n u x 加密文件系统 密算法,对c p u 为1 g h z 的服务器,c p u 负荷相对t 非加密文件的操作将提高2 倍左右。可见开销还是相当大的。所以合理的方式是在l i n u x 缓冲机制中存放明 文数据。这样,只要数据在缓冲区内,实际性能将不会有明显的损失。 关于文什的读写操作是文件系统最复杂的部分之一( 另一个复杂的处理是从 目录名文件名到相应的i n o d e 的查找过程) ,这部分涉及到b u f f e rc a c h e 的处理和 页面映射关系的建立,还涉及到块设备驱动,考虑到效率,对于磁盘的读写是一 个异步的过程,这些都增加了文件读写操作的复杂性。所以我们将详细的分析放 侄加密文件系统的实现一章中进行,这里只简单做一个介绍。 和文件的读写操作相关的系统调用有r e a d 0 ,w n t e 0 ,m m a p 0 ,我们以e x t 2 文 佴:系统为例进行论述,得山的结论适合于大多数文件系统。 当我们对一个未加密的文件设置了加密属性后,需要将整个文件的内容做加 密操作,这由命令行加密工具辅助完成,在这里先不考虑。我们先考虑对一个已 经处于加密状态的文件如何完成读写操作。 写操作由系统调用w r i t e 实现,核心中处理w r i t e 系统调用的函数是 s y s 。在层 几乎不需要做什么,具体的工作都由具体的文件系统_ w r i t e ( ) v f sw r i t e 完成。对于不同的文件系统有不同的函数完成写操作,它们通过其f i l eo p e r a t i o n s 数据结构提供用于写操作的函数指针,就e x t 2 文件系统而言,这个函数是 g e n e r i c f i l e w r i t e 0 。读操作的系统调用函数是s y s,最终将调用_read() d og e n e r i cf i l e r e a a 0 。这两个函数可以认为是属于v f s 层的。所有对文件的读写 最后会引起对磁盘的读写,而磁盘的读写将进入到1 1n b l o c k 0 函数中。按照我 们前面提到的原则,我们将对数据块的加密操作放在1 1r wb l o c k ( ) 函数中,而将 对数据块的解密操作放在g e n e r i c函数中。对于使用内存映射文件_fileread0 m m a p 0 进行文件读写的操作,和内存映射机制紧密相连,最后由缺页处理函数完 成页面( 对于文件,单位是数据块而不是页面,内容是文件数据) 换入到内存的操 作。所以我们需要在d on o 个分支中完成文件的解密操作。写操作则page()的- 仍然可以交给1 1l wb l o c k ( ) 完成,因为对磁盘的读写最后仍然会进入到该函数。 这里有一个由磁盘缓冲造成的问题需要特别注意。磁盘缓冲机制只在必要的 时候才会将进行过写操作的数据块写回到磁盘。而用户在观察到他的读写操作完 成后,很可能就会从加密文件系统中注销。注销的结果就是将相应的u e k ,f e k 从系统中注销掉。所以在对磁盘的写操作真正开始的时候,系统将面没有正确的 f e k 的困境。为了避免这个问题,办法是将f e k 的明文保存在文件的内存i n o d e 中。这样加密解密函数就可以通过i n o d e 找到相应的的f e k 。 对于l i n u x 文件系统,数据块的大小和具体的文件系统相关,是5 1 2 的倍数, 数据块最大为4 0 9 6 字节,也就是一个页面的大小。加密解密的操作针对数据块进 行。加密算法一次可以加密的数据大小称为数据分组大多数对称加密算法使用 6 4 b i t 的数据分组,a e s 加密使用1 2 8 位的数据分组。所以一个数据块会包含多个 数据分组。整个数据块使用1 2 8 位密钥的对称加密算法( 默认为a e s 算法) 以 c b c 模式加密,也就是说,后面的数据分组的初始向量由前面的数据分组的 加密结果提供。对于第一个数据分组,它的初始向量是随机产生的,并且不需要 加密,以明文的形式保存在加密文件系统元文件中。在c r y p t f s 中,每个文件的 所有数据块的第一个数据分组的初始向量都是相同的,它在对该文件设置加密位 的时候产生并保存。 1 4 l i n u x 加密文件系统 2 2 4 文件空洞 l i n u x u n i x 文件系统的一个重要的特- 陛是允许在文件中存在空洞。这些空洞 足通过l s e e k 创建出来的。逻辑上空洞部分被认为保存着全0 的数据,而实际在存 储介质中并不为这些空洞部分分配空间。加密文件系统需要特别考虑这种特性。 这里存在的主要问题是,对于加密文件,数据是以密文的形式保存在存储介 质中的。我们考虑f 面的情况,假设某个加密文件有一部分是5 1 2 个字节全0 的 数据块d o ,另一个部分是通过l s e e k 创建出来的5 1 2 字节的空洞d i 。逻辑上d o , d l 应该是相同的。实际上,读d o 的时候,读到的数据应该是对全0 加密后的密 文数据,而当读写空洞的部分d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论