CryptAPI是一个应用程序编程接口,向开发人员提供信息安全方面的各种功能,包括各种加密算法、数字签名以及密钥的管理等,这些功能实现了信息的保密性、完整性和不可抵赖性。
CSP(Cryptographic Service Provider 密码服务提供商)用户可以直接使用微软公司的CryptAPI(加密应用程序接口)调用CSP函数来实现供应商提供的密码运算。
CSP是与CryptAPI相互独立的操作系统的底层模块,里面包含密码标准和算法的具体实现们一般由一些动态链接库文件和签名文件构成。
数字签名是指使用密码运算对待发送的数据进行加密处理,生成一段信息,附着在原文上一期发送,这段信息类似现实中的签名或印章,接收方对其进行验证,判断其真伪。
在智能卡中友一个文件系统 智能卡支持两种类型的文件:DF和EF。
DF(Dedicated File)类似于DOS中的目录文件,其中可以包含DF和EF。
EF(Elemenary File)类似于DOS中的数据文件,是真正存放数据的文件,公私钥和密钥文件对属于EF文件。EF存在两种类型,一种是二进制类型EF,另一种是记录型EF。二进制EF是无结构的文件,而记录型的EF是按记录来进行存取的,每条记录的长度可以在文件创建初制定。
在每个智能卡文件系统中有一个根目录文件MF(Master File)所有的DF和EF都存放在此根目录文件下。
CSP开发的一般步骤:
1. 通过编程实现csp.dll文件,导出CrytoSPI函数接口
2. 开发CSP安装程序,创建合适的注册表
3. 简要测试所编写的csp.dll的实现功能
4. 通过CryptAPI测试开发出的CSP
5. 向微软申请签名,使CSP可以应用到Windows系统操作系统中
6. 测试经过微软签名的CSP
由于CSP必须得到微软的签名,而且签名有一定的周期,如果每次对程序的修改和升级都向微软申请签名的话,可能会大大延长开发周期。辅助dll是一个解决方案,它仅包含了CSP的接口函数,拥有微软签名,而具体的实现由其他的动态链接库完成。