Файлы System/bin Android 12. Справочник.


  Все     Команда     Скрипт     Служба     Приложение  

set-verity-state
Установить состояние verity

Тип файла: команда
  Eng  

usage: set-verity-state [0]

   

Комментарии
Android может использовать dm-verity для защиты разделов без данных от манипуляций (ссылка, ссылка).

Цель состоит в том, чтобы предотвратить внедрение злоумышленником (имеющим физический доступ к устройству) вредоносного кода, например. в низкоуровневые службы Android, хранящиеся в разделе /system или /recovery.

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

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

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

Конечно, тогда вам понадобится дополнительный механизм для обеспечения целостности загрузочного раздела. Это можно сделать с помощью механизмов, подобных Secure-Boot, где загрузочный раздел снова подписывается другим ключом (RSA), а общедоступная часть этого ключа встраивается на более низком уровне (зависит от поставщика). Такая цепочка механизмов проверки называется цепочкой доверия. В идеале вы хотели бы, чтобы цепочка доверия простиралась до аппаратного уровня, а некоторый ключ поставщика был записан в чип.


Android 4.4 и выше поддерживает Verified Boot с помощью дополнительной функции ядра
device-mapper-verity (dm-verity), которая обеспечивает прозрачную проверку целостности
блочных устройств.

dm-verity помогает предотвратить постоянные руткиты, которые могут удерживать
привилегии суперпользователя и скомпрометировать устройства.

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

Потенциально вредоносные приложения (PHA) с привилегиями root могут скрываться
от программ обнаружения и иным образом маскировать себя.

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

Функция dm-verity позволяет просмотреть блочное устройство, базовый уровень
хранения файловой системы, и определить, соответствует ли оно ожидаемой конфигурации.
Это делается с помощью криптографического хеш-дерева.
Для каждого блока (обычно 4k) есть хэш SHA256.

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