Posted inCSP
Cryptographic Service Providers(CSP)介绍
一个密码服务提供商(CSP)包括密码标准的实现和算法。最小情况下,一个CSP由一个实现了CryptoSPI(a system program interface)函数的动态链接库(DLL)组成。大多数的CSPs包含所有它们自己函数的实现。然而,一些CSPs,主要实现了由Windows服务控制管理者(Windows service control manager)管理的主要的基于Windows的服务程序。其他的用硬件来实现函数,比如一个智能卡(smard card)或者加密协处理器。如果一个CSP没有实现它自己的函数,DLL作为一个透传层,便利了操作系统和实际CSP实现的交流。 CSP体系结构 CSP概述 应用程序并不直接和CSP通信。相反,应用程序调用由操作系统的Advapi32.dll和Crypt32.dll文件提供的CryptoAPI函数。操作系统通过CryptoSPI(a system program interface)将过滤这些函数调用并把它们传递给合适的CSP函数。 一个CSP作者必须了解操作系统传递给CSP函数的参数的性质、规则和意义并且必须返回操作系统预期的值。 应用程序使用handles引用CSP内的数据对象。这些handles引用的对象包含key container、hash objects、session key和public/private key pair objects。这些handles使两边不透明,意思是,应用程序使用handle访问的数据对象并不是CSP使用的那个。因为各种各样的原因,操作系统层经常间接使用handles访问数据对象。 入口函数 所有自定义的CSPs必须支持以下DLL入口函数: CPAcquireContext CPCreateHash CPDecrypt CPDeriveKey CPDestroyHash…