什么是CSP
CSP(Cryptographic Service Provider)是微软提供的加密服务应用程序接口CryptoAPI所需的独立软件模块,它完成各种加密算法的具体实现。
CryptoAPI是Win32环境下的密码开发接口,其结构模型如图所示:
CryptoAPI结构模型
CryptoAPI分为应用层,CryptoAPI接口层,加密服务提供层CryptoSPI。CryptoAPI接口面向应用系统,而CryptoSPI面向密码模块开发商,CryptoAPI统一由Windows提供,而底层的CSP由开发商提供。这样的分层体系结构,使应用系统不必关心底层的密码实现细节和实现方式(软件和硬件),降低了集成难度,在一个系统中可以同时加载多个CSP,同时为开发商制定了CSP的标准接口,开发商按照标准开放CSP,就可以把自己开放的软件或者硬件密码模块无缝连接到CryptoAPI的体系中。
为了保证底层CSP的安全性,CryptoAPI接口在加载每个CSP时,需要验证CSP签名,如果签名无效则拒绝加载,CSP的签名有微软签发,其签名可以通过发送Email(其中包括编译成功的DLL文件,以及各种加密算法参数介绍)到Cspsign@Microsoft.com,微软将回复一个*sig文件。
CSP模块处于CryptoAPI体系结构的最低层,有实现CryptoSPI(系统程序接口)中函数的动态链接库组成,大多数包括了所有密码函数的实现,也有些主要实现由服务器控制管理程序基于软件实现的功能,也有用硬件实现部分或全部密码函数的,如智能卡和安全协处理器等微型密码设备。