为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 移动存储设备数据存储加密

移动存储设备数据存储加密

2017-10-26 28页 doc 667KB 38阅读

用户头像

is_841159

暂无简介

举报
移动存储设备数据存储加密移动存储设备数据存储加密 技术研究 I 目 录 目 录 ................................................................. 0 论文摘要 ................................................................. 1 一、 引言 ............................................................. 2 (一)、 课题背景 ...............
移动存储设备数据存储加密
移动存储设备数据存储加密 技术研究 I 目 录 目 录 ................................................................. 0 论文摘要 ................................................................. 1 一、 引言 ............................................................. 2 (一)、 课题背景 ....................................................................................... 2 )、 课题情况介绍 ................................................................................ 2 (二 二、 TRUECRYPT概述 ................................................... 3 (一)、 TrueCypt简介 .............................................................................. 3 (二)、 TrueCrypt的主要工作原理 ........................................................... 4 (三)、 TureCrypt内置的加密算法............................................................ 5 三、 基于TrueCrypt的磁盘加密模块实现 ................................. 6 (一)、 TrueCrypt开发环境构建 ............................................................... 6 (二)、 TrueCrypt源码 ...................................................................... 7 (三)、 Crypto模块分析和提取 ................................................................. 9 (四)、 面向数据存储的加密模块封装和实现 ........................................... 12 四、 WINDOWS平台下的移动存储介质访问模块实现 ........................ 14 (一)、 存储介质访问模块的设计与实现 .................................................. 14 五、 模块功能测试验证 ................................................ 18 (一)、 测试方案设计 .............................................................................. 18 (二)、 测试程序编写 .............................................................................. 18 (三)、 测试实施 ..................................................................................... 19 (四)、 测试结果分析 .............................................................................. 22 六、 参考文献 ........................................................ 22 0 论文摘要 随着全球信息化的发展和信息技术水平不断提高~涉密文档大量采用电子化手段存储、交换和管理。然而~涉密文档电子化应用和管理中存在突出的安全问题~尤其是在军事、商业、政府办公和外交等特殊环境下~如何在重要文档应用和交换中有效防止失泄密~成为信息化技术应用的解决的关键问题。现在通常采取的办法是将保存到移动存储盘上的数据实施加密~因为使用软件对移动存储盘进行数据加密~不仅可以保证信息的机密性~且可以保证信息的完整性和确定性~防止信息被篡改、伪造和假冒。尽管目前已有很多成熟的加密文件系统被广泛地应用~涉密文档都实施了不同程度的保护~但因为需要满足保护强度、性能、系统负载、易用性等多方面的问题~真正满足这些条件的加密系统却很少~TrueCrypt是一款具有的免费、开源、绿色、跨平台、便携性、多语言等特征的数据加密软件~为涉密文档的安全提供了一种高强度、高效率的保障方法。本课题的主要目的是从介绍TrueCrypt的使用方法和原理入手~编写和移植了数据存储加密软件,完成对移动存储设备储介质访问、数据存储加密等功能。 关键字:信息安全 TrueCrypt 数据加密 涉密信息 移动存储设备 数据存储 1 移动存储设备数据存储加密技术研究 一、 引言 (一)、 课题背景 课题随着全球信息化的发展和信息技术水平不断提高~涉密文档大量采用电子化手段存储、交换和管理。然而~涉密文档电子化应用和管理中存在突出的安全问题~尤其是在军事、商业、政府办公和外交等特殊环境下~如何在重要文档应用和交换中有效防止失泄密~成为信息化技术应用的解决的关键问题。保证涉密文档和敏感数据安全的关键是数据加密技术。目前~已经有很多加密文件系统被广泛地应用~对涉密文档都实施了不同程度的保护~然而~重要部门的信息安全~特别是机密文档的安全~需要满足保护强度、性能、系统负载、易用性等多方面的问题。因此~研究和使用满足高等级安全标准要求的文件加密系统是非常有意义~本课题详细介绍TrueCrypt加密文件系统的技术原理与实现的方案~该方案具有占用资源少、加密效率高、安全性能强和实时动态加载(卸载)加密卷等特点。本课题的主要目的是介绍典型数据存储加密软件TrueCrypt的技术原理和方案~编写和移植数据存储加密软件对移动存储设备进行存储管理、数据存储加密等功能。 (二)、 课题情况介绍 1、 “保密优盘”总体项目介绍 “保密优盘”项目旨在开发一套基于不同文件系统能跨平台运行的加密存储设备。包括了GUI用户图形界面~VFS虚拟文件系统和SGP文件系统以及加密引擎和磁盘管理模块。其整体结构如下图。本课题主要是为了实现“保密优盘”项目的最后一个模块即加密引擎和磁盘管理模块~如下图蓝色部分。 2 图1、项目总体模块图 2、 课题完成情况 该课题的最终目的是在介绍TrueCrypt加密技术原理和实现方案的基础上~编写和移植TrueCrypt的加密模块对数据存储进行加密~编写存储设备访问控制模块实现设备存储管理等功能。目前该课题的总体目标已经完成~能提供数据存储加密和设备访问控制等功能~但在数据存储加密模块中~未提供TrueCrypt中的加密模式。 二、 TRUECRYPT概述 (一)、 TrueCypt简介 TrueCrypt是一款免费开源的加密软件系统~同时支持Windows Vista/XP, Mac OS X, Linux 等多个操作系统。 TrueCrypt可以建立和维持一个加密卷,数据存储设备,~在建立一个加密卷的时候可以选择密码、密钥文件或两种方式并存的方式产生密钥。在生成加密卷后~又可以在已有的加密卷中增加二次加密隐藏区。 3 TrueCrypt加密了整个加密卷的文件系统~例如文件名、文件夹的名称、内容、每一个文件、可用空间、元数据等。在不使用正确 的密码、密码文件或正确的加密密钥都将无法读取,解密,这个加密卷中的任何存储数据。而当用户打开或复制加密的TrueCrypt卷~文件可以复制~剪切到/从安装TrueCrypt卷就像他们被复制、剪切到/从任何正常磁盘,例如~通过简单的拖放操作,一样~文件将在内存中自动被解密~同样~文件被剪切或复制到TrueCrypt卷时将在内存中自动加密,然后才写入TrueCrypt卷,。 (二)、 TrueCrypt的主要工作原理 1、 TrueCrypt加密/解密技术 TrueCrypt主要使用即时加密/解密技术~在这里为了说明这种技术的工作原理~假设有一个.AVI视频文件存储在TrueCrypt卷中,因此~视频文件是完全加密的,。用户提供正确的密码、密钥文件或者密钥打开TrueCrypt卷。当用户双击该图标的视频文件~Windows操作系统将推出该文件相关联的应用——通常是一个媒体播放器,如Media Player,。媒体播放器为了播放视频~开始载入TrueCrypt加密卷中视频文件的最开始的一部分到RAM,内存,中。当这一部分开始载入~TrueCrypt便自动解密它,在RAM中,。解密的部分视频存储在RAM中~然后媒体播放器开始播放。虽然这部分正在播放~媒体播放器开始载入下一个小部分视频文件从TrueCrypt加密卷到RAM,内存,中~并一直重复这个动作~直到视频文件被播放完毕。这一过程被称为即时加密/解密~这种方式不仅仅适用于视频文件~对于其他的文件也同样适用。 2、 TrueCrypt的加密模式 TrueCrypt对其创建的加密分区、驱动器、虚拟卷、使用XTS模式~同时兼容LRW加密模式运作。 XTS是Phillip Rogaway于2003年设计的XEX模式的一种变量。XEX模式为两种不同的目的使用单一密钥~而XTS模式使用独立的密钥~尤其是自己的秘密密钥~或者独立于主要加密密钥的“调节密钥”。“调节”是指在明文文本或者密码之外可以接受的二次输入,调节,的分组加密。调节和密钥选择密码计算的排列方式。XTS模式是IEEE 1619标准~它是2007年12月发布的 4 关于密码保护基于分组的存储设备的标准。 XTS模式的描述: iiC = E(P ^ (E(n) a)) ^ (E(n) a) iK1iK2K2 其中: Ci表示密文块 Pi表示明文块 12872表示两个多项式的乘积再模与多项式x+x+x+x+1~ K1为主密钥(支持256-bit的密码;例如, AES, Serpent, and TwoFish) K2 次密密钥 (支持256-bit的密码) i是指数据单元密码块的索引~第一个密码块包含的数据块i=0, n数据单元索引包含K1的作用域~第一块数据单元中,n = 0 128a是Galois Field,2,所对应的多项式x的一种原始要素 (三)、 TureCrypt内置的加密算法 1、 AES算法 AES是新一代对称加密标准~为了替代年代久远而且不再安全的DES和慢速的3DES而制定。美国政府于1997年开始了遴选高级加密标准AES(The Advanced Encryption standard)的工作。目的是确定一个非保密的、全球免费使用的分组密码算法~用于加密保护政府的敏感信息~并希望成为秘密和公开部门的数据加密标准。经过筛选~从10个设计中~筛选出5个(MARS、TwoFish、RC6、Serpent和Rijndael)进入下一轮的筛选。其他的5个因为效率和安全性问题而被拒绝。2001年11月26日~NIST宣布由比利时的密码学家JoanDeamen和VlncentRijmen提出的密码算法Rijndeal作为AES。 Rijndael算法具有安全、性能好、效率高、良好的可扩展性和易于实现等特点。AES是一个数据块长度和密钥长度可变的分组迭代加密算法。数据块的长度和密钥长度可以分别指定为128位、192位或256位。TrueCrypt使用的AES拥有14轮变换和256位长的密钥(即AES-256~2001发布)~高级加密标准,AES,明确规定了符合FIPS认可的加密算~可用于美国联邦部门和机构~以保护敏感信息。TrueCrypt在XTS模式,见本节的运作方式,下 5 使用AES的14轮和256位密钥,例如~一个AES-256~2001年发布,。 2、 SERPENT算法 由Ross Anderson等设计~1998年发布。使用256位密钥~块尺寸128位~并在XTS模式,见本节的运作方式,下操作。Serpent也是AES的五个最终候选算法的一员。它比获胜的Rijndael算法拥有更高的安全系数~而Rijndael仅表现出足够的安全性。 在AES入围的五个算法中SERPENT的安全系数最高:3.56,适用于所有支持关键尺寸,。Rijndael算法-256的安全系数为1.56。 尽管存在这些事实~Rijndael算法因其安全~性能~效率~可执行和灵活性。被认为是适当的选择AES~在最后的AES候选会议~Rijndael算法得到86票赞成票~SERPENT获得59票~TwoFish获得31票~RC6获得23票~和MARS获得13票。 3、 TwoFish算法 1998年由Bruce Schneier等设计~使用256位密钥和128位长的块尺寸~在XTS模式,见本节的运作方式,下操作。TwoFish也是AES的五个最终候选者之一。加密使用与S盒无关的密钥。 128TwoFish也可以视为2种不同的加密系统的集合~其中128位来源于一个256位的密钥~控制加密系统集的选取。TwoFish小组断言~与S盒无关的密钥提供了一种抵抗未知攻击的安全形式。 三、 基于TrueCrypt的磁盘加密模块实现 (一)、 TrueCrypt开发环境构建 1、 源码编译所需要的工具 1,Microsoft Visual C++ 2008,Professional Edition or compatible,。 2,Microsoft Visual C++ 1.52,available from MSDN Subscriber Downloads,。 3,Microsoft Windows Driver Kit for Windows Server 2008 ,build 6001.1800,1,。 4,NASM 0.99 汇编器。 5,Yasm 汇编器。 6,gzip 压缩器。 6 2、 源码编译的准备工作 1,安装Microsoft Visual C++ 2008。 2,安装Microsoft Visual C++ 1.52。 3,安装Microsoft Windows Driver Kit for Windows Server 2008。 4,拷贝NASM 0.99 汇编器、Yasm汇编器、gzip压缩器至'%SYSTEMDRIVE%\WINDOWS'目录下。 5,创建环境变量'MSVC16_ROOT'~指向安装 MS Visual C++ 1.52的目录。 6,如果已经安装了 Windows Driver Development Kit且其不在'%SYSTEMDRIVE%\WinDDK'目录下,则创建环境变量'WINDDK_ROOT'的指向Win DDK的安装目录。 注:环境变量创建方法~在“我的电脑”->“属性”->“高级”->“环境变量”->“新建”中填入对应的变量名和变量值即可。 3、 源码编译的步骤 1,在Microsoft Visual Studio 2008中打开?TrueCrypt.sln? 解决方案。 2,在解决方案配臵中将活动设臵为全部。 3,编译、链接源码。 4,如果成功, 在'Release' 文件夹里将生成一个新的可执行文件“TrueCrypt”。 5,查看各模块的编译结果~在“Crypto”模块的文件夹下生成了“Crypto.lib”文件。 (二)、 TrueCrypt源码分析 1、 源码分析工具介绍 Doxygen是一款静态源码分析工具~他可以根据提供的源代码~和设臵的生成参数,例如:“PROJECT_NAME”等,生成源代码的文件、函数调用关系图~以及函数说明等。在本课题中笔者安装和使用步骤如下,根据不同需求有所不同,: ,1,、确认“C:\Program Files\HTML Help Workshop\hhc.exe”文件是否存在~若不存在从互联网上下载此文件~Doxygen将使用此文件来将生成的chm源文件,html,hhp,hhc~hhk,编译成chm文件。 7 ,2,、在默认安装路径下安装“graphviz”~Doxygen将使用该软件实现在文档中画图的功能绘制文件、函数的调用关系图。 ,3,、将本Doxygen文件夹放在与源码所在的同一路径下~按需求修改Doxyfile文件~如“PROJECT_NAME”等参数~其参数设臵可参见“doxygen_manual-1.5.2.chm”。在本例中作者将TrueCrypt解决方案拷贝到了C:\TrueCrypt目录下~其Doxyfile中配臵信息设臵如下: PROJECT_NAME = TrueCrypt OUTPUT_LANGUAGE = Chinese INPUT = C:\TrueCrypt FILE_PATTERNS = *.h *.cpp *.c 除上述声明的参数外~其余参数使用默认参数 ,4,、运行run.bat批处理文件~help.chm文档将生成在与源码所在的同一路径下~如需了解生成过程中的编译提示信息可查看doxygen\build.log。 2、 TrueCrypt源码结构 经分析TrueCrypt各模块的总体功能图如下: 图2、TrueCrypt的总体结构 本课题主要需要的加密/解密功能在Crtypto模块中~在下面 8 的章节~将对这个模块进行具体分析。 3、 Crypto模块结构 使用Doxygen工具生成Crypto模块的文件包含/依赖结构图如下: 图3、Crypto模块结构图 (三)、 Crypto模块分析和提取 1、 Crypto模块的提取 在Microsoft Visual Studio 2008中新建一个解决方案“Crypto”~将TrueCrypt中Crypto模块源码目录下和上图相关的文件拷贝至Crypto的源码目录下~并在解决方案中包含这些文件。在解决方案中创建文件夹“Common”~将Crypto模块“Common”目录下和上图相关的文件拷贝至该目录下并在解决方案在中包含 9 这个文件夹~根据上述生成的Crypto模块的文件关系图~将图中所包含的头文件相对应的.c、.cpp、.asm文件拷贝到“Crypto”解决方案中对应的文件夹下。 重新生成Crypto解决方案~如果成功~在解决方案中将生成Crypto.lib文件~至此Crypto模块提取成功。 2、 Crypto模块分析 Crypto模块是TrueCrypt软件系统的加密主体~所有加密算法和加密模式都在这里得以实现。在Crypto.h中包含了加密所需的一般加密算法和加密模式的调用函数~如:块加密/解密函数EnciperBlock,,/DecipherBlock,,~XTS模式,见2.2中对TrueCrypt加密模式的介绍,加密/解密函数EncryptBufferXTS,,/DecipherBlock,,等。 Doxygen生成的Crypto.h中主要加密模式/加密函数的函数调用关系图: 图4、EncipherBlock函数调用关系图 10 图5、DecipherBlock函数关系调用图 图6、EncryptBufferXTS函数调用关系图 11 图7、DecryptBufferXTS函数调用关系图 EnciperBlock,,/DecipherBlock,,两函数已经基本满足加密/解密的一般需求。因此本课题不再对EncryptBufferXTS,,/DecipherBlock,,进行封装~这可以作为本课题下一步研究的方向。 经测试EnciperBlock,,/DecipherBlock,,两函数加密/解密数据只支持16字节,加密不满16字节时其会在不足的地方自动填充204后再行加密,~因此根据需求在封装中~应将其封装成任意长度数据加解密即可。 (四)、 面向数据存储的加密模块封装和实现 1、 需求分析 ,1,、同时支持多个加密算法, ,2,、加密/解密口令不定长, 12 ,3,、加密/解密数据块大小不定长。 2、 接口定义 ,1,、加密初始化: ,3,、加密函数: ,4,、解密函数: ,5,、关闭加密函数: 13 3、 具体实现 ,1,、数据结构 1,、算法选择共同体~提供给用户选择加密算法 2,、密钥数组~用于存储根据用户密码生成的密钥: ,2,、封装密钥初始化及关闭加密函数实现 其中rb是根据加密算法生成的加密HANDLD 上述密钥初始化实现时~密钥初始化后存储在ks_temp数组中~因此在关闭加密时~将ks_temp中的数据清除即可。 ,3,、加密/解密函数的实现 由上述分析~EncipherBlock,,/DecipherBlock,,已基本满足需求~在进一步的封装中~通过密文/明文长度判断循环调用EncipherBlock,,/DecipherBlock,,即可实现加密/解密功能。 四、 WINDOWS平台下的移动存储介质访问模块实现 (一)、 存储介质访问模块的设计与实现 1、 需求分析 ,1,、对物理磁盘设备进行读、写访问操作, ,2,、枚举物理磁盘信息,磁盘号、名称、大小、磁盘设备接口类型、磁盘分区类型等,。 2、 接口定义 1,磁盘信息获取函数: 14 2,磁盘打开函数: 3,磁盘写函数: 4,磁盘读函数: 15 5,磁盘关闭函数: 3、 具体实现 由于Windows 操作系统在很大程度上采取了访问安全保护机制,例如~在Windows操作系统下不能直接访问物理内存、不能使用各种DOS、BIOS中断等,~在对设备进行访问时不能直接对其驱动进行操作~而Windows提供了例外一种对设备进行操作的方式~在WIN32 API中对设备封装成“文件”~并允许按照对文件的读写方式来对其进行数据存取访问。 ,1,、数据结构: 磁盘信息数据结构体: 磁盘结构体数组: 16 ,2,、Open_Disk,,,Close_Disk,,的实现 前面已经提过~在Windows下把所有的设备当作文件进行操作~如对于串行端口1、2~可以用“COM1”、“COM2”作为参数调用CreateFile,,函数~这里的“COM1”、“COM2”即以文件存放路径的方式指出了要操作的硬件设备。同理如果需要对磁盘进行读写~与对串行端口的访问类似~需要用与文件存放路径相类似的方式指出要操作的硬件设备,硬盘,。因此这里需要以某种特定的格式来指定需要访问的物理磁盘设备~对系统注册的第i块物理硬盘~其格式为"\\\\.\\PHYSICALDRIVEi"。根据Open_Disk,,传入的参数物理磁盘号No~构造出字符串"\\\\.\\PHYSICALDRIVE„No?"~然后调用CreateFile,,传入相应参数~实现磁盘打开操作~在这里为了满足后续读/写磁盘的需要~其第三个控制参数应传入“FILE_SHARE_READ | FILE_SHARE_WRITE”,即可读可写参数,。针对打开的物理磁盘~调用CloseFile,,来实现关闭物理磁盘操作。 ,3,、Write_Disk,,和Read_Disk,,的实现 通过Open_Disk,,打开的是整个物理磁盘~而要操作的是该磁盘里存储的某段具体数据~因此还要通过SetFilePointerEx,,函数以文件操作的方式把操作指针移到磁盘数据的预操作处~再调用WriteFile,,/ReadFile,,函数来实现读写操作。 注:由于在本系统中使用优盘时,磁盘不会出现此类情况,~直接填写第一引导分区~会导致Windows无法注册该盘~因此在封装此函数时~直接越过磁盘的前两个扇区~对第三个扇区进行读写操作~因此在文件指针操作参数传入是应调用 StartByte.QuadPart +=1024; ,4,、Get_Disk_Info,,的实现 Get_Disk_Info,,主要包括枚举磁盘信息~注册表项 HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Service s\\Disk\\Enum中包括了物理磁盘编号~磁盘名字~磁盘接口类型等信息~通过对该表项RegOpenKeyEx,,/RegQueryValueEx,,操作可以读取这些信息。 17 标准分区的标志位,MBR信息的最后两字节,~和本软件的标志位区分~通过Read_Disk,,操作读取信息比对后得出磁盘分区信息。 DeviceIoControl,,通过给DISK_GEOMETRY填写内容后通过乘法计算得出磁盘长度。 五、 模块功能测试验证 (一)、 测试方案设计 1、 测试 1,、枚举并打印磁盘信息1。 2)、将1号磁盘的500-1000字节的信息读入缓存1~并打印。 3)、将缓存1加密后成缓存2并打印,包括加密信息及加密前后的大小,~再写入1号磁盘的 0-512中。 4,、读出该磁盘的0-512的信息并打印~与步骤三打印结果对比~以确定其真确写入。 5,、将缓存2的信息解密后存入缓存3并打印,包括解密信息及解密前后大小,~与缓存1对比。 6,、弹出磁盘。 7,、重新加载磁盘后~枚举磁盘信息2~与信息1对比。 2、 预期结果 1,、能枚举标准磁盘信息,磁盘号、名字、大小、接口类型、分区类型,。 2,、正常读取磁盘数据并打印。 3,、正常加密数据且写入磁盘。 4,、正常解密且与原明文一样。 5,、两次枚举的磁盘信息相同。 (二)、 测试程序编写 1,获取磁盘信息: 2,打开1号磁盘: 3,读取1号磁盘的500-1000字节数据: 18 4,加密buf内容至buf1: 5,将buf1内容写入1号磁盘0-512号磁盘~写入后再次读 取该区域的磁盘数据至buf2: 6,将buf1内容解密至buf3: 7,弹出磁盘后~重复步骤,,1,。 (三)、 测试实施 运行测试程序后~其运行结果如下图: 图8、第一次枚举磁盘信息 19 图9、500-1000字节内容 图10、加密后的密文 20 图11、解密后的明文 图12、写入磁盘的信息 21 图13、第二次枚举磁盘信息 (四)、 测试结果分析 1,从图8中可以看出~该模块能正常枚举正常磁盘信息, 2,从图9中可以看出~该模块能在磁盘的任意地方正常读出任意字长的内容, 3,从图10中可以看出~该模块能加密任意字长的数据~并正确提供了加密后密文的长度, 4,图11和图8比较表明~该模块能正确解密密文~并且能正确提供解密后密文的长度, 5,图12表明~该模块能在磁盘正确写入数据。 6,图13和图7比较表明~该模块能正确枚举被写乱主引导区后的磁盘信息, 六、 参考文献 [1] 《信息安全》 高等教育出版社 段云所、陈钟等编著, [2] 《TrueCrypt User Guide》 2003-2008 TrueCrypt Foundation. All rights reserved, [3] 《文件系统及磁盘管理实现机制深入研究》 南京航天航空大学 顾喜梅著, [4] 《VC++实现Win2000下直接读写磁盘扇区》 星缘中文网。 22
/
本文档为【移动存储设备数据存储加密】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索