咨询热线:0510 - 8229 3900
 
               
   
保密技术     保密技术 首页 > 保密技术 >实时加解密技术在Windows系统中的实现

实时加解密技术
涉密行为鉴别
主动加密技术
涉密访问控制
安全区域
涉密隔离技术
多通道加密技术
反截屏技术
移动存储控制
电子邮件加密
闪存(U盘)加密
编码技术
身份认证技术
账户保护技术
 
实时加解密技术在Windows系统中的实现

>> 实时加解密技术与透明用户体验

实时加解密技术在Windows平台上的实现

  在Windows操作系统中,代码的运行级别被分为两个特权级RING0和RING3,通常我们把RING3称为用户层,RING0称为内核层。应用程序运行于用户层,操作系统提供应用程序接口(API)支持各种应用程序的运行。用户层与内核层数据是隔离的,用户层不能直接访问内核层的数据,操作系统通过功能调用实现用户层和内核层代码的切换。90%以上的应用程序是不关心这种代码切换机制的,因为一般应用程序只调用API,从用户层到内核层的代码切换是提供API的操作系统组件完成的。日常使用的应用软件如Office办公、CAD设计、工程计算、企业ERP、Internet浏览/电子邮件等都运行于操作系统的用户层。用户层提供了丰富的人机界面和逻辑功能,但用户层实际上是不和任何计算机硬件打交道的,所有应用软件逻辑功能的实现最终必须在计算机硬件动作上体现,操作系统在内核层把所有用户层的逻辑功能转换成内核层的硬件动作,这通过各种硬件驱动实现。存储器也是一种硬件设备,为了管理存储器上存储的数据,操作系统在存储器物理驱动之上设计了文件系统,这通过文件系统驱动实现,操作系统中的所有的文件输入输出请求最终都会经过文件系统驱动进入实际的物理存储器。
  实时加解密技术必须在应用程序和物理存储器之间找一个合适的接入位置,从Windows系统的架构上,可以看出有以下几个位置可以接入,一个是在用户层的API接口上,一个是内核层的文件系统与物理存储器驱动之间,还有一个在物理存储器驱动与存储器硬件之间。我们称第一种为“API拦截”方式,第二种为“文件系统驱动”方式,第三种为“存储驱动方式”。下面对这几种方式作一个比较:

1. 通用性

  API拦截方式只能对调用API的用户层应用程序有效,如果一个应用程序不是以调用一般文件操作API的方式存取文件(如以VMM的内存映射方式直接读取或修改文件),API拦截方式就无效了。Windows操作系统中最经典的记事本(NotePad)程序就是以内存映射方式存取文件的,经常看到一些保密系统可以支持大型软件的文件格式,却不能支持最简单的TXT文本文件。这是因为API拦截方式从原理无法支持内存映射方式存取文件。因此API拦截方式只能适用于测试通过的已知软件。
  不管以何种方式存取文件,操作系统最终都会请求文件系统驱动执行相应的动作。因此基于文件系统驱动方式的实时加解密技术支持所有应用程序。而且理论上可以支持运行在这个操作系统下的未知应用程序和将来发布的新应用程序。
  存储驱动方式是文件系统驱动最后的存储动作实现者,因此存储驱动方式与文件系统驱动方式具有相似的广泛支持性。

2. 规范性

  API拦截方式是一种编程技巧,却不是公开的编程规范。由于没有规范,当系统中有两个以上采用这种技术的软件存在时常会发生冲突造成应用程序崩溃。而文件系统驱动和存储驱动都可以使用标准的操作系统过滤驱动方案,多个采用相同技术的软件并存时也能协同工作。

3. 性能

  API拦截方式处于操作系统的用户层,操作系统在这一层更多地考虑到应用程序调用的方便性,与驱动层的实际功能并没有一对一的关系,实际上用户层的API接口数量远大于驱动层的功能数量。操作系统一般在文件系统驱动中对来自用户层的请求重新优化整合,以减少实际的物理存取。操作系统的文件系统缓存技术就是这一优化技术的体现。在缓存技术的作用下,大部分用户层的文件操作并没有产生真正的物理存储器动作。如果以API拦截方式实现实时加解密,因为用户层无法确定一次文件存取是否会实际产生存储器动作,就不得不对所有文件输入输出数据请求进行加解密处理。而文件系统驱动层可以仅处理那些产生存储器实际输入输出的请求。可见支持同样的文件实时加解密驱动方式执行的加解密动作次数比API拦截方式要少得多,从而具有更高的性能。
  存储驱动方式与上述两种加密方案有所不同,API拦截方式和文件系统驱动方式都可以按需加密文件,因此可以对系统中的文件按加密和不加密分别处理,基本可以不影响不加密的文件的存取性能。而存储驱动的加密只能对整个存储器加密,只要使用就会对存储器的数据一股脑加密,因此在实际应用中损耗会比较大,其加密效果与一些有加密功能的存储器自身的加密效果相似(如笔记本硬盘的内置加密功能)。硬件存储器本身的加密效率远高于软件驱动的实现,因此在保密系统中单纯采用这种方式的不多见,一般以虚拟磁盘分区的方式实现,而不是直接支持现有的物理存储器。


Windows平台文件系统层次关系图

 4. 实现难度

  API拦截虽然不是规范的编程方式,担这项技术早在16位Windows时代就已经成功应用于商业化软件产品,早期的电子词典软件就是使用这项技术实现抓屏。因此API拦截技术的实现并不难。
  操作系统驱动编程相对比较困难,无论从设计还是开发阶段的调试。能够进入稳定商用则需要大规模的测试和较长时间的考验。驱动程序一旦出现错误会造成整个操作系统的崩溃,也就是我们常见的“蓝屏”。而文件系统驱动的繁杂性又远大于存储驱动,因为文件系统驱动中有复杂的逻辑数据划分,而存储器驱动一般只需要基本的数据输入输出。
  从兼容性来说,文件系统驱动却好于存储器驱动。操作系统在所有存储器上加载文件系统,没有文件系统的存储器不会被操作系统识别,因此一个文件系统过滤驱动可以支持所有的不同类型的物理存储器。而存储器驱动是与物理设备有关的,不同物理存储器有不同的存储驱动,必须对不同的存储器驱动分别处理。支持一个物理存储器就必须单独写一个对应的存储器过滤驱动,这样显然十分麻烦,因此采用这种技术的产品一般都不支持物理存储器,而是仅支持自己的虚拟驱动器(虚拟区)。

  综上所述,基于文件系统驱动方式的实时加解密技术具有压倒性优势,唯一的问题是实现难度。因此文件系统驱动方式的实时加解密技术最关键的指标是其系统稳定性(驱动程序的健壮性)。

  

关联文档

 

 

 

分享到:

   

  关于我们|联系方式|资质认证|站点地图|职位招聘|建议与投诉  
地址:江苏省无锡市梁溪区锡澄路260-1号圆融发展中心17F  邮编:214031 总机:(0510)82293900 传真:(0510)82702019
版权所有 © 2003-2024 无锡万华数据科技有限公司
苏ICP备05009260号
苏公网安备 32020202000075号