En informática , un blob SHSH es una firma digital que Apple genera y utiliza para controlar las versiones de iOS que los usuarios pueden instalar en sus dispositivos iOS, generalmente permitiendo que solo se pueda instalar la versión más nueva de iOS. El nombre público de Apple para este proceso es Autorización de software del sistema (antes de iOS 7 , Personalización del software del sistema ). [1] El término "blob SHSH" no es oficial y se basa en las abreviaturas de hash firmado y objeto binario grande . Un término alternativo, ECID SHSH , se refiere al ECID del dispositivo, un número de identificación único integrado en su hardware. [2]
Este proceso está controlado por el servidor de firma TATSU ("TSS") (gs.apple.com), donde las actualizaciones y restauraciones solo pueden ser completadas por iTunes si la versión de iOS está firmada. Los desarrolladores interesados en el jailbreak de iOS han creado herramientas para sortear este sistema de firmas con el fin de instalar versiones de iOS más antiguas que se puedan jailbreakear y que ya no estén firmadas por Apple. [3] [4]
Los blobs SHSH se crean mediante una fórmula hash que tiene múltiples claves, incluido el tipo de dispositivo, la versión de iOS que se está firmando y el ECID del dispositivo. [5] [ se necesita una fuente no primaria ] Cuando Apple desea restringir la capacidad de los usuarios de restaurar sus dispositivos a una versión particular de iOS, Apple puede negarse a generar este hash durante el intento de restauración, y la restauración no será exitosa (o al menos requerirá eludir la función prevista del sistema). [6] [7]
Este protocolo es parte del iPhone 3GS y dispositivos posteriores. [8]
Cuando iTunes restaura o actualiza un firmware iOS, Apple ha añadido muchos puntos de control antes de que se instale la versión iOS y comience la consolidación en el dispositivo. En la primera "Verificación del software del iPhone", iTunes se comunica con "gs.apple.com" para verificar que el archivo IPSW proporcionado todavía esté firmado. El servidor TATSU devolverá una lista de versiones firmadas. Si la versión no está firmada, iBEC e iBoot rechazarán la imagen y mostrarán un error de "error 3194" o "se rechazó la autorización de la imagen".
iTunes se comunicará con iBoot durante todo el proceso de actualización o restauración para garantizar que el firmware no haya sido modificado a un firmware personalizado ("CFW"). iTunes no actualizará ni restaurará un dispositivo cuando sospeche que el archivo ha sido modificado.
Este es un proceso en cadena: antes de instalar el firmware, el iBoot instalado debe verificar el iBoot que se va a instalar, y así sucesivamente. No puedes instalar versiones de iOS sin firmar, a menos que 1) tengas blobs SHSH2 y hayas configurado nonces (que requieren exploits) o 2) explotes el proceso en cadena.
El requisito de SHSH Blobs para instalar versiones de iOS no firmadas se puede eludir mediante un ataque de repetición , guardando blobs mientras un firmware de iOS aún está firmado y usándolos más tarde al instalar el firmware. Las versiones más nuevas de iOS requieren más elementos, como un nonce válido, al guardar blobs SHSH. Guardar blobs para dispositivos que usan el SoC A12 o más nuevo también requiere obtener un nonce coincidente para un generador de un dispositivo para guardar blobs válidos que se pueden usar más tarde en una restauración. Incluso con blobs SHSH guardados correctamente, a veces todavía no es posible saltar a ciertas versiones de iOS debido a la incompatibilidad del SEP (Secure Enclave) entre versiones.
Las herramientas para guardar blobs SHSH para versiones más nuevas de iOS incluyen la aplicación blobsaver y la herramienta de línea de comandos tsschecker.
Para usar blobs SHSH para instalar una versión de iOS no firmada en un dispositivo, se pueden usar herramientas como futurerestore (basada en idevicerestore) o sus GUI, que permiten la especificación de archivos de firmware iOS y blobs SHSH que se usarán en la restauración.
En el caso de iOS 3 y 4, los blobs SHSH se componían de claves estáticas (como el tipo de dispositivo, la versión de iOS y el ECID), lo que significaba que los blobs SHSH para una versión y un dispositivo de iOS específicos serían los mismos en cada restauración. Para subvertir ese sistema mediante un ataque de intermediario , las respuestas del servidor para los blobs SHSH únicos de Apple para el dispositivo jailbreak se almacenan en caché, de modo que si un usuario cambia el archivo de hosts en una computadora para redirigir la comprobación de blobs SHSH a la caché en lugar de a los servidores de Apple, iTunes sería engañado para que comprobara esos blobs SHSH almacenados en caché y permitiera que el dispositivo se restaurara a esa versión. [8] [9]
iOS 5 y versiones posteriores de iOS implementan una adición a este sistema, un número aleatorio (un nonce criptográfico ) en el "APTicket", [10] lo que hace que ese simple ataque de repetición ya no sea efectivo. [11] [12]
Lanzado por primera vez en 2009, [13] [ ¿fuente autopublicada? ] [14] [ dudoso – discutir ] TinyUmbrella es una herramienta para encontrar información sobre blobs SHSH guardados en servidores de terceros, guardar blobs SHSH localmente, [15] y ejecutar un servidor local para reproducir blobs SHSH para engañar a iTunes para que restaure dispositivos más antiguos a iOS 3 y 4. [16] [ ¿ fuente poco confiable? ] [17] En junio de 2011, iH8sn0w lanzó iFaith, una herramienta que puede capturar blobs SHSH parciales de un dispositivo para su versión de iOS actualmente instalada (limitada a iPhone 4 y dispositivos más antiguos). [18] [19] A fines de 2011, el equipo de desarrollo de iPhone agregó características a redsn0w que incluyen la capacidad de guardar blobs SHSH con APTickets y unirlos a un firmware personalizado para restaurar un dispositivo a iOS 5 o posterior. [20]
No siempre es posible reproducir los SHSH blobs de los dispositivos más nuevos ( Apple A12 y posteriores), porque no hay vulnerabilidades de arranque en la ROM (nivel de hardware) disponibles para estos dispositivos. A partir de octubre de 2012, redsn0w incluye funciones para restaurar dispositivos más nuevos entre diferentes versiones de iOS 5, [21] pero no puede degradar los dispositivos más nuevos de iOS 6 a iOS 5. [22] [23]