Android — это система, которая при выполнении ряда условий и грамотном использовании могла бы стать достаточно безопасной. В реальном же мире все портят производители. Сегодня мы рассмотрим защитные механизмы Android, призванные обеспечивать доверенную загрузку и охранять твои данные от злоумышленников, — а также изучим ошибки и не совсем ошибки производителей LG, Motorola и Samsung, сводящие пользу от этих механизмов на нет.
В предыдущем номере Евгений Зобнин опубликовал статью, продолжающую бесконечную дискуссию о безопасности мобильных операционных систем. По утверждению Евгения, «чистый» Android задумывался как достаточно безопасная система, а количество найденных в самой системе уязвимостей вполне сравнимо с числом уязвимостей ближайшего конкурента — Apple iOS.
Сегодня мы разберемся, о каких именно механизмах безопасности идет речь, и попробуем натянуть «сферический Android в вакууме» на глобус реального мира, представленный устройствами таких производителей, как Samsung, LG и Motorola (Lenovo).
Помимо технических, мы рассмотрим и политические аспекты защиты твоей информации в реальных устройствах. Если Apple не постеснялась судиться с государством за право не разрабатывать версию системы, которая могла бы использоваться спецслужбами для доступа к твоим данным, то как с этим обстоят дела у ближайшего конкурента — компании Samsung? (Спойлер: с точностью до наоборот.)
Но начнем мы все же с технологий.
Как я уже описывал в одной из статей, у безопасности мобильных устройств множество аспектов. Здесь и безопасность хранения данных, и устойчивость к взлому с помощью физических атак, и защита от кражи, и разнообразные песочницы для приложений, ограничивающие их возможность незаметно следить за тобой, собирать и передавать информацию, и многое другое. Сегодня мы остановимся только на одном аспекте, а именно — устойчивости устройств к физическим атакам, с помощью которых злоумышленник, спецслужбы или органы охраны правопорядка могут попытаться извлечь из него твои данные.
С каждым поколением устройств и с каждой новой версией мобильных ОС смартфоны становятся все более безопасными. И это не иллюзия: и Apple, и Google прикладывают все усилия, чтобы свести к минимуму возможности неавторизованного доступа к информации. Разумеется, все их действия совершаются в рамках ограничений, заданных как самой платформой, так и конкретными устройствами на ее основе.
Давай рассмотрим некоторые из этих механизмов и то, как они способствуют защите от несанкционированного доступа.
Прежде чем вдаваться в детали реализации шифрования, немного поговорим о встроенных в Android механизмах, которые призваны защитить твои данные от неразрушающих способов извлечения. Для нас представляют интерес три вещи: блокировка загрузчика (а точнее, все механизмы, способные предотвратить запуск неподписанного кода), шифрование раздела данных и пароль, который может быть установлен на смартфон.
В Android загрузчик (bootloader) — это первый код, который загружается со встроенного в телефон накопителя. Именно загрузчик содержит механизмы, с помощью которых устройство может проверить цифровую подпись и целостность загрузочного раздела, и именно загрузчик несет ответственность за загрузку телефона в систему или один из вспомогательных режимов fastboot или recovery.
Во время загрузки операционной системы загрузчик выполняет инструкции, которые передают управление ядру, записанному в раздел boot. Поскольку загрузчик — это первое, что запускается на смартфоне, именно он принимает решение о том, какой именно код будет выполняться, а какой — нет. Соответственно, защита (блокировка) загрузчика — важный элемент обеспечения безопасности цепочки загрузки.
Итак, загрузчик запускается прежде всех остальных компонентов операционной системы. Он проверяет целостность ядра, а также — если загрузчик заблокирован — аутентичность его цифровой подписи. (Разблокированный загрузчик все равно проверяет целостность и цифровую подпись ядра; просто подписать ядро можно будет не только производителю, но и сторонним разработчикам.) Если следующий компонент загрузки не проходит проверку целостности или безопасности, загрузка прервется, а пользователю будет выведено соответствующее уведомление (особенно жестко этот момент контролируется в версиях Android начиная с 7.0).
Если загрузчик заблокирован, пользователь не сможет вносить изменения в системные и загрузочные разделы, а также не сможет загрузить устройство командой fastboot boot xxx.img с помощью неподписанного образа (например, в стороннее recovery — TWRP и подобные).
Если же загрузчик разблокирован, то тебе будет доступно большинство команд из арсенала fastboot. В частности, ты сможешь загрузить устройство с использованием стороннего образа, модифицировать ядро системы или системный раздел. Именно поэтому разблокирование загрузчика — первое, что проделывают со своими устройствами разработчики и хакеры.
Казалось бы, разблокировка загрузчика — очевидный шаг для полицейского, который хочет покопаться в твоем телефоне. Но так может показаться только на первый взгляд. Во-первых, далеко не все производители позволяют разблокировать загрузчик, а те, которые позволяют, разрешают разблокировку не для каждой модели и не для каждой операторской версии. Некоторые производители предоставляют возможность официально разблокировать загрузчик только после запроса специального кода с их сайта, а некоторые (например, на устройствах линеек Nexus и Pixel, Nextbit Robin) — одной командой в fastboot.
Тем не менее использовать эту процедуру для извлечения информации не удастся: при разблокировании загрузчика уничтожаются криптографические ключи, с помощью которых зашифрован раздел пользовательских данных, и происходит сброс до заводских настроек. Не хочешь сбрасывать? Зашифрованный раздел данных ты сможешь скопировать, но расшифровать его не удастся никакими средствами.
К слову, штатной разблокировки загрузчика для устройств Apple не предусмотрено вовсе, а немногочисленные эксплоиты зорко стерегутся разработчиками: их поиск может длиться годами, а закрыть обнаруженную уязвимость для Apple — дело одной-двух недель.
Допустим, тебе каким-то образом удалось обойти блокировку загрузчика (что само по себе маловероятно) или в твои руки попал телефон с уже разблокированным загрузчиком. Теперь-то можно запустить TWRP и скопировать раздел данных? Скорее да, чем нет, но не всегда и не на всех устройствах. В Android предусмотрен дополнительный механизм защиты — как раз для таких случаев.
Независимо от того, заблокирован или разблокирован загрузчик устройства, в большинстве моделей Samsung и Motorola есть еще одно неочевидное препятствие на пути доступа к информации.
С выходом Android 5.1 разработчики Google добавили механизм, направленный на предотвращение доступа к данным и сброса устройства к заводским настройкам в случае его кражи. Основное предназначение защиты от сброса к заводским настройкам (Factory Reset Protection, FRP) не в том, чтобы защитить устройство от сброса как такового, а в том, чтобы сделать его бесполезным для злоумышленников, предотвратив возможность его активации и использования после сброса.
При активированной защите FRP злоумышленник может удалить данные и сбросить устройство, но (по крайней мере в теории — на самом деле способов обойти эту защиту существует порядочно) воспользоваться им не сможет: система начальной настройки потребует ввести учетные данные того Google Account, который использовался перед сбросом устройства.
FRP активируется автоматически во время настройки устройства при выполнении двух условий: 1) используется безопасный экран блокировки: устройство защищено PIN-кодом, паролем, паттерном или другим способом; 2) пользователь добавляет хотя бы одну учетную запись Google Account. Соответственно, при выключении безопасного экрана блокировки или при удалении учетной записи Google из настроек устройства защита FRP так же автоматически отключается.
Итак, защита от сброса к заводским настройкам — отлично задуманная (но плохо реализованная) система. Но при чем тут она? Дело в том, что ряд производителей (в частности, Samsung и Motorola) пошли чуть дальше, реализовав дополнительный защитный механизм именно через систему FRP.
Что произойдет, если злоумышленник загрузит устройство в стороннее recovery и попросту обнулит раздел frp? Или же установит прошивку без приложений Google, обойдя таким образом защиту от кражи? С разблокированным загрузчиком это вполне возможно.
Именно для защиты от подобных сценариев используется дополнительная проверка. При активированной защите от сброса к заводским настройкам FRP устройство всегда будет вести себя так, будто его загрузчик заблокирован, — даже если была произведена процедура разблокировки. Загрузить неподписанный код (стороннее recovery или прошивку) не получится.
Таким образом, даже если загрузчик смартфона разблокирован (напомним, большинство пользователей этого не делает), его все равно не удастся загрузить в стороннее recovery, если:
Совместно с защитой, предоставляемой блокировкой загрузчика, FRP способен вполне эффективно воспрепятствовать загрузке стороннего кода и извлечению данных.
Итак, способ с официальной разблокировкой загрузчика нам не подходит: при разблокировании как криптографические ключи, так и сами данные уничтожаются. Даже в том маловероятном случае, если бы удалось разблокировать устройство без потери данных, механизм защиты от сброса к заводским настройкам может помешать запуску неподписанного загрузочного образа.
В теории — в том самом «сферическом Android в вакууме» — все хорошо: система безопасна, враг не пройдет. А вот на практике… На практике бывает разное.
Cтатьи из последних выпусков журнала можно покупать отдельно только через два месяца после публикации. Чтобы читать эту статью, необходимо купить подписку.
Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта, включая эту статью. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке
1 год3200 р. Экономия 1400 рублей! |
1 месяц490 р. 25-30 статей в месяц |
Уже подписан?
Читайте также
Последние новости