李明柱 博士 (mzli@263.net)
北京邮电大学信息安全中心
2002 年 6 月
4 PKI应用
PKI技术的广泛应用能满足人们对网络交易安全保障的需求。当然,作为一种基础设施,PKI的应用范围非常广泛,并且在不断发展之中,下面给出几个应用实例。
1. 虚拟专用网络(VPN)
VPN 是一种架构在公用通信基础设施上的专用数据通信网络,利用网络层安全协议(尤其是IPSec)和建立在PKI上的加密与签名技术来获得机密性保护。基于 PKI技术的IPSec协议现在已经成为架构VPN的基础,它可以为路由器之间、防火墙之间或者路由器和防火墙之间提供经过加密和认证的通信。虽然它的实现会复杂一些,但其安全性比其他协议都完善得多。
2. 安全电子邮件
作为 Internet上最有效的应用,电子邮件凭借其易用、低成本和高效已经成为现代商业中的一种标准信息交换工具。随着Internet的持续增长,商业机构或政府机构都开始用电子邮件交换一些秘密的或是有商业价值的信息,这就引出了一些安全方面的问题,包括:消息和附件可以在不为通信双方所知的情况下被读取、篡改或截掉;发信人的身份无法确认。电子邮件的安全需求也是机密、完整、认证和不可否认,而这些都可以利用PKI技术来获得。目前发展很快的安全电子邮件协议是S/MIME (The Secure Multipurpose Internet Mail Extension),这是一个允许发送加密和有签名邮件的协议。该协议的实现需要依赖于PKI技术。
3. Web安全
浏览Web页面是人们最常用的访问Internet的方式。如果要通过Web 进行一些商业交易,该如何保证交易的安全呢?为了透明地解决Web的安全问题,在两个实体进行通信之前,先要建立SSL连接,以此实现对应用层透明的安全通信。利用PKI技术,SSL协议允许在浏览器和服务器之间进行加密通信。此外服务器端和浏览器端通信时双方可以通过数字证书确认对方的身份。-结合 SSL协议和数字证书,PKI技术可以保证Web 交易多方面的安全需求,使Web上的交易和面对面的交易一样安全。
5 应用编程接口API
协议标准是系统具有可交互性的前提和基础,它规范了PKI系统各部分之间相互通信的格式和步骤。而应用编程界面API(Application programming interfaces)则定义了如何使用这些协议,并为上层应用提供PKI服务。当应用需要使用PKI服务,如获取某一用户的公钥、请求证书废除信息或请求证书时将会都会用到API。目前API没有统一的国际标准,大部分都是操作系统或某一公司产品的扩展,并在其产品应用的框架内提供PKI服务。
目前,有很多可以让开发者选择的API类型。IETF建议标准为通用安全服务API:GSS-API(Generic Security Service Application Program Interface),它提供了一种接口与网络机制和网络协议相互独立的实现。
欧洲建立的SESAME(Secure European System for Applications in a Multi-Vendor Environment)定义了一些安全界面,并作为该组织发展的安全技术的一部分,该接口得到了欧洲许多著名厂商的支持,如Bull SA、ICL和Seimens等,但没有在美国得到支持,特别是一些大的厂商,如Microsoft和Netscape等。
Entrust也为其产品提供了一套API,如Entrust证书管理服务API(CMS API,Entrust’s Certificate Management Services API),该API允许应用使用Entrust的证书管理和分发服务。在1996年指定,并与1997年更新的PKIX Internet草案"Architecture for Public Key Infrastructure"定义了PKI结构,并建议了许多标准,其中就包括API,可参见文档:ftp://ftp.ietf.org/internet-drafts/draft-ietf-pkix-apki-00.txt。
目前,在API市场处于领先地位的是Microsoft的CryptoAPI和Intel的公用数据安全框架CDSA(Common Data Security Architecture),他们凭借自己的产品优势相互竞争。Microsoft利用其广泛的操作系统市场,而Intel则凭借其PC芯片的优势,并与其它厂商,如IBM、Entrust和Netscape等进行联合,共同支持CDSA。现在也有很多厂商的PKI产品同时支持这两种API,如 Entrust等。PKIX在很多情况下支持CDSA,并建议其为"Architecture for Public Key Infrastructure"草案的标准。
除此之外,Entrust、IBM、Intel、 Netscape和TIS等联合向开放组织(Open Group)提议了一个基于CDSA的加密和证书管理接口,并使用了Entrust的CMS API、IBM的密钥恢复API。但开放组织同时也在考虑使用PKCS #11作为安全API接口。
下面介绍目前两个比较常用的安全API接口:CryptoAPI和CDSA接口。
5.1 CryptoAPI
微软加密应用程序接口CryptoAPI(Microsoft Cryptographic Application Programming Interface)为Win32应用程序提供了认证、编码、加密和签名等安全处理,它可使用户在对复杂的加密机制和加密算法不了解的情况下,而对应用程序增加安全功能。这样很符合Windows的设计风格,就像用户可是使用图形库而不需要了解图形硬件一样。
目前CryptoAPI的最新版本是2.0版,在包含CryptoAPI 1.0的全部功能外,还增加了证书管理功能,为网络身份认证提供的基本保证。
CryptoAPI通过一系列的库函数来对应用程序提供PKI安全服务,其整体系统结构如图3所示:
图3 CryptoAPI系统结构
CryptoAPI的编程模型同Windows系统的图形设备接口 GDI比较类似,其中加密服务提供者CSP(Cryptographic Service Providers)等同于图形设备驱动程序 ,加密硬件(可选)等同于图形硬件,其上层的应用程序也类似,都不需要同设备驱动程序和硬件直接打交道
CryptoAPI共有五部分组成:简单消息函数(Simplified Message Functions)、低层消息函数(Low-level Message Functions)、基本加密函数(Base Cryptographic Functions)、证书编解码函数(Certificate Encode/Decode Functions)和证书库管理函数(Certificate Store Functions)。其中前三者可用于对敏感信息进行加密或签名处理,可保证网络传输信心的私有性;后两者通过对证书的使用,可保证网络信息交流中的认证性。
5.2 CDSA
CDSA(Common Data Security Architecture)为安全应用服务提供了一个整体框架和解决方案,提供了诸如证书管理等许多PKI功能。
同 CryptoAPI类似,CDSA也是以一个分层的服务提供者框架为基础,其的应用模式可分为四层,最上层是应用程序,应用程序的下层是中间件,例如 SSL、IPSEC接口、语言接口转换器等,接下来是CSSM层,CSSM层是CDSA的核心层,CSSM的下层是具体的服务提供者,如加密服务、证书服务、政策服务、数据存储服务等,如图4所示。
图4 CDS系统结构
CSSM 是CDSA的核心部分,它表现为一组公开的应用编程接口(API),为应用程序提供安全功能的调用,共包含4个基本的安全模块。
* 加密服务提供(Cryptographic Service Provider,CSP)模块。 CSP负责加/解密、数字签名和私钥保存等工作,是整个CDSA结构的基础。
* 信任策略(Trust Policy,TP)模块。TP负责信任策略的具体实施,判定特定行为(如开支票或访问涉密信息)所需的信任级别。由于具有模块化的结构,TP能够对不同的机构应用不同的策略,比如,对商业银行和政府机构运用的策略就有所不同。
* 证书库(Certificate Library,CL)模块。CL提供证书的维护、撤销和数字签名等功能。
* 数据存储库(Data Storage Library,DL)模块。DL进行安全相关数据对象的存储,包括证书、密钥和信任规则对象等,而实际的存储位置可能在大型数据库、原始的文件系统或某种特定的硬件设备中。
另外,任何软、硬件厂商都可以建立自己的服务提供模块,无缝嵌入到CDSA的开放式框架中。在CDSA 2.0中又增加任选模块管理,支持更方便地增加模块。
另外,还可以对CSSM进行更高一层的抽象,提供高层的API,使开发者更容易使用CDSA提供的PKI安全功能。 |