Операция выполнена!
Закрыть
Хабы: Информационная безопасность, Разработка мобильных приложений

23 июня 2014 года я закончил статью про безопасность мобильных устройств Apple словами "Продолжение следует...", после чего, как это иногда бывает с действительно интересными техническими вопросами, слегка увлекся другими вещами.

Прошло двенадцать лет.

И, перечитав сейчас тот текст, я обнаружил забавную вещь: несмотря на некоторое количество неизбежных для 2014 года упрощений, главную архитектурную идею я тогда ухватил довольно точно.

Безопасность iPhone была построена не вокруг существования какого-то одного особенно секретного ключа или особенно хитрого алгоритма, а вокруг цепочки взаимно зависимых состояний, где каждый следующий уровень можно получить только после того, как предыдущий доказал свое право существовать.

Кащеева смерть действительно была на игле.

Просто с тех пор Apple засунула эту иглу еще в несколько яиц, уток, зайцев, аппаратных криптографических блоков и отдельный компьютер внутри компьютера.

Начнем, однако, ровно с того места, на котором мы остановились.

В 2014 году задача выглядела следующим образом: в процессоре существует аппаратный AES GID key, сам ключ наружу не отдается, зато код, работающий достаточно рано в процессе загрузки, способен попросить железо выполнить с его помощью криптографическую операцию, следовательно, если мы получим контроль над BootROM, LLB или iBoot, мы потенциально сможем использовать сам телефон как криптографический оракул.

Именно поэтому jailbreak тех лет так сильно напоминал восхождение по загрузочной цепочке снизу вверх.

BootROM доверяет следующему загрузчику, тот доверяет iBoot, iBoot доверяет kernel, kernel доверяет подписанным процессам, а наша задача состояла не столько в том, чтобы "сломать шифрование", сколько в том, чтобы в подходящем месте подменить ответ на вопрос "этому коду можно доверять?".

Читать далее
Читайте также
НОВОСТИ

ПИШИТЕ

Техническая поддержка проекта ВсеТут

info@vsetut.pro