sábado, 27 de diciembre de 2008

Ingeniería inversa de circuitos integrados

En esta interesantísima charla una persona que se dedica a hacer ingeniería inversa de chips de seguridad ha contado todo el proceso por el cual se coge una tarjeta inteligente que guarda un algoritmo secreto o una clave maestra y se encuentra.
Lo primero es el objetivo: coger una tarjeta y extraer su clave es de utilidad limitada, pues ya se tiene la tarjeta de todas maneras. Sin embargo muchas tarjetas basan su seguridad no sólo en que la clave es secreta, sino también en que el algoritmo de cifrado es secreto (por ejemplo, porque es un algoritmo débil, o se basa en una clave maestra que sirve para generar la clave de cada usuario), por lo que obtener ese algoritmo puede comprometer a todas las tarjetas.
El proceso de ingeniería inversa no requiere grandes gastos (pero sí sustancias peligrosas, como ácido fluorhídrico o nítrico:
  • Primero se obtiene el chip de silicio desnudo: por ejemplo, en el caso de una tarjeta de crédito, se disuelve el plástico en acetona y el epoxy del encapsulamiento en ácido nítrico.
  • A continuación, el proceso más lento: mediante una pasta de pulir, se va quitando micra a micra todo el chip y se va haciendo foto de cada capa, con un microscopio que no tiene que ser muy caro (se cita que puede estar en el entorno de $1000, con 500x de ampliación, pero sólo necesita una cámara de 1 MP). Se pueden conseguir mejoras si se usa microscopía confocal o ácido fluorhídrico (que quita unas partes del chip pero no otras).
  • A partir de ahí, hay que ir recreando el diseño del chip capa a capa, empezando por los transitores, de ahí a las puertas lógicas y de ahí a las funciones. En estas fases, los presentadores han desarrollado sus propias herramientas de ingeniería inversa que permiten detectarlas puertas lógicas, otra que busca funciones lógicas comparando los patrones de puertas (pendientes de publicar) y por último herramientas de trazado que permiten trazar las conexiones metálicas entre puertas lógicas (no tengo claro quién hace éstas, ni si están publicadas).
Como pertenece a una empresa que se dedica a la ingeniería inversa, ha mencionado que prácticamente es muy difícil utilizar contramedidas para evitar la ingeniería inversa:
  • La mayor parte de las herramientas de ofuscación (poner puertas que no sirven, mezclar las trazas metálicas) sirven para confundir a los humanos, no para confundir a los programas, que pueden seguir el recorrido de salida hacia el origen sistemáticamente.
  • El tamaño sí importa: un chip suficientemente grande desafía a los programas que ellos tienen (por ahora)
  • Chips con capas no planas: antiguamente, cuando había pocas capas metálicas, los chips no se alisaban entre una capa y otra, por lo que al quitar capa a capa se encuentra uno trazas 3d difíciles de depurar. Ahora, para poder depurar los chips, ese aplanamiento es obligatorio. Posiblemente un número elevado de capas también sería difícil de superar.

No hay comentarios:

Publicar un comentario