24 votos

¿Realmente es imposible saber qué está haciendo una CPU?

Los programadores de computadoras a menudo recitan la máxima de que las instrucciones x86 son totalmente opacas: Intel nos dice que están haciendo algo, pero no hay esperanza de que alguien pueda verificar lo que está sucediendo, por lo que si la NSA les dice que pongan una puerta trasera en sus RNG, entonces realmente no podemos hacer nada al respecto.

Bien, creo que los programadores de computadoras no pueden hacer nada al respecto. Pero ¿cómo podría atacarlo un ingeniero eléctrico? ¿Existen técnicas que un ingeniero eléctrico podría usar para verificar que un circuito realmente realiza las operaciones descritas en su especificación y ninguna otra operación?

5 votos

Tendrías que hacer algo así como someter el dado a un análisis por rayos X y examinar todo para ver qué está haciendo en realidad. Básicamente hacer ingeniería inversa en el chip y tener en cuenta la función de cada circuito. Totalmente imposible.

7 votos

Ningún circuito eléctrico funciona exactamente según las especificaciones debido al ruido y a la ligera posibilidad de que un día haya una falla lo suficientemente "grande".

1 votos

Hay técnicas y herramientas para revertir chips - rayos X como se dijo, microscopios y demás. Los microprocesadores modernos son bestias extremadamente complejas, por lo que dicho trabajo será extremadamente difícil, pero posible.

24voto

FakeMoustache Puntos 6645

¿Existen técnicas que un ingeniero eléctrico podría usar para verificar que un circuito realmente realiza las operaciones descritas en sus especificaciones y ninguna otra operación?

En teoría, sí, creo que es posible. Sin embargo, para una CPU compleja llevará mucho tiempo y dinero. Además, si no conoces y comprendes completamente el diseño, no podrás juzgar si alguna actividad es "legítima" o no.

Una CPU es "simplemente" un circuito digital complejo que consta de muchas celdas lógicas.

Es posible ingeniería inversa el chip y reconstruir el diseño observando las conexiones metálicas. Puede haber muchas de estas capas de conexión, como hasta 8 capas o más.

Necesitarás expertos en el campo para reconocer las celdas lógicas y luego tal vez algún software pueda averiguar cómo están todas conectadas para que puedas reconstruir el netlist.

Una vez que tengas el netlist, "conoces" el diseño. ¡Eso no significa que ahora también sepas cómo funciona!

Puede ser que una cierta función active 2 secciones del diseño mientras piensas que una debería ser suficiente, por lo que luego sospechas que está ocurriendo alguna actividad sospechosa. Sin embargo, el diseño realiza algún truco inteligente del que no sabes para acelerar las operaciones.

Sin conocer y comprender el diseño, cualquier conclusión que saques aún podría estar equivocada. Solo los ingenieros que diseñaron la CPU tienen toda la información de diseño y tienen la mejor oportunidad de poder descifrar o adivinar lo que realmente sucede o debería suceder en una CPU.

77 votos

Solo los ingenieros que diseñaron la CPU saben todo lo que sucede - Resulta que soy ingeniero trabajando en esta industria y permíteme evaluar esta afirmación como muy optimista :)

0 votos

@EugeneSh. :-) Tienes razón, cambiaré eso a Solo los ingenieros que diseñaron la CPU podrían saber todo lo que sucede

18 votos

No, los diseñadores de CPU no sabrían todo lo que sucede: el diseño a ese nivel depende de las herramientas de síntesis, las cuales podrían inyectar comportamientos más allá de lo que está en el diseño de HDL. Para poner un ejemplo no malintencionado, muchas herramientas FPGA te permitirán compilar en un analizador lógico.

14voto

jns Puntos 449

El mejor documento que he leído sobre el tema es "Stealthy Dopant-Level Hardware Trojans" (Becker et al) de 2014.

Dado que el circuito modificado parece legítimo en todas las capas de cableado (incluyendo todos los metales y polisilicio), nuestra familia de Troyanos es resistente a la mayoría de las técnicas de detección, incluida la inspección óptica detallada y la verificación contra chips "dorado". Demostramos la efectividad de nuestro enfoque insertando troyanos en dos diseños: un procesamiento digital derivado del diseño de RNG criptográficamente seguro de Intel utilizado en los procesadores Ivy Bridge y una implementación SBox resistente a canales laterales, y explorando su detectabilidad y sus efectos en seguridad.

El documento describe cómo se realiza el cambio, lo difícil que resulta detectarlo inspeccionando el silicio, técnicas para ocultarlo de la prueba de producción, y cómo puede hacerse para reducir la seguridad de un RNG criptográfico de hardware o para filtrar información clave a través de un canal lateral de suministro eléctrico en una implementación AES.

Los canales laterales son un campo emergente de interés. Intel ha sido acosado por problemas relacionados con la ejecución especulativa que filtra información de memoria que ni siquiera estaba siendo utilizada por el programa. ¿Podría haber sido eso una falla de diseño deliberada? Es casi imposible saberlo.

0 votos

¿No requeriría un canal lateral algún tipo de transmisor para enviar la información a la NSA? De lo contrario, seguramente me daría cuenta si alguien estuviera midiendo la corriente del raíl de energía en mi laptop mientras estoy trabajando en ella.

9voto

laptop2d Puntos 331

Bueno, creo que los programadores informáticos no pueden hacer nada al respecto. Pero, ¿cómo atacaría un ingeniero eléctrico esto?

No hay formas buenas de encontrar puertas traseras, una forma de encontrar una puerta trasera de hardware sería probar combinaciones o instrucciones no documentadas. Aquí hay una buena charla de alguien que realmente hace esto y realiza auditorías en hardware x86. Esto se puede hacer sin piratear el chip. Un problema con Intel (no estoy seguro de otros chips) es que en realidad tiene un procesador con Linux ejecutándose en él, por lo que también hay software ejecutándose en algunos procesadores, y no se tiene acceso a eso supuestamente.

¿Existen técnicas que un ingeniero eléctrico podría usar para verificar que un circuito realmente realice las operaciones descritas en su especificación, y no otras operaciones?

Existen formas de probar la funcionalidad utilizando el hardware mismo. Dado que x86 tiene una porción no documentada de su conjunto de instrucciones, sería inusual introducir puertas traseras en instrucciones normales porque introduciría la posibilidad de errores (como si tuvieras una puerta trasera en una instrucción de suma o multiplicación), por lo que el primer lugar para buscar serían las instrucciones no documentadas.

Si realmente necesitas probar la funcionalidad de las instrucciones regulares, podrías observar el tiempo que tarda en ejecutar instrucciones, observar la cantidad de energía que consume para ejecutar instrucciones y ver si hay diferencias con lo esperado.

0 votos

No entiendo por qué respaldarías instrucciones no documentadas. ¡Quieres respaldar funciones que la gente realmente usa!

3 votos

Yo estaría en desacuerdo, no es imposible que alguien haga esto, pero es poco probable. Digamos que pusiste una puerta trasera en una instrucción regular como una instrucción de suma, y si ejecutas una instrucción adicional que abra una puerta trasera. Luego un cliente desarrolla un programa que tenga exactamente esa combinación, lo investigan, encuentran la puerta trasera y todos se enojan y te demandan. Mucho más seguro sería poner una puerta trasera en las instrucciones no documentadas (o en las computadoras linux integradas en las CPU).

0 votos

¿Entonces cuándo se ejecutan las instrucciones con puerta trasera? ¿Puertean el compilador?

6voto

Rishi Puntos 29

La única forma sería despojar la capa de chips capa por capa y registrar cada transistor con un microscopio electrónico, y luego ingresar eso en algún tipo de programa de simulación y luego verlo funcionar.

Esto es esencialmente el problema de la Caja Negra en el que intentas reconstruir los internos midiendo las entradas y salidas. Una vez que la complejidad de los internos, o el número de E/S, supera lo trivial, hay una explosión combinatoria donde el número de posibles estados internos se vuelve astronómico. Donde se mencionan números como Googol.

2 votos

... y es más fácil robar el diseño utilizando ingeniería social :)

8 votos

No. El error evidente aquí es que simulación no sería suficiente. Incluso si te dieran un modelo de simulación preciso, aún así no podrías encontrar un comportamiento cuidadosamente oculto, porque no tienes idea de cómo desencadenarlo.

4 votos

@ChrisStratton Yo no llamaría a ese error llamativo. Es una suposición razonable que el diseño se basó en hacer simplificaciones que son físicamente habituales, por ejemplo, que no se colocan dos trazos de metalización tan cerca que acoplen inductivamente lo suficiente como para cambiar el estado de una compuerta de MOSFET. Eso solo es un error si a) tus simplificaciones no coinciden con el modelo físico de lo que usó el diseñador o b) el diseñador está ocultando algo intencionalmente al romper intencionalmente los requisitos de estas simplificaciones de manera no obvia.

5voto

emrys57 Puntos 386

Comprobar que la CPU no está haciendo algo astuto es extraordinariamente difícil. El ejemplo clásico es una máquina de votación. Si tiene un solo bit que copia tu voto y luego lo envía secretamente a algún dictador, podría ser cuestión de vida o muerte para ti en algunos lugares. Y demostrar que no hay un solo bit así entre miles de millones es bastante difícil.

Puedes pensar en aislar físicamente el chip, para poder ver que no hay conexiones de cables inapropiadas. Y colocar otro chip, o más de uno en serie (de diferentes fuentes) en su conexión de red que garantice que solo se conecta al lugar correcto. Luego reiniciarlo después de que haya entregado tu voto. Y esperar que no haya bits no volátiles ahí. O conexiones inalámbricas astutas. Pero ¿confiarías tu vida en eso?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X