Inicio / Blog / Seguridad a través del hardware

Seguridad a través del hardware

Publicado el 07/05/2015, por Miguel Herrero (INCIBE)
Seguridad a través del hardware

Tradicionalmente la seguridad informática a la que estamos habituados siempre ha descansado en los hombros del software. La certificación de que un elemento físico es quien dice ser se ha visto tradicionalmente dificultada por procedimientos software capaces de clonar las características de los dispositivos físicos o su comportamiento. Por ejemplo aparecieron herramientas que permitían clonar la MAC de cualquier equipo, de forma que las medidas de seguridad que se basaban en esa comprobación pronto dejaron de ser útiles.

Además, en la actualidad, las etiquetas RFID se utilizan de forma masiva, para controlar el acceso a edificios, realizar transacciones económicas o almacenar información sensible como en el caso de los pasaportes electrónicos. Por desgracia, estas etiquetas pueden ser leídas y atacadas y, tal y como vimos en el artículo de NFC y pago sin contacto, han sido víctimas de algunos incidentes de seguridad.

Por tanto, las utilidades prácticas dentro del campo de la seguridad tanto física como de la información, de un sistema que permitiera certificar de forma sencilla que un dispositivo físico es verdaderamente quien dice ser (básicamente hacer device fingerprint), hacen que se hayan producido múltiples investigaciones en este campo. Las dos líneas teóricas de investigación más importantes en este sentido son aquella que busca la utilización de los Módulos de Plataformas Confiables (Trusted Platform Module o TPM) y la que busca la utilización de Funciones Físicas Inclonables (Physical Unclonable Function o PUF), de la que hablaremos a lo largo del artículo.

Las PUF son funciones embebidas dentro de una estructura física que es sencilla de evaluar (cuando se tiene acceso al dispositivo que se evalúa) pero casi imposible de predecir o de duplicar. Es el equivalente hardware a las funciones unidireccionales, o de una sola vía, funciones fáciles de calcular pero difíciles de invertir, cuya existencia no se ha demostrado pero cuyos candidatos se asumen como válidos y se utilizan con naturalidad en el mundo de la seguridad (por ejemplo con las funciones de hash criptográfico como SHA 256).

Así pues, podríamos definir una PUF como una función que relaciona una serie de pares desafíos con respuesta que se basan en la complejidad y aleatoriedad física del circuito integrado (CI), tal y como se puede ver en la Ilustración 1. El servidor de este esquema conoce perfectamente los pares entre desafío y respuesta. Cuando es necesario, le pregunta al sistema embebido el resultado de determinada PUF, que la evalúa y manda la respuesta al servidor.

Esquema PUF con pares desafío respuesta

 Ilustración 1: Esquema de PUF con pares de respuesta-desafío (Fuente: AISEC)

De esta forma no sólo se comprueba que la respuesta software es correcta, sino que también se puede comprobar, a través de las PUF, que el hardware que intenta acceder al sistema es el que debe ser, añadiendo una capa de seguridad.

Parte de la seguridad de este sistema radica en la dificultad de caracterizar el sistema, siendo tan difícil y largo el proceso, que permita al legítimo dueño percatarse de que ha sido sustraído y por tanto pueda ser revocado, garantizando de esa forma que no se puede utilizar para el acceso ilícito.

Hay dos tipos de PUF, dependiendo de si la aleatoriedad de la función está introducida de forma explícita o si es inherente al propio circuito. La aleatoriedad de la PUF lo que permite distinguir entre diferentes dispositivos utilizando la misma PUF para identificarse.

El primer tipo, de aleatoriedad introducida de forma explícita, implica modificar de alguna forma el proceso de manufactura del CI, por lo que es más complejo y costoso de implementar, aunque tienen mejor capacidad para distinguir entre dispositivos y sus variaciones apenas se ven afectadas por las condiciones ambientales. Habría dos categorías:

  • PUF Ópticas: Consiste en la inclusión dentro del CI de un material transparente dopado con partículas que provocan la dispersión de la luz, provocándose, de esa forma, una Interferometría de Speckle peculiar y única para ese dispositivo al incidir un láser sobre él. Ya que tanto el proceso de dopado de las partículas como la interacción del láser con las partículas son fenómenos tremendamente complejos, se considera imposible la generación de una interferometría de Speckle igual en dos dispositivos diferentes, por lo que la función se considera imposible de clonar.
  • PUF de revestimiento: Consiste en la fabricación, por encima del Circuito Integrado (CI), de una red de cables metálicos a modo de “tejado”. El espacio por debajo y por encima de dicho tejado se rellena de un material opaco y dopado aleatoriamente con partículas dieléctricas. Debido a la aleatoriedad tanto de la ubicación de las partículas, de su tamaño y de su rigidez dieléctrica, la capacidad eléctrica que hay entre cada pareja de cables de la red se considera aleatoria hasta cierto punto. Esta aleatoriedad se puede utilizar, entre otros, para generar un ID de dispositivo único para ese dispositivo.

El segundo tipo de PUF, los de aleatoriedad intrínseca, son sencillos de incluir en los diseños porque no necesitan modificar el proceso de manufactura del CI. Sin embargo, su respuesta se puede ver alterada por las condiciones ambientales, aunque es un efecto que también se puede eliminar. De este tipo de PUF también hay varios tipos, siendo algunos de los más importantes:

  • PUF de Retardo: Se basan en la aleatoriedad de los retardos de los cables y puertas lógicas en las obleas de los CI. Dado un desafío inicial, se establece una condición de carrera y se propaga por diferentes caminos controlando qué condición de carrera llega antes. Después con un latch (de los que usamos en electrónica, no de los que puedes probar a través de INCIBE) se almacena el resultado. Este valor puede ser diferente para una misma lógica implementada en diferentes CI usando la misma tecnología y layout debido a variaciones aleatorias de los retardos.
  • PUF SRAM: Durante la inicialización de una celda de memoria SRAM en un CI (ver Ilustración 2), los inversores con acoplamiento cruzado (transistores M1 a M4 de la imagen) no están controlados por ninguna señal, por lo que su valor en memoria tendrá un valor 1 o a 0 de forma aleatoria. Existe una alta probabilidad que una celda concreta de una memoria SRAM tenga siempre el mismo valor justo después de inicializarse.

Celda de memoria SRAM

Ilustración 2: Celda de memoria SRAM

  • PUF de Mariposa: Basadas en el acoplamiento que se produce entre dos latches. El fenómeno es similar al PUF SRAM, sólo que este puede implementarse en cualquier SRAM de una FPGA.

Según la teoría, las PUF podrían ser un elemento clave de seguridad de muchos dispositivos, entre los que podríamos destacar las tarjetas RFID. Incorporar PUF a estos sistemas podría permitir que los sistemas comprobaran además de los credenciales incorporada en la tarjeta el hecho de que la tarjeta sea realmente la que dice ser, vinculando de esta forma el contenido de la tarjeta a la tarjeta propiamente dicha.

Las PUF pueden tener además otros usos, como generadores de números aleatorios de gran entropía y de muy bajo coste. Su uso, en este caso, no puede depender de la caracterización del sistema, ya que, tal y como hemos hablado, eso únicamente permitiría generar una secuencia de números que, aunque aleatorios, serían siempre iguales para ese dispositivo. En su lugar, se utiliza la respuesta a un desafío aleatorio e impredecible, generándose, como respuesta a dicho desafío una secuencia aleatoria de números.

En la actualidad se implementan módulos PUF en algunos dispositivos electrónicos. Uno de ellos, el procesador seguro AEGIS del MIT lo utiliza para generar una clave privada con la que autenticar el procesador.

Arquitectura segura de AEGIS

 Ilustración 3: Arquitectura segura de AEGIS.

La solución sencilla para esta clave privada habría sido almacenarla en una memoria no volátil como EEPROM, Sin embargo estas memorias son susceptibles a ataques físicos que consisten en destruir el encapsulado sin destruir el chip y extrayendo eléctricamente la clave privada de la memoria (Eloi SanFelix es un experto en este campo de hardware hacking, como demostró en la RootedCON 2011 y 2012). Además integrar EEPROM en un CI es relativamente caro.

Para abaratar costes se utilizan PUF integradas en silicio del propio CI, de forma que cuando se pide la clave se ejecuta un test físico sobre el CI y se obtiene. Para evitar que un atacante pudiera capturar la respuesta al desafío, esta se enmascara mediante un hash criptográfico, que como hablamos al iniciar el artículo es una función unidireccional.