Оглавление:
В начале каждого месяца Google выпускает ежемесячный бюллетень по безопасности Android и начинает отправлять обновления на телефоны Pixel. Здорово, что компания прозрачна в отношении того, что происходит и как все исправляется, даже если вы не тот человек, который любит читать исходный код.
Эти патчи проделывают огромную работу, прежде чем они будут обнародованы, и еще больше работы требуется, прежде чем они появятся на других телефонах - если они вообще появятся. Давайте посмотрим, как производится колбаса, и попробуем лучше понять, почему график исправлений безопасности немного размыт.
Сначала вы исправляете Android
Android - сложный зверь. Более 5 миллионов строк кода существует для того, чтобы помочь компаниям, которые заставляют мобильные продукты работать с полной платформой приложений, включая доступ к Google Play и другим сервисам. Это не то, что можно использовать как есть; Эти компании тратят много времени, пытаясь приспособить Android к другому программному обеспечению, которое они могут использовать для создания хорошей гомогенизированной операционной системы.
У Google есть некоторые правила относительно того, как это должно быть сделано, если компания захочет включить свои услуги, но производители долго не могут понять, как создается конечный продукт.
В этом коде появляется исправление безопасности. Кто-то, будь то специалист по безопасности или просто обычный Джо, обнаруживает в телефоне недостаток, который можно использовать для уменьшения уровня безопасности устройства. Если этот недостаток не является чем-то, что создал OEM, команда Android должна выяснить, что происходит, почему это происходит, и как исправить это с наименьшим разрушительным эффектом.
Если обнаружен недостаток безопасности, и он является частью базового кода Android, Google должен исправить его, а затем отправить его всем остальным.
Часто этот недостаток не то, что Google может исправить. Как и у нас, у Google нет доступа к микропрограммам от компаний, которые производят такие устройства, как Qualcomm или LG. Если необходимо устранить недостаток на аппаратном уровне, есть большая вероятность, что компании, которая поставляет некоторые из используемых компонентов, необходимо будет сначала внести изменения. В этом случае эти изменения передаются в Google, чтобы он мог видеть, что нужно сделать, чтобы разместить их в коде Android.
Эти изменения требуют времени, особенно если задействован поставщик оборудования. Существует исправление и тестирование, большее количество исправлений и дополнительное тестирование для каждого недостатка, указанного в исправлении. Как только Google убедится, что у них есть действительное исправление ошибки безопасности, каждой компании, производящей телефоны Android, предоставляется ранний доступ (как минимум за 30 дней до того, как Google выпустит исправление), чтобы они могли приступить к работе.
Фаза вторая
Здесь большая часть работы выполнена. Google может писать и поддерживать сам Android, но большинство устройств, которые его используют, не созданы Google. Те, которые являются - Пиксельные телефоны - также включены сюда. Аппаратное обеспечение Google является клиентом Android так же, как Samsung или Motorola.
Samsungs и LG в мобильной индустрии, которые вносят множество изменений в Android, проделали большую работу, когда пришло время объединить патч.
Все эти компании начинают работать над несколькими вещами, как только у них появляется новый код от Google. Первая - и, возможно, самая важная - часть определяет, какая часть патча не нужна. И в каждом патче есть множество вещей, которые одна компания может свободно игнорировать.
Например, если NVIDIA пришлось вносить изменения, которые были перенесены обратно в Android, никакие телефоны Samsung не нуждаются в этой части патча. Более экстремальным примером могут служить изменения, сделанные BlackBerry или Samsung, которые уже по-другому решают проблему. Поиск того, что необходимо, а что нет, может занять много времени, особенно когда компания вносит значительные изменения в определенные части операционной системы. Google расследовал обвинения в том, что OEM-производители отправляли исправления безопасности, которые не касались некоторых вещей, которые они должны иметь, и это то, что он обнаружил.
Не каждая часть патча нужна на каждом телефоне.
Как только это будет сделано, оставшаяся часть патча должна быть объединена с пользовательским кодом Android производителя, а затем собрана и протестирована. «Встроенная и протестированная» часть может стать большой головной болью, если патч нельзя просто применить, потому что он касается файлов, которые использует пользовательский код или зависит от них. Мы тоже это видим. Каждый раз, когда исправляется Bluetooth или Wi-Fi, будь то аппаратное или программное обеспечение, стоящее за ними, он будет касаться кода, который был изменен крупным OEM-производителем, который делает более привлекательную операционную систему, чем «стандартная» Android. Есть много частей Android, к которым может прикоснуться OEM.
Как только инженеры Samsung или другого поставщика получат операционную систему, которая загружается и работает, ее необходимо протестировать. И проверил еще немного. Тестирование может включать в себя привлечение сетевых инженеров от различных поставщиков услуг связи, а также включение Google и / или производителя любого компонента обратно в смесь. Это должно быть правильно. Патч, разосланный тысячам и тысячам телефонов, потенциально может нанести вред сети оператора, поглотить данные каждого пользователя или даже привести к тому, что сам телефон перестанет работать. Что-либо подобное недопустимо и должно быть найдено прежде, чем оно покинет здание.
Раскрутка
Компания, которая сделала ваш телефон, Google и, возможно, ваш оператор совместной работы, чтобы подготовить массовое обновление по беспроводной сети. Если вы когда-либо видели URL-адрес, используемый для загрузки исправления, вы заметите, что в нем есть «Google». Это связано с тем, что механизм внутри вашего телефона, который может извлекать и обрабатывать OTA-обновления, ищет патч в совершенно определенном месте. Нужно знать, что патч на 100% правильный и подписан правильной цифровой подписью. Он проверит это снова после полной загрузки патча.
Если вы купили свой телефон у оператора, у него будет много информации в течение всей жизни патча.
Ваш провайдер может иметь некоторые правила о том, когда и кто может загрузить патч, как только он выйдет в эфир, если его имя на телефоне. Такие компании, как Samsung или LG, выпускают индивидуальные версии своих самых популярных моделей для каждого оператора, что дает много информации о том, как это делается. Должен, так как его имя на коробке. Это может быть неприятно, но это имеет смысл. Если каждый в Питтсбурге (например), у которого есть телефон Samsung Galaxy S8, попытается получить патч 800 МБ в одно и то же время, сеть может рухнуть в некоторых местах. Ваш оператор сделает все, что ему нужно, чтобы поддерживать сеть.
Google также как бы задерживает развертывание OTA. Определенное количество пользователей получат патч, и через определенное время Google определяет, был ли у этих пользователей хороший опыт или плохой. Если все пойдет хорошо, большее количество пользователей получат патч во второй волне. Это повторяется несколько раз перед открытием шлюзов. Пользователи, которые не хотят ждать этого финального тестирования, могут вручную загрузить патч через настройки своего устройства.
Когда ваша очередь, и вы дали своему телефону зеленый свет, чтобы захватить этот файл, он загружается, и тогда ваш телефон берет на себя управление.
В твоих руках
Патч загружается на ваш телефон и проверяется как правильный. В старых версиях Android имеется выделенный кеш, который представляет собой раздел вашего хранилища, разделенный для таких вещей, как файл обновления; вещи, которые только временно на телефоне. Телефоны, использующие функцию бесшовного обновления Android (которые должны продаваться на большинстве телефонов с Android Nougat), «загружают» загруженные файлы в так называемые слоты. В любом случае вам нужно иметь достаточно места для извлечения и обработки файла OTA.
Телефоны со старыми версиями Android могут иметь выделенный раздел кэша, который используется во время обновления. Он должен быть в 2, 5 раза больше, чем загруженный вами файл OTA.
Программное обеспечение OTA Updater в вашем телефоне является частью Android. Сценарий в загруженном файле говорит ему, как найти файлы, которые необходимо изменить, и копирует эти файлы либо в кэш вашего устройства, либо в назначенный слот. Затем он сравнивает оригинальные файлы на вашем телефоне с файлами, которые были загружены. Некоторые могут быть простой заменой - возьмите файл X с телефона и удалите его, а затем замените его файлом X из загрузки OTA. Другие не полный файл и содержат только небольшие конкретные изменения. Программа обновления и установки вашего телефона знает, что здесь делать.
Многие файлы в Android, особенно библиотеки приложений и программного обеспечения, на самом деле представляют собой множество файлов, сжатых в специальный архив. Вы можете взять файл APK, изменить его на файл.zip и открыть его в Windows. Иногда эти архивы необходимо открывать, а их части нужно менять местами, загружая новые версии для исправления безопасности. Вот почему вам нужно это рабочее пространство в разделе кеша - именно там эти файлы извлекаются.
Многие файлы на вашем телефоне - это действительно архивы, содержащие много файлов, включая другие архивы файлов. Это сложно.
После обработки каждого файла в OTA-обновлении и внесения изменений в копии системных файлов пора запускать систему вместе с ними. Это происходит, когда телефон запрашивает перезагрузку после обработки полученного OTA, поскольку часто существуют файлы, которые необходимо исправить, но которые используются во время работы телефона. Вы можете увидеть экран, показывающий, что во время перезагрузки идет работа, или вы можете просто увидеть логотип Android. В любом случае файлы проверяются, перемещаются на место и проверяются снова. Старые файлы хранятся в кеше на случай, если возникнет проблема, и вы не сможете загрузиться с новыми файлами.
Осталось только убедиться, что все по-прежнему так, как вам нравится, и у вас есть более новая дата версии Security Patch в настройках вашего телефона. Теперь вы готовы к следующему обновлению!