移动 App 指纹(签名)是如何工作的?
一、签名证书生成
-
私钥(Private Key):开发者自行保管,不外泄。
-
公钥(Public Key):打包进 APK 文件中。
-
证书(Certificate):包含公钥及开发者信息(名称、组织等)。
注意:Android 支持使用自签名证书,无需 CA 机构签发。
二、APK 签名过程
-
对 APK 内除签名文件外的所有文件进行哈希计算(常用 SHA-256)。
-
使用私钥对哈希值进行 RSA 加密,生成数字签名。
-
将签名数据与公钥证书一同放入 APK 的META-INF目录。
三、安装时的校验流程(安卓系统 / 平台)
-
若设备已存在同包名应用:
-
对比新旧应用证书是否完全一致。 -
不一致则禁止覆盖安装,防止签名被恶意替换。
-
签名校验:
-
使用公钥解密签名,得到原始哈希值。 -
重新计算当前 APK 文件的哈希值。 -
两者一致则签名验证通过,允许安装。
四、签名指纹不能保证的事
-
无法证明 App 的真实开发者身份(自签名可随意生成)。
-
无法证明包名合法或未被盗用。
-
无法证明证书可信(系统不做证书信任链验证)。
五、iOS 与 Android 签名机制对比
|
|
|
|
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
六、总结
-
Android 签名更接近防篡改水印。
-
iOS 签名类似身份证 + 公证处双重验证,安全性更高,但受 Apple 管控更多。
夜雨聆风