cómo guardar correctamente una arquitectura en un fpga ic para siempre

8

Considerando que hice una arquitectura para hacer algo específico, escribí en vhdl, por ejemplo.

¿Puedo 'quemarlo' en un chip fpga, para siempre? ¿O cómo debo hacerlo, protegiendo la propiedad intelectual sabiendo que puede leerse desde la memoria flash serial?

Ratata Tata
fuente

Respuestas:

12

Los FPGA Xilinx Spartan 3AN tienen flash interno que los hace no volátiles. Su pregunta es en realidad múltiples preguntas.

1) ¿Los FPGA son volátiles o no volátiles? La mayoría son volátiles y requieren que la corriente de bits de configuración se lea en el FPGA desde un dispositivo de almacenamiento externo no volátil en cada encendido. Hay algunos que no son volátiles. Como el Xilinx S3AN que menciono.

2) ¿Cómo se protege el flujo de bits de configuración? Hay múltiples respuestas a esta pregunta.

Puedes encriptar el flujo de bits; lo que significa decir que el flujo de bits que se almacena en el dispositivo de almacenamiento no volátil discutido anteriormente es un texto cifrado único que solo puede ser descifrado por el único fpga con la clave apropiada. Esto protegerá la funcionalidad del flujo de bits para que no sea descubierta por ingeniería inversa. Es decir, incluso si el flujo de bits cifrado se puede extraer del dispositivo de almacenamiento no volátil, ya sea in situ o por medios más destructivos, no se podrá obtener sentido del archivo extraído ya que está cifrado.

También puede configurar el flujo de bits para que no se pueda volver a leer. La interfaz JTAG que se usa para programar un FPGA en el momento de depuración generalmente se puede usar para leer el flujo de bits de configuración fuera de la fpga. Establecer la opción NO_READBACK lo prohíbe.

Jotorious
fuente
1
¿Cómo puede el FPGA mismo leer el flujo de bits cifrado si no es posible descifrarlo? La respuesta es, por supuesto, que es posible descifrar el flujo de bits. Es un poco más difícil porque está ofuscado.
ntoskrnl
¿Eh? El flujo de bits de texto sin formato (llámelo Bpt) está encriptado por una función de cifrado Ek () que toma el texto sin formato y una clave secreta (llámelo Clave) para crear un flujo de bits de texto cifrado (llámelo Bct), entonces Bct = Ek (Bpt, Clave) . Esto se almacena y se transmite al FPGA, que conoce la clave secreta, por lo que puede descifrarla, Bpt = Ek (Bct, Key). Sin la clave, un tercero no puede realizar la operación de descifrado. Dado el tiempo de procesamiento y otras herramientas criptoanalíticas, el tercero podría descubrir el texto sin formato, pero no a través del proceso de descifrado previsto.
Jotorious
El atacante también podría simplemente encontrar la clave y proceder a descifrar el texto sin formato. Supongo que la clave se puede hacer bastante difícil de recuperar del hardware (por ejemplo, tarjeta inteligente), pero si se almacena en algún tipo de memoria normal, no debería ser más difícil que recuperar el texto cifrado.
ntoskrnl
1
Correcto, el cifrado es tan seguro como la clave es segura. No puedo hablar con FPGA que no son Xilinx, pero en los FPGA de Xilinx la clave no es recuperable a través de medidas no invasivas / no destructivas.
Jotorious
Este enlace cubre gran parte de esta discusión: xilinx.com/support/documentation/application_notes/…
Jotorious
7

Es posible encontrar FPGA con una memoria de programa integrada no volátil. Por ejemplo, Microsemi (anteriormente Actel) se especializa en este tipo de dispositivo.

Otros proveedores ofrecen la opción de programar enmascarados un FPGA. Por ejemplo, Xilinx llama a sus dispositivos programados con máscara FPGA " EasyPath ". Esto requiere un pago NRE, hasta donde yo sé, por lo que no es apropiado para situaciones en las que podría necesitar actualizar su diseño. (Punta de sombrero para alex.forencich para la corrección)

El fotón
fuente
2
Los FPGA EasyPath no están programados con máscara, se prueban a medida solo para su flujo de bits, lo que reduce los costos de prueba y aumenta el rendimiento (pueden tolerar defectos en componentes que su diseño no utiliza). El FPGA todavía requiere un flash de configuración con su diseño cargado para poder funcionar. Si en realidad fuera una máscara programada, la NRE sería enorme.
alex.forencich
6

Al menos puedo hablar por otros, supongo que Xilinx tendrá algo similar. Tienen la opción de cifrar el archivo que colocas en una memoria flash externa o EEPROM. Luego carga la clave de descifrado en la parte alterada, utilizando su almacenamiento de claves no volátil o respaldado por batería.

Como no puede leer la clave, protege su ip. Perdieron victorias de diseño para Asics porque no podían proteger la IP de las personas, por lo que esta es una característica bastante común.

http://www.altera.com/devices/fpga/stratix-fpgas/about/security/stx-design-security.html

Some Hardware Guy
fuente
0

La única forma de lograr esto es comprando un módulo Flash separado (si aún no tiene uno en el PGA) y cargando su código en la memoria RAM, sin embargo, esto no se recomienda para todos los problemas, solo compre algo como un CPLD si planifique la reprogramación en un momento posterior o un ASIC si no tiene intenciones de reprogramarlo nuevamente.

AlanZ2223
fuente