(一)安全标记文档
用数据树表示的静态信息客体,与安全标记绑定后,将形成安全标记文档,其完整性、合法性均由数字签名保证。
客体安全标记文档是一个八元组,XOLabel=(Nrs,Dunit,Delem,Dattr,CL,CK,Subf,Lfun)。 其中:
Nrs为客体资源标识,客体命名空间可以重叠。
Dunit为数据单元集,一个客体资源是由若干数据单元组成的,即O=Σdi,di∈Dunit;Delem为数据元素集,一个数据单元是由数据元素组成的,即di=Σelk,elk∈Delem;Dattr为数据属性集,属性是元素自身固有的性质,是元素在某一方面质的表现,一个元素通常可表现出多种属性,即elk=(att1,att2,…,atti),atti∈Dattr。 Dunit,Delem和 Dattr的集合等于客体数据树中的节点集合,即 V={Dunit,Delem,Dattr}。
CL为安全级集合,用于表示主体安全等级和客体敏感程度;CK为范畴集,是指主体能够活动的领域,或者是指客体作用的领域。
Subf是一个二元关系,若 di,dj∈Dunit,则 Sub(f dj,di)表示数据单元dj是数据单元 di的子单元;若 eli,elj∈Delem,则 Sub(f eli,elj)表示元素 eli是元素elj的子元素。
Lfun是一个二元关系,令Tag=(CL,CK),其中Tag是安全标签,为安全级别和范畴的二元对,Lfun⊆Tag×(Dunit∪Delem∪Dattr), 若 di∈Dunit, 或者eli∈Delem,或者 atti∈Dattr,那么(tagi,d)i(tagj,el)j(tagk,attk)表示 di的安全标签tagi,elk的安全标签tagj以及attk的安全标签tagk。
本书给出的客体安全标记文档不同于《面向XML文档的细粒度强制访问控制模型》、A proposal for an XML confidentiality label and related binding ofmetadata to data objects和Kung.System and techniques to bind information objects to security labels。前者提出的XML文档模型是将安全标记作为XML文档的属性,实施强制访问控制的对象为XML文档;后两者给出的保密性标记尽管也用XML进行描述,但其描述的内容是客体元数据,保密性标记面向的是整个客体,不能实现细粒度的访问控制。为了严格控制对客体的访问,本书定义了以下四方面约束:
第一,在安全标记文档中,数据单元、元素和属性间,若具有包含关系,则属性安全级别不小于元素安全级别,元素安全级别不小于单元安全级别。
第二,在安全标记文档中,若两个属性具有推导关系atti→attj,则须CL(attj)=CL(att)i。
第三,在安全标记文档中,若 atti和 attj→attk,atti→attk,attj→attk,则attk级别不小于atti和attj中最大的安全级别。
第四,在安全标记文档中,若atti和attj→attk,主体s的安全级别不小于atti和attj的安全级别,且s小于attk的安全级别,则s对atti,attj的访问是互斥的。
(二)客体安全标记文档生成
通过遍历客体数据树图,在既定数据节点安全标记的前提下,为DTG中的数据树节点分配安全标记,生成具有树组织的安全标记文档。
input:DTG//data tree graph
Stag:set of tags that belong to node of data tree.
Output:xsldoc(the xml doc about secure label of dt)
1.n=|DTG|;
2.dta=bi_dt(DTG->dt1);//获得DTG中第一个树,转换成二叉树
3.for i=2 to n
4.begin
5.dtb=bi_dt(DTG->dti);
6.dta=dt_com(dta,dtb,λ);//依据子树关系合并(www.xing528.com)
7.endfor
8.label_doc=dt_preordertraversal(dta);//生成标记文档
9.dt_preordertraversal(dt){//前序遍历
10.if(dt<>null)then{
11.doc=label_bind(dt.name);
12.dt_preorder(dt->lchild);//the left child tree of dt;
13.dt_preorder(dt->rchild);//the right child tree of dt;}
14.doc=doc_finish(doc);
15.return doc;}
16.label_bind(name){
17.write <name> to doc;
18.write <secureattribute> to label_file;
19.write <level> level.value</level> to label_file;
20.write<domain>domain.value</domain> to label_file;
21.push </name> stack;//enter a stack;}
22.doc_finish(name){
23.while(stack<>null){
24.pull from stack;//emerge from a stack;
25.write</name> to xml file;}
26.return label_doc;
安全标记文档的生成主要包括三部分:第一部分是数据图DTG中的数据子树进行合并,便于数据森林的遍历;第二部分是DTG数据森林的遍历;第三部分则是在数据树遍历中,进行客体数据单元、元素、属性与安全标记的绑定,最后形成具有树形结构组织的安全标记文档。该过程实现复杂度与客体数据树的节点个数相关,即O(n)。
为了确保客体与安全标记的一致性,实现安全标记文件与客体的关联,笔者从系统实施层面,采用系统文件链接方式维护安全标记文件与客体的对应关系。当客体被复制或者通过移动存储介质进行拷贝时,系统会依据链接关系将安全标记文件与客体一起进行拷贝。当进行客体的网络访问操作时,系统同样会依据链接关系,将安全标记文件随客体进行传输,到达对方后,再依据主体安全标记提取主体能够获取的客体片段,同时约简安全标记文件,并保持安全标记与客体片段的链接关系,从而实现网络客体被传输以后客体安全标记的一致性。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。