Состояние шифрования после смены PIN-кода

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

Вопрос: требует ли изменение пароля шифрования какого-либо длительного процесса повторного шифрования? Другими словами, мое устройство по-прежнему защищено, а данные надежно зашифрованы?

Устройство: Xperia E4 Dual

Версия андроида: 4.4.2 сони стоковая

Ответы (1)

Из официального источника Android :

При первой загрузке устройство создает случайно сгенерированный 128-битный мастер-ключ , а затем хэширует его с паролем по умолчанию и сохраненной солью. (Пароль по умолчанию: «default_password»).
Однако полученный хэш также подписывается через TEE (например, TrustZone), который использует хэш подписи для шифрования главного ключа .

Когда пользователь устанавливает PIN-код/пароль или пароль на устройстве, повторно шифруется и сохраняется только 128-битный ключ. (т. е. изменение PIN-кода/пароля/шаблона пользователя НЕ приводит к повторному шифрованию пользовательских данных .)

Это означает, что, по сути, есть два ключа, которые нужно понять:

  1. Главный ключ
  2. Ключ user_encryption (или просто «ключ»)

Мастер-ключ генерируется только во время первой загрузки и никогда не меняется (если, возможно, не выполнен сброс настроек к заводским настройкам или очистка раздела пользовательских данных). Данные в разделе /data шифруются или расшифровываются только с использованием главного ключа. Мастер-ключ нельзя хранить как есть (это небезопасно, верно?), поэтому он зашифрован с использованием другого ключа, указанного ниже.

Ключ user_encryption — это ключ, с помощью которого можно расшифровать зашифрованный мастер-ключ, потому что только с помощью мастер-ключа можно расшифровать зашифрованные данные. (Этот ключ вычисляется на основе вашего PIN-кода/пароля/что угодно.)

Люди часто склонны считать оба эти ключа одним и тем же, но здесь это не так.

Когда вы меняете PIN-код/пароль разблокировки, меняется только ключ user_encryption, а не главный ключ, поэтому данные не шифруются повторно.

Утверждение «использует хэш подписи для шифрования главного ключа» сбивает с толку. Если мастер-ключ зашифрован с использованием хэша подписи хэша, сгенерированного из мастер-ключа, соли и пароля, то как можно расшифровать мастер-ключ?
Я согласен, это сбивает с толку, и текст в блочных кавычках все еще присутствует в документах Android дословно.
Это мои догадки (дополняющие мое объяснение выше): так называемый user_encryption key, который я упомянул выше, вычисляется как hash_128(sign(hash(master_key_hash, password/pin, salt), TEE_key)). Теперь этот ключ вычисляется на ходу каждый раз, когда вы разблокируете телефон. Это ключ, с помощью которого шифруется главный ключ. Таким образом, один и тот же ключ требуется для расшифровки и получения главного ключа и использования этого главного ключа для расшифровки вашего файла userdata.
@Melab, чтобы ответить на ваш вопрос, возможно, у них также где-то хранится хэш master_key (а не сам master_key). Возможно, я ошибаюсь, единственный способ узнать это — просмотреть исходный код. Если вы сделаете это и обнаружите, что мое объяснение неверно, пожалуйста, не стесняйтесь исправить/отредактировать его.