Android APK中的安全元数据

时间:2018-01-04 07:48:04

标签: android google-play

正如此blog post中所述 - Google会在2018年开始的每个APK文件的顶部添加新的安全元数据,以验证通过Google Play商店安装的Android应用程序。

我的问题:这个元数据是否与jarsigner&当应用程序APK上传到Play商店以便分发时,apksigner或Google会将此元数据放入?没有在博客文章或任何其他来源上找到详细信息。提前谢谢。

4 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

jarsignerapksigner都不会添加任何此类元数据。似乎Google Play将添加此元数据,因此将“标记”APK定义为“由Google Play正式发布”(引用博客文章)。当APK被分发到已安装的基础/用户时,此加盖必须在APK上传时间或更晚时间发生。

答案 2 :(得分:2)

我在这里对签名机制进行了反向工程:https://github.com/avast/apkverifier/blob/master/signingblock/frosting.go

内部称为“结霜”,主要针对APK的P2P共享。它是在Play商店APK中实现的,而不是在Android OS中实现的。除了通过密钥签名外,Play商店还包含一个打包名称的“黑名单”,可以将其标记为“不允许”(当前为空)。

结霜与签名方案无关-例如, com.facebook.orca 仍使用方案v1,但有结霜。

磨砂块由Play商店添加,因此可以证明该特定文件是从Play商店下载的,但并非所有APK都具有该文件-最近未更新的APK丢失了该文件。另外,apkmirror.com之类的来源可能会直接从开发人员那里获取APK,然后再将其上传到Play商店,因此这些APK也将丢失霜。

奇怪的是,结霜包括使用protbuf编码的元数据块。该结构相当复杂,包含签名时间戳,versionCode,minSdkVersion等数据。

Google Photos APK的元数据包含字符串com.google.android.apps.photos.PIXEL_2018_PRELOAD。该字符串似乎表明APK是工厂图片的一部分,但是我自己手机(不是像素)中的APK也包含此字符串。

Pixel 2(XL)9.0工厂图像中的APK没有结霜。

答案 3 :(得分:1)

在您的链接博客文章中,您应该阅读:

  

我们会调整Play的最大APK大小,以考虑添加的小元数据,该元数据会添加到APK Signing Block中,并且不会改变您应用的功能。

因此,当您在将apk上传到商店之前对其进行签名时,Google会将此元数据放入APK Signing块。您不必担心,签名过程会自动完成。