Ловушка с хешами SHSH: почему iPad 2 с 3G-модемом нельзя будет откатить на iOS 4.3.3

Вчера, разъясняя ситуацию вокруг джейлбрейка iOS 4.3.4 и перспектив отката прошивки, мы упомянули о том, что для некоторых владельцев iPad 2 даже наличие сохранённых хешей SHSH не даст им возможности в будущем снова прошиться на iOS 4.3.3 и сделать джейлбрейк через сайт http://jailbreakme.com. Сегодня мы попробуем объяснить, почему так происходит. Сразу предупреждаем, что как бы доходчиво мы не пытались бы описать проблему, ниженаписанное может вызвать взрыв мозга у новичков в сфере джейлбрейка и анлока — благодаря стараниям Apple всё действительно стало сложно.

Если у вас iPad 2 без 3G-модема, дальше можете не читать. Считайте, что вам крупно повезло, потому что при наличии сохранённых хешей SHSH от прошивки 4.3.3 вы гарантированно сможете откатиться на эту прошивку в обход всех ограничений Apple. Если у вас iPad 2 с 3G-модемом (или CDMA-модель), то всё совершенно иначе.

Итак, iPhone 4 и iPad 2 кардинально отличаются от всех предыдущих гаджетов Apple механизмом взаимодействия iOS и iTunes с бейсбендом (прошивкой модема) данных устройств. Если для всех предыдущих гаджетов откат модема был невозможен в принципе, то на iPhone 4 и iPad 2 откатить его разрешается. Но есть и обратная сторона, потому что для этих устройств серверы Apple выполняют двойную проверку хешей SHSH. Подписывается не только сама прошивка iOS, но и прошивка модема. Таким образом, откатиться на старую прошивку модема можно только в том случае, если Apple разрешает на неё откат. Например, если вы сейчас прошьётесь на бета-версию iOS 5, то модем неизбежно повысится, но если потом откатитесь на iOS 4.3.3 или iOS 4.3.4, то модем понизится обратно.

Между хешами, которыми подписывается iOS, и хешами, которыми подписывается бейсбенд, есть большая разница — хеши от модема бесполезно сохранять, потому что они генерируются по другому алгоритму и каждый раз уникальны. При генерировании хешей серверы Apple проверяют не только то, какую версию модема пытается залить iTunes в устройство, но и то, в какой версии прошивки содержится этот модем. Как раз в этом и состоит главная трудность: после того, как Apple закроет подписывание iOS 4.3.3 (а это может произойти в ближайшие часы или минуты), начать восстановление на iOS 4.3.3 на iPhone 4 и iPad 2 3G вы сможете, но процесс не дойдёт до конца. Почему?

  • первым делом iTunes начнёт сверять хеш SHSH для прошивки
  • если вы обдурите iTunes и перенаправите его на серверы Cydia, он возьмёт оттуда хеш SHSH для iOS 4.3.3, проверит его, убедится, что всё в порядке, и начнёт процедуру заливки iOS в устройство
  • где-то на 75% прошивания iTunes дойдёт до процедуры обновления модема
  • в этот раз он снова полезет на серверы за хешем SHSH, но для модема. На серверах Cydia этот хеш он не найдёт (потому что его там быть не может), а на серверах Apple он получит другой хеш, соответствующий комбинации той же версии модема и прошивки 4.3.4
  • из-за несовпадения хешей iTunes сразу же заблокирует заливку модема в устройство, и прошивание прервётся ошибкой 101x (обычно 1014)

В итоге ваш гаджет зависнет в режиме восстановления, откажется загружаться и будет упорно показывать вам шнурок с эмблемой iTunes.

А дальше вступает в силу важное различие между iPhone 4 и iPad 2:

  • для iPhone 4 есть уязвимость в бутроме (аппаратном загрузчике), которая успешно используется для джейлбрейка. Использование этой уязвимости позволяет утилите TinyUmbrella принудительно вывести гаджет из режима восстановления по нажатию кнопки Kick device out of recovery. iPhone 4 перезагрузится и будет жив, здоров и весел — с нужной вам версией прошивки и старой версией бейсбенда
  • для iPad 2 уязвимости в бутроме нет, и её появления пока не предвидится. А это означает, что никакая утилита не поможет вам вывести устройство из режима восстановления, и оно останется неработоспособным, пока вы не прошьёте его на iOS 4.3.4

В Dev Team обтекаемо намекают на то, что у них есть пара идей насчёт того, как вывести iPad 2 из режима восстановления после неудачного прошивания модема. Именно поэтому сохранение хешей для iPad 2 Wi-Fi+3G и iPad 2 CDMA имеет смысл. Правда, пока Dev Team не придумают что-то конкретное, воспользоваться этими хешами вы не сможете.

Вот и вся невесёлая история. Как видите, Apple весьма успешно портит жизнь всем джейлбрейкерам. И чем дальше, тем хуже  — как известно, на iOS 5 хеши будут сверяться не только при прошивании, но и при каждой загрузке.