- #1
Автор Темы
Если при работе в 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"
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"
Последнее редактирование: