签名

iOS开发逆向之应用签名!

2021-05-17  本文已影响0人  iOS鑫

本文主要讲解什么是代码签名,以及iOS中的应用签名


代码签名

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

目的:防止可执行文件或脚本被篡改

简单的代码签名

苹果的需求

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS开发交流群:130 595 548,不管你是小白还是大牛都欢迎入驻 ,让我们一起进步,共同发展!(群内会免费提供一些群主收藏的免费学习书籍资料以及整理好的几百道面试题和答案文档!)

为了实现这些需求,iOS签名的复杂度也就开始增加了,苹果这里给出的方案是 双层签名

双层代码签名

为了实现苹果验证应用的一些需求,iOS签名的复杂度也就开始增加了,苹果给出的方案是双层签名.

苹果双向签名验证步骤

下面简述苹果双向签名的步骤

问题:编译App需要安装到手机,iPhone如何验证呢?

双重验证

注:上述这个过程是有问题的:因为只要申请证书,任何设备都可以安装

描述文件

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

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

下面老看下描述文件,以下是描述文件的期限

且在编译好的App包中,同样可以看到描述文件

终端命令查看:通过命令查看描述文件(.app包的目录下):security cms -D -i embedded.mobileprovision

双重验证总结

所以,综上所述,苹果的双重验证主要是指以下两次签名验证:

总结

*   1、在Mac中通过`公钥M+证书颁发机构信息`生成`CSR文件`

*   2、将`CSR文件`传递到苹果服务器,申请`CRT证书`

*   3、苹果服务器通过`私钥A加密公钥M`,生成`CRT证书`,并对公钥M的hash值进行数字签名(即通过RSA加密)。同时苹果还提供了`描述文件`

*   4、通过`私钥M`对`Mach-O进行签名`,生成一个`App的签名`,同时将描述文件、CRT证书等打包,形成一个`ipa`包

*   5、App安装到iOS设备

*   6、从iPhone手机中获取`公钥A`,通过公钥A`解密CRT证书`,得到`公钥M`

*   7、通过6中得到`公钥M验证App的签名`

参考链接

上一篇 下一篇

猜你喜欢

热点阅读