Безопасность системы и ядра

На уровне операционной системы платформа Android обеспечивает безопасность ядра Linux, а также средство безопасного межпроцессного взаимодействия (IPC), обеспечивающее безопасную связь между приложениями, работающими в различных процессах. Эти функции безопасности на уровне ОС гарантируют, что даже собственный код будет ограничен изолированной программной средой приложения. Независимо от того, является ли этот код результатом встроенного поведения приложения или использованием уязвимости приложения, система спроектирована так, чтобы не допустить нанесения вреда мошенническому приложению другим приложениям, системе Android или самому устройству. См. Конфигурацию ядра , чтобы узнать о мерах, которые можно предпринять для усиления ядра на ваших устройствах. Необходимые настройки см. в документе определения совместимости Android (CDD) .

Безопасность Linux

Основой платформы Android является ядро ​​Linux. Ядро Linux широко используется в течение многих лет и используется в миллионах чувствительных к безопасности сред. Благодаря своей истории постоянных исследований, атак и исправлений со стороны тысяч разработчиков, Linux стал стабильным и безопасным ядром, которому доверяют многие корпорации и специалисты по безопасности.

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

  • Модель разрешений на основе пользователей
  • Изоляция процесса
  • Расширяемый механизм для безопасного IPC
  • Возможность удаления ненужных и потенциально небезопасных частей ядра.

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

  • Запрещает пользователю A читать файлы пользователя B
  • Гарантирует, что пользователь A не исчерпывает память пользователя B.
  • Гарантирует, что пользователь A не исчерпывает ресурсы ЦП пользователя B.
  • Гарантирует, что пользователь А не исчерпает возможности устройств пользователя Б (например, телефонии, GPS и Bluetooth).

Песочница приложения

Безопасность приложений Android обеспечивается изолированной программной средой приложений, которая изолирует приложения друг от друга и защищает приложения и систему от вредоносных приложений. Дополнительные сведения см. в разделе «Песочница приложения» .

Системный раздел и безопасный режим

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

Разрешения файловой системы

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

Linux с повышенной безопасностью

Android использует Security-Enhanced Linux (SELinux) для применения политик контроля доступа и установки обязательного контроля доступа (mac) к процессам. Подробности см. в разделе Linux с усиленной безопасностью в Android .

Проверенная загрузка

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

Криптография

Android предоставляет набор криптографических API для использования приложениями. К ним относятся реализации стандартных и часто используемых криптографических примитивов, таких как AES, RSA, DSA и SHA. Кроме того, API предоставляются для протоколов более высокого уровня, таких как SSL и HTTPS.

В Android 4.0 появился класс KeyChain , позволяющий приложениям использовать системное хранилище учетных данных для личных ключей и цепочек сертификатов.

Рутирование устройств

По умолчанию в Android только ядро ​​и небольшая часть основных служб работают с правами root. SELinux по-прежнему ограничивает процессы пользовательского пространства, выполняемые от имени пользователя root. Проверенная загрузка не позволяет пользователю или службе с правами root постоянно изменять операционную систему.

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

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

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

Более надежный подход к защите данных от пользователей root — использование аппаратных решений. OEM-производители могут выбрать аппаратные решения, которые ограничивают доступ к определенным типам контента, например DRM для воспроизведения видео или доверенное хранилище, связанное с NFC, для кошелька Google. В случае утери или кражи устройства шифрование хранилища гарантирует, что доступ к пользовательским данным невозможен без знания учетных данных пользователя на экране блокировки.

Функции безопасности пользователей

Шифрование хранилища

CDD требует, чтобы все устройства, запускаемые с Android 10 или более поздней версии, а также большинство устройств, запускаемых с Android 6,0 ​​или более поздней версии, изначально включали шифрование хранилища.

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

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

Защита учетных данных на экране блокировки

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

Администрирование устройства

Android 2.2 и более поздних версий предоставляют API администрирования устройств Android, который предоставляет функции администрирования устройств на системном уровне. Например, встроенное приложение Android Email использует API для улучшения поддержки Exchange. С помощью приложения электронной почты администраторы Exchange могут применять политики учетных данных блокировки экрана, включая буквенно-цифровые пароли или числовые ПИН-коды, на всех устройствах. Администраторы также могут удаленно стереть (то есть восстановить заводские настройки) потерянные или украденные телефоны.

Помимо использования в приложениях, включенных в систему Android, эти API доступны сторонним поставщикам решений для управления устройствами. Подробности об API представлены в разделе «Администрирование устройств ».