ФБР попыталось через суд выкрутить руки компании Apple, не желающей создавать код для обхода собственной системы безопасности. Обнаружена критическая уязвимость в ядре Android, позволяющая получить доступ суперпользователя в обход всех защитных механизмов. Эти два события хоть и не связаны между собой, но совпали по времени, явным образом демонстрируя различия в системе безопасности двух популярных мобильных ОС. Отложим на минуту вопрос с критической уязвимостью ядра Android, которая вряд ли будет когда-либо исправлена большинством производителей в уже выпущенных моделях, и рассмотрим механизмы шифрования данных в Android и Apple iOS. Но прежде поговорим, зачем вообще нужно шифрование в мобильных устройствах.
Содержание
Зачем шифровать телефон?
Честному человеку скрывать нечего — популярнейшей лейтмотив, который звучит после каждой публикации на тему защиты данных. «Мне скрывать нечего», — говорят многие пользователи. Увы, но гораздо чаще под этим подразумевается всего лишь уверенность в том, что уж в данные конкретного Васи Пупкина никто не потрудится залезть, ибо кому они вообще интересны? Практика показывает, что это не так. Далеко ходить не станем: буквально на прошлой неделе увольнением завершилась карьера школьной учительницы, которая на минутку оставила телефон на столе. Ученики мгновенно разблокировали аппарат и извлекли из него фотографии учительницы в виде, который осуждается пуританской моралью американского общества. Инцидент послужил достаточным основанием для увольнения учительницы. Подобные истории происходят чуть ли не ежедневно.
Как взламываются незашифрованные телефоны
Не будем углубляться в детали, просто имей в виду: данные с незашифрованного телефона можно извлечь почти в ста процентах случаев. «Почти» здесь относится скорее к случаям, когда телефон попытались физически повредить или уничтожить непосредственно перед снятием данных. Во многих устройствах Android и Windows Phone есть сервисный режим, позволяющий слить все данные из памяти аппарата через обычный USB-кабель. Это касается большинства устройств на платформе Qualcomm (режим HS-USB, работающий даже тогда, когда загрузчик заблокирован), на китайских смартфонах с процессорами MediaTek (MTK), Spreadtrum и Allwinner (если разблокирован загрузчик), а также всех смартфонов производства LG (там вообще удобный сервисный режим, позволяющий слить данные даже с «окирпиченного» устройства).
Но даже если в телефоне и нет сервисного «черного хода», данные из устройства все равно можно получить, разобрав аппарат и подключившись к тестовому порту JTAG. В самых запущенных случаях из устройства извлекается чип eMMC, который вставляется в простейший и очень дешевый адаптер и работает по тому же протоколу, что и самая обычная SD-карта. Если данные не были зашифрованы, из телефона легко извлекается вообще все вплоть до маркеров аутентификации, предоставляющих доступ к твоим облачным хранилищам.
А если шифрование было включено? В старых версиях Android (до 4.4 включительно) и это можно было обойти (за исключением, правда, аппаратов производства Samsung). А вот в Android 5.0 наконец появился режим стойкого шифрования. Но так ли он полезен, как полагает 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 Мбайт/с достаточно.
Android 7.0
Хорошо, но уж в Android 7 можно было исправить серьезную проблему флагманского устройства, которой уже почти два года? Можно, и ее исправили! В лаборатории «Элкомсофт» сравнили производительность двух идентичных Nexus 6, на одном из которых была установлена версия Android 6.0.1 с ядром ElementalX (и отключенным шифрованием), в то время как второе работало под управлением первой предварительной версии Android 7 с настройками по умолчанию (шифрование включено). Результат налицо:
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»
Начиная с Android 4.2, вы можете зашифровать все устройство средствами самой операционной системы Android. При этом вам не нужно покупать или устанавливать какие-либо дополнительные приложения. Все осуществляется средствами самой операционной системы, причем доступ к Интернету для этого не нужен. Вы можете зашифровать данные в любой момент, когда посчитаете это целесообразным.
Шифрование Андроид
Работает шифрование так: после включения шифрования все данные на устройстве и на карте памяти будут зашифрованы. Конечно, если кто-то разблокирует ваше устройство, он все равно получит доступ к данным, однако это спасет ваши данные, если кто-то попытается украсть карту памяти или прочитать данные без включения смартфона с его внутренней памяти. У него ничего не выйдет, так как данные будут зашифрованы.
При включении смартфона вам нужно будет вводить пароль, позволяющий расшифровать данные. Без ввода пароля смартфон дальше не загрузится. Это не просто пин-код, это ключ, которым зашифрованы ваши данные.
О шифровании устройства вы должны знать следующие вещи:
- Шифрование возможно только в одном направлении. После шифрования расшифровать устройство уже будет нельзя. Можно только сбросить его до заводских настроек, но в этом случае вы потеряете все данные.
- Шифрование всего устройства замедляет работу смартфона. В принципе, в эру 8-ядерных процессоров и при объеме оперативной памяти от 1 Гб это не доставит вам хлопот. На более слабых устройствах «торможение» будет ощутимым.
- Шифрование устройства не спасет ваши данные от случая, если кто-то попросил ваш смартфон, чтобы просмотреть, а сам в этот момент или установит троян, или просто вручную отправит некоторые интересующие его данные на свой телефон. От таких случаев позволяет защититься только криптоконтейнер: ведь для доступа к данным внутри контейнера нужно будет ввести еще один пароль, который злоумышленник не знает.
Если вы хотите зашифровать все устройство, перейдите в Настройки, Безопасность, затем нажмите кнопку Зашифровать телефон (или Зашифровать планшет) в разделе Шифрование. Далее следуйте инструкциям.
24.04.2019
Android основан на ядре Linux, которое, в свою очередь, включает в себя целый ряд механизмов, реализующих шифрование самых разных сущностей. Для криптозащиты дисков и разделов предусмотрена система под названием dm-crypt — своего рода криптофильтр, через который можно пропустить все запросы к диску или разделу и получить шифрование данных на лету.
Программисты Google научили Android использовать dm-crypt, начиная с версии 3.0 Honeycomb, где появилась опция, позволяющая быстро включить шифрование и задать PIN-код на доступ к данным. Со стороны пользователя все смотрится очень просто и беспроблемно: подключил телефон к заряднику, дождался полной зарядки и нажал на заветную кнопку. Система начала шифрование уже имеющихся данных. Гораздо интереснее все это выглядит изнутри.
В любом дистрибутиве Linux за управление dm-crypt отвечает утилита cryptsetup, создающая зашифрованный по стандарту LUKS том, к которому можно получить доступ и с помощью сторонних инструментов из Windows или OS X. Обычно cryptsetup запускается на этапе инициализации ОС из загрузочного initramfs-образа и подключает dm-crypt к дисковому накопителю, который затем монтируется.
В Android все происходит иначе. Из-за требований к лицензированию всех компонентов выше ядра с помощью Apache-совместимой лицензии, cryptsetup, распространяемая на условиях GPL2, не включена в состав Android. Вместо нее используется разработанный с нуля модуль cryptfs для местного менеджера томов vold (не путать с родными Linux-инструментами: vold и cryptfs, это совсем другие разработки).
По умолчанию Android использует cryptfs для шифрования пользовательских данных, настроек и приложений (каталог /data). Он должен быть запущен на раннем этапе загрузки ОС еще до запуска графической среды и базовых приложений, так, чтобы более высокоуровневые компоненты системы смогли привести систему к нужному состоянию, прочитав настройки, и вытащить нужные данные из кеша.
В автоматическом режиме сделать это невозможно, так как система должна запросить у пользователя пароль для расшифровки, для чего нужен запуск графической среды, а ее, в свою очередь, невозможно запустить без подключения каталога /data, который невозможно подключить без пароля. Чтобы выйти из этой ситуации, в Android применили необычный трюк, заставив ОС запускаться «дважды». Первый запуск минимальной системы происходит перед запуском cryptfs, чтобы запросить пароль для расшифровки с подключением к /data временной файловой системы, после чего система, по сути, завершается, подключается зашифрованный раздел /data, и запускается уже окончательный вариант ОС.
Шифрование данных в Android включается с помощью меню «Настройки -> Безопасность -> Зашифровать данные». При этом смартфон должен быть полностью заряжен и подключен к заряднику, а в качестве метода разблокировки использоваться PIN-код или пароль (Настройки -> Безопасность -> Блокировка экрана -> PIN-код), который следует ввести перед запуском операции шифрования. Смартфон предупредит о том, что операция займет около часа, в течение которого устройство будет несколько раз перезагружено.
Далее произойдет собственно то, что описано в предыдущем разделе. Смартфон загрузит минимальную версию системы с подключением временной файловой системы к точке /data и начнет шифровать данные, выводя прогресс операции на экран. Само шифрование происходит следующим образом:
- Сначала vold/cryptfs генерирует 128-битный мастер-ключ на основе случайных данных из /dev/urandom и с помощью этого ключа отображает раздел, содержащий каталог /data, в новое виртуальное криптоустройство, запись в которое приведет к автоматическому шифрованию данных с помощью мастер-ключа, а чтение — к расшифровке.
- Мастер-ключ шифруется с помощью PIN-кода пользователя и помещается в конец раздела. Отныне при загрузке система будет спрашивать пользователя PIN-код, читать из раздела зашифрованный мастер-ключ, расшифровывать его с помощью PIN-кода и подключать зашифрованный раздел /data.
- Чтобы зашифровать уже имеющиеся на разделе данные, система последовательно читает блоки данных из раздела и пишет их в криптоустройство, так что, по сути, происходит последовательная операция «чтение блока -> шифрование -> запись обратно» до тех пор, пока не будет зашифрован весь раздел, кроме последних 16 Кб, в которых хранится мастер-ключ.
- В конце операции смартфон перезагружается, и при следующей загрузке система спрашивает PIN-код для расшифровки данных.
В случае с 16-гигабайтным накопителем Galaxy Nexus все эти операции занимают примерно 30 минут, а самое главное — они полностью автоматизированы, поэтому с шифрованием справится даже ребенок.
Чтобы упростить жизнь пользователям, в Google решили использовать один и тот же пароль для разблокировки и расшифровки данных, в результате чего мы получаем довольно противоречивую картину. С одной стороны, пароль для расшифровки должен быть длинным и сложным, потому что злоумышленник может заниматься его подбором и вне смартфона, просто сняв образ раздела. Пароль на разблокировку, с другой стороны, можно оставить и очень простым, так как после нескольких неудачных попыток Android заблокирует экран окончательно, заставив ввести пароль Google.
В результате приходится делать выбор между удобством разблокировки и безопасностью зашифрованных данных (фейсконтроль в качестве средства защиты не рассматриваем). К счастью, в случае если телефон рутован, пароль на расшифровку можно указать вручную c помощью консольного клиента vold. Сделать это можно так:
С этого момента пароли на разблокировку и расшифровку будут отличаться, но вновь станут одинаковыми, если ты сменишь пароль на разблокировку (PIN-код). Чтобы не лазить в консоль, можно воспользоваться одним из графических интерфейсов, например EncPassChanger.
К сожалению, по каким-то причинам Android не позволяет выполнять возврат к незашифрованному разделу. Поэтому, если уж данные были зашифрованы, они такими и останутся ровно до того момента, пока не будет выполнен сброс до заводских настроек (полный вайп) — операция, которая переформатирует раздел, содержащий каталог /data, автоматически превратит его в незашифрованный.
Но здесь может возникнуть вопрос: «А что будет, если я обновлю Android или установлю кастомную прошивку?» В этом случае все зависит от способа установки. В большинстве случаев при обновлении прошивки или установке альтернативной прошивки примерно той же версии (например, замена CyanogenMod 10.1 на Paranoid Android 3 или MIUI 5) вайп делать не требуется. Это значит, что установленная прошивка при попытке примонтировать раздел /data «сообразит», что имеет дело с зашифрованным разделом, запросит у тебя пароль и преспокойно расшифрует данные.
Если же для установки требуется полный вайп, что обычно бывает необходимо при переходе на новые версии Android, то здесь ситуация еще проще. Во время вайпа раздел /data будет переформатирован и автоматически превратится в незашифрованный. Главное, сделать перед обновлением бэкап с помощью Titanium Backup или Carbon.
Google уже давно озвучила свою позицию по отношению к карте памяти как к свалке барахла, на которой конфиденциальных данных не может быть по определению, а даже если и есть, шифровать их не имеет смысла, так как пользователь может решить вставить карту в другой телефон. Поэтому стандартных путей зашифровать карту памяти в Android нет, и, чтобы получить такую функциональность, придется использовать сторонний софт.
Среди шифрующего стороннего софта мы имеем выбор из трех разных классов приложений:
- Вещь в себе. Приложение, способное создавать и открывать криптоконтейнеры, но не позволяющее подключать их к файловой системе. Своего рода файловый менеджер с поддержкой зашифрованных томов. Вещь малополезная, так как годится только для ведения дневника и заметок.
- ПсевдоФС. В Linux-ядрах многих стоковых и альтернативных прошивок есть поддержка драйвера файловых систем пространства пользователя FUSE, на основе которой в свое время было разработано несколько шифрующих ФС. Одна из них — EncFS. В Android она есть в виде приложения Cryptonite, Encdroid и других. Такие софтины позволяют зашифровать любой каталог так, чтобы к нему имели доступ абсолютно все приложения.
- Основанные на dm-crypt. Схожи по функциональности и реализации с предыдущими, но используют для шифрования родной dm-crypt. LUKS Manager — лучший представитель класса таких софтин. Позволяет создать на карте памяти файл-образ, который в любой момент можно подключить к любому каталогу для доступа к данным. То же самое можно сделать из Linux с помощью cryptsetup или из Windows, используя FreeOTFE.
Cryptonite представляет собой обертку вокруг шифрующей файловой системы EncFS и позволяет создавать и просматривать зашифрованные тома на карте памяти и внутри Dropbox, а также подключать тома к каталогам карты памяти так, чтобы они были видны всем приложениям. Нас в первую очередь интересует последний вариант использования как единственный приемлемый для повседневного применения, но он требует прав root, а также наличия поддержки FUSE в ядре.
Использовать Cryptonite в этом качестве довольно просто, однако, чтобы не возникло путаницы, разберемся с принципами его работы. В основе приложения лежит хорошо известный линуксоидам инструмент под названием EncFS. По сути, это утилита, которая позволяет отобразить один каталог в другой так, чтобы записанное во второй каталог автоматически попадало в первый в зашифрованном виде, а при чтении, соответственно, расшифровывалось. Пока отображение включено — доступ к данным есть, но стоит его отключить, как содержимое второго каталога исчезнет и останется только первый, содержимое которого полностью зашифровано.
По этой причине для Cryptonite необходимо наличие двух каталогов: первый — для хранения зашифрованных данных и второй — пустой каталог, куда будет отображаться содержимое первого в расшифрованном виде. Для простоты назовем их crypt и decrypt. Создаем эти два каталога на карте памяти с помощью любого файлового менеджера. Запускаем Cryptonite, идем в «Настройки -> Mount point» и выбираем каталог decrypt. Теперь он всегда будет использоваться как точка доступа к зашифрованным данным. Возвращаемся обратно, переходим на вкладку LOCAL и нажимаем кнопку «Create local volume», чтобы инициализировать зашифрованный каталог. Выбираем каталог crypt и вводим пароль. Теперь осталось вернуться на главный экран и нажать кнопку «Mount EncFS» (и вновь ввести пароль). С этого момента все, что ты скопируешь в каталог decrypt, автоматически попадет в каталог crypt в зашифрованном виде, и после отключения decrypt никто не сможет прочитать его содержимое (можешь проверить, скопировав несколько файлов в decrypt, а затем просмотрев содержимое crypt).
Таким же образом, кстати, можно организовать шифрование данных в Dropbox. Cryptonite позволяет сделать это из коробки, но в этом случае доступ к данным можно будет получить только через само приложение, то есть для любых операций над зашифрованными данными придется запускать Cryptonite и через его встроенный менеджер файлов совершать все действия. Сам Dropbox для Android, конечно, ведет себя так же, но у него хотя бы открытый API, который могут использовать другие приложения, а здесь только доступ вручную.
Чтобы обойти эту проблему, можно установить сервис Dropsync, который висит в фоне и периодически синхронизирует содержимое выбранных каталогов с Dropbox. Достаточно настроить его на синхронизацию каталога crypt (но не decrypt), и данные в зашифрованном виде будут автоматически попадать в Dropbox. Чтобы получить доступ к данным с большого брата, можно воспользоваться версией EncFS для Linux или Windows. О том, как ими пользоваться, не писал только ленивый.
Почему компьютер не видит смартфон через USB и как это исправить
Вы используете свой смартфон (планшет) Android, чтобы сохранить персональные фотографии, читаете важные электронные письма, делаете онлайн-покупки с помощью вашей кредитной карты, редактируете и передаете важные документы? Если ваш ответ «да», то вы должны задуматься о шифровании вашего устройства.
В отличие от iPhone, устройства Android автоматически не шифруют данные, которые на них хранятся, даже если вы используете пароль для разблокирования устройства, но если вы используете Android Gingerbread 2.3.4 или выше, то шифрование легко включить.
Шифрование вашего телефона означает, что если телефон заблокирован, то файлы зашифрованы. Любые файлы, отправляемые и получаемые с вашего телефона, не будут зашифрованы, если вы не используете дополнительные методы.
Единственная разница между незашифрованным и зашифрованным телефоном с точки зрения пользователя в том, что вы должны будете теперь использовать пароль для разблокирования телефона (планшета).
Если ваш телефон не зашифрован, то пароль — это просто блокировка экрана. Фактически, в данном случае пароль просто блокирует экран — то есть, не делает ничего, чтобы защитить файлы, которые хранятся на устройстве. Так, если атакующие находят путь обхода экрана блокировки, то они получают полный доступ к вашим файлам.
В случае если телефон зашифрован, пароль — ключ, который дешифрует зашифрованные файлы.
То есть, когда телефон заблокирован, все данные зашифрованы, и даже если атакующие найдут способ обхода экрана блокировки, то все, что они найдут, является зашифрованными данными.
Как включить шифрование на Android-устройстве?
1. Откройте меню Настройки.
2. В Настройках выберите Безопасность > Шифрование (Зашифровать устройство).
3. В соответствии с требованиями, вам необходимо ввести пароль длиной не менее шести символов, по крайней мере один из которых является числом.
Как только вы зададите пароль, запустится процесс шифрования ваших файлов. Шифрование может занять час или больше, таким образом, до начала шифрования вы должны включить зарядное устройство.
Как только процесс шифрования завершится — все готово! Убедитесь, что сохранили свой пароль в безопасном месте, поскольку теперь он вам пригодится каждый раз когда вы захотите получить доступ к телефону. Учтите, что если вы забудете пароль, то на сегодня не существует никакого способа его восстановить.
На самом деле, шифрование Android-устройств вместе с очевидными преимуществами имеет и существенные недостатки:
- Представьте себе, что вам каждый раз, когда вы хотите позвонить, потребуется набирать сложный пароль. Интересно, как скоро это вам надоест?
- Вы не сможете расшифровать зашифрованное устройство, это просто не предусматривается. Для расшифровки есть единственный способ — сбросить телефон в заводские настройки. При этом, естественно, все ваши данные будут потеряны. Особенно интересно это будет выглядеть, если вы забудете предварительно сделать резервную копию.
Таким образом, на сегодня существует непростой выбор — либо вы шифруете ваше устройство и миритесь с огромными неудобствами, либо вы получаете удобство использования, но в ущерб безопасности. Какой путь выберете вы? Я не знаю. Какой бы путь выбрал я? Тоже ответить не могу. Просто не знаю.
Владимир БЕЗМАЛЫЙ
Рубрики:
Всего голосов: 0
Как известно, информация, особенно конфиденциальная, в наше время представляет собой огромную ценность. Поэтому производители личных мобильных устройств, к которым относятся планшеты, заботятся о ее сохранности и безопасности.
Системные инструменты предусматривают возможность шифрования данных на планшете и SD карте устройства. К сожалению, этот процесс значительно снижает производительность устройства. Пользователям Android планшетов, которым эта характеристика важнее безопасности личных данных, посвящена эта информация.
Итак, если вы стали счастливым обладателем Android планшета с предустановленной системой версии 5.0 и выше – пока подобное действие недоступно. Программисты жестко установили принудительное шифрование данных на этих версиях ОС, а хакеры упорно трудятся над обходом запретов. Но, если вы имели на устройстве систему Android более ранней версии, обновили ее до последней и включили шифрование, то его можно отключить. Правда стоит подумать, стоит ли это делать?
Что касается более ранних версий, то начиная с Android 2.3.4, шифрование данных стало возможным в неавтоматическом режиме. В настройках имеется пункт «Безопасность > шифрование > зашифровать устройство». Стоит отметить тот факт, что зашифрованное устройство расшифровке не подлежит – этот процесс просто не предусмотрен производителем. Поэтому при желании отключить ранее включенное шифрование неизбежна потеря зашифрованных данных. Для этого сохраните данные и сбросьте планшет на заводские настройки через режим «recovery».
Сброс на заводские настройки производится следующим способом. Выключить планшет, нажать одновременно кнопки «вкл», «+» и «-» регулятора громкости. Планшет включится в инженерном меню, в котором кнопками громкости выбираем пункт «wipe data/factory reset» и жмем кнопку «вкл». После сброса необходимо выбрать пункт «reboot», после включения планшета восстановить личные данные и не включать шифрование. Удачи в освоении глубин Android технологий.
- https://xakep.ru/2016/05/02/android-encryption/
- http://www.spy-soft.net/shifrovanie-android/
- https://usercpu.ru/kak-otklyuchit-shifrovanie-dannyh-na-android-shifrovanie-dannyh-na/
- https://www.kv.by/content/327937-shifrovanie-dannykh-na-android-ustroistvakh
- https://androidtab.ru/kak-otklyuchit-shifrovanie-na-planshete/