如何从 Win10 设备上的板载 TPM 中删除 WebAuthN 凭据?

如何从 Win10 设备上的板载 TPM 中删除 WebAuthN 凭据?

Windows 10 的最新版本允许浏览器(至少是 Edge 和 Chrome)使用板载 TPM 设备WebAuthN无密码身份验证。

它对我和测试沙盒站点来说确实有效 - 我可以生成私钥-公钥对,将私钥存储在 TPM 中,并将公钥发送到服务器进行进一步的身份验证。

问题是我找不到清除已保存密钥的方法。我还没有尝试清除整个 TPM,因为我不想弄乱 BitLocker。

问题是如何清除在 Windows 10 上运行的平台 TPM 中存储的 WebAuthN 凭据(密钥)。

这可能吗?

在此处输入图片描述

答案1

certutil可以使用Microsoft命令行工具来查看和删除这些WebAuthN密钥。

免责声明:删除错误的密钥非常容易,因此请确保您愿意接受可能删除错误密钥的风险;无法撤消。

要查看您的 WebAuthN 密钥,请从命令提示符运行:

certutil -csp NGC -key

WebAuthN 密钥的名称如下<sid>/<guid>/FIDO_AUTHENTICATOR//<rpIdHash>_<user id>

您需要确定要删除的密钥,然后从管理员命令提示符中运行以下操作来删除 WebAuthN 密钥:

certutil -csp NGC -delkey <name>

答案2

Windows 没有这个 UI,这在您使用 Webauthn 时非常令人恼火。

所以我构建了一个可以帮助解决这个问题的小工具,它在 github 上:https://github.com/passwordless/webauthn-fido2-key-remover

它在后台使用 certutil,但使其更安全且更易于操作。

答案3

我记录了身份验证过程进程监控并发现对几个文件进行了一些%SystemRoot%\ServiceProfiles\LocalService\AppData\Local\Microsoft\Ngc可疑的操作。谷歌搜索后发现确实存储了 Windows Hello 凭据

有答案(例如,这个网站上的) 建议您直接删除此目录的内容即可删除所有 Windows Hello 凭据。

我尝试重命名该文件夹(使用 SYSTEM执行程序),虽然它确实删除了我的 WebAuthn 凭据,但也让我无法在“登录选项”UI 中创建新的 PIN。我不确定重新启动是否有帮助。


编辑:经过几次重启后,我收到提示说我的 Microsoft 帐户有问题。 (我使用本地帐户,但登录了 Microsoft 帐户。)再次登录后,NGC 恢复到初始状态并再次正常工作。

答案4

这是一个快速而粗糙的 Node.js 脚本,可帮助任何使用 Windows 的人快速轻松地删除所有 FIDO 证书

它非常粗糙,可以使用错误处理/日志记录。修改以满足您自己的需要。

小心行事!:

const util = require('node:util');
const exec = util.promisify(require('node:child_process').exec);

async function NUKE_ALL_CERTS() {
  const { stdout, stderr } = await exec('certutil -csp NGC -key');
  let output = stdout.split("\r\n")
  .filter((element) => {
    return /FIDO_AUTHENTICATOR/.test(element);
  })
  .map((element) => {
    return `certutil -csp NGC -delkey ${element}`;
  });

  await Promise.all(output.map((element) => {return exec(element)}));

  console.log(output);

}
NUKE_ALL_CERTS();

相关内容