一种基于计算机指纹的U盘文档监控与保护方法
2011-05-18朱征宇周发贵于春雷
朱征宇,周发贵,于春雷
(重庆大学 计算机学院,重庆400044)
随着计算机移动存储设备技术的的不断发展,U盘因其携带方便、容量大等特点,已成为目前使用最为广泛的存储介质。它的这种便捷性往往造成使用的随意性,尤其在计算机病毒、木马泛滥,各种计算机攻击技术趋于普遍的今天,更增加了信息泄露的风险。当前很多带保密性质的机构,如军队、科研机构等都采取了内外网络物理隔离的保护方式来保障机构内部的网络信息安全,这种方式能充分保证局域网内数据的安全,但要与外部网络进行数据交流时由于需要外部存储设备的接入,同样会产生各种与设备相关的失泄密风险。本文主要为解决内部安全网络中的重要文档分发到U盘后的安全保护与使用监控的问题,以便文档使用及流向的可审核和可追溯。
1 常见的风险及对策
以某军事研究机构(甲)为例分析存储在U盘上的文档存在的泄密风险。该机构保密级别较高,建立了基于人员指纹信息的身份认证系统,采取了内外网络物理隔离的方式来保护内部网络,对所有usb接口进行屏蔽,同时对内部使用的U盘进行认证[1],只有认证过的U盘才能正常接入内部网络,在指定计算机上由指定管理人员对外发文档进行签发。由于某项目需要与外单位(乙)进行交流汇报及协作,就需要管理员从专用管理机器将文件签发给外派的联络人员。从分发重要文档到U盘,以及联络人员携带U盘到指定区域及网络阅读的过程中,存在的主要泄密途径有:
1)U盘木马从局域网内盗窃重要数据造成泄密;
2)U盘设备遗失造成泄密;
3)携带者在非安全计算机随意阅读时造成泄密;
4)携带者主动泄密。
严格的设备接入管理规定和使用安全移动设备等手段可以降低泄密风险,但这些手段并不能有效防止和发现携带人员主观或意外造成的泄密,如后面2种泄密途径。这些手段都在数据拷贝到移动设备后就对数据的流向、访问情况失去了监管,把信息的安全完全寄托在数据持有人的安全意识上。近年国内外的一些重大失泄密事件的发生与这方面监管手段的缺失不无关系。如2010年7月美军大量机密文件被“维基解密”网站所曝光,事件起因就是由于大量文件被内部人员非法下载并拷贝出去所致。
针对这一现状,本文提出了基于计算机指纹的U盘文档监控与保护方法,通过利用文件加解密技术、计算机指纹技术、文件与设备捆绑、文件循环校验等相关技术手段,在保护分发文件安全的同时能帮助管理员利用计算机指纹和相关记录来审核文件携带者对文件的阅读情况,包括阅读次数、地点(阅读文件的计算机)、时间等信息,以防止携带人员不按要求保管及阅读。该方法的应用有利于军队、政府和企业等机构对重要数据实现定人保管、定位阅读、定期销毁,实现对数据的全程监管,减少失泄密风险,而且有利于事后及时追查失泄密源头及渠道,以便采取补救措施来挽回损失。
2 文件的安全防护
监督是为了更好地保障文件的安全,要保障文件的安全,就必须综合考虑文件在传递和浏览过程中所有可能出现的各种漏洞,避免在任一环节出现安全“短板”的情况。传统文档处理软件(WORD、写字板等)都具有很多的编辑功能,而这些功能对于一份仅供阅读的文件来说是多余而具有风险的,所以笔者设计了专用的功能有限的只读客户端来阅读文件,并利用客户端来记录和监督文件的浏览信息。在每次分发机密文档时把阅读器一起捆绑[2]进行分发,所以需要对阅读软件及文件本身的安全同时进行保护。
2.1 多重的捆绑验证机制
为实现离线状态下对文档操作的身份识别和操作的不可否认,采取了严格的多重身份验证机制,把阅读端、文件、设备和用户相互关联,任一方有了改变均无法通过验证,以此来保障数据安全及监督的有效。
在文件被分发后把相关部分分为4块:软件与Keyfile文件、机密文档与监督信息文件、U盘和用户。通过多重的捆绑验证机制来保证机密文档只有在4个方面都验证无误后才能打开阅读。具体实现技术有2点:
2.1.1 文件和设备的捆绑
为避免阅读软件或机密文档因非法拷贝造成泄密,把软件和机密文档与存储设备进行捆绑,使软件无法在其他设备运行,机密文档在其他设备上无法正常解密阅读。
在把机密文档写入设备时,分发端软件读取授权者信息、被授权者信息、授权时间、随机数和U盘标识信息(如序列号、容量等),然后用散列算法SHA1散列后加密生成标识串A,并记录到磁盘。为保障标识信息的安全,综合考虑实用性和技术可行性,本文利用DBR(分区引导扇区)之后的保留扇区来存储验证信息。对于U盘常用的FAT32文件系统,在任一分区中都含有一个DBR,为扩展引导代码。在DBR之后提供了一些保留扇区,这些扇区一般不被系统使用,是理想的隐蔽存储区。此方法对一般的FAT32文件系统都有效,对文件操作(文件创建、复制、删除)透明,但磁盘操作(如磁盘格式化)将导致失效。此时这一标识串A既能唯一标识[2]此U盘,又能标识此次授权。然后把除设备信息外的各信息加密后记录入Keyfile文件[3],同时利用设备信息和授权者信息参与文档加密密钥的生成,这样在打开阅读端时需要读取设备信息来生成标识串与存入设备的标识信息进行验证,在打开文档时也需要读取存储设备信息和Keyfile信息来生成解密密钥。这样当软件或数据被非法拷贝到其他存储设备时,软件就会无法通过验证启动,文档也会因为无法生成正确的解密密钥而打不开。用此方法实现了锁定软件与设备(模型如图1)、文档与设备(模型如图2)的关联关系。
图2 设备与文档加密捆绑模型
通过使用这些加密及校验措施,实现阅读端、文件与设备的关联捆绑,软件的启动要在指定设备上才能正常进行,文档要在指定设备上才能正常解密并阅读,避免了文档被非法复制到其他设备造成的泄密。
2.1.2 文件间的捆绑校验
为解决阅读软件与文档的捆绑,即避免用户用授权给他的阅读软件阅读非授权给他的文档,需要对每次分发的阅读软件和本次授权的文档进行绑定。在分发阅读软件时先从Keyfile文件读取授权者的信息、分发时间和随机码,然后用SHA2散列生成识别串B注入阅读端,再把此识别串加密后存入此次授权文档的监督信息文件,在打开文档时就会解密识别串B,并与阅读软件中的记录进行校验。这样就使每次分发的阅读端只能打开当次的授权文档,实现阅读软件与文档的捆绑,一次分发的阅读软件可以绑定一份或多份文档。
为防止文件内容被恶意篡改,保护文件的完整性和合法性,常用的方法是对文件进行散列后把散列码与文件一起分发,用户依据文件和散列码的对应关系来识别文件的完整性。但分别进行散列不能锁定文档与审核信息,且散列码容易被分析定位,故系统在分发机密文档时,先对文档和记录相关监督信息的文件进行相互校验并分别压缩打包(校验模型如图3),阅读时需要解密后在内部分别解压缩再相互验证散列码。如果不符合,则说明该文件被修改过,此时停止对文件的所有授权操作,需要管理员审核后重新授权方可访问。
图3 文件相互校验模型
2.2 文档的安全保护
为了保护机密文档,就必须从文档分发权限认证,到数据的加密及捆绑验证,再到阅读时的验证和监控来防止内部网络数据的流失及泄密。
2.2.1 分发限制
为防止分发端滥用权限,在分发端利用内部网络的分级认证机制,对管理员进行分级管理,使其只能对一定保密级别的文件进行授权,在后台记录详细的文件授权信息,并能对各管理员限定相应的授权次数(如表1)。次数到达后管理员需重新申请证书,通过证书分发审核的监督来避免因分发人员问题造成巨大损失。
表1 权限
分发时先在后台记录各管理员每次授权的详细资料,如文件名、密级、授权时间,软件的授权期限及启动次数、文档的授权期限及阅读次数、被授权者信息和授权码等,在每份文档回收时进行这些信息的验证。
分发软件时利用授权者信息、分发时间及随机序列与注入阅读端软件的识别码B实现阅读端与Keyfile的捆绑,然后将阅读端利用SHA2算法散列生成验证码,记录入Keyfile文件,以实现软件自身的完整性检验,防止软件被“爆破”或其他技术手段分析破解。
分发机密文档时对每份授权文档进行签名,以识别每份文档的授权者。授权时将文档的使用限制条件(如阅读次数、时间期限等信息)记录入监控文件,然后将文档和监控文件进行捆绑并加密,以实现对分发文档的使用情况进行限制和有效监控。文档的分发流程如图4所示。
图4 文档分发流程
随机码和时间作为变量的参与使每次分发均具有唯一性,这些捆绑及检验措施的运用使每次分发的软件、文件、存储设备及授权用户是一次授权的整体,在阅读时各方缺一不可。
2.2.2 文件加密
随着计算机计算速度的飞速提高,以前的一些加密算法(如DES、MD5)的安全性已经显得岌岌可危。AES作为21世纪新的加密标准,它的密钥长度可以为128,192或256,而且在理论上没有上限,故此加密算法可被视为是安全的[4]。常见的SHA1散列算法可能存在和MD5一样的碰撞攻击漏洞,而SHA-2则迄今为止还没有出现被成功攻击的报道[5]。故在此选择了AES(高级数据加密标准)和SHA2来保护数据文档。
由于阅读计算机环境的不确定性,使目前较常用的利用非对称密码加密保护密钥的方式不适用于本方法,为增加密钥的安全性,在分发机密文档时,读取存储在保留扇区的设备标识串和分发时存入Keyfile的随机数参及当前时间生成加密密钥(密钥生成模型参考图2),再把读取到的当前时间、阅读端软件的授权码记录(如监督信息文件),让同一口令加密的机密文档在不同时间或设备上生成的加密密钥是不相同的,在阅读文档时先解密监督信息文件,利用其记录检验设备及软件是否符合,通过检验后再按密钥生成机制读取设备标识串和Keyfile信息,生成解密密钥,这样就提高了系统的抵抗逆向分析的能力。
2.2.3 异常检测
为了方便用户使用,便于在出现断电、死机等情况下对文件进行恢复等处理,需要对文件异常状况进行登记、检测和处理,判断系统是否非正常使用,这样既便于在异常情况恢复文件,又有利于审核文件时能发现异常操作。同时为了防止别有用心者对软件进行动态跟踪或破解,系统可以对软件设定一个异常状况阀值,当软件异常次数超出此数值时,能锁定软件或自动删除客户端和相关数据文件,最大限度地保护数据安全。当出现异常退出状况时,能做出检测并恢复文件信息,有效地对文件系统进行保护。
这些保护措施的采用充分保障了文档的数据安全,即使软件或文件被非法复制,窃取者也无法运行软件或解密文件。
3 监督审核的设计与实现
在软件和文件的安全性有了充分保障后,利用软件、文件与设备的捆绑与相互检验,使正常阅读操作局限在文件的分发设备上。当客户端启动时,利用指纹生成系统生成阅读计算机的指纹,在打开每一份文件前,把指纹信息记录到该文件的审核日志,同时跟踪记录用户对文件的操作历史,并屏蔽不必要的风险操作,如禁止拷贝、粘贴等风险操作。
审核记录的真实性主要通过加密手段及捆绑技术来保证,让使用者不能对其进行修改。如果发现文件有修改痕迹,系统能及时通过校验手段发现,并能停止文件的授权,直到分发机构或管理员重新审核并授权。
3.1 计算机指纹生成模型
通过一台计算机的CPU ID、网卡的MAC地址、硬盘的序列号等可以区分不同计算机信息,统称为这台计算机的指纹。由于指纹的唯一性,软件商可以利用其来实现软件授权码和计算机的绑定,也可以利用其来实现对浏览过文件的计算机进行标识,在出现失泄密问题时可以及时锁定泄露地点及途径,帮助我们挽回损失。同样也可以利用这些信息来指定阅读文件的具体计算机,避免文件携带者在其他地方阅读文件。
目前,常见的软件系统在设计指纹系统时,常固定使用其中的某一种或几种信息,虽然这样也能保证指纹的唯一性,但软件容易被攻击者按生成机制分析并伪造出认证码。为了提高序列号的稳定性和安全性,充分利用如上所提这些信息来生成计算机指纹,有利于事后准确定位阅读过文件的计算机。本文在设计指纹系统时,针对硬盘序列号是必然存在,且具有唯一性、稳定性[6],而主板序列号、CPU ID及MAC地址不一定能获取到的情况,采取1+X(X代表区后3种序列码的0到3种,由系统初始时随机选取后再读取,如果获取不到,则由默认的一个串值代替)的方式来生成计算机指纹,使每条指纹是由硬盘序列号再加上剩余3种序列号的随机组合来生成的,这在保证了序列号的唯一性时又使其具备随机性,增加了利用硬件的可更换性伪造计算机指纹的难度,提高了系统的安全性。
指纹的生成模型如图5所示。在软件启动时,先启动登记部分,利用WinAPI函数直接调用GetVolumeInformation获取硬盘信息;调用GetCPUVendorx获取CPU厂商信息(AMD或INTEL);再用GetSystemInfo函数获取CPU信息;使用Microsoft的Netbios API获取MAC地址。如果特殊情况下取不到某个标示信息时,如CPU为奔腾3以下,用一个特殊串代替即可。最终将这些获取到的信息经散列变换生成计算机指纹(如图5所示),再将硬盘序列号和指纹写入监督信息文件,在审核时就能以此找出用户曾经的阅读地点(具体计算机)。
图5 计算机指纹生成模型
3.2 监控的实现
文件监控技术,就是能够对打开文件、读/写文件等文件操作进行监控、记录,其目的就是有效地解决内网内部重要机密文件的安全问题,对机密文件进行实时监控,记录对机密文件的一切操作。目前常用的文件监控技术有基于虚拟设备挂接方式监控技术和基于拷贝钩子(API HOOK)的文件监控技术。本文针对U盘文档需要离线监控的特点,结合拷贝钩子和Win32API函数[7],找出了一种能独立地监控U盘上的文档使用情况的方法。
在启动软件或打开文档时,都先生成计算机指纹,对阅读地址(具体计算机)进行登记,并把软件使用信息记录入Keyfile,把文档操作历史记录入对应监督文件。对文档的动作捕获主要利用Windows系统提供的深层API函数和HOOKAPI来实现。在Windows系统中,当对文件进行剪切、拷贝时,操作系统会产生一个消息响应来触发系统对文件进行操作,所以捕获消息响应可以捕获监控系统对文件的操作。这样当用户对监控文件进行操作时,根据操作动作的不同,可利用API函数或钩子进行消息响应的捕获,然后对消息响应进行分析和记录,实现对文件的有效监控。
在阅读端对文件的剪切、拷贝以及普通的截屏操作都可以归结为Windows的剪贴板操作[8],所以能使用SetClipboardViewer(HWND)函数向剪贴板观察链中加入一个观察窗口。当剪贴板的内容发生变化时,该窗口会接收到一个WM_DRAWCLIPBOARD消息,它标识了将要加入的下一个窗口。然后响应WM_DRAWCLIPBOARD消息处理剪贴板内容的变化,利用HasFormat属性判断其内容是否是位图(CF_BITMAP)或文本(CF_TEXT)并进行登记。最后在程序关闭时直接清空剪贴板,避免信息泄露。
同时安装键盘钩子,用SetWindowsHookEx函数将监控程序定义的钩子过程安装到钩子链中,当键盘事件发生时,调用钩子处理函数KeyBoard-Hook进行响应,结束后调用CallNextHookEx执行钩子链表所指的下一个钩子子程[9]。
利用此方法实现对文档的监控实现复杂度低,效率较高,能监控用户常规使用下的相关操作。
3.3 审核
审核的目的是为了规范和监督用户对文档的使用,同时能通过审核监督文件发现用户的违规使用情况,在发生失泄密事故时能利用监督信息排查出可能的泄密环节,进行追溯以挽回损失。
由于审核者不一定需要知道文档的内容,故在审核时只需要对监督信息进行解密,读取文档浏览的历史记录,避免因审核模块漏洞造成的泄密和信息扩散,把阅读权限和审核权限进行隔离。
4 结束语
针对U盘使用过程中容易产生的信息安全问题,本文提出的方法利用软件技术实现了对U盘上文档使用的监控及保护,并结合硬件保护技术对设备操作进行控制,使整个系统在各环节都具有很好的安全性,避免因为安全“短板”的存在威胁到整个系统。
该方法的提出很好地弥补了对涉密局域网离网文档的监管缺失这一信息安全问题,使涉密单位能及时发现和解决文档分发后的安全隐患和监管漏洞,具有良好的适用性和运用前景。
[1] 王欣瑜,李钊,杨百龙,等.移动存储介质认证方法研究[J].无线电通信技术,2008(1):56-58.
[2] 廖洪其;凌捷;郝彦军,等.USB移动存储设备的惟一性识别方法研究[J].计算机工程与设计,2010(12):2778-2780,2814.
[3] 段钢.加密与解密[M].3版.北京:电子工业出版社,2008.
[4] 何明星,林昊.AES算法原理及其实现[J].计算机应用研究,2002(12):61-63.
[5]SHA1 Collisions can be Found in 2^63;Operations.[2010-05-24].http://www.rsa.com/rsalabs/node.asp?id=2927.
[6] 丁思捷,张普朝.应用硬盘序列号生成计算机指纹[J].计算机应用,2002(5):106-108.
[7] 张桂勇,陈芳琼.API for Windows 2000/XP详解[M].北京:清华大学出版社,2003.
[8] 于抒,杨泽缸,贾培发.计算机安全监控系统的关键技术研究[J].计算机工程,2007(12):146-148,152.
[9] 戴春达,符红光.WIN32中钩子的实现技术及其应用[J].计算机应用,2002(8):72-74.