为什么不能将椭圆曲线证书(智能卡、Yubikey、piv)作为保护器添加到受 BitLocker 保护的分区?

为什么不能将椭圆曲线证书(智能卡、Yubikey、piv)作为保护器添加到受 BitLocker 保护的分区?

Yubikey 作为智能卡

我一直在使用带有 RSA 证书的智能卡(Yubikey 4,PIV 接口)来解锁受 BitLocker 保护的驱动器。证书是自签名的,由加密文件系统 (EFS) 向导生成。EFS 的 OID 编号已添加到组策略条目中,因此我可以将它们用于 BitLocker。(方法

几年来,这个方法一直运行良好,但我无法控制 EFS 向导生成的证书的属性。我无法选择密钥类型,也无法选择默认为 sha1 的签名算法。(我还没有探索是否可以通过注册表或 GPO 影响属性,因为使用 EFS 向导本身已经是次要步骤。)

所以我用Powershell 生成更现代的证书。我尝试使用曲线25519,Windows 似乎在可用曲线列表 ( certutil -displayEccCurve) 中提供了该曲线,但不幸的是,我无法使用该曲线生成证书。我尝试了brainpoolP384r,但我不得不考虑 Yubikey 的兼容性,所以规格我用了secP256r1

生成曲线证书

New-SelfSignedCertificate -Type Custom -Subject "CN=Test1-Curve-Cert"
-TextExtension @("2.5.29.37={text}1.3.6.1.4.1.311.10.3.4","2.5.29.17={text}[email protected]")
-KeyUsage KeyEncipherment -KeyAlgorithm ECDSA_secP256r1 -HashAlgorithm sha256 -CurveExport CurveName -CertStoreLocation "Cert:\CurrentUser\My" -NotAfter (Get-Date).AddDays(14)

###生成 RSA 证书(对照组):

New-SelfSignedCertificate -Type Custom -Subject "CN=Test2-RSA-Cert" -TextExtension @("2.5.29.37={text}1.3.6.1.4.1.311.10.3.4","2.5.29.17={text}[email protected]") -KeyUsage KeyEncipherment -KeyAlgorithm RSA -KeyLength 2048 -HashAlgorithm sha256 -CertStoreLocation "Cert:\CurrentUser\My" -NotAfter (Get-Date).AddDays(14)

问题:

  1. 为什么我不能将椭圆曲线证书(智能卡、yubikey、piv)添加为 BitLocker 的保护器?
  2. 为什么添加智能卡后,ECC 证书没有出现在 Windows 的证书管理器 (cert:\currentuser\my) 中(但 RSA 证书却出现了)?
  3. 为什么 manage-bde 命令会出现看似不相关的错误(“错误:只有操作系统卷可以通过 TPM 进行保护。”)尝试使用以下命令添加证书时?
PS ..> manage-bde D: -protectors -add -certificate -tp 39839dd3(...) 
BitLocker Drive Encryption: Configuration Tool version 10.0.18362 
Copyright (C) 2013 Microsoft Corporation. All rights reserved.    
    ERROR: Only the OS volume may be secured with the TPM.

什么?我没有对 TPM 做任何事情,为什么会出现错误?其次,这都是关于数据分区的,我甚至没有触碰系统/操作系统分区,甚至没有触碰系统驱动器!这与我正在做的事情相去甚远,我甚至不确定如何调试它。

##证书生成后 - 导入 Yubikey Powershell 命令将证书导出到当前用户证书存储区。

  • 我将证书导出为 PFX 文件,其中包含公共部分和私有部分。
  • 我从 Windows 中的用户证书存储区中删除了该证书。
  • 通过Yubikey 管理器我导入了证书,并在提供了适当的凭证后报告导入成功。
  • 然后我使用来自Yubico-piv-工具获取我的 yubikey 的新标识符: .\yubico-piv-tool.exe --action="set-chuid" --key="{managementkey}" 否则,可能会由于缓存旧证书而开始出现或出现其他奇怪的行为。
  • 我移除 Yubikey 并重新连接。您还可以使用 检查状态和新的 CHUID .\yubico-piv-tool.exe -a status

分歧部分-当前用户证书存储:

  • 现在,当我使用 RSA 证书执行这些步骤时,只要我再次连接 Yubikey,该证书就会显示在当前用户证书存储中。

边注:

它们与完全在存储中的证书难以区分,但如果您尝试导出这样的智能卡证书,您可能会与智能卡进行交互,但该交互不会去任何地方。我识别我的智能卡证书,因为我无法导出私钥部分。如果它是原始证书,我就可以导出它(因为我生成的证书是可导出的,所以这并不总是一种万无一失的方法)。如果是公共证书,则证书前面的小图标旁边没有钥匙。智能卡上没有证书的唯一图标。移除智能卡不会移除证书存根,它会保留下来。

  • 但是,当我对 ECC 证书执行完全相同的操作时,当我再次连接 Yubikey 时,证书不会显示。

为什么?(问题2)。

将证书作为保护器添加到受 BitLocker 保护的驱动器(鼠标):

  • 我通过 Windows 资源管理器进入“管理 BitLocker”。
  • 我点击“添加智能卡”。

第二部分 - Windows 资源管理器

  • 当我在智能卡上加载 1 个 RSA 证书时,它只会添加它。manage-bde D: -protectors -get -type certificate可以验证证书指纹。
  • 当我在智能卡上加载了 2 个 RSA 证书时,它会提示我选择!这真是一个惊喜。
  • 当我在智能卡上加载 1 个 RSA 和 1 个 ECC 证书时,它只会添加 RSA 证书,而不会让我选择。

为什么?(问题 1)BitLocker 是否与 ECC 证书不兼容?我找到了一个旧的有关证书属性的文章,但它没有提到加密类型。查看 BitLocker 和(自签名)证书Windows 10,信息似乎不存在。我manage-bde DRIVE: -protectors -add -certificate -tp (...)在 Windows 10 文档中很难找到有关的信息,只有一些旧文档。甚至没有等效的 PowerShell 命令。我不知道为什么。(时间戳 2020 年 5 月 1 日。)

通过命令行将证书作为保护器添加到受 BitLocker 保护的驱动器:

  • 我使用了manage-bde D: -protectors -add -certificate -tp 39839dd3(..ECC cert tp..)。它不会添加证书并提供错误:(Only the OS volume may be secured with the TPM.?!)
  • 我再次尝试使用 RSA 证书指纹,但仍然无法添加证书。

我过去曾使用过该命令,因此我感到困惑两次;Windows 的 GUI 会添加 RSA,但不会添加 ECC,但命令行不会再添加任何证书,并抱怨看似不相关的部分,如 OS 分区和 TPM。

为什么?(问题3)。

包起来

我问所有这些问题是为了回答更大的问题:如何以安全的方式使用 yubikey 智能卡 (piv) 解锁受 BitLocker 保护的驱动器(在独立计算机上)?在标题中提出这个问题可能有点过分,这就是为什么我提出与我遇到的问题相关的问题。欢迎您对这些问题提出任何见解,但如果您想分享更大问题的其他解决方案,请随时告诉我。

尽管 ECC 证书和 BitLocker 目前失败了,但提供的 RSA 证书生成功能允许我生成具有我自己选择的属性的更好的 RSA 证书;比 EFS 证书更好。我甚至可能会选择BitLocker 的 OID所以我不必再次更新 GPO。

站点注释2:

我使用智能卡+PIN 的原因是我认为它比密码更安全(也更方便)。你也可以Yubikey 上的静态密码,将其连接起来并与 BitLocker 一起使用,但我留给你自己去思考什么更安全。 - 在我的“研究”中,我也偶然发现了某人制作虚拟智能卡。这显然不是移动的,但它是一种将 TPM 安全性扩展到数据驱动器的方法。自动解锁将数据驱动器的秘密放在 Windows 分区上的 Windows 注册表中。Windows 分区的秘密在 TPM 中(也可能在您的脑海中和 USB 启动密钥中)。如果您将虚拟智能卡添加到您的 TPM 中,并同时将证书 BitLocker 保护器添加到您的数据驱动器中,则秘密在您的 TPM 中(您的虚拟智能卡中),而 PIN 在您的脑海中。至少,据我所知,这是现状;一个可能的未来项目。尽管在这种情况下 ECC 问题仍然有效。

(对于那些想要阅读我收集的网站堆栈的人,我可能会更新这篇文章,添加更多链接。——完成,第一次修订。)

附加信息

我可以扩展一下:

  • TPM:是的(尽管这对于本案来说并不重要。)
  • 操作系统:Windows 10 1909
  • 尤比克 4

相关内容