Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用OpenPGP(Yubikey)签署应用程序包(APK)?_Java_Android_Apk_Code Signing_Jar Signing - Fatal编程技术网

Java 如何使用OpenPGP(Yubikey)签署应用程序包(APK)?

Java 如何使用OpenPGP(Yubikey)签署应用程序包(APK)?,java,android,apk,code-signing,jar-signing,Java,Android,Apk,Code Signing,Jar Signing,我想用存储在Yubikey的OpenPGP小程序中的OpenPGP密钥对APK文件进行签名 我知道,有一个问题。然而,PIV小程序只能处理密钥长度不超过2048位的RSA密钥 (翻译英文版)规定,从2023年起(或2023年及以后的使用),只允许密钥长度大于或等于3000位的RSA密钥。第一个可用的标准密钥长度为3072位。我必须遵守BSI TR-02102 这归结为一个要求,即我必须使用3072位作为密钥长度,使用RSA作为算法,并且我不能使用PIV APK方法 有没有办法使用Yubikey

我想用存储在Yubikey的OpenPGP小程序中的OpenPGP密钥对APK文件进行签名

我知道,有一个问题。然而,PIV小程序只能处理密钥长度不超过2048位的RSA密钥

(翻译英文版)规定,从2023年起(或2023年及以后的使用),只允许密钥长度大于或等于3000位的RSA密钥。第一个可用的标准密钥长度为3072位。我必须遵守BSI TR-02102

这归结为一个要求,即我必须使用3072位作为密钥长度,使用RSA作为算法,并且我不能使用PIV APK方法

有没有办法使用Yubikey 4的OpenPGP小程序使用标准程序或自定义程序对APK文件进行签名?


注意:私钥是在Yubikey上生成的,不可导出。这是因为Yubikey的设计和我的最低安全要求。因此,导出和对话不是一个可行的解决方案。

使用支持RSA 3072 4096的USB令牌或智能卡进行个人身份验证?即使是也不支持PIV/(这是一种智能卡模拟)。我已经搜索了一段时间,但似乎几乎没有任何硬件支持它(以防它甚至适用);我能找到的替代方案是,和

使用APK签名或,上载密钥的强度甚至可能没有那么重要。。。它说RSA 1024、RSA 2048、RSA 4096、RSA 8192、RSA 16384都是受支持的,但它没有说实际的发行密钥会有什么强度,这将是其中相当有趣的部分。PKCS1 V1.5编码格式提示;但是找到答案的唯一方法是通过运行
ssh keygen-lf./rsa_key.pub
(它显示公钥文件的指纹,也显示密钥的强度)从Play Store检查包的公钥


可能提供进一步的线索。

由于签名发生在USB设备上,密钥大小限制很奇怪。您确定您的Java版本不是限制导出的旧版本(此类版本中限制了大于2048的RSA密钥)。确保使用当前的无限制Java版本(例如6u181、7u171、8u161)或安装JCE Unlimited Strength策略文件。此(限制)与Java无关。PIV标准仅明确描述了1024和2048个RSA密钥,而没有其他任何内容(不允许其他内容)。这个问题是关于如何通过Yubikey OpenPGP applet设置Yubikey和Keytool之间的通信。IMHO使用过时的apk签名工具(如yubico piv tool)比用于签名的密钥更安全。过时的工具只支持不推荐的?v1签名,apk签名v2有一些主要的安全优势,而AFAIR谷歌正在发布。无论如何,你可以使用多个签名签署APK,这可能是你的解决方案?听起来很有希望,无论如何,我不能使用它,因为正在使用Android 6设备(仅v1)。签名v2对旧设备是完全透明的,因此你可以使用它。旧设备检查v1,新设备使用v2。2023年,当你的钥匙不再被使用时,安卓6设备应该不再是个问题了。好主意。只支持Windows,他们的网站上说“CRYPTOMATE64已经过时了。”。。。