论文部分内容阅读
摘要:本文讨论了上海党建信息系统的体系结构,在该系统中,数据交换平台是其核心部分,如何保证数据的传输安全,保证数据完整、不可篡改以及不可否认等至关重要,文中提出了基于PKI技术的系统安全解决方案和并已基本实现。
关键词:PKI;CA;非对称加密;对称加密
中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)15-30633-03
Data Security Policy of Party-constructure Management Information System Based on PKI Technology
YU Zhi-min, CAI Qiu-rou
(Dept. of Computer Science and Engineering, Tongji University, Shanghai 200331, China)
Abstract:The structure of party-construct information system is discussed in this paper. In this system, the platform for data exchanging is the kernel. It is most important to ensure the data transferring safety, data integrity, no modification and not negation. So the system security solution based on PKI technology is brought forward and implemented.
Key words:PKI; CA; unsymmetrical encrypt; symmetrical encrypt
1 引言
随着改革的不断深入和上海经济的快速发展,如何运用科学手段对上海现有130万党员、6万多党组织进行有效管理,是新时期党建的重要课题,也是为适应新形势下社会经济结构的“多元化”变化对党建提出的新要求。基于Internet的党建信息系统的建立,旨在对全市的党员、党组织信息进行集中、统一的管理,及时、准确地掌握各种数据,为领导的决策提供充分依据,为全市的基层党建工作提供有力的技术支持。随着计算机技术的发展和互联网络的普及,信息系统的安全正在受到前所未有的挑战。黑客骚扰、病毒侵入、机密信息泄漏等等正成为许多信息部门需要面临的棘手问题。上海市党委组织部是重要管理部门,掌握着许多国民经济重要信息,因此它的信息安全建设在整个信息系统项目中具有非常重要的意义。
2 党建信息系统的业务要求
系统将建立统一集中的数据库,数据包含三大方面,即:党组织信息库、党员信息库、辖系单位信息库。
信息系统主要包括党员服务中心管理系统,部内服务系统,数据交换服务系统,应用服务系统,管理系统,党员服务系统等。其中的核心是数据交换平台。在系统中数据交换平台将负责公务网外各个组织之间以及组织和党员服务中心之间的数据交换,因此是一个非常重要的功能枢纽环节。当某一个公务网外的组织信息发生变化,则系统会自动将变动的数据打包,然后发送到数据交换平台;平台会按照预先设定好的消息队列,将该数据包发送到有接收权的组织(如党员服务中心、发送信息的组织的上级组织等),并通过数据交换平台将接收方接收到数据的确认信息反馈到发送信息的组织,完成整个数据交换的操作流程。
3 安全需求
前面已经提到,党组织、党员的信息是一些比较重要的数据,首先,要保证数据存储、操作安全;而且整个系统中有一部分是在Internet上运行的,因此安全问题就更加关键和重要。确保网上信息有效、安全地进行,从而使信息除发送方和接收方外,不被其他方知悉;保证传输过程中不被篡改;发送方确任接收方不是假冒的;发送方不能否认自己的发送行为,即非否认性。
4 解决方案及具体实现
4.1 系统的解决方案
近年来,通过电子身份认证来实现网上数据交换的安全性的技术被越来越广泛的使用。公钥基础设施(PKI)是目前网络安全建设的基础与核心,是电子商务安全实施的基本保障。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息和公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效时间,发证机关(证书授权中心)的名称,该证书的序列号等信息,证书的格式遵循ITUT X.509国际标准。利用PKI体系,可以综合应用数字摘要、数字证书、对称加密算法、数字签名、数字信封等加密技术,可以建立起安全程度极高的加解密和身份认证系统,基于上述因素,本系统在建设上充分运用现代网络信息技术及CA认证体系,建立以PKI技术为基础的信息管理数字身份认证系统,以确保网上数据传输的安全性和可靠性,保证系统的正常运行。
4.2 数据信息的安全实现
系统的核心就是数据的交换服务,负责与技监局、社保卡中心进行数据交换。党员服务中心将定期把管理的党组织所辖系的单位信息与技监局管理的单位信息数据进行比对,如信息不一致,则以技监局的数据为准,将单位信息数据导入,更新原有的单位数据;同样,党员服务中心也将定期把管理的党员个人基本信息与社保卡中心管理的人员信息数据进行比对,如信息不一致,则以社保卡中心的数据为准,将人员基本信息数据导入,更新原有的党员个人基本信息,并向社保卡中心提供描述人员党员属性的相关信息,如入党时间、所属党组织等。但是保证数据在传输中的安全、完整和不可篡改以及发送数据方的不可否认性尤为重要。
数据在数据库的访问是经过严格认证的,用户的密码是经过摘要处理后存入数据库,别人无法知悉。
数据在传输前经过加密处理,接受方接收到后进行解密处理来保证数据的安全,当密钥的安全和交换必须谨慎进行。我们知道对称加密速度很快,在不知道密钥的情况下,如果加密强度适中很难破译,但是密钥被截获将造成灾难性的后果。非对称加密不存在这个问题但速度比对称加密慢百倍以上。所以,采用对称加密的方法对数据进行加密,对称密钥随机、实时地生成,然后经非对称密钥加密后和加密的数据一起打包传输,这样就保证了传输数据被截获也不会泄漏。另外为了保证数据的完整性、正确性和发送方的不可抵赖性,对数据进行数字摘要处理,并对数字摘要进行数字签名,就保证了发送方的不可抵赖性,最后把上述信息一起打包传输,具体流程如图1所示。接受方收到后进行相应处理就可以还原数据,并可以确认发送者的身份,流程如图2所示。
图1 用户A发送流程图
具体实施如下:在进行对话之前有个握手过程,握手过程中所交换的信息如下。
(1)双方交换X.509 V3格式的身份证明文件。双方利用非对称加密技术(如RSA)验证对方的身份并得到对方的公钥;
证书的内容包括:证书序列号、证书使用DSA和SHA-1哈希算法签名、证书发行者的名字、证书主体的名字、证书的有效期、DSA 公钥及其参数、主体键标识扩展项、基本扩展项标识等组成。
图2 用户B接收流程图
握手过程建立后,如图1所示用户A发送数据的过程为:
(1)用户A组织好业务数据包(明文);
(2)用户A使用私钥对数据包进行数字签名,并将签名块放到业务数据包后面;
数字签名的代码如下:
java.security.Signature signet
=.Signature.getInstance("DSA");
signet.initSign(priKey);
signet.update(information);
byte[] signedInf=signet.sign();
(3)使用双方约定好的对称密钥和加密算法加密数据(密文);
加密过程代码如下:
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, skey);
fileIn = new FileInputStream(fileName);
fileOut = new FileOutputStream(outFileName);
CipherOutputStream cipherOut = new CipherOutputStream(fileOut, cipher);
(4)以用户B的公开密钥加密对称密钥,代码如下:
javax.crypto.Cipher rsaCipher rsaCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
rsaCipher.init(Cipher.ENCRYPT_MODE, pubRSAKey);
byte[] keyBytes = symmetricKey.getEncoded();
byte[] encodedKeyBytes = rsaCipher.doFinal(keyBytes);
(5)发送加密后的数据包。
通过SSL通讯还可以保证传输通道安全。
如图2所示用户B的接收处理过程为:
(1)接收加密的数据包;
接受数据报到数据包后触发数据处理程序。
(2)以用户B的私有密钥解密对称密钥;
javax.crypto.Cipher rsaCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
rsaCipher.init(Cipher.DECRYPT_MODE, priKey);
if (common.Public_var.sKey != null) {
byte[] encodedKeyBytes= rsaCipher.doFinal(common.Public_var.sKey);
SecretKeySpec keySpec = new SecretKeySpec(encodedKeyBytes,"DESede");
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
SecretKey desKey = keyFactory.generateSecret(keySpec);
(3)用对称密钥对加密的数据进行解密;
java.io.ObjectInputStream objIn
= new ObjectInputStream(
new FileInputStream(skeyFileName));
Key key = (Key)objIn.readObject();
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key);
fileIn = new FileInputStream(fileName);
fileOut = new FileOutputStream(outFileName);
CipherInputStream cipherIn
= new CipherInputStream(fileIn, cipher);
int theByte = 0;
int fileLength = 0;
while ((theByte = cipherIn.read()) != -1)
{fileOut.write(theByte);
fileLength++;}
(4)对明文用一次Hash算法,得到信息摘要;同时用用户A的公开签名密钥对数字签名进行解密,等到信息摘要;
Hash算法比较简单,采用MD5或SHA-1算法都可以获得较好的效果。
代码如下:
java.security.MessageDigest mesDigest = java.security.MessageDigest.getInstance("MD5");
mesDigest.update( message);
byte[] digest = mesDigest.digest();
(5)将两个信息摘要进行对比,如果一致说明数据是完整的,没有被篡改;反之表明数据被篡改过。
(6)数字签名的验证:根据A发送的数据包中的签名,B使用A的公钥进行验证,如果验证成功证明确实是A发送过来的,数据包可以长时间保存,对于防止今后的法律纠纷有重要作用。
如下所示:
java.security.Signature signCheck = java.security.Signature.getInstance("DSA");
signCheck.initVerify(pubKey);
signCheck.update(information);
if (signCheck.verify(signedInf)
根据以上数据传输过程,可以完全保证数据传输的保密性、完整性、身份认证和不可抵赖性。
为了保证系统的稳定性和可靠性,系统选用上海CA中心提供的数字认证系统,来对系统中的用户身份进行认证,并对数据进行加解密,保证系统的安全性。该系统已获得国家专利,通过国家权威部门的测评,是保密局推荐的政府采购安全产品。
5 结束语
本文探讨了党建信息系统采用的安全策略,描述了系统安全框架的软件结构,给出系统安全的解决方案。满足了系统的需求,保证了数据交换中数据的完整性、不可篡改性,发送方的不可抵赖性,较好的实现了系统的安全。在上海党建系统已基本运用成功,这些经验对于全国的推广有重要意义。
参考文献:
[1] Bruce Schneier,Applied Cryptography[M]. 机械工业出版社,2000.1.
[2] Bruce Eckel. Java编程思想[M]. 机械工业出版社,2001.5.
[3] 李明柱. PKI技术及应用开发指南. http://ibm.com/developerWorks/cn/.2002-6.
[4] MD5算法研究. http://www.5xsoft.com. 2002-5.
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
关键词:PKI;CA;非对称加密;对称加密
中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)15-30633-03
Data Security Policy of Party-constructure Management Information System Based on PKI Technology
YU Zhi-min, CAI Qiu-rou
(Dept. of Computer Science and Engineering, Tongji University, Shanghai 200331, China)
Abstract:The structure of party-construct information system is discussed in this paper. In this system, the platform for data exchanging is the kernel. It is most important to ensure the data transferring safety, data integrity, no modification and not negation. So the system security solution based on PKI technology is brought forward and implemented.
Key words:PKI; CA; unsymmetrical encrypt; symmetrical encrypt
1 引言
随着改革的不断深入和上海经济的快速发展,如何运用科学手段对上海现有130万党员、6万多党组织进行有效管理,是新时期党建的重要课题,也是为适应新形势下社会经济结构的“多元化”变化对党建提出的新要求。基于Internet的党建信息系统的建立,旨在对全市的党员、党组织信息进行集中、统一的管理,及时、准确地掌握各种数据,为领导的决策提供充分依据,为全市的基层党建工作提供有力的技术支持。随着计算机技术的发展和互联网络的普及,信息系统的安全正在受到前所未有的挑战。黑客骚扰、病毒侵入、机密信息泄漏等等正成为许多信息部门需要面临的棘手问题。上海市党委组织部是重要管理部门,掌握着许多国民经济重要信息,因此它的信息安全建设在整个信息系统项目中具有非常重要的意义。
2 党建信息系统的业务要求
系统将建立统一集中的数据库,数据包含三大方面,即:党组织信息库、党员信息库、辖系单位信息库。
信息系统主要包括党员服务中心管理系统,部内服务系统,数据交换服务系统,应用服务系统,管理系统,党员服务系统等。其中的核心是数据交换平台。在系统中数据交换平台将负责公务网外各个组织之间以及组织和党员服务中心之间的数据交换,因此是一个非常重要的功能枢纽环节。当某一个公务网外的组织信息发生变化,则系统会自动将变动的数据打包,然后发送到数据交换平台;平台会按照预先设定好的消息队列,将该数据包发送到有接收权的组织(如党员服务中心、发送信息的组织的上级组织等),并通过数据交换平台将接收方接收到数据的确认信息反馈到发送信息的组织,完成整个数据交换的操作流程。
3 安全需求
前面已经提到,党组织、党员的信息是一些比较重要的数据,首先,要保证数据存储、操作安全;而且整个系统中有一部分是在Internet上运行的,因此安全问题就更加关键和重要。确保网上信息有效、安全地进行,从而使信息除发送方和接收方外,不被其他方知悉;保证传输过程中不被篡改;发送方确任接收方不是假冒的;发送方不能否认自己的发送行为,即非否认性。
4 解决方案及具体实现
4.1 系统的解决方案
近年来,通过电子身份认证来实现网上数据交换的安全性的技术被越来越广泛的使用。公钥基础设施(PKI)是目前网络安全建设的基础与核心,是电子商务安全实施的基本保障。数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息和公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效时间,发证机关(证书授权中心)的名称,该证书的序列号等信息,证书的格式遵循ITUT X.509国际标准。利用PKI体系,可以综合应用数字摘要、数字证书、对称加密算法、数字签名、数字信封等加密技术,可以建立起安全程度极高的加解密和身份认证系统,基于上述因素,本系统在建设上充分运用现代网络信息技术及CA认证体系,建立以PKI技术为基础的信息管理数字身份认证系统,以确保网上数据传输的安全性和可靠性,保证系统的正常运行。
4.2 数据信息的安全实现
系统的核心就是数据的交换服务,负责与技监局、社保卡中心进行数据交换。党员服务中心将定期把管理的党组织所辖系的单位信息与技监局管理的单位信息数据进行比对,如信息不一致,则以技监局的数据为准,将单位信息数据导入,更新原有的单位数据;同样,党员服务中心也将定期把管理的党员个人基本信息与社保卡中心管理的人员信息数据进行比对,如信息不一致,则以社保卡中心的数据为准,将人员基本信息数据导入,更新原有的党员个人基本信息,并向社保卡中心提供描述人员党员属性的相关信息,如入党时间、所属党组织等。但是保证数据在传输中的安全、完整和不可篡改以及发送数据方的不可否认性尤为重要。
数据在数据库的访问是经过严格认证的,用户的密码是经过摘要处理后存入数据库,别人无法知悉。
数据在传输前经过加密处理,接受方接收到后进行解密处理来保证数据的安全,当密钥的安全和交换必须谨慎进行。我们知道对称加密速度很快,在不知道密钥的情况下,如果加密强度适中很难破译,但是密钥被截获将造成灾难性的后果。非对称加密不存在这个问题但速度比对称加密慢百倍以上。所以,采用对称加密的方法对数据进行加密,对称密钥随机、实时地生成,然后经非对称密钥加密后和加密的数据一起打包传输,这样就保证了传输数据被截获也不会泄漏。另外为了保证数据的完整性、正确性和发送方的不可抵赖性,对数据进行数字摘要处理,并对数字摘要进行数字签名,就保证了发送方的不可抵赖性,最后把上述信息一起打包传输,具体流程如图1所示。接受方收到后进行相应处理就可以还原数据,并可以确认发送者的身份,流程如图2所示。
图1 用户A发送流程图
具体实施如下:在进行对话之前有个握手过程,握手过程中所交换的信息如下。
(1)双方交换X.509 V3格式的身份证明文件。双方利用非对称加密技术(如RSA)验证对方的身份并得到对方的公钥;
证书的内容包括:证书序列号、证书使用DSA和SHA-1哈希算法签名、证书发行者的名字、证书主体的名字、证书的有效期、DSA 公钥及其参数、主体键标识扩展项、基本扩展项标识等组成。
图2 用户B接收流程图
握手过程建立后,如图1所示用户A发送数据的过程为:
(1)用户A组织好业务数据包(明文);
(2)用户A使用私钥对数据包进行数字签名,并将签名块放到业务数据包后面;
数字签名的代码如下:
java.security.Signature signet
=.Signature.getInstance("DSA");
signet.initSign(priKey);
signet.update(information);
byte[] signedInf=signet.sign();
(3)使用双方约定好的对称密钥和加密算法加密数据(密文);
加密过程代码如下:
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, skey);
fileIn = new FileInputStream(fileName);
fileOut = new FileOutputStream(outFileName);
CipherOutputStream cipherOut = new CipherOutputStream(fileOut, cipher);
(4)以用户B的公开密钥加密对称密钥,代码如下:
javax.crypto.Cipher rsaCipher rsaCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
rsaCipher.init(Cipher.ENCRYPT_MODE, pubRSAKey);
byte[] keyBytes = symmetricKey.getEncoded();
byte[] encodedKeyBytes = rsaCipher.doFinal(keyBytes);
(5)发送加密后的数据包。
通过SSL通讯还可以保证传输通道安全。
如图2所示用户B的接收处理过程为:
(1)接收加密的数据包;
接受数据报到数据包后触发数据处理程序。
(2)以用户B的私有密钥解密对称密钥;
javax.crypto.Cipher rsaCipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
rsaCipher.init(Cipher.DECRYPT_MODE, priKey);
if (common.Public_var.sKey != null) {
byte[] encodedKeyBytes= rsaCipher.doFinal(common.Public_var.sKey);
SecretKeySpec keySpec = new SecretKeySpec(encodedKeyBytes,"DESede");
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
SecretKey desKey = keyFactory.generateSecret(keySpec);
(3)用对称密钥对加密的数据进行解密;
java.io.ObjectInputStream objIn
= new ObjectInputStream(
new FileInputStream(skeyFileName));
Key key = (Key)objIn.readObject();
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key);
fileIn = new FileInputStream(fileName);
fileOut = new FileOutputStream(outFileName);
CipherInputStream cipherIn
= new CipherInputStream(fileIn, cipher);
int theByte = 0;
int fileLength = 0;
while ((theByte = cipherIn.read()) != -1)
{fileOut.write(theByte);
fileLength++;}
(4)对明文用一次Hash算法,得到信息摘要;同时用用户A的公开签名密钥对数字签名进行解密,等到信息摘要;
Hash算法比较简单,采用MD5或SHA-1算法都可以获得较好的效果。
代码如下:
java.security.MessageDigest mesDigest = java.security.MessageDigest.getInstance("MD5");
mesDigest.update( message);
byte[] digest = mesDigest.digest();
(5)将两个信息摘要进行对比,如果一致说明数据是完整的,没有被篡改;反之表明数据被篡改过。
(6)数字签名的验证:根据A发送的数据包中的签名,B使用A的公钥进行验证,如果验证成功证明确实是A发送过来的,数据包可以长时间保存,对于防止今后的法律纠纷有重要作用。
如下所示:
java.security.Signature signCheck = java.security.Signature.getInstance("DSA");
signCheck.initVerify(pubKey);
signCheck.update(information);
if (signCheck.verify(signedInf)
根据以上数据传输过程,可以完全保证数据传输的保密性、完整性、身份认证和不可抵赖性。
为了保证系统的稳定性和可靠性,系统选用上海CA中心提供的数字认证系统,来对系统中的用户身份进行认证,并对数据进行加解密,保证系统的安全性。该系统已获得国家专利,通过国家权威部门的测评,是保密局推荐的政府采购安全产品。
5 结束语
本文探讨了党建信息系统采用的安全策略,描述了系统安全框架的软件结构,给出系统安全的解决方案。满足了系统的需求,保证了数据交换中数据的完整性、不可篡改性,发送方的不可抵赖性,较好的实现了系统的安全。在上海党建系统已基本运用成功,这些经验对于全国的推广有重要意义。
参考文献:
[1] Bruce Schneier,Applied Cryptography[M]. 机械工业出版社,2000.1.
[2] Bruce Eckel. Java编程思想[M]. 机械工业出版社,2001.5.
[3] 李明柱. PKI技术及应用开发指南. http://ibm.com/developerWorks/cn/.2002-6.
[4] MD5算法研究. http://www.5xsoft.com. 2002-5.
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。