加密提供程序类型
密码学领域庞大且在不断发展。 有许多不同的标准数据格式和协议。 这些通常被组织成组或系列,每个组或系列都有其自己的一套数据格式和工作方式。 即使两个系列使用相同的算法(例如 RC2 块密码),它们也会经常使用不同的填充方案、不同的密钥长度和不同的默认模式。 CryptoAPI 的设计使得 CSP 提供程序类型代表特定的系列。
当应用程序连接到特定类型的 CSP 时,默认情况下,每个 CryptoAPI 函数将以与该 CSP 类型对应的系列规定的方式运行。 应用程序选择的提供程序类型指定以下项:
项 | 说明 |
---|---|
密钥交换算法 | 每种提供程序类型指定一种且仅有一种密钥交换算法。 特定类型的每个 CSP 都必须实现此算法。 应用程序通过选择适当的提供程序类型的 CSP 来指定要使用的密钥交换算法。 |
数字签名算法 | 每个提供程序类型指定一种且仅一种数字签名算法。 特定类型的每个 CSP 都必须实现此算法。 应用程序通过选择适当的提供程序类型的 CSP 来指定要使用的数字签名算法。 |
关键 BLOB 格式 | 提供类型确定用于从 CSP 导出密钥并将密钥导入 CSP 的密钥 BLOB 的格式。 |
数字签名格式。 | 提供程序类型确定数字签名格式。 这可确保由给定提供程序类型的 CSP 生成的签名可由同一提供程序类型的任何 CSP 进行验证。 |
会话密钥派生方案 | 提供程序类型确定用于从哈希派生会话密钥的方法。 |
密钥长度 | 某些提供程序类型指定公钥/私钥对和会话密钥的长度。 |
默认模式 | 提供程序类型通常为各种选项指定默认模式,例如块加密密码模式或块加密填充方法。 |
某些高级应用程序可能同时连接到多个 CSP,但大多数应用程序通常只使用单个 CSP。
目前有许多预定义的提供程序类型。 后续部分将提供有关以下提供程序类型的信息:
- PROV_RSA_FULL
- PROV_RSA_AES
- PROV_RSA_SIG
- PROV_RSA_SCHANNEL
- PROV_DSS
- PROV_DSS_DH
- PROV_DH_SCHANNEL
- PROV_FORTEZZA
- PROV_MS_EXCHANGE
- PROV_SSL
尽管某些 CSP 类型可能与其他 CSP 类型部分兼容,但需要交换密钥和加密消息的两个或多个应用程序应使用同一类型的 CSP。
自定义 CSP 编写器可以定义新的提供程序类型。 但是,CSP 编写器随后负责将新的提供程序类型分发给要使用的任何应用程序的作者。 有关编写自定义 CSP 的信息,请参阅加密服务提供程序。