¿Cómo confiar en los IC?

11

Aunque teóricamente es posible examinar a fondo el código fuente del software de código abierto para verificar las puertas traseras (descuidando un hack de Ken Thompson ), y con un conocimiento suficientemente adecuado en Ingeniería eléctrica , es probable que se pueda averiguar qué puede hacer un circuito observable dado, cómo puede ¿Uno siempre se asegura de que un Circuito Integrado haga lo que se supone que debe hacer y nada más (al menos a propósito)?

Como ejemplo, ¿cómo puede uno estar seguro de que un chip TPM no llame a su agencia de seguridad local cuando lo desee, por ejemplo? ¿A través de un módem GSM integrado o un puerto Ethernet con puente?

E incluso si los esquemas de hardware abierto, ¿cómo podría uno estar seguro de que el fabricante (que probablemente no le permita supervisar la producción súper secreta de su chip individual) no agrega sus propias "optimizaciones"?

    
pregunta Tobias Kienzler 13.01.2014 - 09:49
fuente

4 respuestas

10

Teóricamente, para determinar lo que hace un chip, lo separas y haces ingeniería inversa. En la práctica, esto será casi imposible de hacer. En realidad, incluso para software , para el que tiene el código fuente , no puede garantizar que el código realmente haga lo que usted cree que hace (de lo contrario, podríamos producir código libre de errores).

Este no es un problema nuevo, y las agencias de inteligencia (un oxímoron) lo han encontrado muchas veces. Cuando la CIA quiere asegurarse de que las computadoras en la Casa Blanca no estén llenas de puertas traseras controladas por los chinos, ¿qué hacen? Bueno, ciertamente tienen un vistazo a los chips para cualquier cosa obvia (un módem GSM integrado tiene un tamaño mínimo; se puede ver con un escaneo de rayos X del chip). Sin embargo, en última instancia, se basan en métodos de investigación clásicos que han demostrado su eficacia desde los días de Julio César: el seguimiento de la fuente de cada componente, quién los diseñó, quién los produjo, quién los transportó, etc., con verificaciones de antecedentes de todos Individuos involucrados, y auditoria de los procedimientos. Esto no es muy diferente del "software certificado" (por ejemplo, Common Criteria ), para el cual el diseño, las especificaciones, los antecedentes de los desarrolladores y las metodologías de desarrollo son inspeccionado.

Una forma de verlo es que el hardware no es malo, la gente lo es. Así que comprueba la gente, no el hardware.

En el caso de la CIA, esto significa que mucho preferirán los chips de Taïwan sobre los chips de China continental.

    
respondido por el Tom Leek 13.01.2014 - 15:06
fuente
7

Solo para aclarar las cosas.

Me parece que hay dos preguntas distintas aquí: "¿Tengo que confiar en mi fabricante?" y "¿Puede un TPM ser malicioso?".

Aquí hay algunos comentarios sobre el segundo:

Un TPM simplemente no puede hacer ese tipo de cosas, es un dispositivo pasivo / tonto. Normalmente se conecta a través de un bus estándar (LPC). Mientras que el LPC tiene acceso DMA a través de la interrupción LDRQ #, el TPM no tiene acceso a esa interrupción. En otras palabras, no puede acceder al motor DMA ni puede comunicarse con otros dispositivos por sí mismo. Cualquier ataque que el TPM pudiera realizar tendría que ser pasivo, como un ataque de canal lateral.

Los nuevos TPM implementados por Intel en realidad se ejecutan como una aplicación dentro del Platform Controller Hub, antes conocido como Memory Controller Hub, también conocido como Northbridge. Se ejecutan sobre Intel Management Engine a un lado AMT y se incluye en el paquete insignia vPro. Puede ver el ME de Intel como un sistema operativo que se ejecuta en ring -3 ya que se ejecuta en una CPU completamente separada (no en su CPU principal) y tiene acceso completo a la memoria de la memoria del sistema (a través de Intel UMA). Por lo tanto, alguien podría argumentar que esos iTPM (TPM integrados, de hecho, es una aplicación que se ejecuta en ME) tienen la capacidad de estar activos y hacer el tipo de cosa que describe.

En ese punto, la pregunta es, ¿podría alguien backdoor Intel ME / AMT? Si es posible. Es poco probable, pero posible. Necesitaría explotarlo , o necesitarías las claves de firma ME. Además, volviendo a su primera pregunta, ¿podría su fabricante backdoor Intel ME / AMT? Misma respuesta.

p.s. en algún momento, la historia detrás de BadBIOS se convirtió en un cuestionamiento de si esto realmente estaba sucediendo (es decir, un exploit muy poderoso y portátil).

    
respondido por el northox 24.03.2014 - 23:39
fuente
6

Hice una charla en Blackhat hace unos años (en realidad 10 ahora) que revisó Trusting Trust: enlace

Seguí con un artículo escrito para Linux Journal en 2005: enlace

He estado investigando este tema durante casi 15 años y puedo decirle que lo mejor del artículo de Thompson es que, a menos que verifique CADA componente de su entorno, no puede hacerlo. Si bien la lógica le dice que un troyano de hardware o software puede tener un blob binario sospechoso que hace una cáscara inversa, en realidad podría ser mucho más sutil. El artículo de 2005 resaltó un ejemplo de cómo crear un código auxiliar para strncpy y usar Strcpy. Si observara los símbolos de la compilación posterior, todo se vería bien, pero en cualquier lugar en el que piense que el desbordamiento del búfer ha sido detenido por strncpy ahora se convierte en un vector de ataque.

Cuando se trata de hardware, este proceso es aún más difícil porque no puedes simplemente ejecutar cadenas en el binario. Una combinación de preocupaciones y leyes de propiedad intelectual mantiene en secreto muchas de las operaciones más bajas de algo así como un dispositivo móvil. Jailbreaking ha tenido cierto éxito al abrir esta caja negra, pero no una tonelada.

Echa un vistazo a este blog que escribí en respuesta a la vulnerabilidad de iPhone SMS en 2009: enlace Una gran cantidad de reacciones instintivas a este error fue que AT & T desactivara el plan de SMS para el iPhone y la gente se sintiera segura. En realidad, incluso si no tiene un plan de SMS, su teléfono recibe actualizaciones especiales de SMS de la operadora que hacen cosas como la optimización de la red, las actualizaciones de la torre, etc. Una puerta trasera en el dispositivo podría ser tan simple como presionar una actualización de la torre. En su teléfono que le indica que el catéter IMSI en su vecindario es una torre oficial y está bien para nosotros.

En resumen, a menos que fabrique todos los componentes, escriba todo el software, sea el propietario de la compañía telefónica y sea capaz de aprobar leyes favorables para la investigación, no puede saber si su dispositivo está bloqueado.

    
respondido por el dmay 14.01.2014 - 15:02
fuente
1

No puedo responder completamente "cómo confiar", pero quiero contribuir al menos con una idea útil. Como ya se dijo en las otras respuestas, hay dos opciones:

  1. Haces todo tú mismo (el IC), con esto tienes una buena base para la confianza.
  2. Puedes tomar algo ya hecho, analizarlo y probarlo.

Si bien estas opciones presentadas sobresalen en su atributo de obtener un nivel de confianza total, obviamente son impracticables. El precio a pagar por el fideicomiso, en términos de tiempo y esfuerzo material, es enorme.

En parte, la idea que quiero agregar como una alternativa limitada a las dos opciones presentadas, puede depender de sacrificar cierta comodidad o funcionalidad. La lógica de la idea es que:

  1. Ya que no podemos ver los componentes de información (por ejemplo, el chip TPM, el procesador Intel AMT en anillo -3 ...) no podemos confiar en ellos. No podemos ver el insight debido a la complejidad y la miniatura del componente.
  2. Por la misma razón (complejidad y tamaño) tampoco es posible reemplazarlos con sustitutos hechos a sí mismos.
  3. Bajo la disposición de que los componentes tienen una separación física manejable (es decir, que son chips separados), así como una separación funcional (es decir, su funcionalidad no es "todo"), sería posible implementar un esquema en el que modifique el hardware de manera que pueda separar los componentes entre sí a través de una interfaz lógica propia y, por lo tanto, de diseño y control confiables.

Para llevar esto de un resumen a un nivel más práctico, permítame ilustrarlo con un ejemplo.

Suponemos que tiene un IC malicouis en su sistema que, como se sugiere en su pregunta, usaría GSM / communication para enviar datos a un atacante. Dado que satisfacemos 3 y la funcionalidad de su IC no depende de la comunicación y, por lo tanto, se puede separar funcionalmente de ella, así como de la separación física de un dispositivo de comunicación (supongamos que el único GSM / módem disponible fue un dispositivo USB insertado), entonces puede confiar su IC no debe enviar los datos al atacante si el dispositivo USB no está físicamente conectado y está conectado funcionalmente.

Al igual que en el software (como, por ejemplo, se puede ver en el LSM como apparmor), la idea es limitar cada IC por aislamiento / separación solo a la conexión necesaria funcional necesaria.

Si bien es posible que sea imposible fabricar un IC complejo, es mucho más posible hacer uno mucho menos complejo que simplemente se conecte a pedido (es decir, a través del software) a través de los interruptores de hardware de los componentes según su necesidad actual. Al limitar la conexión disponible, se puede ganar algo de confianza.

    
respondido por el humanityANDpeace 31.01.2015 - 23:48
fuente

Lea otras preguntas en las etiquetas