Шифрование данных. Сравнение Android-приложений для шифрования данных

27.09.2019

ФБР попыталось через суд выкрутить руки компании 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. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов.

Начиная с Android 4.2, вы можете зашифровать все устройство средствами самой операционной системы Android. При этом вам не нужно покупать или устанавливать какие-либо дополнительные приложения. Все осуществляется средствами самой операционной системы, причем доступ к Интернету для этого не нужен. Вы можете зашифровать данные в любой момент, когда посчитаете это целесообразным.

Шифрование Андроид

Работает шифрование так: после включения шифрования все данные на устройстве и на карте памяти будут зашифрованы. Конечно, если кто-то разблокирует ваше устройство, он все равно получит доступ к данным, однако это спасет ваши данные, если кто-то попытается украсть карту памяти или прочитать данные без включения смартфона с его внутренней памяти. У него ничего не выйдет, так как данные будут зашифрованы.

При включении смартфона вам нужно будет вводить пароль, позволяющий расшифровать данные. Без ввода пароля смартфон дальше не загрузится. Это не просто пин-код, это ключ, которым зашифрованы ваши данные.

О шифровании устройства вы должны знать следующие вещи:

  • Шифрование возможно только в одном направлении. После шифрования расшифровать устройство уже будет нельзя. Можно только сбросить его до заводских настроек, но в этом случае вы потеряете все данные.
  • Шифрование всего устройства замедляет работу смартфона. В принципе, в эру 8-ядерных процессоров и при объеме оперативной памяти от 1 Гб это не доставит вам хлопот. На более слабых устройствах «торможение» будет ощутимым.
  • Шифрование устройства не спасет ваши данные от случая, если кто-то попросил ваш смартфон, чтобы просмотреть, а сам в этот момент или установит троян, или просто вручную отправит некоторые интересующие его данные на свой телефон. От таких случаев позволяет защититься только криптоконтейнер: ведь для доступа к данным внутри контейнера нужно будет ввести еще один пароль, который злоумышленник не знает.

Если вы хотите зашифровать все устройство, перейдите в Настройки, Безопасность, затем нажмите кнопку Зашифровать телефон (или Зашифровать планшет) в разделе Шифрование. Далее следуйте инструкциям.

Шифрование сегодня включают почти всюду, часто даже там, где оно не нужно или будет мешать. Одним из таких мест являются наши мобильные гаджеты на Android. Google настаивает на том, чтобы мы шифровали данные в девайсах. Но эксперты говорят, что прежде, чем включать на мобильнике криптографию, лучше подумать.

Текущая ситуация

В The Wall Street Journal подсчитали, что сегодня зашифрованными есть около 10% Android-девайсов. При этом в мире их всего насчитывается 1,4 млрд. В то же время аппараты на базе iOS-почти в 95% случаев используют криптографию. Это объясняется тем, что в современных версиях iOS она активирована по умолчанию.

Исторически сложилось, что Google не удавалось уговорить производителей шифровать свои устройства. Компании даже пришлось отказаться от своего обещания сделать все устройства с Android 5.0 зашифрованными из-за проблем с производительностью. Хотя поисковый гигант все же установил требование о наличии зашифрованного хранилища для всех устройств с Android 6.0. На этой версии ОС сегодня работает лишь 2,3% гаджетов, а само требование касается только новых мобильников, которые работают на Marshmallow «с завода». Другие могут устанавливать шифрование по желанию.

Большинство пользователей придерживается стандартных настроек, которые устанавливает производитель устройства. Именно поэтому хотя почти все Android-смартфоны поддерживают шифрование, пользуются им единицы. Если люди массово не начнут шифровать свои устройства или Google не поменяет свои правила, то может понадобиться несколько лет до использования шифрования на большинстве мобильников.

Свободный доступ или безопасность

Однако нам, простым пользователям, гораздо важнее знать, стоит ли вообще включать шифрование. Например, на старом Android-телефоне, который сейчас хорошо работает, и его нет смысла менять. Если для вас превыше всего приватность и безопасность, тогда шифрованию нет альтернативы.

Но стоит помнить, что использование криптографии требует дополнительных мощностей процессора и памяти. На практике это может дать вам «тормоза» при работе с гаджетом. Все потому, что при чтении данных и записи на диск устройства необходимо дважды выполнить работу: расшифровать данные, обработать их и снова зашифровать. Для старых процессоров ARM это может оказаться достаточно сложной задачей.

Если же у вас сравнительно новый аппарат с 64-битным процессором ARM, тогда проблем будет меньше. Даже если на вашем телефоне установлен 64-битный Android, такие чипы имеют набор команд ARMv8. Они уменьшают затраты на постоянный процесс расшифровки и шифрования.

Вот сравнительный тест скорости работы при активном шифровании на мобильниках при наличии и отсутствии инструкций ARMv8 в процессоре. Это телефоны Moto E (ARMv8) и Moto G. Столбики на графике означают мегабайта в секунду для чтения (оранжевый) и записи (синий) данных. Как видим, наличие инструкций ARMv8 делает аппарат почти вдвое быстрее при активном шифровании.

Вы можете узнать, оснащен ли процессор вашего гаджета инструкциями ARMv8, с помощью таких программ, как CPU-Z или AIDA64. В них можно прочитать название и модель процессора, его архитектуру. Например, ARMv8 есть в чипах Qualcomm Snapdragon 410, Snapdragon 610, Snapdragon 808/810, Samsung Exynos 7 и 8. В общем, если программа выдаст вам имя архитектуры Cortex A72, A57 или A53, тогда в вашем смартфоне или планшете есть ARMv8.

AIDA64 также идет немного дальше и показывает, какие типы шифрования поддерживает процессор. Это могут быть, например, популярные алгоритмы AES, SHA1, SHA2. AES является стандартом шифрования, а два других названия обозначают алгоритмы хеширования. Если программа указывает, что они поддерживаются процессором, тогда шифрование можно включать без существенного уменьшения производительности устройства.

Подобная ошибка может появиться только при условии, что пользователь изначально включил (планшете или другом мобильном устройстве).

Данная функция обеспечивает защиту персональных данных, хранящихся в памяти андроид-девайса. Шифрование в данном случае производится системой ICS с помощью мастер-ключа глубиной 128 бит. Если на разблокировку экрана поставлен пароль или пин-код, то Android по умолчанию выбирает его в качестве «исходника» для создания мастер-ключа дешифрования.

После включения функции шифрования при каждой перезагрузке ОС устройство будет запрашивать заданный пароль или пин.

Однако ни одна система не работает без ошибок и периодически здесь также происходит сбой шифрования андроид, который вносит непредвиденные изменения в 16 килобайтный мастер-ключ.

Такой сбой может «нагрянуть» в любой момент, поэтому чтобы гарантированно не потерять нужную информацию всегда сохраняйте резервные копии данных. Для этого, например, можно делать бэкап на Google-аккаунт.

В противном случае расходы на дешифровку карты «выйдут» гораздо дороже, чем стоимость всей хранящейся в памяти телефона информации (которую потребуется расшифровать). В худшем случае дешифровка займёт столько времени, что информация давно потеряет свою актуальность.

Ошибка шифрования android: что делать?

Итак, что делать, если телефон пишет «сбой шифрования»? Такое сообщение появляется до загрузки графической оболочки по той причине, что модуль, отвечающий за шифрование (Cryptfs) загружается одним из первых. Он позволяет всем остальным модулям дешифровать настройки, считать данные с кэша и загрузить полноценную версию ОС.

  1. 1. Во-первых, нужно извлечь из устройства microSD карту. В связи с политикой Google информация на ней по умолчанию не шифруется, и, соответственно, эти данные ещё могут оставаться доступными.

Самое худшее, что сейчас можно сделать - это нажать единственную софтовую кнопку на экране - Reset phone.

После ее активации (в большинстве случаев) можно попрощаться с информацией, хранящейся в папке /data и, возможно, /sdcard.

  1. 2. После извлечения карты попробуйте перезагрузить андроид-устройство с помощью упомянутой кнопки. Если с первого раза устранить сбой шифрования на планшете не получилось, попробуйте ещё несколько раз: возможно, ключ просто некорректно загружается из-за ошибки в коде, расположенном на внешней карте.

К сожалению, в большинстве перезагрузка сбой шифрования не устраняет, поскольку «сбиты» либо внутренняя карта android-устройства, либо её контроллер.

  1. 3. Если перезапуск телефона/планшета устранить сбой шифрования не помог, следует «откатить» прошивку и установить новую версию криптографического модуля: чтобы устройством можно было воспользоваться.

Для этого потребуется внешняя карта, желательно, не меньше 8 Гб (можно использовать «старую», если с неё сняты резервные копии всех важных данных), на которую будут сохраняться временные разделы /data и /sdcard.

  1. 4. Вставьте microSD карту в андроид устройство.

Следующий этап - подготовка телефона к перепрошивке. Для этого нужно зайти в режим восстановления Android. В зависимости от модели и производителя девайса доступ в данный режим может осуществляться по-разному, однако наиболее распространенной комбинацией клавиш является одновременное нажатие кнопок включения и понижения громкости с фиксацией на одну-две секунды.

В режиме восстановления найдите свойства SD карты и разделите её на сегменты, которые будут отведены под вышеуказанные разделы. Для области /data вполне должно хватить 2 Гб памяти.

Для «свапа» выберите 0M. Процесс подготовки карты займёт некоторое время - в это время можно скачать последнюю версию ICS, соответствующую модели вашего телефона/планшета.

После скачивания сохраните её на уже размеченную SD-карту.

На данном этапе в режиме восстановления должна активироваться возможность

Если посмотреть со стороны безопасности, то ваш Android смартфон - это компактная коробочка, переполненная важной личной информацией, и вряд ли вы хотели бы, чтобы она попала в чужие недобрые руки. Чтобы более реально представить ситуацию, то подумайте о вашей электронной почте, СМС сообщениях, сохраненных номерах кредиток, персональных фото и других чувствительных данных.

Думаю никто не хотел бы оказаться в той ситуации, когда чужой человек завладел бы этими данным, потому что о последствиях этого даже страшно подумать. И это та основная причина, по которой мы приходим к разным методикам организации защиты своего телефона или планшета, и шифрование данных является основным средством защиты данных.

Что такое шифрование?

Шифрование - это обратимый процесс преобразования данных в нечитабельный вид для всех лиц, кроме тех, кто знает как её расшифровать. Единственный способ вернуть данные в читабельный вид, это расшифровать их обратно при помощи правильного ключа.

Такие вещи проще понимать на простых примерах, допустим Вы потеряли свой дневник, и тот кто найдет его и знает русский язык может запросто прочесть и узнать ваши сокровенные секреты, но если бы вы вели дневник на каком то секретном коде, или понятном только вам языке, то никто другой не смог бы его прочесть.

Аналогичный подход можно применить для данных хранящихся на вашем Android устройстве. Вор может завладеть вашим смартфоном или планшетом и получить доступ к персональным данным, но если данные зашифрованные, то это будет всего лишь набор бесполезных абракадабр, которые он не сможет прочесть.

Шифруем Ваш Android

Шифрование Android - очень простая процедура. Примите во внимание, что на разных устройствах меню для шифрования данных могут находиться в разных местах. К тому же кастомные прошивки и UI, например Samsung TouchWiz UX, могут иметь разные требования.

Первым делом установите пароль или PIN код для блокировки экрана. Это пароль или PIN будет составлять часть ключа для расшифровки данных, поэтому его важно установить перед началом шифрования.

Некоторые производители устройств устанавливают дополнительные требования к безопасности, например на Galaxy S3 и Galaxy S4.

После установки PIN или пароля, переходим в подраздел главного меню “Безопасность” и выбираем “Зашифровать телефон” или “Зашифровать планшет” (Encrypt Phone or Encrypt Tablet). На разных устройствах меню для шифрования данных может находится в разных местах, например, в HTC One оно находится в разделе “Память” в главном меню.

Меню для шифрования будет выглядеть как-то так:

Процесс шифрования занимает длительное время, поэтому важно, чтобы ваша батарея была полностью заряжена. Если заряда батареи будет недостаточно, вы получите уведомление перед началом шифрования.

Если всё готово, нажмите кнопку внизу экрана “Зашифровать телефон” или “Зашифровать планшет” (Encrypt Phone или Encrypt Tablet). Здесь ваш телефон спросит пароль или PIN код, введите его для подтверждения. Снова появится предупреждающее сообщение, нажмите кнопку “Зашифровать телефон”.

Ваше устройство перезагрузиться и только после этого начнется шифрование. Вы увидите на экране индикатор прогресса шифрования. Пока работает процесс шифрования не играйтесь с вашим телефоном и не пытайтесь выполнить какие либо действия, если прервать процесс шифрования можно потерять все или часть данных.

Как только шифрование закончилось, телефон (планшет) перезагрузиться, и вы должны будете ввести пароль или PIN, чтобы расшифровать все данные. После ввода пароля все данные расшифруются и загрузиться обычный Android.

Шифрование внешней SD карты

Некоторые устройства, например Galaxy S3 и Galaxy S4, разрешают шифровать данные даже на внешних накопителях - SD картах памяти.

Похожие статьи