Página 1 de 3

Pre-IPL, conceptos basicos

Publicado: 10 May 2010, 00:01
por fidelcastro
Esta es una explicación de la seguridad fue añadida en la TA88v3 y en la PSP3000.

Cuando la PSP se inicia, el código de arranque (a partir de ahora el pre-ipl o el cargador del ipl)
carga el ipl, desde ya sea la NAND o la memory stick. El IPL es entonces dividido en partes de 0x1000 bytes.

Los primeros 0xA0 bytes de cada bloque es un encabezamiento para el comando nº1 de hardware de encriptación kirk.

Contiene las claves, el tamaño de los datos de cifrado, y dos hashes, uno que es parte de por sí del encabezamiento, y otro para el propio cuerpo. Los 0xF60 bytes restantes son el cuerpo cifrado, que se descifrarán en 0xF60 bytes simples... si los hashes, que sn comprobados por el comando kirk de hardware de por si, son correctos.

(Nota: El cuerpo cifrado puede ser menor que 0xF60; en este caso, los demás bytes son ignorados...
al menos esto sucedía antes de la TA88v3)

La seguridad de los hashes con kirk fue destruida con un llamado timing attack, y entonces el IPL se desprotegió.

¿Qué ha añadido Sony para arreglar esto?

La respuesta puede encontrarse en los ipl's de PSP Slims con un firmware 4.0+. Disminuyeron el tamaño del cuerpo cifrado hasta 0xF40 para dejar 0x20 bytes al final de cada bloque (salida 0xFE0)

Como hemos comentado anteriormente, esos demás bytes eran ignorados... en pre-ipl's de PSP anteriores a la TA88v3,y de hecho, pueden ser aleatorios, y el ipl seguirá cargando en esas PSP's. En los nuevos pre-ipl's, esos 0x20 bytes tienen un significado.

Los primeros 0x10 bytes es un hash desconocido hasta la fecha, calculado desde el bloque descifrado. Se deduce pues que es calculado desde el bloque descifrado y no del cifrado ya que 4.01 y 4.05 tienen muchos bloques de la propia IPL en común, los cuales, al estar descifrados, son parecidos, pero son totalmente distintos al estar cifrados. En estos dos ipl's, el hash es el mismo, como se puede ver en la imagen:
Imagen

0o
Imagen


Los segundos 0x10 bytes parecen ser de igual manera dependientes del cuerpo descifrado (posiblemente dependientes de los anteriores 0x10 bytes de igual manera¿?)

En la imagen se puede ver que son diferentes en 4.01 y 4.05, pero pueden ser intercambiados; puedes mover esos 0x10 bytes del mismo bloque del ipl de 4.05 al de 4.01, y seguirá cargando; mas sin embargo, este cambio no puede ser aleatorio.

Esta protección de igual manera destruye cualquier posibilidad de hacer un downgrade por debajo de 4.00,
ya que estas nuevas CPU's no serían capaces de cargar previos ipl's con dichos firmwares.

En resumen: Básicamente, toda la seguridad de los nuevos cpu's de psp descansa en el cálculo de esos 0x20 bytes.

Si el pre-ipl pudiera ser dumpeado de alguna manera, esa seguridad caería TOTALMENTE.

Explicacion que fue reportada por Alek en DarkAlex.org

Re: Pre-IPL, conceptos basicos

Publicado: 10 May 2010, 00:17
por Kravenbcn
Gracias por recuperar tan buena información ;)

Re: Pre-IPL, conceptos basicos

Publicado: 10 May 2010, 01:10
por m0skit0
0xFE0 tú :lol: :lol: Buena documentación :oki:

Re: Pre-IPL, conceptos basicos

Publicado: 10 May 2010, 11:23
por Kravenbcn
m0skit0 escribió:0xFE0 tú :lol: :lol:
:juasjuas: :juasjuas:

Re: Pre-IPL, conceptos basicos

Publicado: 10 May 2010, 14:31
por Rasta
No he dicho nada... :evil: :evil:

Re: Pre-IPL, conceptos basicos

Publicado: 10 May 2010, 16:06
por darklex150
uyy, electronica yo ni un coño :(

A penas y puedo con software bien "soft" :laughing:

Re: Pre-IPL, conceptos basicos

Publicado: 10 May 2010, 16:38
por m0skit0
Rasta strikes back... Ya estabas tardando :lol:

Rasta escribió:esto es sin duda electronica pura

:juasjuas: :juasjuas: Lo que tú digas :juasjuas: :juasjuas: es pa mear y no echar gota :juasjuas: :juasjuas: Es software puro y duro :|

Rasta escribió:Esos pares de 0x20

¿De qué pares hablas? No hay pares de tamaño 0x20 en ningún lado :roll:

Rasta escribió:son parte de una multiplexacion entre la desencriptacion KIRK y los comparadores 0xFE0

¿Desencriptación? ¿Comparadores 0xFE0? :adora: No se entiende ni papa de qué pretendes decir, si es que realmente pretendes decir algo o sólo sueltas palabras que te suenan al azar :|

Re: Pre-IPL, conceptos basicos

Publicado: 10 May 2010, 17:51
por Rasta
m0skit0 escribió:Rasta strikes back... Ya estabas tardando :lol:

Rasta escribió:esto es sin duda electronica pura

:juasjuas: :juasjuas: Lo que tú digas :juasjuas: :juasjuas: es pa mear y no echar gota :juasjuas: :juasjuas: Es software puro y duro :|

Te equivocas, si fuese software se prodria haber sacado hace tiempo por otro software.
m0skit0 escribió:
Rasta escribió:Esos pares de 0x20

¿De qué pares hablas? No hay pares de tamaño 0x20 en ningún lado :roll:

Si te fijas hay dos bloques de 0x20 hasta la salida 0xFE0, en el cual el primero se subdivide por dos,
es decir dos de 0x10
m0skit0 escribió:
Rasta escribió:son parte de una multiplexacion entre la desencriptacion KIRK y los comparadores 0xFE0

¿Desencriptación? ¿Comparadores 0xFE0?

Si, he dicho eso por que me parece mas lógico, haber, cuando tu multiplexas a una dirección, tienes que tener una referencia, ahora estoy en el curro, más tarde expondré una tabla gráfica de como veo yo eso.

Re: Pre-IPL, conceptos basicos

Publicado: 10 May 2010, 18:48
por fidelcastro
m0skit0 escribió:0xFE0 tú :lol: :lol: Buena documentación :oki:


si iva por ti querido god :lol: :lol:

Bueno, muchas gracias a todos, lo encontre en un viejo disco de datos guardos y me dije, pues a la saca :lol: espero tambien aliviar dudas sobre el tema pre-ipl, y sobre todo gracias a ALEK y DAX por su magnifico trabajo :oki:

Re: Pre-IPL, conceptos basicos

Publicado: 10 May 2010, 19:01
por m0skit0
En tus dos posts estás confundiendo el tocino con la velocidad. En tu línea.

Rasta escribió:Te equivocas, si fuese software se prodria haber sacado hace tiempo por otro software.

Habló el experto hacker :roll: La Pre-IPL es software y la IPL es software. Evidentemente todo software corre encima de circuitos electrónicos, pero éstos sólo hacen lo que el software pide. Así que es software, señor experto.

Rasta escribió:Si te fijas hay dos bloques de 0x20 hasta la salida 0xFE0

A ver si te fijas tú mejor: el bloque entero al final de cada cacho de IPL es de 0x20 bytes, que DAX subdivide en 2 bloques de 0x10, y no 2 bloques de 0x20. Más claro el agua. Y no sé de qué salida hablas... Esto es software, no electrónica :roll:

Rasta escribió:más tarde expondré una tabla gráfica de como veo yo eso.

Veremos a ver qué te inventas en tu tabla.