可以防止从 yubikey 导出 PIV(私钥)吗?

Possible to prevent PIV export (private keys) from yubikey?

使用 Yubico PIV Tools and YubiKey PIV Manager,我可以将我的客户端 TLS 证书加载到 PIV 插槽中,并使用它在 Firefox 中进行身份验证。这很棒。然而...

有什么办法可以防止PIV的私钥被导出吗?据我所知,PIV管理密钥只是保护设备不被修改,但是没有任何东西可以保护包含的内容不被导出。

如果这是准确的,YubiKey 似乎并不能真正用作 PIV 2FA 设备,因为 2-factor 假定 "something you have",并且我将设备插入的任何机器(或软件 运行在后台)可以制作功能齐全的软拷贝。

我在 Yubico 论坛 cross-posted 这个问题。

以下是我演示问题的方式:

  1. 通过 "YubiKey PIV Manager" (my-cert.crt)
  2. 导出的证书
  3. 已通过 "YubiKey PIV Manager"
  4. 从 YubiKey 删除证书
  5. 通过 "YubiKey PIV Manager" (my-cert.crt)
  6. 导入的证书
  7. 重新启动 Firefox(加载 OpenSC)
  8. 我仍然能够通过 PIV 进行身份验证

TL;DR

YubiKey 不允许导出私钥,只允许导出 public 证书。相反,我在展示(我所看到的)YubiKey PIV Manager 中的一个错误。它没有正确删除私钥。

Yubico 的荣誉

首先,虽然我要指出我认为 YubiKey 中的错误, 我不得不说,我对提供的最终用户支持印象深刻 尤比科。我引用:

we try to help everyone who submits a support case. even the white haired grandma next door

正确清除PIV私钥

由于"Delete certificate"没有从YubiKey中删除私钥, 重新加载 public 密钥(可以由 YubiKey 导出)导致 功能性 PIV 接口。

我能够演示另外两种实际上清除的方法 私钥:

方法 1:加载不同的证书

我在以下情况下无法进行身份验证:

  1. 加载了我的证书并从 yubikey (my-cert.crt) 导出了一份副本
  2. 加载了不同的 pfx/p12 文件
  3. 加载我的-cert.crt

方法 1.1:生成随机证书

最近恍然大悟,这是最简单的方法。只需在 "YubiKey PIV Manager".

中按下几个按钮

方法 2:"Reset"PIV 模块

我在以下情况下无法进行身份验证:

  1. 加载了我的证书并从 yubikey (my-cert.crt) 导出了一份副本
  2. "Reset" 我的 yubikey PIV 模块

    • 我用这个命令重置:yubico-piv-tool -areset
    • 奇怪的是,我先锁定了我的 PIN 码和 PUK 码。最简单的方法是 运行 以下命令并输入错误输入超过 3 次(对于 PUK,您必须输入 有效 新 PIN 和错误 PUK。呃。):

      # Use to lock out PIN
      yubico-piv-tool -averify-pin
      # Use to lock out PUK
      yubico-piv-tool -aunblock-pin
      

这是一个错误吗?

考虑到其他两种重置私钥的方法有多痛苦, "Delete certificate" 是迄今为止 "wiping" 您的证书最简单的方法 从设备。没有任何迹象表明其他两种方法是必要的。

Yubico 建议 "reset" 是通过之前的推荐操作 设备关闭给另一个用户。

就我个人而言,我认为这是一个错误,但我不知道 Yubico 是否已售出。

这是我设想的糟糕情况:

  • 我加载我的 public/private 密钥对
  • 我从设备中删除了我的 public 密钥(但默默地保持私钥完好无损)
  • 我重置了管理员密码
  • 我把设备交给别人使用
  • 第二个人上传了我的 public 证书并获得了我的 public/private 对的工作副本