美文网首页
iOS逆向之App签名

iOS逆向之App签名

作者: 木子心语 | 来源:发表于2020-02-06 18:13 被阅读0次
    • 上一篇文章地址: 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签名

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