在信息化建设发展的过程中,作为信息主要载体的文档,成为我们工作生活中不可或缺的一部分,其中对基于XML格式的流式办公文档的应用最为广泛。目前世界主流的流式办公文档格式主要有3种:标准为IS0/IEC26300;2006的开放文档格式(open document format,ODF)、标准为ISO/IEC 29500:2008的OOXML(officeopen XML)以及标准为GB/T20916—2007的标文通。这3种流式文档格式都基于XML,相应的处理技术也由原来VBA、宏等方式逐渐过渡到利用XML相关技术进行处理。
在早期,用户对流式文档的操作,主要基于办公文档处理软件,并可以使用VBA、宏等方式扩展对办公文档的处理。带来的问题是,传统的方式效率低,速度慢,所能处理的文档格式单一,因其过分依赖办公软件产品,使之对于不同格式的流式文档而言,无法通过同一个办公软件实现操作互通,给用户带来不便。
流式办公文档采用基于XML的格式之后,对XML文档的各种访问技术也被用于对流式办公文档的处理。针对基于XML格式的文档,出现了很多XML数据访问技术,如:XPath、XSLT、DOM和SAX、XQuery、LINQ、相应格式的API/BD、UOML、ODQ等。
随着XML(eXtensible Markup Language)在电子商务、政务、网络出版和移动通信等领域的广泛应用,越来越多的公司把XML作为其存放信息或与外部世界交换信息的手段。XML已经成为web环境中描述数据的标准,如何实现XML文档的安全访问控制是进行数据保护的一项重要内容。当这些XML格式的信息存储在计算机时,如果包含了比较敏感的数据,就需要一种灵活高效的访问控制机制,既保证合法用户能够方便快捷地访问资源,又要阻止非法用户的访问请求或合法用户的非法访问请求。
国内外对XML文档的访问控制的研究有很多。其中自主访问控制策略DAC具有相当大的缺陷,它是建立在用户本身能够保证客体的可信性的假设基础上的,这个假设通常不成立;基于角色的访问控制策略RBAC是一种灵活而有效的访问控制策略,但在拥有多个安全等级的信息系统中效果不佳;基于规则的访问控制可以解决这些问题,BLP模型是一种基于规则的访问控制模型,源自军事应用领域,对一般应用过于严格,但又有许多优点,根据实际需求进行改进并得到一个新的DBLP模型。
XML文挡访问控制过程支持读操作的访问控制模型在处理读操作时的工作过程如图中虚线部分所示:
现有的DTD验证方法解析被更新操作更改了的XML文档,生成新的DOM树,之后通过遍历每个节点来比较新的DOM树与DTD。这个DTD验证过程需要在内存中保留2个DOM树,这将消耗大量的内存窑间,解析及搜索DOM树也降低了访问控制的速度访问控制技术通过定义操作类型来明确区分更新操作的语义,避免了基于DOM树的验证和重复标记过程。
访问控制系统必须始终保存那些检查访问权限所需的信息,很多不必要的权限检查也被重复多次,多余的工作降低了访问控制的速度,可以通过将访问控制过程划分为2步来解决以上问题:
分步访问控制第(1)步下面通过实例来说明如何使用操作类型及分步访问控制技术实现XML文档的访问控制。
首先进入访问控制第(1)步,针对图2中的XML文档,图3中用户Wong的权限类型是x,因此没有请求D类型操作的权限。根据文档相应的操作类型表可知,插入title元素的操作是D类型的,该操作就被排除掉。其余2个操作为x类型,被允许进入访问控制第(2)步。
分步访问控制第(2)步在第(2)步中,遍历使用操作类型标记的DOM树,根据节点上标记的授权信息判断通过第(1)步检查的2个操作是否能被最终执行。根据该用户的访问授权信息标记的DOM树。根据图中元素标记的授权信息可知,对于这个嵌套请求,replace操作通过权限验证可以被执行,而delete操作被拒绝。
BLP模型是对安全策略形式化的第一个数学模型,它用状态变量表示系统的安全状态,用状态转换规则来描述系统的变化规则。它是高安全系统中常用的多级安全策略模型。
在BLP多级安全策略模型中,给每一个数据对象定义一个安全级标签表示它所包含信息的敏感性;同时给每一个用户定义一个安全级标签,表示他能访问什么样的数据。每个安全级标签由两部分组成:密级和范围的集合。密级是密级集合中的一个元素,密级集合可表示为:{绝密、机密、秘密、公开}。此集合是全序的,即:绝密>机密>秘密>公开。范围的集合是系统中非分层元素集合的一个子集,它的元素依赖于所考虑的环境生产部门、销售部门等等。安全级的集合满足偏序关系,此偏序关系称为支配。
多级访问控制策略模型基于安全级间的支配关系定义了一个安全规则集合来保证系统的安全,系统中每一个操作要由系统通过安全检查。安全检查执行“不上读不下写”的规则。系统中的数据对象称为客体,用户称为主体,设用户的安全级为Ls,数据对象的安全级为Lb,则安全读写规则定义如下:
(1)允许读:当且仅当Ls≥Lb;(2)允许写:当且仅当Lb≥Ls。
当且仅当操作满足模型的所有规则,此操作才能允许执行,可以有效地保证数据流的保密性。其中称(1)是BLP模型的简单安全特性,(2)是BLP模型的特性。
BLP模型是一个很安全的模型,控制信息只能由低向高流动,能满足对数据保密性要求特别高的需求。本文的立足点是希望这种高安全的模型能应用到一般的系统中去。在实际中这种过安全机制带来了一些问题:·特性使得只能由下级向上级或平级写,这样上级对下级发文就受到限制;并且没有考虑客体的安全级可以发生变化。也存在不安全的地方:一方面,特性允许低级用户向高级写,使得低安全级的信息向高安全级流动,可能破坏高安全客体中数据的完整性;另一方面,高读低没考虑是否需要,不符合最小特权原则。
动态BLP模型(DBLP模型)的主客体标签中增加了时限域,时限主要是用来控制客体标签的动态变化,DBLP模型中的主客体标签的支配关系首先要比较时限,即若T0∈Ts,标签之间才具有可比性,否则标签之间是不可比的。
随着对流式办公文档应用领域的不断扩展,对其访问与操作的需求也呈现了多样化的趋势,具体如下:
(1)格式无关性需求。由于目前存在的流式办公文档格式不统一,对文档内容的访问与操作都要依赖于支持相应格式的办公软件产品,无法实现离线文档操作。因此需要有一种统一的方式,能够对各种格式文档进行相应的访问与操作,以屏蔽文档底层存在的格式差异,实现文档格式的互操作;
(2)文档访问查询粒度适中性需求。对于流式办公文档而言,用户常常希望能够以段落、列表、表格、图片等基本元素,即文档的功能点进行访问与操作,而目前对于流式办公文档的访问操作,要么是利用文档中提供的元数据对整个文档实现获取,粒度较粗糙,无法很好地从文档真实的内容中准确获得数据,很多流式文档的数据资源无法得到有效的共享和利用;要么就是利用XML的相关技术,访问文档的结构粒度过于细致,效率不高的同时,也不利于流式文档上下文环境内容理解。因此,流式办文档访问查询粒度的适中性,也成为流式文档得以进一步应用的阻碍;
(3)文档操作的简便实用性需求。利用XML技术对流式文档进行访问,无论是专业开发人员还是普通用户,都需要学习复杂的语言及编程思想,编写繁琐的代码,并且,对文档逻辑结构要有一定的了解,访问方式不够。
访问流式办公文档的处理需求的增加,使得相应的处理技术变得非常关键。这里给出XML数据访问技术的简要介绍:
(1)XPath。W3C的XPath主要是对XML文档底层元素和属性等节点直接进行操作的技术,它是直接针对XML的树形结构的路径表达式导航来定位XML文档中的各个节点。表达直观,但表达式构造复杂容易出错,如果不借助其它工具,则需要手工编写完成,耗时耗力L6J。
(2)XSLT。XSLT是以XPath为基础发展起来的,是利用XPath获取所需节点,并进行相应处理,但表达能力有所限制,不够灵活。
(3)DOM和SAX。DOM技术是利用树型结构来对XML文档中的各个元素(节点)进行处理,使对XML的文档处理更为灵活,但DOM处理需一次将整个XML文档载入内存,尤其是对于规模较大的xML文档,其处理速度较慢;为避免DOM加载慢的问题,SAX技术被提出来,利用SAX处理时,不是一次性把整个文件加载到内存中,而是对XML文件按其对应节点的访问次序,将文件的一部分加载入内存,相比DOM处理速度大大提升。
(4)XQuery技术。XQuery的查询描述能力较强,相比其它访问方式来说,可支持多文档联合查询,但语言过于复杂,普通用户不易完全掌握。
(5)LINQ技术。随着对文档访问技术的简化需求增加,微软在Visual Studio 2008中引入了LINQ,其关键技术包括LINQ to XML,该技术提供了一套比DOM更轻量的API,相比使用以往的操作方法,使得处理XML更为容易。
(6)相应格式的API/SDK。目前主流的流式办公文档格式ODF,00xML以及UOF,都提供了相应的API或SDK,那么,利用API或SDK来对流式文档的访问就可以直接针对文档的功能点进行直接获取并进行各种操作,便于实现对文档的进一步应用或二次开发。
(7)UOML。UOML是OASIS的正式标准,是电子文件领域针对基于XML的版式文档的接口标准,它定义了一整套非结构化文档的操作规范.可以很方便地对版式文档进行访问与操作,屏蔽底层细节问题,能够实现不同格式文档的互相读写。
(8)ODQ。ODQ是一种专门针对流式办公文档的访问技术。它从用户使用需求出发,能够脱离办公软件,利用较为通俗的语句,对不同格式的文档直接获取其局部内容并进行相应的操作,方便用户使用;同时对开发人员来说,能够屏蔽底层的操作细节,使之更专注于上层应用开发。
使用ODQ对流式文档进行访问,与前3种访问方式进行比较,其优越性体现如下:
(1)针对流式文档,屏蔽文档格式和版本的差异,为用户提供统一的访问接口,达到了格式无关性;
(2)ODQ具有类似SQL的语法结构,符合用户使用习惯,代码简洁,开发人员无需花费过多时间去学习复杂的查询语言,只需发出“做什么”的命令,而不用考虑“怎么做”。为操作流式办公文档带来了很大的方便。
(3)查询粒度方面,与前3种访问方式做比较,如表1所示。因为需要的是通用文档操作功能,不是进行细粒度的访问,并不需要深入了解文档内部结构,在这方面,可以体现出ODQ和API的优越性。
(4)将在基于B/S结构的web应用中,ODQ封装进协议中,大部分内容放在服务器端,对于客户端来说,不会耗用很大内存,可以较为快速地提取所需信息;
(5)在web应用方面,文献中对0DQ的返回值形式进行了扁平化研究,可以将访问结果以更容易的方式进行网络传输并解析。
综合上述分析,这里给出4种流式文档访问方式在代码精简度、查询粒度、对不同格式流式文档问互操作能力支持以及操作简便性的比较,见表1。
4种访问方式比较