美文网首页
Apple应用签名原理

Apple应用签名原理

作者: 木扬音 | 来源:发表于2021-04-16 00:43 被阅读0次

苹果的需求

  • 安装包可以不用上传到App Store直接安装
  • 需要经过苹果允许才能安装
  • 不能被滥用导致非开发App也能安装

双层签名

因为iOS 开发环境实在Mac系统下进行,所以就产生了两个角色,iOS系统和Mac系统

  • Mac系统中生成非对称加密的公钥和私钥(Xcode已经执行),这里称为公钥M私钥M
  • 苹果自己有一对私钥和公钥,和Apple Store原理一样,私钥放在苹果后台,公钥在每个iOS系统里,这里称为公钥A私钥A
  • 公钥A和你的开发信息绑定在一起,传递给苹果后台(这就是CSR文件),用苹果后台的私钥A签名公钥M,得到一份包含了公钥M及其签名,把这称为证书
  • 在开发时,编译完一个APP后,用本地私钥M(P12)对APP进行签名,同时把上一步得到的证书一起打包进APP,安装到手机上
  • 在安装时,iOS系统取得证书,通过系统内置的公钥A,去验证数字签名是否正确
  • 验证证书后,确保了公钥M是被苹果认证的,再用公钥M去验证App的签名,这里就间接验证了这个App的安装行为是否经过苹果官方允许。(这里只验证安装行为,不验证APP是否改动,因为开发阶段的APP是不断变化的)
双层签名

有了上面的验证就可以确保开发者的认证和程序的安全性吗?那不是申请一个证书就可以安装APP到所有iOS设?,于是就有了描述文件

描述文件

苹果为了解决应用滥用的问题,所有又增加了两个限制

  • 在苹果后台注册的设备才可以安装
  • 签名只针对某一个具体签名

并且苹果还想控制App里面的iCloud/PUSH/后合运行/调试器附加这些权限,所以苹果把这些权限开关统一称 Entitlements(授权文件).并将这个文件放在了一个叫做Provisioning Profile(描述文件)文件中。

描述文件是在AppleDevelop网站创建的(在Xcode中填上ApplelD它会代办创建)xeode运行时会打包进入APP所以我们使用CSR申请证书时,我们还要申请一个东西!! 就是描述文件!

在开发时,编译完一个 APP 后,用本地的私钥M对这个APP进行签名,同时把从苹果服务器得到的 Provisioning Pr文件打包进APP里,文件名为embedded.mobileprovision,把 APP 安装到手机上.最后系统进行验证。

双层签名+描述文件

总结

  • Mac电脑生成一对公钥私钥
    • 利用本地公钥创建CSR文件,请求证书
    • 钥匙串将证书和本地私钥(p12证书)做关联
  • 苹果服务器利用本地私钥生成证书描述文件
    • 证书包含Mac电脑的公钥签名
    • 描述文件:设备列表、AppID列表、权限列表
  • iOS系统利用系统中的公钥(与苹果服务上的私钥是一对)对App进行验证
    • 验证描述文件是否与证书匹配
    • 验证App的安装行为(通过验证证书,拿出证书中的公钥对App的签名进行验证)

相关文章

  • Apple应用签名原理

    苹果的需求 安装包可以不用上传到App Store直接安装 需要经过苹果允许才能安装 不能被滥用导致非开发App也...

  • Apple 签名原理

    前言 签名是什么? 我们的 APP 是如何签名的?APP 调试为什么就可以安装呢? 数字签名就是将 APP 的 h...

  • IOS 逆向开发(四)App重签名

    1. 应用签名 应用签名原理回顾 上一篇博客“IOS 逆向开发(三)应用签名”中详细讲解了IOS 应用签名,证书的...

  • 应用签名-签名原理

    HASH加密 将任意大小的数据通过散列算法变换成固定长度的字符,通常为32位的固定字符,又称hash值。特点:算法...

  • iOS重签名初探

    iOS签名原理 如上图,iOS的app编译完后会有几次签名处理。具体原理自己去百度,这里不细说。因为Apple私钥...

  • iOS 应用签名原理

    本文将讲解苹果的应用签名原理,旨在理解了应用签名后可以对非自己的应用进行重签名。 下面将从三个方面去讲解应用的签名...

  • iOS签名机制

    应用签名的原理iOS APP签名机制详解iOS逆向之旅(基础篇) — App的签名机制【Xcode是如何将App安...

  • iOS应用签名原理

    前言 iOS真机调试、App打包等过程涉及到各种证书,CertificateSigningRequest、p12、...

  • iOS应用签名原理

    一、代码签名 代码签名是对可执行文件或脚本进行数字签名,用来确认软件在签名后未被修改或损坏的措施。和 数字签名原理...

  • iOS 应用签名原理

    一. 代码签名 代码签名是对可执行文件或脚本进行数字签名.用来确认软件在签名后未被修改或损坏的措施。和数字签名原理...

网友评论

      本文标题:Apple应用签名原理

      本文链接:https://www.haomeiwen.com/subject/fokslltx.html