基于认证技术的认证机构系统的研究

2009-10-22 08:13陈易平
商情 2009年23期
关键词:数字证书密钥证书

陈易平

【摘 要】在网络的发展中,网络安全问题越来越突出,在诸多网络安全技术中,认证机构能够有效地解决网络信息的安全问题。本文探讨了认证机构系统的体系结构以及在实际运行时的具体流程,利用Java设计了认证机构系统在实际应用时所需要的类别及实施方案。

【关键词】认证机构CA系统 证书 数字证书 密钥

1 引言

电子商务给人们的生活和工作带来了巨大的改变,但在电子商务给人们带来好处的同时,其安全问题也逐渐暴露出来,而且越来越受到人们的关注,于是许多关于网络安全的新技术应运而生,其中认证机构CA作为解决网络信息安全问题的开发性新技术,己经得到了广泛应用。关于认证机构的了解也是在我教学过程中的一个重点让学生去学习的知识点。

2 认证机构CA和数字证书

2.1 認证机构CA

在现在的网上交易过程中,无论是B2B,还是B2C,都面临着一个问题,就是如何解决交易双方的身份有效性,交易过程的合法性。认证机构CA认证机构(certificate Authority)是整个网上电子交易安全的关键环节,它主要负责产生、分配并管理所有参与网上交易的需要身份认证的实体的数字证书,为解决用户信任问题,交易双方在交易的各个环节中都需要检验对方数字证书的有效性,所以,认证机构发放的证书一定要具有权威性、公证性和可信赖性。CA是一个实体,是证书的签发机关,是公钥基础设施的核心,为客户提供签发公钥证书、认证证书、分配证书和管理证书的服务。CA将客户的公钥与客户的名称及其它属性关联起来,并制定政策和具体步骤来验证、识别用户身份,再对用户证书进行签名,确保证书持有者的身份和公钥的拥有权。

2.2数字证书

数字证书是网络通讯各方身份信息的一系列数据,是通过特定的加密算法来实现的.它提供了一种在网上验证身份的方式,在网上交易时可以用来验证对方的身份。数字证书是一个由认证机构确认了相应私钥持有者(人、设备或其他实体)的身份或其它属性后用数字方式签名的包含公开密钥持有者信息以及公开密钥的文件。证书主要包括一个公开密钥、证书名称及认证机构的数字签名。一般情况下,数字证书还包括密钥的有效时间、发放证书机关的名称、该数字证书的序列号等信息。

3 CA系统

一个典型的CA系统包括安全服务器、CA服务器、注册机构RA ( Registration Authority)、LDAP(Lightweight Directory Access Protocol)目录服务器和数据库服务器。其中安全服务器面向普通用户,用于提供证书申请、浏览、证书撤销列表以及证书下载等安全服务。CA服务器负责证书的颁发。LDAP服务器提供目录浏览服务,负责将RA服务器传输过来的用户信息及数字证书加入到服务器上。数据库服务器用于CA数据、日志和统计信息的存储和管理。目前,CA系统己经投入使用到很多领域,引入CA系统的必要性主要表现在:信息的加密、网上交易的不可否认性、提供Internet上的各方信任以及保证交易信息的完整性等方面。

4 开发CA系统

待开发的CA系统主要包括以下几个运行实体:根CA、业务CA、用户和网站。根CA负责为业务CA颁发证书,业务CA是根CA的用户,同时又是个人用户的直接CA,负责为用户颁发证书,用户通过向业务CA申请证书而获得访问网站的权利,网站负责向用户提供需要安全认证的web服务。

此CA系统的运行流程如下。

( 1)创建两个全局对象:根CA全局对象和业务CA全局对象;

( 2)调用根CA的构造函数,对根CA进行初始化;

( 3)调用业务CA的构造函数,对业务以进行初始化,如果业务CA初始化失败,则先向根CA申请证书,然后从根CA上下载证书和私钥;

( 4)业务CA为用户颁发证书;

( 5)用户从业务CA上下载证书和私钥。

在根CA中,存放密钥和证书的地方均为注册表,查找密钥库和证书库是通过在注册表中查找相应项来得到的,创建密钥库和证书库也是在注册表中实现。作为根CA,首先需要给自己颁发一个证书,该证书由根CA本身进行签名,然后利用该证书给其它业务CA颁发证书并签名。在根CA给自己颁发证书之后,就可以给各业务CA颁发证书。在根CA实际颁发证书时,首先在证书库和私钥库中生成业务CA的证书和私钥,具体实现时,可以写入到注册表中,也可以写到数据库中,或者写到LDAP服务器的相应项中,然后将生成的证书和密钥写入到业务CA的相应硬件中。

在网站方面,应该配置一个PKIserver服务器用来进行加密、解密、签名和验签等各种功能。实际运行时,可以将网站和PKIserver服务器部署在同一台服务器上。在用户与网站的交互过程中,网站先返回一个随机数给用户,用户拿到该随机数后,表示网站将要发送的信息以此随机数作为对称密钥进行加密,用户应该先对此随机数进行签名确认,表示正确收到该随机数,如果该随机数在传输过程中出错,则后面进行验签时不会通过。网站在收到用户的确认信息之后,就可以使用用户的加密证书对密钥进行加密,并用自己的签名证书对发送信息进行签名,用户收到信息后,首先使用网站证书的公钥进行验证签名,确认信息正确后,用私钥解开对称密钥,然后用该对称密钥解密信息,得到所需的明文信息。如果只是用户之间进行安全信息的交互,则只需将网站上的证书替换为相应的用户证书即可。

根据以上流程,可以为系统设计如下几个类:

class CABase {

void init(){ }

void downloadCert(){ }

void issueCert(){ }

Boolean isEmpty(){ }

void exportCert(){ }

void importCert(){ }

voidgenerateKey(){ }

}

其中函数init()用来初始化类对象,函数downloadCert ()用来实现下载证书的功能,函数issueCert ()用来实现颁发证书的功能,函数isEmpty()用来判断当前对象是否己经初始化,函数exPortCert ()用来实现输出证书的功能,函数imPortCert()用来实现导入证书的功能,函数generateKey ()用来实现生成密钥的功能。接着设计类RootCA和BuslCA,这两个类都继承类CABase,并且重载了类CABase里init()、downloadCert()、issueCert()三个函数,分别来实现自己业务的操作。

最后设计类Key,其主要功能是从硬件设备或软件中读取证书和密钥以及向硬件设备写入证书和密钥信息。

class Key {

void readCert() {}

void writeCert() {}

void readKey(){}

void writeKey() {}

void generateSignKey(){ }

void exportSignKey() { }

其中函数readCert()用来实现读取证书的功能,而函数writeCert()用来实现写证书的功能,函数readKey()用来实现读取密钥的功能,而函数writeKey()用来实现写密钥的功能,函数generateSignKey()用来实现生成签名密钥的功能,而函数exportSignKey()用来实现导出签名密钥的功能。

参考文献:

[1]林枫.电子商务安全技术及应用[J].北京:北京航空航天大学出版社,2001.

[2]Willialm stallings著,杨明,谢希仁等译.密码编码学与网络安全、原理与实践(第二版)[M].北京:电子工业出版社,2001.

[3]关振胜.公钥基础设施PKI与认证机构CA[ M].北京:电子工业出版社,2002 .

猜你喜欢
数字证书密钥证书
幻中邂逅之金色密钥
幻中邂逅之金色密钥
少就是多
BitLocker密钥恢复二三事
PKI技术在SSLVPN中的应用
两面夹击 让恶意证书无处遁形
假证
数字签名保护Word文档
一种新的动态批密钥更新算法