ios可以刷最低版本吗(你知道ios为什么不能刷任意系统版本吗)
这段时间,有关降级的消息真的是闹得沸沸扬扬,结果也是令人生气。
昨天小编就说了,即使不相信也抱着可能会出现的态度,就下载了一大批固件等着给“主子们”降级,为此还牺牲了硬盘里的500g,现在真的是越想越火大!
也曾有老哥询问过有关降级验证的问题,这到底是怎么回事呢?
为什么手机在我们手上,而能否降级的权利却在苹果公司的手上呢,今天小编将带来的就是苹果的降级机制——
一、离线升级时代
在很久以前,在允许离线升级的时代,苹果公司其实是无法控制用户的系统版本的。
这样一来用户可以随意的升降系统版本。(不过在当时,用户们渴望的是得到更多的功能,大概只会想着升级而不是降级吧)。
在2009年49周后生产的机器和在此之后的iPhone 4,苹果通过处理器加入了一个验证机制,刷机必须签名固件。
拿到授权文件为固件签名。这个授权文件就是我们口中的SHSH,苹果在iPhone 4s及以后的设备中通过修复处理器漏洞的方式禁止了本地签名固件的验证,所以iPhone 4s及以后机型不能通过本地签名的方式绕过验证。
4S最初上市时是iOS5,而由于iOS6和iOS7的验证机制不同,即iOS6以前的用户要升级到iOS7及以后的系统必须要先升级到iOS6,时过境迁,当时的iOS5不能直接升级到最新的系统,而iOS6却支持OTA升级到最新系统。
苹果为了保证iOS5的用户能够升级最新版iOS,所以开放验证,允许这部分用户先升级到iOS 6.1.3,再通过iOS 6.1.3升级到iOS 9。
网络上的4s降级教程的原理就是通过修改iOS版本号到iOS 5,然后欺骗苹果拿到iOS 6的升级许可,然后全新安装iOS 6。这就是为什么这个降级需要越狱的原因。
目前Apple改进后的在线验证方式是iOS Device在升级时,除了发送设备信息,还会生成一个随机数(nonce)参与验证。因此无法用录制重播法骗过bootloader。
验证逻辑由bootloader实现,代码被主芯片secure boot保护,因此难以篡改;
芯片唯一密钥藏在OTP中,只能使用不能读取,因此难以伪造客户端请求;
再加上使用非对称算法,服务器端的签名也难以伪造了;
所以,强制双向验证 保护验证逻辑 保护验证密钥,于是目前暂时处于道高一丈的阶段。
可能会有老哥想到伪造,这是可以的,但是验证服务器可以伪造,验证结果却无法伪造,只能截获真的服务器结果然后重放,这就是数字签名强大的地方。
三、刷机降级
老哥们不知道有没有在刷机的时候注意到这些:
正在联系iPhone软件更新服务器。
正在验证已更新的iPhone软件。
正在验证已更新的iPhone固件。
如果是没有开通验证通道的系统版本,即使成功刷入,也不能通过激活。比如以前没有开发者权限刷beta版出现激活错误。
说起来,就是iphone刷机必须使用iTunes,而且必须联网才可以刷机。
iTunes在开始刷机之前,会检查当前iphone的型号是否允许刷入当前所选择的固件。也就是说苹果允许你刷什么才能刷什么。至于为什么不能伪造服务器,小编猜想是使用SSL证书进行验证。而苹果的SSL证书是无法伪造的,所以也就无法伪造服务器了。
所以,如果真的想伪造,除非具备以下两个条件
1、破解iTunes,干掉验证系统版本的代码;
2、搞清楚iTunes和苹果验证服务器通信的协议,并制作一个假服务器,允许刷入任何版本的固件。
四、刷机过程
小编在这里就通俗地把刷机这个过程描述一下,同时分析不能随意刷机的原因:
1、你从网上下载一个ipsw格式的固件,打开iTunes,连接手机,固件就可以刷进去了;
2、实际上,刷机过程中,数据是这么流动的:“ipsw文件 --> iTunes --> iOS设备的CPU --> iOS设备的Flash/eMMC”
3、其中非常关键的一点是:只有CPU才能把固件写到Flash/eMMC中,所以你能不能成功刷机,在于CPU同不同意。CPU不同意,你就刷不进去。
4、由于iOS设备是全盘加密的,往Flash/eMMC里写东西要先加密。这个加密密钥写在CPU内部,只有CPU才知道。而且每台设备的密钥都是不一样的。
5、所以,你没有密钥,就无法向Flash/eMMC写入正确的数据,即使把Flash/eMMC拆下来刷入也不行。
CPU的决定需要验证来自苹果服务器的固件签名,假如固件签名正确,就可以刷入固件。所以iTunes必须向苹果服务器询问这个固件的签名,提供给CPU。苹果服务器根据这个固件的真伪、版本号,来决定是否提供签名。所以,苹果服务器对你能否刷入固件是有决定权的。
可以想象以下情景:
iTunes:我要刷入这个固件
CPU:那你得提供这个固件的签名
iTunes向苹果验证服务器索要了这个固件的签名
iTunes:这是这个固件的签名
CPU:这个签名是真的!这个包可以刷入。
如果固件过期的话,会是以下情景:
iTunes:我要刷入这个固件
CPU:那你得提供这个固件的签名
iTunes向苹果验证服务器索要这个固件的签名
苹果验证服务器:这个固件过期了,所以我不能给你提供签名。(数字签名使用非对称加密技术,具有不可伪造性。所以你不能自行伪造签名)
虽然数字签名不能伪造,但是可以保存下来重放。前几年可以使用SHSH刷入旧版固件,就是这个原理。可以想象以下情景:
iTunes:我要刷入这个固件
CPU:那你得提供这个固件的签名
iTunes拿出了收藏多年的旧签名
iTunes:这是这个固件的签名
CPU:这个签名是真的!这个包可以刷入。
(实际上要搭建一个假的验证服务器,把收藏多年的旧签名提供给iTunes)
这种重放攻击是很容易避免的,所以现在SHSH已经没用了。你可以想象成以下情景:
iTunes:我要刷入这个固件
CPU:那你得提供这个固件的签名,并且签名中含有随机数fasdjhpgia;
收藏的旧签名中,随机数不是fasdjhpgia,而是另外一个,所以无法使用。
最后再来个通俗易懂的:
比如iPhone是一艘能发射核弹的潜艇,在最早期只需要舰长一声命令就可以直接发射核弹(离线升级降级时代)。
后来高层觉得不行,就要求发射核弹之前和总统通话,确认,得到确认指令后才发射(在线验证)。
但是恐怖分子(黑客)找到了一个办法,破解了总统办公室的电话线,接了一根接到自己家里。
核潜艇打电话来要发射核弹的时候,恐怖分子就会模仿总统的语气和声音从而让潜艇以为是真的。
高层还是觉得不行,首先就把电话线全部检修了一遍,安全性大幅度提升(A5以后暂时没办法)。
然后验证的时候加一串及时生成的密码,两边对上才给通过,所以除了有漏洞的设备其他暂时没办法了。
所以说,如果保存了SHSH的话,就可以降级,部分机器有boot漏洞的可以直接降级。
但这样的话不能激活,只能做到伪激活。
篇幅有限,就到这了,有关苹果的验证机制老哥们知道了吗?
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com