iOS应用签名原理

基本签名原理:

App签名使用到了数字签名,通过hash算法提取摘要,使用苹果私钥加密,形成签名,然后将原始数据,加密的的摘要(签名)及相关信息放到一起,形成已签名的数据(数字证书)。

iOS App 签名机制:

CertificateSigningRequest.certSigningRequest

在PKI系统中,Certificate siging request(CSR)是用于到Certificate Authority申请证书的,包含申请证书的一些必要信息

*.certSigningRequest包含了如下信息:

  • 申请者信息
  • 申请者公钥
  • 摘要算法和公钥加密算法

发布证书

在苹果服务端上传了*.certSigningRequest后,苹果服务端会取出CertSigningRequest中的公钥,添加账号信息,通过哈希算法生成一个摘要,使用苹果私钥对摘要加密,形成数字签名。发布证书包含如下信息:

  • 申请者信息
  • 申请者公钥
  • 通过苹果私钥加密的摘要—-数字签名

Provision Profile

签名文件在苹果开发者网站生成,生成时需要关联App ID,发布证书。*.mobileprovision文件主要包含了如下信息:

  • APP ID(Bundle ID/application-identifier)
  • Entitlements (权限列表)
  • DeveloperCertificates(使用的证书)
  • ExpirationDate(签名文件过期时间点)
  • ProvisionedDevices(可安装的设备列表的UDID,development证书特有,distribution是ProvisionAllDevices)

参考

[] (http://www.youdzone.com/signature.html)

[] (https://www.objc.io/issues/17-security/inside-code-signing/)

[] (https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40005929-CH1-SW3)

[] (http://blog.cnbang.net/tech/3386/)

[] (http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html)


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!