06- Análisis forense iPhone – Parte VI – Entendiendo la estructura de claves AES

En este post voy a hacer un repaso a las claves AES que contiene el iPhone. El contenido es estrictamente teórico pero nos va a venir bien para entender las capas de seguridad que vamos a ir “descifrando” en próximos posts.

Antes de entender la estructura de claves es necesario entender las siguientes siglas:

UID (llave 0x7D0)
Es una clave de cifrado Hardware única por cada dispositivo. La llave es accesible solo en modo Kernel y no es accesible desde el espacio de usuario.

GID (llave 0x3E8)
Es una clave de cifrado Hardware única para cada Modelo de iPhone. De esta manera, todos los iPhone 4S tendrán la misma clave 0x3E8.

A partir de estas 2 claves se derivan el resto de llaves del teléfono. Vamos a ver qué otras claves importantes hay y cómo se calculan:

IOAESAcelerator: Algunas claves derivadas son calculados por este servicio en el arranque. Estas claves son generada al cifrar ciertos datos estáticos con las claves UID o GID.

0×835: Es una clave que se ejecuta al arrancar el núcleo. Es usada como clave del dispositivo y protege tanto la clase “keys” como todo el Keychain (el ataque al Keychain es posible porque accedemos a través de una aplicación; si accedemos directamente al .plist y lo analizamos veremos los datos internos cifrados por esta clave). Se calcula cifrando la sencuencia “0×01010101010101010101010101010101″ con la clave UID.

0×836: Es una clave que se calcula en el nucleo durante una restauración. Si el arranque es normal se supone que está a “0″. Se calcula cifrando la secuencia “0x00E5A0E6526FAE66C5C1C6D4F16D6180″ con la clave UID.

0×837: Sirve para descifrar los ficheros de iOS durante las actualzaciones de firmware. Se calcula cifrando la secuencia “0x345A2D6C5050D058780DA431F0710E15″ con la clave GID.

0×838: Se calcula cifrando la secuencia “0x8C8318A27D7F030717D2B8FC5514F8E1″ con la clave UID.

0×899: Se desconoce para que se usa. Se calcula cifrando la secuencia “0xD1E8FCB53937BF8DEFC74CD1D0F1D4B0″ con la clave UID.

0x89A: Se calcula cifrando la secuencia “0xDB1F5B33606C5F1C1934AA66589C0661″ con la clave UID. Es usada a partir del chipa A4 y sirve para cifrar los ficheros SHSH. En esta web se explica que es el fichero SHSH, como se obtiene y para que sirve (generalmente es usado para poder hacer downgrade).

0x89B: Se calcula cifrando la secuencia “0x183E99676BB03C546FA468F51C0CBD49″ con la clave UID. Es usado como clave para cifrar la particion de datos.

En este esquema se ve la arquitectura entera de claves:

En un próximo post veremos como atacar estas claves gracias a una herramienta forense que ha creado Jean Sigwald que funciona hasta iOS 5.

Carlos Rebollo – @CharlieSec

Carlos@highsec.es

Referencias:

1. http://code.google.com/p/iphone-dataprotection/

2. http://theiphonewiki.com/wiki/AES_Keys

3. http://www.securitylearn.net/2012/04/22/extracting-aes-keys-from-iphone/

4. http://esec-lab.sogeti.com/dotclear/public/publications/11-hitbamsterdam-iphonedataprotection.pdf

5. http://staff.science.uva.nl/~delaat/rp/2010-2011/p26/report.pdf

Los comentarios están cerrados.