`
isiqi
  • 浏览: 16488224 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Microsoft Windows® 2000的加密服务提供程序(CSP, Cryptographic Service Provider)

阅读更多

CSP是真正实行加密的独立模块,他既可以由软件实现也可以由硬件实现。但是他必须符合CryptoAPI接口的规范。

每个CSP都有一个名字和一个类型。每个CSP的名字是唯一的,这样便于CryptoAPI找到对应的CSP。目前已经有9种CSP类型,并且还在增长。

每个CSP有一个密钥库,密钥库用于存储密钥。而每个密钥库包括一个或多个密钥容器(KeyContainers)。每个密钥容器中含属于一个特定用户的所有密钥对。每个密钥容器被赋予一个唯一的名字。在销毁密钥容器前CSP将永久保存每一个密钥容器,包括保存每个密钥容器中的公/私钥对。

CryptoAPI作为MISF的基础技术,向开发人员提供了利用基于标准、核心加密功能的能力。CryptoAPI1.0版支持公共密钥和对称密钥的操作,比如密钥生成、密钥管理、密钥交换、加密、解密、散列、数字签名和签名验证。CryptoAPI2.0包含了核心加密功能和基于认证的功能以便开发人员能够通过这些公共密钥操作使用认证并进行必要封装和编码以将认证应用于他们的应用程序。

CryptoAPI使用了一种服务供应程序模型,在该模型中加密由加密服务供应程序CSPs提供。该模型使得开发人员易于使他们的应用程序适应不断发展的加密技术和政府的技术输出规定(请参阅"MicrosoftPolicyonExportControlsonEncryption"。通过不同的CSPs,开发人员能够使用具有更高输出性的加密系统,新的加密算法,或一些基于硬件的设备—而不必改变他们的应用程序代码。

由于CryptoAPI已经得到技术输出的许可,开发人员可以确信一个程序只需编写一次程序就可以进行全球发布。如今,CryptoAPI通过MicrosoftRSA的默认CSP可在全球使用。该默认CSP支持的算法包括:40-位RC2和RC4;512位RSA;MD2和MD5;160位SHA-1。

CryptoAPI支持X.509v3认证格式和ASN.1编码,以及用于封装的PKCS#7和PKCS#10。这将使利用CryptoAPI的应用程序能够与其它依赖上述标准的基于认证的系统进行互操作。Microsoft还正在致力于使CryptoAPI成为一个跨平台的API。由于CryptoAPI已经应用于RSA,RSA将能够通过它的BSAFE®和所支持平台上的其它安全工具产品使用CryptoAPI。

CryptoAPI1.0当前已可被成百万的WindowsNT4.0、MicrosoftInternetExplorer3.0和Windows95OSR2用户所使用。Microsoft于九月交付了一个CryptoAPI2.0的开发人员beta版,预计将随下一版本的InternetExplorer和Windows与WindowsNT的更新发布。

CryptoAPI是一个当前可用于全球的InternetExplorer、Windows95和WindowsNT的Win32API。CryptoAPI通过将加密处理的复杂性与开发人员分离,而使得开发人员能够轻而易举地将密码处理集成到他们的应用程序之中。建立于CryptographicServiceProvider(CSP,密码服务供应器)模型顶层的CryptoAPI体系使得安全可被更新以满足商务和消费者的不断发展的需求。当输出策略改变后,开发人员能够利用可更新的CSP所允许的最强加密能力而不必更改他们的应用程序。

微软的CryptoAPI是PKI推荐使用的加密API。其功能是为应用程序开发者提供在Win32环境下使用加密、验证等安全服务时的标准加密接口。

CryptoAPI的编程模型同Windows系统的图形设备接口GDI比较类似,其中加密服务提供者CSP等同于图形设备驱动程序,加密硬件(可选)等同于图形硬件,其上层的应用程序也类似,都不需要同设备驱动程序和硬件直接打交道。

CryptoAPI共有五部分组成:简单消息函数(SimplifiedMessageFunctions)、低层消息函数(Low-levelMessageFunctions)、基本加密函数(BaseCryptographicFunctions)、证书编解码函数(CertificateEncode/DecodeFunctions)和证书库管理函数(CertificateStoreFunctions)。其中前三者可用于对敏感信息进行加密或签名处理,可保证网络传输信心的私有性;后两者通过对证书的使用,可保证网络信息交流中的认证性。

CAPICOM可用于对数据进行数字签名、对代码签名、验证数字签名、包封保密数据、对数据进行散列处理、加密及解密数据等等。

Windows操作系统为我们提供了先进的加密体系模型CryptAPI,同时该模型也提供了丰富的函数供第三方开发使用。但使用CryptAPI完成一些通常的操作(如:加密、签名)仍然是相当复杂的。幸好MS同时提供了CAPICOM组件,封装了上述的复杂操作,使你只需要调用一两个函数,就可以完成指定的功能。

CAPICOM是一个COM模型的组件,可以在Windows环境下各种语言中使用。而且,CAPICOM中的大多数接口都是“脚本安全”的,这意味着你可以在浏览器网页脚本中安全地使用这些接口所提供的功能。

目前,CAPICOM共有两个版本:1.0版和2.0版。其中,后者在前者的基础上,提供了一些额外的功能。

CAPICOMv1.0提供如下功能

1、产生和验证PKCS#7格式的数字签名;

2、使用证书加密/解密数据;

3、使用口令加密/解密数据;

CAPICOMv2.0额外提供如下功能:

1、产生和验证代码签名;

2、支持文件形式的证书;

3、快速证书搜索;

4、产生任意数据的哈希值;

5、支持AES算法(需要Windows.NETServer2003或WindowsXP支持);

6、支持高级证书属性,例如:政策、模板。

CAPICOM是重分发组件,也就是说它没有被包含在操作系统的中,需要单独安装注册该组件(可以从MS那里免费下载);CAPICOMv1.0要求Win95、WinNT4.0或更高版本,CAPICOMv2.0要求Win98、WinNT4.0+SP4或更高版本。

在最高级别上,Cryptography命名空间可以分成四个主要部分。Cryptography命名空间的主要功能是提供用来实现算法(例如加密和创建散列)的类。这些算法是使用包含两级继承的可扩展方式来实现的。抽象基类(例如AsymmetricAlgorithm或HashAlgorithm)位于层次结构的顶端并表示算法类型。然后从顶级类派生出第二级抽象类,为算法提供公开的接口。例如,SHA1(安全散列算法)类是从HashAlgorithm派生的,其中包含SHA1算法特有的方法和属性。最后,从第二级抽象类派生出算法的实现,这是大部分客户端应用程序实例化并使用的算法。在这个具体级别上,这些实现可以是托管的、非托管的或两者兼具。

非托管的实现通常带有后缀“CryptoServiceProvider”(例如,SHA1CryptoServiceProvider),表示该实现实际上是由加密服务提供程序(CSP)提供的。CSP安装在操作系统层,起了CryptoAPI包装程序的作用。托管的实现带有后缀“Managed”(例如SHA1Managed),这些实现不依赖于CryptoAPI,因此完全是由托管代码实现的。

关于这些算法还需要注意的是,当这些具体的类被实例化时,默认构造函数总是导入该算法的具有合理、安全值的默认参数(如果可能)。例如,依赖于公钥密码的不对称算法将生成随机密钥对,而对称算法则生成一个随机密钥和一个初始化矢量(IV)并自动设置诸如Mode和Padding等属性。此外,如果有可能,这些算法将使用“strong”默认值。

System.Security.Cryptography命名空间的第二个主要类集合包括数据加密和解密进程中使用的类,以及各种helper类。命名空间中包含的类包括RandomNumberGenerator的抽象类(从中派生出RNGCryptoServiceProvider),以及ToBase64Transform和FromBase64Transform类(用于与base64之间来回转换数据)。

除了提供加密算法以外,Cryptography命名空间还包含子命名空间X509Certificates。其中只包含三个用于表示和管理AuthenticodeX.509v.3证书的类。

分享到:
评论

相关推荐

    CSP加解密模块

    CSP是Cryptographic Service Provider的简写,是微软专为Windows系列操作系统制定的底层加密接口,用于管理硬件或软件形式的加密设备,实现数据加密、解密,数字签名、验证和数据摘要(即HASH)等。

    学习cryptoapi的笔记

    微软加密服务体系CryptoAPI的结构如下图所示,微软加密服务体系包含三层结构和两个接口,分别为应用程序层、操作系统层(OS)、加密服务提供者层(Cryptographic Service Provider,CSP),CryptoAPI接口和加密服务提供...

    CryptoAPI例子

    微软加密服务体系CryptoAPI的结构如下图所示,微软加密服务体系包含三层结构和两个接口,分别为应用程序层、操作系统层(OS)、加密服务提供者层(Cryptographic Service Provider,CSP),CryptoAPI接口和加密服务提供...

    加密服务提供(csp)的实现与开发

    Microsoft提供的加密应用程序接口(即Cryptography API),或称CryptoAPI,它可以方便地在应用程序中加入强大的签名和加密功能,而不必考虑基本的算法。CryptoAPI是一组函数,为了完成数学计算,必须依赖密码服务...

    CSP国密算法研究之西电捷通HUFU Cipher Service Provider

    CSP(Cryptographic Service Provider),即密码服务提供商,是微软Windows操作系统中用于加密和签名的重要组件,它通过CryptoAPI提供一系列接口,使得应用程序能够灵活地进行数据加密和签名,而实际的加密操作则由...

    csp加密算法的实现

    CSP(Cryptographic Service Provider)加密算法是一种常用的加密方式,该算法基于公钥密码体制,使用对称加密和非对称加密相结合的方式来实现加密和解密操作。在本文中,我们将详细介绍CSP加密算法的实现,包括加密...

    微软标准CSP的实现代码

    **微软标准CSP(Cryptographic Service Provider)的实现代码** 微软标准CSP是Windows操作系统中用于加密、解密以及数字签名等安全操作的核心组件。它为应用程序提供了一组接口,以便与各种加密算法进行交互。CSP...

    基于PKI 加密设备的CSP 软件设计与实现

    《基于PKI加密设备的CSP软件设计与实现》一文深入探讨了在Windows环境下,如何利用微软的CSP(Cryptographic Service Provider)框架来设计和实现与PKI(Public Key Infrastructure)加密设备兼容的软件解决方案。...

    微软.NET程序的加密与解密.zip

    3. **加密服务提供者(CSP)**:.NET框架支持使用加密服务提供者(Cryptographic Service Provider),它封装了操作系统级别的加密功能,如Windows Cryptography API (CAPI) 和 Cryptography Next Generation (CNG)...

    Microsoft CryptoAPI加密技术

    CryptoAPI作为应用程序与CSP(Cryptographic Service Provider)之间的接口,简化了加密操作。CSP是实现加密的实际模块,可以是软件或硬件实现,需遵循CryptoAPI接口标准。CryptoAPI主要包括五部分: - 简单消息...

    CSP开发教程借鉴.pdf

    CSP(Cryptographic Service Provider)是实现具体加密功能的核心模块,它遵循PKI(Public Key Infrastructure)标准,为应用程序提供安全加密服务。 1. CSP(加密服务提供者)详解: CSP是执行加密操作的独立模块...

    加密服务提供(CSP)的实现与开发 (2003年)

    介绍微软操作系统加密体系结构,并分析微软操作系统调用底层加密服务提供(CSP)实现过程以及如何在微软操作系统中嵌入自己的加密服务提供(CSP)。详尽阐述了自主知识产权的加密服务提供(CSP)的开发原理和过程。

    stcrypt:支持Windows 7的Dstu4145,Gost28147,Gost34311的加密提供程序(CSP和CNG)的实现

    CSP(Cryptographic Service Provider)是微软Windows操作系统中处理加密任务的组件,它为应用程序提供加密、解密、签名和验证等服务。而CNG(Cryptographic Next Generation)是CSP的升级版,增加了更多现代密码学...

    基于PKI的CSP设计与实现

    由于Windows操作系统的广泛应用,本文重点讨论在Microsoft CryptoAPI框架下如何设计和实现CSP(Cryptographic Service Provider)软件。 #### 2. 微软加密服务体系结构 ##### 2.1 加密服务提供层(CSP) 在...

    CSP开发测试工具

    CSP(Cryptographic Service Provider)开发测试工具是一种专门设计用于测试CSP功能的软件,它对CSP(加密服务提供程序)的开发者来说是必不可少的。CSP是操作系统中的一个核心组件,它提供了各种加密算法和密钥管理...

    csp.dll.rar_CSP. DLL_CSP.d_csp_csp.dll

    在Windows操作系统中,CSP(Cryptographic Service Provider)是核心加密模块,它是微软开发的安全基础设施的一部分,用于实现各种加密算法和安全功能。CSP.dll是密码服务提供者的动态链接库,它提供了接口,使得...

    csp编程指南

    根据提供的文件信息,我们可以归纳出以下相关知识点,主要聚焦于CSP(Cryptographic Service Provider)编程及Microsoft Crypto API的相关概念和技术细节。 ### CSP编程指南概述 CSP全称为Cryptographic Service ...

Global site tag (gtag.js) - Google Analytics