在现代信息化社会里,如何对计算机网络公文通信中的内容进行验证,以保证更安全可靠,已经成为一个急需解决的问题。
计算机网络公文通信所面临的威胁具有以下几种形式:
1)伪装:入侵者假冒合法用户发送另类信息;2)篡改:入侵者篡改发送方发送的信息,导致接收方接收错误;3)否认:发送方否认所发送的信息,导致接收方无法提供证据;4)泄露:信息被第三方窃取与利用。
通过研究与实践,在某地方政府公文传递系统的设计上采用消息摘要、数字签名及认证等技术解决了上述问题。
1 用消息摘要技术实现消息的完整性
消息摘要的目的是防止与识别数据信息被篡改,以实现消息的完整性。数据信息的同一消息计算两次消息摘要,如果结果相同,则数据信息没有被篡改,否则则可证明数据已经被篡改,不可采用。
在公文传递系统中,利用Java提供的计算消息摘要的封装类:eDigest,调用getInstance()方法函数,就可实现数据信息的消息摘要。方法函数将用到两个主要算法,即MD5和SHA-1。一旦创建了MessageDigest对象,就可以利用函数update()和digest()进行数据的聚集与计算。本系统中采用让用户对用户名和信息栏中的数据信息计算消息摘要的方法,以识别和消除被篡改的数据信息。
2 简便数字签名方法
消息摘要技术可以保证数据信息没有被篡改,但接收者无法确定数据信息是否确实是某部门(或某人)发来的。简便数字签名方法可用来解决这一问题。数字签名采用非对称加密技术,发送者使用私钥加密数据信息,产生消息摘要,接收者使用发送者的公钥解密消息摘要以验证签名是否属实。由于私钥只有加密者才有,因此如果接收者用某个公钥解密了某个消息摘要,就可以确定这段消息摘要必是对应的私钥持有者发来的。
例如,甲、乙双方通信时,甲把数据信息的消息摘要用自己的私钥加密(即签名),然后把数据信息及签名后的消息摘要一起发送给乙,乙方使用甲的公钥解密消息摘要(这一过程同时确认了发送数据的部门或人,又可以解密消息摘要),然后通过解密后的消息摘要能验证数据是否被修改。
2.1使用私钥进行数字签名
1)先指定算法调用signature类的getInstance(),生成signature对象;2)用签名者的私钥初始化对象;3)将要签名的数据信息传入对象;4)用对象的sign()方法生成对数据的数字签名。
2.2使用公钥验证数字签名
1)先指定算法调用signature类的getInstance(),生成signature对象;2)用签名者的公钥初始化对象;3)将要验证的数据信息传入对象;4)用对象的verify方法验证字节数组signature是否为对应数据信息的数字签名,如果是则返回true,否则返回false。
3 数字证书
使用数字签名的前提是数据信息接收方确信验证签名时(用发送者的私钥加密消息摘要)所用的公钥是签名者的,但是可能有人制造假公钥,为了识破假公钥,可采用数字证书技术。
数字证书含有两部分数据:一部分是对应主体(单位或个人)的信息,另一部分是这个主体所对应的公钥,即数字证书保存了主体和它的公钥一一对应关系。如何判断数字证书等内容的真实性呢?由于有效的数字证书必须经过权威CA的签名,所以可以通过权威CA验证数字证书的真实性,然后再在数字证书上使用CA的私钥签名。因权威的CA公钥在操作系统中已安装,当接收用户收到数字证书后,会用相应的CA公钥验证该证书的签名,根据非对称加密的原理,如果该证书不是权威CA签名的,将不能通过验证,若通过验证,即可证明此证书含的信息(发信人的公钥和信息)是无误的,便可以通过该证书内容的公钥来确认数据是发送者发来的。
3.1证书创建
java中的可以用来创建数字证书,所有的数字证书是以一条一条的形式存入证书库中的,每一条都有它自己的别名,并以各自的形式存入证书库中的,每一条证书包含该证书的公钥、私钥和对应的数字证书的信息。证书可以导出数字证书文件,数字证书文件只包括主体信息与对应的公钥。本系统使用的是J2SDK提供的keytool工具默认的密钥库和算法,分别创建权威认证机构CA和用户证书,并将所创建的证书从密钥库中导出。
3.2证书签发
该过程是CA验证用户的身份,并用其私钥签署用户的数字证书。被CA签名的证书将被信任和使用。证书创建过程如下:
1)设置两个常量,用MD5withRSA签署证书的算法和证书的有效期,有效期设置为一年;
2)主要工作在函数main()中完成。需要传递的参数是keystore、CA证书和私钥的别名、待签发的证书的别名以及存放证书的上一级证书的别名;
3)获得用于读取keystore和密钥的口令,再利用用户提供的口令和keystore文件名读取keystore;
4)从keystore中读入CA的私钥和证书;
5)按照CA的格式创建一个X509CerImpl类,用它保存证书的发布者,然后签发一个新证书;
6)创建一个X509CerInfo类,用它来保存CA证书的详细信息;
7)获取待签的证书和私钥,在keystore中创建一个新的实体,也要为新的证书创建一个X509CerInfo类;
8)设定新证书的有效期,然后根据当前时间创建新的序列号。对于给定的CA,保持唯一确定的序列号非常重要,故程序要保证产生的序列号不会重复。然后设定新证书的发布者,即是这里的CA,最后将算法信息放入证书;
9)用CA的私钥签署该证书;
10)把新证书放入keystore,并将keystore存放到文件系统中。
通过以上步骤便可实现CA对用户证书的签署,将CA签署的证书导出,以供系统提取数字证书与相关信息之用。
4 结束语
该数字签名的方法与技术已应用在某地方政府的网络公文通信系统中,通过使用消息摘要、数字签名和数字认证,公文收发双方可以防止消息被篡改,确认对方身份的真实性,同时可以防止对方的否认。公文通信系统的试运行证明完全达到了以上目的。
公文通信中安全性的设计有多种方法,该文所述方法与已有的其他方法比较,该文方法充分利用了已有的安全设计技术与软件成果,形成与实现了模块化链接,结构分明,代码简洁,维护与扩充方便。
参考文献:
[1] 彭钰,徐俊杰,朱曦,等.基于Petri网的公文流转工作流的建模[J].计算机与数字工程,2006(3).
[2] 刘明臻,魏长军.OA系统公文流转模块的设计和实现[J].吉林师范大学学报:自然科学版,2008(2).
[3] 王芳,李光明,郭文强.基于ZEN的公文流转痕迹保留的实现[J].商场现代化,2009(14).
[4] 杨丽娜,魏永红.JAVA语言程序设计[M].西安:西安交通大学出版社,2010.
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。 返回通信学论文列表