【发布时间】:2018-06-15 11:04:20
【问题描述】:
我想使用存储在我 Yubikey 的 OpenPGP 小程序中的 OpenPGP 密钥签署 APK 文件。
我知道,有一个solution for APK signing using Yubikey's PIV applet。但是,PIV 小程序只能处理密钥长度最多为 2048 位的 RSA 密钥。
BSI TR-02102-1 Cryptographic Mechanisms Technical Guidelines(英文翻译版)声明从 2023 年开始(或用于 2023 年及以后的使用),只允许密钥长度大于或等于 3000 位的 RSA 密钥。第一个可用的 标准 密钥长度为 3072 位。我必须符合BSI TR-02102。
这总结为要求,我必须使用 3072 位的密钥长度和 RSA 作为算法,我不能使用 PIV APK 唱歌方法。
有没有办法使用 Yubikey 4 的 OpenPGP 小程序使用标准程序或使用自定义程序对 APK 文件进行签名?
注意:私钥在 Yubikey 上生成,不可导出。这是由于 Yubikey 的设计和我的最低安全要求。所以导出和对话是不可能的。
【问题讨论】:
-
由于签名发生在 USB 设备上,因此密钥大小限制很奇怪。您确定您的 Java 版本不是限制导出的旧版本(RSA 密钥大于 2048 在此类版本中受到限制)。确保使用当前不受限制的 Java 版本(例如 6u181、7u171、8u161)或安装 JCE Unlimited Strength 策略文件。
-
这个(限制)与Java无关。 PIV 标准仅明确描述了 1024 和 2048 个 RSA 密钥,没有其他内容(不允许使用其他内容)。这个问题是关于如何通过 Yubikey OpenPGP 小程序设置 Yubikey 和 Keytool 之间的通信。
-
恕我直言,使用 yubico-piv-tool 等过时的 apk 签名工具比用于签名的密钥更安全。过时的工具只支持已弃用的? v1 签名、apk 签名 v2 具有一些主要的安全优势,AFAIR Google 正在发布v3 signature。无论如何,您可以使用多个签名对 APK 进行签名,这可能是您的解决方案吗?
-
听起来很有希望,反正我不能使用它,因为正在使用 Android 6 设备(仅限 v1)。
-
签名 v2 对于旧设备是 AFAIK 透明的,因此您可以使用它。旧设备检查 v1,新设备使用 v2。到 2023 年,您的密钥将不再被使用,Android 6 设备将不再是问题。
标签: java android apk code-signing jar-signing