一种安全USB技术研究与实现-设计应用_第1页
一种安全USB技术研究与实现-设计应用_第2页
一种安全USB技术研究与实现-设计应用_第3页
一种安全USB技术研究与实现-设计应用_第4页
一种安全USB技术研究与实现-设计应用_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

精品文档-下载后可编辑一种安全USB技术研究与实现-设计应用大多数普通安全U盘通过使用软件实现安全U盘加密功能。在使用过程中,用户需要打开专用的U盘浏览器或管理工具等,不但操作不方便,而且不符合USB设备使用习惯和人性化设计。

本文通过对驱动层硬件插拔(PNP)的研究,PNP是由Microsoft提出的,英文Plugandplay的缩写,中译即插即用,意思是系统自动侦测周边设备和板卡并自动安装设备驱动程序,作到插上就能用,无须人工干预,是Windows自带的一项技术。所谓即插即用是指将符合PNP标准的PC插卡等外围设备安装到电脑时,操作系统自动设定系统结构的技术。这就是说,当用户安装新的硬件时,不必再设置任何跳线器开关,也不必用软件配置中断请求(IRQ)、内存地址或直接存储器存取(DMA)通道,Windows会向应用程序通知硬件设备的新变化,并会自动协调IRQ、内存地址和DMA通道之间的冲突。

在分析了WindowsDDK/FSD驱动开发技术、卷上过滤驱动技术,提出了在Windows系统插入USB设备时,自动挂载符合规定卷格式的USB设备,映射为本地磁盘,USB(UniversalSerialBus)即“通用串行总线”是一种应用在计算机领域的新型接口技术。USB的拓扑结构中居于地位的是Host(也称为主机)。任何USB的数据传输都必须由主机来发起和控制,所有的USB外设都只能和主机建立连接,任何两个外设之间或是两个主机之间无法直接通信。而目前,大量的扮演主机角色的是个人电脑PC。随着USB应用领域的逐渐扩大,对于USB的期望也越来越高。我们希望USB能应用在各种计算机领域中,希望能通过PDA等移动设备直接和USB外设通信,使得USB能应用在没有PC的领域中。

1原理与架构

系统分为驱动层和应用层,驱动层包括一个卷过滤驱动程序和一个文件系统过滤驱动;应用层包括一个应用程序和与驱动交互的dll。应用层是隐藏界面的应用程序。卷过滤驱动对USB盘的(PNP)动作识别,读移动硬盘卷的头为512B,对特定标识识别,如果不符合卷标示,则可采用禁用或放行等;如果符合卷格式和标识,则对此卷进行映射。

普通U盘使用前需要格式化,物理U盘上的数据是随机的数值。密码算法采用基于口令的密码系统(RFC2898),口令和盐(salt)结合产生密钥。盐可看作是对口令导出的一个大密钥集合的索引。盐和迭代次数构成了PKCS#5v1.5中基于口令加密基础。系统总体架构序列图如图1所示。

加密算法可采用AES-256、Serpent、Twofish等,解密时通过判断厂商标识以及CRC-32校验和是否正确,在此过程中在权限注册区读入相应的注册信息,如GUID和厂商标识等。如上述过程正确,则执行正确的卷映射过程。

2研究与实现

系统应用层主要由三个线程组成,主线程是应用程序,剩下卷映射线程和卸下卷(unmount)线程分别用来在USB存储设备做PNP时对本地盘进行卷映射和卸下卷。线程和驱动层采用事件通信机制。本系统定位于移动存储设备,包括移动硬盘、U盘及移动存储卡等移动存储介质。密文区是从内部可信计算机拷贝数据到USB存储设备,数据在后台加密处理后存放的区域;权限注册区则写入GUID和必要的厂商、运行权限、内外网策略等。

卷映射线程收到底层USB的PNP动作时,首先得到运行环境,根据运行环境得到USB存储设备读写权限,然后根据相关密码、密钥等参数通过DEVICEIOCONTROL通知驱动创建本地虚拟盘,广播DBT_DEVICEARRIVAL消息通知操作系统。

集中注册与授权,使用前必须经过授权中心统一注册与授权,包括格式化、实名注册、标识密级、指定授权计算机、是否采用口令保护等。授权后的移动存储介质在涉密计算机上能正常使用,当未授权的移动存储设备接入计算机时,系统可自动关闭USB端口,使未授权移动存储介质无法在涉密计算机上使用。

对于正确安装了移动存储安全系统客户端的计算机,客户端自动上报该机状态,完成到控制台服务器注册功能,有效防止非法用户安装客户端程序。灵活的注册策略,可设定移动存储介质允许的计算机或组;管理员可随时更改移动存储介质注册策略和信息,包括远程策略变更、挂失和注销等;外出拷贝功能是将COPY到U盘内安全存储的数据与外界没有安装客户端程序的计算机进行数据交互使用。

应用层完成对移动存储设备的格式化工作。对卷起始位置写入密码、校验和等信息,提供了FAT32和NTFS两种文件系统格式。在驱动中对移动存储设备做卷映射,创建类型为FILE_DEVICE_DISK卷过滤驱动,使用不同的盘符。在IRP_MJ_WRITE和IRP_MJ_READ请求例程中进行加解密。在IRP_MJ_WRITE分发例程中把相关的IRP存入队列。在新创建的系统线程内进行卷加密。在IRP_MJ_READ中进行解密。

注册主要由应用层注册工具完成,可由用户选择FAT32或NTFS格式。注册流程如下:访问移动存储盘,输入需要注册信息。注册信息包括:移动存储盘密码、标签名、安全等级、客户标识名、分区个数、内网移动存储策略、外网移动存储策略、1~5等级的移动存储策略。

插入安全U盘后,得到处理环境信息:是否为有效设备、是否有客户端代理、客户标识匹配、在内网否、安全等级是否1~5,然后决定应用不同策略。驱动只要挂载存储卷的UpperFilter即可完成卷的加解密任务。

在PnP技术出现之前,中断和I/O端口的分配是由人手工进行的,您想要这块声卡占用中断5,就找一个小跳线在卡上标着中断5的针脚上一插。这样的操作需要用户了解中断和I/O端口的知识,并且能够自己分配中断地址而不发生冲突,对普通用户提出这样的要求是不切实际的。PnP技术就是用来解决这个问题的,PnP技术将自动找到一个不冲突的中断和I/O地址分配给外部设备,而完全不需要人工干预。但是如果您读懂了上面关于中断冲突的那一部分,您就应该了解,在中断资源非常紧张的今天,即使是PnP技术,也不一定能找到一个合适的中断分配给您刚刚插入的设备,所以尽量释放那些没有必要的中断,对PnP正常工作也是很有帮助的。

卷过滤驱动在IRP_MJ_PNP请求时监控设备的插拔消息,程序判断是否是指定的卷格式,如发现是移动存储设备,则用DeviceIoControl与驱动层通信。通过对新加卷的监控,实现对移动存储设备的加解密。应用层通过DeviceIoControl与应用层的通信获得用户密钥和权限策略。

在文件系统驱动层映射卷的流程如下:应用程序调用ZwCreateFile或IoCreateFileSpecifyDeviceObjectHint,I/O管理器确定请求的目标是哪个逻辑卷,检查是否设置了VPB_MOUNTED。如此卷在系统引导后未被卷映射,则I/O管理器发送卷映射请求(IRP_MN_MOUNT_VOLUME)。

对移动存储设备的格式化可分为FAT32和NTFS两种格式。卷过滤驱动监控系统的PNP行为,如移动介质头512B符合卷头格式,则使用事件通知应用层对移动介质卷映射,卷映射线程将相关参数(盘符、密码、磁盘属性)等传递到文件系统驱动,创建一个FILE_DEVICE_DISK类型的过滤设备;然后创建一个线程,在线程中应用ZwCreateFile打开卷设备Handle,读取卷头信息,对卷头信息进行验证,如验证卷头信息成功,则创建相应盘符的符号链接;对USB设备加密模式为XTS;卸下卷线程接到拔下USB存储器通知事件后,对相应盘符进行卸载,清理相关资源。

应用层包括对卷格式化功能,对移动USB设备合法性验证、得到USB运行环境信息、根据策略信息对USB设备进行读写、禁用等控制。在USB设备上单开辟一个区域,用来存取注册信息以及写入注册信息和读取注册信息,生成GUID写入USB设备的标示,完成卷映射功能。

安全U盘总体设计序列图如图2所示。

在PNP发生时,驱动层和应用层通过事件进行通信。对卷映射和卸下卷过程各启动一个线程等待PNP事件发生。首先验证卷头格式,卷头信息读到RAM中。卷头64B是生成密钥所需的盐(salt),驱动层解密读入的标准卷头、解密过程中的所有数据保存在RAM中。在此过程中需要得到如下参数:

卷头导出函数用的PRF参数(见PKCS#5v2.0)可为:HMAC-SHA-512、HMAC_RIPEMD-160等;厂商标示密码和读入的盐值传给卷头密钥导出函数,生成头解密密钥和扇区解密密钥;使用的加密算法为AES-256;解密时对照厂商标示密码及校验和,密钥用来解密卷上的扇区。

主要数据结构和参数如下:

(1)卷映射数据结构

typedefstruct

{

IntnReturnCode;//底层sys返回码

ShortwszHsVolume[MAX_PATH];//卷名称

PasswordVolumePassword;//用户密码

BOOLbCache;//是否在驱动中缓存密码

IntnDosDriveNo;//需要卷映射的盘符号

IntBytesPerSector;//扇区字节数

BOOLbSystemVolume;//是否为系统卷

BOOLbPersistenVolume;//是否为隐藏卷

BOOLbMountReadOnly;//是否映射为隐藏卷格式

BOOLbMountRemovable;//是否映射为可移动

//存储设备

}MOUNT_STRUCT;

(2)设备信息结构

typedefstruct_SECDEVICEINFO

{

CHARszProvider[SD_MAX_PROVIDER_LEN];

//设备提供者名称

DWORDdwDeviceType;//设备类型

CHARszDeviceID[SD_MAX_DEVICE_ID_LEN];

//设备标识

__int64dwDeviceCapacity;//设备容量

}SECDEVICEINFO,*PSECDEVICEINFO;

(3)策略数据结构

typedefstruct_POLICYDATA

{

BOOLbEnableSecPart;//是否启动保密区

BOOLbReadSecPart;//是否可读保密区

BOOLbWriteSecPart;//是否可写保密区

BOOLbEncryptSecPart;//是否加密保密区

BOOLbEnableExchPart;//是否启用交换区

BOOLbReadExchPart;//是否可读交换区

BOOLbWriteExchPart;//是否可写交换区

BOOLbEncryptExchPart;//是否加密交换区

BOOLbExchPartToSecPart;

//是否允许从交换区复制到保密区

BOOLbsechPartToSecPart;

//是否允许从保密区复制到交换机

}POLICYDATA,*PPOLICYDATA;

应用层创建双线程,等待PNP消息,如接入USB盘符和特定卷格式,则对卷做相应卷映射和卸下卷。

对卷卷映射函数:

IntMountVolume(

intdriveNo,

char*volumePath,

Password*password,

MountOptions*mountOptions,

BOOLbReportWrongPassword);

对卷卸下卷函数:

BOOLUnmountVolume

(intnDosDriveNo,BOOLforceUnmount);

创建内存中卷格式:

intVolumeWriteHeader(char*header,intea,intmode,Password*password,

char*masterKey,

PCRYPTO_INFO*retInfo,

BOOLbWipeMode);

读入USB卷头:

intVolumeReadHeader(char*encryptedHe

温馨提示

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

评论

0/150

提交评论