windows - 证书存储在 Windows 证书存储区时如何解密信息

标签 windows ssl encryption x509certificate

我正在尝试学习一些有关 Windows 应用程序开发的知识,但我还没有完全了解证书处理。
加密和解密是由 Windows 操作系统函数处理,还是通过从存储中获取私钥并分别执行加密任务来处理?
一个例子:假设我有一些使用 SSL 证书由 IIS 托管的网页。
是例如IIS Web 服务器使用如下所示的 api 调用,还是 IIS 要求操作系统使用某些用户从商店中选择的证书进行加密/解密?
https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.x509certificates.rsacertificateextensions.getrsaprivatekey?view=net-5.0

最佳答案

在给定的情况下,IIS 获取私钥句柄并调用 CrypoAPI 函数来执行加密操作。虽然,IIS 不使用引用的 API,但它直接使用 native 函数。
Windows 通过定义用于加密的 API 来使用抽象层,这些 API 的一个重要部分是 key 句柄。操作系统可能无法访问原始 key Material 并使用 key 句柄来访问 key 所有者的 key 。 key 所有者被实现为加密服务提供者 (CSP) 或现代 key 存储提供者 (KSP)。必要时,操作系统调用实现的 API 并将 key 句柄传递给 CSP 或 KSP。然后 CSP/KSP 实现负责原始 key Material 访问实际加密操作。 CSP/KSP 实现是特定于供应商的。 Windows 提供了十几种基于软件的 CSP/KSP 实现,并且第 3 方供应商可能会提供他们自己的实现,尤其是当 key 存储在硬件(智能卡或 HSM)上时。
无论如何,操作系统并不关心 key 的存储方式和位置,它只是调用定义的 API,传递 key 句柄和输入参数。 CSP/KSP 然后访问原始 key Material ,执行请求的操作并将结果返回给调用者。
这是您问题的答案:加密操作由拥有/存储由 key 句柄标识的特定 key 的 CSP/KSP 处理。是否是操作系统取决于 CSP/KSP 实现。如果它是软件,那么它很可能(不是必需的,但经常是)由操作系统处理。如果是硬件,则由硬件自己处理。

关于windows - 证书存储在 Windows 证书存储区时如何解密信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65230327/

相关文章:

java - 将自定义 uri 方案与适用于 Windows 的 Java 自包含应用程序相关联

c# - mediended 事件的触发是否有任何默认时间间隔?

html - Windows Phone 8.1 从代码发送 HTML 邮件

sql-server - C# 从 SQL Server EncryptByPassPhrase 解密字节?

c - OpenSSL C RSA 库解密

php - Linux Box 使用 PHP 将文件写入 Windows Server Web Share

c# - 创建 X509Certificate2 时阻止创建文件?

ssl - 在 mysubdomain.parseapp.com 上添加 SSL

ruby-on-rails - 运行 PrivatePub.publish_to 时出现 EOF 文件结尾错误

android - Java Android - 解密字节数组 255 字节长而不是 "Hello World!".length