文档介绍:CSP开发流程1
信息安全  2008-11-11 15:53    阅读575    评论1
字号: 大大中中小小
当前,国内许多科研单位开发了高强度加密算法,这些加密算法或者以纯软件形式,或者以加密卡形式提
供给用户。不同加密服务提供者提供的加密接口往往各不相同,这就给用户带来不便。因此,出现了有关加
密API国际标准和规范,呈现给用户加密API有几种统一形式。目前有关加密API国际标准和规范主要有
:GSS-、GCS-API、CDSA、RSAPKCS#、RSAB
SAFEAPI、。其中,CDSA、RSAPKCS#11和微软CryptoAPI在实际中应用得较多,也
是PKI推荐使用的加密API。以下主要讨论微软CryptoAPI是如何调用加密服务提供(CSP)以及如何开发
基于微软CryptoAPI加密服务提供。
1 加密体系结构
     MicrosoftCryptoAPI是“Microsoftcryptographicapplicationprogramminginterface”的简称,是Microsoft公
司提出的安全加密应用框架和服务。Windows系列操作系统,都支持MicrosoftCryptoAPI。与其他安全加密
应用框架一样,MicrosoftCryptoAPI也遵循一系列PKI标准和规范。应用开发者可以比较简便、快速地开发
出标准、通用和易于扩展的安全加密应用。C
ryptoAPI功能是为应用程序开发者提供在Win32环境下使用加密、验证等安全服务时标准加密接口。微
软CryptoAPI体系结构见图1。CryptoAPI之上是应用程序,之下是CSP。CSP是一个真正执行加密功能独
立模块,典型的CSP有微软RSABaseProvider。目前任何一个加密服务提供者若想成为微软合法CSP,就必
须获得微软授予的一个签名文件,该签名文件保证了微软CryptoAPI识别该CSP。对于Microsoft合法CSP,
微软会提供与其CryptoAPI接口规范。微软提供CSP安装程序会将该CSP各个文件安放到相应目录下
,并在注册表中按CSP的类型和名称为该CSP注册。CryptoAPI使用系统注册表存储CSP数据库,CSP数
据库中记录了所有已安装到计算机中的CSP。
2 CryptoAPI调用底层CSP服务方式
    微软CryptoAPI从2方面保证安全通信:保密性和验证。CSP是真正执行加密工作独立的模块。物理上一
个CSP由2部分组成:一个动态链接库,一个签名文件。若加密算法用硬件实现,则CSP还包括硬件装置。
CryptoAPI函数调用底层CSP函数时,首先使用函数CryptAcquireContext,给出欲选择CSP名称参数和
类型参数即可,该函数返回一个指向被选择的CSP句柄。CSP有一个密钥库。密钥库用于存储密钥,每个密
钥库包括一个或多个密钥容器(keycontainers)。每个密钥容器中含属于一个特定用户所有密钥对。每个
密钥容器被赋予唯一名字;以这个名字做函数CryptAcquireContext参数,从而获得指向这个密