gpt4 book ai didi

android - 我可以指定 apksigner 使用的摘要算法吗?

转载 作者:太空狗 更新时间:2023-10-29 13:09:49 25 4
gpt4 key购买 nike

由于最近的 SHA1 冲突新闻,我想确保 SHA1 不再用于我的 apk 签名。但是我在 apksigner 中找不到参数.

有没有办法指定(直接或间接)apksigner 使用的摘要算法?

(在SDK 24之前,Android使用java的jarsigner对apk进行签名,有-sigalg SHA1withRSA -digestalg SHA1等选项)


更新:正如 Alex 提到的,我在 V1SchemeSigner.java 中找到了 apksigner 如何确定方案 v1 的签名算法。 .

简而言之,apksigner根据minimumSDK和证书的 key 类型来确定。

  • SHA256withRSA 适用于最低 SDK 18 (Android 4.3) 及更高版本
  • SHA256withDSA 适用于最低 SDK 21 (Android 5.0) 及更高版本
  • SHA256withEC 最低 SDK 18 及以上
  • SHA1with* 用于降低最低 SDK 级别

这是我为备忘录写的常见问题解答:SHA1 Collision and Android APK Signing .

最佳答案

不直接。 apksigner 尝试仅使用安全摘要和签名算法,但它会在您的签名 key (大小、算法)和被签名的 APK 支持的 Android 平台版本施加的限制范围内执行此操作。特别是,对于 JAR 签名,apksigner 默认使用 SHA-256 或更强的算法,但仅适用于仅支持 API 级别 18 或更高级别的 APK(如 minSdkVersion 中声明的那样) AndroidManifest.xml)。在早期平台上运行的 APK 必须使用 SHA-1,因为这些早期平台不支持使用 SHA-256 或更强大的算法验证 APK。对于 APK 签名方案 v2 签名,仅使用 SHA-256 或更强,因为此签名方案甚至不支持 SHA-1。

如果您希望 apksigner 使用 SHA-256 为您的 APK 签名,您可以:

  • 将 APK 的 minSdkVersion 设置为 18 或更高,但这会使 API 级别为 17 及更低的 Android 平台在安装时拒绝 APK。
  • --min-sdk-version=18 传递给 apksigner,但这会使 API 级别 17 及更低级别的 Android 平台在安装时拒绝 APK。
  • 通过将 --v1-signing-enabled=false 传递给 apksigner 仅使用 APK 签名方案 v2 对 APK 进行签名,但这将使 Android 平台具有 API 23 级及更低级别在安装时拒绝 APK。

P. S. 即使您改用仅使用 SHA-256 对 APK 进行签名,Android 仍会接受带有您的包名称和签名证书并使用 SHA-1 或 MD5 进行签名的 APK。因此,根据您的威胁模型,您可能需要切换到从未与 SHA-1 或较弱的摘要算法一起使用的新签名 key 。而这不仅是针对实际密码签名中使用的摘要算法,还针对.SFMANIFEST.MF文件中使用的摘要算法。

关于android - 我可以指定 apksigner 使用的摘要算法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42477546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com