当前位置:首页 >> 计算机软件及应用 >>

基于linux加密文件系统的设计与实现


山东大学 硕士学位论文 基于linux加密文件系统的设计与实现 姓名:冯敏 申请学位级别:硕士 专业:软件工程 指导教师:王明强 20080920

山东大学硕士学位论文





随着计算机和通信技术的发展,信息安全技术越来越重要。信息保密是信息安全 的一种重要手段,目的是防止非法用户得到机密信息。加密技术是实现信息保密的重 要保证,将一些重要数据存储在一台不安全的计算机上,或者在不安全的网络环境中 传递,怎样尽可能提高加密技术对系统的安全性是一个很重要的研究问题。 因此,为了彻底保证文件数据的安全,就要采用密码技术,对文件数据进行加密。 磁盘上存放的是密文数据,只有密钥拥有者才能得到文件的明文数据。

本文论述了一个加密文件系统的设计与实现。这个加密文件系统能够对文件数据
提供机密性和完整性保护,对用户身份进行认证,并根据用户身份对文件的访问进行 控制。它采用对称密码技术对文件数据进行加密,来保证数据的机密性;使用消息摘 要技术、数字签名技术和HMAC来保证数据的完整性;使用公钥密码技术来对对称密 钥和IIMAC密钥进行加密保护;使用智能卡进行身份认证,并把私钥存放在智能卡中, 以达到安全的目的。 这个加密文件系统采用了堆栈式文件系统的技术,使自己作为一个组件存在于虚 拟文件系统和底层具体文件系统之间,因此具有通用性。而且由于它位于操作系统内 核中,应用程序仍然通过系统调用来访问文件,感知不到加密操作的存在,因此这个 加密文件系统对应用程序透明,具有易用性二在加密文件系统的实现中,采用了堆栈

式文件系统开发平台FiST,在Linux中进行开发。FiST降低了加密文件系统的开发
难度,并且生成的源代码只需经过少量修改就能移植到其它Unix操作系统。加密文 件系统的主要部分实现为一个内核模块,能够根据需要动态载入,无需修改和重新编

译Linux内核,因此具有很大的方便性和灵活性。本文最后对这个加密文件系统进行
了性能测试,测试结果表明它在保证文件数据安全的同时,还具有较高的性能。

关键词:文件系统,堆栈式,加密,Linux



ABSTRACT

With

the development of computer science and the development of communication Security was
an

technology,Information information in
secret

becoming means to

more

and more

important.Keeping security by

is

important

guarantee

information

prohibiting invalid person from achieving secrecy.By encrypting,peoples important data environment. Thus,in order to protect the files,cryptographic encrypted and stored plain text of the files. This thesis discusses the design and implementation of encryption file system
as

can

store their

in insecure

computers,or

can

transfer these data in insecure

ne晰ork

technology

must beintroduced.Files

are

cipher text on the disk.Onlythose who have the keys can get the

an

encryption file system.This

Can protect

files in several aspects,including the confidentiality,the
access

integration,user authentication andcontrolling

to files according to the identity of the to protect the

user.Files areencrypted by symmetric cryptographic

technology

confidentiality.
and
to

The encryption file system UseS message digest technology,digital

signature technology

HMAC

to protect

the integration of the data.It

uses are

public key cryptographic

technology

protect symmetric keys and

HMAC

keys.Users

authenticated by smart cards,and put their

privatekeys in the smart cards,which makes it

secure.

This encryption file system employs the stackable file it


systemtechnology,which
can

makes

component between VFS and lower specificfile systems.So it it locates calls,and in

be used universally. still
access

Furthermore,as
through system

theoperating system kernel,applications
aware of any encrypting

files

they aren’t

operations.Therefore,

thisencryption file system is transparent to applications and easy to

use.

The implementation of the encryption file system is under Linux,withthe help of FiST,a stackable file system development platform.FiST lowersthe difficulty of developing

the encryption file system.And the generatedsource code
operating systems with system is build
as

can

be migrated to other Unix part of the encryption file

just

alittle modifications.The module,which
can

major
be

akernel
or

loaded

dynamically

when

needed.Nomodification

recompilation of Linux kernel is needed.So it,S veryconvenient

and

flexible. At the end of this thesis,the performance of the encryption file systemis tested.The

result indicates that the encryption file system not onlyprotects the files but also has good

performance.
Key words:file system,stackable,encryption,Linux



原创性声明
,本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独 立进行研究所取得的成果。除文中已经注明引用的内容外,本论文不 包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研 究作出重要贡献的个人和集体,均已在文中以明确方式标明。本声明 的法律责任由本人承担。

论文作者签名:

关于学位论文使用授权的声明
本人同意学校保留或向国家有关部门或机构送交论文的印刷件 和电子版,允许论文被查阅和借阅;本人授权山东大学可以将本学位 论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩 印或其他复制手段保存论文和汇编本学位论文。 (保密论文在解密后应遵守此规定)

论文作者签名:迢丛

导师签名:

日期:继:2:p

山东大学硕士学位论文

第一章

前言

日前,计算机大批量数据存储的安全问题、敏感数据的防窃取和防篡改问题越来
越引起人们的重视。大型文件系统的运行平台一般是Windows NT和Unix,这些操作 系统的安全级别通常为C1,C2级。它们具有用户注册、识别用户、自主存取控制(DAC)、 审计等安全功能。但是对服务器上的文件本身仍然缺乏有效的保护措施。有经验的网 上黑客会“绕道而行",直接利用0S工具窃取或篡改文件内容,这种隐患所带来的危 害一般用户往往难以觉察。 便携式设备的普及就是其中的一个例子,便携式设备包括笔记本电脑,PDA等。 由于它们经常随身携带,丢失和失窃的情况经常发生。如果有敏感数据保存在这些丢 失的设备中,对相关的机构和组织往往会造成无法估量的损失。 目前计算机中数据的保护主要通过操作系统的访问控制机制来实现。例如,Linux 通过用户ID和组ID来对文件访问进行权限的限制,使用户只能访问他有权限访问的 文件。但是如果入侵者绕过安全的操作系统来访问,大多数安全机制将无能为力。以 普通的个人计算机来说,通常允许通过光盘、U盘等引导系统。这样对于物理上能够

接触到涉密计算机的入侵者来说,他可以简单地启动到一个不同的操作系统,该系统
完全由入侵者控制,此时他就可以完全避开正常的权限检查。入侵者甚至有可能盗走 保存有机密数据的磁盘,或者整台计算机。由于笔记本电脑在现今社会应用广泛,而

且很可能随身携带,出现遗失和被窃的可能性自然大大增加。这种物理入侵给数据带
来了严重的安全威胁,威胁的根源是数据在存储介质中以明文方式保存,而应对这种 威胁的唯一方法就是使用数据加密技术。 文件系统是操作系统中管理和存储文件信息的部分,对文件的任何访问都要通过 文件系统来进行。加密文件系统就是在文件系统中融入加密技术,以解决文件数据的 物理安全问题。

1.1研究背景

计算机技术在飞速发展,计算机安全技术在不断进步。然而,纵观整体考虑,计

山东大学硕士学位论文

算机系统的安全性并非如想象中那样日益得到增强。相反,S.Lipner指出【l】由技术进 步带来的安全性增强能力顶多只能弥补由应用环境的复杂性带来的安全威胁的增长 程度。不但如此计算机新技术的出现还很有可能使计算机系统的安全性问题变得比以 前更糟。 现在人们对计算机的安全问题考虑的越来越多,对计算机的安全要求也越来越严 格,信息安全己经不再是军方和政府要害部门的一种特殊需求。实际上,所有的网络 应用环境包括银行、电子交易、政府(无密级的)、公共电信载体以及互联/专用(或私有) 网络都有网络安全的需求。

1.1.1计算机开放系统的发展和安全性需求

计算机技术的发展越来越要求计算机系统应该是开放的。开放系统的概念代表了 购买者多年来对封闭的、独立的计算机系统以及通信硬件和软件的经销商们所寄予的 厚望。人们期望可以自由地选择经销商来购买不同的系统部件,而这些部件可以有机 地组合起来以满足购买者的需要。因此,开放系统的发展与应用和许多标准的制定密 切相关。计算机互联网是和开放系统并肩发展起来的。开放系统的标志是开放系统互 联参考模型(Open
System

Interconnection,osI)的提出。自从20世纪70年代以来,这

个模型得到了不断的发展和完善,从而成为全球公认的计算机通信协议标准。除了 OSI标准以外,另外一些标准化组织也建立了开放系统网络协议。最为有名的当属 Intemet协会,它提出了著名的TCP/IP协议。通过围绕开放系统互联所开展的标准化 活动。使得不同的厂家所提供的设备进行互联成为可能。 系统的开放同时也就带来了安全问题。从词义上看,网络安全和开放系统似乎是 矛盾的,安全要求对秘密的信息要进行充分的保护,而开放则要求资源达到最大程度 的共享。但是事实并非如此,只有对信息进行了充分的保护才能实现更为安全的共享。 为了给开放系统网络提供安全保证,就必须加强安全技术与安全协议的结合,而安全 协议则是一般的网络协议的重要组成部分。 1.1.2安全操作系统的发展 随着应用中对安全性的要求越来越多,人们逐渐认识到在操作系统层保护信息安 全的重要性。操作系统是计算机资源的直接管理者,可以说操作系统的安全是整个计 算机系统安全的基础,因此没有操作系统安全,就不可能真正解决数据库安全、网络


山东大学硕士学位论文

安全和其它应用软件的安全问题。安全操作系统的发展可以追溯到60年代中后期, 从1967年开始,安全操作系统经历了一个从无到有的探索过程[21,操作系统的基本思 想、理论、技术和方法逐步建立。在操作系统的发展过程中,最为重要的事件是1985 年12月美国国防部颁布了可信计算基系统评估标准TCSEC标准【3】【4】,这个标准成了安 全操作系统研制的蓝本。此后,各个国家相继建立了自己的标准。 英国标准是英国贸易工业部和国防部联合开发的计算机安全评价标准Ⅲ6】【7】,欧洲 工TSEC标准是由欧共体资助,由英国、德国、法国和荷兰等共同开发的信息技术安 全评价标准【引。联邦标准是由美国国家标准与技术协会和国家安全局联合开发的拟用 于取代TCSEC标准的计算机安全评价标准【9】【10】。该标准只有草案,没有正式版本。 CC标准早期是由美国、加拿大和欧洲国家联合开发的计算机安全评价国际共同标准 【11】,该标准于1999年正式被确立为国际标准。 中国军用标准GJB2646.96是由中国国防科学技术工业委员会发布的军用计算机 安全评估准则【121(简称军标),中国国家标准GBl7859.1999是由中国国家质量技术监 督局发布的计算机信息系统安全保护等级划分准则【131(简称等级准则)。这两个标准是 参照TCSEC标准制定的。中国军用标准与TCSEC标准基本一致。等级准则与TCSEC 标准也基本一致,但去掉了TCSEC标准中D和A1两个安全等级,其它安全等级从 低到高依次称为第一至第五级,同时,舍去了TCSEC标准中有关保障要求方面的内 容。 中国推荐标准GB/T
1 8336.2001是由中国国家质量技术监督局发布的信息技术

安全性评估准则【14】【15】【161(简称评估准则),评估准则几乎同等采用国际CC标准。在结 构和内容等方面,中国等级准则与中国评估准则之间有许多重要的区别。 1.1.3加密文件系统的提出 事实上,安全操作系统的开发并不能很好的解决分布系统中的数据安全问题。安 全操作系统可以非常有效地保护本地数据不被非法访问,很好地保证本地数据的安全 性,但是在分布式网络中,安全操作系统没有办法保护网络上传输的数据,而且在网

络环境中安全操作系统所面临的威胁与单机环境中是大不相同的,很难保证它能够应 付所有的安全威胁。此外,安全操作系统也不是万能的,比如,一台运行安全操作系
统的主机保存了大量机密信息,偷窃者将丰机的存储设备偷走以后很容易就能得到存



山东大学硕士学位论文

储设备上的信息。因此,在分布式系统中,保证数据的安全性是一个非常难以解决的 问题,有许多的问题需要考虑。在实际中,机密数据一般不会放到网络上,而会对它 们进行专门存储,只有拥有特权的用户才能访问。这种处理虽然保障了数据的安全性, 却使得合法用户对这些数据的访问非常不方便。 加密技术的出现和发展为机密数据的加密保护提供了可能。当前有很多非常成功 的加密算法,例如3DES,IDEA等都被公认为是强度比较高的加密算法,如果适当使 用,将会极大地提高信息系统的安全性。但是,在实际中,这些加密技术尚未被充分 用于对数据的保护。这主要是因为提供这种加密功能的工具使用起来还很不方便,而 且如果在系统中这些工具出现了问题(例如有恶意的攻击者把加密工具进行了替换), 系统的安全性将会遭受严重损害,甚至这种损害将是灾难性的。 另外,在一般的系统中,通常都是由用户手工对数据进行加密和解密的,这样用

户就需要承受很大的负担,他需要记住每个文件的密钥、对文件进行加密解密、负责
清除文件的明文内容以及负责进行文件密钥的分配以实现文件的共享等,每一步出现 问题都会使得数据不可访问(没法解密的数据实际上等价于己经丢失了)或者导致信息 泄漏,这些缺点正是加密技术未得到应有的普及的最为重要的原因。除了用户手工加

密,还可以在应用层对数据进行加密,例如在各种文本编辑器中集成加密功能,在访
问文件时需要用户提供密钥,这减轻了用户的一部分负担,用户不需要关心数据明文 的清除等工作,但是用户还是需要维护文件的密钥,当在文件数目达到一定程度这种

负担对用户来说绝对是不堪忍受的。而且由于应用程序运行在用户空间,核心空间的 进程可以很容易地得到这些应用程序的内存信息,不能保证真正的安全。而且对应用
程序的替换也是一个很大的漏洞,如果攻击者将应用程序 替换了,这个程序所处理的任何信息就都不是安全的了。 在内核的文件系统层对数据进行密码操作可以极大减轻用户的负担,如果设计合 理,用户甚至不会注意到当前的系统是具有密码操作功能的。当前国际上己有一些加 密文件系统,但是这些系统在安全性以及易用性上都存在着不同程度上的缺陷。因此, 如何充分利用这些加密技术,将它们有机整合,使得它们能够在最大限度的保护数据 的同时还不会给用户带来太大的负担和太多的不便,就成了一个需要深入研究的课 题。

10

山东大学硕士学位论文

1.2加密文件系统
加密文件系统对普通文件系统的功能进行了扩展,’在文件系统中实现加密功能。
它和使用存储介质加密方式一样,能够提供对用户透明的文件加密功能。在三种加密 方式中,加密文件系统在性能和安全性上得到了最好的平衡。相对于存储介质加密方 式,它的主要特点是可以支持文件粒度的加密。也就是说,用户可以选择对哪些文件

加密,对哪些文件不加密。而且不同的用户使用各自的加密密钥对文件加密,因此便
于多个用户共享文件。可见,加密文件系统是对存储系统加密的最优方式。 1.2.1现有的加密文件系统

现有的加密文件系统有CFS、cryptfs、TCFS、EFS等。下面对它们进行论述与比
较。


CFS

CFS[17】【181由AT&T实验室开发,在Unix操作系统上实现,通过加密硬盘上的数 据对文件进行保护。CFS把对文件的加密操作放到客户端文件系统中,通过一组标准 的Unix文件系统接口对文件加密,提供文件系统级的安全存储。用户给每个他们想 保护的目录一个加密密钥。这些目录中的文件内容以及它们的路径名都不用用户的干 预自动进行加密解密;明文信息永远不会在硬盘上存储或者在网络上传输。 CFS可以不用修改地使用任何可用的文件存储介质,包括远程文件服务器,例如 NFS等。文件备份等系统管理功能和普通文件系统一样,不需要知道文件的密钥。不 需要对保存加密文件的文件系统进行任何修改,文件系统的服务,如备份,恢复,日 志,和归档工作可以在加密的文件或目录上进行,不需要使用密钥。 CFS保证明文的文件内容或者文件名绝对不会在磁盘上存放或者在网络上传输。 CFS在客户端机器上提供了一个虚拟的文件系统,一般是挂装N/crypt目录,用户通 过这个目录访问他们的文件。文件内容加密以后存储在磁盘上,文件名也要加密存储。 CFS在用户空间实现,处理文件访问请求需要额外的上下文切换,影响了它的性 能,用户必须自己选择和记住密钥,没有实现完全的透明,且没有密钥发布方案。它 只提供文件的机密性服务,没有保护文件数据完整性的机制。
●Cryptfs

cryptfs[191是CFS的一个扩展,它运行在内核,因为进行更少的进程上下文切换,

山东大学硕士学位论文

所以比CFS更加高效。它使用用户ID和会话ID得到密钥,如果想要得到用户密钥 或者更改用户密钥,必须提供用户帐号的认证信息和最先得到密钥的进程的会话lD。 cryptfs是一个分层的虚拟节点(vnode)接El,虚拟节点是Unix操作系统中的一 个数据结构,用来表示一个文件,目录,设备或者其他能够在文件系统明文空间中出 现的实体(如pipe),在Linux系统中与虚拟节点对应的是索引节点(inode)。虚拟节 点概念的最重要的方面是对文件操作的分层,虚拟节点位于最高层,提供虚拟节点接 口,当高层的操作系统代码调用虚拟节点接口进行文件操作时,虚拟节点会调用和具 体的文件系统相关的操作完成具体的文件操作。通过上层的虚拟节点调用下层的节 点,下层的节点调用次下层的节点,最后就能完成文件操作。cryptfs在虚拟节点层和 下层节点层之间加入一个cryptfs层,由cryptfs层自动实施安全操作以后调用下层的 节点层完成操作。 同CFS一样,eryptfs也无完整性和密钥发布机制。
●TCFS

TCFS船州213是CFS的另一个扩展,它提供了简单的接口向内核传递密钥,在基本的 密钥管理上面可以建立复杂的密钥管理机制。TCFS有3种密钥管理机StJ.原始密钥、 基本密钥和Kerberos化的密钥。TCFS可以在不同的级别上实施密钥管理:进程级中, 每个进程有自己的密钥来访问TCFS文件系统;用户级别中,同一个用户的所有进程 共享自己用户的密钥,每个用户都有自己的密钥。TCFS对每个文件设置一个密钥,密 钥使用用户的密钥加密并存放到文件头信息中。仅仅对文件的数据和文件名进行加 密。目录结构和其他的元数据不会进行加密。 由于直接修改了NFS内核模块,所以TCFS的可移植性和可扩展性差,系统维护 代价高。 ●Windows加密文件系统EFS EFS盟21提供的文件加密技术可以将加密的NTFS文件存储到磁盘上。EFS特别考虑 了其他操作系统上的现有工具引起的安全性问题,通过EFS,NTFS文件中的数据可以 在磁盘上进行加密。EFS用一个随机产生的文件密钥(Fi le
Encryption Key,FEK),

通过加强型的数据加密标准(Data Encryption Standard,DES)算法——-DESX对文件 进行加密。EFS加密技术作为一个集成系统服务运行,易于管理,不易受攻击,并且

对用户是透明的。如果用户要访问一个加密的NTFS文件,并且有这个文件的密钥,
那么用户能够打开这个文件,并透明地将该文件作为普通文档使用。否则的话,系统

12

山东大学硕士学位论文

将拒绝用户对该文件的访问。由于EFS和Windows以及NTFS紧密耦合,不能用于其 它操作系统和其它文件系统中,因而不具备可移植性。 1.2.2加密文件系统应考虑的问题 由对上面几种加密文件系统的分析可知,它们或者是性能太差(如CFS),或者是 没有提供文件数据完整性保护(如cryptfs),或者可扩展性差,系统维护代价高(如

TCFS),或者不具备可移植性(如EFS)。一个优秀的加密文件系统除了需要提供数据
的保密性和完整性保护外,还要有密钥管理方案和用户认证方案,具有较高的性能, 可移植性和使用方便等特点。到目前为止,还没有一个实际可用的系统同时达到这些 目标。尽管如此,人们在开发加密文件系统方面还是取得了丰富的经验。要开发一个 加密文件系统,应该考虑以下几个方面:

1)对文件内容的保护。显然,文件数据以及和文件内容相关的结构数据需要进
行保护。例如,在加密文件中,攻击者不应该能够确定一段相同的字节在文件中重复 出现或者两个加密的文件的不同之处在什么地方。 2)较好的性能。尽管加密算法一般需要很高的计算耗费,加密文件所需要的性 能损失不应该太高,否则将会损害加密文件系统的应用。特别地,交互的响应时间不 能太明显。 3)透明访问语义。除了需要密钥进行访问以外,对加密的文件操作和其他的文 件操作应该完全相同。加密文件系统应该支持底层存储系统所能支持的任何访问方 法。所有的系统调用应该正常工作。 4)合理的密钥管理。只有拥有合法的密钥才能访问系统的敏感信息,但是密钥 不能在一个会话中被多次要求输入,一旦一个密钥被输入并且认证通过,用户不应该 在本次会话的下次操作时被要求再输入密钥。 5)自然的密钥粒度。特定密钥进行保护的信息集合应该对应用户在底层系统中

指定的结构。应该很容易地使用一个密钥保护相关的文件,并且应该很容易地对其他
文件产生新的密钥。 6)和底层的文件系统兼容。加密的文件和目录应该和其他文件和目录使用相同 的方式进行管理。 7)通用性。加密文件系统应该尽可能地使用己经存在的接口,而且不能依赖于 特殊的系统特性。另外,加密的文件应该在应用之间能够通用,在任何时候,只要有

13

山东大学硕士学位论文

密钥就能访问文件。 8)对信任进行限制。一般地,要求用户只能相信在他直接控制下的元素,这个 元素的完整性可以单独进行验证。 9)并发访问。应该允许多个用户或进程同时访问同一个加密的文件。共享语义 应该和底层的存储系统一样。 10)与未来技术的兼容。一些新出现的技术可能对数据保护有潜在的要求,特别 地,密钥可以使用智能卡进行保存和读取,这就使得合法用户能够物理地保存密钥。 一个加密系统最好能够支持这种新的硬件。 11)要在系统合适的地方对文件进行加密保护。如果在太底层的位置加密,就需

要相信太底层的系统元素,而这些元素因为离用户层太远,即使被替换也不会引起用 户的注意,这就引入了脆弱性。如果加密位置离用户太近,用户的频繁干预将会引入
错误,不适合日常的使用。

1.3研究目标及完成的工作
本课题的研究目标是在Linux操作系统中设计一个安全的、易用的、有较高性能 的、便于移植的加密文件系统,并实现其原型。在分析了已有的加密文件系统的特点

后,结合加密文件系统应考虑的问题,得出本课题的具体目标如下:
1)数据的保密性和完整性。只有密钥的拥有者才能得到文件的明文数据,并且 可以检测到文件数据是否遭到非法篡改。

2)有效的访问控制机制。只有授权用户才能访问加密文件系统中的文件,并且 对每个用户的权限进行控制,使其只能进行权限范围内的操作。 3)保持Linux文件系统的访问方式。即对文件的访问仍然通过系统调用来进行, 用户进程感觉不到加密文件系统的存在。
4)合理的密钥管理机制。用户能够方便地管理密钥,不用记忆大量的密钥或口 令。 5)较高的性能。尽管加密操作的存在,仍然不能使得访问文件的速度比普通文 件系统损失太多。 6)可移植性。加密文件系统的实现不应过度依赖某个特定的操作系统。只要做 简单的修改就能在其它Unix操作系统之间移植(如Free BSD、Solaris等)。

14

山东大学硕士学位论文
,曼皇曼量皇量曼曼鼍量曼量曼曼曼曼皇量皇量曼曼曼曼曼曼曼皇曼曼曼皇鼍曼皇量曼曼皇曼!!曼曼曼曼皇皇量曼鲁曼曼曼曼曼曼曼舅鲁曼曼皇量量曼皇曼曼曼曼曼量量

这个课题中,作者完成的工作有:

1)分析了计算机开放系统的安全性和安全操作系统的发展,并进一步分析了加
密文件系统的提出。 2)分析了当前已有的加密文件系统,对比了它们的优缺点,并指出实现加密文 件系统应考虑的问题。

3)结合加密文件系统的需要,对Linux文件系统和密码学进行了研究,并在此
基础上确定构建加密文件系统的方法。 4)在他人设计了一个Linux下的加密文件系统CipherFS,,实现了CipherFS的 一个原型后,对CipherFS的原型进行了性能测试,并提出了提高性能的策略。

1.4论文的组织结构
本文的主要内容分为6章,各章的内容安排如下:

第一章:绪论。分析了课题的研究背景,提出了保护存储数据安全的措施。研究
了安全系统发展的过程,以及加密文件系统的提出。研究比较了现有的加密文件系统 的特点,分析了这些系统的不足,指出了加密文件系统应考虑的问题。提出了课题的

研究目标,简述了完成的工作。
第二章:加密文件系统CipherFS的设计。详细论述了加密文件系统CipherFS的 设计原则、密码体系、访问控制、构建方式、系统结构等。 第三章:加密文件系统CipherFS的实现。简单论述了加密文件系统CipherFS原

型的实现,包括密码算法的比较、密码算法接口的实现、加密元数据的格式、系统数
据结构、主要操作的实现、系统的管理等内容。 第四章:加密文件系统CipherFS的性能测试。对CipherFS的原型进行了性能测 试,并与普通的未加密文件系统进行比较,分析了影响性能的主要因素,指出提高性 能的途径。 第五章:总结。对课题工作进行总结,并对后续工作进行阐述。

山东大学硕士学位论文

第二章加密文件系统CipherFS的设计

2.1设计原则

根据第一章中对现有各主要加密文件系统的研究分析,要设计一个加密文件系 统,在保证安全性的同时还必须要保证系统的运行效率和系统的易用性。因此,制定 CipherFS的设计原则如下: 1)文件系统安全性。整个系统的安全性建立在对各种密钥的保密基础之上,对 文件数据加密保护,能验证数据的完整性,能提供访问控制策略,能验证用户的身份。 只要密钥没有泄漏,系统的安全性就不会遭到破坏。 2)易用性。用户都不会关心对文件的加密和解密操作,用户使用原来Linux系 统中的文件接口访问文件系统,所有的加密解密等相关操作都由CipherFS的相关模 块自动完成。 3)多种密码算法的有效支持。根据用户数据安全级的不同,允许用户在一组密

码算法中进行选择,使用合适的密码算法对数据进行加密。
4)较高的性能。和普通Linux相比,CipherFS不应该有太多的性能损失。不应

该耗费太多的内存,应该充分使用Linux系统中的各种缓存,并设置其它必要的缓存。
加密文件系统不应该有太多的进程上下文的切换,因为有时候这种切换将会造成性能 上的巨大损失,所以,将CipherFS的模块放到内核实现是最好的选择。 5)对操作系统的其他部分影响尽量小。CipherFS不应干扰操作系统其他部分的


执行,实现时不用修改内核源代码。

2.2密码体系

根据加密文件系统CipherFS的安全需求和各种密码体制心3儿243的特点,我们使用 对称密码体制和公钥密码体制相结合的密码体系。下面将从密钥乜司啪1,数据的加密, 数据的完整性保护,系统的备份和恢复等几方面进行论述。 2.2.1密钥 CipherFS中的密钥有以下几种:

山东大学硕士学位论文

●文件加密密钥FKEY 文件加密密钥用来对文件数据进行加密和解密。由于文件数据量很大,系统中的 进程频繁读写文件就会频繁地解密和加密文件数据,因此在安全性的基础上要首先考 虑效率。公钥密码算法运算量大,速度慢,不适合对大量的数据进行加密和解密;而 对称密码算法具有速度快的特点,因此文件加密采用对称密码算法。 根据文件系统加密的粒度和策略,可以设定文件加密密钥的个数。为了增强文件 系统的安全和进行有效的访问控制,采用一个文件对应一个文件加密密钥的策略,即 每个文件有各自的加密密钥,任意两个文件的加密密钥不相同。由于对称密钥长度在 几十位到几百位之间,采用随机数的方式产生文件加密密钥,很容易做到每个文件具 有不同的加密密钥。 ●HMAC密钥IKEY HMAC密钥用来对文件数据的完整性进行保护。为了验证数据是否遭到非法篡改, CipherFS采用HMAC对文件数据的完整性进行保护。和文件加密密钥一样,每个文件 都有自己的HMAC密钥,任意两个文件的HMAC密钥都不相同。 ●用户密钥 为了实现不同用户之间的权限管理,需要为每个用户设定各自的密钥,这样各个 用户就能使用自己的密钥完成自己权限范围内的操作,而不能越权操作。用户密钥并 非用来对文件数据进行加密解密,而且各个用户之间的协作需要公开各自的一些信 息,因此用户密钥采用公钥私钥对。 每个用户具有自己的公钥私钥对,公钥对所有用户公开,可以存放在一个众所周 知的地方,这个地方能够被所有的用户所访问,并且要保证各个用户和各自的公钥的 正确对应关系,即用户A所对应的公钥是他自己的,而不是别人的。这可以用一个只 读的服务器来实现,里面存放一个二元组<用户身份标识,用户公钥>的列表;也可以 使用PKI机制,通过证书来保证这种正确的对应关系。 用户私钥需要保密,这可以通过把私钥存放在智能卡中来实现,每个用户拥有各 自的智能卡,只有该用户自己能够访问他所拥有的智能卡中的私钥。 用户公钥用来对文件加密密钥进行加密,然后把加密后的文件加密密钥存放在文 件系统的一个特定目录下。这样,访问文件数据时,用户使用自己的私钥解密文件加 密密钥,然后使用文件加密密钥对文件数据进行加密和解密。使用这种方式可以实现 文件的共享,拥有对某个文件访问权限的多个用户可以使用自己的公钥对这个文件的 加密密钥进行加密,并把各自加密的结果放在一个特定目录下,以后各个用户访问这 个文件时,就可以使用各自的私钥解密各自加密的文件加密密钥,而不引起冲突。
17

山东大学硕士学位论文

●系统管理员密钥 系统管理员需要对文件系统进行管理,对重要数据进行备份和恢复,这就要求系 统管理员具有自己的密钥。系统管理员密钥也是公钥私钥对,公钥放在众所周知的地 方,能够被其他用户使用,私钥只有系统管理员自身才能使用。 重要数据的备份和恢复主要是对文件加密元数据的备份和恢复,包括文件加密密 钥,初始向量,HMAC密钥,访问控制列表等。如果文件加密元数据丢失,则对应的文 件不能再访问,因而需要备份。而且系统管理员也需要具有访问文件系统中所有文件 的权限。备份时,用系统管理员公钥对文件加密元数据进行加密,把结果存放在一个 安全的地方,例如,和加密文件系统相独立的另一个安全存储设备。恢复文件加密元 数据时,系统管理员使用私钥解密备份的数据即可。 由于系统管理员权限很大,系统管理员私钥的丢失将造成严重后果,所以需要妥

善保管系统管理员私钥。由于文件加密元数据遭到破坏的事件发生概率小,只有在恢
复时才需要使用系统管理员私钥。另外,可以采用门限密码机制眩力啪1,将系统管理员 私钥分成N片,由N个系统管理员各自保存一片,并且至少要M(1<M<N)个系统管理 员合作才能恢复出系统管理员私钥。 2.2.2数据加密过程

/明主蠢件//-@纠鬻蠹嘉件/
文件lnl辩辩铡


,,/‘:_\

密史肜式的文 件绷鬻密钥

/公钥\ —◆}密码算法;
\解鬻/ 、、?:.=/ ▲

嘲广;私钥

图2.1

CipherFS的加密过程
?

Figure 2-1?The En crypting Proce ss in CipherFS

如图2-i所示,首先用户使用自己的私钥对用公钥加密过的文件加密密钥进行解
18

山东大学硕士学位论文

密,得到文件加密密钥,然后使用此文件加密密钥对明文文件数据进行加密,生成密 文文件数据。解密过程与此类似,不同之处在于使用文件加密密钥对密文文件数据进 行解密,以生成明文文件数据。 2.2.3数据完整性保护 加密文件系统CipherFS不仅要保证文件数据的保密性,还要保证其完整性,能 够发现文件是否经过非法篡改。这采用HMAC来实现,使用文件的HMAC密钥来计算文 件数据的HMAC值。 验证文件数据完整性时,首先计算文件数据的HMAC值,然后把它和保存的HMAC 值比较,如果相等,则表示文件未遭到非法篡改,否则,文件数据完整性遭到破坏。 2.2.4关键数据的备份与恢复

图2.2文件加密元数据的备份
Figure 2-2 The B ackup ofThe File Encrypbon

Meta

Data

加密文件系统CipherFS中,用户私钥和系统管理员私钥存放在各自的智能卡中,

19

山东大学硕士学位论文

只有拥有智能卡的个人能够使用;用户公钥和系统管理员公钥存放在一个众所周知只 读服务器上,能够防止丢失和遭到篡改;文件加密密钥FKEY、初始向量IV、HMAC加 密后的FKEY、IV和IKEY文件加密元数据的其它部分系统管理员公钥FKEY、IV和IKEY 公钥加密备份密钥IKEY和访问控制列表ACL等文件加密元数据和文件数据一起存放 在文件系统中,可能会遭到破坏,因此需要进行备份。其中,FKEY、IV和IKEY需要

保密。如图2-2所示,FKEY、IV和IKEY使用系统管理员的公钥加密后,和加密元数 据的其它部分一起备份在一个只有系统管理员能够访问的安全存储设备上。
当文件系统中的加密元数据遭到破坏后,系统管理员使用私钥解密FKEY、IV和

IKEY,然后用文件用户的公钥加密它们,并恢复文件加密元数据的其它部分。
其它数据,包括文件本身,由于数据量过于庞大,所以不进行备份。由于完整性 保护机制的存在,当系统遭到入侵后,系统能够验证数据是否遭到非法篡改。

2.3身份认证和访问控制机制
2-3.1身份认证 认证服务提供了关于某个实体身份的保证,可以抵抗假冒攻击。认证机制乜町踟 可以分为非密码认证机制和基于密码的认证机制。

非密码认证机制主要包括口令机制和基于个人特征的机制。口令机制∞¨:例如
TCFS使用口令加密文件密钥,输入正确的口令才能使用系统。口令机制有严重的弱点, 如外部泄漏、口令猜测、线路窃听、重放攻击等,不适用于保护文件密钥等重要信息。

基于个人特征的机制∞1如指纹识别、视网膜识别等。
基于密码的认证机制的基本原理是:使验证者相信声称者是所声称的,因为声称 者知道某一秘密密钥。基于密码的认证机制可以使用对称密码技术和公钥密码技术。 在实践中常常要用到认证服务器。 口令机制安全性弱,但密码机制不适合于直接用在个人认证上,因为像CFS和

Cryptfs一样要用户记住密码是不实际的。现在常用的技术是口令机制和基于密码的
机制的结合∞¨川,例如从口令推导密钥或使用智能卡(Smart Card)瞄5瑚1。CipherFS 使用智能卡来验证用户身份,智能卡中存储用户的私钥。 在CipherFS中,文件加密密钥、初始向量和HMAC密钥都用用户公钥加密后保存, 用户必须输入私钥才能正确地解密出它们。因为智能卡能够提供较高的安全性,用户
20

山东大学硕士学位论文

的私钥存储在智能卡上。 智能卡由一个或多个集成电路芯片组成,并封装成便于个人携带的卡片,在集成 电路中具有CPU和存储器,智能卡具有暂时或永久的数据存储能力,其内容可供外部 读取或供内部处理和判断之用,同时还具有逻辑处理功能。 智能卡系统具有很强的安全性。对于加密存储器卡,存储区的访问受逻辑电路控 制,只有各种密码核对正确后才能进行读写操作。而且密码核对有次数限制,超过规 定的次数,卡将被锁死。CPU卡的加密性更高,除了密码控制外,还具备信息处理功 能,进一步提高了系统的安全性。智能卡的加密性还体现在系统设计上,由于智能卡 属于可随身携带的数字电路,而数字电路的各种硬件加密手段都可用来提高系统的安 全性。另外,在软件设计上可采用各种加密算法,大大增强了系统的安全性。 2.3.2访问控制机制 访问控制机制主要有强制访问控制机制(Mandatory 自主访问控制机制(DiscretionaryAccess
Access

Control,MAC)和

Control,DAC)。

强制访问控制机制咖㈨将对系统中的信息分密级和类进行管理,对每个进程、每 个文件等赋予相应的安全级。当某进程访问某文件时,调用MAC机制,根据进程的安 全标识(安全级等)和访问方式,比较进程的安全级和文件的安全级,从而确定是否 允许进程对文件的访问。强制访问控制机制安全性高,但需要对系统中所有资源统一 管理,缺乏灵活性。 自主访问控制机制∞¨删能够按用户意愿进行访问控制,用户可以说明其资源允许 系统中哪些用户以何种权限进行共享,因而具有较大灵活性,而且可以设置较细的控 制粒度。

兼顾安全性与灵活性,加密文件系统CipherFS使用自主访问控制机制,按照用
户的意愿进行访问控制。该机制与Linux中已经存在的访问控制机制相独立,即对文 件的访问除了受到传统的Linux访问控制机制的制约,还要受到该机制的控制。使用 自主访问控制机制,用户可以说明其资源允许系统中哪些用户以何种权限进行共享。 传统的Linux文件访问控制机制H妇把用户分为文件主、与文件主同组的用户以及 其他用户,对三种不同的用户分别赋予访问文件的相应权限,根据用户身份对访问进 行控制。这种方式较为灵活,但控制粒度较粗。 为了达到较细的访问控制粒度,CipherFS使用访问控制列表(Access

2l

山东大学硕士学位论文

ControlList,ACL)m1来实现自主访问控制,每个文件都有自己的访问控制列表。 一个文件的访问控制列表由若干项组成,每一项表示一个用户对该文件的访问权 限,其形式为下面的二元组:
<uid,perm>

uid表示用户ID,perm表示该用户对该文件拥有的权限。这里不再使用Linux 传统的组ID(gid)来对用户进行权限分配,以达到精确的权限分配效果。 进程访问某个文件时,首先根据进程的uid在该文件的访问控制列表中查找对应 的项。如果没有找到,则表示该用户的进程不具备访问该文件的权限,拒绝访问;如 果找到,则比较该进程将要进行的操作和该uid对该文件的权限,如果相符则允许访 问,否则拒绝。例如,uid为3的进程要访问文件foo,该文件的访问控制列表中有

二元组<3,r>,r表示只读,而该进程要写该文件,则操作被拒绝,如果该进程要读取
该文件,则允许访问。 每个文件有一个文件主,只有文件主对该文件的访问控制列表有修改的权限。要 进行文件共享,则需要该文件主把其他共享用户的权限项添加到访问控制列表中。要 调整某共享用户对该文件的访问权限,也需要由文件主来对访问控制列表进行修改。 为了检测某文件的访问控制列表是否合法,即是否是由文件主设定的,而未遭到 其他用户的非法篡改,需要文件主对该访问控制列表进行签名。签名方式为:首先计 算访问控制列表的消息摘要,然后使用文件主的私钥对消息摘要进行签名。验证访问 控制列表是否合法时,首先计算访问控制列表的消息摘要Dl,然后用文件主的公钥解 密访问控制列表的签名,得到结果D2,比较D1与D2是否相等,相等则表示该访问控 制列表合法,未经非法篡改。

2.4构建文件系统的方式
有多种方法构建文件系统,这些方法主要分为三种类型:
●用户空间文件系统,在用户空间实现并作为一个用户进程运行。


内核文件系统,在内核中实现,需要重新设计文件系统的全部功能,如Ext2, Jffs2等。

●堆栈式文件系统,文件系统在内核中实现但可被安装在其它文件系统之上, 利用其它文件系统的一些功能。 每种方法都有其优缺点,下面分别进行讨论。

山东大学硕士学位论文

2.4.1用户空间文件系统 用户空间文件系统H31位于内核之外,实现为一个用户进程或者一个运行库。在用 户空间开发文件系统的-丰要原因是,开发工作相对比较简单。这种方法避免了内核编

程的复杂性,极大地简化了开发工作。用户级文件系统的另一个优点是,文件系统可
以由用户自己安装,不需要系统管理员的参与,这给用户使用文件系统提供了很大的 灵活性。 一个运行在用户空间的文件系统这样与用户进程和操作系统进行交互(以读文件 操作为示例): 1)一个用户进程发出一个读文件的请求; 2)这个请求被转换为一个内核系统调用,内核调用用户级文件系统; 3)用户级文件系统产生另一个内核调用,从存储介质中提取读操作要求的数据; 4)内核将数据返回给用户级文件系统; 5)用户级文件系统再次调用内核操作,准备把数据返回给用户进程; 6)内核将数据传给用户进程完成读操作。 这类文件系统的典型例子有以FUSEⅢ1为模板开发出的各种文件系统。FUSE是一 个用户空间文件系统的模板,它有一组文件操作(例如read0、write0、lseek0) 的接口,只要实现这些接口就能构建一个用户空间文件系统。例如,在这些接口中加 入加密功能,就能实现加密文件系统,加入压缩功能,就能实现压缩文件系统。


用户空间文件系统的主要缺点是性能不高,因为需要多次上下文切换。 2.4.2内核文件系统 开发一个内核文件系统要复杂得多,因为文件系统直接和存储设备的驱动程序交 互,这要求开发者深入理解操作系统的内部结构。这种方法没有充分利用以前的开发 成果,要重新设计文件系统的所有功能。 内核文件系统的主要优点是它的性能比用户空间文件系统要好得多,因为它作为 内核特权模式运行,没有用户空间文件系统的附加的上下文切换操作。 2.4.3堆栈式文件系统 堆栈式文件系统(Stackable
File

System)H翻叫481是利用堆栈式原理开发的一种

具有良好可扩展性的文件系统。它尽量利用已有文件系统的代码,并方便地在其上根

山东大学硕士学位论文

据目标文件系统的功能需要做一些修改,从而可以大量地减少编程人员的工作量,缩 短系统的开发周期。1990年,Rosenthal首次在SunOS4.1中提出并部分实现了堆栈 式文件系统的开发工作。其后,一些堆栈式文件系统开始出现。 堆栈式结构主要指vnode结构的堆栈式。vnode结构是Unix操作系统的一种数据 结构(Linux中为inode),用来表示一个文件、目录或者其它在文件系统命名空间出 现的实体。它隐藏了底层物理文件系统的实现细节。vnode结构使高层操作系统模块 可以按照统一的方式处理文件系统请求。 近年来,vnode结构引入了一个重要的概念,即vnode栈(vnode stacking)。通 过vnode栈技术,可以允许一个vnode接口层的函数调用另一个vnode接口层的函数, 实现模块化文件系统。在vnode栈引入之前,操作系统内核中只存在单层的vnode接
口(vnode interface);高层文件系统代码调用vnode接口,而vnode接口再调用底

层的具体文件系统。例如,Linux的文件系统就是这种结构。

用户空阀



系绕调用界丽

内核空阅

图2.3
Figure 2-3

Linux文件系统结构

The Structure of Linux File System

如图2—3所示,Linux文件系统位于内核空间,主要分为两层。 高层为虚拟文件系统(Virtual
File System

Switch,VFS),它是所有具体的文

件系统的抽象,向上为应用程序提供一组统一的系统调用接口,向下与多个具体的文 件系统(如Ext2、Ext3、Jffs2等)相互衔接。当应用程序通过系统调用访问文件时, 将调用虚拟文件系统的操作,然后虚拟文件系统再调用某个具体文件系统的操作来完 成实际的工作。虚拟文件系统的这种功能使得Linux能够使用多种文件系统。
24

山东大学硕士学位论文

底层为各种具体的文件系统,例如Ext2、Ext3、Jffs2等。这些文件系统需要与 具体的设备驱动进行交互,来完成具体的文件读写等操作。 引入vnode栈之后,内核中可以同时存在数个vnode接口层,它们之间可以依次 调用:栈的第N层例程可以调用第N-1层相应的代码,第N-1层可以调用第N-2层, 以此类推。由于这种层次关系,可以在已有的文件系统基础上添加新的功能,当文件 数据依次流过这些层次时,就能进行相应的新功能的处理。

用户空闯 系统调拜】辨l百i

.......

内桉空阀 明文数据

压缩后的明文数攒

聪缭舷的密文数据

以Em2格式存储

图2—4堆栈式文件系统示倒
Figure 2-4

An Example of



8taekable File

System

图2-4是具有两层附加层次的堆栈式文件系统的示例,一层具有压缩文件数据的 功能,另一层具有加密文件数据的功能。这两层位于具体文件系统(这里是Ext2)和 虚拟文件系统之间,这样就在Ext2文件系统上实现了具有压缩和加密文件数据双重 功能的文件系统。 由于堆栈式文件系统位于操作系统内核,具有较高的性能,而且这种层次结构和 已有文件系统的可重用能力,堆栈式文件系统使得具有新功能的文件系统的开发变得 相对容易。因此,加密文件系统CipherFS采用堆栈式文件系统的模式进行开发,在 虚拟文件系统和具体文件系统之间实现一个具有所需功能的层次。CipherFS的堆栈式 层次结构将在下一节详细论述。

山东大学硕士学位论文

2.5体系结构

2.5.1总体结构 CipherFS的总体结构如图2—5所示,包括堆栈式模块,密码模块,身份认证和访 问控制模块,插件接口模块和辅助工具模块。

图2-5
Figure 2-5

CipherFS的总体结构
The Structure of CipherFS

其中,除了辅助工具模块,其余模块都位于内核空间。 堆栈式模块用于实现对文件操作的过滤和修饰,它协同密码模块以及身份认证和

访问控制模块来对文件进行加密解密和访问控制。
密码模块提供各种密码操作的接口,堆栈式模块以及身份认证和访问控制模块中 的密码操作都通过该模块来进行。

身份认证和访问控制模块用来对用户进行身份认证和对文件操作的访问控制。用
户登录以及每次文件的访问都要经过该模块。 插件接口模块向内核中的其它三个模块提供一组操作接口,而各个插件将是这些 操作接口的实现。这样能够在不改变其它模块的情况下按系统需求提供这些操作的不 同实现。例如,加密可以用软件也可以用硬件实现,当系统对性能要求很高时可以采 用硬件实现,这时,只需把加密插件更换为硬件加密插件即可。 辅助工具模块为用户提供一些管理配置工具,用以对系统进行控制。

山东大学硕士学位论文

2.5.2堆栈式模块 加密文件系统CipherFS的堆栈式模块位于Linux内核中,向上与虚拟文件系统 接口,向下与各种具体文件系统如Ext2,Ext3,Jffs2等接口,如图2—6所示。 从虚拟文件系统的角度看,CipherFS的堆栈式模块是一个具体的文件系统,向虚 拟文件系统提供特定的文件操作的实现。从下层具体文件系统的角度看,CipherFS 的堆栈式模块是虚拟文件系统,每个具体文件系统在实现它的文件操作接口。

用户空闻 系统调朋接翻



内羧空朗 明文数据

密文数撂

图2-6
Figure 2-6

CipherFS的堆栈式模块

The Stackab le Module of CiphevFS

也可以把CipherFS的堆栈式模块看作一个过滤装置,对文件的操作进行过滤和

修饰,以达到特定的效果。这里,过滤和修饰就是对文件数据的加密和解密,以及对
文件访问的控制。 CipherFS的堆栈式模块是整个系统的关键所在,由于它位于Linux内核中,因而 用户空间的进程感觉不到其存在,能够像访问普通文件系统一样来访问CipherFS中 的文件。

27

山东大学硕士学位论文

2.5.3密码模块图

街鹳模块 鬻铡管理 密 钥 备 份 与 恢 复 加密解密 完夔性 橼护 密 钥 生 成 密 钥 .镫 入 .譬 如

数 掌 禳 名

消 息 攘 螫



吾 。

图2-7
Figure 2-7

CipherFS的密码模块 Module
of CipherFS

The Cryptosrzphic

加密文件系统CipherFS的密码模块用来处理与密码相关的操作,如图2-7所示, 包括密钥的管理,文件数据的加密和解密,文件数据的完整性保护,密码算法引擎接
口。
?

密钥管理的主要工作有密钥的生成,密钥的导入导出,密钥的备份与恢复。 密钥的生成分为文件加密密钥的生成和公钥私钥对的生成。文件加密密钥为对称 密钥,可以用产生相应长度的随机数来实现,公钥私钥对的生成采用相应的公钥算法 来实现。 密钥的导入是指从存储密钥的介质导入密钥,导出则指的是将系统中的密钥导出 到存储密钥的介质。文件加密密钥、ttMAC密钥和文件一起存放在文件系统中,所有的 公钥存放在一个众所周知的只读服务器上,私钥存放在各自的智能卡中。在使用这些 密钥前,需要该模块导入这些密钥;生成密钥或对密钥进行修改后需要该模块导出这 些密钥。 密钥的恢复与备份即对文件加密密钥、初始向量和HMAC密钥的备份与恢复,加 密解密即对文件数据的加密解密以及对文件加密密钥、初始向量和HMAC密钥的加密 解密,完整性保护即对文件数据ttMAC计算和验证以及对加密元数据的签名和验证, 这三个功能已经在2.2节中论述,这里不再重复。

28

山东大学硕士学位论文

2.5.4身份认证和访问控制模块

用户登录时,该模块会对用户的身份进行认证,以识别该用户身份是否合法。 用户进程访问文件时,该模块会解析所访问的文件的访问控制列表,并验证该用
户对该文件的操作权限,以决定允许还是拒绝操作。

2.5.5插件接口模块
插件接口模块为系统中的其它模块提供一组抽象的操作接口,而具体的操作实现 形式则由连接在它上面的插件来实现。这些接口主要包括密码算法接口和身份认证接
口。


密码算法接口为密码模块提供各种对称密码算法,公钥密码算法和消息摘要算法
的实现接口,而实现该接口的插件则提供这些算法的具体实现。密码模块进行密码操 作,例如加密文件数据时,则调用对称密码算法接口,而加密的具体过程由对称密码 算法插件来进行。

身份认证接口提供各种身份认证的抽象接口,而具体的认证过程由插件来实现。
2.5.6辅助工具模块 辅助工具模块提供控制CipherFS的功能,包括一系列用户空间的工具,用来对 内核中的各种功能进行配置和管理。该模块具有命令行操作界面和图形操作界面,为 用户提供登录,出错处理,系统管理员操作等功能。

山东大学硕士学位论文

第三章加密文件系统CipherFS的实现

上一章论述了CipherFS的设计方案,根据他人的设计嘲本章将对基于这个方案 的CipherFS的一个原型的实现进行简单论述。

3.1密码算法的比较与选取

基于密钥的加密算法丰要分为两种,一种为对称算法,另一种为非对称算法。对 称算法的保密性_丰要依赖于密钥.。主要代表有DES,IDEA及AES等。而非对称算法有 两个密钥,即公钥和私钥,公钥公开而私钥保密,加密密钥和解密密钥分别用这两个

密钥的一个,且两个密钥是无法互推的,其保密性主要依赖于私钥。主要代表有RSA, 椭圆曲线密码(ECC)算法等。 3.1.1对称密码算法的比较与选取
对称密码算法中最著名的是美国数据加密标准DES、高级加密标准AES和欧洲数 据加密标准IDEA。 ●DES和三重DES DES是一种分组密码算法,它以64比特为分组对数据进行加密。密钥长度为56 比特。64比特一组的明文从算法的一端输入,64比特一组的密文从另一端输出。三 重DES啪1即用DES加密三次,每次用不同的密钥。 由于DES算法产生比较早,对其进行的研究也比较多,甚至造出了专用于破译DES 的机器,因此到了二十世纪九十年代,DES已是不安全的。而三重DES不但使密钥强 度增加,且对DES的内部结构进行了优化,到目前为止还没有人给出攻击三重DES的

有效方法,是一种到目前为止比较安全的算法。
●IDEA

IDEA也是一个分组密码算法,它基于64比特的明文块运算,密钥长为128比特。
同一算法即可用于加密,又可用于解密。该算法所依据的设计原则是一种“相异代数 群上的混合运算"。有三个代数群j将其运算进行混合,无论用硬件还是软件,它都 易于实现,它比DES在实现上要快得多。
30

山东大学硕士学位论文

IDEA的密钥的长度为128比特,比DES长两倍多。其时间强度为0(2128)。对于 强力攻击,为获取密钥需要2128次加密运算。设计一个每秒能测试十亿个密钥的芯 片,在这个问题上用十亿片来并行处理,它将花费101年。总之,IDEA的128位密钥 融合了对任何已公开密码分析的抵抗性。
●AES

1997年4月15日美国国家标准和技术研究所NIST发起了征集AES侧算法的活动, 并成立了专门的AES工作组,目的是为了确定一个非保密的、公开披露的、全球免费 使用的分组密码算法,用于保护下一世纪政府的敏感信息,并希望成为秘密和公开部 门的数据加密标准。1997年9月12日,在联邦登记处公布了征集AES候选算法的通 告。AES的基本要求是比三重DES快而且至少和三重DES一样安全,分组长度为128 比特,密钥长度为128/192/256比特。入选AES的五种算法是MARS、RC6、Serpent、 Twofish、Rijndael。Rijndael在经过了一番时日的考验之后,一直名列前茅,并最 后入选。 为AES开发Rijndael算法的是两位来自比利时的密码专家:Proton WorldInternational的Joan Daemen博士、Katholieke
Universiteit

Leuven电子

工程系(ESAT)的Vincent Rijmen博士后,两位先生在加密领域里一直比较活跃。NIST 主任RayKammer在马里兰召开的新闻发布会上说,之所以选中Rijndael是因为它很 快而且所需的内存不多。这个算法是如此可靠,就连在密码方面最内行的美国国家安 全局也决定将用它来保护一些关键数据不被窥视。 Rijndael算法的原形是Square算法,它的设计策略是宽轨迹策略(Wide TrailStrategy),这种策略是针对差分分析和线性分析提出来的。是一个分组迭代密 码,具有可变的分组长度和密钥长度。AES的分组长度为128位,有三个可选密钥长 度128/192/256位,相应的轮数为10/12/14.。Rijndael汇聚了安全、性能、效率可 实现性和灵活性等优点,尤其是在无论有无反馈模式的计算环境下的软硬件中 Rijndael都显示出其非常好的性能。Rijndael的对内存的需求非常低,也使它很适 合用于受限制的环境中。Rijndael的操作简单,并可抵御强大和实时的攻击。 综合比较各种对称密钥加密算法,决定首选AES作为加密文件系统CipherFS的 文件数据加密算法。

山东大学硕士学位论文

3.1.2公钥密码算法的比较与选取 公钥密码算法主要有RSA算法,椭圆曲线密码算法等,下面分别加以论述。 ●RSA算法 RSA算法以它的三个发明者Rivest、Shamir和Adleman的名字命名。它的安全性 基于这样一个事实:寻找大素数是相对容易的,分解两个大素数的积是计算上不可行 的。 RSA算法的描述如下: 设n=p*q,其中P和q是素数。设P=E=Zn,定义: K={(n,P,q,a,b):abel(modO(n))} 对于K=(n,P,q,a,b),定义加密算法: Ek(x)=xbmod 和解密算法: Dk(y)=yamod




(x,yE Zn)。值n和b组成了公钥,P,q和a组成了私钥。 RSA算法的安全性主要依赖于大素数乘积因子分解的困难性,即分解n为P和q 的难度。尽管因子分解具有大素数因子的数仍然是一个困难的问题,但已不像以前那 么困难了。1977年,RSA的三位发明者让杂志“ScientificAmerican’’的读者对他们 发表在Martin Gardner上“数学游戏”专栏中的密文进行解密,解得明文则可以获 得i00美元奖金。他们预言需要4×1016年才能解得明文,但是,一个研究小组利用 因特网只用了8个月的时间,于1994年4月解决了这个问题。这里所使用的公钥大 小为428位。


.计算能力的不断增强和因子分解算法的不断改进,给大密钥的使用造成了威胁。 更换一种算法往往可以使速度显著增加。因此,在选取RSA密钥大小时应当谨慎小心。 在最近一段时间里,密钥大小取在1024到2048位是合适的。


除了要指定n的大小外,研究者还提出了其他一些限制条件。为了防止可以很容
易地分解rl,RSA算法的发明者建议P和q还应当满足下列限制条件: 1)P和q的长度应仅相差几位; 2)(p一1)和(q一1)都应有一个大的素因子; 3)gcd(p一1,q-1)应较,J、; 另外,已经证明,若e<n且d<nl/4,则d很容易被确定。
32

山东大学硕士学位论文

●椭圆曲线密码(ECC)算法 椭圆曲线密码算法嵋¨哑1基于E1Gamal密码体制,其依据是某些循环群上求解离散 对数的网难性。 椭圆曲线密码算法采用变元和系数均为有限域中元素的椭圆曲线。密码应用中所 使用的两类椭圆曲线是定义在Zp上的素曲线和在GF(2m)上构造的二元曲线。FERN99 指出,由于不需要二元曲线所要求的位混淆(bit—fiddling)运算,对软件应用最好 使用素曲线;而对硬件实现最好使用二元曲线,它可以用异常少的门电路来得到快速 且功能强大的密码体制。 椭圆曲线密码算法中使用的密钥比RSA中使用的密钥要短得多,而且在密钥长度 相同时,椭圆曲线密码算法和RSA所执行的计算量也差不多。因此,与具有同等安全 性的RSA相比,由于椭圆曲线密码算法使用的密钥更短,所以椭圆曲线密码算法所需 的计算量比RSA少。这个特性使得椭圆曲线密码算法更适合于资源受限的计算环境, 如智能卡,手机,PDA。由于这些设备的计算资源如处理器内存相当有限,使用椭圆 曲线密码算法能在保证安全性的基础上取得性能上的优势。 由于加密文件系统CipherFS中会使用智能卡,因此优先选取椭圆曲线算法作为 公钥加密算法。其它公钥加密算法也可以通过统一接口加入系统中。

3.2密码算法接口的实现


对称密码算法接U的实现

为了给不同的文件数据加密算法提供统一的调用方式,加密文件系统CipherFS 需要实现一个对称密码算法的接口。这个接口向上对使用者提供一个密码算法无关的 调用界面,向下对各种具体的密码算法进行适配,如图3-1所示。

埘季6;_孵矗吩锭竣健撕释

缝。的纠稼辩女哆镎波掖lj

鹚3.1
Figure 3—1

统一的时称密码算法接口
of Symm e乜ic

Th*Oaifom Iz如ffac e

C髀忉群ap虹c A190dnlm
33

山东大学硕士学位论文

由于Linux内核采用C语言,因此可以用结构体来实现这种接口。这里使用两个 结构体,第一个结构体symmetric—alg描述对称密码算法的各个属性,如类型、密钥 长度等。第二个结构体symmetric—impl—engine为具体的密码算法引擎提供一个接口, 包括加密、解密等操作。 系统中存在一个结构体symmetrie_impl_engine的实例组成的链表,每个实例代表 一个已经在系统中注册过的对称密码算法的实现,可以是软件实现,也可以是硬件实 现,可以是系统初始化时静态注册的,也可以是在需要时动态注册的,例如通过USB

接口插入一个加密卡,然后动态注册。
?消息摘要算法和HMAC算法接口的实现 同样,消息摘要算法接口也采用类似的两个结构体msgdigest_alg和结构体
msgdigest_impl_engine.

HMAC算法接El的第一个结构体是hmac_alg,和hmac_impl_engine结构体
?

公钥密码算法接口的实现

公钥密码算法的接口也是定义为结构体pubkey_alg,pubkey_impl_engine结构体。

3.3文件和加密元数据的格式
3.3.1主要考虑点 和普通文件系统中的文件相比,加密文件系统中的文件数据以密文形式保存,而 且还需要保存加密元数据。因此,实现加密文件系统中的文件的格式时,需要考虑数 据的保密性,完整性,访问控制信息的存放,以及系统的效率。 数据的保密性要求文件数据以密文形式存放,这点是最基本的要求,而且实现难 度不大,经过加密文件系统处理后,写到磁盘上的文件数据都是密文形式。 数据的完整性要求对文件数据计算HMAC值,并把HMAC值存放在加密元数据 中。 访问控制信息属于加密元数据,采用ACL实现,需要具体考虑ACL的存放方式。 系统的效率首先要考虑文件数据读写的效率。文件的读写一般以页为单位(多数 平台下页的大小为4096字节),因此要考虑数据的边界对齐问题。由于文件数据加密 后,长度可能发生变化,所以要考虑这种变化给读写效率带来的影响。 其次,数据完整性对系统效率也有很大影响。数据完整性要求对文件数据计算和

山东大学硕士学位论文

验证HMAC,因此要保证能够实现快速的HMAC计算和验证。 3.3.2格式 基于以上考虑,加密文件系统CipherFS采用了如图3-2所示的文件和加密元数据 格式。
文件格式

麓l稀元数据挤式 鬻静{ID



ACL

l完暌中}侏妒协瘩l泌娜餐私IHMAC



lIIMAC



l…

阻MAC



uid

l RW杯。基l礴之彤J℃的FKEY.IV、IKEY

蜀3?2
Fi异瞰e 3-2

走静和加密无教箍格式 md Enct唧tion Meta
D ata

The F arm ofFiles

文件格式和普通文件格式相似,不同之处在于引入了段的概念。这里的段只是为 了提高加密、完整性保护的效率而设定的一个虚拟概念,即加密和完整性保护以段为 单位进行,段之间不相互干涉。这样,在加密解密文件数据,以及对文件数据计算 HMAC或验证HMAC时,可以以段为单位进行,而不用在整个文件上进行操作。如

果文件很大,这种段的划分对提高性能尤其重要。
为了和文件读写单位相匹配,这里设定段的大小为页面大小。本文后面的叙述中, 页和段等价,不相互区分。

3.3.3存放方式
加密元数据存放在一个单独的文件中这种存放方式如图3.2所示,加密元数据不 和文件数据混合存放,而是存放在文件名为ino.meta的单独文件中。这里ino是文件 的inode号,这样,就能把每个文件和它对应的加密元数据对应起来。由于文件数据 中没有掺杂加密元数据,因此,文件读写时,用户进程提供的偏移量无需进行转化。 而且,如果加密没有使文件长度发生变化,那么文件数据的对齐方式也不发生变化, 明文的第i页数据和密文的第i n页数据位置相同。这样,文件数据读写的效率将不会 受边界对齐的影响。

山东大学硕士学位论文

3.3.4加密方式 可见,为了保持这种边界对齐,最好选择一种不会使密文数据长度相对于明文数 据长度发生变化的加密方式。 CipherFS的文件数据加密方式: CipherFS中文件数据划分为以页大小为单位的段,段内数据采用CFB模式进行 加密,段与段之间在加密上相互独立,即一个段的加密结果不对另一个段产生影响。 而且每个段加密后的密文长度和明文长度相同。 段内数据加密之所以采用CFB模式,一方面是因为密文分组相互链接而安全性 较高,另一方面是因为和CBC模式相比,密文的长度不会相对于明文的长度发生变 化。这是因为文件数据最后一段的长度通常不是加密算法分组长度的整数倍,从而最 后一个明文分组的长度会比加密算法分组长度小,如果采用CBC模式,最后一个明 文分组在加密前会先和前一个密文分组相异或,然后再加密,这就造成最后一个密文 分组的长度是加密算法分组长度,而比实际明文长度大。这样,在读取文件数据时, 要得到正确的结果,必须在另外的地方存储文件长度值,显得很麻烦。

例如,AES算法分组长度是128位(16字节),某文件最后一段的长度为1053
字节,那么加密时,最后一个分组只有(1053
mod 16)X

8=104位。采用CBC模式的

话,最后一个明文分组的104位数据在加密前要与倒数第二个密文分组的128位数据

相异或,得到128位的数据,然后再进行加密,得到128位的密文。这样,最后一个
段从1053字节的明文变为1056字节的密文,使得文件长度发生变化。 如果采用CFB,最后一个比加密算法分组长度小的明文分组只是与加密后的前一 个密文分组相异或,异或的结果只需取明文分组的长度即可,这样密文的长度和明文

的长度一样,文件长度不发生变化。以上面的情况为例,最后一个明文分组的104位
数据与倒数第二个密文分组加密后的128位数据相异或,取和明文分组相对应的104 位作为密文,这样,最后一个段的长度仍然是1053字节,文件长度保持不变。

3.4L i

nux虚拟文件系统和堆栈式文件系统开发平台

3.4.1.Linux虚拟文件系统 CipherFS的原型在Linux中实现。Linux文件系统最重要的部分就虚拟文件系统

山东大学硕士学位论文

[54卜[57],如2.4.3节所述,它向上为应用程序提供一个统一的系统调用界面,向 下与各种具体的文件系统相互衔接。CipherFS的原型将大量应用虚拟文件系统的思想 和技术。 3.4.2堆栈式文件系统开发平台
FiST(File System Translator)[44卜[46]是美国哥伦比亚大学教授E.Zadok

开发的一套文件系统开发工具,它可以帮助开发者完成堆栈式文件系统的开发。它提
供了一个用于简化文件系统开发的规范语言系统。它的实现也是基于堆栈式vnode接 口。整个系统包括三部分:语言规范、代码分析生成器fistgen和文件系统模板 Basefs。它提供了一个比其它文件系统抽象更高级的抽象描述。

图3.3 FiST的丁作流程
Figure 3-3 FiST

Working Flow

FiST抽象出不同的Unix操作系统(如Linux、FreeBSD、SunOS)的虚拟文件系 统的共同点,形成一个与平台无关的FiST语言,同时将与特定操作系统相关的底层 细节放在文件系统模板Basefs中。开发者只需要用FiST语言编写一个FiST输入文 件(.fist文件),代码分析生成器fistgen读取输入文件,并和某个操作系统指定版 本内核相匹配的Basefs模板结合,就能产生该版本操作系统下的一个新文件系统的C 源代码,如图3-3所示。 利用FiST开发堆栈式文件系统主要是编写一个FiST输入文件。整个过程为: 1)用FiST语言编写输入文件。 2)运行fistgen产生文件系统源代码。 3)在源文件目录将文件系统编译成一个可加载内核模块,并将其装入系统。 4)挂载新文件系统,调试,测试。

整个过程不需要特别熟悉内核代码,而且因为FiST输入文件跨平台,所以也不
需要为每个平台分别编写代码。
37

山东大学硕士学位论文 3.6

CipherFS主要操作的实现

用户进程对文件的操作主要有打开、关闭、读写、创建、删除、更改访问权限等。 这些操作通过系统调用来执行。系统调用会使用户进程转入内核态,执行虚拟文件系 统的代码,虚拟文件系统的代码会检查所访问的文件属于哪个具体文件系统(如Ext3、 CipherFS等),然后执行具体文件系统的相关代码。下面将论述这些操作在CipherFS 中是如何实现的。

3.6.1打开和关闭文件 CipherFS在打开文件时进行权限判断,检查用户是否具有访问该文件的权限。整
个过程如图3—4所示。

图3—4打开文件的过程
Figure 3-4 The Process of Opening


Filel

首先,CipherFS根据文件的inode号在加密元数据缓存的哈希表中查找相应的
cipher_meta结构体。如果找到,则进行步骤2);否则要从磁盘上读入加密元数据, 然后使用文件主的公钥来验证加密元数据头部签名,检查加密元数据是否遭到非法篡

山东大学硕士学位论文

改,如果遭到非法篡改,则返回失败。 2)根据进程的uid在ACL中查找对应的权限,如果没找到,则说明该uid对应 的用户不是这个文件的共享用户,拒绝访问。如果找到,则比较open系统调用所要 求的权限与ACL中指定的权限是否匹配,如果匹配则进行下一步,否则拒绝访问。 3)如果加密元数据是从磁盘新读入的,就用自己的公钥解密文件加密密钥、初 始向量和HMAC密钥,并构建cipher_meta结构体,插入加密元数据缓存;否则 cipher_meta结构体已经在加密元数据缓存中。这时,把该文件的inode结构体的 u.generic—ip字段指向此cipher_meta结构体,然后返回成功。 与打开文件相比,关闭文件要相对简单一些,只需把文件的inode结构体中的

U.generic—ip置为NULL即可,而cipher_meta结构体仍然保留在加密元数据缓存中。
3.6.2读写文件 读写是对文件最重要的操作,由于磁盘上的文件数据是以密文形式存放的,所以 CipherFS在读文件时对文件数据进行解密,写文件时对文件数据进行加密。
读文件

图3-5读文件的过程
Figure 3-5 The Process ofReading a File

39

山东大学硕士学位论文

整个过程如图3-5所示。 1)首先根据文件偏移量和要读取的数据量计算要读取的数据页,检查这些数据 页是否已经位于内存中的页高速缓存(page cache,Linux为提高文件i/o性能而设

置的缓存,以页为单位缓存文件数据),如果是,则进行步骤3),否则要从磁盘读入
数据页。 2)从磁盘读入数据页后,用HMAC密钥逐个验证所读数据页的完整性,如果完整 性遭到破坏,则返回失败;否则用文件加密密钥解密数据页,然后把解密的数据放入 页高速缓存。 3)把明文数据返回用户空间。如果还有未读取的数据,则再重复以上步骤。 写文件

writt乐绶谰弼

聩粥,?申阏彀圾数嘏

撤嫒触祥敏粼

究镌住缳护 楚番拜麝

楚 ii骆HMAC。钯i{辫鲧聚1;^ 绷梆尤教{1.;鸳俘

把期I崭聪旧敬懿义纷繇燃骝动

邀¨}成功

图3—6写文1,f的过程
Figure 3-6 The Process of

Writing



File

整个过程如图3-6所示。 1)从用户空间获取要写的数据,然后按数据页逐个用文件加密密钥进行加密, 得到密文数据页。


2)检查完整性保护是否开启,如果未开启则直接进行步骤3);否则用HMAC密钥

山东大学硕士学位论文

对密文数据页计算胁C,并把计算好的HMAC写入这个文件的加密元数据文件。
3)把加密后的数据交给磁盘驱动,磁盘驱动能够自动把这些数据写到磁盘上, 所以不需要文件系统干涉了。最后返回成功。 3.6.3创建和删除文件 用户进程调用creat函数或带O CREAT标志的open系统调用来创建新文件, CipherFS对创建文件的实现过程如图3-7所示。

Ecr司ea炳


隧极尘残FKEY.IV舅IIKEY'

粥文竹?J:袋例qFKgY,Ⅳ和

IK盯绷拼

内这翩擀,‘教嫩受端。莽镐职l

图3—7创建文件
Figure 3-7 Creating


File

主要步骤为: 1)首先随机生成文件加密密钥FKEY、初始向量IV和HMAC密钥IKEY。这可以使 用Linux内核的get—random_bytes 0函数来实现。这个函数根据系统中的设备产生的 随机事件来产生真正的随机数,而非伪随机数,所以安全性较高。 2)用文件主(创建文件的用户)的公钥加密文件加密密钥FKEY、初始向量IV 和HMAC密钥IKEY。 3)设置访问控制列表ACL,密码ID和完整性保护标志,并用文件主的私钥对这 些数据进行签名。然后把结果写到加密元数据文件中,文件命名为ino.meta,其中 ino表示所创建的文件的inode号。 4)用系统管理员公钥对文件加密元数据头部进行加密,并备份在一个只有系统 管理员能访问的地方。 文件只能由文件主删除。删除文件的同时要删除对应的加密元数据和备份信息。 删除备份信息时,发消息给系统管理员,由系统管理员来删除。
4l

山东大学硕士学位论文

3.7加密文件系统CipherFS的管理

3.7.1用户的登录与注销 系统管理员和普通用户都需要在登录后才能使用CipherFS。这里的登录并非登录 操作系统,而是登录CipherFS,登录CipherFS和登录操作系统是两个独立的登录过 程。登录方式设计为智能卡认证方式,但由于条件所限,目前CipherFS的原型暂不

使用智能卡,每个用户的私钥存放在各自的一个私钥文件中。用户登录时,需要使用
这个私钥文件,CipherFS读取这个私钥文件并从user结构体哈希表中找到该用户对 应的user结构体,进而得到该用户的公钥,然后验证公钥和私钥是否匹配,如果匹 配则表示该用户是合法用户,允许登录,否则拒绝。用户登录成功后,设置对应的user 结构体中的islogin字段为正数,并设置私钥字段为该用户的私钥。 以后用户进行任何CipherFS操作时,CipherFS都会检查该用户的user结构体中 的islogin字段是否为正数,如果是则表示该用户已登录,允许操作,否则拒绝。用 户注销时,CipherFS把该用户对应的user结构体中的私钥字段置为NULL,并把 islogin字段置为0。 3.7.2加密文件系统CipherFS的安装与卸载 CipherFS最终被编译成一个内核模块(kernel module),在需要的时候通过 insmod命令动态加载到内核中,而非在系统启动时就加载。这给CipherFS的使用带 来了方便和灵活,不使用CipherFS时就不必加载CipherFS的代码,而要使用时再动 态加载。动态加载采用命令:
insmod CipherFS.ko

其中CipherFS.ko是CipherFS对应的内核模块。 加载了这个内核模块后,安装CipherFS就和安装其它文件系统一样,采用mount 命令,形式如下:
mount—t CipherFS一0

dir=/dev/hda6/dev/hda6/mnt/CipherFS表示把文件系统类

型为CipherFS的设备/dev/hda6安装在目录/mnt/CipherFS下。 安装了CipherFS后,并不能立即使用它,还需要进行一些初始化工作。首先

CipherFS的系统管理员登录,然后运行初始化程序。初始化程序完成的工作主要有:
1)对CipherFS中每个用户,构建对应的user结构体哈希表,用公钥文件中的



42

山东大学硕士学位论文

公钥来设置user结构体中的公钥字段。 2)初始化默认的加密引擎。默认的加密引擎参数在存放在一个配置文件中,初 始化程序读取这个文件来建立默认的加密引擎。CipherFS中默认的对称加密算法为 AES,公钥加密算法为ECC,消息摘要算法为SHA-I。 完成初始化工作后,用户就可以登录使用CipherFS了。 当没有用户使用CipherFS时,系统管理员就可以卸载它。卸载采用umount命令, 例如:
Umount/mnt/CipherFS

卸载CipherFS后,就可以将它的内核模块从内核中动态移除,采用rmmod命令:
rmmod CipherFS

43

山东大学硕士学位论文

第四章加密文件系统C i pherFS的性能测试

4.1性能测试

保持较高性能是CipherFS的设计原则之一。这里对CipherFS的文件读写性能进 行测试,测试环境为:Intel
7200rpm Celeron

2.53GHz处理器,512M DDR400内存,Segate

ATA硬盘,Linux 2.6.12内核。测试中把Ext3文件系统和基于Ext3的

CipherFS对比,方式如下: 1)同步写三次。每次8个8MB的文件,在每次写后都用fsync进行同步,使内 存中缓存的数据同步到磁盘。 2)带缓存读三次。每次8个8MB的文件,第一次从磁盘读,后两次可能从内存 中的缓存读。 嘲步乍;擞作(£sync) 辨通Ext3交件系统 第1次
第2次 第3次 基r Ext3的CipherFS (完糗忭保护术歼扁) 第1次
4.340 3.900 3.749 1.807 0.042 D.04I 2.71 6 2.586 2.587 口.1 32 0.036 0.036

带缓存的i雯撵作

第2次 第3次
基r Ext3的CipherFS

(完接忭保护歼雇)
第1次 第2次 第3次
.,

5.081 4.557 4.545

1.831 0.口53 0.051

表4.1性能测试:8"8M文件读写(单位:秒)
Table 4-1 Performance Testing:Reading/Writing

8"8M Files(unity:s)

测试结果如表4.1所示,由测试结果可以得出以下几点: 1)同步写操作中,由于每次都要把内存中缓存的数据同步到磁盘,从而每次都

山东大学硕士学位论文

要进行磁盘写操作(较慢),所以性能都受写磁盘的影响,相同文件系统的3次测试 结果相差不大,例如Ext3文件系统中,后两次和第一次的结果很接近。 2)同步写操作中,基于Ext3的CipherFS比普通的Ext3要慢,这显然是受到了 文件数据加密操作带来的影响。由于CipherFS原型中采用AES算法的软件实现,在 常规CPU中效率不是太高,所以对性能影响比较大。 3)同步写操作中,基于Ext3的CipherFS的后两次操作速度接近,明显比第一次 要快。这是因为第一次操作时要从磁盘读取加密元数据头部,并验证加密元数据头部

以及解密文件加密密钥,初始向量和HMAC密钥(如果完整性保护开启),这将进行
两次公钥运算,所以对性能影响较大。 而后两次操作由于加密元数据头部已经解密并缓存在内存中,不用再从磁盘读取 并进行公钥运算,所以没有这些操作带来的开销。 4)同步写操作中,两个基于Ext3的CipherFS相比,开启完整性保护的要慢些。 这是因为开肩完整性保护后,要计算文件数据的HMAC,而且还要把这些HMAC值 同步到磁盘,从而多进行了额外的磁盘写操作。 5)带缓存的读操作中,各个文件系统都只有第一次是完全从磁盘读取数据,而 后两次会直接从内存取得第一次已经缓存的数据,因此后两次的速度比第一次的速度 明显快很多。 6)带缓存的读操作中,基于Ext3的CipherFS比普通的Ext3要慢,尤其是第一

次读操作。这是因为第一次读操作,CipherFS要从磁盘读取加密元数据头部,并验证
加密元数据头部以及解密文件加密密钥,初始向量和HMAC密钥(如果完整性保护

开启),这将进行两次公钥运算,然后还要进行文件数据的解密,因此性能受到较大
影响。 而后两次读操作时,加密元数据头部已经在内存中缓存,不用再进行公钥运算, 而且大部分解密的文件数据已经缓存在内存,不用再次解密和验证完整性(如果完整 性保护开启),所以三种文件系统的速度相差不大。 7)带缓存的读操作中,两个基于Ext3的CipherFS相比,开启完整性保护的要慢 些。这是因为开肩完整性保护后,要计算文件数据的HMAC,并且与加密元数据中保 存的HMAC对比。第一次读操作,这些HMAC在磁盘上,而后两次已经在内存中缓 存,因此,后两次的速度差别比第一次小。

45

山东大学硕士学位论文

4.2性能改进策略
由以上分析可以得出,CipherFS的性能主要受密码运算和额外磁盘读写的影响。 因此,要提高CipherFS的性能,就要从提高密码算法的速度和减少额外磁盘读写次 数着手。 CipherFS原型中,密码算法采用软件实现,而普通的CPU对这些运算并没有特别 的优化,因此速度较慢。在实际应用中,可以把密码算法改为硬件实现嘲吖删。这将大 大提高CipherFS的性能。 额外的磁盘读写主要是读写加密元数据,包括头部字段和文件数据的HMAC值。 其中写操作所受的影响尤为严重,因为每次都要把算得的HMAC值同步到磁盘,这是 合理的设计,不能改变。而读操作会缓存从磁盘读取的HMAC值,因此所受影响较小。 第一次访问某个文件时,会把这个文件的加密元数据头部读入内存,然后进行验 证和解密,并进行缓存,这步操作无法避免。而后再次访问这个文件时,可以从缓存 查找对应的加密元数据头部,如果找到,则不用再从磁盘读取以及验证和解密。因此, 加密元数据缓存对性能的提高也有重要作用。CipherFS原型中,这个缓存采用哈希表 +LRU链表的形式来实现,这个策略基于文件访问的时间和空间局部性,即最近访问 过的文件在不久的将来很可能再次被访问。而实际应用中,这种局部性可能并不存在, 因此可以根据实际情况来调整缓存策略,以提高加密元数据头部缓存的命中率,从而

提高性能。这些策略可以参考文献摊妇吖蚓。

山东大学硕士学位论文

第五章总结

本文论述了一个堆栈式加密文件系统CipherFS的设计和基本实现。在课题研究
中,借鉴了前人在相关领域的工作,分析了加密文件系统的产生缘由,对已有的加密

文件系统进行了分析。在研究了Linux文件系统和堆栈式文件系统的基础上,完成了 CipherFS的设计,最后对性能进行了测试,并提出了提高性能的策略。’
CipherFS的主要优点有:

1)文件数据的保密性和完整性。用可靠的对称密码算法(如AES)对文件数据加 密,只有拥有密钥才能得到文件的明文数据。用HMAC对文件数据的完整性进行保护,


如果文件数据遭到非法篡改,则可以通过HMAC进行验证。 2)公钥密码体制的引入。采用公钥对文件加密密钥、初始向量、HMAC进行加密 保护,并用文件主的私钥对加密元数据头部进行签名。

3)较细的加密和访问控制粒度。每个文件有各自不同的加密密钥、初始向量和
HMAC密钥,因此只有拥有这些密钥和初始向量的用户才能访问这个文件。除了Linux

访问控制机制,文件的访问控制还采用访问控制列表来实现自主访问控制,每个文件
都有对应的访问控制列表,对该文件的用户进行了权限设定。

4)易用性。主要模块在内核实现,用户进程感觉不到加密解密的存在,仍然使 用传统的系统调用接口来访问文件。用户只需在登录时进行身份验证,然后就能像普
通文件系统一样使用CipherFS。 5)较好的灵活性、可扩展性和可移植性。CipherFS的主要部分实现为一个内核

模块,对现有的Linux内核源代码不进行任何修改。而且,CipherFS的模块化和插件 接口设计使得功能扩展和升级较为容易。另外,CipherFS实现时借助了堆栈式文件系
统开发平台FiST,由于这个平台对各个Unix操作系统进行了抽象,使得CipherFS 的源代码只需经过少量修改,就能移植到其它Unix操作系统。

6)下一步可以实现基于智能卡的身份认证,CipherFS的原型采用私钥文件代替
智能卡,在将来的工作中,一旦条件具备,就实现基于智能卡的身份认证机制,以达 到高度的安全性。

47

山东大学硕士学位论文

参考文献

【1]Steve lipner.Twenty

Year of Evaluation Criteria and Commercial Technology.
on

Proceedings of the 1 999 IEEE Symposium

Security and Privacy,Oakland,California,

May 1999

【2】石文昌.安全操作系统研究的发展(上).计算机科学,2002,V01.29(6)5.12
【3]CSC-STD一001—83,Department
of Defense Standard,Department of Defense Trusted

Computer System Evaluation Criteria.DoD Computer Security Center,Aug 1 983

[4]DoD

5200.28-STD,Department of Defense Standard.Department of Defense Trusted

Computer System Evaluation Criteria.National Computer Security Center,Ft.Meade,

MD,USA,Dec 【5]United

1985

Kingdom Department for Trade and Industry.Security Functionality Manual,

DRAFT Report,v2 1 version 3.0.Feb 1 989

【6]United

King Department for Tread and Industry.Evaluation Levels

Manual,DRAFT

Report,v22 version 3.0.Feb 1 989

【7]United

King Department for Tread and Industry.Evaluation and Certification Manual,

DRAFT Report,v23 version 3.0.Feb 1 989

【8]France,Germany,the
Security Evaluation

Netherlands,the

United

Kingdom.Information

Technology

Criteria,Version

1.2.Office for official Publications of the

European Communities,Jun 1 99 1

【9]Federal Criteria Project.Federal

Criteria for

Information Technology

Security,Volume l,

Protection Profiles Development,Version

1.0.National Institute of Standards and

Technology 【10]Federal

and National Security Agency,Dec 1 992

Criteria

aroject.Federal

Criteria for

Information

Technology Security,Volume

II,Registry of Protection Profiles,Version 1.0.National Institute of Standards and

Technology 【11】Joint

and National Security Agency'Dec 1 992

Technical Committee 1.Evaluation Criteria for IT Security—Part l:introduction

and General Model.ISO/IEC

15408-1:1999(E),The International

Oraganization for

Standardization and the International Electrotechnical Commission,.1 999

【12]GJB2646-96,中华人民共和国国家军用标准。军用计算机安全评估准则。中国国

山东大学硕士学位论文

防科学技术工业委员会,1996年6月4日发布,1996年12月1日实施 【13]GBl7859.1999,中华人民共和国国家标准。计算机信息系统安全保护等级划分准

则。中国国家质量技术监督局,1999年9月13日发布,2001年1月1日实施
【14]GB/T 18336.1.2001,中华人民共和国推荐标准。信息技术一安全技术一信息技术 安全性评估准则一第一部分:简介和一般模型,中国国家质量技术监督局,2001 年3月8日发布,2001年12月1日实施 【1 5]GB/T
1 8336.2-200 1,中华人民共和国推荐标准。信息技术一安全技术一信息技术

安全性评估准则一第二部分:安全功能要求。中国国家质量技术监督局,2001年3
月8日发布,2001年12月1日实施 【16]GB/T 18336.3.2001,中华人民共和国推荐标准。信息技术一安全技术一信息技术 安全性评估准则一第三部分:安全保证要求。中国国家质量技术监督局,2001年3 月8日发布,2001年12月1日实施 【1 7]M.Blaze,A
Cryptographic File System for Unix,In Proceedings of the First

ACM

Conference onComputer and Communication Security,NY USA,NOV.1993,9-16

【18]http://sourceforge.neffprojects/cfsnfs,CFS官方网站 【19]E.Zadok,I.Badulescu
and

A.Shender'C唧tfs:A

Stackable Vnode Level Ecnryption File

System,Technical Report CUCS?02 1—98,1 998

【20]Ermelindo Mauriello,TCFS:Transparent
Journal,1 997,1 997(40es)

Cryptographic File System,Linux

【2 1]GCattaneo,L.Cmuogno,A.Del

Sorbo,etc.,The

Design

and

Implementation

of



TransparentCryptographic Filesystem for UNIX,In Proceedings of the Annual USENIX Technical Conference,FREENIX Track,June 200 1,245—252

【22]Microsoft Technet,Protecting Data

by Using EFS to Encrypt Hard Drives,

http://www.microsofl.com/technet/security/smallbusiness/topics/cryptographyetc/prote

ct_dataefs.mspx
【23]William Stallings著,刘玉珍等译,密码编码学与网络安全——原理与实践(第三 版),北京,电子工业出版社,2004,38—7l,103—123,148一166,188--204,
2 l 8.227,23 l--253,284--295

[24]Douglas R.Stinson著,冯登国译,密码学原理与实践(第二版),北京,电子工业 出版社,2003,78—91,97一117,141—142,193--200,210--220,233--246 [25]M.Blaze,"Key Management
in
an

Encrypting File System",In

Proceedings of the

49

山东大学硕士学位论文
Summer l 994USENIX Conference,1 994

【26]D.Mazieres,M.Kaminsky,M.kasshoek,etc."Separating

Key

Management

from

File

SystemSecurity",ACM SIGOPS Operating Systems Review,Apr.2000,34(2),1 9—20

[27]CUI

Jing—Song,Peng

Rong,Wang

Li-Na,The optimized key distribution scheme in international conference
on

thresholdRSA,In

Proceedings of the 3rd

Information

security,NY USA,Nov.上海交通大学硕士学位论文682004,1 8.2 1

【28]Tatsuaki

Okamoto,Threshold Key-Recovery Systems for RSA,In Proceedings of the

5thInternational

Workshop

on

Security Protocols,London UK,Apr.1 997,1 9 1-200 Authentication Modules for Linux:An implementation of

【29]Andrew G.Morgan,Pluggable

auser-authentication API,Linux Journal,1 997,1

997(44es)
Authentication and

【30]Henri

Gilbert,Techniques

for
of

Low

Cost

Message
Card

Authentication,InProceedings

the

The

International

Conference

Smart

Research and Applications,LondonUK,Sep.1998,183—192

【3 1]Michel

Abdalla,Emmanuel Bresson,Olivier Chevassut,
secure

etc.,Provably

password-basedauthentication in TLS,In Proceedings of the 2006
on

ACM

Symposium

Information,computerand

communications

security,NY

USA,Mar.2006,35-45

【32]Timothy

M.O’Shea,Mike

Lee,Biometric

authentication

management,Network

Computing,Dec.1 999,1 0(26),44_47

【33]Ya-Fen

Chang,Chin-Chen Chang,A

secure

and efficient strong-password authentication

protocol,ACM 【34]Willem Gde

SIGOPS Operating Systems Ru,Jan H.REIoff,Enhanced

Review,Jul.2004,38(3),79—90
Password Authentication through Fuzzy

Logic,IEEE Expert:Intelligent Systems and Their Applications,Nov.1997,12(6),38-45

【35]Lanjun

Dang,Weidong
SmartCard
on

Kou,Yuxia

Xiao,An

Improved of

Scheme

for

Unilateral

Asymmetric Conference

Authentication,In

Proceedings Networking

the
and

1 9th

International

Advancedlnformation

Applications.NW

Washington,DC USA,Mar.2005,265—268 【36]Chin—Chen
Chang,Jung—San Lee,A Smart-Card—Based Remote
on

Authentication

Scheme,lnProceedings of the Second International Conference and

Embedded Software

Systems,NWWashington,DC

USA,Dec.2005,445-449

【37李立新,陈伟民,黄尚廉,强制访问控制在基于角色的安全系统中的实现,软件 学报,2000年,lO期 【38]Krzysztof
Juszczyszyn,Verifying Enterprise’S Mandatory Access Control Policies with

山东大学硕士学位论文
ColouredPetri Nets,In Proceedings of the Twelfth International Technologies,Jun.2003

Workshop

on

Enabling

【39]Eike Born,Helmut

Stiegler,Discretionary

access

control by means of usage

conditions,Computers and Security,Jul.1 994,1 3(5),437-1 50

【40]Jonathan MolTeR,Morris
Specifying discretionary

Sioman,evin Twidle,
access

control policy

for上海交通大学硕士学位论文

69distributed systems,Computer

Communications,Nov.1991,13(9),571-580

【41]W.Richard Stevens著,尤晋元等译,Unix环境高级编程,机械工业出版社,北京,
2000,54—60

【42]Sherman S.M.Chow,Lucas C.K.Hui,S.M.Yiu,etc.,A

generic anti—spyware solution by

accesscontrol list at kernel level,Journal of Systems and Software,

Feb.2005,75(1—2),227?234 【43]D.Mazi6res,A Toolkit for User-Level
File Systems,In Proceedings ofthe Annual

USENIXTechnical Conference,Boston

MA USA,June

200 1,26 1-274

【44]M.Szeredi,FUSE:Filesystem
http://fuse.sourceforge.net

in Userspace,

[45]Erez

Zadok,Rakesh lyer,Nikolai Joukov,etc.,On Incremental File System
on

Development,ACMTransactions 【46]E.Zadok,I.Badulescu,A

Storage,May 2006,2(2),1 6 1-1 96

stackable file system interface for Linux,In LinuxExpo

ConferenceProceedings,Raleigh

NC,May

1 999,1 4 1-1 5 l

【47]J.S.Heidemann

and G.J.Popek,File system development with stackable
on

layers,ACMTransactions

Computer Systems,February 1 994,1 2(1),5 8-89

【48]涂文杰,可堆叠安全文件系统SecNFS研究与实现,[学位论文],上海,上海交 通大学,2005 [491D.Coppersmith,D.B.Johnson,S.M.Matyas,A
proposed mode for triple-DES

encryption,IBMJournal of Research and Development,Mar.1 996,40(2),253-262

【50]Advanced Encryption Standard(AES)(FIPS l 97),
http://csrc.nist.gov/publications/fips/fips 1 97/tips?1 97.pdf

[5 1]Cilardo,A.,Coppolino,L.,Mazzocca,N.,etc.,Elliptic
engineering,Proceedings of the

curve

cryptography

IEEE,Feb.2006,94(2),395-406
curve

【52]Lauter,K.,The advantages

of elliptic

cryptography for wireless security,IEEE

PersonalCommunications,Feb

2004,11(1),62?67

【53]钟润丰,堆栈式加密文件系统的设计与实现,[学位论文】,上海,上海交通大学,2007
5l

山东大学硕士学位论文

【54]Alessandro Rubini,Kernel 【55]Roman

Korner:The”Virtual File SyStem”in Linux,1 997,37es,2 1-30

Stangel,A prototype implementation ofa virtual file ofNevada,Reno,NV USA,1 998

system,[Dissertation],University 【56]Daniel EBovet,Marco

Cesati,Understanding the Linux Kernel,3rd Edition,Sebastopol,

CA,US,O’Reilly,2005,500-800

【57]Robert Love著,Linux内核设计与实现,北京,机械工业出版社,2004,151—205 【58]M.Ernst,B.Henhapl,S.Klupsch,S.Huss,FPGA
based hardware acceleration for elliptic

curvepublic key cryptosystems,Joumal of Systems and Software,+

Mar.2004,70(3),299—3 1 3 [59]Akashi Satoh,Kohj i
Takano,A
on

Scalable

Dual-Field

Elliptic Curve

Cryptographic

Processor,IEEETransactions

Computers,Apr.2003,52(4),449-460
on

【60]Alireza Hodjat,Ingrid

Verbauwhede,A 2 1.54 Gbits/s Fully Pipelined AES Processor IEEE Symposium
on

FPGA,InProceedings of the 1 2th Annual Cuaom ComputingMachines,NW

Field—Programmable

Washington,DC
of cache
on

USA,2004,308—309 coherence in stackable filing,In

[6 1]J.S.Heidemann,G.J.Popek,Performance
Proceedingsof the Fifteenth ACM

Symposium

Operating Systems Principles,Copper

Mountain Resort,CO,Dec.1 995,3-6

【62]Elizabeth

J.O.Neil,Patrick E.0tNeil,Gerhard

Weikum, buffering,ACM SIGMOD

The LRU—K page replacement algorithmfor database disk Record,Jun.1 993,22(2),297-306

【63]Gideon

Glass,Pei

Cao,Adaptive

page

replacement

based

on

memo巧reference

behavior,ACMSlGMETⅪCS f64]Advanced
Page Replacement,

Performance

Evaluation Review,Jun.1 997,25(1),l 1 5—1 26

http://linux-mm.org/AdvancedPageReplacement

【65]A1i

R.Butt,Chris Gniady,Y.Charlie Hu,The performance impact of kernel prefetching

on

buffercache replacement

algorithms,ACM SIGMETRICS

Performance

Evaluation

Review,Jun.2005,33(1),157-168

52

山东大学硕士学位论文





在论文完成之际,谨向在攻读硕士学位期间所有指导我、帮助我、关心我的老师、 同学以及家人表示最诚挚的感谢。两年半的求学里程让我成长了许多,无论从学习、

研究、生活还是其他的方方面面都取得巨大的进步,这一切都离不开各位老师、同学、
以及家人的支持与帮助。在此向他们表示深情的谢意。首先,我要感谢我的导师王明

强和王美琴老师。王老师学识渊博、思维敏捷、治学态度严谨。虽然工作繁忙,却从
不忘在百忙之中抽出时间来指导和帮助我。在学习和课题研究中我都得到了王老师的 极大支持与帮助,为我今后的工作打下了良好的基础。同时,我要感谢我的师兄,我

的毕业论文课题是在他的研究基础上进一步完成的。感谢他已有的研究工作,并提供 了大量的参考资料和研究心得。最后,感谢我的家人,给予了我默默的支持。

53


赞助商链接
相关文章:
Linux之加密文件系统
device-mapper 是设计用来为在实际的块设备之上添加虚拟层提供一种通用灵活的...构建linux之最小系统 10页 免费 基于linux加密文件系统的... 51页 1下载券...
基于Linux下载文件的功能设计与实现
基于Linux下载文件的功能设计与实现 - 信息工程学院 嵌入式系统设计课程设计报告 题学 目:号: 基于 Linux文件下载功能的设计与实现 学生姓名 : 专业名称 :班...
linux下基于内存的虚拟文件系统设计与实现_图文
linux基于内存的虚拟文件系统设计与实现 - 摘 要 近几年来,计算机的 CPU、内存和显卡等主要配件的性能都提 升得很快, 而与之相对应的磁盘系统性能正越来越...
基于linux的文件安全传输系统
为 保证Internet上数据的安全传输,加密传输得到越来越多的应用,本文介绍一种基 ...4、结论本文设计了一种基于 linux 系统的安全文件传输系统的实现原理。介绍了本...
Linux用vi给文件加密和解密
Linux用vi给文件加密和解密_计算机软件及应用_IT/计算机_专业资料。linux vi ...(注意是大写的 X),回车; 3) 这时系统提示让你输入密码,2 次,如下所示: ...
LINUX加密系统
系统介绍 Linux 文档透明加密系统是一款功能强大且易于使用的文档加密软件 产品,该系统采用“驱动级透明动态加解密技术”对指定类型的文件进行实时、 强制、透明的加...
linux中文件和文件夹的两种加密方式
linux文件和文件夹的两种加密方式_IT/计算机_专业...(未完待续) crypt 是个密码加密函数,它是基于 ...不适用于使用 shadow 或已经使用 pam 的系统(例如 ...
1 开发Linux系统下的磁盘加密方法详解
暂无评价|0人阅读|0次下载|举报文档1 开发Linux系统下的磁盘加密方法详解_计算机软件及应用_IT/计算机_专业资料。兄弟连IT教育开设的Linux培训课程认为:Linux就以开...
Linux系统下数据信息的加密和解密
目的是为了提供基于Linux平台的安全的数据加密解 密...毕业设计(论文) Linux 系统下数据信息的加密和解密 ...巴西执法机构指控金融犯 罪的巴西银行家的加密文件。...
Linux下的网络层加密解密的实现论文
Linux下的网络层加密解密的实现论文_工学_高等教育_...最后,通过测试验证了系统设计的 正确性。 关键字:...文档贡献者 高玉培 制图员 24645 3561205 3.7 文档...
更多相关标签: