Я включил шифрование устройства, но Android не дал мне возможности выбрать новый пароль, вместо этого он использовал экран блокировки. Я вернулся к настройкам блокировки экрана и изменил пароль, и пароль шифрования изменился автоматически. Но это произошло мгновенно, мое устройство не проходило никакого процесса шифрования.
Вопрос: требует ли изменение пароля шифрования какого-либо длительного процесса повторного шифрования? Другими словами, мое устройство по-прежнему защищено, а данные надежно зашифрованы?
Устройство: Xperia E4 Dual
Версия андроида: 4.4.2 сони стоковая
Из официального источника Android :
При первой загрузке устройство создает случайно сгенерированный 128-битный мастер-ключ , а затем хэширует его с паролем по умолчанию и сохраненной солью. (Пароль по умолчанию: «default_password»).
Однако полученный хэш также подписывается через TEE (например, TrustZone), который использует хэш подписи для шифрования главного ключа .Когда пользователь устанавливает PIN-код/пароль или пароль на устройстве, повторно шифруется и сохраняется только 128-битный ключ. (т. е. изменение PIN-кода/пароля/шаблона пользователя НЕ приводит к повторному шифрованию пользовательских данных .)
Это означает, что, по сути, есть два ключа, которые нужно понять:
Мастер-ключ генерируется только во время первой загрузки и никогда не меняется (если, возможно, не выполнен сброс настроек к заводским настройкам или очистка раздела пользовательских данных). Данные в разделе /data шифруются или расшифровываются только с использованием главного ключа. Мастер-ключ нельзя хранить как есть (это небезопасно, верно?), поэтому он зашифрован с использованием другого ключа, указанного ниже.
Ключ user_encryption — это ключ, с помощью которого можно расшифровать зашифрованный мастер-ключ, потому что только с помощью мастер-ключа можно расшифровать зашифрованные данные. (Этот ключ вычисляется на основе вашего PIN-кода/пароля/что угодно.)
Люди часто склонны считать оба эти ключа одним и тем же, но здесь это не так.
Когда вы меняете PIN-код/пароль разблокировки, меняется только ключ user_encryption, а не главный ключ, поэтому данные не шифруются повторно.
Мелаб
Гокул Северная Каролина
Гокул Северная Каролина
user_encryption key
, который я упомянул выше, вычисляется какhash_128(sign(hash(master_key_hash, password/pin, salt), TEE_key))
. Теперь этот ключ вычисляется на ходу каждый раз, когда вы разблокируете телефон. Это ключ, с помощью которого шифруется главный ключ. Таким образом, один и тот же ключ требуется для расшифровки и получения главного ключа и использования этого главного ключа для расшифровки вашего файлаuserdata
.Гокул Северная Каролина