专利名称:一种动态扩展透明加密文件附加信息的方法
技术领域:
本发明涉及计算机文件加密解密领域,具体涉及一种动态扩展透明加密文件附加 信息的方法。
背景技术:
随着企业信息化应用的深入,企业员工大部分工作都在计算机上完成,各类报告、 报表、设计图纸等重要成果都以电子文件的形式存在,而电子文档很容易通过邮件、移动存 储设备等途径泄露,给企业带来了很大的安全隐患。为了防止机密文档的泄漏,常用的方法 之一是对机密文档进行加密,这样即使文件外泄了,非授权的用户也无法打开文档。文档的 加密有两种常用的方式一种是识别文件格式(例如Office文档),只对已知格式的文档内 容部分进行加密,并针对应用程序开发加解密插件,这种方式的缺点是对未知类型的文档 无法处理;另一种方式是透明加解密。所谓透明,是指对使用者来说是未知的。当使用者在 打开或编辑指定文件时,系统将自动对未加密的文件进行加密,对已加密的文件自动解密。 文件在硬盘上是密文,在内存中是明文。一旦离开使用环境,由于应用程序无法得到自动解 密的服务而无法打开,从而起来保护文件内容的效果。透明加密技术就是不管文档的格式, 在文件驱动层对文件操作进行拦截处理,对指定类别的文档在文件写入文件系统时候进行 加密,在读出时候进行解密,透明加解密的优点是不关心文件格式,因此对未知类型的文档 都可以处理。透明加解密技术必须在文档中增加一块附加的区域,用于存放文件识别信息、权 限信息和其他的需要在加解密驱动程序中使用的信息。如图1所示,文件被分为两个部分, 一部分是文件的附加信息,其长度固定,存放有文件的文件识别信息、权限信息和其他的需 要在加解密驱动程序中使用的信息;另一部分为文件的内容部分,其中包含文档的真实内容。在现有的透明加密技术中,加密文档一般在文档第一次创建或修改的时候由加解 密驱动生成,生成的过程如图2所示,先调用底层加解密驱动写入固定长度的文件附加信 息,然后对文档内容进行加密后写入文件的内容部分。现有的透明加密技术中文件附加信息的修改流程如图3所示,该流程一般是由加 解密策略控制模块发起的,例如要修改文档的权限信息,是由加解密策略控制模块通知加 解密驱动进行修改,加解密驱动按照修改的内容重新向长度固定的文件附加信息区域写入 该修改的文件附加信息。现有的透明加密技术中透明加密文档文件的写入流程如图4所示,文件API向加 解密驱动发出文件写的指令,加解密驱动向底层文件驱动读取附加信息;加解密驱动根据 是否存在附加信息判断是否加密文档,如果不是加密文档则直接进行写文件操作,操作完 成后向文件API返回写是否成功;如果根据附加信息判断是加密文档,则进一步更具附加 信息进行相应的判断和操作,例如进行鉴权等,然后加解密驱动再对要写入的内容进行加 密,将加密后的内容要求底层文件驱动写入文件的内容部分,操作完成后向文件API返回写是否成功。现有的透明加密技术中透明加密文档文件的写入流程如图5所示,文件API向加 解密驱动发出文件读指令,文件加解密驱动向底层文件驱动要求读取附加信息;文件加解 密驱动根据是否存在附加信息判断该文档文件是否透明加密文档文件,如果不是加密文 档,则向底层文件驱动直接进行读取文件内容的操作,操作成功后,直接将读取的内容返回 文件API ;如过根据附加信息判断得到该文档为加密文档文件则向底层文件驱动要求读取 文件的内容部分,读取后根据附加信息来进行相应的判断和操作,例如鉴权操作,再对内容 进行解密,解密后,向文件API返回解密后的内容。现有透明加解密技术中存储附加信息的文件区域的长度固定,驱动程序按照固定 格式来读取此区域的数据。采用固定长度附加区域的优点是处理比较简单,但缺点是扩展 性不足,如果加解密需要用到的文件附加信息比较多,特别是文件的授权信息占用的长度 可能是不固定的,如果一个文件要授权的人越多,则授权信息的存储就需要占用越多的控 件,超出附加信息的固定长度之后现有技术将无法处理,因此只能牺牲一些特性(例如限制 授权信息的条目数),在透明加解密驱动中做尽量简单的事情。
发明内容
本发明提供一种动态扩展透明加密文件的附加信息的方法,所述透明加密文件包 括用于存储附加信息的长度固定的附加信息固定存储部分和用于存储文件本身内容的文 件内容部分,该方法包括
A、在创建透明加密文件时,根据加密策略计算文件所需要的附加信息的长度;
B、根据附加信息的长度以及附加信息固定存储部分的长度判断是否需要扩展附加信 息的存储部分,如果是,执行步骤C,如果否,执行步骤E ;
C、根据附加信息长度分配至少一个附加信息扩展存储部分,向附加信息固定存储部分 写入附加信息扩展存储部分在文件中的位置信息以及附加信息扩展存储部分的长度信息; 向附加信息固定存储部分写入附加信息;
D、按照附加信息扩展存储部分在文件中的位置和分配的长度向该至少一个附加信息 扩展存储部分写入的附加信息,直到所有附加信息写入,执行步骤F ;
E、直接向附加信息固定存储部分写入所有附加信息;
F、对文件内容进行加密,并将加密后的内容写入所述透明加密文件的文件内容部分。其中,可以将所有附加信息扩展存储部分的位置信息和长度信息都写入所述附加 信息固定存储部分。也可以向所述附加信息固定存储部分写入下一个附加信息扩展存储部 分的位置信息和长度信息,在向每一个附加信息扩展存储部分写入附加信息时还写入位于 其后的下一附加信息扩展存储部分的位置信息和长度信息,只到最后一个附加信息扩展存 储部分。如果需要修改附加信息,可以按如下流程进行 H01、要求修改附加信息;
H02、计算修改后的附加信息的长度;
H03、根据修改后的附加信息的长度以及附加信息固定存储部分的长度判断是否需要 扩展附加信息的存储部分;如果是,执行步骤H04 ;如果否,直接向附加信息固定存储部分写入修改后的附加信息,执行步骤H06 ;
H04、判断是否需要增加新的附加信息扩展存储部分,如果是,执行步骤H05 ;如果否, 执行步骤H06 ;
H05、根据附加信息长度分配至少一个新的附加信息扩展存储部分,向附加信息固定存 储部分写入新的附加信息扩展存储部分在文件中的位置信息以及其长度信息;
H06、依次向附加信息固定存储部分以及附加信息扩展存储部分写入修改后的附加信
息;
H07、调整透明加密文件的文件内容部分的位置。如果需要进行文件写入操作,可以按如下流程进行 J01、要求进行文件写入;
J02、读取文件的附加信息固定存储部分,判断是否为加密文档;如果不是加密文档,执 行步骤J03,如果是加密文档,执行步骤J04 ;
J03、直接将要写入的文件内容写入文件内容部分,并返回写入是否成功,结束流程; J04、根据附加信息固定存储部分的附加信息扩展存储部分的位置信息和长度信息来 读取所有的附加信息;
J05、根据附加信息进行文件操作权限鉴权,鉴权通过后对要写入的文件内容对进行加 密,向文件内容部分写入加密后的文件内容,并返回写入是否成功。如果需要读取文件,可以按如下流程进行 KO1、要求读取加密文件;
K02、读取文件的附加信息固定存储部分,判断是否为加密文档;如果不是加密文档,执 行步骤K03,如果是加密文档,执行步骤K04 ;
K03、直接读取文件内容部分,并返回读取是否成功,结束流程; K04、根据附加信息固定存储部分的附加信息扩展存储部分的位置信息和长度信息来 读取所有的附加信息;
K05,、根据附加信息进行文件操作权限鉴权,鉴权通过后读取文件内容部分,并对读取 的内容进行解密,将解密后的文件内容返回。将透明加密文件中存储附加信息的部分分为固定部分和扩展部分,解决了现有技 术中附加信息固定,导致附加信息中不能存放比较多的内容,从而限制了透明加解密功能 的问题,增加了透明加密技术的灵活性。
图1为现有技术中透明加密文件的结构示意图; 图2为现有技术中透明加密文件的生成流程图3为现有技术中透明加密文件的附加信息修改操作的流程图; 图4为现有技术中透明加密文件写入操作的流程图; 图5为现有技术中透明加密文件读取操作的流程图 图6为本发明实施例中的透明加密文件的结构示意图; 图7为本发明实施例中透明加密文件操作的分层模型的示意图;图8为本发明实施例中透明加密文件的生成流程图; 图9为本发明实施例中透明加密文件的附加信息修改操作的流程图; 图10为本发明实施例中透明加密文件读取操作的流程图; 图11为本发明实施例中透明加密文件写入操作的流程图。
具体实施例方式以下结合附图详细说明本发明的具体实施方式
。本发明实施例对加密文档文件结构的改进如图6所示,该实施例将透明加密文件 中存储附加信息的部分分为固定部分和扩展部分,其中,固定部分的长度和结构都是固定 的,在此固定部分中存放至少一个扩展部分的位置和长度。扩展部分可以有多个,可以位于 不同的位置,例如,在图2中,该透明加密文档就具有两个扩展部分,一个紧跟在固定部分 的后面,一个位于文件的末尾。并且扩展部分可以动态增加、删除,如果附加信息存储空间 不够了,就增加新的扩展部分,如果附加信息有冗余,可以将多余的扩展部分删除。固定部分中存储扩展部分信息可以采用两种方式一种是采用链表方式,在固定 部分中存放有下一个扩展部分的位置和大小,而指向的下一个扩展部分中有存储有再下一 个扩展部分的位置和大小,这种方式可以增加任意数量的扩展部分;另一种方式是在固定 部分存放有所有扩展部分的位置和大小,这种方式限定了扩展部分的数量,优点是操作相 对简单一些。附加信息的固定部分和扩展部分在整个文件中的位置在本发明中没有限制,具体 实现时候可以放在文件的头部、尾部或头部、尾部各放一部分。本发明中对透明加密文件的操作是按照分层模型进行的,如附图7所示。文件操 作被分为应用程序层、操作系统文件API层、加解密驱动层、底层文件驱动层,还设置有与 加解密驱动层通信的加解密策略控制模块。每一层看到和操作的文件内容是不同的。底层 文件驱动层操作的是物理的文件(把文件中的附加信息和文件真正内容看作一个整体);加 解密驱动层负责接收上层的文件操作请求,然后调用底层文件驱动对文件进行加密写入或 解密读出操作,对文件内容操作之前加解密驱动会首先调用底层驱动获取文件附加信息, 进行一些判断和操作(例如判断是否文档已加密、判断文件操作权限、如果附加信息不存在 就创建并写入附加信息等等),加解密驱动;操作系统文件API层负责接收应用层的文件操 作,并调用下层驱动层进行文件的操作;应用程序层是具体的应用程序,例如Office程序, 应用程序对文件的操作是通过调用操作系统API来进行的。加解密策略控制模块是用于和 加解密驱动通信,通知加解密驱动修改文档的加解密策略的(加解密策略的修改最终就是 修改加密文档的附加信息)。文件结构的不同导致加密文件的创建流程相应改变,本发明的透明加密文件的创 建流程如图8所示
1)文件API要求加密解密驱动生成的透明加密文档;
2)加解密驱动首先计算文件附加信息的长度,一般创建加密文档时候根据默认的加解 密策略就可以计算得到附加信息的长度;
3)加解密驱动调用底层文件驱动向附加信息的固定部分写入附加信息,如果固定部分长度已经够用,就不需要扩展部分;如果固定部分的长度不够用则在写入时在附加信息固 定部分中写入附加信息扩展部分在文件中的位置和扩展部分长度;
4)按照扩展部分在文件中的位置和分配的长度向附加信息的各扩展部分写入的附加 信息,直到所有附加信息写入;
5)加解密驱动对文档内容进行加密;
6)加解密驱动调用底层文件驱动将加密的文件内容写入文件的内容部分。相应地,本发明对加密文件的附加信息修改流程也进行了改进,如图9所示
1)加解密策略控制模块调用加解密驱动要求修改附加信息;
2)加解密驱动计算修改后的附加信息长度;
3)加解密驱动调用底层驱动向附加信息的固定部分写入修改后的附加信息,如果固定 部分长度已经够用,就不需要扩展部分;如果固定部分的长度不够用则写入时在附加信息 固定部分写入附加信息扩展部分在文件中的位置和分配的长度;
3)按照扩展部分在文件中的位置和分配的长度向附加信息的各扩展部分写入所有的 修改后附加信息,直到所有附加信息写入;
4)因为修改后的附加信息的长度可能发生了变化,导致真正文件内容部分的位置也会 相应的发生变化,因此需要调整加密文件内容部分的位置。在修改附加信息时,还可以根据修改后的附加信息的长度判断是否需要增加新的 存储附加信息的扩展部分,如果不需要,直接向原有的固定部分和扩展部分中写入修改后 的附加信息,如果需要,则根据附加信息长度分配至少一个新的附加信息扩展存储部分,向 附加信息固定存储部分写入新的附加信息扩展存储部分在文件中的位置信息以及其长度 信息,之后再向所有的固定部分和扩展部分中写入修改后的附加信息。为了实现透明加密的目的,透明加密技术还必须在程序读写文件时改变程序的读 写方式。使密文在读入内存时程序能够识别,而在保存时又要将明文转换成密文。与对透明 加密文档文件附加信息存储结构的改进对应,本实施还改进了对于加密文件内容的读取、 写入方法,按照图6所示改进的加密文件结构,透明加密文件读取和写入流程分别如图4、5 所示。图10具体说明对于加密文件的文件读取流程
1)文件API读取文件附加信息的固定部分,判断是否为加密文档;
2)如果不是加密文档,则加解密驱动直接读取文件内容返回给上层调用者,结束读取 流程;
3)如果是加密文档,则加解密驱动根据附加信息固定部分中记录的附加信息扩展部分 信息来读取附加信息的扩展部分;
4)加解密驱动读取文件的真正内容;
5)读取固定部分和扩展部分的所有附加信息后,根据附加信息进行相应的文件操作权 限鉴权;
6 )鉴权通过后,加解密驱动对读取的文件真正内容进行解密,并返回给上层调用者。图11具体说明对于加密文件的文件写入流程为
1)首先加解密驱动读取文件附加信息的固定部分,判断是否为加密文档
2)如果不是加密文档,则加解密驱动直接写入文件真正内容,并返回写入是否成功
83)如果是加密文档,则加解密驱动根据附加信息固定部分中记录的附加信息扩展部分 信息来读取附加信息的扩展部分;
4)加解密驱动根据附加信息进行相应文件操作权限鉴权;
5)鉴权通过后,加解密驱动对文件的真正内容进行加密;
6)加解密驱动通过底层文件驱动写入加密后的文件,并返回写入是否成功。本发明的方法可以在透明加密文档的文件附加信息中扩展存放更多信息,解决了 现有技术中附加信息固定,导致附加信息中不能存放比较多的内容,从而限制了透明加解 密功能的问题,增加了透明加密技术的灵活性。以上所述仅为本发明的较佳实施例,并不用于限制本发明,凡在本发明精神和原 则之内所做的任何修改、等同替换和改进等,均包含于本发明的保护范围之内。
9
权利要求
1.一种动态扩展透明加密文件附加信息的方法,所述透明加密文件包括用于存储附加 信息的长度固定的附加信息固定存储部分和用于存储文件本身内容的文件内容部分,其特 征在于包括A、在创建透明加密文件时,根据加密策略计算文件所需要的附加信息的长度;B、根据附加信息的长度以及附加信息固定存储部分的长度判断是否需要扩展附加信 息的存储部分,如果是,执行步骤C,如果否,执行步骤E ;C、根据附加信息长度分配至少一个附加信息扩展存储部分,向附加信息固定存储部分 写入附加信息扩展存储部分在文件中的位置信息以及附加信息扩展存储部分的长度信息; 向附加信息固定存储部分写入附加信息;D、按照附加信息扩展存储部分在文件中的位置和分配的长度向该至少一个附加信息 扩展存储部分写入的附加信息,直到所有附加信息写入,执行步骤F ;E、直接向附加信息固定存储部分写入所有附加信息;F、对文件内容进行加密,并将加密后的内容写入所述透明加密文件的文件内容部分。
2.如权利要求1所述的方法,其特征在于步骤C中向附加信息固定存储部分写入该 附加信息扩展存储部分在文件中的位置信息以及该附加信息扩展存储部分的长度信息包 括将所有附加信息扩展存储部分的位置信息和长度信息都写入所述附加信息固定存储 部分。
3.如权利要求1所述的方法,其特征在于步骤C中向附加信息固定存储部分写入该 附加信息扩展存储部分在文件中的位置信息以及该附加信息扩展存储部分的长度信息包 括向所述附加信息固定存储部分写入下一个附加信息扩展存储部分的位置信息和长度 信息,在向每一个附加信息扩展存储部分写入附加信息时还写入位于其后的下一附加信息 扩展存储部分的位置信息和长度信息,只到最后一个附加信息扩展存储部分。
4.如权利要求1所述的方法,其特征在于在所述步骤F后还包括H01、要求修改附加信息;H02、计算修改后的附加信息的长度;H03、根据修改后的附加信息的长度以及附加信息固定存储部分的长度判断是否需要 扩展附加信息的存储部分;如果是,执行步骤H04 ;如果否,直接向附加信息固定存储部分 写入修改后的附加信息,执行步骤H06 ;H04、判断是否需要增加新的附加信息扩展存储部分,如果是,执行步骤H05;如果否, 执行步骤H06 ;H05、根据附加信息长度分配至少一个新的附加信息扩展存储部分,向附加信息固定存 储部分写入新的附加信息扩展存储部分在文件中的位置信息以及其长度信息;H06、依次向附加信息固定存储部分以及附加信息扩展存储部分写入修改后的附加信息;H07、调整透明加密文件的文件内容部分的位置。
5.如权利要求1所述的方法,其特征在于在所述步骤F后还包括J01、要求进行文件写入;J02、读取文件的附加信息固定存储部分,判断是否为加密文档;如果不是加密文档,执 行步骤J03,如果是加密文档,执行步骤J04 ;J03、直接将要写入的文件内容写入文件内容部分,并返回写入是否成功,结束流程; J04、根据附加信息固定存储部分的附加信息扩展存储部分的位置信息和长度信息来 读取所有的附加信息;J05、根据附加信息进行文件操作权限鉴权,鉴权通过后对要写入的文件内容对进行加 密,向文件内容部分写入加密后的文件内容,并返回写入是否成功。
6.如权利要求1所述的方法,其特征在于在所述步骤F后还包括 KO1、要求读取加密文件;K02、读取文件的附加信息固定存储部分,判断是否为加密文档;如果不是加密文档,执 行步骤K03,如果是加密文档,执行步骤K04 ;K03、直接读取文件内容部分,并返回读取是否成功,结束流程; K04、根据附加信息固定存储部分的附加信息扩展存储部分的位置信息和长度信息来 读取所有的附加信息;K05,、根据附加信息进行文件操作权限鉴权,鉴权通过后读取文件内容部分,并对读取 的内容进行解密,将解密后的文件内容返回。
全文摘要
本发明公开一种动态扩展透明加密文件附加信息的方法,所述透明加密文件包括用于存储附加信息的长度固定的附加信息固定存储部分和用于存储文件本身内容的文件内容部分,通过在创建透明加密文件时计算附加信息长度,在附加信息长度超出附加信息固定存储部分时分配附加信息扩展存储部分,在固定存储部分中存储扩展存储部分的相关位置信息和长度信息,使得透明加密文件附加信息的存储能够进行动态扩展,提高了透明加密技术的灵活性。
文档编号G06F21/24GK102073830SQ20111000575
公开日2011年5月25日 申请日期2011年1月12日 优先权日2011年1月12日
发明者刘永波 申请人:深圳昂楷科技有限公司