Несколько несчастных пользователей iPhone попросили помочь им восстановить данные из своих резервных копий iTunes. Это легко, когда они незашифрованы, но не тогда, когда они зашифрованы, независимо от того, известен ли пароль.
Как таковой, я пытаюсь выяснить схему шифрования, используемую в файлах mddata и mdinfo при зашифрованном виде. У меня нет проблем с чтением этих файлов в противном случае, и для этого созданы встроенные библиотеки С#. (Если вы в состоянии помочь, мне все равно, какой язык вы используете. Это принцип, который я здесь здесь!)
В "Руководстве по развертыванию операционной системы iPhone OS для Apple" указано, что "Резервные копии устройств могут храниться в зашифрованном формате, выбирая Encrypt iPhone Резервная копия в панели сводок устройства iTunes. Файлы шифруются с использованием AES128 с 256-битным ключом. Ключ надежно хранится в цепочке ключей iPhone. "
Это неплохая подсказка, и здесь есть некоторая полезная информация о взаимодействии Aack/Rijndael на AES/Rijndael, предлагающая использовать ключи 128 и CBC.
Помимо любой другой обфускации, необходим ключ и инициализирующий вектор (IV)/соль.
Можно предположить, что ключ - это манипулирование "резервным паролем", на который пользователю предлагается ввести iTunes и передать " AppleMobileBackup.exe", дополненная модой, продиктованной CBC. Однако, учитывая ссылку на брелок для iPhone, я задаюсь вопросом, может ли "пароль резервного копирования" не использоваться в качестве пароля для сертификата X509 или симметричного закрытого ключа, а сам ключ или сам секретный ключ могут использоваться в качестве ключа. (AES и процесс шифрования/дешифрования iTunes симметричен.)
IV - это другое дело, и это может быть несколько вещей. Возможно, это один из ключей жестко закодированный в iTunes или в устройствах сами.
Хотя комментарий Apple выше говорит о том, что ключ присутствует в брелках устройства, я думаю, что это не так важно. Можно восстановить зашифрованную резервную копию на другое устройство, которое предполагает, что вся информация, относящаяся к расшифровке, присутствует в конфигурации резервного копирования и iTunes, и что что-либо исключительно на устройстве не имеет значения и заменяется в этом контексте. Итак, где может быть ключ?
Я перечислил пути ниже с Windows-машины, но это большая часть того, что мы используем.
"\ appdata\Roaming\Apple Computer\iTunes\itunesprefs.xml" содержит PList с записью "Keychain" dict. "\ Programdata\apple\Lockdown\09037027da8f4bdefdea97d706703ca034c88bab.plist" содержит PList с "DeviceCertificate", "HostCertificate" и "RootCertificate", все из которых кажутся действительными сертификатами X509. В том же файле также содержатся асимметричные ключи "RootPrivateKey" и "HostPrivateKey" (мое чтение предполагает, что это может быть оболочка PKCS # 7). Кроме того, в каждой резервной копии есть значения "AuthSignature" и "AuthData" в файле Manifest.plist, хотя они кажутся поворотными, поскольку каждый файл получает поэтапную резервную копию, предположил, что они не так полезны в качестве ключа, если только что-то действительно все это делается.
Там много вводящих в заблуждение вещей, предлагающих получать данные из зашифрованных резервных копий. Это не так, и, насколько мне известно, этого не было сделано. Обход или отключение резервное шифрование - это совсем другое дело, и я не хочу этого делать.
Речь идет не о взломе iPhone или что-то в этом роде. Все, что я здесь сделаю, - это средство для извлечения данных (фотографий, контактов и т.д.) Из зашифрованных резервных копий iTunes, поскольку я могу их использовать без шифрования. Я пробовал всевозможные перестановки с информацией, которую я поставил выше, но не получил нигде. Я был бы признателен за любые мысли или методы, которые я, возможно, пропустил.