Что такое шифрование в планшете
О безопасности и уязвимостях Android написаны десятки тысяч статей и сотни книг. Разумеется, мы не будем пытаться объять необъятное; вместо этого попробуем окинуть взглядом экосистему в целом и подход Google к обеспечению безопасности платформы.
Парадоксально, но факт. Будучи самой распространённой мобильной ОС, в экосистеме Android нет ни одного устройства, сравнимого по популярности с любой моделью от Apple. Десятки тысяч моделей, тысячи прошивок, чехарда с версиями Android и невнятная политика обновлений привели к потрясающей воображение фрагментации экосистемы, объединённой по большому счёту лишь названием.
До какого-то момента Android был не только самой распространённой, но и наименее безопасной мобильной ОС. До версии 4.4 (а это – 2013 год) безопасность системы обсуждать было бессмысленно: отсутствие шифрования по умолчанию и очень слабые опциональные алгоритмы делали смартфоны с этой ОС уязвимыми для целого ряда атак. Минимально приемлемый уровень безопасности в Android был достигнут только с версией 6.0, причём только в тех устройствах, которые выходили с завода уже с Android 6.0 на борту. В последующих версиях системы Google последовательно ужесточал требования к безопасности. Последним нововведением, которое появилось в Android 9, стало шифрование «облачных» резервных копий устройств ключом, который зависел от кода блокировки экрана.
Что нужно знать перед тем как зашифровать Android устройство
В большинстве новых устройств шифрование включено по-умолчанию. Если у Вас как раз такое устройство, то шифрование отключить не получится. Но, если Вы используете гаджет, в котором шифрование не включено, то перед использованием этой функции стоит знать о следующем:
- Более медленная работа : Один раз зашифровав данные, их нужно будет расшифровывать каждый раз, когда потребуется доступ к данным. Поэтому Вы можете увидеть небольшое падение производительности, хотя это вообще не заметно для большинства пользователей (особенно если у вас мощный телефон).
- Отключение шифрования : Если Вы включите шифрование, то единственный способ его выключить — это сброс к заводским настройкам .
- Если уна устройстве получены root права, то их нужно удалить : Если Вы попытаетесь зашифровать Android устройство, на котором есть права суперпользователя, то Вы столкнетесь с некоторыми проблемами. Вам нужно сначала удалить root права , зашифровать устройство и снова получить права суперпользователя.
Это не означает, что мы отговариваем Вас от шифрования, мы пытаемся объяснить все нюансы этого процесса.
Как взламываются незашифрованные телефоны
Не будем углубляться в детали, просто имей в виду: данные с незашифрованного телефона можно извлечь почти в ста процентах случаев. «Почти» здесь относится скорее к случаям, когда телефон попытались физически повредить или уничтожить непосредственно перед снятием данных. Во многих устройствах Android и Windows Phone есть сервисный режим, позволяющий слить все данные из памяти аппарата через обычный USB-кабель. Это касается большинства устройств на платформе Qualcomm (режим HS-USB, работающий даже тогда, когда загрузчик заблокирован), на китайских смартфонах с процессорами MediaTek (MTK), Spreadtrum и Allwinner (если разблокирован загрузчик), а также всех смартфонов производства LG (там вообще удобный сервисный режим, позволяющий слить данные даже с «окирпиченного» устройства).
Но даже если в телефоне и нет сервисного «черного хода», данные из устройства все равно можно получить, разобрав аппарат и подключившись к тестовому порту JTAG. В самых запущенных случаях из устройства извлекается чип eMMC, который вставляется в простейший и очень дешевый адаптер и работает по тому же протоколу, что и самая обычная SD-карта. Если данные не были зашифрованы, из телефона легко извлекается вообще все вплоть до маркеров аутентификации, предоставляющих доступ к твоим облачным хранилищам.
А если шифрование было включено? В старых версиях Android (до 4.4 включительно) и это можно было обойти (за исключением, правда, аппаратов производства Samsung). А вот в Android 5.0 наконец появился режим стойкого шифрования. Но так ли он полезен, как полагает Google? Попробуем разобраться.
Android 7.0
Nexus 6, Android 7 и шифрование
Несмотря на тестовый статус сборки, что-то в этой версии явно подкрутили. Скорость последовательного чтения данных с зашифрованного раздела подросла с жалких 25 Мбайт/с до чуть менее жалких 39. Почему «жалких»? Даже если сравнивать со скоростью работы аналогичного устройства с выключенным шифрованием в 126 Мбайт/с, получается трехкратное падение производительности. А если сравнить со стареньким, 2013 года iPhone 5S под управлением iOS? Обратимся к AnandTech:
Nexus 6 vs iPhone 5S
Разница в скорости чтения данных с зашифрованного Nexus 6 и зашифрованного iPhone 5S — пять раз. Вопрос можно закрывать.
Заключение
Включать или не включать шифрование на смартфонах Android — дело пока еще добровольное. Старые версии платформы предоставляют пользователям полную свободу: воспользоваться шифрованием и терпеть резко упавшую производительность и повышенный разряд аккумулятора или не защищать данные совсем. Закрытая ОС от Apple подобной свободы не предлагает, в обязательном порядке шифруя данные без каких-либо негативных последствий для производительности дисковой подсистемы и дополнительной нагрузки на аккумулятор.
Впрочем, окно возможностей рисковать персональными данными вот-вот закроется и для любителей свободной ОС, ведь, начиная с шестой версии Android, Google собирается требовать от производителей обязательного включения шифрования из коробки. Учитывая, что с точки зрения Google виноград так и не созрел, использование аппаратного ускорения шифрования владельцам большинства устройств не грозит (впрочем, Samsung может удивить, самостоятельно реализовав то, чего не смогли достигнуть в Google. Вся история шифрования на платформе Android прямо-таки кричит об этом; однако это тема для отдельной статьи). Отдельные производители, такие как OnePlus, могут порадовать хорошей реализацией крипто в реальных сценариях использования, так что, если защита персональных данных для тебя не пустой звук, ты знаешь, куда смотреть. Если же выбирать между горьким и соленым не хочется, почему бы не обратить внимание на устройства яблочной компании?
Стойкий пароль шифрования
Большинство пользователей задает короткий пароль на смартфоне или планшете, поскольку им часто приходится его вводить. Проблема в том, что в Android используется один пароль для всех операций, включая разблокировку экрана и расшифровку данных. Приложение EncPassChanger позволяет установить раздельные пароли и повысить криптостойкость схемы хранения мастер-ключа, которым шифруются данные пользователя. Приложение работает на Android 4.0.3 и выше (требуется root).
EncPassChanger
Пользовательские данные шифруются мастер-ключом, а соль и пин-код служат только для того, чтобы хранить сам мастер-ключ в зашифрованном виде. Поэтому смена пароля не приводит к перешифровке всех данных. Ключ всегда остается один и тот же (сгенерированный изначально), а новый пароль лишь меняет его криптографическую оболочку. Разберем эту схему подробнее.
Именно с помощью DEK в конечном счете шифруются все данные на пользовательском разделе /data. Как именно выглядит этот ключ, владелец устройства не знает. Он никогда не вводит его и даже не может считать штатными средствами.
В ранних версиях Android (до 5.0) мастер-ключ и настройки шифрования хранились в отдельной незашифрованной структуре crypto footer (упрощенный аналог LUKS) в начале зашифрованного раздела data. Сам DEX шифровался другим ключом, вычисляемым на основе пользовательского пароля и соли.
Такой способ не обеспечивал защиту от брутфорса мастер-ключа на внешних вычислительных системах, поэтому в Android 5.0 и выше появилось новое требование к производителям устройств: предоставлять на аппаратном уровне защищенное хранилище ключей. Дополнительно DEK стал подписываться с использованием еще одного ключа (HBK — hardware-bound private key), специфичного для данного устройства. Он захардкожен на этапе производства и не доступен ни одному пользовательскому процессу.
Можно ли сделать Android действительно безопасным?
Если телефон находится в руках ребёнка, бабушки или человека, который увлекается чем угодно, только не вопросами безопасности мобильных операционных систем – нет. В руках неспециалиста телефон на Android никогда не станет безопасным, даже если это Samsung с активированным KNOX. Причина? Слишком много зловредных приложений, которые слишком легко устанавливаются в телефон. Слишком большая для среднего пользователя степень свободы, позволяющая убрать раздражающие средства безопасности, отключить шифрование на этапе загрузки, активировать установку приложений из сторонних источников и проделать массу других вещей, которые специалисту трудно представить.
Если же устройство дать в руки специалисту, и устройство это – актуальный флагман одного из избранных производителей, не пренебрегающих ежемесячными патчами безопасности, то при должной настройке (запрет Smart Lock, шифрование с обязательным запросом пароля для дальнейшей загрузки устройства – не путать с PIN-кодом разблокировки!, использование административной политики, жёстко запрещающей установку из сторонних источников, запрет оверлеев и сервисов Accessibility, постоянный контроль за тем, какую информацию мы разрешаем о себе собирать и кому именно) устройством вполне можно пользоваться.
Небезопасные механизмы разблокировки экрана
Казалось бы, что может пойти не так с такой простой вещью, как разблокировка экрана? Оказывается, многое. В Android встречаются любые, самые небезопасные способы аутентификации. Самый распространённый из них – эконом-вариант биометрической системы Apple Face ID. Во многих смартфонах с Android присутствует режим разблокировки по лицу пользователя, использующий единственную камеру и естественное освещение. Такие системы обманываются в лучшем случае трёхмерной моделью, а в худшем – обычной фотографией.
Режим Smart Lock, присутствующий во всех без исключения телефонах с Android, поддерживает автоматическое разблокирование телефона по местоположению (представим ситуацию, в которой ФБР не приходится платить миллион долларов за взлом iPhone 5c – вместо этого агент просто дошёл до дома подозреваемого). Или разблокирование при соединении с доверенным Bluetooth-устройством (агент включает трекер активности или магнитолу в машине подозреваемого). Некоторые способы можно запретить с помощью корпоративной политики безопасности, но для их запрета необходимо перечислить их в явном виде. Администратор забыл запретить разблокировку по Bluetooth-устройствам? Пользователи непременно воспользуются лазейкой. Если появится новый небезопасный способ разблокировки – его придётся запрещать дополнительно.
Исторически целью этих методов была попытка заставить пользователей устройств без датчика отпечатков пальцев устанавливать код блокировки. Однако вред от таких способов катастрофический: пользователю внушается ложное чувство безопасности, на самом же деле «защитой» подобные способы можно назвать лишь в кавычках. Более того, Smart Lock остаётся доступным даже в последних сборках Android и даже в устройствах, оборудованных безопасными биометрическими сканерами.
Полнодисковое шифрование (FDE)
Впервые полнодисковое шифрование (full disk encryption — FDE) пытались внедрить еще в планшетной версии Android 3.0 Honeycomb. Тогда вместе с ядром Linux 2.6.36 в ней появился модуль dm-crypt, обеспечивающий возможность шифрования на любом блочном устройстве хранения данных (включая NAND Flash). В универсальной четвертой версии Android шифрование также было доступно, однако для большинства оно оставалось невостребованной опцией. Из-за отсутствия программных оптимизаций и низкой скорости встраиваемых процессоров того времени включение шифрования приводило к падению производительности ввода-вывода в 6–8 раз на топовых моделях и до 20 раз на бюджетных.
Другие статьи в выпуске:
Именно в пятой версии Андроида появился флаг forceencrypt fstab, указывающий на необходимость активации шифрования при первом включении устройства. Обрати внимание: есть принципиальная разница между тем, было ли устройство обновлено до Android 5.x или новее либо сразу выпускалось с такой версией. Во втором случае шифрование данных будет выполняться всегда. В первом варианте (при обновлении) оно останется опциональным и может быть отключено сбросом до заводских настроек (factory reset).
В общем случае для полнодискового шифрования в Android используются три битовые последовательности: мастер-ключ, соль и пользовательский пин-код. Мастер-ключ и соль генерируются автоматически, а пин-код вводится владельцем устройства. Роль пин-кода может также выполнять пароль, графический ключ или любой другой «секрет» — для процессора это все равно битовая последовательность, причем довольно короткая.
А что у Apple?
А у Apple все хорошо. Даже ФБР не смогло заставить компанию взломать собственную систему. Впрочем, совместными усилиями спецслужб и специализированных компаний после долгой шумихи и неудавшегося судебного процесса одно старенькое устройство, не оборудованное даже Secure Enclave, все-таки вскрыли.
Начиная с iPhone 5S, iPad mini 2 и iPad Air, шифрование данных — неотъемлемая часть подсистемы безопасности Secure Enclave. Сам процесс шифрования переложен с больших и горячих ядер основного процессора на энергоэффективный выделенный модуль. Результат? В iPhone 5S скорость последовательного чтения данных — 183 Мбайт/с, а в iPhone 6 — уже 249. И это без какого-либо заметного влияния на скорость работы устройства или время жизни от батарейки.
WARNING
Экосистема Android — это зоопарк аппаратных платформ, прошивок и версий, в каждой из которых есть свои существенные отличия. Статья описывает лишь общие принципы шифрования, реализованные Google в самой ОС.
Зачем может потребоваться зашифровать Android устройство
Шифрование хранит данные Вашего телефона в не читаемой форме. Для выполнения низкоуровневых функций шифрования, Android использует dm-crypt, который представляет собой стандартную систему шифрования диска в ядре Linux. Эта же технология используется в различных дистрибутивах Linux. Когда вы вводите PIN-код, пароль или графический ключ на экране блокировки, телефон расшифровывает данные, что делает их понятными. Кто не знает PIN код или пароль, тот не сможет получить доступ к Вашим данным. На Android 5.1 и выше шифрование не требует наличие PIN-кода или пароля, но настоятельно рекомендуется, так как при их отсутствии снижается эффективность шифрования.
Шифрование защищает конфиденциальные данные на Вашем телефоне. Например, корпорации с конфиденциальными бизнес-данными на телефонах компании хотят использовать шифрование (с защищенной блокировкой экрана) для защиты данных от промышленного шпионажа. Злоумышленник не сможет получить доступ к данным без ключа шифрования, хотя бывают и продвинутые методы взлома, которые делают это возможным.
Обычный пользователь думает, что у него нет никакой важной информации. Если Ваш телефон украдут, то вор будет иметь доступ к Вашей почте, сможет узнать Ваш домашний адрес и иметь доступ к другой личной информации. Согласен, большинство воров не смогут получить доступ к личной информации, если на смартфоне будет установлен обычный код разблокировки, даже без шифрования. И большинство воров интересует продажа Вашего устройства, а не личные данные. Но никогда не помешает защитить свои данные.
Заключение
Для большинства пользователей будет вполне достаточно того уровня безопасности, который предлагает Android – разумеется, при условии, что на устройстве установлен PIN-код с минимальной длиной в 6 цифр и включён датчик отпечатков пальцев; если не используются небезопасные методы разблокировки по лицу; если нет root и заблокирован загрузчик; если активировано полнодисковое шифрование и включён Secure Startup или в устройстве используется пофайловое шифрование FBE; если отключены все небезопасные способы аутентификации Smart Lock; если… Впрочем, обо всём этом и о многом другом читайте в нашей следующей статье.
Будь в курсе последних новостей из мира гаджетов и технологий
Как включить шифрование в Android
Прежде чем начать, есть несколько вещей, которые стоит знать:
- Шифрование устройства может занять час или больше.
- Устройство должно быть заряжено не меньше, чем на 80%, иначе Android просто не будет выполнять процесс шифрования.
- Ваше устройство должно быть включено в течение всего процесса.
- Если на устройстве получены root права, обязательно удалите их перед продолжением!
Убедитесь, что у Вас достаточно времени и зарядки батареи. Если Вы вмешаетесь в процесс шифрования или завершите процесс самостоятельно, то Вы можете потерять все данные . Как только процесс начнется, лучше просто оставить устройство в покое и позволять ему сделать свое дело.
Будем считать, что все правила прочитаны и можно начать.
Откройте меню, перейдите в настройки и нажмите на пункт «Безопасность». Имейте ввиду, что на различных устройствах этот пункт может иметь различные названия. Некоторые устройства позволяют также зашифровать SD карту, но по-умолчанию зашифруется только внутренняя память.
Если устройство еще не зашифровано Вы можете нажать на пункт «Зашифровать устройство» для начала процесса шифрования.
На следующем экране будет предупреждение, чтобы вы знали, чего ожидать после того, как процесс закончится. Большинство уже было описано в данной статье. Если Вы готовы продолжить, нажмите кнопку «Зашифровать устройство».
Появится еще одно предупреждение, которое спросит действительно ли Вы хотите зашифровать устройство. Если Вы не передумали, то нажимайте на «Зашифровать устройство».
После этого телефон перезагрузится и начнется процесс шифрования. Прогресс-бар и время до завершения операции покажут, сколько Вы будете без своего телефона.
После окончания процесса телефон перезагрузится и им снова можно будет пользоваться. Вы должны будете ввести пароль или PIN-код разблокировки экрана, чтобы завершить процесс загрузки. Если у Вас не был включен пароль или PIN-код разблокировки, то система предложит задать их перед тем как зашифровать Android устройство. Для этого необходимо зайти в Настройки -> Безопасность -> Блокировка экрана и выбрать тип блокировки.
Обращаем Ваше внимание на то, что если у вас установлен сканер отпечатка пальца, то вам все равно нужно установить пароль, PIN-код, или графический ключ, так как с помощью них можно разблокировать устройство при первой загрузке.
С этого момента Ваше устройство будет зашифровано, но если Вы хотите отключить шифрование, Вы можете сделать это, выполнив сброс до заводских настроек . Если у Вас включено шифрование «из коробки», то отключить его уже нельзя, даже через сброс до заводских настроек.
Смартфон и планшет — идеальные сборщики приватной информации. Ее приходится оберегать от приложений со шпионскими замашками, троянов-банкеров, обычных воров, да и просто чрезмерно любопытных коллег. Надежно сделать это можно только с помощью шифрования, но могут ли доступные в Android средства обеспечить должный уровень защиты? Этой статьей мы начинаем новый цикл о защите данных в Android и сегодня поговорим о стойкости встроенных в ОС криптографических систем.
Как работает FDE
Поэтапно схема создания ключей для шифрования пользовательских данных в Android 5.0 и выше выглядит так:
- Гаджет при первом включении генерирует два числа длиной 128 бит. В дальнейшем они используются как мастер-ключ и соль.
- Пользователя просят задать пароль.
- На основе введенного пароля функция scrypt запускает формирование первого промежуточного ключа (IK1) длиной 256 бит.
- IK1 дополняется нулями так, чтобы соответствовать по длине аппаратному ключу HBK.
- Модифицированный ключ IK1 подписывается ключом HBK.
- Подписанный ключ IK1 используется как второй промежуточный ключ (IK2).
- Функция scrypt запускает формирование третьего промежуточного ключа (IK3), используя для его генерации IK2 и соль как входные аргументы.
- Первые 128 бит IK3 используются как KEK (key encryption key — ключ шифрования мастер-ключа).
- Мастер-ключ шифруется ключом KEK по алгоритму AES в режиме сцепления блоков шифртекста (CBC). Поскольку в данном режиме одинаковые исходные блоки дают одинаковый шифртекст, для затруднения атаки на основе подобранного шифртекста в качестве данных первого блока используется случайная последовательность (вектор инициализации).
- Зашифрованный мастер-ключ сохраняется в аппаратно изолированной области.
Мастер-ключ используется для шифрования всего содержимого пользовательского раздела во встроенной памяти устройства. Для каждого сектора генерируется свой вектор инициализации с солью и указанием номера сектора (ESSIV). При вводе пользовательского пароля мастер-ключ расшифровывается, и далее пользовательские данные автоматически расшифровываются в фоне.
Недоступность всех ключей для прямого считывания (например, запущенным на устройстве скриптом) обеспечивается их обработкой только внутри изолированной доверенной среды исполнения (trusted execution environment — TEE). В процессорах архитектуры ARM роль TEE выполняет TrustZone, которая обеспечивает контроль целостности данных, их защищенное хранение и изолированное выполнение кода. В ней же хранятся и промежуточные значения, вычисляемые функцией формирования ключа.
Как хранение ключа, так и все ключевые криптографические процедуры в современных версиях Android должны выполняться в изолированной среде, недоступной пользователю и приложениям. На практике же это условие соблюдается не всегда, поскольку Android работает на совершенно разных платформах. Концептуально их три: ARM, Intel x86 и MIPS. В каждой из них есть свои архитектурные ветвления, которые добавляют путаницы. Более того, на базе одних и тех же ядер (например, ARM Cortex-A53) каждый производитель, обладающий лицензией на архитектуру (architectural license), может сделать свою версию однокристальной системы с любыми нестандартными свойствами.
Именно из-за такого разнообразия платформ Google до сих пор не может обеспечить единый фундамент для шифрования, как это сделала Apple еще в 2013 году (см. Secure Enclave). Сегодня в устройствах под управлением Android либо защищенного хранилища ключей нет вовсе, либо оно не имеет надежной реализации.
Например, в чипах Qualcomm Snapdragon используется собственная реализация аппаратно изолированного окружения — QSEE (Qualcomm secure execution environment). В нем запускаются доверенные обработчики (trustlets), включая модуль обработки ключей (KeyMaster). Как показал этим летом Гэл Беньямини (Gal Beniamini), в QSEE по факту нет полной аппаратной изоляции. Атакующий может запустить свой код в пространстве QSEE. При этом он станет доверенным и автоматически повысит привилегии, после чего сможет считать через KeyMaster как зашифрованный мастер-ключ, так и захардкоженный ключ HBK.
Беньямини опубликовал скрипт для извлечения ключей с устройств на базе Qualcomm Snapdragon и дальнейшие инструкции по подбору пользовательского пароля перебором. Брутфорс не представляет сложности, так как у основной массы пользователей короткие пароли. Поскольку атака перебором выполняется не на смартфоне, а на любом компьютере с помощью скрипта, встроенные средства защиты от брутфорса оказываются бессильны. При внешнем брутфорсе не возникает ни проблем с принудительными задержками, ни риска стирания данных после N неудачных попыток.
Включаем шифрование
Использовать же длинный комплексный пароль на практике слишком неудобно. Можно придумать сколь угодно сложный, но представь, что при каждой разблокировке экрана придется вводить эту абракадабру. Аутентификация по отпечатку или распознаванию лица мало меняет ситуацию, поскольку это лишь дополнительные способы авторизации, созданные для удобства. В любом случае ключ DEK будет зашифрован каким-то коротким битовым набором.
Сказанное выше не означает, что калифорнийский разработчик однокристалок так уж плох. Просто продукция Qualcomm чаще подвергается стороннему аудиту. В устройствах с другими SoC дела обстоят не лучше. В частности, уязвимость доверенной среды исполнения (TEE) в однокристалках HiSilicon подробно разбиралась на прошлогодней конференции Black Hat.
Недостатки полнодискового шифрования известны давно. Применительно к Android и dm-crypt я бы выделил следующие принципиальные моменты:
- FDE работает на уровне секторов, а значит, совместимо только с дисковыми файловыми системами. JFFS2, YAFFS и другие работающие напрямую с чипами NAND ФС остаются в стороне.
- Посекторное шифрование сводит на нет все оптимизации, реализованные на уровне драйверов файловых систем. Множество приложений постоянно пишут логи и считывают свои данные. Это приводит к тому, что устройство практически непрерывно расшифровывает секторы и зашифровывает их вновь, модифицируя содержимое раздела. Поэтому FDE всегда приводит к заметному падению производительности и сокращению времени автономной работы устройства.
- FDE не поддерживает проверку подлинности содержимого секторов. Их слишком много, и среди них время от времени появляются сбойные, переназначаемые контроллером в резервную область.
- Криптографическая схема AES-CBC-ESSIV считается уязвимой к утечке данных, так как допускает определение точки их изменения. Она позволяет выполнять атаки по типу подмены и перемещения.
- FDE окажется совершенно бесполезно, если ты лишишься устройства в тот момент, когда оно будет разблокировано.
К счастью, полнодисковое шифрование не единственный вариант защиты данных в Android.
Зачем шифровать телефон?
Честному человеку скрывать нечего — популярнейшей лейтмотив, который звучит после каждой публикации на тему защиты данных. «Мне скрывать нечего», — говорят многие пользователи. Увы, но гораздо чаще под этим подразумевается всего лишь уверенность в том, что уж в данные конкретного Васи Пупкина никто не потрудится залезть, ибо кому они вообще интересны? Практика показывает, что это не так. Далеко ходить не станем: буквально на прошлой неделе увольнением завершилась карьера школьной учительницы, которая на минутку оставила телефон на столе. Ученики мгновенно разблокировали аппарат и извлекли из него фотографии учительницы в виде, который осуждается пуританской моралью американского общества. Инцидент послужил достаточным основанием для увольнения учительницы. Подобные истории происходят чуть ли не ежедневно.
Защита от низкоуровневого доступа
Большинство телефонов с Android поставляется с незакрытыми режимами сервисного доступа к памяти, которые изначально создавались для прошивки устройств в случае неисправности. Эти же режимы можно использовать и для извлечения данных из устройства, даже если оно выключено или заблокировано. В частности, это присуще большей части процессоров Qualcomm (режимы 9006 и 9008), практически всем MediaTek, Rockchip, Allwinner, Spreadtrum, некоторым устройствам на основе Samsung Exynos. Собственный низкоуровневый сервисный протокол есть в телефонах LG, и воспользоваться им для извлечения данных -–дело техники.
Использование сервисного режима для кражи данных не оставляет следов. Защититься от кражи информации через сервисный режим довольно просто: достаточно убедиться, что на телефоне включено шифрование данных (напомним, в устройствах, вышедших с завода с Android 6 или более новой версией шифрование активировано по умолчанию).
Зачем нужно полное шифрование и как оно влияет на производительность Android-устройств?
Одним из нововведений в пятой версии Android стала возможность полного шифрования содержимого памяти устройства. Теоретически оно полностью исключает несанкционированный доступ к файлам на утерянном или украденном смартфоне или планшете в том случае, если вход в операционную систему защищен паролем. Кроме того, шифрование предотвращает кражу данных вирусными приложениями и троянами. Даже если злоумышленник похитит какую-либо информацию, он не сможет ее прочитать, поскольку ключ шифрования генерируется каждый раз при включении устройства.
Изначально Google обязывала производителей активировать полное шифрование на всех устройствах с Lollipop, но в начале марта внесла изменения в программу «Android Compatibility». Теперь в ней указано, что производителям рекомендуется включать полное шифрование, но это не обязательно. Известно, что на Google Nexus 6 и Nexus 9 установлена эта защита, а на Motorola Moto E и Samsung Galaxy S6 она по умолчанию отключена.
Полное шифрование помогает уберечь личные данные от посторонних, но негативно сказывается на производительности устройства. Например, Galaxy S6 и Galaxy S6 Edge с включенным шифрованием показывают в AnTuTu лишь 48 тысяч баллов, а без него около 70 тысяч.
Показания бенчмарков это одно, а то, насколько быстро устройство работает в реальной жизни, совсем другое. Некоторые люди могут свыкнуться с небольшими подвисаниями, а другие не могут, поэтому включать или не включать полное шифрование — личное дело каждого пользователя. Если вам важнее конфиденциальность данных, лучше включите его. А если вы не храните на смартфоне или планшете ничего, что могло бы поставить вас в неловкое положение, его можно не включать (или отключить) — в этом случае вы можете заметить рост производительности устройства.
Проверить, включено ли у вас шифрование, можно в системных настройках. Если вы решите зашифровать данные, найдите в настройках соответствующий пункт и укажите пароль, который впоследствии будет использоваться для отмены шифрования. Устройство перезапустится, начнет шифрование и включится через несколько минут. Сколько времени это займет, зависит от объема обрабатываемых данных. Содержимое карты памяти тоже можно зашифровать, но после этого она перестанет считываться другими устройствами.
Отменить шифрование можно в этом же пункте меню. Потребуется ввести пароль, который вы указали ранее, после чего устройство перезагрузится, снимет шифровку и снова включится. Имейте в виду, что все личные данные и установленные приложения при этом сотрутся.
Отключать шифрование на Nexus 6 и Nexus 9 не рекомендуется, поскольку этот процесс запускает разблокировку загрузчика, что в редких случаях вызывает поломку устройства.
Впервые Google позволила зашифровать Android устройства в Android Gingerbread (2.3.х), но данная функция претерпела некоторые значительные изменения с тех пор. На некоторых смартфонах под управлением lollipop (5.X) и выше можно пользоваться функцией шифрования, что называется, из коробки, в то время как на некоторых старых или бюджетных устройствах Вам придется включать ее самостоятельно.
Аппаратная поддержка шифрования
Если не останавливаться на специфических однокристалках вроде Nvidia Tegra Parker (четыре ядра Cortex-A57) и процессорах 2014–2015 года от Intel (Atom Z3560, Z3570, Z3580, Z3590, архитектура x86-64), то в сухом остатке имеем следующие чипы:
- Qualcomm Snapdragon 625 (MSM8953), 820 (MSM8996) и 821 (MSM8996 Pro);
- Samsung Exynos 7420, 7570, 7870 и 8890;
- MediaTek Helio X20(MT6797), X25 (MT6797T) и X30;
- HiSilicon Kirin 650, 950, 955 и 960.
Все они построены на базе 4–8 ядер ARM Cortex-A53 с опциональным дополнением в виде 2–4 более мощных ядер Cortex-A57/A72/A73 или их фирменных модификаций (Qualcomm Kyro, Samsung Mongoose).
Последние версии Android могут работать и на некоторых других процессорах, однако в таком случае придется сильно жертвовать либо скоростью, либо продолжительностью работы от одной зарядки. Большинство же других старых однокристалок в принципе не удовлетворяют минимальным системным требованиям ОС Android 5.1 и выше. Поэтому смартфоны и планшеты с ними больше не получат обновлений — это не только маркетинговое решение.
При использовании FBE каждый файл может быть зашифрован своим ключом и расшифрован независимо от остальных. Эта функция работает вместе с другой новинкой седьмого «Андроида» — прямой загрузкой (Direct Boot).
Direct Boot API обеспечивает более деликатное отделение приватных данных от прочих файлов. Он предоставляет ту функциональность, которая была недоступна при использовании полнодискового шифрования.
До появления Android 7.0 при активации FDE все данные хранились зашифрованными общим паролем, поэтому смартфоном невозможно было пользоваться до ввода пароля. Теперь же отдельные приложения (например, будильник) можно сделать доступными прямо на экране блокировки. Они будут работать без авторизации со своими заранее заданными ограничениями, а все пользовательские данные тем временем останутся зашифрованными.
На устройстве с активным пофайловым шифрованием у пользователя появляется две области хранения данных приложений: зашифрованная отдельным паролем (Credential Encrypted — CE) и зашифрованная общим ключом устройства (Device Encrypted — DE). При отключении FBE обе области (CE и DE) остаются открытыми для любого приложения. При активном шифровании файлы области CE расшифровываются только после ввода пользовательского пароля. Файлы DE могут быть расшифрованы сразу после загрузки. Заодно раздельные пароли на каждый аккаунт позволяют создавать на одном устройстве несколько изолированных пользовательских учеток — например, для детей и ведущих себя подобно детям сотрудников.
Шифрование области CE происходит по алгоритму AES, но уже в другом режиме — XTS. Он разрабатывался специально для шифрования на блочных устройствах и не имеет типичных для режима CBC уязвимостей. В частности, XTS не позволяет определить точку изменения данных, не подвержен утечке данных, устойчив к атакам подмены и перемещения.
С другой стороны, FBE уязвим к side channel атакам, так как, несмотря на шифрование файлов и их имен, он оставляет открытыми метаданные, что можно использовать для выяснения типа хранимой информации и идентификации пользователя устройства.
С Nexus 6 что-то не так
Устройства линейки Nexus интересны в первую очередь тем, что прошивки для них доступны в виде исходных кодов и могут быть исследованы и модифицированы независимыми разработчиками. Один из них сумел активировать аппаратный ускоритель шифрования в Nexus 6. Результат. обескураживающий. Даже с активированным криптосопроцессором Nexus 6 демонстрирует чрезвычайно низкий результат:
Производительность Nexus 6 с активированным криптомодулем
Что ж, давай посмотрим, как обстоят дела с шифрованием в других устройствах компании Google.
Android 5.0–6.0
Первым устройством под управлением Android 5.0 стал Google Nexus 6, выпущенный в 2014 году компанией Motorola. В то время уже активно продвигались 64-разрядные мобильные процессоры с архитектурой ARMv8, но у компании Qualcomm не было готового решения на этой платформе. В результате в Nexus 6 был использован набор системной логики Snapdragon 805, основанный на 32-разрядных ядрах собственной разработки Qualcomm.
Почему это важно? Дело в том, что в процессоры на архитектуре ARMv8 встроен набор команд для ускорения потокового шифрования данных, а в 32-битных процессорах ARMv7 таких команд нет.
Итак, следи за руками. Инструкций для ускорения крипто в процессоре нет, поэтому Qualcomm встроил в набор системной логики выделенный аппаратный модуль, призванный выполнять те же функции. Но что-то у Google не сложилось. То ли драйверы на момент выпуска не допилили, то ли Qualcomm не предоставил исходные коды (или не разрешил публиковать их в AOSP). Детали публике неизвестны, но известен результат: Nexus 6 шокировал обозревателей чрезвычайно медленной скоростью чтения данных. Насколько медленной? Примерно вот так:
Скорость чтения/записи данных с активированным шифрованием
Другие статьи в выпуске:
Причина восьмикратного отставания от «младшего брата», смартфона Motorola Moto X 2014, проста: насильно включенное шифрование, реализованное компанией на программном уровне. В реальной жизни пользователи Nexus 6 на оригинальной версии прошивки жаловались на многочисленные лаги и фризы, заметный нагрев устройства и относительно слабую автономность. Установка ядра, отключающего насильственно активированное шифрование, разом решала эти проблемы.
Впрочем, прошивка — дело такое, ее ведь можно и допилить, не так ли? Особенно если ты Google, располагаешь неограниченными финансами и имеешь в штате самых квалифицированных разработчиков. Что ж, посмотрим, что было дальше.
А потом был Android 5.1 (спустя полгода), в котором нужные драйверы для работы с аппаратным ускорителем сначала добавили в предварительной версии прошивки, а потом снова убрали в финальной из-за серьезных проблем со спящим режимом. Потом был Android 6.0, на момент выхода которого пользователи уже успели потерять интерес к этой игре и стали любыми способами отключать шифрование, пользуясь сторонними ядрами. Или не отключать, если скорости чтения в 25–30 Мбайт/с достаточно.
Пофайловое шифрование (FBE)
В Android 7.0 появилась принципиально новая функция — пофайловое шифрование (file based encryption — FBE), которое выполняется с использованием возможностей файловой системы ext4. Новая реализация шифрования требует наличия аппаратно изолированной среды (trusted execution environment) с поддержкой API Keymaster 1.0 (старые версии 0.xx не годятся). Выполнение алгоритма AES процессором должно обеспечивать расшифровку данных со скоростью не менее 50 Мбайт/с. Это довольно жесткие требования, поэтому поддержку Android 7.x пока имеют единичные устройства.
В новых устройствах шифрование починили!
С выходом в свет Android 6.0 в Google таки прописали требование активировать шифрование в 64-битных устройствах, выпущенных с Android 6 на борту (требование не распространяется на аппараты, которые до Android 6 обновились). Таких устройств пока выпущено немного, так что делать вывод о том, приняли ли производители к сведению это требование, пока рано.
Очевидно, компанию Google не вдохновили лавры Apple, не устроил выделенный модуль ускорения крипто в топовом чипсете Qualcomm — или просто не сложилось. Срочно понадобилось что-то новое. Не хватало, казалось, только набора команд ускорения крипто, которые появились в ARMv8.
Итак, выходят 64-битные Nexus 5x и 6P, базирующиеся на чипсетах Snapdragon 808 и 810 соответственно. Так же как и Snapdragon 805, эти наборы системной логики оснащены высокопроизводительными выделенными модулями аппаратного ускорения шифрования. И так же, как и в Nexus 6, разработчики из Google не смогли (или не захотели) использовать эти модули. Виноград оказался настолько зеленым и кислым, что начальник отдела разработки официально заявил: «Мы использовали программное ускорение шифрования, а именно — набор команд ARMv8, который обеспечивает более высокую производительность в сравнении с аппаратным ускорителем AES, встроенным в SoC».
Что же такое это «программное ускорение» и почему оно «лучше», чем использование выделенного модуля? В 64-разрядных процессорах (непосредственно в основных ядрах, а не в выделенном модуле, наличие которого остается на усмотрение разработчика SoC) есть несколько инструкций, использование которых позволяет ускорить потоковое шифрование подобно инструкциям, ускоряющим кодирование и декодирование потоков видео H.264 в большинстве современных процессоров.
Согласно официальной позиции Qualcomm, эти инструкции ни в коей мере не могут служить полноценной заменой выделенному модулю. Тем не менее Google (а за ней и большинство производителей) радостно начинает использовать именно эти инструкции и начисто игнорирует встроенные в чипсеты криптосопроцессоры.
Результат: зашифрованные данные на таких аппаратах (даже на устройствах начального уровня вроде Moto E 2015) читаются всего лишь в два раза медленнее незашифрованных. А вот на устройствах, базирующихся на 32-битных процессорах ARMv7, падение производительности гораздо сильнее — в четыре раза.
Android 6P и скорость чтения данных
Moto E (64 бит) vs Moto G (32 бит)
Выводы
У встроенных в Android систем шифрования есть существенные недостатки. Они уязвимы к классическим видам атак и приводят к заметному снижению производительности на многих устройствах. Однако лучше использовать их, чем хранить приватные данные в открытом виде или доверять сторонним приложениям, не прошедшим аудит. В следующей статье мы поговорим о том, как сберечь свои данные на карте памяти, и о тех приложениях, которые хорошо справляются с этой задачей.
ФБР попыталось через суд выкрутить руки компании Apple, не желающей создавать код для обхода собственной системы безопасности. Обнаружена критическая уязвимость в ядре Android, позволяющая получить доступ суперпользователя в обход всех защитных механизмов. Эти два события хоть и не связаны между собой, но совпали по времени, явным образом демонстрируя различия в системе безопасности двух популярных мобильных ОС. Отложим на минуту вопрос с критической уязвимостью ядра Android, которая вряд ли будет когда-либо исправлена большинством производителей в уже выпущенных моделях, и рассмотрим механизмы шифрования данных в Android и Apple iOS. Но прежде поговорим, зачем вообще нужно шифрование в мобильных устройствах.
Контроль за разрешениями приложений
Вопрос гранулярного контроля за разрешениями приложений в Android до сих пор не закрыт. В «чистом» Android (AOSP) контроль за использованием разрешений появился только с выходом версии 6.0. В сторонних прошивках он был и раньше, но работал чрезвычайно нестабильно. При этом контроль далёк от совершенства: запретить приложению работать в фоне штатными средствами невозможно, а запрет доступа к местоположению приводит только к тому, что приложение будет определять местоположение устройства другими способами с помощью использования разрешений, гранулярный контроль которых невозможен даже в свежих версиях Android. Наконец, некоторые старые приложения просто не поддерживают гранулярное управление разрешениями, и пользователь по-прежнему соглашается с запросом на предоставление целого пакета разрешений, часть из которых вовсе не безобидна. Нужно отметить, что посредством грамотно настроенных корпоративных политик безопасности некоторые очевидные уязвимости Android можно закрыть.
В силу масштабов, которых достиг феномен фрагментации Android, для платформы в целом не существует какой-то общей архитектуры безопасности. Десятки моделей смартфонов с Android, разошедшихся в сотнях тысяч экземпляров, имели зловредные компоненты в своих прошивках несмотря на жёсткие условия сертификации Google. Сотни моделей десятков производителей используют откровенно небезопасные способы разблокировки (разблокировка по лицу, являющаяся дешёвой калькой системы, реализованной Apple в iPhone X). Наличие подсистемы Smart Lock, которая стимулирует пользователей отказаться от безопасной блокировки, добавляет масла в огонь.
Ряд производителей предлагает собственные надстройки для обеспечения дополнительной безопасности. Такие технологии справляются со своими задачами, но работают строго в рамках заданных возможностей. Такая защита не является всесторонней, и покрывает только нижние уровни доступа, никак не влияя на сбор и передачу информации как встроенными, так и сторонними приложениями.
Изоляция приложений и доступ к файловой системе
В Android самая слабая из мобильных систем изоляция приложений. Приложения могут вмешиваться в работу других приложений. В первую очередь это разнообразные службы Accessibility, приложения, которые могут выводить информацию поверх других приложений, оверлеи, которые могут нажимать кнопки, и сторонние клавиатуры, которые автоматически получают возможность шпионить за пользователем. Приложения могут использовать известные уязвимости для эскалации привилегий. Могут собирать данные о приблизительном местоположении пользователя, даже если права на определение местоположения отсутствуют (механизм reverse BSSID lookup интересный, часто применяется на практике и заслуживает отдельной статьи). Многочисленные зловредные приложения появляются еженедельно, а в некоторых телефонах (о таких мы писали) они находятся прямо в прошивках и избавиться от них — невозможно. Как пример – получившая широкую огласку история: Google admits some Android phones shipped with malware .
Да, эта особенность (а точнее – степень свободы) заложена в систему, и является «фичей», а не «багом». Поверь, твоему ребёнку, тёще или бабушке сильно легче от этого не станет, как бы ты ни пытался натаскать их на «сюда не тыкай никогда».
А что у других производителей?
Платформа Android выделяется сильнейшей фрагментацией. Разительно отличаются как аппаратные платформы (вплоть до используемых наборов команд — ARMv7, ARMv8, Intel x86 и x64), так и прошивки, под управлением которых работают устройства разных производителей. Учитывая все разнообразие устройств, проверить работу аппаратного шифрования даже небольшой части не представляется возможным. Тем не менее мы решили протестировать еще по крайней мере один аппарат — редакционный OnePlus One (версия с 16 Гбайт) под управлением прошивки CyanogenMod.
OnePlus One и шифрование данных
Скорость последовательного чтения данных после шифрования раздела ожидаемо упала втрое. Неожиданностью стало другое: скорость случайного доступа не изменилась, а запись данных небольшими блоками стала даже быстрее. Объяснения этому наблюдению у нас нет; есть комментарий. В отличие от Nexus 6, на OnePlus One не наблюдается сильного падения производительности в сценарии, эмулирующем использование смартфона в реальных условиях. Этот показатель намного более важен, чем скорость последовательного чтения, так как отражает способ использования смартфона (что-то читается и пишется маленькими порциями в разные участки памяти).
Физическая безопасность и шифрование данных
О шифровании в Android мы уже неоднократно писали. В актуальных версиях Android основных способов шифрования три (подробнее можно узнать из статьи на официальном сайте ).
Классический способ шифрования Full-Disk Encryption (FDE). Именно этот способ, появившийся в пятой версии Android, используется в подавляющем большинстве смартфонов, включая модели Samsung вплоть до 2018 года выхода (включительно) независимо от версии Android. Зашифрован будет весь раздел данных; расшифровываются данные автоматически в процессе загрузки смартфона. В качестве пароля, которым защищён двоичный ключ шифрования данных, используется фраза “default_password”, поэтому все данные будут расшифрованы даже до того, как пользователь разблокирует телефон паролем или паттерном. Если вам показалось, что шифрование сотен миллионов устройств ключом “default_password” менее безопасно, чем хотелось бы, вы не ошибётесь: существует ряд решений (в частности, продукты компании Cellebrite), позволяющих загрузить большое число моделей смартфонов специальным «расшифровывающим загрузчиком» и извлечь из устройства данные моментально, даже без перебора кодов блокировки. Впрочем, нужно отдать должное этой схеме шифрования: от атаки методом извлечения микросхем она вполне эффективна.
Для многих моделей устройств, использующих FDE без Secure Startup, доступны методы мгновенного извлечения данных. Методы могут различаться. Одним из интересных способов получить доступ к содержимому устройства без перебора кодов блокировки является использование расшифровывающего загрузчика (decrypting bootloader по терминологии Cellebrite). Загрузка телефона таким загрузчиком позволяет расшифровать содержимое раздела данных. Расшифровывающие загрузчики доступны не для всех моделей и наборов системной логики.
В остальных случаях для расшифровки данных эксперту потребуется взломать код блокировки экрана. Перебор паролей доступен для многих, но не для всех моделей смартфонов с Android. В данном случае фрагментация платформы и многообразие моделей работают в сторону усиления безопасности.
Шифрование Full-Disk Encryption в режиме Secure Startup. Режим Secure Startup – опциональный. Он позволяет перешифровать ключ шифрования данных паролем, отличным от фразы “default_password”. В качестве такого пароля, как правило, выступает код блокировки экрана, но нам встречались и варианты, когда использовались разные коды блокировки и пароли для расшифровки раздела данных. Криминалисты очень не любят этот вариант: для того, чтобы получить доступ к данным, необходимо сперва подобрать код блокировки, а такая возможность есть не для каждой модели устройств. Нужно отметить, что режим Secure Startup можно включить или выключить, удалив код блокировки экрана из настроек и включив его заново. При включении Secure Startup код блокировки потребуется ввести на раннем этапе загрузки устройства. До этого момента телефон, как правило, не сможет даже принять звонок.
Пофайловое шифрование File-Based Encryption (FBE). Этот режим шифрования появился в Android 7, но относительно широкое распространение получил с выходом следующей версии системы. Важно понимать, что пользователь не может самостоятельно выбрать, использовать ли ему пофайловое или полнодисковое шифрование: этот выбор за него делает производитель устройства. Так, смартфоны Samsung, включая модели 2018 года, использовали устаревшее шифрование FDE; многие модели Huawei, Sony, Motorola, флагманские модели Xiaomi, OnePlus стали использовать пофайловое шифрование ещё на 7-й версии Android.
Файловое шифрование эксперты-криминалисты не любят ещё больше: алгоритм «новый», использующих его устройств не так много, инвестировать в очередные исследования не хочется, но приходится. Для пользователя же этот режим предлагает оптимальное сочетание безопасности FDE+Secure Startup с простотой и удобством использования классического FDE.
В этом режиме основной массив пользовательских данных зашифрован ключом, являющимся производной от кода блокировки экрана. В то же время часть данных (включая исполняемые файлы приложений и ту часть информации, необходимой для работы до первого разблокирования устройства) зашифрована посредством device credentials (аппаратных ключей) и становится доступной сразу после загрузки.
Как узнать, какой тип шифрования используется в конкретной модели? Для этого достаточно подключить телефон к компьютеру, включить USB Debugging в настройках для разработчика, установить ADB и выполнить в командной строке следующую команду:
adb shell getprop ro.crypto.type
Если команда вернула слово “file”, то смартфон использует шифрование FBE.
Облачная безопасность и защита от слежки
Google собирает огромное количество информации о пользователях Android. Её детальность и проработка просто фантастические: можно в деталях увидеть, где был и что делал пользователь в такое-то время такого-то числа за последние несколько лет. Что характерно, Google знает не только «где» был пользователь в терминах географических координат, но и «в каком месте» он побывал. Гостиница, ресторан, боулинг, театр, парк – Google видит координаты и соотносит их с объектами на карте и местоположением других пользователей (а их – миллиарды). Результат – компании известно всё вплоть до того, сколько времени пользователь просидел за столиком в ресторане в ожидании первого блюда и сколько людей пользуется услугами заведения в настоящий момент времени.
Поисковые запросы, открытые веб-страницы, история покупок в онлайновых магазинах, билеты на самолёт и брони гостиниц – все эти вещи мало того, что доступны компании, так ещё и целенаправленно извлекаются, анализируются и хранятся в выделенном, дистиллированном и подготовленном для просмотра виде.
Мы говорили о единственном исключении из правила, и оно – есть. В зашифрованном виде (ключ шифрования зависит от кода блокировки смартфона) Google сохраняет резервные копии устройств, на которых установлен Android 9 (или более свежая версия). Почему именно резервные копии, а не, скажем, пароли или параметры жизнедеятельности организма? Видимо, дело в том, что в резервных копиях Google нечего анализировать: расположение иконок на рабочем столе и данные сторонних приложений для компании не представляют интереса.
Слежку со стороны «большого брата» и сбор информации можно ограничить, а уже собранные данные – удалить, но разнообразие этих данных таково, что только их перечисление займёт несколько страниц убористого текста. Более того, время от времени Google без предупреждения включает сбор новых типов данных (яркий пример – синхронизация информации о звонках и SMS на некоторых устройствах); как отключить их сбор и хранение, не всегда понятно даже специалистам. В двух словах: ограничить сбор данных можно, но гарантии того, что запрещён сбор всей интересной информации – никакой.
Для того, чтобы извлечь из «облака» Google Account все данные (а их там не просто много, а много больше, чем хранится на одном конкретном устройстве) эксперту вполне достаточно логина и пароля (плюс второго фактора, если в учётной записи пользователя активирована двухфакторная аутентификация). Единственное ранее упомянутое ограничение – резервные копии Android 9, для доступа к которым потребуется код блокировки смартфона, с которого была создана резервная копия.
Известные уязвимости и версии Android
Говоря об уязвимостях, обнаруженных в коде операционной системы, нельзя не рассказать и о реакции на это компаний-производителей соответствующих ОС. Строго говоря, независимые исследователи обнаружили и опубликовали информацию о большем числе уязвимостей именно в iOS, а не в Android. Обе компании стараются исправлять уязвимости, и делать это достаточно оперативно. Для смартфонов на Android предусмотрены ежемесячные патчи безопасности, а обновление iOS Apple может опубликовать в любой момент.
Разница в том, что если Apple последовательно развивает и улучшает актуальную версию iOS (не будем сейчас касаться различий между версиями системы для Apple TV, HomePod и планшетов с iPad OS), то Google приходится поддерживать (или, напротив, отказаться от поддержки) целый спектр версий Android:
Как минимум пять (!) основных версий Android начиная с Android 5 Lillopop и заканчивая актуальным Android Pie в более-менее равных долях присутствуют на рынке. Ежемесячные патчи безопасности продолжают назвыисимо друг от друга выходить для Android 7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9. Но тот факт, что Google выпустит соответствующий патч безопасности, вовсе не означает, что ваш смартфон получит его немедленно (если, конечно, вы не пользователь Google Pixel). Смартфоны под управлением Android получают патчи безопасности, что называется, «под настроение». Если производителю захочется – он выпустит обновление. Не захочется – не выпустит. У некоторых производителей (Sony, Nokia, Essential) обновления выходят регулярно и оперативно. У других – в зависимости от актуальности модели, её статуса в линейке, количества проданных экземпляров и ряда других факторов, о которых конечный пользователь, как правило, даже не догадывается. Иными словами, у большинства пользователей смартфонов с Android есть шанс получить обновление безопасности в тот же месяц или немного после, получить через полгода-год или не получить никогда.
Почему «программное ускорение» — зло?
Отлично, просто замечательно! В 2016 году на Android зашифрованные данные читаются всего вдвое медленнее незашифрованных и всего в пять раз медленнее снятого с производства iPhone 5S (2013 год), в котором шифрование активировано из коробки! Инженерам Google нужно ставить памятник. ТАК медленно реализовать потоковое шифрование нужно сильно постараться.
Но скорость не главное. Основная проблема «программного» ускорения в том, что каждый раз, когда системе нужно что-то прочитать или записать, она вынуждена вместо микроскопического сопроцессора активировать огромные энергоемкие ядра, насильно выводя их из спящего режима. На времени жизни аккумулятора это сказывается однозначно негативно.
Отвлечемся на минуту от 64-разрядных устройств и вернемся к Nexus 6. Представь себе Snapdragon 805. Это — четыре больших ядра («больших» по числу транзисторов, по площади — и прожорливых соответственно). А выделенный ускоритель AES — это даже не малое ядро (хотя в некоторых решениях для крипто используется как раз одно из малых ядер ARM на низкой тактовой частоте, у нас не тот случай). Теперь каждый раз, когда системе нужно дописать строчку в лог-файл, активируется не отдельный маленький энергоэффективный чип, а все огромное и «горячее» ядро. Пусть и на миллисекунды, но пробуждается. А пишет или читает что-то Android постоянно (только в Android 6 появился режим Doze, который снижает интенсивность работы устройства в спящем режиме), и ядро активирует — тоже. Отсюда высокая скорость, с которой аккумулятор разряжается в простое (и еще более высокая — при работе).
И знаешь, что самое грустное? Это референсный дизайн Google. И если уж в Google не смогли или не захотели реализовать крипто на выделенном сопроцессоре, то никто, ни один OEM (за исключением, возможно, Samsung) этим заниматься тем более не будет. Ведь это не попугаи в AnTuTu, это что-то невидимое и обычному пользователю совсем непонятное и, как показала статистика, ненужное.
Подведем итог. Мало того, что за полтора года с выхода Nexus 6 так и не удалось задействовать криптосопроцессор. Мало того, что наступили на те же грабли в свежем последнем поколении Nexus’ов. У нас отобрали надежду на то, что шифрование будет реализовано на уровне хотя бы трехлетней давности iPhone 5S. В Google не могут или не хотят сделать быстрое потоковое крипто, несмотря на наличие всего необходимого — от выделенного сопроцессора до исходных кодов драйверов. Увы. На сегодня скорость шифрования в Android не достигла даже того уровня, который был взят Apple три года назад.
Читайте также: