Что нового

Шифрование Android. Можно ли извлечь данные из шифрованного раздела.

Статус
Закрыто для дальнейших ответов.

Layder

Z3X-Team
.
27/8/06
2 262
619
Если при работе в Explorer (в eMMC Tool Shuite) наблюдается такая картина:

Mount [system] successfully PartType: LINUX
Mount [cache] successfully PartType: LINUX
Mount [persist] successfully PartType: LINUX
Mount [cust] successfully PartType: LINUX

Mount [userdata] SKIPPED PartType: Full Disk Encryption
Mount [data] SKIPPED PartType: Full Disk Encryption
Mount [storage/sdcard1] SKIPPED PartType: Full Disk Encryption


Это означает, что раздел пользовательских данных зашифрован.

eMMC File Manager выводит такую информацию:

Warning! Partition #46 [USERDATA] Is ENCRYPTED!
Rev: 1.3
Key Size: 16 bytes
Algo: aes-xts essiv:sha256
MKey: 0x40203A849FA58DAFAE95ED1E81EC9C32
Salt: 0x6D7C5B1F84B51F2A657FEAB2865C5324


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


Если говорить коротко о шифровании, то раздел /data шифруется 128битным ключом (16 байт) по алгоритму SHA256 (точнее одной из его разновидности). В данном случае идет речь о FDE (Full Disk Encryption) (полнодисковое шифрование).


1) Первое включение:

При первом включении (также после "wipe data") устройство с предустановленной ОС Android 5.0 и выше генерирует псевдослучайный 128-разрядный ключ. Его называют мастер-ключом (Master Key) или DEK (Device Encryption Key). Помимо DEK, также генерируется еще одно псевдослучайное 128-битное число Salt (соль), а пользователя просят ввести пароль (если пользователь пароль не вводит, а ОС шифрование /data включает, то ОС использует какой-то свой пароль, на знании этого пароля основано получение доступа к /data в Xiaomi через TWRP).

Далее ОС Android рассчитывает промежуточный ключ (IK1), затем к нему примешивает Hardware-Bound private Key (HBK) (индивидуальный ключ процессора), рассчитывает IK2, IK3 и создает Encrypted Master Key (используя KEK, IV (части IK3)), т.е. зашифрованный Master Key (DEK) с помощью пароля пользователя.

Encrypted Master Key и Salt сохраняются в так называемом "Хранилище ключей" (Crypto Footer), которое располагается либо в в самом процессоре (в более новых процессорах), либо в конце зашифрованного раздела userdata (31 сектор от конца).

Все данные на пользовательском разделе /data в конечном счете шифруются именно с помощью DEK. Как именно выглядит этот ключ, владелец устройства не знает, он никогда не вводит его и даже не может считать штатными средствами. Созданием DEK, а также проверкой валидности ключей занимается модуль "KeyMaster", работающий в так называемой "Trusted Execution Environment (TEE)" процессора, за пределы которой не должен выйти ключ шифрования DEK.


2) Включение аппарата при наличии зашифрованного раздела:

Для расшифровки данных, когда пользователь вводит свой пароль (или при его отсутствии используется "дефолтный" пароль), ОС Android получает Salt из "Хранилища ключей" (Crypto Footer), рассчитывает с помощью него промежуточный ключ (IK1), затем с помощью Hardware-Bound private Key (HBK) (индивидуальный ключ процессора), рассчитывает IK2, IK3 и оправляет полученный результат (KEK, IV) для попытки рассчитать DEK в модуль "KeyMaster", который также использует Encrypted Master Key из "Хранилища ключей" (Crypto Footer). Если пароль пользователя верный, то полученный DEK используется для раскодирования раздела /data.

Для того, чтобы пользователь мог сменить свой пароль без перешифрования всего раздела, используется ключ, называемый Encrypted Master Key, т.е. Master Key (DEK), зашифрованный с помощью пароля пользователя. Если аппарат включен, пароль пользователя введен, и данные расшифрованы с помощью DEK, то возможно создание нового Encrypted Master Key, который сохраняется вместо предыдущего в хранилище ключей (Crypto Footer).

3) Невозможность расшифровать раздел данных:

а) при вводе неверного пароля;
б) замена процессора (с другим Hardware-Bound private Key (HBK));
с) замена процессора (с другим Hardware-Bound private Key (HBK) и другим содержимым "Хранилища ключей" (Crypto Footer)).

В этих случаях модуль "KeyMaster" получает не соответствующий зашифрованным данным DEK, и расшифровка раздела данных не предоставляется возможным.

Кому интересно узнать больше, рекомендую статьи:

"Шифрование Android" Автор: Цурова Светлана,
купить чтобы получить доступ к скрытому контенту.

"Как работает полнодисковое и пофайловое шифрование в Android",
купить чтобы получить доступ к скрытому контенту.

"Извлечение аппаратного ключа полнодисковой защиты в телефонах Android на процессорах Qualcomm"
купить чтобы получить доступ к скрытому контенту.
 
Последнее редактирование:

Layder

Z3X-Team
.
27/8/06
2 262
619
Исправил первое сообщение, постарался более понятно изложить принцип шифрования с учетом изучения новых материалов.
 
Статус
Закрыто для дальнейших ответов.

Кто читал эту тему (всего: 730) Детально

Верх Низ