Безопасность Apple Mobile Devices. Часть III. Что происходит после нажатия Power
Habr ·
Итак, в прошлой части мы остановились на мысли, что современный iPhone имеет смысл рассматривать уже не как устройство, в котором где-то лежит некий суперсекретный ключ, а как довольно сложную машину состояний, которая на каждом этапе проверяет, имеет ли следующий кусок системы право вообще существовать. Попробуем теперь пройти всю эту цепочку руками, от момента нажатия кнопки Power до запуска какого-нибудь Signal или Telegram, и посмотреть, в какой именно момент какие куски железа и софта начинают друг другу доверять. Сразу оговорюсь, что буду местами упрощать детали реализации, иначе вместо статьи получится справочник страниц на триста, но общая архитектура от этого не пострадает. Начинается все, как и раньше, с BootROM. Это тот самый маленький кусок кода, зашитый непосредственно в SoC еще на производстве и не подлежащий обновлению после того, как процессор покинул фабрику. Именно поэтому уязвимости уровня checkm8 были настолько неприятны для Apple: если ошибка находится в коде, который физически нельзя переписать, "починить" уже выпущенные устройства невозможно вообще, можно только изменить архитектуру следующего поколения железа. BootROM в данном случае является самым нижним корнем доверия основной системы. У него есть ровно одна фундаментальная задача: проверить, что следующий этап загрузки действительно подписан Apple, и только после этого передать ему управление. То есть в самом начале у нас пока нет ни iOS, ни файловой системы, ни пользовательского пароля, ни приложений, вообще ничего привычного. Есть процессор, немного ROM-кода и криптографическая проверка следующего куска. Читать далее