https://youtube.com/watch?v=KM6tPvtF_bY
Шаг вперёд, два шага назад
Насколько безопасна разблокировка по лицу? В случае с iPhone всё понятно; в них используется система с достаточным уровнем технической безопасности; и даже несмотря на это, систему Face ID регулярно подвергают критике.
В смартфонах с Android производители устанавливают модули разблокировки по лицу, безопасность которых находится в пределах от «удовлетворительно» до «тот же Smart Lock, вид сбоку». Так, в смартфонах Samsung есть режим, комбинирующий образ лица со сканированием радужной оболочки глаза; обмануть такую систему трёхмерной моделью головы не удастся. Аналогичные системы стали появляться в некоторых флагманских устройствах Huawei, Xiaomi и других. В то же время в ряде устройств используются гораздо более примитивные системы, основанные или на фотографии с фронтальной камеры, или на двумерном фото с инфракрасного датчика. Обмануть такие системы вполне возможно, иногда – очень просто. Как правильно заметили в статье «Разблокировка по лицу — не лучшая идея», подход «Мой телефон умеет все то же, что и твой iPhone, — и стоит в десять раз меньше!» будет встречаться всё чаще.
Пример из жизни, или почему не стоит доверять производителю. В смартфонах Xiaomi Mi 8 и Mi 8 Pro для разблокировки по лицу использовалась система из сдвоенных камер и инфракрасной подсветки. Система работала достаточно быстро, обеспечивая удовлетворительный уровень безопасности. В моделях Xiaomi Mi 9 и Mi 9 Pro, которые пришли на смену восьмой серии, система из двух камер и инфракрасной подсветки уступила место единственному глазку фронтальной камеры, расположенной в миниатюрном каплевидном вырезе. Возможность разблокировки смартфона по лицу осталась в прошивке, но её безопасность упала с «удовлетворительной» до «избегать любой ценой». Если вы не уверены в том, как именно реализована разблокировка по лицу в вашем смартфоне, отключите эту возможность в настройках.
Особняком стоит правовой аспект разблокировки по лицу. В США был создан ряд прецедентов, регулирующих возможности полиции по разблокировке устройств посредством сканирования лица подозреваемого. Имеются как ряд положительных (разрешение на разблокировку по лицу было выдано), так и отрицательных (разрешение не было выдано или было выдано неправомерно) прецедентов, благодаря которым установлены достаточно чёткие правовые рамки, переходить которые полицейские в большинстве случаев не станут.
В то же время в России мы неоднократно слышали о случаях, когда телефон «случайно» поворачивался в сторону задержанного, после чего «сам собой» разблокировался. Доказать, что телефон был разблокирован с нарушением правовых норм, в таких случаях очень тяжело: нательными камерами, как в США, российские полицейские пока не оснащены.
Использовать или не использовать разблокировку по лицу – вопрос открытый, и ответ на него лежит не только в технической области; решать в любом случае вам.
Полнодисковое шифрование (FDE)
Впервые полнодисковое шифрование (full disk encryption — FDE) пытались внедрить еще в планшетной версии Android 3.0 Honeycomb. Тогда вместе с ядром Linux 2.6.36 в ней появился модуль dm-crypt, обеспечивающий возможность шифрования на любом блочном устройстве хранения данных (включая NAND Flash). В универсальной четвертой версии Android шифрование также было доступно, однако для большинства оно оставалось невостребованной опцией. Из-за отсутствия программных оптимизаций и низкой скорости встраиваемых процессоров того времени включение шифрования приводило к падению производительности ввода-вывода в 6–8 раз на топовых моделях и до 20 раз на бюджетных.
Исправить ситуацию удалось только с появлением 64-битных процессоров, имеющих отдельный набор инструкций для ускорения криптографических вычислений. Поэтому обязательным шифрование в Android стало только с версии 5.0, предустанавливаемой на устройства с современными однокристальными системами.
Именно в пятой версии Андроида появился флаг forceencrypt fstab, указывающий на необходимость активации шифрования при первом включении устройства. Обрати внимание: есть принципиальная разница между тем, было ли устройство обновлено до Android 5.x или новее либо сразу выпускалось с такой версией. Во втором случае шифрование данных будет выполняться всегда. В первом варианте (при обновлении) оно останется опциональным и может быть отключено сбросом до заводских настроек (factory reset).
В общем случае для полнодискового шифрования в Android используются три битовые последовательности: мастер-ключ, соль и пользовательский пин-код. Мастер-ключ и соль генерируются автоматически, а пин-код вводится владельцем устройства. Роль пин-кода может также выполнять пароль, графический ключ или любой другой «секрет» — для процессора это все равно битовая последовательность, причем довольно короткая.
Стойкий пароль шифрования
Большинство пользователей задает короткий пароль на смартфоне или планшете, поскольку им часто приходится его вводить. Проблема в том, что в Android используется один пароль для всех операций, включая разблокировку экрана и расшифровку данных. Приложение EncPassChanger позволяет установить раздельные пароли и повысить криптостойкость схемы хранения мастер-ключа, которым шифруются данные пользователя. Приложение работает на Android 4.0.3 и выше (требуется root).

Пользовательские данные шифруются мастер-ключом, а соль и пин-код служат только для того, чтобы хранить сам мастер-ключ в зашифрованном виде. Поэтому смена пароля не приводит к перешифровке всех данных. Ключ всегда остается один и тот же (сгенерированный изначально), а новый пароль лишь меняет его криптографическую оболочку. Разберем эту схему подробнее.
При первом включении устройство с предустановленной ОС Android 5.0 и выше генерирует псевдослучайный 128-разрядный ключ. Его называют мастер-ключом, или DEK (device encryption key). Помимо DEK, также генерируется еще одно псевдослучайное 128-битное число (соль), а пользователя просят ввести пароль.
Именно с помощью DEK в конечном счете шифруются все данные на пользовательском разделе /data. Как именно выглядит этот ключ, владелец устройства не знает. Он никогда не вводит его и даже не может считать штатными средствами.
В ранних версиях Android (до 5.0) мастер-ключ и настройки шифрования хранились в отдельной незашифрованной структуре crypto footer (упрощенный аналог LUKS) в начале зашифрованного раздела data. Сам DEX шифровался другим ключом, вычисляемым на основе пользовательского пароля и соли.
Такой способ не обеспечивал защиту от брутфорса мастер-ключа на внешних вычислительных системах, поэтому в Android 5.0 и выше появилось новое требование к производителям устройств: предоставлять на аппаратном уровне защищенное хранилище ключей. Дополнительно DEK стал подписываться с использованием еще одного ключа (HBK — hardware-bound private key), специфичного для данного устройства. Он захардкожен на этапе производства и не доступен ни одному пользовательскому процессу.
Безопасность Android
Какие рекомендации обычно дают статьи, посвящённые безопасности Android? Использовать код блокировки посложнее или паттерн подлиннее; отключить Smart Lock; обновить Android; включить двухфакторную аутентификацию. Советы звучат логично, но при этом исключительно поверхностно, в стиле «как перестать переживать об информационной безопасности и начать жить». Между тем, для каждого второго смартфона на Android длина кода блокировки никак не влияет на безопасность; отключение Smart Lock бесполезно, если пользователь включил (или забыл выключить) отладочный режим USB debugging, а проверять обновления Android бесполезно, если производитель устройства затягивает с обновлениями.
Для начала составим свой список рекомендаций, а потом пройдёмся по некоторым пунктам подробно. Итак:
О правильном подходе к защите
От чего именно будем защищаться? В одной статье невозможно рассмотреть меры защиты от всех возможных угроз. Мы не будем рассматривать защиту от зловредного программного обеспечения и «шпионских» приложений и лишь мельком рассмотрим защиту учётной записи Google Account. Основные усилия мы приложим в направлении обеспечения безопасности данных при физическом и логическом анализе устройства.
Интереснейшими возможностями обладают решения компании Cellebrite, включая недавно представленный продукт UFED Premium. Смартфон можно подключить к устройству (сейчас в его роли выступает обычный ноутбук с предустановленным ПО), при помощи которого эксперт скопирует раздел данных и расшифрует его через одну из известных разработчикам уязвимостей или с использованием «расшифровывающего загрузчика» (decrypting bootloader в терминах Cellebrite) независимо от длины пароля и наличия установленных обновлений. Для ряда устройств поддерживается перебор кодов блокировки экрана – порядка 20 минут на весь спектр паролей из 4 цифр.
Прочитав нашу статью, вы будете более полно осознавать возможности защитить свои данные и риски, которые останутся даже тогда, когда всё было сделано правильно.
How To Encrypt Your Android For Extra Security | Pocketnow
Если забрали компьютер
Что произойдёт, когда пароли будут извлечены? В зависимости от того, каким смартфоном вы пользуетесь, эксперт запустит ещё одно приложение, которое извлечёт всю информацию из облака Apple, Google или, к примеру, Samsung. ( В скобках: если у вас смартфон Samsung, то известно ли вам, что именно хранится в соответствующем облаке, даже если вы не включали его сознательно?)
Если у вас iPhone, из облака можно извлечь:
Если у вас смартфон на Android, имейте в виду: Google собирает намного больше данных, чем Apple. Длиннее и список доступной для извлечения информации:
Исследование «облака» Google часто даёт более интересный результат, чем даже анализ самого смартфона, т.к. собираются данные не только с конкретного телефона, но и со всех других устройств (в том числе компьютеров), в которых пользователь вошёл в свой Google Account.
Если у вас телефон Samsung, то помимо облака Google можно извлечь ещё кое-что из собственного облака Samsung. Мы понимаем, что для многих читателей наличие у Samsung собственного «облачного» сервиса станет сюрпризом, а то, что в нём, оказывается, хранятся какие-то данные (и пользователь с этим в какой-то момент успел согласиться), может сильно удивить. В облаке Samsung можно найти:
Пользователи смартфонов Xiaomi (а также других устройств под управлением MIUI) имеют возможность синхронизировать свои устройства с облаком Mi Cloud (если смартфон «глобальной» версии, то информация сохраняется в дополнение к тому, что сохраняется в Google Account). В облаке Mi Cloud можно найти следующее:
Помочь может многослойная защита.
Во-первых, обеспечь физическую безопасность компьютера, включив шифрование системного диска через BitLocker. ( Кстати, убедитесь, что ключ шифрования BitLocker Recovery Key не сохранился в Active Directory и не «утёк» в облако OneDrive, проверить можно здесь).
Если вы живёте в России, то просто так взять и зашифровать системный диск не получится. Для того, чтобы включить шифрование, нужна как минимум профессиональная редакция Windows и наличие аппаратного модуля доверенной загрузки TPM 2.0. Именно в аппаратном модуле должен храниться сам ключ шифрования, при помощи которого будет зашифрован раздел. Модули TPM 2.0 не получили сертификации ФСБ; соответственно, все продающиеся на территории РФ компьютеры не должны включать этот модуль по умолчанию, даже если он физически распаян на материнской плате. Варианты? Если есть возможность активировать TPM 2.0 в настройках BIOS – сделайте это и включите BitLocker. Если такой возможности нет, то разрешить шифрование системного раздела при помощи BitLocker можно и без аппаратного модуля. Сделать это можно вручную, отредактировав групповые политики Windows. Подробности – по ссылке.
Следующий слой защиты – пароли для облачных учётных записей. Для «облачных» сервисов Google, Apple, Samsung, Xiaomi используйте уникальные, не совпадающие друг с другом даже частично пароли, не похожие на все те, что записаны в хранилище браузера. Запустите свой любимый, не самый любимый и совсем нелюбимый браузеры и убедитесь, что в их хранилище нет данных перечисленных выше учётных записей. Если используется Chrome – выйдите из учётной записи Google. Сотрите кэш и cookie браузера, после чего закройте все окна. Всё, на какое-то время (пока вы снова не войдёте в Google Account) вы защищены от «облачного» вектора атаки.
Использование такой системы незначительно повлияет на удобство повседневного использования, но существенно повысит безопасность.
How To Encrypt Your Android Phone (and Why You Might Want To)
How To Wipe & Secure Your Android Phone Before Selling | ETPanache
Как будет действовать полиция
Если ваш смартфон попал в руки полиции или пограничного контроля в США, вас попытаются заставить разблокировать устройство. В случае успеха дальнейшее от вас не зависит; с экрана разблокированного смартфона следователь получит доступ:
Аналогичную информацию получит пограничный контроль Китая. Впрочем, китайские пограничники действуют грубо и предельно неряшливо: на смартфон устанавливается приложение-агент, которое и извлекает всю необходимую пограничнику информацию. Ситуация достигла полного абсурда тогда, когда китайские пограничники стали массово забывать удалить приложение-агента. Уважаемые китайские пограничники! Так делать нельзя! Пожалуйста, внимательно следуйте служебным инструкциям и не забывайте удалять приложение-агент с телефона туристов после того, как будут извлечены все необходимые данные!
Взлом кода блокировки экрана
Мне очень хотелось бы написать подробную статью о том, как и чем можно взломать заблокированный смартфон на Android, но, боюсь, это невозможно: на руках у пользователей тысячи разнообразных моделей, основанных на десятках чипсетов в сотнях вариаций. С учётом разнообразия прошивок, версий самого Android и доступности актуальных патчей безопасности (та самая проблема фрагментации Android) сложилась ситуация, в которой даже крупнейший производитель криминалистических продуктов не знает, с какими устройствами работает их комплекс. « Попробуйте подключить» — стандартный ответ на вопрос, поддерживает ли комплекс Х смартфон Y.
К примеру, простой вопрос: можно ли взломать код блокировки у конкретной модели смартфона, а главное – нужно ли это делать или можно обойтись и так (тот самый «расшифровывающий загрузчик»)? Многочисленные статьи по безопасности в один голос рекомендуют устанавливать стойкий код блокировки, умалчивая о том, что примерно для каждого второго смартфона это совершенно бесполезно. Как определить, имеет ли смысл терять в удобстве со сложным кодом блокировки или стоит подойти с другой стороны?
Ответ лежит в области используемого в конкретном устройстве алгоритма шифрования. Как известно, все смартфоны, вышедшие с завода с Android 6 и более поздними версиями, обязаны зашифровать пользовательские данные к моменту окончания процесса начальной настройки. Однако шифрование шифрованию рознь. В большинстве старых устройств используется так называемое дисковое шифрование Full Disk Encryption (FDE). В режиме FDE данные на пользовательском разделе зашифрованы посредством device credentials – ключа шифрования, который генерируется на основе некого аппаратного ключа и фразы “default_password”.
Да, именно так – “default_password” защищает все ваши данные. И что же, всё пропало? Любой желающий может взять и расшифровать информацию? Не совсем. Ключ шифрования генерируется внутри Trusted Execution Environment (TEE) в момент загрузки устройства; в качестве исходных данных участвует уникальный для каждого устройства ключ, который за пределы TEE не выходит. Если из телефона извлечь чип памяти и скопировать из него информацию, то расшифровать данные без ключа из TEE не удастся. Соответственно, для расшифровки информации потребуется не просто извлечь из телефона данные (например, через режим EDL, роль которого постепенно уходит в прошлое), но и взломать TEE или подменить загрузчик. В принципе, такие «расшифровывающие загрузчики» (decrypting bootloader) существуют, например, у Cellebrite для целого ряда моделей, а иногда и целых семейств моделей, объединённых общим набором системной логики. Тем не менее, для использования этой возможности нужно воспользоваться специальным комплексом, который и осуществит извлечение данных.
Даже если в вашем телефоне используется устаревшая защита FDE, надёжно защитить свои данные можно. Для этого достаточно включить режим Secure Startup (сделать это довольно просто: нужно сначала убрать код блокировки, а затем – установить новый; если телефон использует FDE, то система запросит, включить ли режим безопасной загрузки). В этом режиме ключ шифрования будет перешифрован данными аппаратного ключа и введённого кода блокировки (вместо “default_password”). Недостаток у этого метода тоже есть: телефон просто не загрузится вплоть до момента ввода кода блокировки; если ваш телефон случайно перезагрузится, то вы не сможете даже ответить на звонок, пока телефон не загрузится до конца (для чего требуется код блокировки). Кстати, на некоторых моделях пароль для Secure Startup может не совпадать с кодом блокировки экрана; если такая возможность есть, ей стоит воспользоваться.
Для расшифровки данных как устройств с FDE, использующих режим Secure Startup, так и устройств с FBE необходимо взломать код блокировки. Конкретные процедуры отличаются в зависимости от модели и набора системной логики, но общий принцип один: подключиться к USB порту и запустить процедуру перебора.
Разумеется, в телефонах есть встроенная защита от таких атак. Мы уже описывали Qualcomm TrustZone, в рамках которой работает Trusted Execution Environment (TEE). В ней могут запускаться только так называемые «трастлеты» (trustlets), своеобразные микро-приложения, подписанные ключом, который проверяется самой TEE. Именно здесь реализована проверка пасскода (через сервис GateKeeper). GateKeeper, в свою очередь, на аппаратном уровне ограничивает скорость перебора паролей; быстро перебрать даже код из 4 цифр не получится, а 6 цифр можно перебирать до бесконечности. GateKeeper не позволяет взломать телефон в ситуациях, когда включен Secure Startup или если используется шифрование FBE.
Пример из жизни. Смартфоны Samsung – пожалуй, самые популярные среди устройств на Android. Во всех моделях Samsung, выпущенных до 2019 года, используется устаревшее шифрование FDE. Для многих моделей смартфонов существуют так называемые «инженерные загрузчики», которые успешно «утекли» с завода-производителя. Поскольку подавляющее большинство пользователей не знает о существовании режима Secure Startup, инженерный загрузчик помогает экспертам загрузить код, посредством которого можно обойти пароль блокировки и расшифровать содержимое устройства.
Другой пример. Во время демонстрации UFED Premium компании Cellebrite код блокировки случайно взятого смартфона Samsung S8 одного из участников презентации был вскрыт в течение всего лишь 15 минут.
Современной системой шифрования FBE оборудованы лишь новые модели Samsung, выпущенные в 2019 году. К ним относятся, например, модели Galaxy S10 и S10+.
WARNING
Экосистема Android — это зоопарк аппаратных платформ, прошивок и версий, в каждой из которых есть свои существенные отличия. Статья описывает лишь общие принципы шифрования, реализованные Google в самой ОС.
Secure Your Data – Deep Dive Into Encryption And Security (Android Dev Summit ’19)
How To Encrypt Your Android Phone Or Tablet
Безопасность небезопасного
Эта глава посвящена в основном китайским устройствам, в прошивках которых обнаружились (или ещё не обнаружились, но точно есть) сюрпризы. Если вы – не энтузиаст, готовый потратить часы и дни на чтение форумов и возню с прошивками, — смело пропускайте этот раздел, перейдя сразу к следующей главе.
Что можно сделать, если у вас на руках – телефон с разблокированным загрузчиком или перепрошитая ушлыми продавцами китайская версия? В этом случае говорить о серьёзной безопасности, конечно, не приходится, но кое-что сделать всё-таки можно.
Первый и самый простой вариант: у вас на руках телефон, загрузчик которого разблокирован (например, предыдущим владельцем). Часто подобные ситуации осложняются тем, что на телефоне установлена кастомная прошивка, root-доступ, модифицирован системный раздел или и вовсе непонятно, что творится внутри. В большинстве случаев такой телефон можно вернуть в «заводское» состояние, прошив его на заводскую прошивку, после чего загрузчик можно заблокировать из fastboot командой oem lock. Особенно это рекомендуем проделать с китайскими устройствами, на которые ушлые продавцы часто (чаще, чем можно себе представить) устанавливают прошивки с самыми разнообразными сюрпризами. При попытке после этого разблокировать загрузчик командой oem unlock криптоключи и все данные будут уничтожены.
Обратите внимание: данная стратегия не сработает со свежими телефонами Xiaomi, перепрошитыми с китайской версии прошивки на «глобальную» версию MIUI. Если заблокировать загрузчик на таком устройстве, на выходе получится «кирпич», восстановить который может быть очень и очень трудно. Если всё-таки решите попробовать – заведите на телефоне Xiaomi Account и разрешите в настройках OEM Unlock, чтобы впоследствии, если что-то пойдёт не так, можно было бы воспользоваться утилитой Mi Unlock для обратной разблокировки загрузчика.
А если загрузчик нельзя заблокировать (так часто бывает на многих китайских устройствах)? Значит, вам не повезло. Впрочем, если вы всё же приобрели такое устройство, то, вероятно, безопасность – последняя из интересующих вас проблем. Теоретически даже на таких устройствах будет работать шифрование, которое не позволит просто так считать данные. На практике же взлом таких устройств обычно не представляет никакой проблемы. Единственное, что можно попытаться сделать – настроить Secure Startup; в этом режиме ключ шифрования данных будет генерироваться на основе кода блокировки. Достаточно длинный код блокировки увеличит время, которое потребуется на взлом.
Что делать, если был куплен телефон, который ведёт себя странно? При малейшем подозрении на вредоносное ПО в прошивке рекомендуем зайти в профильную ветку на 4PDA. Вполне вероятно, что проблема известна, и на форуме уже есть подробные инструкции по удалению или заморозке зловредного ПО.
А что делать, если производитель не выпускает обновлений, а в прошивке прочно прописались зловредные компоненты? Конечно, разумным поступком было бы избавиться от такого устройства, но в реальном мире так мало кто делает. Поэтому рекомендация: попробуйте разблокировать загрузчик (хуже уже не станет) и установить на телефон официальную сборку Lineage OS. В официальных сборках Lineage (в отличие от, например, Resurrection Remix) всё хорошо и с приватностью, и с шифрованием, и с обновлениями «по воздуху». В зависимости от доступной для конкретного устройства версии прошивки может использоваться шифрование как FDE, так и FBE; в первом случае рекомендуем настроить Secure Startup. Если же сборок Lineage нет или разблокировать загрузчик невозможно, то даже ребёнку я бы такой телефон отдавать не стал.
How To Encrypt Android Smartphone, Encryption 2021
How To Encrypt Your Mobile Device (iPhone, IPad, Android Phone)
Предыстория
Написать эту статью нас побудило просто огромное количество публикаций в самых разнообразных изданиях на одну и ту же тему: как обезопасить свой смартфон. Авторы прочитанных нами статей повторяют одни и те же советы, которые при самом тщательном выполнении не дают владельцу смартфона ничего, кроме ложного ощущения безопасности. « Используйте стойкий код блокировки», «включите датчик отпечатков» и предельно циничное «обновитесь на последнюю версию Android» — советы сами по себе логичные, но совершенно, абсолютно недостаточные. Очень редко среди советов попадается рекомендация отключить Smart Lock – тоже правильно и также недостаточно.
Какой смысл устанавливать длинный и сложный код блокировки, если в вашем смартфоне используется устаревшее шифрование FDE и вы не включили режим Secure Startup? Для многих моделей доступны загрузчики, которые расшифруют всё содержимое твоего устройства даже без перебора паролей: шифрование всё равно будет использовать фразу default_password. Отключение Smart Lock — необходимый, но недостаточный шаг. Уверены ли вы в безопасности используемой в вашем устройстве технологии сканирования лица (если телефон ей оборудован)? А известно ли вам, что, просто зайдя на ваш компьютер, можно извлечь из браузера все ваши пароли, после чего попросту зайти в облако и сменить код блокировки смартфона? (Работает, к счастью, не для всех устройств, но знать о такой возможности нужно.) Наконец, нужно отдавать себе отчёт, что если с компьютера будет получен пароль от облака Google Account, то сам телефон будет никому не нужен: все необходимые данные можно извлечь из облака (и, скорее всего, их там будет даже больше, чем в самом телефоне).
Smart Lock
Почему все так ополчились на функцию Smart Lock? Дело в том, что её использование позволяет разблокировать телефон по ряду критериев, которые не имеют ничего общего с безопасностью. Рассмотрим на примерах.

Face unlock. Разблокировка по лицу в разделе Smart Lock не имеет ничего общего с биометрической аутентификацией. Это – всего лишь сличение образа пользователя с фотографией, сделанной на фронтальную камеру устройства. Такой face unlock легко обманывается плоской фотографией. Обратите внимание: в некоторых телефонах, оборудованных биометрической функцией Face Unlock (например, Xiaomi Mi 8) этого пункта в настройках не будет; в таких устройствах Face Unlock будет подчиняться тем же требованиям и правилам, что и разблокировка по датчику отпечатка пальцев. Разблокировку по лицу в разделе Smart Lock лучше не использовать.
Trusted places. Автоматически разблокирует устройства в окрестностях тех мест, где часто бывает пользователь. Если телефон вытащат из кармана возле дома, у злоумышленника не возникнет никаких проблем с его разблокировкой.
Trusted devices. Если подключено доверенное устройство Bluetooth, телефон может быть разблокирован автоматически. Поверьте, у полиции не возникнет затруднений использовать ваши «умные» часы или трекер для такой разблокировки.
Voice match, On-body detection: в какой-то степени экспериментальные варианты, позволяющие пользователям реже разблокировать устройство кодом блокировки.
Если Smart Lock настолько небезопасен, почему он вообще есть в Android? Smart Lock – тяжкое наследие с тех времён, когда ввод кода блокировки или паттерна был единственным способом разблокировать телефон. Подавляющему большинству пользователей не нравилось, что на разблокировку устройства тратятся драгоценные секунды (а разблокировать телефон в перчатках было той ещё задачей); в результате многие не устанавливали никакой защиты вообще. Для того, чтобы хоть как-то приучить пользователей к установке кода блокировки, Google пришлось сильно занизить планку: так, появились опции, позволяющие отсрочить блокировку экрана на 10-15 минут с момента последней разблокировки. Smart Lock – из той же оперы. Никакой разумной нужды что в Smart Lock, что в отложенной блокировке уже не осталось: современные сканеры отпечатков пальцев срабатывают чуть быстрее, чем просто «мгновенно», а разблокировка по лицу достигла достаточно высоких уровней скорости и иногда (об этом ниже) безопасности.
Как работает FDE
Поэтапно схема создания ключей для шифрования пользовательских данных в Android 5.0 и выше выглядит так:
Мастер-ключ используется для шифрования всего содержимого пользовательского раздела во встроенной памяти устройства. Для каждого сектора генерируется свой вектор инициализации с солью и указанием номера сектора (ESSIV). При вводе пользовательского пароля мастер-ключ расшифровывается, и далее пользовательские данные автоматически расшифровываются в фоне.
Недоступность всех ключей для прямого считывания (например, запущенным на устройстве скриптом) обеспечивается их обработкой только внутри изолированной доверенной среды исполнения (trusted execution environment — TEE). В процессорах архитектуры ARM роль TEE выполняет TrustZone, которая обеспечивает контроль целостности данных, их защищенное хранение и изолированное выполнение кода. В ней же хранятся и промежуточные значения, вычисляемые функцией формирования ключа.

Схема организации доверенной среды (изображение: genode.org)
Как хранение ключа, так и все ключевые криптографические процедуры в современных версиях 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 я бы выделил следующие принципиальные моменты:
К счастью, полнодисковое шифрование не единственный вариант защиты данных в Android.
Правовые особенности
Насколько реальны риски, связанные с анализом компьютера? По информации от самих полицейских, исследование компьютеров проводят нечасто. Как правило, у полиции возникают следующие препятствия:
Отложенная блокировка
Когда-то давно ввод кода блокировки был единственным, медленным и неудобным способом разблокировать экран телефона. Многим пользователям постоянный ввод пароля представлялся неудобным; они отказывались от защиты в пользу удобства и скорости. Отложенная блокировка стала логичной реакцией на проблему как со стороны Google, так и Apple.

При активации соответствующей опции можно было отключить дисплей телефона кнопкой, включить его снова – и попасть сразу на домашний экран. Задержку можно настраивать в зависимости от собственных предпочтений. Нужно ли говорить, что задержка блокировки катастрофически снижает уровень безопасности? Типичная ситуация: пользователь идёт по улице, смотрит в телефон. Происходит задержание, пользователь рефлекторно нажимает кнопку отключения дисплея. Телефон изымают, включают экран – и сразу же попадают на домашний экран. Пароли, коды блокировки, заблокированный загрузчик, шифрование и многие другие вещи уже не будут иметь значения.




