资源描述
Microsoft CSP 简介一、有关加密API的国际标准A Generic Security Services API (GSS-API)A Intel/OpenGroup CDSAA RSA PKCS#11 Cryptographic Token Interface (Cryptoki) StandardA RSA BSAFE APIA 微软 CryptoAPI V2.0其中,CDSA、RSA PKCS#11和微软CryptoAPI在实际中应用得 较多,也是PKI推荐使用的加密API。二、CSP 简介CSP 是 Cryptographic Service Provider 的简称,是 Microsoft 公司 用来在 Windows 平台上提供第三方加密模块的接口标准。用于管理 硬件或软件形式的加密设备,实现数据加密、解密、数字签名、验证 和数据摘要等。CSP 是 Windows 安全应用的基础,在 Windows 操作系统上实现 https安全浏览和实现安全隧道功能,都必需有CSP参与密码运算。 一个 CSP 模块包含了一些标准加密算法的实现,是 CAPI 函数的具 体执行者,同时CSP模块也提供了密钥的安全存储和使用机制CSP 在微软操作系统安全体系中是加解密操作的实际执行者,它直接同硬 件加密设备(HSE)如smart card,安全协处理器交互。三、CSP组成CSP是Windows平台上加解密运算的最核心层实现,是真正执行 加密工作独立的模块。与Windows的接口以DLL形式实现。按照CSP的不同实现方法,可分为纯软件实现与带硬件的实现, 其中带硬件的实现 CSP 按照硬件芯片不同,可以分为使用智能卡芯 片(内置加密算法)的加密型和不使用智能卡芯片的存储型两种,与计 算机的接口现在一般都用USB,所以把CSP硬件部分称为USB Key。 物理上一个 CSP 由这几部分组成:动态链接库,签名文件,签名文 件保证提供者经过了认证,操作系统能识别CSP,操作系统可利用其 定期验证CSP,保证其未被篡改。还可以使用辅助的DLL实现CSP, 辅助的DLL不是CSP的一部分,但是包含CSP调用的函数,辅助的 DLL也必须被签名,并且签名文件必须可用,每个DLL在装载库之 前被验证签名,每个CSP都有一个名字和一个类型。若有硬件实现, 则CSP还包括硬件装置。、CSP 实现应用层用户模式层智能密码钥匙专用APIPKCS#11MS资源管理 智能密码钥匙设备驱动PC/SC驱动标准USB设备驱动可智能密码钥匙硬件设备CSP设计架构在实现微软的CSP时采取了如上图所示:CSP设计框架。通过智能 密码钥匙专用API实现了微软CSPo为了兼容NetScape浏览器等所 支持的PKCS#11,在实现PKCS#ll的基础上,通过调用PKCS#ll接 口实现微软CSP服务编程接口。五、CSP特点CSP 加密服务提供者(Cryptographic Service Provider)具有一下 几个特点: CSP是真正执行密码运算的独立模块物理上一个CSP由两部分组成:一个动态连接库,一个签名 文件签名文件保证密码服务提供者经过了认证,以防出现攻击者 冒充CSP若加密算法用硬件实现,则CSP还包括硬件装置A Microsoft通过捆绑RSA Base Provider,在操作系统中提供一个 CSP,使用RSA公司的公钥加密算法,更多的CSP可以根据 需要增加到应用中。A Windows 2000 以后自带了多种不同的 CSP六、加密体系结构应用层CSP#1CSP#2加密服务 提供层USBKEYWindows OS 提供的加密服务体系结构可分为加密服务层、系统 层和应用层。微CryptoAPI体系结构如图所示,CryptoAPI之上是应 用程序,之下是加密服务提供层。操作系统根据上层的 API 调用来选 择合适的SPI,相应的CSP则通过统一的接口 (SPI)来得到上层调用的 参数, API 函数的具体实现则由具体对应的 CSP 提供。上层的应用 程序与本层CSP具有相互独立性。应用程序可以使用任意一个CSP, 而不必关心CSP的具体实现细节。当上层应用程序不使用CSP时, 则加密服务层就作为透明传输。为了保证微软 CryptoAPI 能识别该 CSP,使它成为微软合法的CSP,还必须获得微软授予的一个签名文 件。七、USB KEY应用技术USB KEY具有使用方便、安全性高等特点,而且USB IKEY内 含智能卡,能进行多种算法的运算,运算能力强。智能卡内嵌有小型 操作系统COS,它可以有效控制外部对卡内数据的访问权限,必须要 验证相关的密钥才能获得内部核心数据,所以具有较高的安全性。 USBKEY还支持多种加密算法,智能卡包含3DES等对称加密算法, RSA 和 ECC 等公钥加密算法。它既能生成密钥,又能存储密钥,还 可以进行签名认证,而且具有密钥生成速度快的优点。当USB KEY经过初始化后,它才成为真正意义上的“容器”在 应用程序操作过程中产生的数据,如过程密钥、数字证书RSA密钥 对以及密码运算中的明文或密文,都能够存放到USB KEY相应的区 域中。当COS产生RSA密钥对的命令后,智能卡就产生密钥对,之 后把私钥保存到密钥容器当中,公钥即可以存储在容器中也可以导出 申请数字证书。当然,如果应用程序需要调用相关函数时, CSP 必须 能找到USB KEY中相应的文件,并进行读写操作。八、CSP软件的开发在物理上由3 部分组成:一个动态链接库,一个签名文件,还有 就是硬件装置USB KEY。因为CSP的动态库是建立在USB KEY的函 数上,所以进行CSP程序的开发之前,首先要了解该USB KEY中的 加密算法和数据格式,然后选择和实现支持该算法和数据格式的 CSP,确定好加密算法和数据格式后,再了解CSP实现的函数及函数 流程。1、CSP 动态库的开发要开发 CSP 程序,关键的工作就是建立相应的动态库, 把 CryptoSPI 的相应函数都输出到系统中,让应用程序能够 通过CryptoAPI调用低层密码设备进行密码运算。而CSP作 为一个独立的模块,是以动态链接库的形式安装到操作系统 中的。首先,使用开发工具,搭建CSP的开发和调试环境。 其中动态链接库应实现四个服务分别是:提供加密设备连 接、数据的加解密、密钥产生和交换、散列运算和签名验证。2、安装程序的开发建立CSP的安全程序要包含CSP DLL和微软签名这两 个文件oCSP安装程序执行的操作:将CSP DLL拷贝到PATH 环境变量所指定的目录下,同时在注册表中注册该 CSP。3、测试程序的开发在测试所开发的 CSP 时,还要获得微软的签名。4、获取CSP动态链接库(DLL)的签名文件通过对CSP详细测试后,需要获得微软的正式签名才能 将CSP嵌入到微软的加密系统中,CryptoAPI才能识别此CSP 模块。获得微软的签名文件后,还需要进行详细的测试,如 果发现问题,修改后需要重新进行再次签名,直到完善为止。结束语:这是我对 Microsoft CSP 暂时的一点认识,了解部分理论知识,大概知道开发CSP流程以及开发所需要准备 的开发条件和工具等。以上内容属于我整理,不属于我 编写。
展开阅读全文