基于虚拟文件系统的u盘安全存储方法

文档序号:6542687阅读:161来源:国知局
基于虚拟文件系统的u盘安全存储方法
【专利摘要】本发明提出一种基于虚拟文件系统的U盘安全存储方法,基于虚拟文件系统在U盘内构建虚拟磁盘,采用多级保密措施对数据进行保护,从而使U盘的存储和使用更加安全可靠。技术方案:在U盘内划分安全区域,将其格式化为虚拟文件系统作为虚拟磁盘(虚拟磁盘以文件形式存在,实质是文件系统);以基于U盘的唯一标识符为基础,使U盘与虚拟磁盘进行绑定,防止拷贝;进入虚拟磁盘需要用户输入密钥,用户输入的密钥经过特定的生成算法和密钥管理机制进行保护;对虚拟磁盘进行加密与解密;用户还可以绑定使用该虚拟磁盘的计算机,对虚拟磁盘进行访问控制。
【专利说明】基于虚拟文件系统的U盘安全存储方法
【技术领域】
[0001]本发明属于移动存储【技术领域】,涉及一种基于虚拟文件系统的U盘安全存储方法,特别是涉及一种基于虚拟文件系统的多级保密机制的U盘安全存储方法。
【背景技术】
[0002]随着社会信息化程度的不断提高,人们对信息存储的要求越来越高,而且电子文档、音乐、电影、图片、软件等数字文件越来越多,U盘作为传播数字文件的主要介质,具有携带和使用方便,拷贝和传播灵活的特点。
[0003]但是这一特点也给数据安全带来了挑战。普通U盘在使用不当、被盗或丢失的情况下会给个人或企业带来严重数据失泄密隐患。无论是个人隐私还是公司的涉密文件,甚至到国家的机密,都有可能因为一时疏忽造成不可挽回的后果,因此U盘的安全存储有很重要的意义。
[0004]目前关于U盘的加密工具有很多,但是这些加密工具所采用的方法大多是对U盘中的文件直接加密的方式,使用的密钥也相对简单,一般是用户输入一个密码,加密软件使用这个密码对文件进行加密。这种方法虽然能在一定程度上保护U盘中的文件,但是仍然有一些漏洞。首先,U盘中的加密文件可以被随意的拷贝到别的存储介质中进行破解,而不会被拥有者发现。其次,U盘中的文件可以在任意一台计算机上使用,如果用户丢失了 U盘,加密文件被破解的可能性很大。最后,密钥管理方案不够完善,密钥泄露的可能性较大。此夕卜,当前有许多基于虚拟文件系统的安全存储技术,但是这些技术都存在一定的不足和局限性。首先,这些技术大部分都应用于计算机中,缺少移动性;其次,只提供了硬件绑定的技术,没有解除绑定的功能,这样只有在绑定的计算机上才可以使用这类软件,限制了使用范围;还有就是没有提供防拷贝的功能。

【发明内容】

[0005]要解决的技术问题
[0006]为了避免现有技术的不足之处,本发明提出一种基于虚拟文件系统的U盘安全存储方法,克服上述U盘存储带来的安全隐患,防止U盘丢失、被拷贝或被他人恶意修改所导致的重要文件或涉密文件被非法传播、使用和修改。
[0007]技术方案
[0008]一种基于虚拟文件系统的U盘安全存储方法,其特征在于步骤如下:
[0009]步骤1:定义虚拟磁盘参数,参数包括虚拟磁盘的大小Size、选择建立虚拟磁盘的U盘及存储路径Path、用户密钥UserKey、绑定的计算机硬件及该硬件的标识符HardID ;所述硬件的标识符为:MAC地址、硬盘序列号或BIOS序列号中的任意一种;所述绑定方式为:以长度为3的字符数组array [3]的元素分别标示MAC地址、硬盘序列号和BIOS序列号,当字符数组其中一个元素为‘I’表示绑定,否则表示未绑定;
[0010]步骤2:通过“Key = UserKey + UID + HardID”生成虚拟磁盘的明文密钥Key ;其中:UID为U盘的供应商ID、产品ID和序列号按序连接的唯一标识符;
[0011]步骤3:对虚拟磁盘的明文密钥Key进行MD5散列,得到磁盘密钥Key_U ;
[0012]步骤4:在存储路径为Path的U盘内创建一个文件File,文件大小为虚拟磁盘的Size与字符数组array [3]的长度之和,其中用来存储array [3]数组的3个字节不进行格式化操作和加密操作;
[0013]步骤5:在创建的文件File中构造一个虚拟文件系统VFile ;所述虚拟文件系统是在Ext2文件系统的格式上,将块组内超级块和块组描述符移到块组外,再删除超级块中与虚拟文件系统有关的次要信息;所述次要信息为时间信息和兼容性信息;
[0014]所述虚拟文件系统的格式顺序为:校验块、超级块、N个块组描述表、N个块组;
[0015]所述每个块组中的格式顺序为:块位图、索引节点位图、M个索引节点表、K个数据块;其中:每块大小为1024个字节;每个块组包含多个块;
[0016]步骤6:随机选择一种加密算法,用磁盘密钥Key_U通过该加密算法对虚拟文件系统VFile中的各块进行加密,生成最后三个字节用来存储array [3]数组的虚拟磁盘;
[0017]步骤7:用户将存有虚拟磁盘的U盘连接到计算机,当选择加载虚拟磁盘时验证用户密钥UserKeyl,过程如下:
[0018]I)如果虚拟磁盘的最后三个字节都为‘0’,虚拟磁盘未绑定计算机,HardID为空,否则按与MAC、硬盘或BIOS这三个硬件的对应关系,对标识为‘I’的硬件,获取硬件的标识符 HardID ;
[0019]2)通过“Keyl = UserKeyl + UID + HardID”生成虚拟磁盘的明文密钥Keyl,其中:UID为U盘的供应商ID、产品ID和序列号按序连接的唯一标识符;
[0020]3)对明文密钥Keyl进行MD5散列,得到磁盘密钥Keyl_U ;
[0021]4)遍历所有的解密算法,用生成的磁盘密钥Key 1_U解密虚拟磁盘的超级块,通过虚拟文件系统识别解密后的超级块;
[0022]如果UserKeyl = UserKey,虚拟文件系统可以识别解密后的超级块,加载虚拟磁盘成功,否则如果用户密钥UserKeyl Φ UserKey,解密后的超级块无法被虚拟文件系统识另Ij,加载失败。
[0023]有益效果
[0024]本发明提出的一种基于虚拟文件系统的U盘安全存储方法,基于虚拟文件系统在U盘内构建虚拟磁盘,采用多级保密措施对数据进行保护,从而使U盘的存储和使用更加安全可靠。技术方案有:在U盘内划分安全区域,将其格式化为虚拟文件系统作为虚拟磁盘(虚拟磁盘以文件形式存在,实质是文件系统);以基于U盘的唯一标识符为基础,使U盘与虚拟磁盘进行绑定,防止拷贝;进入虚拟磁盘需要用户输入密钥,用户输入的密钥经过特定的生成算法和密钥管理机制进行保护;对虚拟磁盘进行加密与解密;用户还可以绑定使用该虚拟磁盘的计算机,对虚拟磁盘进行访问控制。
[0025]本发明在使用过程中结合了虚拟文件系统、加密技术、硬件绑定技术、U盘绑定技术和完善的密钥管理技术,大大提高了 U盘使用的安全性。
[0026]I)虚拟文件系统的使用使得U盘中的密盘和操作系统分离,操作系统不能直接识别密盘的文件系统,这样能够有效地保护密盘中文件的安全。
[0027]2)本发明采用加密技术队虚拟磁盘的数据块进行加密,密钥采用用户密码和硬件指纹结合经哈希算法后得到的固定长度的值,进一步提高了密盘中文件的安全性。
[0028]3)为了确保U盘只能在某个特定的机器上使用,本发明采用了把U盘和主机进行绑定的方法。本发明把主机的硬件信息和用户的密码及U盘的唯一标识一起经过哈希后得到的哈希值作为加密密钥。如果U盘不是在绑定的机器上使用的话,管理软件会提示出错信息,无法打开密盘。
[0029]4)前面提到本发明还把虚拟磁盘和U盘的绑定,通过这种方法,使得虚拟磁盘即使被拷贝到别的存储介质中也能确保它的安全性。因为管理软件打开虚拟磁盘时会自动获取存储介质的硬件信息,如果发现不是原先绑定的U盘,管理软件同样不能打开虚拟磁盘。
[0030]5)完善的密钥管理技术则进一步降低了密钥泄露或被破解的可能性,使得U盘更安全。
【专利附图】

【附图说明】
[0031]图1为基于虚拟文件系统的U盘安全存储方法的步骤【具体实施方式】
[0032]现结合实施例、附图对本发明作进一步描述:
[0033]本实施例基于虚拟文件系统的U盘安全存储方法包含以下五级保密措施:
[0034]1、虚拟文件系统。该虚拟文件系统不是传统意义上的Linux操作系统中使用的虚拟文件系统,而是我们自己设计的文件系统,该文件系统不是周知的文件系统,它将虚拟盘内的文件和操作系统隔离。
[0035]2、U盘绑定。采用VID (供应商ID)、PID (产品ID)和序列号构成U盘的唯一标识符,通过U盘的唯一标志符将虚拟磁盘和U盘绑定,这样虚拟磁盘中的文件只能在该U盘中使用,防止别人拷贝虚拟磁盘。
[0036]3、磁盘密钥的生成和管理。软件中采用特定的生成算法生成明文密钥和密文密钥,并采取数据和密钥结合的方式将密钥隐式存放在虚拟磁盘中,使密钥被窃取的可能性降低。
[0037]4、虚拟磁盘的加密与解密。本发明加密模块中包含多种加密和解密算法,虚拟磁盘加密时要先进行分块,再在加密模块中随机选择一种算法使用密文密钥对各分块加密。
[0038]5、主机硬件绑定。将虚拟磁盘和使用虚拟磁盘的计算机的硬件信息(如硬盘序列号、BIOS序列号等)绑定,在非绑定的计算机上不能使用该虚拟磁盘,实现虚拟磁盘的访问控制。
[0039]图1为基于虚拟文件系统的U盘安全存储方法的步骤
[0040]1、自定义虚拟磁盘参数:参数包括虚拟磁盘的大小Size、虚拟磁盘的存储路径Path (选择建立虚拟磁盘的U盘)、用户密钥UserKey、绑定的计算机硬件及该硬件的标识符HardID ;其中,硬件的标识符是MAC地址、硬盘序列号或BIOS序列号中的任意一种;以长度为3的字符数组array [3]的元素分别标示MAC地址、硬盘序列号和BIOS序列号,字符数组中的元素为‘I’表示绑定,为‘0’表示未绑定,如果都不为‘1’,HardID为空;
[0041]2、通过“Key = UserKey + UID + HardID”生成虚拟磁盘的明文密钥Key,将U盘的VID (供应商ID)、PID (产品ID)和序列号按序连接构成U盘的唯一标识符,这里定义为UID ;
[0042]3、对虚拟磁盘的明文密钥Key进行MD5散列,得到磁盘密钥Key_U ;
[0043]4、在存储路径为Path的U盘内创建文件File,文件大小为虚拟磁盘的Size与字符数组array[3]的长度之和,其中用来存储array [3]数组的3个字节不进行格式化操作和加密操作;
[0044]5、在创建的文件File中构造一个虚拟文件系统VFile ;其中虚拟文件系统是在Ext2文件系统的格式上,将块组内超级块和块组描述符移到块组外,再删除超级块中与虚拟文件系统有关的次要信息:时间信息和兼容性信息;
[0045]虚拟文件系统的格式顺序为:校验块、超级块、N个块组描述表、N个块组;每个块组中的格式顺序为:块位图、索引节点位图、M个索引节点表、K个数据块;其中:每块大小为1024个字节;每个块组包含多个块;
[0046]6、随机选择一种加密算法,用磁盘密钥Key_U通过该加密算法对VFile中的各块进行加密,生成虚拟磁盘(末尾的三个字节用来存储array [3]数组),本发明中可供选取的加密算法有:AES和IDEA ;
[0047]7、用户将存有虚 拟磁盘的U盘连接到计算机,当选择加载虚拟磁盘时验证用户密钥 UserKeyl ;
[0048]8、如果虚拟磁盘的最后三个字节都为‘0’,虚拟磁盘未绑定计算机,HardID为空,否则按与硬件的对应关系,对标识为‘1’的硬件,获取硬件指纹HardID;
[0049]9、通过“Keyl = UserKeyl + UID + HardID” 生成虚拟磁盘的明文密钥 Keyl, UID为当前U盘的唯一标识符;
[0050]10、对明文密钥Keyl进行MD5散列,得到磁盘密钥Keyl_U ;
[0051]11、遍历所有的解密算法,用生成的磁盘密钥Key 1_U解密虚拟磁盘的超级块,通过虚拟文件系统识别解密后的超级块,本发明中可供选取的解密算法与加密算法一一对应;
[0052]12、如果UserKeyl = UserKey,虚拟文件系统可以识别解密后的超级块,加载虚拟磁盘成功,否则如果用户密钥UserKeyl ? UserKey,解密后的超级块无法被虚拟文件系统识别,加载失败。
[0053]下面通过两个具体实施实例说明本发明的方法步骤:
[0054]实施实例一:
[0055]用户获得加密过的U盘后,使用客户端打开虚拟磁盘的过程如下:
[0056]I)插入U盘,打开磁盘管理软件;
[0057]2)选择加载的虚拟磁盘;
[0058]3)输入用户密钥UserKey ;
[0059]4)获取虚拟磁盘绑定的硬件指纹HardID和U盘的唯一标识符WD ;
[0060]5)由 “Key = UserKey + UID + HardID” 得到 Key ;
[0061]6)对明文密钥Key进行MD5散列,得到磁盘密钥Key_U ;
[0062]7)遍历加密模块中所有的解密算法,用生成的磁盘密钥Key 1_U解密虚拟磁盘的超级块直到超级块能被虚拟文件系统识别;
[0063]8)如果所有的解密算法都尝试之后,超级块都无法被识别,则用户密钥错误,需要重新输入密钥,否则用户密钥正确,打开虚拟磁盘。
[0064]实施实例二:
[0065]虚拟磁盘绑定计算机硬件后,若想在其他计算机上使用,解绑计算机硬件信息过程如下:
[0066]I)插入U盘,打开磁盘管理软件;
[0067]2)按照实施实例一的步骤打开虚拟磁盘;
[0068]3)选择解除绑定计算机硬件;
[0069]4)获取U盘的唯一标识符UID和用户密钥UserKey ;
[0070]5)计算明文密钥 Keyl, Keyl = UserKey + UID + HardID (HardID 为空);
[0071]6)对明文密钥Keyl进行MD5散列,得到磁盘密钥Keyl_U ;
[0072]7)用旧的磁盘密钥Key_U解密虚拟磁盘数据块,用新生成的磁盘密钥Key 1_U对数据块重新加密。
【权利要求】
1.一种基于虚拟文件系统的U盘安全存储方法,其特征在于步骤如下: 步骤1:定义虚拟磁盘参数,参数包括虚拟磁盘的大小Size、选择建立虚拟磁盘的U盘及存储路径Path、用户密钥UserKey、绑定的计算机硬件及该硬件的标识符HardID ;所述硬件的标识符为:MAC地址、硬盘序列号或BIOS序列号中的任意一种;所述绑定方式为:以长度为3的字符数组array [3]的元素分别标示MAC地址、硬盘序列号和BIOS序列号,当字符数组其中一个元素为‘I’表示绑定,否则表示未绑定; 步骤2:通过“Key = UserKey + UID + HardID”生成虚拟磁盘的明文密钥Key ;其中:UID为U盘的供应商ID、产品ID和序列号按序连接的唯一标识符; 步骤3:对虚拟磁盘的明文密钥Key进行MD5散列,得到磁盘密钥Key_U ; 步骤4:在存储路径为Path的U盘内创建一个文件File,文件大小为虚拟磁盘的Size与字符数组array[3]的长度之和,其中用来存储array [3]数组的3个字节不进行格式化操作和加密操作; 步骤5:在创建的文件File中构造一个虚拟文件系统VFile ;所述虚拟文件系统是在Ext2文件系统的格式上,将块组内超级块和块组描述符移到块组外,再删除超级块中与虚拟文件系统有关的次要信息;所述次要信息为时间信息和兼容性信息; 所述虚拟文件系统的格式顺序为:校验块、超级块、N个块组描述表、N个块组; 所述每个块组中的格式顺序为:块位图、索引节点位图、M个索引节点表、K个数据块;其中:每块大小为1024个字节;每个块组包含多个块; 步骤6:随机选择一种加密算法,用磁盘密钥Key_U通过该加密算法对虚拟文件系统VFile中的各块进行加密,生成最后三个字节用来存储array [3]数组的虚拟磁盘; 步骤7:用户将存有虚拟磁盘的U盘连接到计算机,当选择加载虚拟磁盘时验证用户密钥UserKeyl,过程如下: 1)如果虚拟磁盘的最后三个字节都为‘0’,虚拟磁盘未绑定计算机,HardID为空,否则按与MAC、硬盘或BIOS这三个硬件的对应关系,对标识为‘I’的硬件,获取硬件的标识符HardID ; 2)通过“Keyl= UserKeyl + UID + HardID”生成虚拟磁盘的明文密钥Keyl,其中:UID为U盘的供应商ID、产品ID和序列号按序连接的唯一标识符; 3)对明文密钥Keyl进行MD5散列,得到磁盘密钥Keyl_U; 4)遍历所有的解密算法,用生成的磁盘密钥Key1_U解密虚拟磁盘的超级块,通过虚拟文件系统识别解密后的超级块; 5)如果UserKeyl= UserKey,虚拟文件系统可以识别解密后的超级块,加载虚拟磁盘成功,否则如果用户密钥UserKeyl Φ UserKey,解密后的超级块无法被虚拟文件系统识别,加载失败。
【文档编号】G06F21/80GK103955654SQ201410130961
【公开日】2014年7月30日 申请日期:2014年4月2日 优先权日:2014年4月2日
【发明者】谷建华, 周兴社, 赵天海, 王涛, 王云岚, 李秀春, 侯正雄, 赵利民, 王依寒, 王建伟 申请人:西北工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1