1引言
计算机的发展给人类带来了前所未有的便利,以计算机信息技术为手段的企业信息化建设,已成为企业必不可少的部分。
计算机CAD技术高速度、高精度和高效等的优点,已经逐步取代手工设计,广泛应用于产品设计工作中。
CAD图纸,在任何时候,都是一个企业的命脉。
在使用SolidWorks等软件绘制图纸的过程中,作为企业是否经常会考虑:我们厂刚刚设计出来的新产品,怎么市场上别的牌子的产品也已经上市啦?技术人员的流动,是否会同时有图纸的流动?我们花了几十万买的图纸,怎么隔壁的那个厂子图纸和我们的一样呢?我们的光驱、软驱、U盘接口都封掉了,可是图纸怎么还是传出去啦?解决这些问题的一种有效方法就是使用现代密码技术,加密技术是保障信息安全的最基本的、最核心的技术措施。
对CAD图纸进行加密应该是一种比较合适的安全保密措施
2密码技术
2.1基本概念
密码学是研究编制密码和破译密码的技术科学。
密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。
随着先进科学技术的应用,密码学已成为一门综合性的尖端技术科学。
它与语言学、数学、电子学、声学、信息论、计算机科学等有着广泛而密切的联系。
密码就是一组含有参数K的变换E。
设已知信息M,通过变换E得到密文C。
即C=EK(M)这个过程称之为加密,参数K称为密钥。
2.1.1传统密码学
自从有了人类社会就有了信息交流,特别是出现了战争,为了信息交流的安全,就出现了密码技术。
从古代到16世纪末由于这个时期生产力低下,产生的许多密码体制都是可用纸笔或者简单的器械实现加密/解密的,这个时期的密码体制主要有两大类:一类是换位密码体制,另一类是代替密码体制。
从二十世纪初到20世纪50年代末,为了适应密码通信的需要,密码设计者设计出了一些采用复杂的机械和电动机械设备实现信息加密/解密操作,他们代替了繁重的手工作业方式,在战争中发挥了重要的作用。
转轮密码机是这一时期的杰出代表。
2.1.2现代密码学
对称密钥密码体制又称为单密钥密码体制或秘密密钥密码体制。
这种密码体制的加密密钥和解密密钥相同,或者虽然不相同,但可由其中的任意一个可以和容易地推导出另一个。
传统的密码学都是属于对称密钥密码体制。
现在,在传统密码学地基础上对称密码体制也有了新地发展,像序列密码,分组密码,还有对称密钥密码体制的典型代表:数据加密标准DES和高级数据加密标准AES。
非对称密钥密码体制又称为双密钥密码体制或公开密钥密码体制。
这种密码体制的加密/解密操作分别使用两个不同地密钥,并且不可能由加密密钥推导出解密密钥。
采用非对称密钥密码体制的每个用户都有一对相互关联而又彼此不同地密钥,使用其中的一个密钥加密的数据,不能使用该密钥自身进行解密,而只能使用对应的另一个密钥进行解密。
在这一对密钥中,其中一个密钥称为公钥,它可以公开并通过公开的信道发给任何一位想与自己通信的另
一方。
另一个密钥则必须由自己秘密保存,称为私钥,用于解密由公钥加密的信息。
非对称密钥密码体制的典型代表是RSA公钥密码体制。
非对称密钥体制的出现是现代密码学研究的一项重大的突破。
2.2NET密码术
.Net开发平台的发布标志着近十年来微软开发平台第一个重大的转变。
这个开发平台包括一个用于加载和运行应用程序的新的软件基础结构(.NET Framework和),一个新的开发环(Visual ),以及支持该结构的编程语言。
提供了一个用于在该平台上创建应用程序的图形Integrated Development Environment (IDE)(集成开发环境)。
程序员可以使用一种或多种.NET编程语言,来编写他们的代码,例如微软自己的Visual ,Visual C++, Visual C#等。
大量其它的.NET编程语言可以从第三方厂商获得。
在.NET Windows出现之前,使用密码术通常就是指使用非托管的Win32CryptoAPI库,这对于C++程序员来说工作很繁杂,对于采用其他语言如Visual Basic处理的编码器则更不方便。
和许多其他编程方面的工作一样,.NET中密码术的运用使人感觉良好。
开发人员可以使用一流的加密模型,将这些模型放在类库中并且他们具有很好的扩展性。
不用调用非托管库中晦涩难懂的函数,现在可以使用一组功能齐全的加密技术类,这些类将那些繁杂的编码数据、计算散列和生成的随机数等工作都包装起来了。
在.NET中,则是将这些复杂内容打包在各个.ET框架类中,并且由一个System.Security命名空间包含这些与加密相关的类。
3加密技术在SolidWorks工程图纸上的实现
3.1SolidWorks二次开发
SolidWorks是原创的、基于Windows平台的三维机械设计软件,是Windows原创软件的典型代表。
因而,SolidWorks可充分利用Windows 平台的优点、符合用户的使用习惯,从而极大增加了用户的学习效率和使用效果。
虽然SolidWorks发展非常的快,但也不是十全十美的,不可能完全满足特定企业的特殊要求。
为了适合特定企业的特殊需求,形成企业自己的特色,使其在企业中更有效的发挥作用,并使常用的或重复的任务自动化提高效率,就必须对其进行本地化和专业化的二次开发工作。
为了方便用户进行二次开发,SolidWorks提供了几百个API函数,这些API函数使SolidWorks的OLE或COM接口,用户可以使用VB\VBA\VC\DELPHI\C#等高级语言对SolidWorks进行二次开发,建立适合用户需要的、专用的SolidWorks功能模块。
3.2具体实现方法
利用SolidWorks API的功能编制SolidWorks插件,并集成于SolidWorks环境中,由SolidWorks程序进行管理。
SolidWorks插件是一个DLL文件,在用程序生成DLL的过程中,必须定义DLL文件与SolidWorks连接的接口。
SolidWorks插件文件与SolidWorks接口的函数如下:
SwAddin.ConnectToSw()和SwAddin.DisconnectFromSW()。
SwAddin.ConnectToSw()是用户编制程序的入口函数,当插件加载时SolidWorks运用此方法进行与程序的连接。
当插件需要卸载时, SolidWorks调用SwAddin.DisconnectFromSW()方法卸载当前的插件。
启动SolidWorks软件加载插件后,将在SolidWorks软件的文件菜单中增加一个"文件加密"子菜单,点击此菜单,将弹出一个对话框,如图1所示。
键入密码,点击确定后,文件在关闭后自动加密。
在高级选项中,我们可以选择加密算法。
在本插件采用的是对称加密算法,在.NET Framework 提供的对称算法有DES、TripleDES、RC2、Rijndael,我们可以选择任何一种加密算法对文件进行加密。
所有的这些类都由SymmetricAlgorithm 派生而来。
在打开已经加密的文件时,将弹出如图2对话框:采用对应的算法对文件进行解密。
如果没有正确的用户口令,在.NET Framework 安全命名空间中实现的对称加密算法在目前计算机技术条件下基本是不可能被攻破的。
4总结
提出了一种对SolidWorks工程图纸的加密保护机制,采用对称密钥密码体制,利用.NET开发平台提供的加密相关类和SolidWorks提供的API函数,采用C#语言对SolidWorks软件进行二次开发。
开发出来的SolidWorks插件可以满足一般中小企业工程图纸的一般安全保密工作。
由于计算机技术和密码术的飞速发展,对于工程图纸的安全保密工作,可以进一步采用生物认证的技术、数字签名技术、数字水印技术等,可以采用USBKey代替用户口令等方式。
企业内部的图纸安全一直是企业内部非常关心的一个重要问题,如何制定一个完善的保密措施,从企业内部和外部防止信息的泄漏是一个长期的课题。