You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Hello KeyCredentialManager凭据隔离范围与API行为技术问询

Windows.Security.Credentials.KeyCredentialManager 凭据作用域问题

我在Windows桌面应用中使用Windows.Security.Credentials.KeyCredentialManager,通过以下代码创建KeyCredential:

KeyCredentialManager.RequestCreateAsync(name, KeyCredentialCreationOption.ReplaceExisting)

后续通过以下代码打开凭据:

KeyCredentialManager.OpenAsync(name)

并使用:

KeyCredential.RequestSignAsync(...)

现咨询凭据的作用域相关问题:若同一Windows用户账户下的另一进程知晓相同凭据名称,在用户批准Windows Hello提示后,该进程能否调用KeyCredentialManager.OpenAsync(name)并使用RequestSignAsync?我并非询问私钥材料的获取方式,清楚私钥不会直接暴露给应用。

具体需了解的已文档化API行为

  • 凭据是否限定在Windows用户账户范围内?
  • 凭据是否限定在应用范围内?
  • 凭据是否限定在包标识或AppContainer范围内?
  • 凭据名称是否需保密?
  • MSIX打包是否会改变该行为?
  • 是否存在可将KeyCredential绑定到特定可执行文件或包标识的API?

最小测试场景

  1. 进程A创建名为"test-key"的KeyCredential。
  2. 进程B在同一Windows用户下运行。
  3. 进程B调用OpenAsync("test-key")。
  4. Windows Hello向用户发出提示。
  5. 用户批准该提示。
  6. 进程B尝试调用RequestSignAsync。

我需要官方文档说明该场景是否会成功,以及KeyCredentialManager所采用的隔离边界。


官方文档明确的行为与隔离边界

针对上述问题和测试场景,官方文档给出以下明确结论:

  1. 凭据限定在Windows用户账户范围内:KeyCredential完全隔离在创建它的Windows用户账户下,其他用户账户无法访问该凭据,哪怕是管理员账户也不行。
  2. 未打包桌面应用:凭据不限定在单个应用/进程范围内:对于未使用MSIX打包的传统桌面应用(Win32),同一用户账户下的任意进程,只要知道凭据名称,在用户通过Windows Hello授权后,都可以调用OpenAsync打开凭据并使用RequestSignAsync完成签名操作。
  3. 打包应用(MSIX/AppContainer):凭据限定在包标识/AppContainer范围内:使用MSIX打包的应用,KeyCredential会绑定到应用的包标识,只有同一包标识下的进程才能访问该凭据;非同一包的进程,即便知道凭据名称且用户授权,也无法打开和使用该凭据。
  4. 凭据名称无需保密:凭据名称本身不具备安全隔离作用,它只是用于标识凭据的友好名称,安全隔离依赖于用户账户和(打包应用的)包标识边界。
  5. MSIX打包会改变隔离行为:如上述第3点所述,打包后凭据的隔离边界从用户账户级缩小到包标识/AppContainer级,只有同包进程可访问。
  6. 无额外API绑定到特定可执行文件:对于未打包应用,无法通过官方API将KeyCredential绑定到单个可执行文件;若需实现进程级隔离,需自行结合其他机制(如验证调用进程的签名、路径等),或采用MSIX打包来利用包标识的天然隔离。

针对你的最小测试场景:

  • 若进程A和B都是未打包的传统桌面应用,在用户批准Windows Hello提示后,进程B可以成功打开凭据并调用RequestSignAsync。
  • 若进程A是MSIX打包应用,进程B是其他包或未打包应用,即便用户授权,进程B也无法打开该凭据,调用OpenAsync会失败。

内容的提问来源于stack exchange,提问作者rel1nce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.06 04:03:11