Как бы ни старались инженеры Google сделать Android более безопасной ОС, когда дело касается юзабилити, им приходится идти на уступки. Вроде бы можно заставить пользователя применять длинный пароль на экране блокировки, но это создаст неудобства; можно зашифровать содержимое карты памяти, но как быть, если юзер вставит ее в другой смартфон? Компромиссы, компромиссы, компромиссы… А если самим сделать то, что Google не может?
Введение
Смартфон, планшет, умные часы. Все это мобильные гаджеты, которые теряются, крадутся, вымогаются, продаются первому встречному. Хранить важные для себя данные в таком девайсе не то что опасно, а сродни выставлению на всеобщее обозрение: взял чужой телефон и за пять минут узнал, с кем человек общается, кому и что пишет, его пароли на сайтах и количество оставшихся денег на счете и кредитной карте (ну ладно, платить по NFC еще нельзя, и то хорошо).
INFO
History Eraser — приложение для очистки истории и паролей браузера, истории звонков, текстовых сообщений, Gmail, кеша приложений и так далее.Понятно, что от непрошеных гостей можно поставить пин на экране блокировки, однако для человека, обладающего хоть десятью граммами серого вещества, не составит труда обойти все эти пины вместе с фейсконтролями (да и отпечаток пальца в iPhone 5s, чего уж там). Шифрование данных? Да, в Android с недавнего времени есть возможность настроить шифрование всех пользовательских данных, да так, что ни один математик не вскроет. Проблема только в том, что они расшифровываются при включении смартфона и остаются открытыми все время его работы. А карта памяти так и вообще доступна всем и вся, даже если ее физически нет в смартфоне (это я про эмуляцию карты памяти в нексусах).
Что еще? Да в общем-то, все. По сути, это весь набор защитных механизмов, которые может предложить ОС в борьбе атаками, основанными на, так сказать, доступе к телу. Есть, конечно, еще разные цифровые сертификаты, шифрованная передача данных по сети и прочее, но все это относится к сетевому взаимодействию. А вот против ручного вмешательства защиты почти никакой. И мы должны это исправить.
До и после
Вообще говоря, все виды защиты смартфона (да и всего что угодно) можно разделить на две простые логические группы: те, что применяются как заблаговременные превентивные меры, перекрывающие доступ к какой-либо информации (пин, пароль, шифрование), и те, что должны сработать уже после того, как злоумышленник получил доступ к смартфону. Ко второму типу в основном относятся разного рода системы удаленной блокировки и поиска, но это также и более изощренные системы, например те, что умеют делать незаметные снимки фронтальной камерой и совершать обратный звонок. Мы рассмотрим их позже, а пока разберемся с тем, как и что мы можем защитить заблаговременно.
Пароли
Первое, что приходит на ум, когда речь заходит о защите информации, — это, конечно же, пароли. Android в смысле обращения с паролями использует несколько стандартных для многих мобильных и не очень систем методику. Пароль Google вводится один раз, после чего на его основе генерируется аутентификационный токен, который сохраняется в памяти устройства в открытом виде, но может быть использован для доступа к аккаунту только с данного смартфона, а в случае утери девайса отозван через веб-интерфейс. Таким же образом действуют многие другие приложения, включая Twitter и Facebook. Что-либо изменить в таком поведении невозможно, да и бессмысленно.
Для хранения браузерных паролей используется другая методика. Все введенные и сохраненные в браузере данные записываются в файл/data/data/com.android.browser/webview.db
, и, хотя штатными средствами просмотреть его невозможно, имея root (а мы ведь любим рутовать смартфоны), легко скопировать файл на соседний смартфон, а затем проанализировать его с помощью любого приложения для просмотра баз SQLite 3.
Я бы хотел сказать, что для создания необходимого уровня безопасности браузер должен запрашивать у пользователя мастер-пароль для расшифровки сохраненных паролей, однако очевидно, что в данном случае имеет место очередной компромисс. А уж как обойти этот компромисс, решать нам. Один из способов — это просто не сохранять пароли в браузере и вводить их каждый раз заново. Удобно? Не думаю.
На компах многие привыкли использовать для решения этой проблемы специальный софт типа KeePass — он хранит все пароли в одном зашифрованном контейнере, который открывается при вводе мастер-пароля. Что мешает нам использовать тот же софт на Android-смартфоне? Ничего, приложение Keeper Password & Data Vault, которое можно найти в маркете по цене 0 рублей 0 копеек, справляется с этой задачей на ура. Возможности приложения:
- Работает везде: Android, iOS, Windows, OS X, Chrome, Firefox.
- Синхронизирует базу паролей между разными инстанциями.
- Позволяет безопасно обмениваться инфой.
- Шифрование: 256-битный AES с генерацией ключей по стандарту PBKDF2.
- Двухфакторная проверка подлинности (с помощью SMS, голосовая проверка или Google Authenticator).
- Автоматическое заполнение полей.
Хакер #180. 2014: люди, вирусы, баги, релизы
В отличие от LastPass и других приложений подобного класса у него есть полностью бесплатная версия (без всяких триалов), которая окупается тем, что не имеет функции синхронизации между устройствами и бэкапа в облако (причем синхронизация тоже работает через облако!). При наличии прав root ограничение легко снять с помощью приложения DataSync, которое умеет синхронизировать данные приложений между устройствами напрямую, что явно намного безопаснее облачного метода (привет АНБ).
Пароли защищены, теперь мы должны подумать, как уберечь от глаз неугодных простые приложения. В Android для этого не предусмотрено никаких средств, что, в общем-то, логично. Если уж смартфон твой (ну или не твой, а только находится в твоих руках), то тебе доступны все приложения и их данные, без всяких дополнительных прослоек безопасности. А вот чтобы отличить своего владельца от чужого, система использует стандартный пин-код или пароль.
Сама по себе идея пин-кода не плоха и как средство против «оставил на десять минут телефон, кто-то в нем поковырялся» подходит отлично, только вот удобства от нее мало. Лично я никогда не хотел жертвовать удобством использования смартфона и не устанавливал ни пин-код, ни другие средства блокировки. Если же без пина никак, то предлагаю хороший способ серьезно упростить себе жизнь с помощью автоматического отключения блокировки на время нахождения дома.
Для этого можно приобрести одну из платных софтин, распространяемых через маркет, либо воспользоваться всеми нами любимым инструментом Tasker (он тоже платный, но заменит сотни приложений). Идея состоит в том, чтобы создать правило, которое будет отключать пин-код экрана блокировки после обнаружения домашней сети Wi-Fi и включать его вновь, когда смартфон окажется вне радиуса действия сети.
Задача очень простая и выглядит так (подробности работы с Tasker см. в предыдущих выпусках журнала):
Context: State -> Near WiFi -> SSID сети
Task: Secure settings -> Clear password
Exit Task: Secure Settings Set Pin
Функция очистки и повторной установки пароля вместо простого отключения пин-кода здесь использована нарочно, так как последнее почему-то не всегда срабатывает.
Альтернатива этому методу — установить пин-код на отдельно взятые приложения и функции. Штатно это сделать, конечно же, не удастся, а вот сторонних приложений с подобной функциональностью в маркете много. Все они работают по одному и тому же принципу: перехватывают вызов приложения и накладывают поверх его интерфейса экран с просьбой ввести пин-код. На секьюрити-фичу это, конечно, не тянет, но как способ закрыть глаз подружки на SMS и почту вполне годится.
Два самых продвинутых блокиратора приложений — это AppLock и Hi App Lock, который почему-то очень любят на XDA. Они имеют практически идентичную функциональность, однако преимущество первого в большом количестве платных дополнений. Основной функционал обоих приложений — это возможность включить защиту любого установленного приложения, однако отдельно предлагается также запретить установку, удаление и убийство приложений, отключить возможность «взять трубку» и просматривать список недавно запущенных приложений. Все это включается одним тапом на главном экране.
В качестве дополнительных функций AppLock также предлагает создать защищенное хранилище фотографий и видео, выбрать шкурку экрана блокировки, настроить профили, между которыми можно переключаться в один тап (удобная штука для быстрого включения/выключения блокировок), сделать так, чтобы расположение клавиш для ввода пин-кода каждый раз было случайным (как я понял, это сделано для защиты от подсматривания, отчего, однако, функция не становится менее смешной), а также позволяет скрыть AppLock из меню приложений с возможностью доступа через звонок на определенный номер или открытие специальной страницы в браузере.
В целом приложение довольно игрушечное, и его очень легко обойти, просто отключив в настройках, но как вариант защиты от дурака сгодится, тем более что лучшего способа еще не придумано.
Шифрование
После того как пароли и приложения были защищены, самое время подумать о данных. Как я уже говорил, в Android начиная с версии 3.2 присутствует система шифрования данных, основанная на Linux-технологии dm-crypt, которая используется для защиты данных на серверах уровня Enterprise. Для ее включения достаточно установить пин-код или пароль на экран блокировки (Настройки -> Безопасность -> Блокировка экрана -> PIN-код), а затем активировать шифрование с помощью опции «Настройки -> Безопасность -> Зашифровать данные». Смартфон уйдет в перезагрузку и зашифрует все приложения и их данные, расшифровка которых будет происходить при каждом включении устройства (для этого потребуется ввести пин-код).
С точки зрения безопасности это очень надежная система шифрования (128-битный AES в режиме CBC и ESSIV: SHA256), однако у нее есть несколько ключевых недостатков. Во-первых, с ее помощью удастся зашифровать только внутреннюю память смартфона, а именно каталог /data
. На свежих смартфонах без карты памяти это не проблема, а вот если данные хранятся на съемном носителе, они останутся незащищенными.
Во-вторых, штатная система шифрования доступна далеко не в каждой прошивке. Причем это относится не только к некоторым кастомным прошивкам, но и к стоковым, которые идут вместе со смартфоном (например, HTC). Ну и третье: система использует один и тот же пароль как для разблокировки устройства, так и для расшифровки данных. А это значит, что придется выбирать между быстротой разблокировки экрана с помощью простого четырехзначного кода и сохранностью данных, для которой требуется сложный пароль (если человек завладеет твоим смартфоном, он сможет снять дамп памяти и за пять минут подобрать четырехзначный цифровой код).
Решить последнюю проблему можно с помощью приложения EncPassChanger, которое позволяет изменить пароль шифрования данных так, чтобы он отличался от пароля экрана блокировки. В этом случае можно будет оставить пароль локскрина простым, а пароль для расшифровки, который нужен только во время включения смартфона, сделать восьми- или десятизначным.
INFO
По сути, EncPassChanger — это просто обертка вокруг консольной командыMARKDOWN_HASH4d562aa5e0a9c74e16a90d6fd6dfa5afMARKDOWN_HASH
.Вторую проблему по понятным причинам мы решить не сможем, а вот для решения первой можно использовать специальное приложение. В маркете есть масса софтин, позволяющих создавать шифрованные контейнеры, однако большинство из них — это бесполезная «вещь в себе», которая позволяет получить доступ к зашифрованным данным только через саму себя. Я предлагаю использовать приложение Cryptonite, которое умеет как работать в режиме «вещь в себе», так и создавать шифрованные каталоги, доступные всем приложениям (при наличии Android 4 и прав root).
Cryptonite опирается на шифрующую файловую систему EncFS, которая работает по принципу «пишем в один каталог, получаем зашифрованный результат в другом». Поэтому перед тем, как ее использовать, нужно создать на карте памяти две папки. Пусть это будет crypt
иdecrypt
. Далее запускаем Cryptonite, идем в «Настройки -> Mount point» и выбираем каталогdecrypt
. Он будет использован как точка доступа к зашифрованным данным. Возвращаемся обратно, переходим на вкладку LOCAL и нажимаем кнопку Create local volume. Выбираем пункт Paranoia, далее каталог crypt
. Дважды вводим пароль. Возвращаемся на вкладку LOCAL, нажимаем кнопку Mount EncFS, выбираем каталог crypt
и вводим пароль.
Теперь все, что ты скопируешь в каталог decrypt
, автоматически попадет в каталог crypt
в зашифрованном виде. После отключения decrypt
(кнопка Unmount на вкладке LOCAL) его содержимое исчезнет, а при подключении вновь появится. Красота такого решения в том, что с каталогом decrypt
можно работать из любого приложения и подключать его только тогда, когда это нужно, а не на все время работы смартфона, как это происходит в случае со стандартной системой шифрования Android.
После кражи
Трудно представить себе человека, который никогда не терял смартфон и не становился жертвой воров. Это, так сказать, встроенная «функциональность», которая идет в комплекте с любым мобильным гаджетом (за исключением разве что умных часов, которые крепятся к телу носителя). Однако сейчас, когда смартфоны стремительно дешевеют, основной проблемой при потере девайса становится не сама досада от этого и необходимость тратить деньги, а то, что хранящаяся на нем информация попадет в чужие руки.
Современный смартфон обычно имеет доступ к огромному количеству сервисов, включая Gmail, Twitter, Facebook, Instagram, содержит в себе фотографии, пароли и видеозаписи. Его потеря может быть чревата очень серьезными последствиями, избежать которых пока можно только двумя общепринятыми мерами: с помощью быстрого аннулирования всех паролей и токенов к веб-сервисам или используя приложения класса «антивор».
Последних в настоящее время развелось довольно много. Если раньше выбор состоял практически исключительно из Prey и еще нескольких малоизвестных аналогов, то теперь антивор есть во многих антивирусах, встроен как один из Google-сервисов в сам Android, доступен как часть прошивки CyanogenMod и даже в виде приложения Plan B, которое можно установить и активировать уже после того, как телефон утерян (работает такая функция, правда, только в Android 2.0–2.3).
Проблема всех этих решений только в том, что от них очень легко избавиться. Все сторонние приложения слетят сразу после сброса до заводских настроек, от которого не спасутся даже те, что используют штатную «защиту от удаления» (которая и без того легко деактивируется через настройки). Этот же сброс сделает бесполезными и встроенные функции антивора Android и CyanogenMod, так как привязка к аккаунту просто исчезнет. Поэтому я бы рекомендовал, как это ни странно, использовать антивирус Avast.
Примечателен он в первую очередь тем, что имеет в своем составе самую правильную из всех виденных мной реализацию антивора. В Avast это отдельное компактное приложение, которое можно не только установить и скрыть из списка приложений, но и (при наличии прав root) прописать в системный раздел, да так, что он выживет не только после вайпа, но и после обновления прошивки с помощью кастомной консоли восстановления (в нем есть скрипт, который заставляет консоль делать бэкап антивора перед обновлением).
Фактически антивор можно убить только двумя путями: установить официальное обновление штатными средствами производителя смартфона (OTA, fastboot или специальное приложение) или вырезать из раздела /system
вручную. Но и это еще не все, специально для устройств с залоченным системным разделом (S-ON) в инсталляторе антивора реализован механизм автоматической установки с помощью перезагрузки в консоль восстановления.
В остальном функционал антивора стандартен: отслеживание положения устройства, включение сигнализации, удаленный вайп и блокировка, а также возможность управления по SMS с заранее заданного доверенного номера.
Выводы
С помощью описанных в статье приложений ты получишь смартфон, все данные на котором будут зашифрованы, пароли и приложения защищены от посторонних глаз, пароль на экране блокировки будет включен только тогда, когда он действительно нужен, а после потери смартфона ты сможешь стереть с него все данные, заблокировать и отследить его положение. Все это отнюдь не панацея, и, как я уже говорил, знающий человек сможет получить все, что ему нужно, но 99% людей будут бессильны.