Саурик против Большого Брата

Вчера Саурик – автор известной каждому джейлбрейкеру Сидии и член команды Dev Team – разразился достаточно емкой Блог команды Dev Team немедленно обновился с очень настоятельной рекомендацией для всех (да, да – и тех, кто отвергает джейлбрейк!) владельцев iPhone 3GS изучить вышеупомянутую статью и следовать содержащимся в ней рекомендациям.

Наш хитроумный скрипач придумал весьма интересный способ обхода проблемы восстановления или даунгрейда всех айфонов 3GS. Однако, нельзя не отметить, что с появлением каждого нового слоя защиты, процесс джейлбрейка всё более и более усложняется для понимания простым пользователем с улицы. А засада в том, что в 3GS без постоянного внимания к этой теме, пользователь очень быстро лишится возможности джейлбрейка. А значит, что, как сие ни печально, но крайний удар Apple, при всей его дырявости, был одним из самых сильных в истории айфона.

Мы решили предоставить нашим читателям возможность самим оценить труд Джея (Саурика) Фримана, и перевели полный текст его статьи. Скажу сразу, многие моменты в ней будут понятны лишь весьма узкому кругу айманьяков, однако, даже если вы и встречаете страшные слова, похожие на ругательства – не огорчайтесь. Общий смысл от вас не ускользнёт. Да, кстати, мы также вырезали его мольбы не писать ему на почту, а идти на форум на ModMyi, т.к. лучше задайте свои вопросы по-русски на нашем форуме. Уверен, там найдётся кому вам ответить. Итак:

Кэшируем сервер электронных подписей Apple

Мне кажется, что просто сказать «Сделайте так» не так действенно, как «Сделайте так, потому что вот так-то это работает, по таким-то причинам», так как первый подход вызывает больше недопониманий, в результате выливающихся в большие проблемы. Впрочем, многие не согласятся. Именно эти люди могут использовать этот линк.

Я питаю очень мало уважения к Apple именно в связи с вышесказанным – и не делаю из этого секрета. Apple, как компания, превратилась в корпорацию лицемерия, впитавшую в себя самую суть принципов, против которых она на словах выступает. Слоган «Думай иначе» стал молчаливым укором их собственным действиям к своим продуктовым линейкам.

Очередная надежда

Apple – это не только компьютерная компания: Apple – это движение. Эта концепция была раз и навсегда вцементирована в общественное представление, когда Apple вписала себе последнее место в истории маркетинга своим роликом 1984 для Макинтоша.

Поставленный по классической Оруэлловской антиутопии, «1984», этот ролик представлял будущее, в котором все аспекты индивидуальности выбивались правителями, неусыпно бдительными, следящими из своих теле-экранов.

Мир представленного будущего со всеми людьми был окрашен в синие и серые цвета: многие верят, что мы должны были увидеть в правителях намёк на компанию IBM (* – прим. перев.), хорошо известную своей корпоративной бюрократией и вскоре обречённую на всеобщую ненависть за попытки контролировать наши мысли своими незаметно распространившимися устройствами.
Иные, включая создателя ролика, Ли Клау (Lee Clow), утверждают, что ролик воссоздаёт абстрактную борьбу «нескольких с большинством»: и эппловский Макинтош представляется символом «бунтарского порыва».[Wikipedia]

Реальный Враг

Однако, время шло, и стала очевидна истинная позиция Apple к проявлениям индивидуальности и «бунтарским порывам» в частности: они жёстко против. Настойчивость Apple в желании полностью контролировать весь опыт работы со своими продуктами звучит уж больно похоже на «сад чистой идеологии», провозглашаемый Большим Братом в их собственном рекламном ролике.
Сегодня мы празднуем первую славную годовщину создания «Инструкций по Информационной Очистке». Впервые истории Мы создали сад чистой идеологии: в котором каждый работник может цвести в полной безопасности от любых паразитов сомнений и противоречивых… мыслей.
Наша Унификация Мысли – это куда более мощное оружие, чем любой флот или армия Земли. Мы – единый Человек, с единой волей, с единой решимостью, с единым мотивом. Наши враги заспорят себя до смерти, и мы похороним их с их неразрешёнными противоречиями.
Мы восторжествуем!

Смысл Джейлбрейка

Вот почему многие из нас (уже более 10% всех пользователей iPhone) “джейлбрейкают” (*, англ. – прим. переводчика) наши девайсы: мы хотим выбора. Мы верим, что Apple твёрдо закрепили за собой лидерство в производстве мобильных аппаратных платформ и готовы поддерживать их не только покупкой самих устройств, но и многочисленных приложений в их App Store; но – и это очень важно – мы хотим большего.

Читайте также  App Store Louvre: гид по Лувру

Иногда это «только» маркетинговые ограничения: нет никаких фундаментальных причин, почему только 3G[S] может записывать видео (несмотря на то, что качество записи камеры iPhone 2G и 3G не очень высоко), или почему iPhone 2G отправлять MMS.

Точно также, таким приложениям как Google Latitude или Voice было «отказано» (Apple предпочитает говорить, что им не было отказано, они просто «не были одобрены») в App Store потому что те могут «смутить» пользователя, заменяя существующую функциональность лучшими эквивалентами.

Наша потребность «большего», впрочем, распространяется глубже: джейлбрейк не только даёт доступ к приложениям, которым было «отказано», но также использует имеющиеся инструменты для развития новых направлений. Наиболее популярные пакеты в Cидии – даже не «приложения», но «расширения»: органично врощеные модификации существующего ПО.

Поиски уязвимостей

На обычных компьютерах такая потребность не очевидна: компьютер ваш, и вы можете с ним делать всё, что захотите. Вы можете покупать для него любое железо, скачивать любые программы и модифицировать сколько влезет. Однако Apple не хочет, чтобы мы считали свои айфоны компьютерами – и не важно, насколько они похожи.
Это означает, что те из нас, кто претендует на свободу использования устройств, которые нам полноправно принадлежат, так как мы того пожелаем, будут постоянно сражаться с Apple. Каждый раз, когда они выпускают новый продукт, или просто обновление ПО для старого, мы вынуждены тратить силы на преодоление новой защиты.

Эта гонка вооружений – это то, что определяет «доморощенные» сообщества на большинстве устройств: к примеру, каждый апгрейд для PlayStation Portable приносит не только новые плюшки, но и новые ограничения, требующие от пользователей находить новые «уязвимости», чтобы одолеть новую защиту.

Что выделяет платформу iPhone из ряда – это Pwnage Tool команды Dev Team: цепь защитных механизмов этих устройств была полностью разорвана, и только изменив аппаратную составляющую, Apple может залатать все дыры, чтобы нас остановить.

Сервер Электронных Подписей

Разумеется, новое «железо» выходит каждый год, и Apple решили нанести удар посильнее с новым iPhone 3G[S]. Чем добавлять новые местные защиты, в Apple решили, что каждое восстановление ПО устройства будет проверяться на аутентичность и безопасность – самой Apple.

Это делается следующим образом: в процессе восстановления ПО пользователь видит на экране сообщение «Идёт проверка восстановления в Apple…», в течение которого используется специальный протокол вызов/ответ между айфоном и Apple: некоторая “частичная выжимка” из файлов используемой прошивки посылается на сервер, который затем решает подписывать результат… или нет.

Это позволяет Apple не только защититься от установки левых (модифицированных) прошивок на устройство, но также позволяет им , запрещая пользователям восстанавливать её на устройстве при выходе более новой версии. Для этого им достаточно отказаться снова подписывать, скажем, прошивку iPhone OS 3.0 после выхода следующей версии (в нашем случае, 3.1).

Однако, чтобы сделать эту модель безопасной, необходимо проверять, что система не стала объектом простой «атаки ответа»: при которой кто-то может сохранить копию подписи сервера Apple, а затем, возвращать её на все обращения. Это «атака новичка», и может быть легко нейтрализована огромным количеством способов.

Для Дня Пурпурного Дождя (Purple Ra1ny Day)

Эппловский механизм безопасности, однако, провалил этот тест. Вместо того, чтобы использовать простые случайные числа, они используют код, жёстко забитый в «железо» конкретного телефона. В данном случае, они выбрали т.н. ECID устройства или «уникальный идентификатор чипа» – число, идентификатор, который изначально был у любого устройства. Хотя до этого мы никогда не видели ни одного его применения.

Это означает, что предоставив ECID, любой может попросить у сервера Apple подписать любую прошивку, которая на данный момент разрешена (сервер возвращает некоторый комок данных, который включает критичную SHSH, представляющую собой хэш электронной подписи), а затем, сохранить результат на будущее.

На практике, есть только один критичный файл, для которого нам нужна электронная подпись: тот самый, с уязвимостью. 😉 Это – iBSS (* – прим. перев.), один из режимов iBoot. С такой ECID/iBSS подписью можно загрузить дырявый код и далее продолжать джейлбрейк.
По сути, именно так и действовал сервис Геохота purplera1n.com: он возвращал Вам файл, который содержал только хэш электронной подписи для файла iBSS, т.к. её «достаточно». Когда-нибудь кто-нибудь может написать утилиту, которая будет использовать этот файл.

Читайте также  iTunes Rewind 2009: лучший софт по мнению Apple

Персонализированная прошивка

Программа iTunes использует получаемые с сервера комки данных для «персонализации» файла прошивки, засовывая туда ECID, SHSH и CERT блоки, чтобы iPhone мог проверить результат. Она делает это во временной папке, в которую пользователи, в принципе, могут залезть и забрать файлы (* – прим. перев. ).

Так, многие пользователи и поступили и аккуратно добыли и iBSS, и iBEC файлы из этого механизма персонализации. По-хорошему, iBSS-файл из этого процесса содержит не больше информации, чем маленький пурпурно-дождливый файл.
Впрочем, к сожалению, то, что вы запаслись необходимой информацией, достаточной для джейлбрейка, вовсе не значит, что применить её будет легко и просто. Пока кто-нибудь не напишет специальную утилиту для джейлбрейка, которая будет использовать эти файлы, вы будете сидеть у разбитого корыта.

Ваш iPhone 3G[S] обеспечен пакетом ECID SHSH

Вместо этого, вам было бы значительно удобнее полностью сохранять ваш персонализированный файл прошивки, который использует iTunes для прошивки (или, что более реалистично, полный набор комков SHSH). После этого Вы легко сможете использовать iTunes для обычного восстановления прошивки устройства.

И эта функциональность была предложена Сидией – перед самым выходом новой прошивки (когда дверь уже неумолимо закрывалась): вам требовалось только согласиться на этот процесс, и ваш ECID использовался для получения от сервера Apple и сохранения на сервере Сидии полного набора комков данных SHSH.

Более 50 000 устройств таким образом обеспечено пакетами ECID SHSH и сейчас полностью готовы восстанавливаться на прошивку iPhoneOS 3.0 несмотря на запрет Apple.

Закрывающаяся дверь

К сожалению, из-за времени, которое потребовалось для реализации этой функциональности (понимание, как правильно решать такую задачу, далось мне не сразу), очень многие не успели проскочить в закрывающуюся дверь и получить ECID-пакеты до того, как Apple отказалась подписывать старые прошивки. Однако, несмотря на то, что все эти люди теперь не смогут откатить прошивку (и даже остаться) на 3.0 (и 3.0.1), в новой прошивке 3.1 была найдена уязвимость.

Это означает, что пользователи смогут использовать прошивку iPhoneOS 3.1 на своих 3G[S] для джейлбрейка своих устройств.

Чтобы это обеспечить, система пакетов Сидии была снова поднята, и начала сохранять пакеты, подписывая файлы прошивки 3.1 ECID’ами устройств пользователей. Это делается, чтобы подготовить каждого пользователя Cидии к следующему релизу Apple, когда те в очередной раз отрежут пути назад.

Таким образом, надеюсь, сотни тысяч пользователей будут полностью защищены против эппловских «Инструкций по Информационной Очистке».

В обход Большого Брата

Таким образом, если подвести итог, я соорудил сервер, который дублирует функциональность сервера электронной подписи Apple, заменяя живой процесс получения подписи пакетным «on file»-процессом.

Соответственно, всё, что нам требуется, это заставить iTunes его использовать. К счастью большая часть операционных систем позволяет локально перенаправить запросы к определённым серверам, используя файл с названием . Воспользовавшись этим, мы можем перенаправить запросы к эппловскому серверу электронных подписей к серверу Сидии.

Так, просто откройте файл (Windows) или (Mac OS X) и добавьте следующий код последней строкой файла:

74.208.105.171 gs.apple.com

Теперь, когда iTunes думает, что она говорит с Apple, она на самом деле говорит с Cydia. Эта нехитрая операция даст вам доступ к электронным подписям , сохраненным в пакетах на сервере Сидии.

Этот сервер также кэширует любые проходящие через него SHSH-комки (кванты подписанных данных), которые не были сохранены ранее, выступая полноценной заменой сервера Apple. Таким образом он подписывает ваше устройство на пакетный механизм «on file», снимая ограничения на будущие даунгрейды прошивки, .

Этот пункт следует подчеркнуть: даже если вы не используете джейлбрейк, и даже никогда не собирались это делать, вам следует иметь в виду этот новый пакетный сервис.

Предположим, что Apple выпустит в будущем обновление, вы его поставите, а оно сломает что-то очень важное для вас. Возможно, они сломают вашу электронную почту или список дел. Ваша работа стопорится.

Вот если бы вы могли откатиться, правильно? А вот нет, Apple вам этого не позволит. Именно в этом случае и выходит на сцену новый сервер электронных подписей: он позволяет вам восстанавливаться даже если вы отказались принимать обновления Apple. (* — прим. перев. )

Читайте также  iAd – реклама, которая всегда в тему

Дыра в 3.1

Если вы получаете от iTunes «unknown error (3002)», то скорее всего, для вашего устройства не сохранён пакет ECID SHSH для той прошивки, на которую вы хотите восстановиться (3.0). К сожалению, Apple отказалась подписывать файлы прошивки 3.0, соответственно, вы не сможете зарегистрироваться на пакетный сервис для прошивки 3.0 с помощью Сидии.

К счастью в прошивке iPhoneOS 3.1 есть ещё одна дыра. А это означает, что как только выйдет джейлбрейк для 3.1, пользователи смогут подготовиться к будущим джейлбрейкам, даже если они пропустили первую часть Мерлезонского балета и не успели сохранить подписи для 3.0 (которые я начал сохранять слишком поздно в игре 3.0).

Как только вы попытаетесь использовать сервис (или если вы разрешите Сидии «сделать вашу жизнь легче» – в Сидии «make your life easier»), вы подписываетесь на сохранение электронных подписей и Cydia HQ сделает всё возможное, чтобы сохранить вашу возможность восстановления.

Неверный формат памяти NAND

ОК, если вы используете 3.0 на 3G[S] и ваши подписи на сервере, процесс восстановления должен «просто работать». Однако, если вы уже обновились на 3.1, вы получите мерзкую ошибку: «iPhone “iPhone” не может быть восстановлен. Произошла неизвестная ошибка (1015).» (“The iPhone “iPhone” could not be restored. An unknown error occured (1015).”). Это .

Для любопытствующих о причинах – это происходит из-за того, что NAND хранилище (* – прим. перев.) в прошивке 3.1 немного реорганизовано и iBoot больше не может его парсить. Если мы достанем iRecovery и почитаем логи обмена iBoot через USB, мы увидим следующее (опечатки не мои, а Apple):

Когда в первый раз я получил такую ошибку, мы с MuscleNerd’ом всю голову сломали, думая, как сделать то, что от нас хотят: “перезагрузиться с включённым переформатированием”. Это была абсолютно бесполезная трата времени: после того, как это исправишь, он всё равно отказывался грузиться, и всё равно приходилось второй раз восстанавливаться – чтобы закончить процесс.

Однако, выяснилось, что второй раз процесс восстановления нормально сам форматирует NAND-флеш. Так что чем тратить нервы и силы на что-либо ещё, просто ещё раз запустите процесс восстановления ещё раз выбрав прошивку 3.0.

Опять не выходит

К сожалению, и это, второе, восстановление тоже пройдёт неудачно (*вздох*), и скорее всего, вы опять получите ту же самую ошибку 1015. Это .

Для тех, кому всё ещё любопытно, поясню, что происходит. Когда устройство включается, оно решает, что ему делать: ожидать инструкций от iTunes через USB или нормально грузиться. Этот выбор определяется значением NVRAM-переменной под названием auto-boot, которая в данном случае установлена в «false».

Обычно она выставляется в конце процесса восстановления, но технически мы не смогли закончить этот процесс: насколько я могу судить, это происходит из-за того, что обновление на 3.1 также ставит обновление прошивки модема (который, кстати, на данный момент неуязвим и не может быть разлочен), а версия модема при откате не может быть понижена.

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

Джейлбрейк с помощью redsn0w или purplera1n

Вы можете пойти по одному из двух путей. Первый – это использовать инструмент под названием iRecovery и ручками установить переменную auto-boot в «true», второй – это сделать джейлбрейк. (* – прим. перев.)

Мы продолжим путь по второму пути (джейлбрейк), т.к. вопрос «как заставить iRecovery на вашем компьютере» – из тех, на которые я даже не буду пытаться ответить (если честно, эта программа так и не работает на моём Windows-компьютере).
Соответственно, вы можете выбрать утилиту для джейлбрейка на ваше усмотрение, которая проведёт вас через процесс джейлбрейка и перезагрузит устройство в нормальном режиме. Поздравляю, вы только что свергли вашего оруэлловского Верховного Правителя и вернули себе контроль над своим устройством.

И, наконец, восторжествуем!
Источник: iphones.ru

Лучшее для себя