-
上一篇文章地址: 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.
这里的签名指的是数字签名,它是基于非对称加密算法实现的.
补充
- 对称加密算法:
RC4,DES,3DES,AES128,AES356等,加解密双方密钥相同. - 非对称加密算法:
RSA,Elgamal等,加解密双方使用密钥对. - 哈希算法:
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签名有了一定了解.
欢迎关注文章.
网友评论