论文部分内容阅读
为解决网络安全问题,世界各国对其进行了多年的研究,初步形成了一套完整的基于Internet的安全解决方案,即目前被广泛采用的公钥基础设施PKI,而签发数字证书的CA则是PKI的核心。CA的基本功能有:证书签发、证书更新、证书撤销和证书验证。其核心功能就是发放和管理数字证书。
政府内网CA的需求分析
政府内网CA是相对于整个Internet CA而言的。Internet CA要对全球范围内各种人员提供服务,要考虑方方面面的需要。因此其结构复杂、开发周期长、软硬件规模庞大、投资成本高昂、部署困难、使用和维护复杂。
目前,很多政府内部建立了Intranet,在内部网中同样需要保证信息的安全。在一个单位中部署Internet CA显然是不现实的,这就需要一个适合在至多有数千用户的政府部门内部使用的CA。虽然它仅具有Internet CA的部分功能,但它足以满足需求,同时对它另一方面的要求是结构简单、开发周期短、软硬件规模小、投资成本较低、易部署、使用和维护简单。我们与某计算机公司合作,设计并实现了政府内网CA。
1.总体需求
系统应部署简单,用户使用方便。用户申请、更新、撤销、查询下载证书都应通过浏览器进行。只需在身份验证的时候到CA办公地点离线审核。
CA签发的证书要符合x.509 v3国际标准。
由于需要针对不同的繁忙程度,因此各软件模块可分别在不同服务器上运行,也可在同一台服务器上运行。
由于仅在一个单位内部使用,无需设置远程RA(Registration Authority)。对于用户分散的部门,可通过电话联系或部门领导对部门员工集体注册等方式解决身份验证的问题。
由于至多有数千用户,证书的撤销操作较少,政府内网CA不设置0CSP服务器,证书撤销验证采用CRL。可令CRL中的下次更新时刻与此次更新时刻的间隔较短,比如几天。同时每次有证书撤销操作时都更新CRL。这样既不会增加多少服务器的负担,又保证了CRL的实时性。
同样由于用户较少,也不需查询速度较快的LDAP服务器:由于一般用户对数据库非常熟悉,可将用户证书同其他信息一同存于数据库中。
2.软件需求
为尽可能在一台服务器上运行多个软件模块,各服务器必须使用同一种操作系统。在实现中,为使用户操作简便,我们选用了Windows 2003 Server SP1。
考虑到有较多的底层密码操作,也为了提高软件的移植性,各软件模块中与用户界面无关的部分统一用标准C++语言开发。
密码操作使用何种方式实现是一个复杂的问题。可使用微软的CryptoAPI,自己作为CSP(Cryptographic Service Provider)来实现对密码硬件设备的操作,但这需要微软对CSP的签名。也可以根据PKCS#11标准编制自己的密码操作库。在实现中,我们使用了该计算机公司已有的符合PKCS#11标准的密码操作库。
3.硬件需求
尽量减少服务器的数量,尤其要减少昂贵的密码硬件设备的数量。为了系统的安全,CA私钥、系统主密钥(一个对称密钥,用于加密敏感信息)等高度敏感的信息必须使用密码硬件设备存储,密码硬件设备同时完成各种基本的密码操作。考虑到用户较少,可用一台加密机,或只用一台装有加密卡的普通服务器。
4.功能需求
要尽可能灵活,给用户尽可能多的选择。用户申请新证书时,有密钥托管与不托管两种选择。所谓密钥托管,是指用户的公私钥对由CA产生;密钥不托管,则指用户的公私钥对由用户自己产生,并产生PKCS#10请求。
政府内网CA的总体设计
1.政府内网CA的软件模块划分
用户证书申请及管理模块:主要以网页形式提供证书申请、证书更新、证书撤销、证书/CRL的查询/下载、PKCS#12包的下载等功能。各种证书请求直接存入数据库,各种查询/下载直接从数据库中读取数据。
CA管理模块:CA管理模块对系统进行日常的配置和管理。提供各种证书请求的审核、CA策略设定、系统监控、操作员管理、日志管理、统计报表以及各种查询功能。将各种证书请求从数据库中读出供操作员审核,审核通过后调用CA服务模块进行处理。
CA服务模块:这是CA的核心,由CA管理模块调用。对各种证书请求进行处理,如证书的签发、更新、撤销、CRL的生成等,并将处理结果存入数据库。其中的密码操作调用密码服务模块。
密码服务模块:由CA服务模块调用。执行产生用户公私钥对、对证书及CRL签名及验证签名、对称密钥加密解密等密码操作。产生的用户公私钥对经系统主密钥加密后存入数据库。
数据库模块:存储各种数据。如CA的各种参数、用户的证书和PKCS#12包、用户的公私钥对。注意应将敏感信息加密后存储。
2.政府内网CA的硬件配置
政府内网CA的硬件配置包括:数据库服务器、CA服务器、密码服务器、Web服务器、管理Pc机分别运行数据库模块、CA服务模块、密码服务模块、用户证书申请及管理模块、CA管理模块。密码服务器为一台装有加密卡的普通服务器。对于较大的政府部门,可不用加密卡,而另设一台加密机。
在实际使用中,根据用户的多少,可以将几个软件模块置于一台服务器上运行,以节省硬件投资。如将CA服务模块和密码服务模块放在一台服务器上运行。另外,很多政府部门都已有政府内网Web服务器,可根据需要灵活使用。
政府内网CA各软件模块的详细设计及实现
1.用户证书申请及管理模块
本模块直接面向最终用户,要求操作简单、功能灵活。由于服务器操作系统使用Windows 2003 Server SP1,因此Web服务器我们选用了微软操作系统内置的IIS,网页使用ASP.net2.0技术、AJAX技术、COM技术和ActiveX技术。由于要传送口令、PKCS#12包等敏感数据,IIS配置成使用SSL保护。
(1)用户注册功能。考虑到用户管理已有证书的需要,同时用户可能申请多个不同类型的证书,因此用户首先要注册。建立用户名和口令,同时填写申请证书时用到的基本信息。在网页中要用AJAX脚本对各项内容进行合法性检查。
(2)证书申请功能。用户可以选择密钥托管或不托管。如果密钥托管,用户只需选择证书类型,并且设立PKCS#12包的口令。证书及私钥将封入一个PKCS#12包供下载。如果密钥不托管,用户可以提交一个已有的PKCS#10请求,也可以选择智能卡或USB KEY等硬件设备生成标准的PKCS#10请求,必须编写操作智能卡或USB KEY等硬件设备的ActiveX控件。如果没有硬件设备,也可以直接利用微软的ActiveX控件XEnroll.dll中接口ICEnroll的方法createPKCS10产生PKCS#10请求。在具体实现中,我们实现了以上全部的选项。
(3)个人证书管理功能。用户输入用户名和口令后,可从这里完成证书的各种管理功能。为防止黑客编程反复尝试口令,可在输入口令页面中以图片的形式放置验证码,还可考虑采用一次性口令等技术提供更高的安全性。
用户可对自己的证书提出更新、撤销等请求;也可以下载证书或PKCS#12包;还可以修改PKCS#12包的口令。证书或PKCS#12包下载后可导入系统的证书存储区,也可以导入智能卡或USB KEY等硬件设备,还可以另存为文件。这些功能均需通过ActiveX控件来完成。还需编写COM组件来完成修改PKCS#12包口令的功能。
值得考虑的是,如何下载PKCS#12包。PKCS#12包中有用户的私钥,非常重要。为顺利通过防火墙和NAT网关等设备,PKCS#12包的下载ActiveX控件实现,该控件采用直接向Web服务器发送HTPP请求,由ActiveX控件直接下载,不通过浏览器下载,避免在浏览器临时文件夹中留有痕迹,安全性高。
2.CA系统管理模块
(1)系统初始化。本模块完成整个政府内外CA系统的初始化,包括数据库表的创建,CA根证书及私钥、管理员证书及私钥的生成。仅在安装完成后运行一次。
(2)系统登录。操作人员都拥有智能卡或USB KEY等硬件设备,存放其证书和私钥。登录时用其证书及私钥执行鉴别协议。每个操作人员登陆后可进行日常的系统管理操作,如查看日志、统计数据、修改系统的设置。
(3)证书请求处理。本模块主要实现对各种证书请求的审核,审核通过后则通过套接字编程调用CA服务模块处理。仅发送一个请求序列号给CA服务模块,CA服务模块据此从数据库中取出有关数据处理,然后将处理结果直接存入数据库,同时发给证书请求处理模块一个结果状态代码。
(4)查询统计和日志管理。本模块能够查询统计用户和证书等的信息。并能记录操作人员在系统中的操作及操作结果等信息,以备日后核查。
(5)系统设置。本模块主要设置证书有效期,使用算法等CA策略。还完成操作人员的添加、删除、查询、更新等功能。只能由管理员来做。
3.CA服务模块
本模块以后台守护进程的方式运行,监听并接收CA管理模块发来的请求序列号。根据请求序列号,从数据库中获取请求类型和用户信息,完成证书签发、撤销和更新等操作,并将签好的证书、CRL及PKCS#12包存人数据库。然后给CA管理模块返回处理结果状态代码。
(1)证书签发处理。根据请求序列号,从数据库中取出用户基本信息和用户请求信息。如果用户选择了密钥托管,则从数据库中取出一未用公私钥对。经系统主密钥解密后,根据用户信息为用户制作证书和PKCS#12包,再将其存入数据库,PKCS#12包必须用系统主密钥加密;如果用户选择了密钥不托管,则先解开PKCS#10包,然后根据解出的信息为用户制作证书,最后把证书存入数据库。
所有的签名和验证签名、对称密钥加解密等密码操作都需调用密码服务模块来完成。
(2)证书撤销处理。根据请求序列号,在数据库中添加该证书的撤销信息,将此证书归档。由于用户不多,证书撤销后立即刷新CRL。CRL能签名操作需调用密码服务模块来完成。
(3)证书更新处理。这是证书撤销和申请的结合。即撤销原有证书,申请新证书。不再赘述。
4.密码服务模块
本模块主要完成公私钥对的生成,以及签名和验证签名、对称密钥加解密等密码操作。本模块也以后台守护进程的方式运行,监听并接收CA服务模块发来的请求。
(1)密钥数量监控。生成公私钥对是非常消耗时间资源的操作。本模块随时监控数据至中未用公私钥对的数量,当未用公私钥对少于某一数值时,以较低的运行优先级启动密码硬件设备生成一定数量的公私钥对,系统主密钥加密后存入数据库。
(2)签名和验证签名。根据CA服务模块发来的请求,调用密码硬件设备完成签名和验证签名等密码操作。
(3)其他密码操作。调用密码硬件设备完成对称加解密、生成哈希值等其他密码操作。如利用系统主密钥加解密敏感数据。
5.数据库模块
本模块比较简单,根据需要建立几十个基表即可,用不到存储过程、触发器等复杂对象。不再赘述。
在PKI中,CA实现了对证书申请者的身份验证以及签发、管理数字证书的过程。政府内网CA具有CA的基本功能,且具有配置简单,灵活易用的优点。对于政府部门具有较强的针对性和推广应用前景。
(作者单位:南京市建设工程交易中心信息部)
政府内网CA的需求分析
政府内网CA是相对于整个Internet CA而言的。Internet CA要对全球范围内各种人员提供服务,要考虑方方面面的需要。因此其结构复杂、开发周期长、软硬件规模庞大、投资成本高昂、部署困难、使用和维护复杂。
目前,很多政府内部建立了Intranet,在内部网中同样需要保证信息的安全。在一个单位中部署Internet CA显然是不现实的,这就需要一个适合在至多有数千用户的政府部门内部使用的CA。虽然它仅具有Internet CA的部分功能,但它足以满足需求,同时对它另一方面的要求是结构简单、开发周期短、软硬件规模小、投资成本较低、易部署、使用和维护简单。我们与某计算机公司合作,设计并实现了政府内网CA。
1.总体需求
系统应部署简单,用户使用方便。用户申请、更新、撤销、查询下载证书都应通过浏览器进行。只需在身份验证的时候到CA办公地点离线审核。
CA签发的证书要符合x.509 v3国际标准。
由于需要针对不同的繁忙程度,因此各软件模块可分别在不同服务器上运行,也可在同一台服务器上运行。
由于仅在一个单位内部使用,无需设置远程RA(Registration Authority)。对于用户分散的部门,可通过电话联系或部门领导对部门员工集体注册等方式解决身份验证的问题。
由于至多有数千用户,证书的撤销操作较少,政府内网CA不设置0CSP服务器,证书撤销验证采用CRL。可令CRL中的下次更新时刻与此次更新时刻的间隔较短,比如几天。同时每次有证书撤销操作时都更新CRL。这样既不会增加多少服务器的负担,又保证了CRL的实时性。
同样由于用户较少,也不需查询速度较快的LDAP服务器:由于一般用户对数据库非常熟悉,可将用户证书同其他信息一同存于数据库中。
2.软件需求
为尽可能在一台服务器上运行多个软件模块,各服务器必须使用同一种操作系统。在实现中,为使用户操作简便,我们选用了Windows 2003 Server SP1。
考虑到有较多的底层密码操作,也为了提高软件的移植性,各软件模块中与用户界面无关的部分统一用标准C++语言开发。
密码操作使用何种方式实现是一个复杂的问题。可使用微软的CryptoAPI,自己作为CSP(Cryptographic Service Provider)来实现对密码硬件设备的操作,但这需要微软对CSP的签名。也可以根据PKCS#11标准编制自己的密码操作库。在实现中,我们使用了该计算机公司已有的符合PKCS#11标准的密码操作库。
3.硬件需求
尽量减少服务器的数量,尤其要减少昂贵的密码硬件设备的数量。为了系统的安全,CA私钥、系统主密钥(一个对称密钥,用于加密敏感信息)等高度敏感的信息必须使用密码硬件设备存储,密码硬件设备同时完成各种基本的密码操作。考虑到用户较少,可用一台加密机,或只用一台装有加密卡的普通服务器。
4.功能需求
要尽可能灵活,给用户尽可能多的选择。用户申请新证书时,有密钥托管与不托管两种选择。所谓密钥托管,是指用户的公私钥对由CA产生;密钥不托管,则指用户的公私钥对由用户自己产生,并产生PKCS#10请求。
政府内网CA的总体设计
1.政府内网CA的软件模块划分
用户证书申请及管理模块:主要以网页形式提供证书申请、证书更新、证书撤销、证书/CRL的查询/下载、PKCS#12包的下载等功能。各种证书请求直接存入数据库,各种查询/下载直接从数据库中读取数据。
CA管理模块:CA管理模块对系统进行日常的配置和管理。提供各种证书请求的审核、CA策略设定、系统监控、操作员管理、日志管理、统计报表以及各种查询功能。将各种证书请求从数据库中读出供操作员审核,审核通过后调用CA服务模块进行处理。
CA服务模块:这是CA的核心,由CA管理模块调用。对各种证书请求进行处理,如证书的签发、更新、撤销、CRL的生成等,并将处理结果存入数据库。其中的密码操作调用密码服务模块。
密码服务模块:由CA服务模块调用。执行产生用户公私钥对、对证书及CRL签名及验证签名、对称密钥加密解密等密码操作。产生的用户公私钥对经系统主密钥加密后存入数据库。
数据库模块:存储各种数据。如CA的各种参数、用户的证书和PKCS#12包、用户的公私钥对。注意应将敏感信息加密后存储。
2.政府内网CA的硬件配置
政府内网CA的硬件配置包括:数据库服务器、CA服务器、密码服务器、Web服务器、管理Pc机分别运行数据库模块、CA服务模块、密码服务模块、用户证书申请及管理模块、CA管理模块。密码服务器为一台装有加密卡的普通服务器。对于较大的政府部门,可不用加密卡,而另设一台加密机。
在实际使用中,根据用户的多少,可以将几个软件模块置于一台服务器上运行,以节省硬件投资。如将CA服务模块和密码服务模块放在一台服务器上运行。另外,很多政府部门都已有政府内网Web服务器,可根据需要灵活使用。
政府内网CA各软件模块的详细设计及实现
1.用户证书申请及管理模块
本模块直接面向最终用户,要求操作简单、功能灵活。由于服务器操作系统使用Windows 2003 Server SP1,因此Web服务器我们选用了微软操作系统内置的IIS,网页使用ASP.net2.0技术、AJAX技术、COM技术和ActiveX技术。由于要传送口令、PKCS#12包等敏感数据,IIS配置成使用SSL保护。
(1)用户注册功能。考虑到用户管理已有证书的需要,同时用户可能申请多个不同类型的证书,因此用户首先要注册。建立用户名和口令,同时填写申请证书时用到的基本信息。在网页中要用AJAX脚本对各项内容进行合法性检查。
(2)证书申请功能。用户可以选择密钥托管或不托管。如果密钥托管,用户只需选择证书类型,并且设立PKCS#12包的口令。证书及私钥将封入一个PKCS#12包供下载。如果密钥不托管,用户可以提交一个已有的PKCS#10请求,也可以选择智能卡或USB KEY等硬件设备生成标准的PKCS#10请求,必须编写操作智能卡或USB KEY等硬件设备的ActiveX控件。如果没有硬件设备,也可以直接利用微软的ActiveX控件XEnroll.dll中接口ICEnroll的方法createPKCS10产生PKCS#10请求。在具体实现中,我们实现了以上全部的选项。
(3)个人证书管理功能。用户输入用户名和口令后,可从这里完成证书的各种管理功能。为防止黑客编程反复尝试口令,可在输入口令页面中以图片的形式放置验证码,还可考虑采用一次性口令等技术提供更高的安全性。
用户可对自己的证书提出更新、撤销等请求;也可以下载证书或PKCS#12包;还可以修改PKCS#12包的口令。证书或PKCS#12包下载后可导入系统的证书存储区,也可以导入智能卡或USB KEY等硬件设备,还可以另存为文件。这些功能均需通过ActiveX控件来完成。还需编写COM组件来完成修改PKCS#12包口令的功能。
值得考虑的是,如何下载PKCS#12包。PKCS#12包中有用户的私钥,非常重要。为顺利通过防火墙和NAT网关等设备,PKCS#12包的下载ActiveX控件实现,该控件采用直接向Web服务器发送HTPP请求,由ActiveX控件直接下载,不通过浏览器下载,避免在浏览器临时文件夹中留有痕迹,安全性高。
2.CA系统管理模块
(1)系统初始化。本模块完成整个政府内外CA系统的初始化,包括数据库表的创建,CA根证书及私钥、管理员证书及私钥的生成。仅在安装完成后运行一次。
(2)系统登录。操作人员都拥有智能卡或USB KEY等硬件设备,存放其证书和私钥。登录时用其证书及私钥执行鉴别协议。每个操作人员登陆后可进行日常的系统管理操作,如查看日志、统计数据、修改系统的设置。
(3)证书请求处理。本模块主要实现对各种证书请求的审核,审核通过后则通过套接字编程调用CA服务模块处理。仅发送一个请求序列号给CA服务模块,CA服务模块据此从数据库中取出有关数据处理,然后将处理结果直接存入数据库,同时发给证书请求处理模块一个结果状态代码。
(4)查询统计和日志管理。本模块能够查询统计用户和证书等的信息。并能记录操作人员在系统中的操作及操作结果等信息,以备日后核查。
(5)系统设置。本模块主要设置证书有效期,使用算法等CA策略。还完成操作人员的添加、删除、查询、更新等功能。只能由管理员来做。
3.CA服务模块
本模块以后台守护进程的方式运行,监听并接收CA管理模块发来的请求序列号。根据请求序列号,从数据库中获取请求类型和用户信息,完成证书签发、撤销和更新等操作,并将签好的证书、CRL及PKCS#12包存人数据库。然后给CA管理模块返回处理结果状态代码。
(1)证书签发处理。根据请求序列号,从数据库中取出用户基本信息和用户请求信息。如果用户选择了密钥托管,则从数据库中取出一未用公私钥对。经系统主密钥解密后,根据用户信息为用户制作证书和PKCS#12包,再将其存入数据库,PKCS#12包必须用系统主密钥加密;如果用户选择了密钥不托管,则先解开PKCS#10包,然后根据解出的信息为用户制作证书,最后把证书存入数据库。
所有的签名和验证签名、对称密钥加解密等密码操作都需调用密码服务模块来完成。
(2)证书撤销处理。根据请求序列号,在数据库中添加该证书的撤销信息,将此证书归档。由于用户不多,证书撤销后立即刷新CRL。CRL能签名操作需调用密码服务模块来完成。
(3)证书更新处理。这是证书撤销和申请的结合。即撤销原有证书,申请新证书。不再赘述。
4.密码服务模块
本模块主要完成公私钥对的生成,以及签名和验证签名、对称密钥加解密等密码操作。本模块也以后台守护进程的方式运行,监听并接收CA服务模块发来的请求。
(1)密钥数量监控。生成公私钥对是非常消耗时间资源的操作。本模块随时监控数据至中未用公私钥对的数量,当未用公私钥对少于某一数值时,以较低的运行优先级启动密码硬件设备生成一定数量的公私钥对,系统主密钥加密后存入数据库。
(2)签名和验证签名。根据CA服务模块发来的请求,调用密码硬件设备完成签名和验证签名等密码操作。
(3)其他密码操作。调用密码硬件设备完成对称加解密、生成哈希值等其他密码操作。如利用系统主密钥加解密敏感数据。
5.数据库模块
本模块比较简单,根据需要建立几十个基表即可,用不到存储过程、触发器等复杂对象。不再赘述。
在PKI中,CA实现了对证书申请者的身份验证以及签发、管理数字证书的过程。政府内网CA具有CA的基本功能,且具有配置简单,灵活易用的优点。对于政府部门具有较强的针对性和推广应用前景。
(作者单位:南京市建设工程交易中心信息部)