📄 pki++-
字号:
Infrastructure"定义了PKI结构,并建议了许多标准,其中就包括API,可参见文档:ftp://ftp.ietf.org/internet-drafts/draft-ietf-pkix-apki-00.txt。<BR><BR>目前,在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"草案的标准。<BR><BR>除此之外,Entrust、IBM、Intel、
Netscape和TIS等联合向开放组织(Open
Group)提议了一个基于CDSA的加密和证书管理接口,并使用了Entrust的CMS
API、IBM的密钥恢复API。但开放组织同时也在考虑使用PKCS
#11作为安全API接口。<BR><BR>下面介绍目前两个比较常用的安全API接口:CryptoAPI和CDSA接口。<BR><BR>5.1
CryptoAPI <BR>微软加密应用程序接口CryptoAPI(Microsoft
Cryptographic Application Programming
Interface)为Win32应用程序提供了认证、编码、加密和签名等安全处理,它可使用户在对复杂的加密机制和加密算法不了解的情况下,而对应用程序增加安全功能。这样很符合Windows的设计风格,就像用户可是使用图形库而不需要了解图形硬件一样。<BR><BR>目前CryptoAPI的最新版本是2.0版,在包含CryptoAPI
1.0的全部功能外,还增加了证书管理功能,为网络身份认证提供的基本保证。<BR><BR>CryptoAPI通过一系列的库函数来对应用程序提供PKI安全服务,其整体系统结构如图3所示:<BR><BR><IMG
src="PKI技术及应用开发指南.files/fig3.gif"><BR><BR><BR>图3
CryptoAPI系统结构<BR><BR>CryptoAPI的编程模型同Windows系统的图形设备接口
GDI比较类似,其中加密服务提供者CSP(Cryptographic Service
Providers)等同于图形设备驱动程序
,加密硬件(可选)等同于图形硬件,其上层的应用程序也类似,都不需要同设备驱动程序和硬件直接打交道<BR><BR>CryptoAPI共有五部分组成:简单消息函数(Simplified
Message Functions)、低层消息函数(Low-level Message
Functions)、基本加密函数(Base Cryptographic
Functions)、证书编解码函数(Certificate Encode/Decode
Functions)和证书库管理函数(Certificate Store
Functions)。其中前三者可用于对敏感信息进行加密或签名处理,可保证网络传输信心的私有性;后两者通过对证书的使用,可保证网络信息交流中的认证性。<BR><BR>5.2
CDSA <BR>CDSA(Common Data Security
Architecture)为安全应用服务提供了一个整体框架和解决方案,提供了诸如证书管理等许多PKI功能。<BR><BR>同CryptoAPI类似,CDSA也是以一个分层的服务提供者框架为基础,其的应用模式可分为四层,最上层是应用程序,应用程序的下层是中间件,例如SSL、IPSEC接口、语言接口转换器等,接下来是CSSM层,CSSM层是CDSA的核心层,CSSM的下层是具体的服务提供者,如加密服务、证书服务、政策服务、数据存储服务等,如图4所示。<BR><BR><BR><IMG
src="PKI技术及应用开发指南.files/fig4.gif"><BR><BR>图4
CDS系统结构<BR><BR>--- CSSM
是CDSA的核心部分,它表现为一组公开的应用编程接口(API),为应用程序提供安全功能的调用,共包含4个基本的安全模块。
<BR><BR>加密服务提供(Cryptographic Service Provider,CSP)模块。
CSP负责加/解密、数字签名和私钥保存等工作,是整个CDSA结构的基础。 <BR>信任策略(Trust
Policy,TP)模块。TP负责信任策略的具体实施,判定特定行为(如开支票或访问涉密信息)所需的信任级别。由于具有模块化的结构,TP能够对不同的机构应用不同的策略,比如,对商业银行和政府机构运用的策略就有所不同。
<BR>证书库(Certificate Library,CL)模块。CL提供证书的维护、撤销和数字签名等功能。
<BR>数据存储库(Data Storage
Library,DL)模块。DL进行安全相关数据对象的存储,包括证书、密钥和信任规则对象等,而实际的存储位置可能在大型数据库、原始的文件系统或某种特定的硬件设备中。<BR><BR>----
另外,任何软、硬件厂商都可以建立自己的服务提供模块,无缝嵌入到CDSA的开放式框架中。在CDSA
2.0中又增加任选模块管理,支持更方便地增加模块。<BR><BR>另外,还可以对CSSM进行更高一层的抽象,提供高层的API,使开发者更容易使用CDSA提供的PKI安全功能。<BR><BR>6
PKI标准<BR><BR><BR>随着PKI的发展和应用的不断普及,PKI的产品也越来越多,为了保持个产品之间的兼容性,标准化成了PKI不可避免的发展趋势。<BR><BR>PKI的标准可分为两个部分:一类用于定义PKI,而另一类用于PKI的应用。<BR><BR>6.1
定义PKI的标准
<BR>在PKI技术框架中,许多方面都经过严格的定义,如用户的注册流程、数字证书的格式、CRL的格式、证书的申请格式以及数字签名格式等。<BR><BR>国际电信联盟ITU
X.509协议,是PKI技术体系中应用最为广泛、也是最为基础的一个国际标准。它的主要目的在于定义一个规范的数字证书的格式,以便为基于X.500协议的目录服务提供一种强认证手段。但该标准并非要定义一个完整的、可互操作的PKI认证体系。<BR><BR>PKCS是由美国RSA数据安全公司及其合作伙伴制定的一组公钥密码学标准,其中包括证书申请、证书更新、证书作废表发布、扩展证书内容以及数字签名、数字信封的格式等方面的一系列相关协议。到1999年底,PKCS已经公布了以下标准:
<BR><BR>PKCS#1:定义RSA公开密钥算法加密和签名机制,主要用于组织PKCS#7中所描述的数字签名和数字信封。
<BR>PKCS#3:定义Diffie-Hellman密钥交换协议。
<BR>PKCS#5:描述一种利用从口令派生出来的安全密钥加密字符串的方法。使用MD2或MD5
从口令中派生密钥,并采用DES-CBC模式加密。主要用于加密从一个计算机传送到另一个计算机的私人密钥,不能用于加密消息。
<BR>PKCS#6:描述了公钥证书的标准语法,主要描述X.509证书的扩展格式。
<BR>PKCS#7:定义一种通用的消息语法,包括数字签名和加密等用于增强的加密机制,PKCS#7与PEM兼容,所以不需其他密码操作,就可以将加密的消息转换成PEM消息。
<BR>PKCS#8:描述私有密钥信息格式,该信息包括公开密钥算法的私有密钥以及可选的属性集等。
<BR>PKCS#9:定义一些用于PKCS#6证书扩展、PKCS#7数字签名和PKCS#8私钥加密信息的属性类型。
<BR>PKCS#10:描述证书请求语法。
<BR>PKCS#11:称为Cyptoki,定义了一套独立于技术的程序设计接口,用于智能卡和PCMCIA卡之类的加密设备。
<BR>PKCS#12:描述个人信息交换语法标准。描述了将用户公钥、私钥、证书和其他相关信息打包的语法。
<BR>PKCS#13:椭圆曲线密码体制标准。 <BR>PKCS#14:伪随机数生成标准。
<BR>PKCS#15:密码令牌信息格式标准。<BR><BR>另外,PKCS#2和PKCS#4已经合并到PKCS#1之中。PKIX是由IETF组织中的PKI工作小组制定的系列国际标准。此类标准主要定义基于X.509和PKCS的PKI模型框架。PKIX中定义的四个主要模型为用户、认证中心CA、注册中心RA和证书存取库。<BR><BR>6.2
PKI应用标准
<BR>目前世界上已经出现了许多依赖于PKI的安全标准,即PKI的应用标准,如安全的套接层协议SSL、传输层安全协议TLS、安全的多用途互连网邮件扩展协议S/MIME和IP安全协议IPSEC等。
<BR><BR>S/MIME是一个用于发送安全报文的IETF标准。它采用了PKI数字签名技术并支持消息和附件的加密,无须收发双方共享相同密钥。S/MIME委员会采用PKI技术标准来实现S/MIME,并适当扩展了PKI的功能。目前该标准包括密码报文语法、报文规范、证书处理以及证书申请语法等方面的内容。
<BR>SSL/TLS是互连网中访问WEB服务器最重要的安全协议。当然,他们也可以应用于基于客户机/服务器模型的非WEB类型的应用系统。SSL/TLS都利用PKI的数字证书来认证客户和服务器的身份。
<BR>IPSEC是IETF制定的IP层加密协议,PKI技术为其提供了加密和认证过程的密钥管理功能。IPSEC主要用于开发新一代的VPN。<BR><BR>另外,随着PKI的进一步发展,新的标准也在不断的增加和更新。<BR><BR>7
结论
<BR>从目前的发展来说,PKI的范围非常广,而不仅仅局限于通常认为的CA机构,它还包括完整的安全策略和安全应用。因此,PKI的开发也从传统的身份认证到各种与应用相关的安全场合,如企业安全电子商务和政府的安全电子政务等。<BR><BR>另外,PKI的开发也从大型的认证机构到与企业或政府应用相关的中小型PKI系统发展,既保持了兼容性,又和特定的应用相关。在以后的文章中,我们会对PKI的源代码工程OpenCA进行详细分析,为PKI的开发提供借鉴。<BR><BR>参考资料
<BR><BR>http://www.pkiforum.org/:PKI论坛,可以获取更多关于PKI的信息。
<BR>http://www.pki-page.org/:其中包含了大量PKI站点的链接。
<BR>http://www.openca.org:是一个CA开放源代码机构,可以获取更多的关于CA开发的信息。
<BR><BR>关于作者
<BR>李明柱,男,28岁,北京邮电大学信息安全中心博士生,研究方向:网络安全与电子商务安全,密码学,在国内外学术期刊发表论文10多篇,出版专著8部,如《电子商务安全技术》(北京航空航天大学出版社)和《网络安全》(上海交通大学出版社)等。
<BR><BR>
<TABLE width="100%">
<TBODY>
<TR>
<TD align=left width="30%"><A
href="http://www.javaresearch.org/copyright.jsp">版权声明</A>
</TD>
<TD align=right width="70%">
<TABLE align=right cellPadding=1>
<TBODY>
<TR>
<TD bgColor=#eeeeee>
<TABLE border=0 cellPadding=1 cellSpacing=0>
<TBODY>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -