利用文件加密文件(精选11篇)
利用文件加密文件 篇1
加/解密程序使用XOR算法,根据字符在文档中位置的不同转换为不同的字符。可以对图片、可执行程序、office文档等各种文件进行加/解密操作。
1程序设计
1.1算法思想
常用的数据加密方法主要有移位和置换法,目前,实现移位和置换的算法很多。从特点看,异或运算最适合用于简易加解密运算,因为当一个数A和另一个数B进行异或运算会生成另一个数C,如果再将C和B进行异或运算则C又会还原为A。使用这种算法能够比较容易地对明文和密文进行转换。
使用XOR对数据加密是很容易破解的。因为利用XOR对明文字符进行置换,相同的明文字符会置换为相同的密文字符。如果有足够多的密文,就可以根据字符使用的频率,在密文中猜测出使用最多的几个字符,进而猜测出英文单词或中文字词,这就比较容易的破译密文。例如字符e,假设密钥为11,其XOR结果为chr(asc(“e”)XOR 11)=n。字符串eeeeee的密文为nnnnnn。根据统计结果在英文中字符e用的最多,在足够多的明文中统计出现最多的字符,得出的结果为n,即可推断n的明文应为字符e,据此可推算出密钥11,破译也就十分容易了。
要增加其难度,就要在对文件加密时加入一随机因子,使相同的明文以不同的字符呈现在密文中。仍以字符串eeeeee为例,将字符的位值k与密钥11相加,与其XOR的结果为:
字符串eeeeee的密文为ihkjut。相同的明文字符变成了不同的密文字符。
1.2在VB中实现的可行性
VB中的所有和字符串相关的函数使用的字符集都是Unicode。Unicode是用两个字节表示一个字符的字符编码方案。此方案与其它传统单一字节的字符集不同的是,其使用两个字节来表示一个字符,这使得可用字符的数量大大增加。Unicode的字符都是双字节的,VB在进行内部处理时,英文字符和中文字符被同等对待。并且支持世界上的所有的常用文字。
VB提供了XOR函数,可以对数字、布尔变量,字符进行异或运算,两次异或的结果即为原值。因此,是基本加/解密函数。例如:对于中文字符“息”,asc(“息”)XOR28=24943,24943 XOR 28=24687,chrw(24687)=“息”。
由此可以认为:以位值作为随机因子,用XOR运算对数据进行加/解密在VB中是可以编程实现的。
1.3程序界面
程序使用单一窗口,窗口中的主要控件如下。
1.4参考代码
2结束语
加/解密程序虽然使用代码较少,但由于密钥与字符位值的结合,使得相同字符在密文中的呈现各不相同,增大了破译难度。
参考文献
[1][美]Scott Warner著.Visual Basic6.0程序设计.第一版.汉明工作室,译.北京:人民邮电出版社,1999-08.
[2]徐连诚,王奎锋,汪莉.VB6.0文件加密的一种实现方法.上海:计算机应用与软件,2003(3):53-55.
利用文件加密文件 篇2
XP自带的加密功能加密,现主盘重新安装了Windows
XP系统,从盘的加密文件打不开了,请问如何打开加密文件呢?
答:在Windows 中,微软采用了基于公共密钥加密技术的加密文件系统(EFS)。在Windows XP中,对加密文件系统做了进一步改进,使它能够让多个用户同时访问加密的文档。不过,在使用EFS加密文件的同时,也产生了诸多麻烦,比如重装系统后无法打开EFS加密过的文件夹等,
在没有备份密钥的情况下,要对EFS解密几乎是不可能的,虽然网上流行很多种方法,但是可行性微乎其微,建议不要浪费时间。因为在Windows 2000/XP中,每一个用户都有一个SID(Security Identifier,安全标示符)以区分各自的身份,每个人的SID都是不相同的,并且有唯一性。在第一次加密数据的时候,操作系统就会根据加密者的SID生成该用户的密钥,并且会把公钥和密钥分开保存起来,供用户加密和解密数据。如果在重装系统之前没有对当前的密钥进行备份,实际上就意味着无论如何都不可能生成此前的用户密钥,而解密文件不仅需要公钥,还需要密钥,所以也就根本不能打开此前EFS加密过的文件夹。
QQ加密邮件让文件更安全 篇3
小朵姐姐,自从发生了用户名和密码泄露事件后,我在发送邮件时特别是比较保密的内容,总是担心害怕有人会偷窥邮件。邮件发出之后总是心神不宁的,有没有办法让邮件也像文件那样加密啊?
鱼小朵:看来淀粉们的安全意识的确增强了不少,让我想一想!嘻嘻,有了,QQ邮箱的加密邮件功能就可以完全做到,这样好友在收到邮件后需要密码才能打开正文和附件,没有密码都是白搭!
一、发送加密邮件
登录QQ邮箱后,单击[写信],在写信页面按照正常的步骤设置好邮件的收件人、主题、正文及附件后,单击展开其右下方的“其他选项”并勾选“对邮件加密”项。这时就会打开“邮件加密”窗口,在里面输入两次密码并单击[确定]。现在,我们只要单击[发送],即可将该加密邮件发送出去。
二、查看加密邮件
如果好友也用QQ邮箱,点击查看你发给TA的加密邮件,先进入一个邮件解密的页面,在“请输入邮件密码”文本框中设置密码,单击[确定]就能查看邮件的正文及附件内容了。
小提示:即使解密后正常退出邮箱并清除浏览器cookie后,再次阅读邮件时也需要重新输入密码。
磁盘文件透明加密技术 篇4
随着IT技术的飞速发展,很多企业办公、设计、管理日益电子化。这些电子文档存储在计算机硬盘中,一旦被拷贝或者通过网络传播出去,在另一台计算机上就可用同样的应用软件打开这些电子文档,造成信息泄密。透明加密技术是近年来针对企业文件保密需求应运而生的一种文件加密技术。应用透明加密技术,用户在指定的计算机上操作这些文件时会自动对这些文件进行加解密,不需要输入密码,用户在环境内使用密文不影响原有的习惯,但文件已经始终处于加密状况。一旦离开环境(指定的计算机),文件将得不到解密服务,将无法正确打开,从而起到保护电子文件知识产权的效果。
1 磁盘文件加密技术原理
磁盘的透明加密主要方法有3种,第一种是BIOS接管方式,这种方式在计算机刚刚启动的时候就接管BIOS中磁盘操作的中断,类似还原卡、还原精灵这类产品就是利用这个原理工作的。这种方式工作在最底层,工作方式不够灵活,很难根据需要配置对哪些类型文件的文件进行加密。所以一般很少用在磁盘透明加密的的应用中。
第二种是HOOK(钩子)技术。所有Windows应用程序都是通过Windows API函数对文件进行读写的。程序在打开或新建一个文件时,一般要调用Windows的Create File或OpenFile、ReadFile等Windows API函数;而在向磁盘写文件时要调用WriteFile函数。通过截获这些函数的操作,就可以接管文件的操作。但是Windows的安全保护机制限制了一个任务不能随便的访问另一个任务的进程空间。利用Windows提供了一种叫钩子的消息处理机制,允许应用程序将自己安装一个子程序到其它的程序中,以监视指定窗口某种类型的消息。当消息到达后,先处理安装的子程序后再处理原程序。这就是钩子。钩子透明加密技术就是将上述两种技术组合而成的。通过Windows的钩子技术,监控应用程序对文件的打开和保存,当打开文件时,先将密文转换后再让程序读入内存,保证程序读到的是明文,而在保存时,又将内存中的明文加密后再写入到磁盘中。钩子透明加密技术与应用程序密切相关,它是通过监控应用程序的启动而启动的。一旦应用程序名更改,则无法挂钩。监视钩子程序运行在Windows应用层,很容易被操作人员发现,通过结束进程的办法关闭保护进程,使保护程序失效。
驱动加密技术基于Windows的文件系统(过滤)驱动(IFS)技术,工作在Windows的内核层。我们在安装计算机硬件时,经常要安装其驱动,如打印机、U盘的驱动。文件系统驱动就是把文件作为一种设备来处理的一种虚拟驱动。当应用程序对指定类型的文件进行操作时,文件驱动会监控到程序的文件读写操作,通过分析判断是否是需要保护的数据,如果是需要保护的数据就进行加密或者解密工作,从而达到透明加密的效果。驱动加密技术与应用程序无关,他工作于Windows的内核层。当API函数对指定类型文件进行读操作时,系统自动将文件解密;当进入写操作时,自动将明文进行加密。由于工作在受Windows保护的内核层,运行速度更快,加解密操作更稳定。驱动加密技术虽然有诸多的优点,但由于涉及到Windows底层的诸多处理,开发难度很大。如果与其它驱动的冲突、程序操作有错误,造成系统崩溃甚至还会丢失用户数据文档。
2 驱动透明加密的相关技术
驱动透明加密技术工作在Windows的内核层,根据Windows内核驱动分层设计的原理,Windows内核是一个分层驱动模型(图1)。
每一个物理设备对应着多个驱动设备对象,而这些驱动设备对象是按照分层结构堆叠的。每一层只能同上面层和下面层进行服务请求交互,这些服务请求信息被统一的设计为IRP(I/O请求包)。每一个驱动设备对象处理IRP完一次,完成一次服务。这些设备对象根据目的的不同,被设计为不同的功能。Windows的分层驱动程序模型允许用户开发第三方驱动程序,并通过Io Attach Device By Pointer或者Io Attch Device函数将自己的设备驱动程序插入到这个分层结构中,这样我们的第三方驱动程序就有机会截获IRP,然后通过分析IRP,针对自己感兴趣的IRP包进行相应的处理。这种第三方驱动程序称为过滤驱动程序。
2.1 磁盘过滤驱动程序的挂接
根据上面叙述的原理,我们可以设计一个文件系统的过滤驱动程序来完成我们的功能。首先需要把过滤驱动程序挂接在某个硬盘分区之上,可以在过滤驱动程序的入口点DriverEntry例程发送一个IRP,请求驱动程序来挂接到硬盘上。该过程的函数调用流程为:由ZwCreateFile得到硬盘分区的设备句柄,再用ObReferenceObjectByHandle得到对应的FILEOBJECT指针(Windows把每个设备当作一个文件来看待,并有一个对应的FILEOBJECT结构描述其属性),然后调用IOGetRelatedDevieeObjeet得到硬盘分区设备对象指针,然后调用IOCreateDevice来构造代表过滤器的一个设备并为它指定驱动程序也就是过滤驱动程序。最后调用IOAttachDeviceByPOinter把该设备挂接在硬盘分区设备上。
挂接上设备链后,我们的驱动就可以截获对文件的IRP请求包。根据我们磁盘过滤驱动的要求,我们只对打开文件、读文件、写文件的IRP进行处理,对于其他IRP请求,我们则统统直接传递给下层驱动程序处理。
2.2 被保护程序的判别
当通过API函数CreateFile对文件进行打开操作时候,驱动程序需要判断打开的文件是否属于需要保护的文件。我们是通过进程内核的PEB(进程环境块:Process Enviroment Block)对象来查看当前发出该请求的进程。Windows操作系统为每一个进程在内核都创建了一个PEB对象。该对象的ImageFileName成员变量就是进程的名字。驱动程序可以调用内核函数Ps GetCurrentProcess获得运行上下文环境的PEB对象,然后根据进程名就判断是否是我们需要保护的进程。需要注意的,不同版本的Windows的PEB中ImageFileName的偏移量是不确定的,为此,我们通过内核函数PsGetVersion判断Windows的版本号来决定ImageFileName的偏移量。表1是常用Windows版本的ImageFileName偏移量。
2.3 文件读写操作
对于文件读写请求,内核有两种数据传送方式,一种是缓冲I/O的方法,这种方式由Windows操作系统自动分配内核态的内存,然后将用户传递的读写磁盘数据拷贝到这个内核态UserBuffer中,然后传递给驱动程序,驱动程序处理的是这个内核态的内存数据。驱动程序处理完毕后返回用户态程序的时候,由Windows操作系统再将这个内核态的内存数据拷贝回用户态内存。显然这种方式存在着内核态和用户态内存的拷贝和状态的切换,对于文件操作这种数据量比较大的操作,速度显得很慢了。另一种是使用直接I/O,这种方式减少了Windows的数据复制。这种方式是通过Windows直接传递一个内存描述符列表(Memory descriptor list,MDL)来实现的,这个描述符列表是描述用户空间缓冲区,驱动程序可以通过相关函数操作该MDL来得到用户写磁盘数据。在实际的文件操作中两种方式的操作都要支持,通过判断IRP包中的MdlAddress和UserBuffer成员变量来判断的。如果IRP.MdlAddress不为0,则说明是采用的MDL方式,则可以通过内核函数Mm GetSystemAddressForMdlSafe来获得到需要的读写磁盘数据。如果IRP的UserBuffer成员变量不为0,则说明采用的缓冲I/O的方式,我们可以通过直接IRP的UserBuffer获得需要的读写磁盘数据指针。
2.4 加密种子的选择
对于数据加密算法,我们需要能标示计算机“身份”的信息作为加密种子,这样即使文件被拷贝走,如果加密种子不对也无法解密数据。我们可以选择CPUID、网卡序列号、硬盘序列号作为标示计算机“身份”惟一性的参数,这些参数可能在有的计算机上的设备并不支持,比如说对于老式计算机的CPU和硬盘就没有序列号,所以需要几种方式都需要支持。
使用汇编指令CPUID可以获得CPU的信息,包括CPU类型、型号、制造商信息、商标信息、序列号等信息,其中序列号是生产时的惟一序号,具有惟一性,可以用来做加密种子。
硬盘序列号是硬盘在生产的时候为每个硬盘分配的惟一标示号,要取得这个序列号我们可以在驱动层读取硬盘相应的寄存器得到信息,这种方式比较复杂繁琐,幸好绝大多数磁盘的设备驱动程序都支持通过发送相应的IRP取得磁盘序列号,其中IRP中功能号IoControlCode为0x0007c088,可以通过向硬盘驱动发送这个IRP就可以获得磁盘序列号。
网络底层的物理传输过程中,是通过物理地址来识别主机的,物理地址一般也是全球惟一的,网卡在生产的时候都在网卡上固定了一个MAC地址,通过GetAdaptersInfo函数可以获得网卡的MAC地址。
3 总结
计算机信息技术飞速发展,越来越多的电子信息被保存在计算机上,由于电子信息传播的十分方便,很容易造成信息的泄密。磁盘透明加密技术通过对保存在计算机上的信息进行实时的加解密,即不影响计算机合法使用者的使用,又防止了机密文件被拷贝,对于保护企业、政府、机关的机密数据有很好的推广价值和应用前景。本文对磁盘透明加密中的关键技术问题进行了分析和阐述。
参考文献
[1]谭文,邵坚磊.天书夜读:从汇编语言到Windows内核编程[M].电子工业出版社.2009.
[2]马林.数据重现——文件系统原理精解与数据恢复最佳实践[M].清华大学出版社.2009.
利用文件加密文件 篇5
也别太灰心,在这里我们仅学习操作方法!!!
对Word文件进行加密,可通过如下办法来实现:
执行这样的操作:“工具”→“选项”,弹出如下的对话框:
选择“安全性”选项卡,之后说明部分操作就行了!
让WinRAR加密文件固若金汤 篇6
多重加密
用破解软件破解加密文件时,一般都要先指定一个目标文件,接下来根据字典使用穷举法来破解设置好的密码。经过实验,笔者把多个文件压缩在一起,然后分别给它们设置密码,破解软件就无能为力了。具体操作步骤如下:
首先准备好要加密的重要文件和几个无关紧要的文件;然后将重要文件按照平常的步骤压缩,并设置密码(图1);然后在WinRAR操作界面中,打开刚才已经压缩完成的加密文件,选择“命令”|“添加文件到压缩文件中”选项(图2)。
接着在“选择添加文件”窗体中(图3)点选准备好的其他文件,“确定”后回到“压缩文件名和参数”对话框,在“高级”选项卡中设置一个不同的密码(图4),最后完成压缩即可。
试着打开压缩文件,是否每一个文件都有表示加密的星号存在?打开每个文件都需要输入先前设置的相应密码。最重要的是,一般的解密软件根本对付不了按照这种方法加密的文件。另外,此法对于Zip文件的加密同样有效。
避免反复输入密码
当我们用WinRAR对文件进行加密后,每次执行压缩包里的程序时,它都会让我们输入密码,当文件很多时会使人不胜其烦。而同样是压缩软件,WinZip就与WinRAR不太一样,WinZip只在打开其中第一个文件时要求输入密码,只要第一次通过了密码验证,以后就可以直接查看加密压缩包里面的其他文件。要想让WinRAR也能同样方便,可以这样做:在打开加密的压缩包以后,用鼠标点击“文件”菜单里的“设置默认密码”命令,然后输入正确的密码,就可以一次解决问题(图5、图6)。
一次性给压缩文件自动加上密码
有时需要创建很多个加密压缩包,如果一个一个地来设置密码,那效率也太低了。要是能够在生成压缩文件的同时自动加上一个自己设定的密码,那该多好呀!利用WinRAR的设置默认的压缩选项可达到这个目的。
点击菜单中的“选项”|“设置”,在弹出的设置窗口中选择“压缩”选项卡。点击“创建默认配置”按钮(图7),在“设置默认压缩选项”的窗口中选择“高级”选项卡。
文件加密系统设计与实现 篇7
关键词:密码学,DES算法,RSA算法,加密系统设计
1 绪言
随着Internet的发展人类已经步入信息时代,在信息时代,信息安全问题越来越重要。我们经常需要一种措施来保护我们的数据,防止被一些怀有不良用心的人所看到或者破坏。因此,在客观上就需要一种强有力的安全措施来保护机密数据不被窃取或篡改。解决这个问题的方式就是数据加密[1]。近年来,保护个人敏感数据成为人们关注的热点问题。使用加密技术是一种比较成功的保护方法。特别是在当今相互合作以及公共工作环境下,电脑中的资料可能对于写工作人员时可见的而对于另外一些工作人员是不可见的,对于一些文件进行加密是有必要的[2]。因此选择这个方面作为自己的论文研究方向,想通过对数据加密方法的研究对密码学有一个全面的认识,同时在研究过程中对当前已经比较成熟的加密算法进行学习并且总结和比较得出自己的结论并结合需求分析选择几种常见的加密算法设计、实现一个自己的单机文件加密系统。
2 系统采用的关键技术
公开密钥密码系统一般是基于数学上难解的问题,所以其安全性高,同时,密钥的管理比较容易。缺点是它的密钥太长、运算速度比对称算法的慢很多;公开密钥密码系统生成一对公私钥的速度比较慢,通常需要几分钟以上,从而对有大量用户的系统而言,服务器的工作效率不高[3]。
鉴于对称密钥密码算法和公开密钥密码算法的特点,综合使用DES对称密钥加密算法和RSA公开密钥加密算法来保障信息安全。大量数据用64bit密码长度的DES对称密码算法进行加密,而公开密钥密码算法则使用1024bit长度的RSA公开密钥加密算法进行加密,此种方法既保证了数据信息的安全又提高了数据加密和解密的速度,实现了对数据信息安全、加密效率的要求[4]。
2.1 DES算法的实现过程
DES工作的基本原理是,其入口参数有三个:key、data、mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性[4]。
DES算法是这样工作的:如Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果[5]。
对于单机用户用于保存不需在网络中传递的文件则只需要在加密的时候输入一个自己熟悉但相对来说比较复杂不易被其他人破解的密码串就行,记住该密码串在解密的时候输入就行。
DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的速度是每一秒种检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的,当然,随着科学技术的发展,当出现超高速计算机后,我们可考虑把DES密钥的长度再增长一些,以此来达到更高的保密程度[6]。
2.2 RSA算法的实现过程
首先产生一对公钥和私钥:
(l)选取两个大素数p和q(10到20个十进制数或更大),为了获得最大程度的安全性,两个数的长度最好相同。两个素数p和q必须保密。
(2)计算p与q的乘积:n=p*q。
(3)再由p和q计算另一个数Z,Z=(p-1)*(q-1)。
(4)随机选取加密密钥e,使e和Z互素。
(5)用欧几里德扩展算法计算解密密钥d,以满足e*d=l mod(z)。
(6)由此而得到的两组数(n,e)和(n,d)分别被称为公开密钥和私人密钥,简称公钥和私钥[7]。
其次是加密过程:RSA算法是一种分组加密算法,加密消息M时,首先将它分成比n小的数据分组(采用二进制数,选取小于n的2的最大次幂),也就是说,p和q为100位的素数,那么n将有200位,每个消息分组m,应小于200位长(如果需要加密固定的消息分组,那么可以在它的左边填充一些0并且保证该数比n小)。加密后的密文C,将由相同长度的分组组成。
由上述RSA算法可知:若n被因式分解,则RSA便可以被击破。因为n=p*q,如果p和q已知,那么Z=(p-1)*(q-1)便可以算出,故满足条件e*d=l mod(Z)的解密密钥d也不难求出。因此RSA的安全性完全依赖于大数的分解难度。RSA算法的公开密钥和私人密钥是一对大素数(10到20个十进制数或更大)的函数。从一个公开密钥和密文中恢复出明文的难度等价于分解两个大素数之积[8]。目前因子分解速度最快的方法,其时间复杂性为:exp(Sqrt(ln(n)lnln(n))).从技术上讲,这种安全性只是一种推测。
3 系统的设计与实现
根据需求分析,本系统的主要功能是保护存储在电脑的文件不被非法用户盗取后读取信息,面向用户主要是单机用户以及多用户系统,不涉及到网络传输,结合对称密钥加密体制和公开密钥加密体制的优缺点。设计主要功能有:读取文件路径,利用DES算法对文本文件中的数据进行加密和解密,利用RSA算法将DES算法的密钥加密并保存即密钥导出功能;同时可以导入加密后的DES密钥文件对其解密后辅助完成利用DES算法对数据的解密。主要功能如图1所示。
与此同时考虑到加密后密钥的安全问题以及当前移动存储介质的普遍使用,系统可以将保存加密后的DES密钥的文件导出到移动存储介质中,以便更好的保护密钥的安全同时也方便了用户对密钥的管理。在以前功能上有几点修改,将以前的导出功能改为保存,保存只是将加密后的密钥文件保存在当前文件夹下,新添加的导出功能是将加密后的密钥文件导出到移动存储器中;将导入功能改为加载,加载是将解密后的密钥读取到系统辅助数据的解密,新添加的导入是将保存在移动存储器中的加密后的密钥文件导入到系统。经过添加功能后系统的功能图如图2所示。
根据功能的不同将整个系统实现分为三个模块,分别为:MainFrame、DES、RSA。MainFrame的主要功能是显示系统界面,对系统界面布局进行定位并且接收由DES和RSA模块传来的参数辅助完成文件加密和解密功能,在加密和解密过程中给用户提供交互界面并文成加密后密钥的保存和导出及导入功能。DES的主要功能是接受由MainFrame传递过来的参数,对指定文件的数据进行加密和解密。RSA的主要功能接受由MainFrame传递的参数对指定的DES密钥进行加密并保存,同时可以将加密后的DES密钥导出,一边以后辅助完成数据解密功能。
3.1 MainFrame模块设计
定义一个MainFrame类,主要是界面的初始化,同时在加密和解密过程中起到桥梁的作用,传递参数。同时所有的相应函数均封装在MainFrame类中,便以管理和界面的优化。界面的初始化及所有的响应按钮:public class Mainframe extends javax.swing.JFrame
主要响应按钮响应的函数如下:选择要加密或者解密的源文件,将文件路径传递DES对象并显示在文本框中,private void jButton1ActionPerformed();输入DES密钥,并弹出对话框确认:private void jButton2ActionPerformed();数据解密,通过调用DES对象中的加密函数对数据进行加密:private void jButton4ActionPerformed();数据加密,首先通过调用DES对象中的获取密钥函数得到密钥,然后调用解密函数对数据进行解密:
生成RSA密钥对:
用RSA算法对DES密钥进行加密并保存:
将加密后的DES密钥文件导出到移动存储器中:
将RSA私钥导出到移动存储器中:
将经过加密并保存在电脑中的DES密钥解密并导入到加密系统:
结束系统:
3.2 DES模块设计
定义一个DES类,将参数和函数封装在DES类中。
public class DES
定义一个初始化函数和三个成员函数:
public void setKey(String s)//获得DES密钥
public void init()//对DES加密初始化,主要调用java系统函数
加密函数,source为要加密的文件的路径,result为加密后文件保存路径;因为在MainFrame模块中要对是否加密成功进行判断所以此函数要返回参数:
public String encryptorFile(String source,String result)加密函数设计框架图如图3所示。
解密函数,source为要解密的文件的路径,result为解密后文件保存路径;因为在MainFrame模块中要对是否解密成功进行判断所以此函数要返回参数:public String decryptorFile(String source,String result)解密函数设计框架图如图4所示。
3.3 RSA模块设计
定义一个RSA类,将主要参数和方法封装在RSA类中。public class:RSA定义三个成员函数:生成RSA的密钥和公钥并将私钥和公钥分别以dat文件形式保存在系统的当前文件夹中;因为在MainFrame模块中要对生成密钥是否成功进行判断所以此函数要返回参数;public String setkey(),密钥生成函数设计框架图如图5所示。
利用RSA公钥将传递进来的DES密钥进行加密并以dat文件形式保存在系统的当前文件夹中,传递过来的密钥是String形式的,只能由数字和字母组成;因为在MainFrame模块中要对是否加密成功进行判断所以此函数要返回参数;public String encryptorFile(String Dkey),加密函数设计框架图如图6所示。
利用RSA私钥对保存的加密后的DES密钥解密并传递给MainFrame类中的解密方法,实现密钥的导入功能,该方法中首先要读取RSA的私钥然后读取加密后的DES密钥文件;因为在MainFrame模块中要对是否解密成功进行判断所以此函数要返回参数:public String decryptorFile();解密函数设计框架图如如7所示。
4 系统的开发环境及实现
系统的设计选择在java环境下。Java技术是与平台无关,是当今被各大软件公司可接受为最高级的面向对象设计语言的主流技术;且Java安全API提供了加密、信息融合、密钥管理、认证、存取控制和数字签名等功能,允许开发者进行低层和高层的安全应用,而且在Java中,RSA密钥生成、RSA加密解密的功能实现十分简单,因为标准库中集成几乎所有功能,不需要从RSA算法出发进行编码。在j2se标准库中,javax.crypto中的Cipher类用于具体的加密和解密,java.security包直接提供了数字签名的相关方法。测试实例一,对txt文本文件进行加解密(密钥为000000)。
5 结束语
整体情况来说系统基本上达到预期的要求,能够对文本文件进行加密和解密并且方便公共环境下多用户系统对资源的共享,同时方便用户对密钥的管理,为用户提供了一个操作简单、方便实用的加密系统。
参考文献
[1]卢开澄.计算机密码学[M].北京:清华大学出版社,1998.
[2]耿祥义.Java基础教程[M].北京:清华大学出版社,2004.
[3]徐迎晓.Java安全性编程实例[M].北京:清华大学出版社,2003.
[4]Daeman Rijmen.高级加密标准算法[M].谷大武,徐胜波,译.北京:清华大学出版社,2003.
[6]赖溪松.计算机密码学及其应用[M].北京:国防工业出版社,2001.
加密文件的“外发”交流模式 篇8
利用动态加解密技术对电子文件进行加密处理,杜绝可能产生的内泄漏洞,使电子文件得到有效的保护。承载信息的电子文件,其主要作用在于信息的交流,而对电子文件进行加密处理,却为交流“设置”了障碍。如何处理这一“障碍”,快速方便进行信息交流,成为推广动态加解密技术的关键所在。
电子文件在信息流通领域中,具有快传、高效、量大、低成本等特点而著称。对于未进行加密处理,包括静态加密后的电子文件提交后,文件的所有权和处置权转移,文件所有者丧失该文件的保护权利,文件的安全性只能依靠接收者的行政管理。因此,文件所有者往往要求第三方签订保密协议,以保护所提交文件的安全,防止第三方向其他方泄漏文件的内容。
1. 普通电子文件的交流
在一般情况下,电子文件都以明文的方式进行交流,主要以纸质或电子文件的形式。文件的交流模式很多,一般为几种。
1.1 纸质文件
电子文件所有者通过计算机打印设备,将电子文件打印成纸质文件后,提交给接收者。接收者直接观看文件内容进行信息交流。
1.2 中间存储器
通过计算机的输出接口(如USB口)或光盘刻录机,将电子文件复制移动硬盘或可读写光盘上,接收者通过本地计算机进行信息交流。
1.3 内部局域网
通过内部计算机网络,直接访问电子文件,将电子文件复制到本地或直接利用对方计算机进行信息交流。
1.4 公共网站
将电子文件的内容或作为附件放置在公共网站的网页上进行展示,公众可以直接观看或下载到本地计算机上进行信息交流。
1.5 电子邮箱
通过电子邮件,将电子文件以内容展示或附件的方式传递到制定的接收者,接收者可以直接观看或下载到本地计算机上进行信息交流。
1.6 即时通讯
利用QQ、MSN、手机等即时通讯工具,将电子文件的内容进行展示或作为附件进行传递,接收者可以直接观看或下载到本地计算机或手机上进行信息交流。
2. 加密电子文件的交流
随着计算机应用的普及,电子文件的保密性越来越引起人们的注意,国内外许多著名开发商一直关注和研究电子文件保密方面的问题,陆续在各类软件系统中加入文件加密的功能和独立的文件加密系统,如Microsoft的Office系列、Adobe的Acrobat系列、Greatsky的GS-DES系统等。加密电子文件在给文件带来“私密”属性的同时,也带来交流的“障碍”,加密文件在未得到所有者的许可下,无法进行正常的使用。
2.1 文件加密的类型
电子文件的加密形式很多,“软”加密、“硬”加密、“软-硬相结合”加密以及“软-软相结合”加密是主要的方式。
1)“硬”加密一般是在计算机内部或者局域网络中增加硬件设备,通过硬件设备使电子文件在传输过程中给予加密处理,当传输结束后,加密属性自动给予解除。
2)“软”加密是利用应用软件内的加密功能或者专用加密软件对电子文件进行加密处理,加密后的文件必须采用利用相应的软件进行解密。
3)“软-硬相结合”加密是利用专用加密软件与相应的硬件系统(包括计算机本身)对电子文件进行加密处理,加密文件必须在相应的软件和硬件系统的情况下,对加密文件进行解密。
4)“软-件相结合”是利用专业加密软件与网络环境相结合的方式对电子文件进行加密,加密文件解密必须在相同条件下进行。
2.2 文件加密技术类型
对于使用专用文件加密系统,加密技术可分为静态加密技术(口令加密、许可证加密)、动态加密技术(透明加密)和附壳加密技术等。
1)静态加密技术
电子文件正式形成(保存)后,在产生该文件的软件中,如产生DOC格式的Wrod系统,利用系统自带的加密功能,加入“口令”或“密钥许可证书”进行加密,使该文件在使用使,必须输入相应的“口令”或利用“密钥许可证书”发放的公/私密钥方可“打开”该文件。利用静态加密技术,存在遗失“口令”和“密钥许可证书”的现象,也存在文件打开后,消除加密属性的可能性。
2)动态加密技术
电子文件在创建时,就处于加密状态,并与“加密策略”、“进程识别”以及硬件(或局域网环境)有关,电子文件的打开必须要处于这种环境,离开这种环境,加密文件是无法打开的。即使在打开文件的状态下,任何的保存或另存都是加密的,加密属性在得到授权后方能解除,不存在失效的可能性。
3)附壳加密技术
电子文件创建后,给电子文件的“外围”加上一个“壳”,以新格式的形式保存在计算机中。加“壳”的电子文件必须在相同的环境下进行操作,离开这个环境,电子文件是无法打开的,解除这个“壳”必须有附壳加密系统的专用解密工具,才能使电子文件与“壳”分离。
目前,静态加密技术普遍应用于个人,在单一文件编辑系统(如Word系统等)中以附加功能模块的身份出现,形成独立的、具有相应权威机构认证的加密软件产品比较少。而动态加密技术主要适用于团体组织,已形成较成熟的、具有相应权威机构认证的加密软件产品。
3. 基于动态加密技术的文件外发
在以动态加解密技术为核心的电子文件加密系统作用下,电子文件始终处于加密控制状态,用户局域网内交流以明文形式。加密文件一旦离开企业局域网环境,只能以“乱码”方式出现在计算机显示屏上或者直接退出文件操作系统。由于电子文件是以交流为目的,文件的接收者应在无“障碍”环境下使用文件,这就需要文件发送者对加密文件进行处理,以便适应接收者的需要。
提交接收者的文件,发送者往往要求接收者对文件的保密性提出要求,防止文件在未征得发送者意见的情况下,向第三方泄漏或转交第三方。因此,在电子文件加密系统中,提供既能在非加密状态下正常使用加密文件,又防止加密文件的内容泄漏到第三方(包括复制、打印等)的功能。下面以GS-DES大天图文档安全管理系统(简称GS-DES系统)[1]为例,说明加密文件外发的过程与原理。
3.1 GS-DES系统基本情况
GS-DES系统基于网络环境下的电子文件加密系统。GS-DES系统采用动态加解密技术对电子文件进行控制(加密),结合硬件加密锁区分不同的用户和GS-DES系统的使用许可数,GS-DES系统的安全性通过公安部的认证和销售许可。GS-DES系统的主要技术功能有多种。
1)采用管理端与客户端分离的形式,管理端使用者具有一定的安全职责,客户端使用者为普通人员。管理端同时具备电子文件的加密和解密功能,客户端只有对电子文件的自动加密功能。
2)在局域网内,可采用不同的加密策略和识别进程,确定部门(或客户端)之间的文件格式控制范围和密钥。
3)电子文件加密过程始终处于后台,文件创建之时就处于加密控制状态,对客户端使用者不产生任何障碍和多余的操作步骤。
4)管理端通过远程访问的形式,对客户端的加密运行状态、加密策略和进程识别进行监控和在线调整,并对文件解密操作进行记录。
5)加密文件的解密实行审批流程,获得解密审批的加密文件,系统自动给予解密,并存放到指定的区域(位置)。
6)实行电子邮箱许可制度,对纳入许可的电子邮箱之间,发送以附件形式的加密文件实现自动解密。
7)系统自我保护机制,杜绝对系统和系统进程的自行卸载、终止,网络临时中断时,系统具有一定的冗余度,保证在冗余度内的正常控制。
8)实行单机移动办公机制,使处于移动状态的客户端(包括笔记本电脑)始终处于控制状态下。
3.2 GS-DES系统外发电子文件的形式
GS-DES系统外发加密文件主要以明文文件和密文文件等两种形式提交接收者,接收者按照事先约定的方式和保密要求使用加密文件,图1为GS-DES系统加密文件外发过程:
1)解密外发
经过GS-DES系统的加密文件解密审批流程,需要解密的加密文件生成副本,系统对副本进行自动解密,并存放在指定的位置。解密后的文件(副本)以明文文件的形式提交接收者,接收者可以在任何环境下浏览和编辑该文件。
2)电邮外发
经过双方的信任电子邮箱(纳入系统电子邮箱许可范围),将加密文件作为附件的形式发送给对方,加密文件下载时自动给予解密,并以明文的形式存放在接收者的计算机上,接收者可以在任何环境下浏览和编辑该文件。
3)转密外发
通过VPN技术连接到接收者的GS-DES系统服务端或使用接收者的GS-DES系统硬件加密锁,在发送者的GS-DES系统管理端中对需要转密的加密文件(该文件为副本)进行转密处理,并以密文的方式提交接收者,接收者在自己的GS-DES系统的环境下浏览和编辑该文件。
4)工具外发
在发送者的GS-DES系统管理端,通过制作接收者专用客户端(浏览工具),并与需要发送的加密文件进行打包处理,发送给接收者。接收者在指定的计算机上安装专用客户端(浏览工具),并在规定的时间或浏览次数内,浏览指定的加密文件。
3.3 GS-DES系统外发电子文件的特点
加密文件的外发是为了信息的交流,既要保证加密文件的接收者能够顺利使用加密文件,也要维护加密文件外发者的合法权利。因此,GS-DES系统的加密文件的外发具有以下特点:
1)根据文件内容和接收者的性质,对加密文件实行明文、密文(发送方密钥)或密文(接收方密钥)的形式外发;
2)根据工作性质,对加密文件实行审批解密或自动解密的形式外发;
3)根据接收者的情况,对加密文件实行转换密钥或提供浏览工具的形式外发;
4)根据发送者的情况,对加密文件实行管理者或普通者外发;
5)使用浏览器外发的加密文件,必须在指定的计算机上浏览,加密文件可规定浏览时间、次数以及保存、复制、打印、拷屏、远程桌面共享和OLE等操作功能的限制;
6)使用转换密钥外发的加密文件,加密文件可自动适应接收者的GS-DES系统环境,无需重新制订接收者的加密策略和进程识别;
7)只对纳入GS-DES系统信任邮箱范围的电子邮箱之间的发送进行自动解密。
4. 结束语
既要保证信息交流的方便和快捷,又要保证文件的安全与保密,是许多使用电子文件单位存在的现实问题和敏感性。GS-DES系统正确处理了加密文件的外发使用问题,使系统的应用者可以按照工作性质和对加密文件的安全要求,自行处理加密文件外发的属性,在信息安全保护的范畴中达到信息交流的目的。
参考文献
文件透明加密技术研究与实现 篇9
计算机数据本身所具有的易复制的特点, 使得计算机数据安全问题日益突出。目前, 针对计算机数据安全问题的解决方法主要有两类:一种是数据加密, 即事先运用各种加密算法对一些比较重要的文件进行加密, 这样即使数据被窃盗窃者也无法获取真实数据内容以此达到保护数据安全的目的;另一种方法是对数据访问和流向进行控制, 即通过事先制定各种安全策略使得盗窃者无从获取要保护的数据内容, 这种方法并不会改变数据本身的内容。
本文透明加密系统所使用的透明加密技术本质上属于前一种方法。它与传统的加密技术的不同就在于所有的文件加解密操作对用户都是透明的, 用户不需要改变原来的使用习惯。
二、透明加密相关技术
要实现透明加密, 我们必须能够捕获文件读写操作及其内容以便能够及时的完成相应加解密操作。在Windows环境下大体上有两种技术可以捕获文件的读写操作:API Hook和文件过滤驱动[1]。
2.1 API Hook
Windows应用程序对文件的访问操作一般都需要通过调用CreateFile、ReadFile等API来完成。而所谓的API Hook就是修改一些API的入口地址, 使所有对这些API的调用都先跳转到事先定义的函数中去。因此, 通过Hook一些常用的文件访问函数就可以事先捕获文件的读写操作从而完成加解密操作。
2.2文件过滤驱动
文件系统驱动就是把文件作为一种设备来处理的一种虚拟驱动。所有访问文件API最终都将调用内核层的文件系统驱动来完成相应的操作。因此, 通过在文件系统驱动之上加载一层过滤驱动也可以捕获所有的文件访问操作从而完成特定文件的加解密操作。
2.3两种技术的比较
使用以上两种技术都能捕获文件的读写操作从而完成透明加密的任务, 但由于两者工作的层面不同, 他们最终的实际应用效果也将不尽相同。使用文件过滤驱动加解密的稳定性好、效率高且加密策略相对灵活, 而使用API Hook加解密文件时特别是大文件时容易死机、效率低下而且容易被反Hook技术破解。因此, 文件过滤驱动更适合用于实现透明加密。
三、透明加密系统工作原理
3.1 Windows NT文件系统
Windows NT文件系统是存储管理子系统的一部分, 主要负责向用户提供非易失性媒介信息的存储、转发等操作[2]。图1显示了文件系统驱动的工作原理:
应用程序的文件读写请求首先会到达I/O管理器。对于所有non-cached I/O, I/O管理器会为之构造一个IRP包发送给文件系统驱动, 接着文件系统驱动将该IRP进行必要的处理后继续调用下层驱动完成读写请求。对于同步cached I/O, I/O管理器会将当前操作视为Fast I/O, 接着通过Fast I/O例程的返回值判断Fast I/O path是否可行[3]。如果可行则直接缓存管理器交互并操作数据, 否则I/O管理器重新构造IRP包交由文件系统驱动处理。对于其他类型的I/O, 文件系统驱动在收到I/O管理器的IRP包之后, 并不将该包下发给下层驱动而是直接与缓存管理器进行交互, 如果所操作的数据没有映射到缓冲区内, 那么内存管理器将会根据相应的情况向I/O管理器发送一个non-cached I/O进行相应的操作。
3.2系统实现原理
实现文件的透明加密需要在文件系统驱动之上加载一层过滤驱动, 这样就能截获所有应用程序对文件的访问操作。对于符合加密策略的读写操作, 就可以在内核层动态进行解密加密操作, 从而达到透明加密的效果。从表面上看该加密系统的文件过滤驱动程序需要设计两类派遣例程:普通的IRP包的派遣例程;Fast I/O的派遣例程。但是它们最终都要通过向I/O管理器发送non-cached I/O实现磁盘文件数据的读写, 因此只需要重写普通IRP包的派遣例程能实现动态加密的功能。当然这需要在设计派遣例程时加入加密点的判断。
四、透明加密系统设计与实现
4.1系统总体设计
系统主要分为两部分:应用层模块和内核模块。前者的主要负责加密策略定制, 后者负责过滤出符合加密策略的文件并动态完成其加解密的操作。内核模块驱动需含有这三类设备对象:对应文件系统控制设备对象 (CDO) 的过滤设备对象 (FiDO) FiDO1, 对应卷设备对象 (VDO) 的过滤设备对象FiDO2以及过滤驱动本身的控制设备对象[4]。控制设备对象在内核模块加载时会自动生成, 主要功能是记录必要信息并与应用层通信。FiDO1需要在文件系统加载时生成并放入对应的设备栈中, 主要功能是监视当前文件系统下新挂载的卷设备并及时生成对应的FiDO2。FiDO2需要在卷设备挂载时生成, 对于已经挂载完的卷设备需要手动枚举生成, 然后放入对应的设备栈中。它的主要功能是过滤出符合加密策略的操作并完成相应的动态加解密过程。图2显示了系统结构:
4.2应用层模块实现
应用层模块的实现需要解决制定加密策略和同内核驱动交互两个问题。
(1) 加密策略
加密策略由若干条规则组成。每条规则都包含三个部分加密对象、访问进程、加密级别。加密对象可以是特定的文件夹下的所有文件, 也可以是带有特定后缀名的文件。这些加密策略保存在特定的配置文件中, 为了减少内核模块的代码量在本系统中由应用程序负责解析出每条规则的内容并放入特定的数据结构中。
(2) 同内核的交互
应用程序同内核交互之前需要先加载相应的驱动, 基本过程如下:打开服务控制器、创建服务、打开服务、启动服务。应用层模块通过将调用CreateFile获得驱动设备的句柄传递给DeviceIoControl就能实现与内核模块的控制设备对象的交互。这样应用层模块就能将加密策略传递给内核模块, 并及时获取一些日志信息向用户显示。
4.3内核模块实现
内核模块的实现需要解决问题主要包括:过滤设备的挂载、加解点判断、数据获取和加密、以及与应用层的交互, 其中与应用程序交互这一部分内容在前面有所提及这里就不再做介绍了。这一节的最后给出了过滤驱动中读写派遣例程的流程。以下实现中针对的内核版本是NT5.1 (Windows XP) 。
(1) 过滤设备的挂载
要将FiDO1加入到对应的设备栈中, 首先要在驱动程序入口函数DriverEntry中调用IoRegisterFsRegistrationChang e。这个例程会在文件系统加载时 (在NT5.1中它会自动枚举系统中已加载的文件系统) 调用指定的回调例程。然后在回调例程中创建设备对象FiDO1并调用AttachDeviceToDevic eStackSafe将其加入对应的设备栈中。对于已经挂载到当前文件系统的卷设备, 需要手动枚举。而对于以后要挂载到当前文件系统的卷设备, 可以通过截获发往文件系统CDO的主功能号为IRP_MJ_FILE_SYSTEM_CONTROL副功能号为IRP_MN_MOUNT的IRP包获得相关信息。最后在获的文件系统的VDO后就可以创建设备对象FiDO2并将其加入到卷设备栈中。
(2) 加解点判断
通常情况下绝对不允许对系统文件以及根目录区文件进行加密解密操作, 否则会带来一系列的问题并严重影响操作系统性能。因此, 必须在加解密操作之前设计加密点用以区分哪些是符合加密策略的文件, 哪些是不需要加解密操作的文件。对于符合加密策略的文件还需要知道当前访问操作来自哪个进程, 防止非法应用程序的越权访问操作。加密策略中加密对象存放的都是文件的全路径, 而在文件系统驱动中都是通过文件对象 (FileObject) 来操作具体的文件。因此, 过滤驱动在得到指向FileObject的指针后需要调用ObQueryObjectString取得文件的全路径, 然而此时得到的形式类似“DeviceHardDiskVolume1MyDocumentTest.doc”。这就还需要将“DeviceHardDiskVolume1”这样的名字转化成“C:”这类的符号链接名。至于防止非法进程的访问操作, 可以通过将在当前读写的派遣例程中调用PsGetCurrentProcess得到当前操作系统正在执行的进程信息与加密策略中对应的进程进行比对来完成。
(3) 数据获取和加密
应用程序读写文件时会提供用户数据缓冲区, 而I/O管理器在处理读写请求的时候会为设备对象设置DO_BUFFER_IO、DO_DIRECT_IO两种标记中的一种或者两者都不是[5]。DO_BUFFER_IO标记表示I/O管理器已经将在非分页内存中分配了一块空间并将用户数据缓冲区的内容拷贝到了该空间中, 可以从Irp->AssociatedIrp.System Buffer得到相应的地址。这种方式不仅浪费宝贵的非分页内存而且多了一次内存拷贝操作效率低下, 在实际应用当中很少用到。DO_DIRECT_IO标记表示I/O管理器用一个内存描述符列表 (MDL) 描述用户数据缓冲区并锁定相关的分页内存, 指向这个MDL的指针可以在Irp->MdlAddress中的到。如果以上两者都不是, 那意味着用户数据缓冲区的用户模式虚拟地址可在Irp->UserBuffer找到。Irp->UserBuffer中的地址只在发出对应请求的线程上下文环境中才有效, 安全起见相关的代码应该包含在try…except…语句块中。因此, 过滤驱动在加解密数据时需要根据具体情况的不同从对应的地方获取数据。为了保证数据在加密前后大小的一致, 在选择加密算法时一般选择对称加密算法。
(4) 读写派遣例程
过滤驱动捕获用户的读请求时该请求还没完成无法直接对相应的数据进行解密, 需要做特殊处理。由于二者大体流程一样, 下面就以读派遣例程为例说明程:
1) 获得当前文件的全路径判断是否需要加密, 如果不需要直接交下层文件系统驱动。
2) 获得当前操作对应进程信息判断是否越权, 如果越权直接返回当前IRP包。
3) 判断当前IRP包的标志位是否为带有IRP_NOCACHE、IRP_PAGING_IO、IRP_SYNCHRONOUS_PAGING_IO三者中的一种, 如果都没有直接交下层文件系统驱动。
4) 设置完成例程, 初始化并等待内核事件K e E v e n t_R e a d C o m p l e t e。完成例程负责将KeEvent_ReadComplete置为signaled状态。 (写例程此步骤不需要)
5) 获取数据内容, 完成解密操作。
之所以不直接在完成例程中获取数据内容, 是因为完成例程所在的线程上下文环境不是发出读写请求操作的线程上下文环境, Irp->UserBuffer中用户数据缓冲区地址无效。
五、结语
本文的文件透明加密系统由于使用了文件过滤驱动技术, 具有安全、稳定、高效的优点, 而且能够广泛应用于对数据保密要求较高的机构如政府机关、研发型企业等。该系统主要是从数据加密的角度入手, 虽然能在一定程度上保证数据的安全, 但要最终形成一个完整的数据安全防护体系还需要在此基础上引入数据的访问控制和备份机制。
参考文献
[1]李民, 方勇.基于文件系统过滤驱动的文件加/解密技术研究与实现[J].四川:四川大学, 2006.
[2]David Solomon, Mark Russinovich.Windows Internals Fourth Edition[M].Washington:Microsoft Press, 2005
[3]Nagar R.Windows NT file system internals[M].New York:O.Reilly&Associates, 1998.
[4]武安河.Windows2000/XP WDM设备驱动程序开发[M].第二版, 北京:电子工业出版社, 2005
文件传输加密原则及处理方式研究 篇10
很显然, 传统的文件加密技术已经不能满足当今的网络环境。各种各样先进的窃密手段和越来越先进的窃密软件时刻威胁着文件传输的安全性。文件加密方式也伴随着网络安全的日益复杂化在不断的发展着, 从传统的加密技术到当今主流的数据加密技术, 文件加密技术取得了巨大的突破。本文主要分析了传统信息安全防护和当今主流的加密技术, 并对加密算法进行了简单的介绍。
1 传统信息安全防护
传统的企事业单位网络建设的基础架构是防火墙、入侵检测和防病毒软件。很显然, 这种简单的信息安全保护框架远远不能满足现今用户的安全需求, 新型的安全防护手段稳扎稳打, 逐步扩大成为了信息安全防护的主力军。传统的信息安全防护手段不仅构成简单, 而且功能单薄。在计算机网络不断发展的过程中, 安全防护技术不断的更新和发展, 结构复杂性和功能的强大已经远远超过的传统的加密技术[1]。
2 现行的数据加密技术
现如今信息安全防护的主力军中, 文档加密发挥着举足轻重的作用。文档加密技术采用的透明加密技术, 在不改变用户使用习惯的基础上, 强制对数据进行加密。文档加密技术采取的是对数据本身加密, 也就是说, 加密之后, 不管是信息数据正常脱离原来的操作系统, 还是被非法脱离安全环境, 信息数据本身都是安全的。这说明, 经过文档加密技术加密之后的信息数据对环境的依赖性比较小, 安全稳定性更好。磁盘加密技术和驱动级加密技术是我们常用到的文档加密技术。
2.1 磁盘加密技术
磁盘加密技术是指对磁盘进行全盘加密操作, 然后利用主机监控、防水墙等其他防护手段进行整体防护。通过防火墙的围追堵截, 磁盘加密为用户提供一个安全运行环境的方式。它能保证操作系统启动完毕后, 数据本身以明文形式安全的存在于硬盘上。一般来说, 它在对磁盘进行加密时消耗的时间比较长, 延长了整个的时间周期, 从而延长了项目的实施周期, 这是它的弊端;除此之外, 由于磁盘加密技术选择的是全盘加密, 当操作系统出现问题后, 数据的恢复也会比较棘手。所以, 就目前的技术手段而言, 磁盘加密技术很难真正意义上的做到全盘加密。所以, 我们选择了对系统盘不做加密防护, 而是采用其他技术进行安全访问权限控制[2]。
2.2 驱动级加密技术
目前信息加密的主流技术就是驱动级加密技术。它采用的信息防护方式是进程加后缀。这使得用户可以根据实际情况来进行灵活配置, 选择只对重要的数据进行强制加密, 从而使系统的运行效率得到了很大程度的提高。驱动级加密技术选择了对用户的数据本身进行保护, 它运用透明加密技术, 不会改变用户的原有操作, 用户也不会察觉到系统的存在。当数据脱离了安全环境, 用户将无法继续使用该数据, 从而使数据的安全稳定性得到了有效的提高。另外, 驱动级加密技术实现了数据的全生命周期管理, 减少了因数据加密引起的时间周期的延长。通过驱动级加密技术, 使用时间、次数、复制、截屏、录像等操作也可以得到控制, 防止非法的相应操作产生。对文件的内部进行全面的授权管理和数据的外出访问控制也在驱动级加密技术中得到了实现。可以这么说, 驱动级加密技术做到了真正意义上的全方位数据管理。但是, 驱动级加密技术在给用户的数据带来安全的同时, 也一定程度上影响了用户使用数据的便利性。它采用的进程加密技术无法区分个人文件与企业文件数据, 以及对个人电脑与企业文件的并行运行问题, 它也不能做到清晰的区分。它只是对同类文件进行全部加密, 无法做到数据信息的分类管理[3]。
3 文件加密算法
我们常用的加密算法有IDEA算法、RSA算法、AES算法。
3.1 IDEA算法
IDEA算法属于对称加密算法。在对称加密算法中, 数据加密和解密使用的都是同一个密钥, 所以它的数据信息安全性依赖于密钥的安全性。IDEA算法计算量小、加密速度快而且算法公开。但是运用IDEA算法加密的缺点就是数据信息被破解的风险相应较高。
3.2 RSA算法
RSA算法是非对称加密算法, 非对称加密算法的保密性比较好, 而且最终用户也没有交换密钥的必要。它只适合对少量数据进行加密, 不适合对文件加密, 因为它的加密和解密花费时间长、速度慢。RSA算法是以大数分解和素数检测作为理论基础的。与对称加密体制相比, 它的加密速度较慢, 但是不容易被破解。
3.3 AES加密算法
AES加密算法属于对称加密算法, 而且是不可逆的加密算法。它在加密过程中也需要使用密钥。在用户输入明文后, 由系统直接经过加密算法把明文处理成密文。经过加密后的密文是需要密钥才能解密的。它的问世迅速取代了IDEA算法和RSA算法, 成为21实际保护敏感信息的高级算法。与前两者相比, AES加密算法的加密的速度更快, 而且加密强度最高, 同时, 它根本不占用硬件资源[4]。
4 结束语
网络技术日新月异, 由网络信息泄露引起的问题更是层出不穷。这就要求文件传输加密技术需要不断的发展进步。运用加密算法对文件进行加密能够一定程度上的保护信息数据的安全。而现行的加密技术也能够在信息数据的安全问题上给予有力的支持。但是现行的技术虽然能解决大部分问题, 但仍有不能解决的问题或者即将出现的问题, 所以我们需要不断进步不断更新信息安全防护技术, 做好信息安全防护工作。
参考文献
[1]卢秀慧.基于RSA快速加密算法的网络文件加密系统设计[D].中北大学, 2013.
[2]陆燕宁.基于快速加密的文件管理系统的设计与实现[D].大连理工大学, 2013.
[3]丁晨骊.文件加密解密算法研究与实现[D].上海交通大学, 2009.
利用文件加密文件 篇11
加强网络信息安全既要防范外部人员非法介入或窃取信息, 更要防范内部人员的主动泄密。根据美国联邦调查局 (FBI) 和计算机安全机构 (CSI) 的调查结果显示, 80%以上的安全威胁来自内部[1];中国国家信息安全测评认证中心调查结果也表明, 信息安全问题主要来自泄密和内部人员犯罪[2]。
为了实现涉密文件的安全主动防护, 在此提出基于网络的系统密钥加密机制, 利用系统密钥加密文件数据, 使文件只能被特定网络环境下的合法用户所存取。在此将在密码技术研究和eKey开发应用基础上, 设计一种密钥安全获取通信协议, 研制一种严密的密钥安全管理措施, 实现基于网络的主动防泄密文件加密。
1 加密与eKey模块应用设计
1.1 加密算法选择
对称密码技术也被称为单密钥加密, 它是指在加密与解密时使用同一密钥。对称密码技术的优点在于效率高, 算法简单, 系统开销小, 适合加密大量数据。
非对称密码技术也被称作公钥密码技术, 在加解密时分别使用两个不同密钥:一个可对外界公开, 称为“公钥”;一个只有所有者知道, 称为“私钥”。公钥与私钥之间紧密联系, 用公钥加密的信息只能用相应的私钥解密, 反之亦然。非对称密码技术可提供安全认证服务, 其主要缺点是加/解密速度慢、耗用资源大。因此, 采取综合运用对称密码技术与非对称密码技术的加解密方案。
鉴于AES对称密码算法具有高强度安全性能, 故选用AES算法实现涉密文件数据的加密。由于用户认证信息与密钥信息数据相对较小, 选用非对称密码RSA算法实现系统对用户的合法认证, 以及系统密钥的安全获取。
1.2 eKey的应用开发
eKey又名电子密码钥匙, 是一种结合了智能卡技术与USB接口技术的数据安全产品。这里选用明华公司的eKey, 其内置SmartCOS-XC智能卡操作系统, 在文件系统、密码算法和安全控制三方面都进行了精心设计, 具有高效完备的安全访问机制[3]。
本文使用eKey来存储用户密钥、系统公钥、系统密钥惟一的ID号及其他重要数据。为了实现对数据的加密与认证操作, 基于明华提供的接口函数库开发了eKey应用函数库 (eKey.dll) 。该函数库可实现与eKey有关的系统操作, 包括密钥生成、加密签名等。表1列出了eKey.dll 函数库封装的主要方法, 本文对其编程实现不再赘述。
2 密钥安全获取通信协议
为保证只有通过合法身份认证的用户才能得到系统密钥SK (System Key) , 在此设计了一种密钥安全获取通信协议。该协议首先通过检测用户eKey的序列号, 并与用户注册的eKey序列号相比较来实现用户合法性判断, 然后通过系统密钥SK的ID号, 来正确获取每个涉密文件对应的系统密钥SK。用户在服务器端注册时将其eKey惟一的序列号与用户身份绑定, 并使用此序列号作为初始值生成密钥EK, 再使用EK加密SK, 得到EK{SK}, 并将其保存于系统密钥数据库中。在客户端, 用户只有插入合法的eKey, 读出相应的序列号, 才能解密EK{SK}, 从而得到SK。协议的流程图如图1所示, 其实现过程为:
(1) 用户C首先调用函数GetEKeyID () 获得其eKey的序列号Ei;再调用函数EncryptWithKey () 通过自己的私钥SKc加密用户名和Ei;得到SKc{Username, Ei};然后用S的公钥PKs加密SKc{Username, Ei}得到PKs{SKc{Username, Ei}}, 并将其发送给服务器;
(2) 服务器S接收到PKs{SKc{Username, Ei}}后, 用其私钥SKs和C的公钥PKc依次进行解密, 得到用户名Username和eKey序列号Ei。通过对比服务器端数据库中存储的用户信息和从用户端接收到的用户信息, 判断用户的合法性。S产生一个表示是否通过认证的ACK信号, 并生成一个随机数Rc, 分别用S的私钥SKs和C的公钥PKc双重加密ACK和Rc得到PKc{SKs{ACK, Rc}}, 并发送给C;
(3) C解密双重加密的密文分组PKc{SKs{ACK, Rc}}, 得到ACK信号和随机数Rc, 若ACK信号表示通过认证, 以Rc为密钥加密系统密钥SK惟一的ID号, 再用S的公钥PKs加密Rc{ID}得到PKs{Rc{ID}}, 并发送给服务器;
(4) S用其私钥SKs和随机数Rc依次解密PKs{Rc{ID}}得到系统密钥SK惟一的ID, 并通过查找数据库密钥信息获得系统密钥SK的密文EK{SK}, 再用C的公钥PKc加密此密钥数据得到PKc{EK{SK}}, 并发送到C。
协议通过每一步中基于公钥算法的加密与解密保证了用户合法性判断;基于eKey惟一序列号的身份认证, 保证非法用户无法通过其他eKey得到系统密钥SK;基于EK的加密存储保证了系统密钥的存储安全, 协议从整体上保证了系统密钥获取的安全性。
3 密钥安全管理
采用密码技术保护信息时, 对密钥的保护非常重要。密码体制可以公开, 然而一旦密钥丢失或出错, 对系统安全造成极大威胁[4,5]。因此, 基于网络的涉密文件加密存储必须加强服务器公私钥、用户公私钥, 特别是系统密钥SK的安全管理。
3.1 系统公私钥的安全管理
系统初始化安装时服务器通过应用程序生成自己的公钥对, 并将公钥以公开的方式分发给所有用户。用户将得到的服务器公钥复制到自己的eKey或密钥文件夹中, 再利用服务器公钥完成与服务器之间传送保密信息的操作。为了保证系统安全性, 系统应定期更新服务器公钥对, 并加密存储服务器私钥。
3.2 eKey公私钥的安全管理
用户通过eKey并调用GenKey () 函数接口产生用户的公钥对, 并向服务器传送用户公钥。发送信息时用服务器的公钥加密, 接收信息时用自己的私钥解密。用户私钥存储在eKey中且不可读, 保证了用户密钥的安全性。
3.3 系统密钥SK的安全管理
实现主动防泄密既要保证密钥数据的安全存储, 还要保证合法用户能通过身份认证获得解密密钥 (系统密钥SK) 。每一个涉密文件对应一个加密密钥, 加密密钥是由服务器端密钥中心通过硬件随机产生的256位AES密钥, 通过ID编号处理后, 使用EK加密得到EK{SK}, 最后存储到密钥数据库。合法用户获取系统密钥SK是基于上一节提出的“密钥安全获取通信协议”实现的。
4 基于网络的涉密文件加解密
4.1 基于网络加解密流程
文件加密时首先以系统密钥SK为加密密钥, 通过AES算法加密原文件, 得到文件加密数据, 再将系统密钥SK的ID号写入文件头, 与文件加密数据组成加密后的涉密文件。
文件解密时, 首先读出文件头, 获得系统密钥SK的ID号, 并通过ID号在密钥数据库中查找对应的EK{SK}。然后检测用户eKey的序列号, 并与用户注册信息相比较, 若相同则通过认证, 服务器将{EK{SK}}发送到用户端。用户端以其eKey的序列号为初始值生成EK, 使用EK解密EK{SK}, 获得系统密钥SK (文件解密密钥) , 最后使用系统密钥SK通过AES算法解密涉密文件。涉密文件基于网络的加密与解密流程如图2所示。
4.2 涉密文件加解密的实现
基于网络的涉密文件加解密, 涉及服务器端数据库信息管理、数据通信以及各种算法的加解密操作。系统分别定义了CUserSet类、CFileSet类和CKeySet类来实现对用户信息、文件信息和密钥信息的操作;系统基于TCP/IP协议, 采用Windows sockets API建立Windows环境与网络之间的编程接口, 实现服务器端与用户端的数据通信。文件加密操作的相关函数主要有:
AES加密算法是分组算法, 加密时以16 B为单位进行分块加密[6], 本文在实现中使用CBC分组链接模式对16 B的数据块进行处理, 对其算法原理和实现代码不再赘述。
5 安全性分析
在选用高强度AES加密算法加密涉密文件数据;充分利用eKey的安全特性和密码服务;设计严密的系统密钥安全获取协议;实现了密钥的安全管理;设计了缜密的加解密流程, 使得文件只能被特定网络环境下合法的用户所存取, 从整体上达到了高安全性的主动防泄密目的。
参考文献
[1]Lawrence A Gordon.2005 CSI/FBI Computer Crime and Se-curity Survey[R].Computer Security Institute, 2005.
[2]韩君.基于USB Key的Windows身份认证与访问控制研究[D].武汉:武汉大学, 2004.
[3]eKey用户手册[EB/OL].http://www.mwcard.com, 2008.
[4]刘亚坤.网络文件加密系统的设计与实现[D].秦皇岛:燕山大学, 2003.
[5]尚玉莲.基于信息安全的密钥分配与密钥存储研究[D].济南:山东大学, 2005.
【利用文件加密文件】推荐阅读:
电子文件管理利用10-03
文件加密权限09-03
加密文件系统11-30
文件加密技术信息安全论文11-05
图像文件与图形文件07-16
教育部文件顶岗实习文件11-28
强制删除任意文件以及文件夹06-03
整理自己的文件和文件夹教案08-16
用QQ文件中转站“中转”大文件05-08