9 December 2019

Secured by Knox — механизмы мобильной безопасности Samsung

Samsung corporate blogSmartphones
Если у вас телефон Samsung, то вы, возможно, замечали на экране загрузки фразу «Secured by Knox». Что это вообще значит? Под катом – описание платформы мобильной безопасности, предустановленной на большинстве смартфонов и планшетов Samsung. Это первый русскоязычный обзор того, какие механизмы вообще существуют в решении Knox.



Введение


В 2019 году компания Samsung Electronics отметила 50 лет, а еще этот год отмечен другой круглой датой – 10 лет с момента выпуска первого устройства линейки Galaxy — GT-I7500. Вот так выглядела эта модель:



По сегодняшним меркам телефон имел очень скромные характеристики: экран размером 3.2 дюйма и процессор с тактовой частотой всего в 528 МГц, работал под управлением одной из первых версий ОС Android. Собственно говоря, в 2009 году модель не была уникальной: на рынке были устройства на открытой ОС Android со схожими аппаратными характеристиками на платформе ARM. Было понятно, что для успеха нужна «изюминка», выделяющая компанию из общего ряда.

Несомненно, открытость операционной системы повлияла на успех ОС Android: по оценкам IDC на октябрь 2019 она установлена на 87% проданных смартфонах, и это число продолжает расти. Но и тогда, и сейчас, вопрос безопасности Android – одна из часто обсуждаемых тем.

Samsung представила платформу Knox, как ответ на вызовы в области информационной безопасности мобильных устройств. Первая редакция Knox (старое название «SAFE» или «Samsung for Enterprise») вышла в 2012 году вместе с Galaxy S3.



Последняя на сегодняшний день мажоритарная версия платформы (3.0) была выпущена вместе с Galaxy S9 в 2018. Актуальная версия на момент написания статьи — 3.4. Название Knox происходит от Форт-Нокса – одного из самых защищенных хранилищ золотых запасов в мире.



Что же такое Knox? Сейчас под этим названием (или уже правильнее брендом) понимается всё, что связано в Samsung с мобильной безопасностью. Сюда относят менеджер паролей Samsung Pass, Защищённая папка, платёжный сервис Samsung Pay, и целое семейство корпоративных решений, но в основе этого лежит платформа Knox.
 


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

Сюда включаются следующие принципы: 

  • Безопасность системы строится на аппаратном корне доверия (HW Root of Trust).
  • Контроль безопасности устройства должен начинаться в момент загрузки.
  • Мониторинг безопасности обязателен и регулярен во время работы устройства.
  • В системе должен быть заложен механизм, позволяющий доказать свою целостность сторонним системам.
  • Основная ценность устройства – данные пользователя. Их защита является приоритетом системы.

Особое внимание при разработке платформы Knox уделяется специфическим корпоративным требованиям к безопасности устройств. Мобильные телефоны стали рабочим инструментом: это не только всем привычная офисная работа (почта, мессенджеры, офисный пакет), но и более экзотические варианты: телефон в качестве кассового аппарата, сканера на складе, или даже гида в музее. Для компаний важна возможность управления этими мобильными рабочими местами. 

Платформа Knox решает и эту задачу:

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

Далее подробно об устройстве платформы Samsung Knox.

Построение доверенной среды


Перед тем, как углубиться в рассмотрение отдельных механизмов, нужно пару слов сказать об основе всех аппаратных механизмов защиты платформы Knox – архитектуре TrustZone-based Integrity Measurement Architecture (TIMA). Она базируется на ARM TrustZone Framework.

В парадигме TrustZone существует 2 «мира» (области):

  • Secure («Безопасный») 
  • Normal или Non-secure («Обычный» или «Небезопасный» мир)

Их разделение осуществляется на аппаратном уровне и контролируется отдельным компонентом, который называется Monitor. Выглядит это примерно следующим образом:


Источник: www.arm.com

Функционал телефона делится между этими двумя областями следующим образом:

Secure World:
  • «Чувствительные» вычисления (например, шифрование).
  • Защита критичной информации.
  • Мониторинг состояния ядра ОС, запущенной в Normal World.
  • Доступ к памяти и устройствам, помеченным как Secure (может быть осуществлён только из Secure World).

Normal World:
  • Выполнение основной ОС и всех пользовательских приложений.
  • Приложения, запущенные в Secure World, наиболее привилегированы, и могут получать доступ к ресурсам обеих сред (и Secure World, и Normal World). Приложения из Normal World ни при каких условиях не могут получить доступ к ресурсам Secure World напрямую.

От основ перейдем к самим механизмам защиты в платформе Knox.

Аппаратный корень доверия


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

  • Device Unique Hardware Key (DUHK) или Уникальный аппаратный ключ устройства. Уникальный для каждого устройства симметричный ключ, который создается непосредственно на устройстве с использованием аппаратного генератора случайных чисел. Информация, зашифрованная этим ключом, может быть расшифрована только на том же самом устройстве. DUHK доступен только модулю аппаратного шифрования и не доступен никакому ПО на устройстве. С помощью DUHK шифруются остальные криптографические ключи на устройстве. Когда мы говорим, что какой-то компонент привязан к устройству, чаще всего подразумевается применение именно этого ключа.
  • Device Root Key (DRK) или Корневой ключ устройства. Уникальная для каждого устройства пара ассиметричных ключей (RSA), подписанная корневым сертификатом (X.509) Samsung. DRK защищен с помощью DUHK и доступен только из Secure World. Он однозначно идентифицирует устройство и подтверждает, что оно произведено Samsung.

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


Производство устройств на фабрике Samsung Electronics, г. Гуми, Южная Корея

Загрузка устройства


Безопасная загрузка (Secure Boot)


Процесс загрузки устройства состоит из цепочки загрузчиков, каждый из которых проверяет подпись следующего компонента, после чего запускает его. Если проверка не проходит, процесс загрузки прерывается. Данный механизм называется Secure Boot, в своей работе он использует Samsung Secure Boot Key (SSBK) – асимметричную пару ключей в аппаратном хранилище.
Secure Boot гарантирует загрузку устройства только с помощью доверенных загрузчиков Samsung. Если один из загрузчиков скомпрометирован, то запуск устройства прерывается, предотвращая потенциальную компрометацию устройства.

Доверенная загрузка (Trusted Boot)


Secure Boot путем проверки подписи решает проблему сторонних загрузчиков, но не решает проблему старых, неактуальных версий, потенциально несущих в себе ряд известных уязвимостей. Поэтому разработан механизм доверенной загрузки Trusted Boot, работающий поверх Secure Boot. Он проверяет актуальность версии загрузчика. Результаты проверки записываются в защищённую память в TrustZone Secure World и могут быть использованы для будущих проверок. 

Knox Verified Boot (KVB)


В момент начала загрузки ОС активируется ещё один механизм, называемый Knox Verified Boot. KVB – расширение механизма Android Verified Boot (AVB). Помимо стандартных метрик, контролируемых AVB, KVB также учитывает результаты, полученные Trusted Boot и Secure Boot (т.е. целостность загрузчиков и их актуальность). За счёт выполнения всех операций KVB в загрузчике, данная проверка является надёжной и безопасной (процедура осуществляется вне проверяемого объекта). 

Компонент Knox Verified Boot является достаточно новым и поддерживается устройствами, начиная с Samsung S10, работающих под управлением операционной системы Android P или более поздних версий.

Графически процесс загрузки устройства, защищённого механизмами Knox можно представить следующим образом:



Аппаратный флаг Knox Warranty Bit


Knox Warranty Bit — функция безопасности, позволяющая зафиксировать факт установки неофициальной версии системного программного обеспечения на устройство. Устройства со сработавшим Warranty Bit не могут использовать некоторый функционал, например, Knox Workspace. Флаг не может быть возвращён в исходное состояние. Он гарантирует, что устройство Samsung ранее запускалось только с доверенной ОС.


Рис. Слева кастомная прошивка, KNOX WARRANTY VOID 0x1

Аппаратная блокировка возврата к старым версиям ПО (Rollback Prevention)


Старые версии загрузочных компонентов могут содержать уязвимости. Rollback prevention – функция, блокирующая возврат на более старую версию ОС. Минимальная версия загрузчика, возможная для прошивки, хранится в защищённой области. Минимальная возможная версия ядра ОС хранится в самом загрузчике. При штатном обновлении системы, минимально допустимые версии загрузчика и ОС повышаются. Вернуться на предыдущую или более раннюю версию невозможно.



Вернуться с Android P на Android O невозможно.

Контроль целостности доверенной среды


После запуска целостность системы нужно регулярно проверять. Для этого в Knox существует несколько механизмов.

Компонент Periodic Kernel Measurement (PKM)


PKM осуществляет периодический мониторинг ОС на предмет модификации её компонентов с момента загрузки. В рамках проверки отслеживаются контрольные суммы ядра и статус подсистемы SE for Android (о ней мы поговорим немного позже). PKM работает в Secure World. Таким образом, любая нештатная модификация ядра ОС будет детектирована.

Компонент Real-time Kernel Protection (RKP)


Trusted Boot защищает от загрузки измененного ядра, но ядро может быть подвергнуто атаке во время работы устройства. Необходим постоянный мониторинг целостности кода и критичных данных. RKP – это мониторинг безопасности, расположенный в изолированной среде – либо в ARM TrustZone Secure World, либо в «тонком» гипервизоре, защищенном аппаратными расширениями виртуализации. 

RKP использует специальные методы, чтобы контролировать управление памятью в Normal World, перехватывать критичные запросы и оценить их влияние до того, как произойдёт их выполнение. Механизм защиты ядра в реальном времени дополняет периодические проверки целостности ядра (PKM).



Таким образом, Real-Time Kernel Protection – это гарантия защиты от выполнения вредоносного кода на уровне ядра ОС.

Проверка целостности доверенной среды


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

Удалённая аттестация устройства (Knox Attestation)


Удалённая аттестация позволяет сторонней системе сделать вывод о состоянии конечного устройства. Проверяются, в частности, следующие параметры:
  • измерения, собранные в процессе доверенной загрузки Trusted Boot;
  • логи нарушений безопасности от механизмов PKM и RKP с момента последней перезагрузки;
  • состояние Knox Warranty Bit;
  • различные идентификаторы устройства, такие как IMEI.



Аттестационное сообщение формируется в ARM TrustZone Secure World. Оно является корректным, даже если ОС в Normal World скомпрометирована.

Помимо проверки отдельных параметров, аттестация также оценивает состояние системы в целом. Только когда измерения, собранные Trusted Boot соответствуют эталонным значениям, и значение Knox Warranty Bit не изменено, аттестация считается пройденной.

Аттестационное сообщение не может быть подделано, так как оно подписано с использованием ключа аттестации Samsung Attestation Key (SAK), производного от корневого ключа Samsung. Удалённый сервер может проверить целостность сообщения, используя корневой ключ Samsung. Подпись содержит сгенерированную на серверной стороне криптографическую «добавку» (случайное число, используемое только один раз), чтобы не дать атакующему возможность использовать старое корректное аттестационное сообщение на уже скомпрометированном устройстве.

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

Защита данных


Данные являются основной ценностью мобильного устройства и требуют отдельных механизмов защиты.

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


Полное шифрование внутренней памяти является обязательным требованием для всех устройств на базе ОС Android с версии 7. Knox развивает данную концепцию, храня ключ в защищённом аппаратном ключевом хранилище.



Система Security Enhancements (SE) for Android


Samsung Knox использует расширение безопасности для Android (Security Enhancement for Android, SE for Android), которое добавляет механизм принудительного (мандатного) контроля доступа Mandatory Access Control (MAC) в ОС. 

SE для Android предоставляет два уровня защиты MAC:

  1. Защита на уровне ядра
  2. Защита на уровне промежуточного ПО Android

Цели SE для Android включают в себя изоляцию данных и приложений, ограничения прав системных процессов, в том числе выполняемых от имени супер-пользователя.


Контейнеризация Knox


Одним из частных случаев применения механизма SE for Android является контейнер Knox.
Контейнер разделяет приложения и данные на два независимых пространства: обычную и защищённую области. Данные защищённой области хранятся во внутренней памяти в зашифрованном виде. Ключи шифрования, в свою очередь, шифруются с помощью DUHK-ключа, т.е. они привязаны к конкретному устройству. В случае компрометации устройства (срабатывание Knox Warranty Bit, Trusted Boot и пр.) доступ к контейнеру блокируется. 

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

Технология контейнеризации используется в нескольких продуктах Samsung, таких как Secure Folder и Knox Workspace.



Возможности для корпоративных пользователей


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



Дополнительные источники по теме:



Автор: Владимир Карачаров,
Manager, B2B Pre/Post Sales
Business Development Team
Samsung R&D Institute Russia
Tags:b2bкорпоративное поandroidsamsung knoxмобильная безопасностьtrustzone
Hubs: Samsung corporate blog Smartphones
+10
19.1k 41
Comments 17