iOS 7 正式版发布,快来升级吧!

查看详情 关闭

Cydia自动备份的iOS 6以上SHSH均无效

很多同学反映按照我们的「iOS 6.1.3 降级教程」操作后并没有成功降级,除了部分非 A4 设备同学没有看清楚说明就操作外,也有同学的的确确备份了低版本的 SHSH,但就是无法降级。恰好,Cydia 之父 Saurik 在他自己的博客上解释了这个问题,今天小编就来解答一下大家关于 iOS 6.1.3 降级的疑惑!

在开始正文之前,小编再多废话一句(上次废话被人喷了,但依然不能阻挡小编废话的热情):基本上,非 A4 设备 —— 即 iPhone 4S、iPhone 5、iPad 2 至 iPad 4、iPad mini、iPod touch 5 —— 备份 SHSH / APTicket 目前看来是没有啥意义的。

cydia_tss_server_center

Cydia 全新的 TSS Center

谁适合看本文

  • 虽然备份了 SHSH ,但是无法从 iOS 6.1.3 降级
  • 想了解 SHSH 工作原理
  • 想知道 iOS 降级、平刷背后的原理

名词解释

TSS(Tatsu Signing Server):验证固件恢复信息的服务器,确保你恢复的固件是最新版本的 iOS 固件

SHSH(Signature Hash):SHSH 本身是一段被哈希过后的信息,保存了你的设备信息和你需要升级的固件版本的信息混合后的数据

SHSH Blob:即我们平时所说的「备份 SHSH」过程产生的 SHSH 文件,但是核心内容还是上述 SHSH 信息   SHSH详解

APTicket:苹果在 iOS 5 引入的全新验证机制,可以把 APTicket 理解为包含了更多信息的 SHSH,引入 APTicket 是为了减少苹果 TSS 服务器的验证压力,另一方面也减少了中间人攻击的可能性

小雨伞(Tiny Umbrella):一款备份 SHSH 文件的应用程序

红雪(Redsn0w):早期用来越狱的应用程序(支持 iOS 4.x – iOS 5.x),后来有集成了 SHSH 备份等实用功能

evasi0n:iOS 6 完美越狱工具

为什么Cydia备份的SHSH无效

如果跳过一切的技术解释,简单的说就是,Cydia 在向苹果的 TSS 服务器请求 SHSH 时(其实核心是 APTicket)使用了错误的参数,导致苹果返回的 APTicket 没有包含全部的设备启动信息。这样的 SHSH 无法用来校验并通过 TSS 验证,因此说 Cydia 备份的 iOS 6.0 – iOS 6.1.2 的 SHSH 都是无效的

下面解释一些技术原理:

关于苹果引入 SHSH 的原因,之前的文章已经介绍过,这里就不再赘述了,一言以蔽之就是确保用户恢复的固件版本是苹果希望用户恢复的版本(一般来说就是最新版本)。而 SHSH 信息中包含了用户的 ECID(每款 iOS 设备独有的芯片ID),还有当前文件的信息。用户在恢复固件时,iTunes 会自动向苹果的 TSS 服务器发送请求,苹果的 TSS 服务器验证完这些信息后就返回一个 SHSH Blob,并授权本次操作。

苹果在计算 SHSH 信息时使用了 SHA-1 算法,这是一种典型的非对称加密算法,并且支持不连续的文件片段加密。也就是说,如果你需要对一个文件进行加密(获取哈希值),不需要上传整个文件到服务器,而只需要按照与服务器约定的规则上传一定的文件片段即可完成加密操作。

Cydia 在向苹果的服务器请求 SHSH 时,也选择了这样的方法,即不发送完整的文件,而只是选择苹果需要的部分文件片段来获取返回的 SHSH Blob。

但是 APTicket 的出现让 SHSH Blob 的储存过程发生了变化。为了减少发布新固件时 TSS 服务器的压力,苹果设定一次将所有需要的信息都发送并验证,这样能够显著的减少一次固件恢复操作时的请求发送。

然而 Cydia 在储存 SHSH 时却没有考虑到这一点,一直还是发送部分的文件信息来获取 SHSH Blob。那为什么 iOS 5 时代没有出现这个问题呢?因为苹果考虑到 APTicket 的后向兼容性,因此 iOS 时代 SHSH Blob 在没有完整 APTicket 的情况下依然能够使用。

我应该怎么做

整篇文章提到的问题,是 Cydia 在帮助用户保存 iOS 6.0 – iOS 6.1.2 的 SHSH 时出现了问题。如果你使用的是红雪、小雨伞等工具保存的 SHSH 文件,则无需担心这个问题。

对于 iOS 6.1.3 降级失败的同学,如果你使用的降级 SHSH 是 iOS 6.0 – iOS 6.1.2 且由 Cydia 保存(根据小编的了解,国内某些工具如 XX 助手等都使用的是 Cydia 提供的保存接口),那么你是无法使用这些 SHSH 降级的。

最好的实践方法是,使用红雪或小雨伞备份 SHSH。当然,目前 Cydia 也更新了 SHSH 的获取算法,同时支持用户将所有的 TSS 信息保存在 Cydia 的服务器上,以便日后降级或平刷。

请在 新浪微博腾讯微博人人网 关注我们,及时获得最新教程、资讯和精彩推荐!




分享本文:
更多