第一章 摘要

Flash Memory是一种长寿命的非易失性存储介质,其存储原理存在诸多漏洞。其中最为严重的则为写入次数上限。而以闪存作为存储介质的U盘是否会因闪存的存储缺陷而成为不安全的存储设备,这是该作品要用一个实验验证的主要内容。

大多数U盘生产厂商都声称他们的Flash Memory的读写次数为100万次,而经过多方了解后得知这个数字是源于Flash Memory的生产厂商,我们又从Flash Memory的生产厂商Intel得知,他们并没有做过相关实验,也只是理论得知推导的。看来所谓的100万次是没有可靠的事实依据的,我们有必要在实验中来验证其真实性。

除了U盘的数据安全性问题,本地数据安全同样令人堪忧。企业经常会因为一些机密数据被非法拷出而头疼,军方也会因为数据泄露而担心,而这其中的罪魁祸首当属U盘。针对这一问题,我们开发出“防盗门”系统。它允许用户拷贝数据,但一旦发现拷贝,立即擦除拷贝数据,并且在适当的时候对非法拷贝者一个强有力的警告。“防盗门”的主要特点就是数据进的来出不去,保证一切受保护数据决不泄露,又可以让用户自由使用存储介质上的文件。

 

第二章 作品介绍

2.1 特色描述

本项目主要特色有:

1)通过科学试验的方法验证U盘读写寿命,结论可靠

2)为U盘防拷贝问题提供一种新的思路。

3)使用远程注入的思想保护进程

 

  1. U盘读写寿命测试

Flash memory声称有100万次的读写寿命,却无从考证其真实性,我们以U盘为试验平台,通过向某固定区域连续写入,来测试其真实的读写次数,然后依据一般用户的使用习惯和使用次数,进行相关分析,对用户提出必要的提示,并且根据Flash Memory的读写性能做出相关产品。

  1. 防盗门”系统

该系统在计算机上运行一个程序,检测计算机是否有U盘等移动存储设备插入,一旦发现有U盘插入并进行数据拷贝,立即抹除拷贝文件的数据区,但保留其文件索引,使拷贝者无法轻易察觉,并且可以根据需要破坏掉整个U盘的文件系统,使U盘立刻无法继续使用。该系统使用远程注入的方式防止进程被恶意结束,具有一定的安全性。此外,该系统只对从计算机向U盘拷贝数据的动作进行监控和限制,对用户的其他行为无任何影响,可放心使用。

2.2 背景介绍

数据是我们最为宝贵的资源,而数据的安全总是存在这样和那样的隐患,我们无法做到从根本上杜绝隐患,我们只能以自己的方式将风险降到最低。U盘的普遍性,决定了它将是人们关注的焦点。

2.2.1 U盘存储原理

U盘的结构基本上由五部分组成:USB端口、主控芯片、FLASH(闪存)芯片、PCB底板、外壳封装。
U
盘的基本工作原理:USB端口负责连接电脑,是数据输入或输出的通道;主控芯片负责各部件的协调管理和下达各项动作指令,并使计算机将U盘识别为“可移动磁盘”,是U盘的“大脑”;FLASH芯片与电脑中内存条的原理基本相同,是保存数据的实体,其特点是断电后数据不会丢失,能长期保存;PCB底板是负责提供相应处理数据平台,且将各部件连接在一起。

2.2.2 Flash Memory 基本原理

有多种技术能实现半导体存储,其中主要有NAND(与非)和NOR(异或)两种。Flash Memory是从ROMPROMEPROMEEPROM这样一步步发展过来的。EPROMEEPROMFlash Memory的核心部件都是一个浮置栅场效应管,通过在 浮置栅上放置电子和没有电子两种状态来区分01。由于浮栅中电子的变化,存贮单元的阈值电压也会随之而改变,向浮栅中注入电子时,域值电压升高,加正常电压不能使该管导通定义为“1”;将浮栅中的电子拉出,加正常电压导通,定义为0。也有说通过检测该管有电流通 过为1,无电流通过为0,这样就是有电子为0,无电子为1。不管采用哪种,反正有两种状态区分就可以保存数据了。

  1. NOR FLASH

 

NOR FALSH阵列

NOR技术Flash Memory结构,每两个单元共用一个位线接触孔和一条源线线,采用CHE的写入和源极F—N擦除,具有高编程速度和高读取速度的优点。但其编程功耗过 大,在阵列布局上,接触孔占用了相当的空间,集成度不高。具有以下特点:(1)程序和数据可存放在同一芯片上,拥有独立的数据总线和地址总线,能快速随机 读取,允许系统直接从Flash中读取代码执行.而无需先将代码下载至RAM 中再执行;(2)可以单字节或单字编程,但不能单字节擦除.必须以块为单位或对整片执行擦除操作,在对存储器进行重新编程之前需要对块或整片进行预编程和 擦除操作。适合存储代码,比如用来做BOIS。由于NOR技术Flash Memory的擦除和编程速度较慢,而块尺寸又较大,因此擦除和编程操作所花费的 时间很长.在纯数据存储和文件存储的应用中,NOR技术显得力不从心。

 

  1. NAND FLASH

 

NAND FLASH阵列

NAND结构消除了传统EEPROM 中的选择管,并通过多位的直接串联,将每个单元的接触孔减小到12 n(n为每个模块中的位数,一般为8位或1 6),因此,大大缩小了单元尺寸。NAND采用编F—N写,沟道擦除,其最大缺点是多管串联,读取速度较其他阵列结构慢。另外,由于不能采用负栅压擦除, 编程时需加20V 左右的高电压,对可靠性不利。NAND技术Flash Memory具有以下特点:

(1)以页为单位进行读和编程操作,1页为256512B(字节);以块为单位进行擦除操作.1块为4K8K16KB。 具有快编程和快擦除的功能,其块擦除时间是2ms;而NOR技术的块擦除时间达到几百ms

(2)数据、地址采用同一总线,实现串行读取。随机读取速度慢 且不能按字节随机编程。

(3)芯片尺寸小.引脚少,是位成本(bit cost)最低的固态存。不支持代码本地运行,运行前需要拷贝到RAM。适合数据、文件类型存储。

 

以上资料介绍了Flash Memory的特性,最重要的是告诉我们Flash Memory有两种读写寿命,NAND型是100万次,NOR型是10万次,常见的为NAND型。这是不是也意味着U盘的读写次数也是有限制的?我们将在后面的实验中加以论证。

2.3 应用市场分析

根据我们的实验结论来看,U盘在读写次数这个问题上,还是相对较安全的,我们大可不必担心,所以说U盘已是一个比较成熟的行业。

根据目前市场上已有的产品来看,像“防水墙”等 ,都是通过加密的方法来保证数据安全性,具有一定可靠性,并被市场所认可。但数据安全性是一个永恒的话题,无疑这是一块巨大的市场,我们的产品,从另外一种思路给出了一种解决方案,虽然目前只是一个雏形,还有很多功能有待完善,但我们相信随着我们的不断改进,它一定能够经受住市场的考验。

第三章 实现方案

3.1 Flash Memory性能测试

根据背景资料介绍的Flash Memory的特性,我们得知Flash Memory有两种读写寿命,NAND型是100万次,NOR型是10万次,常见的为NAND型,我们的试验基本上是可行的。

基于以上结论,我们首先提出假设,即:FlashMemory由于其存在寿命限制,且寿命相对较短,使得U盘成为一种不安全的数据存储介质。

因此,我们设计了一个读写U盘的程序来实现对U盘寿命的测试。

 

  • 程序思路

 

 

 

我们经过查找资料,使用CreateFile函数开启读写磁盘的句柄,用WriteFile函数对磁盘的一个大小为512Bsector进行写操作(反复写入01),写操作后利用ReadFile函数进行读操作确认写入成功。

程序写完后只需要输入写入磁盘盘符,写入磁盘扇区位置,写入次数后,自动开始扇区的写入操作。

3.2“防盗门”系统

  • 程序思路

  1. usb.exe程序

 

我们利用GetLogicalDrives函数得到在电脑中的磁盘盘符,并找到所有可移动磁盘盘符,每找到一个移动磁盘,便开启一个线程专用来监视该磁盘的文件状态,利用ReadDirectoryChangesW函数监视磁盘内的文件状态,已经发现有新增文件或有文件更改,向destroy文件发送文件销毁命令。

并且在有文件操作时记录日志,使用户可以查看。

 

  1. destroy.exe程序

用来销毁文件,有一个系统参数,代表要销毁的文件及其路径,利用CreateFile开启文件内容,进行覆盖1操作,将整个文件数据区域覆盖1,覆盖1的原因是因为Flash Memory在进行变更时会先将数据置1,所以我们直接写1在大量的数据写入时会加快写入速度。

因为U盘虽然存储系统与硬盘一样,但存储原理与硬盘大不相同,硬盘存储依靠磁介质,所以硬盘在多次写入后,还可以应用磁剩的物理特性,将数据恢复出来,而U盘是靠CMOS管的电子浮动,这就导致到目前位置,还没有技术能够将U盘中已经覆盖的数据恢复出来。

目前这个文件使用了由李刚提供的HOOK保护,防止其他非法用户在销毁过程中对destroy进程的非法破坏,保证了程序运行的良好。

 

  1. usb.dll文件

这个文件负责实时监控进程列表,保证usb.exe文件的实时运行,编译称为dll文件是想在系统实际运行时将其注入到重要的系统进程中,防止有恶意结束掉保护进程。

 

  1. Usbshow.exe程序

 

这个文件主要是用来统筹规划整体的程序运行状况,发现有没有恶意行为,对恶意行为造成的破坏进行弥补修复。主要是将dll文件注入到explorer.exe进程中,并且对usb.exe的运行情况进行实时监控,如果发现进程被非法结束会重新启动注入程序,保证对U盘监控不中断,针对个别系统可能会注入失败的问题,这个程序会自动启动process.exe这个文件,保证usb.exe的实时运行。

这个文件还提供图形界面,方便用户使用,图形界面十分简洁。“开始”即为开始监控,“结束”即为结束监控,退出时停止监控,开始监控后,一经发现有文件向U盘拷入,不论任何形式,立即进行文件销毁,此程序也用HOOK进行保护,保证不被非法结束。

第四章 性能测试

4.1 Flash Memory性能测试

  • 测试环境:

Windows7Lenovo Y450(P74502GNV130M320G)1G U盘(芯片型号MXT6208

  • 具体实验:

经过我们实际的试验发现,用我们的方法,如果U盘的0扇区不被破坏,U盘其他扇区是无法直接用地址写入的,所以我们在程序最前面备份0扇区后,破坏0扇区,然后再对其他扇区写入。

最初,我们的写入是每写一次便用CreateFile打开一次句柄,但发现这样效率过低,大概写10万次用50min,经过改进我们将CreateFile放在最前面,使得无论写多少次都只开一次句柄,经过改进,时间大大缩短,大概100万次用时1h左右。

至此,试验已经做好全部准备工作,开始试验。

 

第一次试验:

开始时间:20106921:30

结束时间:20106922:26

写入扇区:1412扇区

写入次数:100万次

试验结果:经最后人工验证U1412扇区工作良好(可以正常写入)

第二次试验:

开始时间:201061317:10

结束时间:201061318:12

写入扇区:1412扇区

写入次数:100万次

试验结果:经最后人工验证U1412扇区工作良好(可以正常写入)

第三次试验:

开始时间:201062110:05

结束时间:201062111:03

写入扇区:1412扇区

写入次数:100万次

试验结果:经最后人工验证U1412扇区工作良好(可以正常写入)

以上试验仅为有记录的正式试验,还有对其他U盘,或不同扇区的实验,但没有正式记录,将实验结果简记在下面:

对一块清华紫光256M U盘(CBM2092)的55807扇区写入200万次,因写入程序为未改进版本,故总用时大约为21小时,测试结果为扇区工作良好,无不良情况。

  • 结果分析

经过以上试验的论证,原假设:FlashMemory由于其存在寿命限制,且寿命相对较短,使得U盘成为一种不安全的数据存储介质。不成立。即U盘是一种安全的数据存储介质。

经过我们讨论,认为主要原因可能有以下几个可能。

  1. U盘缓存

这里说的缓存不是操作系统级别的缓存,那个问题我们已经通过FlushFileBuffers函数解决了操作系统为U盘设置缓存而导致无法写入的问题,这里的缓存是指U盘内的物理缓存,由于Flash Memory使用寿命有限,U盘厂商可能会用缓存的办法来减少读写,延长使用寿命。

这就意味着由于我们多次写入同一个地方,导致U盘会只把数据写入到缓存,不写入到Flash Memory,最终等所有的写入结束,才写入Flash Memory一次,导致试验失败。

 

  1. 虚拟映射

Flash Memory内部是半导体存储模块(晶体管),很难保证寿命期内没有任何坏块出现(晶体管在高温、震动或者疲劳读写情况下容易失效),我们通常是通过对Flash Memory进行初始化扫描发现坏块,并将其标记为不可用。Flash Memory的驱动决定了存储的数据决不能向坏块写入,这就意味着在Flash Memory上自始至终都必须进行虚拟映射。

Flash Memory的物理地址与逻辑地址分离,当有坏块产生时,逻辑地址不变,物理地址已经发生改变,这使得我们很难察觉,这就意味着在300万次的写入中可能1412扇区已经损坏过,但U盘中的虚拟映射机制已经将其指向一个新的块。

 

以上两种可能性只是我们推测U盘未损坏的原因,由于虚拟映射和U盘缓存机制属于U盘厂商的商业机密,无从查找资料,故使得我们的试验无法继续进行。

4.2防盗门”系统性能测试

  • 测试环境

Windows7Lenovo Y450(P74502GNV130M320G)1G U盘(芯片型号MXT6208

  • 盗取文件测试

下面我们就常见的集中盗取文件类型、手段进行测试。因为此测试与其他保护运行程序无关,故只测试usb.exe程序,一插入U盘,程序发现U盘开启监控。

 

  1. 新建TXTDOC文件后粘贴文本

新建并写入字符后,usb.exe的日志显示:

 

试验结果新建TXT文本后,写入文章,关闭后打开文本被清空。

 

由于word在打开后会先新建一个临时文件,用来防止意外关闭后没有保存的状况,日志内容长于TXT文本的内容。销毁的内容也比TXT的多。

WORD文档写入测试文章后,打开失败,已经无法打开。

 

 

  1. 复制EXETXTDOCRAR文件

复制TXTDOC文档和上面的情况一样故不再一一列出。

 

RAR文件损坏无法打开,尝试修复后也仍然无法打开。

 

EXE无法打开,出现命令行模式一闪而过。

 

  1. 其他类型文件

经过大量测试,所有复制进入U盘的文件都被损坏,无法打开。

 

  • U盘测试

插入多块U盘测试后发现,试验效果与单块U盘相同,所有U盘无法向外拷贝文件。

 

  • 系统资源消耗测试

运行Usbshow后,点击开始后进行测试

经过实际测试

 

 

usb程序CPU占用率为0%,内存占用244K

UsbshowCPU占用率为0%,内存占用2M

程序总体占用系统资源极低。

 

  • 反破解测试

首先对程序进行简单的破坏测试,因程序目前还未做文件内容保护的代码,故这里不进行文件的删除更名测试,只进行通过任务管理器终止程序的测试。

通过任务管理器无法终止usb.exeUsbshow.exedestroy.exe的进程,结束explorer.exe后仍然无法终止usb.exe,因为explorer.exe被终止后,Usbshow.exe接管了保护usb.exe的任务,故也无法终止。

对于360安全卫士无法终止usb.exe,但可以终止Usbshow.exedestroy.exe的进程,这是因为Usbshow.exedestroy.exe的保护是利用HOOK截获系统消息,而360安全卫士为驱动层的软件,要想针对此破解后续可以将Usbshow.exe制作成驱动,注册为系统服务,只要其安全就可以保证其他监控系统程序的安全。

 

  • 压力测试

为了测试防盗门系统的性能,故进行长时间大量文件的拷贝,由于文件众多,故使用图片文件,以便于查看结果。

测试中拷入U72张图片,2个压缩包,共97.5M,结果如图

所有图片文件均无法查看,压力测试通过。

 

  • 更多的

通过实验我们发现了一点意外的收获,我们的“防盗门”系统不但可以防止通过U盘拷走隐私或保密数据,而且还可以在一定程度上防止病毒传播。

在测试时发现有一台XP的机子上未安装杀毒软件,一插入U盘后随即有写入autorun.inf的文件,但很快被“防盗门”系统销毁,在U盘插入的过程中,病毒不断写入,“防盗门”系统也在不断地销毁,拔下U盘后,放入其他无毒机测试,发现病毒文件autorun.inf已经被清空,并且不再隐身,病毒自动运行的机制已经被损坏。

学校的打印室一般是病毒传播的枢纽中心,通过以上试验的结果我们发现,如果在打印室的机子上安装我们的软件,就可以就此中断病毒的传播,防止病毒通过打印室大面积传播。

 

通过以上的几个测试,我们基本上测试了“防盗门”系统运行的有效性,通过病毒反复的写入,我们长时间的测试了系统的稳定性,至此,测试基本完成。

 

第五章 创新性

闪存概念的提出带来了存储介质的革命,但其设计结构造成的致命缺陷却给基于闪存的存储产品带来了安全隐患。该作品的创新性之一就是通过科学的实验假设,设计一种有效的实验方法,证明了U盘这种基于闪存的存储设备是安全的。

同时,U盘便于携带,存储方便的特性又从另一个角度造成了本地数据的不安全性。基于这方面的考虑,该作品的另一个创新点则是设计了一种防止U盘拷贝本地数据的程序,可以有效的保护本地数据不被U盘轻易拷贝走,围绕这个程序,我们综合考虑的多方面的安全因素,最后形成了一套完整的安全可行的方案。

第六章 总结

本作品用一个验证实验,证明了虽然Flash Memory使用寿命有限,但U盘通过一系列解决方案使它的存储安全性大大增加。

用一套解决方案防止U盘拷贝本地数据,增强了本地数据的安全性,防止他人趁主人不在或者趁机拷走电脑数据。为了验证程序运行良好,我们做了一下几个测试:

盗取文件测试、多U盘测试、系统资源消耗测试、反破解测试。

通过测试我们发现了我们的软件在反破解方面还有一些不足,需要在增加一些措施或改变一些方法,来更好的保护软件不被破解。

从中通过我们反复探究试验成败的原因,我们学到了很多有关于U盘内部机理,例如:虚拟映射、ECC校验,磨损均衡算法方面的有关知识,我们探讨了利用Flash Memory使用寿命短的特点来销毁U盘的可行性。我们从“防盗门”系统中学习了有关系统API函数,学习了有关软件开发的知识,“防盗门”系统给了我们更多的思考,学会了创新。

第七章 未来的工作

至此,我们成功的完成了我们的作品,但其中还有很多不足,未来还有很多改进的地方,主要有以下几方面:

  • Usbshow.exe改为驱动级别,注册到系统服务以增加系统可靠性

  • 增加内容保护,防止文件内容被更改

  • 提高destroy.exe的运行效率,可以尝试直接删除文件索引数据,使其找不到数据区

  • 增加网络审计功能,将本地状态实时的上报给服务器

  • 增加VIP盘的功能,使特定U盘可以正常拷走数据

以上几点是我们认识到的不足之处,我们会在今后的日子里加以改良,使软件运行的更可靠,更加的人性化,功能更加全面。

参考文献

[1]王艳平 张铮.Windows程序设计(第2版).人民邮电出版社

[2]彭兵 步凯 徐欣(国防科技大学).NAND Flash坏块研究管理.微处理机20094月第二期

[3]张家旺(国家保密技术研究所).Windows系统进程安全保护技术分析和实现

[4] 谢凯年(上海交通大学 微电子学院).超大容量NAND FLASH坏区管理方法的设计与实现.现代电子技术2007年第16期总255

[5] 罗晓 刘昊(东南大学国家专用集成电路系统工程中心).一种基于FAT文件系统的NAND Flash坏块处理方法.电子器件20084

[6]潘沁 周新志 魏刚(四川大学中电科技集团第三十研究所).磨损均衡算法在NAND Flash管理中的改进.软件天地

[7] 王峥 娄渊胜(河海大学计算机及信息工程学院).远程线程注入技术在监控系统中的应用.计算机科学与发展20103

[8]sgs1130.网易博客.

http://sgs1130.blog.163.com/blog/static/326869082008531181710/

 

致谢

本此竞赛的完成,得到了很多个人和单位的帮助,在此,向他们表示感谢。他们有金士顿的Rain_Yao技术人员、CSDN上的朱铭雷、EasyRecovery的公司OntrackFlash芯片制造商ST、百度百科上提供帮助的李刚,谢谢他们的帮助,当然还感谢我们的指导老师为我们出谋划策,提出了很好的建议。