bur*_*rsk 3 certificate code-signing digital-signature yubikey
我即将开始使用 YubiKey 4(RSA 2048 位密钥)来签署应用程序二进制文件。有很多关于如何设置它的教程。似乎大多数教程都是基于原始 Yubico 指南(Android,MacOS),这让我感到困惑。
当我查看PIV 证书槽信息时,我得出的结论是,槽9c(数字签名)是代码签名的正确槽,因为我使用私钥对二进制文件进行了数字签名。
然而,在 Yubico 的Android指南以及其他指南中,所选的证书槽为9a,用于PIV 身份验证。插槽的用途是针对“系统登录之类的事情”“验证卡和持卡人”,这显然是对代码签名的滥用。
使用 YubiKey 4 的 PIV 小程序进行代码签名证书的正确(语义)槽是什么?有什么理由使用/坚持使用插槽9a吗?
小智 5
YubiKey 工具不会对特定插槽中的密钥或证书实施任何类型的约束或限制。一些第三方工具可以。
各种插槽之间最大的区别是应用于它们的 PIN 策略。9a 用于身份验证,仅要求输入 PIN 一次。它旨在能够用于系统登录,然后进行任意数量的 Web 浏览器会话。
另一方面,9c 要求为每笔交易输入 PIN。这是一个理想的签约房产。
如果您使用插槽 9a 进行签名,则该卡将允许进一步签名,直到该卡断电或移除。
9d 的功能与 9a 类似,但它用于加密而不是身份验证。拥有单独的插槽可以执行诸如 9a 中的身份验证证书(使用卡上生成的密钥)和 9c 中的加密(将密钥加载到卡中,并在其他地方托管以防卡丢失)之类的操作。
托管通常不是身份验证所需的属性,因为它会导致冒充的可能性。这是一个非常好的加密属性(因为这意味着如果卡被锁定、丢失或损坏,或者员工离开雇主,文件不会全部丢失)。
9e 不需要身份验证,适用于门锁等用途。使用该插槽将使任何应用程序无需用户交互即可进行签名。
简而言之,插槽 9c 实际上是代码签名的正确插槽。由于大多数 YubiKeys 指南旨在支持身份验证(而不是加密或签名),因此它们倾向于使用插槽 9a。