July 15

Проблема чипа безопасности у Google Pixel

Обнаружил на просторах Авито очень интересный Pixel 9 Pro — умер после обновления. И казалось бы, обычная ситуация. Но нет. В NOS production выбивает error (-7), а в Device state пишет error!. Мне стало очень интересно как и почему это происходит. Так что самое время разобраться и предостеречь какие методы могут спасти в такой ситуации.

Фотография мертвого пикселя

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


Первым делом рассмотрим NOS production: error (-7).

Данная ошибка сигнализирует о том, что процессор не может связаться с чипом безопасности Titan. Ошибка -7 — тайм-аут. Говоря просто — процессор не получил ответ от чипа, сколько бы не ждал этого самого ответа.

Сам по себе чип предназначен для защиты Google Pixel. Он имеет свою ОЗУ, свою ПЗУ и криптографический сопроцессор (это будет важно в дальнейшем).

Что делает чип на самом деле? Хранит в себе криптографические ключи, сверяет подписи загрузчики и подписи ядра ОС. Также он пытаетсся обезопасить смартфон от подмены прошивки, путем этих самых сравнений цифровых подписей. При несовпадении подписей он блокирует запуск системы и выдает предупреждение. На самом деле чип делает куда больше, но объяснять все это займет слишком много текста, вернемся к изначальной теме статьи.

Конкретно в этом случаем мы видим Device state: error!
Что это значит? Телефон буквально не понимает на месте ли чип в принципе. Он пытается связаться с ним по шине SPI/I2C для получения криптографического ключа, но от чипа нет ответа от слова совсем. Последствия данной ошибки: ПОЛНАЯ блокировка обращений к UFS. Телефон видит данную ситуацию как попытку обойти защиту чипа. Без доступа к чипу телефон не может расшифровать ни одного байта памяти, вместо них он видит абсолютно случайный набор байтов, фактически белый шум. Как бонус — загрузчик теряет доступ к разделам.

Как это работает? В процессорах Google Tensor присутствует аппаратный блок ICE (Inline Crypto Engine), располежен он на шине между процессором и памятью, занимается он дешифровкой и шифровкой данных по алгоритму AES. Для дешифровки ему необходим ключ шифрования, который хранится в изолированной зоне чипа Titan. При состоянии error! процессор не может получить данный ключ.

Как оживить телефон в данной ситуации? Никак. Буквально. Единственное, что ты можешь сделать — заменить материнскую плату, либо пытаться перепаять чип Titan (что вряд-ли поможет, куда проще и надежнее заменить плату). Прошив тут невозможен физически.

Почему тут невозможно просто отформатировать UFS и залить новую прошивку?

Дело в том, что UFS-память разделена на несколько логических блоков и защищенных зон.

Зона RPMB (Replay Protected Memory Block) — сверхзащищенная зона в UFS-накопителе, записать туда что-либо возможно только если запрос подписан ключом, который (ой как неожиданно) хранится в чипе Titan. Что в этой зоне находится? Счетчик попыток ввода пароля, состояние блокирвки загрузчика и хэши системных разделов.

В дополнении к ней существует Write Protection — загрузчик при старте проверяет статус RPMB. Поскольку связи с чипом безопасности нет загрузчик никак не может верифицировать подписи и авторизовать запись в системные разделы UFS. Фактически контроллер памяти в такой ситуации попросту отклоняет любые команды записи на аппаратном уровне.


Теперь рассмотрим Device state: error (-1).

Данная ошибка означает, что загрузчик не либо не получает данных от чипа, либо не может инициализировать API безопасности.

В первом случае — процессор отправляет запрос на чтение, по шине связь идет, но в ответ процессор получает только ошибку передачи данных. Это может быть как сбоем шины, то и сбоем чипа, либо вовсе отсутствием на нем питания. Если после обновления вылезла такая ошибка — вероятнее всего либо произошел скачок питания, либо перегрев чипа. Результат — чип остался с поврежденным загрузочным сектором. По итогу он остается в вечном аппаратном ступоре и не может ничего сделать. Телефон в данной ситуации считает, что чипа безопасности нет в принципе.

Единственный вариант ремонта — замена материнской платы.


Что еще в теории может помочь?

Буду честен — не питай надежды, что все будет легко, просто и тем более дешево.

Один из вариантов, который в теории мог бы помочь — Pixel Repair Tool. Выглядит как надежный, простой и полностью бесплатный вариант. Но тут мы спотыкаемся о том, что происходит под капотом. Софт физически не может проверить легально ли в целом действие прошива — он даже не понимает разблокирован ли загрузчик, а память в принципе заблокирована на аппаратном уровне.

Второй вариант — попробовать даунгрейд прошивки.

Результат? Отказано. Anti-rollback существует и активно работает.


Итоги

На самом деле такая ошибка ОГРОМНАЯ редкость, но от нее не застрахован никто. Единственная надежда — сдавать телефон по гарантии (актуально только для тех, у кого гарантия все еще активна и кто находится в любой стране, в которой Google официально предоставляет свои телефоны и сервисные центры). Если же ты в России или у тебя попросту закончилась гарантия — покупай донора, меняй плату.


Важная помарка

Всю информацию я беру из открытых источников, в том числе форумов. В некоторых пунктах могут быть ошибки, поскольку документации от Google у меня нет, я не гарантирую абсолютную точность статьи, но хотя бы попытался разобраться в ситуации и предостеречь от бесполезных потугов "починить на авось"