ios苹果签名的ipa文件的应用签名原理和签名稳定性分析

AppStore官方商店购买,公司证书安装或TestFlight下载。为了阻止盗版,软禁,病毒入侵,无提示安装和其他您无法控制的因素,并确保正式允许iOS设备上安装的所有应用程序,Apple建立了一套应用程序签名机制。

电子签名

数字签名,也称为公钥数字签名,是只能由信息发送者生成的数字字符串,不能被他人伪造。发件人使用签名标记对要发送的数据进行签名,以表明该数据已通过身份验证并且未被篡改。

数据传输

让我们模拟数据传输过程。

如果发件人以纯文本格式直接将原始数据发送给收件人,则数据非常不安全并且容易被篡改。

为了提高安全性并同时简化纯文本,您可以对数据进行哈希处理以获得原始数据的摘要,然后将摘要发送给收件人。但是,如果散列算法泄漏,则存在数据篡改的风险。

它引入了一种非对称加密算法,使用哈希算法对数据片段计算摘要,然后使用RSA私钥对摘要进行加密,以获得原始数据的数字签名。发件人将数字签名与原始数据一起发送给收件人。

经过哈希加密和非对称加密后的原始数据称为数字签名。

接收到数据后,接收方必须执行签名验证,以确保在数据传输过程中未对其进行篡改。

数字签名验证

验证签名的具体步骤如下:

接收到数据后,原始数据将使用相同的哈希进行加密以获得哈希值(摘要)。

然后,它使用不对称性来解密数字签名的验证哈希值(摘要)。

最后,将两个哈希值进行比较以查看它们是否一致,以查看数据是否已被篡改。

恢复数字签名和照片的整个过程:

让我们看看如何使用数字签名来确保iOS上安装的所有应用程序都经过Apple的批准。

代码签名

代码签名是一种在签名后对可执行文件或脚本进行数字签名的方法,以确保软件没有被修改或损坏。它的原理类似于数字签名,不同之处在于它是签名代码,而不是数据。

简单的代码签名

如果您只能从App Store下载该应用程序,则检查方法相对简单。

公钥和私钥对由Apple正式生成,公钥内置在iOS系统中,并且私钥存储在Apple后台。

当您将应用程序上载到App Store时,Apple后端会使用您的私钥对应用程序数据进行签名。 iOS系统下载应用程序后,公共密钥会验证签名。如果签名正确,则必须在Apple后端对应用进行身份验证,并且该应用已被修改或损坏。但是,App Store并不是在iOS设备上安装应用程序的唯一渠道,包括开发人员的现场调试,TestFlight的内部测试以及内部公司证书的分发。目前,简单的代码签名无法满足应用程序的完整验证。

这会增加iOS代码签名的复杂性,从而导致双重代码签名(双重签名)。

双码签名

“双层”旨在使用两对公钥和私钥进行密码验证。这是Mac上的一对,Apple服务提供的一对。

双重代码签名的存在是为了满足以下条件:

您必须获得Apple的批准才能安装该应用程序。

您只能安装在Apple后台注册的设备,例如TestFlight内部测试和真实设备调试模式。

受限制的签名可能特定于唯一的应用程序。

您可以解压缩ipa文件以猜测整个签名过程。有效负载目录中有embed.mobileprovision,这称为描述文件,与在Apple后台创建的PP(Provisioning Profile)文件相对应。这些文件包含:

证书(公钥,签名)

应用程式编号

资格(权限)

已注册设备列表

有关应用程序是否可以正常启动的任何其他信息

因此,大致的签名过程如下:

在开发设备Mac上本地生成公用和专用密钥对。

苹果有一对公钥和私钥,苹果私钥在苹果的后端,而苹果公钥在每个iOS设备上。

通过将Mac公钥上载到Apple后端,并使用Apple私钥对Mac公钥签名,您将获得Mac公钥和签名数据的组合,称为证书。

在Apple后台中,当您申请App ID,应用程序应用的已配置UDID(已注册设备)和权利的列表以及步骤3中的证书时,使用Apple私钥对合并的数据进行签名,然后将数据和签名一起应用。创建一个PP文件并将其下载到本地开发设备Mac。

编译项目时,Mac私钥会对该应用程序进行签名,同时打包在步骤4中获得的PP文件,文件名将被嵌入。mobileprovision,该应用程序已准备好在手机上安装。

在安装过程中,iOS系统会获取证书,并使用内置的Apple公钥来验证证书是否正确签名。继续使用Apple公钥验证您的个人资料是否正确。

使用Mac公钥检查应用程序签名是否已被篡改。

在此处插入照片说明

以上步骤对应于实际任务和概念,例如:

步骤1:在Mac上打开“钥匙串访问→证书支持→向证书颁发机构申请证书.”。此步骤将在本地生成公用和专用密钥对,并具有导出的CSR文件(CertificateSigningRequest.certSigningRequest)。被建造。 Mac公钥和Mac私钥也存储在本地。有关特定文件,请参见步骤3。

步骤2:每个iOS设备已经具有Apple公钥。有关Apple私钥的含义,请参见步骤3。

步骤3:在Apple后端上载从iOS证书模块本地导出的CSR文件,以生成.cer证书文件,这是Apple私钥。在本地下载.cer证书,安装证书,在钥匙串中找到证书,然后导出Mac私有密钥(.p12文件)。对应于步骤1中导出的Mac公钥。钥匙串连接这两个证书。使用.cer证书签署CSR文件,然后导入签署的证书。

步骤4:在Apple Background中配置应用程序ID,权限,设备等,然后下载PP文件。

步骤5:在编译应用程序时,Xcode将使用您在步骤3中下载的证书(使用Mac公钥)在本地找到该Mac私钥,然后使用Mac私钥对应用进行签名和打包,然后将其安装到软件包中。做吧包含PP文件,ipa的文件名为embed.mobileprovision。在这里,应用程序的签名数据分为两部分:Mach-O可执行文件直接对描述文件进行签名,资源文件存储在_CodeSignature目录中,并且可以安装应用程序。

步骤6:使用Apple公钥验证描述文件的签名。已经传递了与步骤4相对应的签名,以指示可以使用该证书,然后继续进行下一步。

步骤7:使用Apple Public Key验证证书签名。传递对应于步骤3的签名,表明Mac公钥是合法的。转到下一步。

步骤8:使用Mac公钥验证应用签名。对应于步骤4。通过以上所有检查后,您需要检查描述文件的内容,并将其与应用本身中的信息进行比较(例如,设备ID是否在UDID列表中)。一旦应用程序ID相同,权限开关就会与权利匹配,并且都经过验证,您就可以开始安装应用程序了。如前所述,双层代码签名是用于开发测试程序包,内部公司签名和Ad-Hoc程序包的签名和验证过程,但是公司签名并不限制已安装设备的数量,因此没有描述文件。设备列表,但ProvisionsAllDevices小于或大于true的记录。

从App Store下载的安装包没有描述文件,但是您需要进行应用ID和权限检查,因此需要在将证书和PP文件放到架子上之前对其进行配置。但是,在将应用程序上载到App Store之后,它与PP文件无关,因此您可以理解,App Store中软件包的签名验证使用上述最简单的签名方法,而Apple背景直接使用私钥对应用程序进行签名。

(0)

相关推荐

  • 【安全圈】CryptoRom诈骗利用Apple Enterprise功能赚了140万美元

    关键词 苹果企业签名证书 金字塔式加密货币诈骗者正在利用Apple的企业开发人员计划,将虚假交易应用程序安装到他们标记的iPhone上.到目前为止,一切都很顺利:截至目前,他们已经获得了至少140万美 ...

  • MDB Explorer for mac 打开后提示文件损坏解决办法

    问题:MDB Explorer for mac 打开后提示文件损坏 解决办法: 1.打开终端. 2.在终端里面输入 sudo xattr -r -d com.apple.quarantine 再输入空 ...

  • iPhone与Android孰优孰劣,外媒用10条理由谈谁更胜一筹

    近日,一位来自Tom's Guide的小哥在平台上阐述了苹果战胜安卓的10条理由.他表示,他很喜欢安卓手机上的硬件和软件定制选项.三星S9和谷歌Pixel 2对于那些想要最棒设计和最强悍相机的用户来说 ...

  • 只要用这3个步骤(没有iTunes)也可以将MKV传输到Mac上

    Waltr 2 for Mac,Waltr 2 for Mac是mac平台上一款强大的iOS多媒体文件传输工具,可以帮助您轻松快速的将媒体文件上传到iPhone或iPad!waltr mac破解版可以 ...

  • Ios系统ipa文件应用分发签名的应用原理

    Ios系统ipa文件应用分发签名的应用原理 显示某些数据以指示我批准(命名)数据,然后将其发送给其他人.其他人可能知道此数据已由他们自己进行了身份验证,并且尚未被篡改. 首先,使用一种算法来计算原始数 ...

  • IOS苹果企业签名工具

    ios开发者工具,ios企业签名工具,绿色软件,离线脱机,免费使用, 苹果开发者中心,Apple Developer获取P12与描述,只需要p12文件和provision描述文件即可 支持IPA签名加 ...

  • 如何导出 iOS App 的 .ipa 文件?

    __Null 12019.04.17 22:06:32字数 800阅读 26,993 做iOS开发经常会研究一些自己感兴趣的App,甚至仿写一些很赞的功能和交互,如果有这个应用的一些资源文件,也会给我 ...

  • ios苹果企业签名过期一般原因

    在当我们开始接触苹果签名的时候,我们就会发现网上有很多人都会说,为什么我的app刚上线几天,苹果企业签名就过期了,为什么会莫名其妙的掉签,是因为什么原因呢?'咕噜分发'小编就针对之前大家遇到过的问题, ...

  • iMazing中IPA文件的介绍与管理

    这款专业管理iOS设备的工具iMazing不但功能众多,而且软件反应迅速.相对于苹果官方软件iTunes用起来方便很多. 比如它可以轻松地传输和保存音乐.消息.文件和数据,用好这些功能可以更方便快捷地 ...

  • mac的hosts文件位置在哪?苹果电脑修改hosts文件方法介绍

    hosts文件是我们上网的重要文件,修改hosts可以帮助我们加快域名解析,屏蔽网站等等.但是有不少苹果电脑用户朋友们不知道hosts文件在macOS操作系统的哪里.今天小编就来告诉大家使用多种方法找 ...

  • iOS 也能隐藏图标文件夹名称,让你的桌面布局更加简洁

    欢迎收看由雷科技推出的科技自习室 我们都知道,iPhone 桌面上的图标文件夹可以自定义名称,但不能保持空白.那么,有没有什么方法能让它的名称为空,看起来更简洁呢?通过下面一个小技巧,简单几步就可以轻 ...

  • [资源分享] 导出苹果安装包IPA的几种方法

    说明一下,这里针对的是没有源码和非越狱设备的几种方法.下面简单介绍下几款软件的用法. 1. Apple Configurator 2 在App Store搜索"Apple Configura ...

  • iOS 屏蔽系统更新描述文件更新!快把烦人的系统更新提示关掉!

    我们以前分享过关于 iOS 系统屏蔽系统更新提示的方法,但是可能文章中提及的 App 过于敏感,文章被删除了! 刚好有人问 iOS 系统更新提示怎么去掉?而前段时间描述文件又更新了可以使用了,由于前段 ...