叶建华 高诚辉 江吉彬
1.福州大学,福州,350108 2.福建工程学院,福州,350108
随着协同设计技术的兴起与不断应用,人们越来越关注产品模型的安全问题,许多学者进行了相关研究。陆静平等[1]针对网络化环境的特点进行产品制造信息安全策略研究,提出了面向对象的信息安全保密模型,该模型主要用于保护工程图和文本文件,未涉及三维模型信息的安全保护。綦科等[2]针对三维点云模型的信息隐藏问题,提出了一种基于八叉树空间分割的空域密写算法,但该方法不适合三维实体模型的信息隐藏。方萃浩等[3]专门针对CAD领域的访问控制机制进行研究,提出了多层次动态的安全访问控制模型。李国龙等[4]为解决复杂零件外协加工中因外协方个人诚信缺失引起的数据泄密问题,提出了一种基于信息终端的外协加工数据保密系统,该系统采用物理隔绝的方式实现数据信息的保护。目前,人们对模型安全的研究主要包括信息保密、数据隐藏、身份鉴别、访问控制等方面[3]。然而,由于三维CAD协同设计环境具有多主体性、异地性、异构性和协同过程具有分工性、相关性、交互性、动态性等特点,使得当前的模型安全保护方法难以完全满足其要求,还存在很多有待改善之处。
协同设计涉及的主体多、人员广、环境复杂,使得在对产品模型进行安全保护时,既要防御外部黑客入侵、病毒、木马等安全危害,又要防范内部人员的信息泄露行为。访问控制技术通过对数据资源的控制管理,只允许被授权的人员进行访问,是数据保护的有效手段。但是作为协同设计对象的产品三维CAD模型具有设计意图层次相关性,需要对不同层次的信息进行有效管控。协同设计过程中,CAD模型数据需要在复杂网络环境下进行交互传输和长期驻留在用户本地计算机中,是产品信息安全的薄弱环节。同时,协同设计的开展以三维CAD设计软件为载体,难以对协同设计人员涉及信息泄露的操作行为进行管控。为此,本文采用基于角色的访问控制(role-based access control,RBAC)建构多层次细粒度的安全访问控制模型,以满足复杂协同设计的访问控制要求;引入多分辨率特征造型技术与功能操作控制技术,以增强对内部人员的主动安全控制;通过在内核层进行数据加解密,实现三维CAD模型的全生命周期透明加密保护。
系统总体结构框架如图1所示,采用客户机/服务器结构。客户端与协同设计工具软件(如SolidWorks)集成在一起,向服务器端提出数据访问请求,接收身份验证结果、被授权的操作权限以及与权限对应的细节层次模型文件。客户端在工作过程中根据被授权的操作权限对协同工具软件进行功能管控,防止越权操作。服务器端的安全访问控制模块提供多层次细粒度的访问控制服务,接收用户的访问请求,根据安全规则、访问策略,判断访问的合法性,确定被授权的服务。数据模型根据访问权限,通过多分辨率造型系统构造相应细节层次的模型,并在透明加解密技术的支持下与客户端进行数据信息的交互传输。
图1 系统总体结构框架
多分辨率造型技术通过对产品模型进行简化得到包含不同细节信息的层次模型。在RBAC的支持下采用多分辨率造型技术可以使得分工不同的人员仅能获取与其权限相应的细节层次简化模型,这样既能保障协同设计的顺利开展,又能实现适度的信息隔离,还可以降低对网络带宽的要求。目前多分辨率造型技术主要有面向网格模型[5]、面向实体模型[6]和面向特征模型[7-8]三种类型。前两种模型都是对底层的点、边、面进行操作,后一种模型是基于特征对包含的设计过程、设计意图等信息进行简化。本文综合采用面向特征模型与面向网格模型的方法实现产品模型的简化。首先通过简化产品特征模型的细节特征去除敏感的局部细节信息;然后通过三角化离散把特征模型转化成网格模型,同时隐藏掉设计过程、设计意图等重要信息;最后对网格模型进行全局模糊处理,模糊掉重要的细节。
2.1.1细节特征的去除
目前,基于特征的参数化造型系统是机械三维CAD设计软件的主流。产品模型的设计过程就是不同特征的建构过程。产品模型由正基础特征、负基础特征、工程特征、过渡特征构成。一般来说,基础特征特别是正基础特征确定总体外形结构,工程特征反映局部结构,过渡特征则对应细部结构。同时,特征的表面积能反映该特征对总体结构的影响程度。因此,本文以当前主流的机械三维CAD特征造型系统SolidWorks 2011为支撑,根据特征表面积的大小确定特征去除的顺序,并通过二次开发实现特征的去除[9]。具体实现步骤如下:
(1)遍历零件的特征树,逐个判断特征fi的类型并进行归类,i=1,2,…,n,n为该零件的特征数。
(2)逐个计算特征fi的面积Sfi。正基础特征、负基础特征、工程特征、过渡特征按5∶4∶3∶1的比例确定特征fi的权系数qi,并按qiSfi值由小到大进行特征排序。
(3)根据模型的简化百分比要求和排序结果,确定要去除的特征集fr。
(4)获得特征集fr中未抑制的元素frj,j=0,1,…,m,m为特征集fr的元素个数。
(5)判断frj是否为其他特征的父特征,如果不是,则直接抑制去除,转步骤(7);如果是则转步骤(6)。
(6)判断frj的子特征是否也在去除的特征序列中,若是,则其子特征也一并抑制去除,并把子特征所对应的frk标识为已抑制;若不是则要先根据子特征对父特征的依赖关系,重新为子特征建立依赖基准并进行替换,解除对该父特征的依赖,使其成为独立的特征,然后抑制去除该特征。
(7)重复执行步骤(4)~ (6)直到抑制去除掉所有需要去除的特征,获得需要的简化模型。
对于装配体,特征的去除可能会破坏零部件的装配关系参照面,从而破坏零部件间的装配关系,因此,要把参与装配的特征排除在去除抑制特征集fr之外。图2a所示为包含15个特征的原始支架模型。图2b所示是去除65%特征后剩余5个主要特征的简化模型。
图2 特征去除对照图
2.1.2 CAD模型的三角化
产品的特征模型是由不同的特征组成的,通过去除细节特征只是隐藏掉敏感的局部信息,依然保留了模型的主体特征结构,包含主要设计过程和设计意图等信息,很容易被用于再次开发。而三角网格模型是由底层的点和三角面片组成的,不再包含产品的设计过程和设计意图等信息,难以被用于再次开发。因此本文把产品的特征模型通过三角化离散成三角网格模型。由于三角网格模型在渲染、数据压缩等方面具有优势,主流的机械三维造型系统中都可以直接进行三角网格化,故本文利用SolidWorks 2011提供的API接口GetTessellation()对去除细节特征的模型进行三角化离散。图3所示是图2b经过三角化离散后得到的模型。
2.1.3三角网格模型的特征模糊处理
通过去除细节特征和三角化的方法还无法对由二维草绘构造的细节特征进行模糊处理,而三角网格模型的模糊处理技术[10]可以进一步对这些细节进行隐藏控制,更好地保护模型。三角模型细节的模糊处理是通过网格顶点位置的调整,减小相邻三角面片间的法矢变化率来实现的,该方法也称为平均曲率法。具体的算法描述如下:得到三角网格顶点集P,pi∈P,i=0,1,…,N,N为P的元素个数;通过拓扑关系,获得pi一阶领域顶点集Vi,vij∈Vi,j=0,1,…,M,M 为Vi的元素个数;pi的新坐标值由下式进行调整:
图3 CAD模型的三角化效果图
式中,η为调整因子,η∈[0,1];A为一阶领域内所有三角面片的面积之和;αij、βij分别为vij、pi所形成边的左侧三角形和右侧三角形的对角。
模糊结果通过百分比ξ进行控制,百分比值对应的调整因子η=1-ξ和迭代次数d=100×(1-ξ)。图4是图3经过三角网格模型模糊化处理后的效果图。
图4 三角网格模型模糊处理的效果图
透明加解密技术是结合文件的加解密技术与Windows的消息处理机制,在不改变任何操作习惯的情况下,对文件进行自动加解密。数据信息只有在内存中是明文,在其他环节中都是密文,并且在离开使用环境时,由于无法得到自动解密的服务而使文件自动失效,因此可以有效保护数据模型在协同交互传输和驻留用户本地计算机期间的安全。
透明加解密的关键在于加解密方法的确定与应用程序对文件读写操作的监听。对于加解密方法,本文采用高级加密标准AES(the advanced encryption standard)[11]进行文件的加密,其强大的防攻击能力能有效地保护数据信息的安全;采用基于Detours的内联钩子技术[12]进行文件读写操作监听与重定向。透明加解密模型的架构如图5所示,其中图5a为文件正常读写的流程图,图5b为增加了透明加解密后文件读写的流程图。以读文件为例,具体过程如下。
图5 透明加解密前后的流程框架图
(1)利用Detours钩子技术将钩子安装到文件操作的动态链接库的入口处,监听 Windows API消息,拦截读操作ReadFile。
(2)判断ReadFile是否为读协同设计数据文档;如果是,把ReadFile函数的前几个字节改为jmp指令跳转到截获功能函数MyReadFile中。
(3)把存在硬盘中的密文数据解密到内存空间中,在MyReadFile函数中把读取的空间地址重定向到放置明文的内存块中,并进行数据信息的正常读取。
(4)完成读取后,通过跳板函数Trampoline返回操作。
在协同设计过程中,对拥有产品模型信息授权的内部人员,还要防止他们进行涉及信息泄露的操作行为,如复制、剪切、另存、打印等。而这些操作行为是通过协同设计工具软件来实施的,因此还要对协同设计工具软件的相关功能进行限制。对功能的管控可以通过上文的钩子技术拦截功能命令的触发消息,重定位到自定义的响应函数中,并进行空返回操作,从而实现功能的限制。但是,在协同工具软件中触发功能消息的方式是多样的,如通过菜单、工具栏、对话框、键盘等方式都可触发消息,难以进行消息与功能的完全准确关联。当前主流的协同设计工具软件都提供二次开发接口,通过二次开发接口能方便地进行相关功能命令消息函数的重载,并利用重载函数进行命令功能的空操作返回。如在SolidWorks 2011中,对删除命令的限制,首先通过AttachEventHandlers()关联消息句柄;然后通过SINK_ENTRY_EX()注册swPartDeleteItemPreNotify消息,并重载消息响应函数DeleteItemPreNotify(),实现删除消息的监听;最后在DeleteItemPreNotify()中重写函数,使其在进行真实的删除操作之前就返回,从而达到限制功能的目的。
采用上文的多分辨率造型技术、操作管理技术再结合访问控制技术,就能实现只允许被授权的用户看到允许看到的模型细节,只允许被授权的用户进行被授权的操作。目前通用的访问控制方法有自主访问控制(discretionary access control,DAC)、强 制 访 问 控 制 (mandatory access control,MAC)和RBAC。由于CAD模型数据的特殊性、协同设计环境与过程的复杂性,通用的访问控制方法难以满足要求,本文立足于复杂协同设计环境下的安全访问控制要求和三维CAD数据模型的多层次的特点,基于RBAC模型构造多层次细粒度的安全访问控制模型。
2.4.1多层次细粒度访问控制模型
基于RBAC模型构造多层次细粒度的安全访问控制模型,涉及用户、角色和访问控制对象,包含访问类型、权限分层定义、角色权限分配和用户角色分配。用户U是访问控制的主体,包括参与产品协同设计的所有人员。访问控制对象是由装配体、零件、特征等不同粒度信息构成的产品三维CAD模型数据集D,通过权限W 进行控制。主体与控制对象间通过角色R关联。根据CAD模型数据的粒度,把权限W 分为装配体层权限WA、零件层权限WP和特征层权限WF。在定义权限时,要根据协同设计时的同步性、顺序性和互斥性[13]建立不同权限间的依赖关系参照表,按数据粒度大小进行权限的逐层定义,并根据协同设计安全的特殊要求把数据模型的控制延伸到协同设计客服端,引入协同设计工具软件端的操作权限WO。角色的权限分配由管理员依据设计分工与权限间的相互关系来分配与角色集R关联的权限集W,用二元组〈r,p〉表示,角色间在满足自反性、传递性和反对称性条件下可以相互继承[13]。用户在协同设计过程中隶属于一个群组G,群组包含一定的角色集R,拥有与角色集关联的权限,用户角色的分配由用户集U和角色集R的三元关系〈u,g,r〉表示,在分配时需要考虑角色冲突关系。
2.4.2模型和权限的分层次表示
在访问控制系统中,模型和权限都是分层次的。不同的角色对模型的不同层次拥有不同的权限,通过访问模式进行控制,这里只定义了通过(pass)、读(read)、编辑(edit)和打印(print)模式。pass模式只在装配体层中定义,表示用户拥有的权限由其子层决定。read模式控制零部件特征层和拓扑层的显示细节,后面的数值组表征访问程度。如(0.5,0.6),第一个数值表示特征的显示权限,取0或1,或者[0.1,0.9]之间的任意数。0表示零件整体隐藏,这时第二个数值无效;1表示不进行任何特征的去除操作;[0.1,0.9]表示除指定要保留的特征外,按2.1.1节所述的比例保留特征。第二个数值表示拓扑层的显示权限,可取0或[0.1,1]之间的任意数。0表示特征去除后不进行三角网格化处理,1表示特征去除后的三角网格化模型,其他值按2.1.3节所述的系数进行模糊处理。特征层的权限用0和1表示,0表示去除这一特征,1表示保留这一特征,除特殊指定外,为了简化权限分配,都通过零件层显示特征权限的数值自动计算分配。只有对拥有edit权限的人员才给予基于特征的由协同设计工具软件产生的原始模型。print是协同设计工具软件端操作权限中的一种,在模型最大粒度层定义,需要借助协同设计工具软件端的操作管理功能来实现。
2.4.3多层次细粒度访问控制示例
图6a所示的变速箱模型为访问控制对象。图6b为只定义了装配体和零件的变速箱模型层次结构示意图。表1为用户角色关联表,用户通过用户名加以区分,隶属于一个群组,关联一个角色集使其具有相应的访问权限。表2为角色、权限与客体的关联表。
图6 示例模型
表1 用户角色关联表
由表1可知,用户u1的用户名为Jam,隶属于设计组Group1,拥有角色r1关联的权限,其中,角色r1关联的权限由表2给出。根据表2中的变速箱列值pass,可知角色r1对图6b所示的变速箱层无权限的限制,具体的权限由子层决定;外壳的列值为read(0.5,0.5),说明角色r1对外壳层拥有(0.5,0.5)的读权限;i、j列值为空,说明未定义关联,而由读权限的继承性可知角色r1对外壳的子层零件i、j同样拥有(0.5,0.5)的读权限。其中,第一个数值0.5说明零件包含的特征数比例,通过特征去除来实现;第二个数值0.5表示零件的模糊程度,通过特征模糊处理实现。同理,由表2还可知,角色r1对图6b所示的变速机构、主动机构层无权限的限制,对变速机构的子层零件k拥有edit权限,对主动机构的子层零件l、m分别拥有read(0.8,0.5)和read(0.5,0.5)的权限。其中,edit权限是设计人员才拥有的权限,因此可知Jam是零件k的设计人员。对于用户名为Dame的用户u2,除了拥有角色r1所关联的权限外,还拥有角色r2所关联的print权限。print权限为附加权限,关联的用户可输出所拥有的细节层次模型。表2所给出的角色r2关联的权限为:对变速机构的所有子层零件k、l、m拥有read(0.5,0.5)的权限,对零件i拥有read(0.7,0.5)的权限和对零件j拥有edit权限。因此用户Dame可通过多分辨率造型系统获得由角色关联的权限所决定的细节层次模型,并可通过协同设计工具软件端的打印功能输出该模型的效果图。
表2 角色、权限与客体的关联表
为了验证本文方法的可行性和运行性能,自主开发了模型安全控制管理的原型系统。协同设计工具软件和特征造型简化系统的前端特征造型支撑软件为SolidWorks 2011,本文算法通过VS2008开发实现,并利用SolidWorks的二次开发接口以插件的方式集成到SolidWorks 2011上。
图7a所示为发动机模型,其分层结构关系如图7b所示,由主体和过滤器两大装配体构成。设两大装配体由两个不同的项目组来负责完成。项目管理人先建立对应的模型数据空文件,然后通过安全访问控制模块对不同的设计组成员所关联的角色进行表3所示的模型数据授权,以确定不同分工的设计人员在客户端能看到包含何种细节的数据模型,对模型可以进行何种操作。如关联角色r1的发动机“主体”协同设计组成员对本组负责的零部件拥有完全的操作和显示权限,从服务器上能获得CAD原始设计模型,可进行读、写、编辑等操作,而对过滤器部分则只能得到部分细节的三角网格模型:对“a1”装配体组件拥有read(1,0.5)的访问权限,在通过多分辨率造型系统进行零部件处理时未进行特征去除操作,只进行了三角网格化处理和ξ=0.5的特征模糊处理;对“a2”装配体组件拥有read(0.7,0.7)的访问权限,在多分辨率造型系统中既需要按0.7的比例去除零部件的子特征,还要进行三角网格化处理和ξ=0.7的特征模糊处理。“p6”为“过滤器”主体,与发动机“主体”存在配合关系,因此采用较高的访问权限read(0.8,0.8)。通过实例测试,当项目进行到图7a所示的阶段时,关联角色r1的协同设计组成员从服务器端获得的模型在本地SolidWorks端显示的效果如图8a所示(为了更好地比较,给出了整体视图和“过滤器”部分的局部视图,其中“p1”、“p2”的格栅细节是通过SolidWorks的二维草绘功能构造的,包含在一个特征中),在本地SolidWorks中只能对本设计组负责的属于发动机“主体”的零部件显示完整的设计特征树,能进行读、写、编辑等设计操作,但不能进行打印等涉及信息泄露的操作。只关联角色r2的协同设计组成员的显示效果如图8b所示,只能对本设计组负责的属于“过滤器”的零部件显示完整的设计特征树,能进行读、写、编辑等设计操作,但不能进行打印等涉及信息泄露的操作。当协同设计人员是发动机“主体”或者发动机“过滤器”的协同设计组成员并关联了角色r3时,则其本地的SolidWorks“打印”功能可用,能打印输出图8a或图8b所示的模型图。不同的协同设计组人员在进行协同设计时,都需要从服务器端获取最新的包含不同细节与权限的模型,在本地的SolidWorks端开展工作,并把设计结果及时地保存到服务器,使协同设计的其他人员能同步进行各项工作。从服务器端获得的暂存在本地的文件,由于是密文,在没有加载插件的SolidWorks中是无法打开的。
表3 访问控制关联表
图7 测试模型
图8 测试结果
本文使用特征去除、模型网格化和三角网格模糊处理技术进行多分辨率造型,以实现产品模型信息的多层次表达。在多分辨率造型技术的支持下,引入协同设计工具端软件的操作权限和权限分层技术,细化了访问控制粒度,拓展了访问控制能力,实现了让正确的人看到正确的模型和让正确的人进行正确的操作的目的,从而有效地防止由内部人员引起的信息泄露事件。在保证协作顺利开展的同时,实现敏感信息的隔离,保护参与各主体间的知识产权。在安全访问控制的基础上,引入透明加解密技术,杜绝外界的恶意入侵和有效信息的泄露,为产品CAD模型的全生命周期提供了安全保证。
[1]陆静平,何玉林,王勋卿.网络化制造环境下产品制造信息安全策略研究[J].计算机工程与应用,2001(20):32-34.Lu Jingping,He Yulin,Wang Xunqing.Research of Information Security Strategies of Product Manufacturing in the Network-manufacturing Environment[J].Computer Engineering and Applications,2001(20):32-34.
[2]綦科,谢冬青,刘洁.基于八叉树空间分割的三维点云模型密写[J].计算机工程,2011,37(4):7-9.Qi Ke,Xie Dongqing,Liu Jie.3DPoint Cloud Model Steganography Based on Octree Space Division[J].Computer Engineering,2011,37(4):7-9.
[3]方萃浩,叶修梓,彭维,等.协同环境下CAD模型的多层次动态安全访问控制[J].软件学报,2007,18(9):2295-2305.Fang Cuihao,Ye Xiuzi,Peng Wei,et al.Multi-level and Dynamic Security Access Control for CAD Models in Collaborative Environment[J].Journal of Software,2007,18(9):2295-2305.
[4]李国龙,黄超,刘飞,等.基于信息终端的复杂零件外协加工数据保密系统[J].计算机集成制造系统,2011,17(8):1812-1820.Li Guolong,Huang Chao,Liu Fei,et al.Security System for Outsourcing Process Data of Complex Parts Based on Information Terminal[J].Computer Integrated Manufacturing Systems,2011,17(8):1812-1820.
[5]Hussain M.Efficient Simplification Methods for Generating High Quality LODs of 3DMeshes[J].Journal of Computer Science and Technology,2009,24(3):604-613.
[6]吴维勇.自由曲线曲面多分辨率造型技术研究与应用[D].西安:西安交通大学,2003.
[7]Lee S H.A CAD-CAE Integration Approach Using Feature-based Multi-resolution and Multi-abstraction Modeling Techniques[J].Computer-Aided Design,2005,37(9):941-955.
[8]唐建国,曹魏娟,高曙明.面向CAE的简化模型误差评估与信息重用[J].中国机械工程,2012,23(8):961-966.Tang Jianguo,Cao Weijuan,Gao Shuming.CAE Oriented Error Evaluation and Information Reuse of Simplified Models[J].China Mechanical Engineering,2012,23(8):961-966.
[9]方萃浩.网络化几何造型关键技术研究[D].杭州:浙江大学,2006.
[10]陈志杨,叶建华,沈瑛,等.交叠网格的检测与合并[J].中国机械工程,2008,19(17):2064-2068.Chen Zhiyang,Ye Jianhua,Shen Ying,et al.Detection and Merge of Overlap Meshes[J].China Mechanical Engineering,2008,19(17):2064-2068.
[11]赵新杰,王韬,郭世泽,等.AES访问驱动Cache计时攻击[J].软件学报,2011,22(3):572-591.Zhao Xinjie,Wang Tao,Guo Shize.Access Driven Cache Timing Attack Against AES[J].Journal of Software,2011,22(3):572-591.
[12]Hunt G,Brubcher D.Binary Interception of Win32 Functions Detours[EB/OL].[2010-05- 01].http://research.microsoft.com/apps/pubs/default.aspx?id=68568.
[13]Kim T,Cera C D,Regli W C,et al.Multi-level Modeling and Access Control for Data Sharing in Collaborative Design[J].Advanced Engineering Informatics,2006,20:47-57.