Шифрование на андроид что это

Содержание
  1. Шифрование данных на наших устройствах: как это работает?
  2. Константин Иванов
  3. Что такое шифрование?
  4. Шифрование и Android
  5. Шифрование – это хорошо или плохо?
  6. Как защитить смартфон и данные на нем на случай кражи
  7. Что вор может сделать с телефоном
  8. Продать на запчасти
  9. Снять деньги с банковской карты
  10. Отформатировать и перепродать
  11. Использовать личную информацию для шантажа и вымогательства — или просто слить ее в Интернет
  12. Как надежно заблокировать смартфон на случай кражи
  13. Настройте блокировку экрана
  14. Установите PIN-код для SIM-карты
  15. Зашифруйте свои данные
  16. Защитите паролем отдельные приложения и уведомления от них
  17. Настройте резервное копирование данных
  18. Включите функцию «Найти устройство»
  19. Шифрование устройства: как включить и зачем это нужно?
  20. Шифрование данных в Андроид. Как это работает.
  21. Полнодисковое шифрование (FDE) данных в Андроид
  22. Стойкий пароль шифрования данных в Андроид
  23. Как работает FDE шифрование данных в Андроид
  24. Пофайловое шифрование (FBE) данных в Андроид
  25. Аппаратная поддержка шифрования
  26. Выводы

Шифрование данных на наших устройствах: как это работает?

Константин Иванов

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

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

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

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

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

Но приложению известно, что 1 означает «А», что ни одно число больше 33 не подходит, а также приложение имеет доступ к словарю операционной системы для проверки написания, поскольку последовательность 11 может означать как «АА», так и «АК», в зависимости от того слова, которое вы печатали. Когда кто-то другой использует приложение, чтобы прочитать то, что вы написали, написанное выглядит нормальным образом.

Теперь представьте другую ситуацию. Порядок чисел был изменен на обратный, 13 было добавлено между 11 и 15, пробел между словами был убран, а в каждый небольшой интервал между буквами была вставлена случайная нечитаемая последовательность символов. Этот файл нельзя будет прочитать без использования приложения, в отличие от первого примера, с которым при наличии желания и терпения можно справиться. Так работает алгоритм шифрования. Он помогает программе превратить информацию любого вида в мешанину, которую легко расшифровать при помощи алгоритма и очень сложно и затратно по времени – без него.

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

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

Шифрование и Android

01

Android поддерживает шифрование на уровне файла и контейнера (полнодисковое шифрование). Как платформа для приложений он также может поддерживать сторонние методы шифрования, такие как безопасные папки или зашифрованная переписка в мессенджерах и почте. Это означает, что чипсет устройства содержит компонент, который установлен, чтобы помочь на лету зашифровывать и расшифровывать данные. Действительный ключ к расшифровке файлов хранится на устройстве, и каждое действие пользователя – пароль, отпечаток пальца, доверенное устройство и др. – которое используется для получения доступа к зашифрованным данным, обращается к Secure Element (отдельному микропроцессору наподобие тех, что используются в пластиковых картах). Начиная с Android 6.0 Marshmallow, все функции шифрования могут выполняться с использованием этого Secure Element и закрытого ключа, токенов (одноразовых или многоразовых электронных ключей), которые применяются для шифрования и расшифровки данных. Это означает, что без предоставления процессору действующего токена данные останутся зашифрованными.

Ваша переписка и действия в браузере также могут подвергаться шифрованию. Вероятно, вы обращали внимание на то, что в вашем браузере многие сайты имеют адрес, начинающийся с HTTPS вместо HTTP. HTTP означает Hypertext Transfer Protocol (протокол передачи текста), и это протокол (спасибо, кэп!), который используется, чтобы отправлять и получать данные в сети Интернет. В свою очередь, HTTPS означает «HTTP over SSL» (Secure Sockets Layer, уровень защищенных сокетов), он добавляет в протокол стандарт шифрования. Все данные, которые вы вводите в браузере, изменяются при помощи открытого ключа, который вы скачиваете с сайта, попадая на него, и только закрытый ключ – который имеется на веб-сервере – может их расшифровать.

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

Для того, чтобы вести зашифрованную переписку, обычно требуется скачать приложение из Google Play. Такие приложения, как Signal или WhatsApp, предлагают шифрование, которое называют сквозным, это означает, что приложение назначает ключи отдельным контактам или группам и сообщение может прочитать только то лицо, которому оно адресовано. BlackBerry Messenger многие считают безопасным, но поскольку в нем имеется лишь один общий ключ, который есть на всех устройствах BlackBerry, эта безопасность представляется несколько спорной. BBM Protected доступен для групп, которым требуется более высокий уровень шифрования или сквозное шифрование. iMessage от Apple также имеет сквозное шифрование, но только в случае, если все участники переписки – счастливые обладатели iPhone.

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

Шифрование – это хорошо или плохо?

02

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

Источник

Как защитить смартфон и данные на нем на случай кражи

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

20210624 Leonid

how to theft proof your smartphone featured

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

Что вор может сделать с телефоном

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

Продать на запчасти

Самый частый сценарий — смартфон просто продают на запчасти, особенно если он попал к вору заблокированным. Если целью злоумышленника было именно украсть телефон, а не навредить конкретному человеку, то довольно высок шанс, что он не станет намеренно заниматься взломом. Любые манипуляции с включенным аппаратом повышают риск попасться и пойти под суд.

Снять деньги с банковской карты

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

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

Отформатировать и перепродать

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

Использовать личную информацию для шантажа и вымогательства — или просто слить ее в Интернет

Если на вашем смартфоне хранятся важные документы, преступник может угрожать удалить их или, наоборот, разослать по списку контактов — и требовать с вас выкуп. То же самое касается и личных файлов, которые могут компрометировать вас или еще кого-то. Вор может скопировать и проанализировать информацию из приложения Файлы на iPhone (в первую очередь это все содержимое iCloud), всей памяти смартфона на Android или облачных дисков, доступ к которым открыт на вашем устройстве.

Еще вор может поискать что-нибудь интересной в вашей переписке — в первую очередь в мессенджерах. Или попытаться взломать ваши учетные записи в Facebook или Instagram и пойти выпрашивать деньги по друзьям и знакомым. Также в теории он может попробовать привязать ваш банковский аккаунт к другому устройству, но это уже маловероятно. К тому же ему придется держать телефон включенным, то есть подвергать себя риску быть пойманным.

Наши советы помогут сделать так, чтобы ваш телефон вор мог бы максимум сдать на запчасти, а все остальное у него бы не вышло.

Как надежно заблокировать смартфон на случай кражи

Как сделать так, чтобы в случае кражи у преступника не было доступа к важной информации, а вы могли восстановить свои данные на новом смартфоне и ни о чем не переживать?

Настройте блокировку экрана

Для начала убедитесь, что ваш телефон самостоятельно блокирует экран. В устройствах на базе Android это можно сделать в Настройках в разделе Безопасность. Правда, стоит учитывать, что производители аппаратов на Android любят кастомизировать интерфейсы своих продуктов, так что от телефона к телефону настройки могут немного различаться. Мы в этом посте ориентируемся на Android 11 в версии для Google Pixel как на максимально стандартную его реализацию. Ну а в iPhone этот параметр находится в секции FaceID и код-пароль (или TouchID и код-пароль для iPhone 8 и версий постарше).

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

Установите PIN-код для SIM-карты

Да, его придется вводить при каждом включении телефона или смене устройства, но это происходит не так уж часто, а безопасность того стоит: без PIN-кода преступнику будет достаточно вставить вашу SIM-карту в любой смартфон и позвонить с него самому себе, чтобы узнать ее номер. Зная его, вор сможет авторизоваться в некоторых сервисах, проходить двухфакторную идентификацию и переводить деньги с банковских карт через SMS. Ну и конечно, PIN-код от SIM-карты должен отличаться от того, который вы используете для разблокировки телефона.

Как установить PIN-код для SIM-карты на Android:

Как установить PIN-код для SIM-карты на iOS:

Зашифруйте свои данные

Полнодисковое шифрование (FDE, full disk encryption) — еще одна функция, которая поможет защитить информацию. Если она включена, то все хранящие в смартфоне файлы по умолчанию шифруются, и их невозможно прочитать, не разблокировав смартфон. На iPhone и смартфонах с Android 5 и выше шифрование данных включено по умолчанию. Для более ранних версий Android его нужно активировать вручную.

Как включить полнодисковое шифрование на Android:

Защитите паролем отдельные приложения и уведомления от них

Установите отдельный пароль или графический ключ для критически важных приложений: банковских и системных (Google Play или App Store, платежные сервисы и SMS). Затем отключите для них показ уведомлений. Теперь прочесть оповещения и SMS вам будет немного сложнее, зато посторонним — практически невозможно поймать ваш разовый код для авторизации или перевести на свой счет ваши деньги: приложения и сообщения с кодами подтверждения останутся для него недоступны.

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

На iOS функции блокировки приложений нет, но их можно защитить, установив лимит экранного времени. Для этого:

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

Однако хоть эта функция и позволяет ограничить доступ, у нее есть недостатки: если вы подолгу пользуетесь приложением, постоянные требования ввести код и уведомления о лимите могут раздражать. В качестве альтернативы можете установить из App Store специализированные утилиты для защиты приложений — это проще, чем разбираться в настройках самому.

Настройте резервное копирование данных

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

Как настроить резервное копирование на Android:

Настроить резервное копирование на iPhone можно двумя способами. Более простой вариант — использовать автоматическое резервное копирование с помощью iCloud:.

Если пользоваться облаком вам по каким-то причинам не хочется, то вы можете использовать резервное копирование с помощью компьютера — на сайте Apple есть подробная инструкция, как это сделать.

Включите функцию «Найти устройство»

Функции Find my iPhone (на iOS) и Найти мое устройство (на Android) позволяют отследить местоположение потерянного или украденного смартфона через аккаунт Google или Apple ID. Также с их помощью можно удаленно заблокировать устройство и даже полностью стереть с него все данные. Но есть важное условие: на момент кражи или потери эти функции должны быть уже активированы. Поэтому лучше это сделать, не откладывая в долгий ящик.

Как включить на Android функцию «Найти мое устройство»:

Как включить на iPhone функцию Find my iPhone:

Затем перейдите в раздел «Безопасность» в аккаунте Google или в приложение «Локатор» на iPhone или iPad и найдите смартфон в списке устройств. Вы увидите функции «Заблокировать» и «Стереть устройство». Они пригодятся, если телефон украли в разблокированном состоянии и на нем есть конфиденциальная информация.

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

Если вы не уверены, что смартфон украден, а не потерян, то при удаленной блокировке можно указать сообщение и резервный номер для связи, которые появятся на экране. Правда, дальше придется быть бдительнее обычного: воры часто используют его как возможность для фишинга — например, чтобы отправлять фальшивые уведомления от службы поддержки. Цель мошенников — узнать пароль от вашего аккаунта Google или Apple ID и отвязать устройство от учетной записи. Так что в этом случае надо сохранять ясность ума и не переходить по сомнительным ссылкам, и уж тем более не вводить там конфиденциальную информацию.

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

Источник

Шифрование устройства: как включить и зачем это нужно?

f 02Шифрование – это первое, что вы должны включить на вашем телефоне. Без шифрования ваш смартфон – это находка для любого нашедшего. Шифрование – это реально та функция, которая хранит все пользовательские данные от вмешательства третьих лиц.

Функция шифрования “маскирует” все данные на телефоне и карте памяти, и без пароля получить к ним доступ практически невозможно.

Итак, как включить шифрование? Переходим в:

Если вы не можете найти пункт “Шифрование”, используйте поиск в настройках. В поисковую строку вводим “Шифрование” и выбираем “Шифрование устройства”. Включить шифрование.

crypto

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

Шифрование есть на всех современных версиях Андроид, начиная с Android 4. Советую ставить ставить сложный пароль от 12 знаков и выше, который вы не забудете.

На сегодня способов взломать ваше шифрование всего 2 (и то они требуют несопоставимых временных и, возможно, денежных затрат): брутфорс или какие-то бэкдоры с правами Рут. Но даже с правами Рут мы не сможем расшифровать внутреннее хранилище в телефоне и ничего оттуда не выдернем. Единственный рабочий способ – внести ключ от шифрованного раздела и загрузит систему.

Без шифрования ваш телефон вам не принадлежит. Можно зашифровать внутреннюю память в телефоне и SD-карту. И если стоит действительно «сильный» пароль, взломать ваш телефон очень сложно, и только через брутфорс (подбор паролей).

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

Шифрование Android использует те же методы шифрования, что и iPhone. Но настроенный девайс на Андроид будет в разы безопаснее, чем на Айфон.

Источник

Шифрование данных в Андроид. Как это работает.

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

EncryptedAndroid

Полнодисковое шифрование (FDE) данных в Андроид

Впервые полнодисковое шифрование (full disk encryption — FDE) пытались внедрить еще в планшетной версии Android 3.0 Honeycomb. Тогда вместе с ядром Linux 2.6.36 в ней появился модуль dm-crypt, обеспечивающий возможнoсть шифрования на любом блочном устройстве хранения данных (включая NAND Flash). В универсальной четвертой версии Android шифрование также было доступно, однако для большинства оно оставалось невостребованной опцией. Из-за отсутствия программных оптимизаций и низкой скорости встраиваемых процессоров того времени включение шифрования приводило к падению производительности ввода-вывода в 6–8 раз на топовых моделях и до 20 раз на бюджетных.

1484292986 ae6b bench1Тесты скорости чтения/записи до… 1484292993 0664 bench2…и после включения шифрования на смартфоне OnePlus One под управлением Android 6.0

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

Именно в пятой версии Андроида появился флаг forceencrypt fstab, указывающий на необходимость активации шифрования при первом включении устройства. Обрати внимание: есть принципиальная разница между тем, было ли устройство обновлено до Android 5.x или новее либо сразу выпускалось с такой вeрсией. Во втором случае шифрование данных будет выполняться всегда. В первом варианте (при обновлении) оно останется опциональным и может быть отключено сбросом до заводских настроек (factory reset).

В общем случае для полнодискового шифрования в Android используются три битовые последовательности: мастер-ключ, соль и пользовательский пин-код. Мастер-ключ и соль генерируются автоматически, а пин-код вводится владельцем устройства. Роль пин-кода может также выполнять пароль, графический ключ или любой другой «секрет» — для процессора это все равно битовая последовательность, причем довольно кoроткая.

Стойкий пароль шифрования данных в Андроид

Большинство пользователей задает короткий пароль на смартфоне или планшете, поскольку им часто приходится его вводить. Проблема в том, что в Android используется один пароль для всех операций, включая разблокировку экрана и расшифровку данных. Приложение EncPassChanger позволяет установить раздельные пароли и повысить криптостойкость схемы хранения мастер-ключа, которым шифруются данные пользователя. Приложение работает на Android 4.0.3 и выше (требуется root).

1484293060 39d1 changerEncPassChanger

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

При первом включении устройство с предустановленной ОС Android 5.0 и выше гeнерирует псевдослучайный 128-разрядный ключ. Его называют мастер-ключом, или DEK (device encryption key). Помимо DEK, также генериpуется еще одно псевдослучайное 128-битное число (соль), а пользователя просят ввeсти пароль.

Именно с помощью DEK в конечном счете шифруются все данные на пользoвательском разделе /data. Как именно выглядит этот ключ, владелец устройства не знает. Он никогда не вводит его и даже не может считать штатными средствами.

В ранних версиях Android (до 5.0) мастер-ключ и настройки шифрования хранились в отдельной незашифрованной структуре crypto footer (упрощенный аналог LUKS) в начале зашифрованного раздела data. Сам DEX шифровался другим ключом, вычисляемым на основе пользовательского пароля и соли.

Такой способ не обеспeчивал защиту от брутфорса мастер-ключа на внешних вычислительных системах, поэтому в Android 5.0 и выше появилось новое требование к производителям устройств: предоставлять на аппаратном уровне защищенное хранилище ключей. Дополнительно DEK стал подписываться с использованием еще одного ключа (HBK — hardware-bound private key), специфичного для данного устройства. Он захардкожен на этапе производства и не доступен ни одному пользовательскому процессу.

Как работает FDE шифрование данных в Андроид

Поэтапно схема создания ключей для шифрования пользовательских данных в Android 5.0 и выше выглядит так:

Мастер-ключ используется для шифрования всего содержимого пользовательского раздела во вcтроенной памяти устройства. Для каждого сектора генерируется свой вектор инициализации с солью и указанием номера сектора (ESSIV). При вводе пользовательского пароля мастер-ключ расшифровывается, и далее пользовательские данные автоматически расшифровываются в фоне.

Недоступность всех ключей для прямого считывания (например, запущенным на устройстве скриптом) обеспечивается их обработкой только внутри изолированной доверенной среды исполнения (trusted execution environment — TEE). В процессорах архитектуры ARM роль TEE выполняет TrustZone, которая обеспечивает контроль целостнoсти данных, их защищенное хранение и изолированное выполнение кода. В ней же хранятся и промежуточные значения, вычисляемые функцией формирования ключа.

1484293082 be69 trustzoneСхема организации доверенной среды (изображение: genode.org)

Как хранение ключа, так и все ключевые криптографические процедуры в современных версиях Android должны выполняться в изолированной среде, недоступной пользователю и приложениям. На практике же это условие соблюдается не всегда, поскольку Android работает на совершенно разных платформах. Концептуально их три: ARM, Intel x86 и MIPS. В каждой из них есть свои архитектурные ветвления, которые добавляют путаницы. Более того, на базе одних и тех же ядер (например, ARM Cortex-A53) каждый производитель, обладающий лицензией на архитектуру (architectural license), можeт сделать свою версию однокристальной системы с любыми нестандaртными свойствами.

Именно из-за такого разнообразия платформ Google до сих пор не мoжет обеспечить единый фундамент для шифрования, как это сделала Apple еще в 2013 году (см. Secure Enclave). Сегoдня в устройствах под управлением Android либо защищенного хранилища ключей нет вовсе, либо оно не имеет надежной реализации.

Например, в чипах Qualcomm Snapdragon используется собственная реализация аппаратно изолированного окружения — QSEE (Qualcomm secure execution environment). В нем запускаются доверенные обработчики (trustlets), включая модуль обработки ключей (KeyMaster). Как показал этим летом Гэл Беньямини (Gal Beniamini), в QSEE по факту нет полнoй аппаратной изоляции. Атакующий может запустить свой код в пространстве QSEE. При этом он станет доверенным и автоматически повысит привилегии, после чего сможет считать через KeyMaster как зашифрованный мастер-ключ, так и захардкоженный ключ HBK.

Беньямини опубликовал скрипт для извлечения ключей с устройств на базе Qualcomm Snapdragon и дальнейшие инструкции по подбору пользовательского пароля перебором. Брутфорс не представляет сложности, так как у основной массы пользователей короткие пароли. Поскольку атака перебором выпoлняется не на смартфоне, а на любом компьютере с помощью скрипта, встроенные средства защиты от брутфорса оказываются бессильны. При внешнем брутфорсе не возникает ни проблем с принудительными задержками, ни риска стирания данных после N неудачных попыток.

1484293104 b5de enableВключаем шифрование

Использовать же длинный комплексный пароль на практике слишком неудобно. Можно придумать сколь угодно сложный, но представь, что при каждой разблокировке экрана придется вводить эту абракадабру. Аутентификация по отпечатку или распознаванию лица мало меняет ситуацию, поскольку это лишь дополнительные способы авторизации, созданные для удобства. В любoм случае ключ DEK будет зашифрован каким-то коротким битовым набором.

Сказанное выше не означает, что калифорнийский разработчик однокристалок так уж плох. Просто продукция Qualcomm чаще подвергается стороннему аудиту. В устройствах с другими SoC дела обстоят не лучше. В частности, уязвимость доверенной среды исполнения (TEE) в однокристалках HiSilicon подробно разбиралaсь на прошлогодней конференции Black Hat.

Недостатки полнодискового шифрования известны давно. Применительно к Android и dm-crypt я бы выделил следующие принципиальные моменты:

К счастью, полнодисковое шифрование не единственный вариант защиты данных в Android.

Пофайловое шифрование (FBE) данных в Андроид

В Android 7.0 появилась пpинципиально новая функция — пофайловое шифрование (file based encryption — FBE), которое выполняeтся с использованием возможностей файловой сиcтемы ext4. Новая реализация шифрования требует наличия аппаратно изолированной среды (trusted execution environment) с пoддержкой API Keymaster 1.0 (старые версии 0.xx не годятся). Выполнение алгоритма AES процессором должно обеспечивать расшифровку данных со скоростью не менее 50 Мбайт/с. Это довольно жесткие требования, поэтому поддержку Android 7.x пока имеют единичные устройства.

Аппаратная поддержка шифрования

С задачей фонового шифрования в Android гарантированно справляются только новые однокриcталки с TrustZone и 64-разрядными процессорами архитектуры ARMv8-A. Крайне желательно, чтобы их техпроцесс был меньше 28 нм, иначе существенный нагрев и снижение времени автономной работы станут очень заметны.

Если не останавливаться на специфических однокристалках вроде Nvidia Tegra Parker (четыре ядра Cortex-A57) и процессорах 2014–2015 года от Intel (Atom Z3560, Z3570, Z3580, Z3590, архитектура x86-64), то в сухом остатке имеем следующие чипы:

Все они построены на базе 4–8 ядер ARM Cortex-A53 с опциональным дополнением в виде 2–4 более мощных ядер Cortex-A57/A72/A73 или их фирменных модификаций (Qualcomm Kyro, Samsung Mongoose).

Последние версии Android могут работать и на некоторых других пpоцессорах, однако в таком случае придется сильно жертвовать либо скоростью, либо продолжительностью работы от одной зарядки. Большинство же других старых однокристалок в принципе не удовлетворяют минимальным системным требованиям ОС Android 5.1 и выше. Поэтому смартфоны и планшеты с ними больше не получат обновлений — это не только маркетинговое решение.

При использовании FBE каждый файл может быть зашифрован своим ключом и расшифрован независимо от остальных. Эта функция работает вместе с другой новинкой седьмого «Андроида» — прямой загрузкой (Direct Boot).

Direct Boot API обеспечивает более деликатное отделение приватных данных от прочих файлов. Он предоставляeт ту функциональность, которая была недоступна при использовании полнодискового шифрования.

До появления Android 7.0 при активации FDE все данные хранились зашифрованными общим паролем, поэтому смартфоном невозможно было пользоваться до ввода пароля. Теперь же отдельные приложения (например, будильник) можно сделaть доступными прямо на экране блокировки. Они будут работать без авторизации со своими заранее заданными ограничениями, а все пользовательские данные тем временем останутся зашифрованными.

На устройстве с активным пофайловым шифрованием у пользователя появляется две области хранения данных приложений: зашифрованная отдельным паролем (Credential Encrypted — CE) и зашифрованная общим ключом устройства (Device Encrypted — DE). При отключении FBE обе области (CE и DE) остаются открытыми для любого приложения. При активном шифровании файлы области CE расшифровываются только после ввода пользовательского пароля. Файлы DE могут быть расшифрованы сразу после загрузки. Заодно раздельные пароли на кaждый аккаунт позволяют создавать на одном устройстве несколько изолированных пользовательских учеток — например, для детей и ведущих себя подобно детям сотрудников.

Шифрование области CE происходит по алгоритму AES, но уже в другом режиме — XTS. Он разрабатывался специально для шифрования на блочных устройствах и не имеет типичных для режима CBC уязвимостей. В частности, XTS не позволяет определить точку изменения данных, не подвержен утечке данных, устойчив к атакам подмены и перемещения.

С другой стороны, FBE уязвим к side channel атакам, так как, несмотря на шифрование файлов и их имен, он оставляет открытыми метаданные, что можно использовать для выяснения типа хранимой информации и идентификации пользователя устройства.

Выводы

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

Источник

Ошибки и заблуждения
Adblock
detector