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