iOS逆向之App签名

  • 上一篇文章地址: iOS逆向之问题交流

  • 上一篇文章,主要介绍了群里小伙伴遇到的问题.

  • 已经好几天没有写文章了,我们继续开始写新内容.

  • 本篇文章我们接着介绍如何对App进行签名.

本篇文章内容,介绍代码签名和自动化签名的使用,会加深你对应用签名的理解.

App签名

1.App签名的目的?

目的是为了验证数据的安全,防止数据没有被篡改.怎么理解这句话呢?

1. 由于主流系统平台,比如Mac,Windows平台,开发和运行软件是不需要签名的.

分享
这里分享一个Mac平台小故事,如果你从事过Mac开发,相信你对开发的Mac应用很了解.

如果我们只做简单的开发,Mac平台通过证书等配置后,可以完成打包Mac应用.在自己平台进行下发,不用提交到Mac应用商店.当然,你也可以提交到Mac应用商店.

如果我们开发的应用使用权限比较多,比如使用了扩展进程等,这些应用必须上架Mac应用,由于苹果证书的限制,所以开发应用是不能分发的.

2. 软件下载平台没有限制,失去了App的控制权,所以苹果希望解决这样的问题,安装到iOS的App都要经过苹果允许.

3. 苹果的签名机制由此产生了.

注意

前面文章有写到关于签名的部分 iOS逆向工具之Theos(MacOS)介绍,本文章将详细介绍如何签名.

2.签名机制

1. 这里的签名指的是数字签名,它是基于非对称加密算法实现的.

补充

  1. 对称加密算法:
    RC4,DES,3DES,AES128,AES356等,加解密双方密钥相同.
  2. 非对称加密算法:
    RSA,Elgamal等,加解密双方使用密钥对.
  3. 哈希算法:
    MD(16Byte),SHA1(20Byte)等.
    任意长度的信息转换成到某一固定长度的信息摘要,主要作用是对数据完整性校验.
    具有唯一性,不可逆性

2. 对称加密是通过同一份密钥加密和解密数据,一般接口请求的时候,我们会应用到对称加密/解密.

3. 非对称加密则有两份密钥,公钥和私钥.

用公钥加密的数据,要用私钥解密;

用私钥加密的数据,要用公钥解密

所以非对称加密以现有的技术很难破解,非对称加密是非常安全的.

3.App签名方式

1. 企业签名
一般不容易上架的应用,会通过企业签名.签名后通过自己的官网进行应用下发.

2. 开发者账号签名
开发者账号签名,(公司和个人账号),进行App调试,设备数量有限制

4.数字签名
  • 数字签名怎么理解?

举个例子,企业领导数据报表签字,如果领导签字,说明数据报表合格,数据就不能随意更改.

  • 什么是数字签名

我们通过计算校验数据HASH值,将校验的HASH值进行RSA加密,RSA加密过后的Hash值,即为数字签名.

注意

如果被校验的数据是代码,则是代码签名

5.苹果双向签名
苹果双向签名

我亲自制作了上面的双向签名图,以方便大家了解苹果双向签名的机制.

如上图所示

1. Mac通过CSR文件文件申请证书,正向开发者应该了解此步骤,通过配置证书,描述文件,打包上架应用.
这里所指的CSR,也可以指本地公钥

2. Apple服务器通过私钥A打包证书

3. Mac通过证书将本地私钥进行绑定

4. 安装App时,通过iPhone中的公钥A和证书中的私钥A进行验证,获取公钥,设备IDs,AppID等信息

5. 通过上一步的获取的公钥,进行私钥解密,进行App签名.

6.如何对应用签名?
  • 1.iOS App Signer

前面的文章有介绍到 iOS逆向工具之(MacOS)工具介绍ios-app-signer (ipa文件重签名)的内容

可以看一下具体操作,重新签名后,你可以安装到你的iPhone设备.

  • 2.通过终端命令进行签名

我们先获取到本机所有证书

security find-identity -v -p codesigning

你可以选择其中一个证书进行签名

如何进行签名

codesign -fs "配置证书" 签名的文件

对于我们签名来说,复杂的应用需要多次签名,找到影响的因素.

简单的应用有可能一次签名成功.

总结

本篇文章主要介绍以下内容:

1. App签名的目的

2. 签名机制

3. App签名方式

4. 数字签名

5. 苹果双向签名

6. 我们如何进行签名

通过这些内容的了解,相信你对App签名有了一定了解.

欢迎关注文章.

你可能感兴趣的:(iOS逆向之App签名)