论文部分内容阅读
互联网在不断发展,日常生活中使用网络的用户也越来越多,传统生活领域中的许多事情(如交易、电话、视频等),现在互联网都可以办到。正因为使用网络的人越来越多,网上的信息交换的安全性也就越发显得重要。PKI体系架构能很好的解决网络上信息交换中身份鉴别、信息保密、数据完整以及非抵赖性等一系列问题。PKI体系中,与终端用户关系最大的,而且也是PKI体系核心之一的部分是用户的证书和密钥。用户在网上信息交换过程中的数字签名和验证、数据加密和解密,都需要证书和密钥的支持。
当前可用的各种证书和密钥管理API,要么是基于特定的操作系统平台的,要么是对USB硬件电子密钥的支持有限制的,要么是过于复杂而难以短时间之内掌握的。所以我们希望可以开发出一套跨平台的,而且支持各种USB硬件电子密钥的接口,该接口只负责证书和密钥的管理,而不去涉及PKI中其他与终端用户不相关的部分,同时又能使得第三方程序员可以在短时间内掌握该接口,从而可以快速的开发出满足其需求的证书和密钥管理程序。
本文中我们将对如何实现跨平台且兼容各种USB电子密钥设备的证书和密钥管理进行研究,并实现一个供第三方开发使用的证书密钥管理接口。
我们的实现建立在一系列规范与标准之上。为了能够在不同的操作系统平台上使用,我们向上提供JAVA实现的接口并且使用XML文件格式来进行配置管理。而为了可以访问各种不同厂家的USB电子密钥设备,我们又须通过PKCS#11标准中规定的C接口来访问各种设备。因此,我们需要通过JNI规范来沟通分别使用JAVA和C/C++编写的程序。同时,我们通过PKCS#7、PKCS#12标准来支持证书和密钥的导出和导入,我们还提供了使用USB硬件电子密钥设备进行签名和解密的接口。
本文首先介绍了证书和密钥管理的一些基本知识,以及描述了各种相关的标准。接着从整体设计、整体设计的可行性和相关核心技术等各个方面分析了我们的程序。之后我们给出了我们的实现中向上提供的接口以及相关的流程描述并且与JCE接口进行了比较。最后对我们的实现进行了必要的功能和性能测试。我们的实现为第三方开发提供了以下功能:证书密钥库的管理、证书的查找与导出、密钥的查找、证书的导入、密钥的导入、删除证书或密钥、更改保护密码、USB设备签名、USB设备解密。