Leyendo el programa en un FPGA

4

Supongamos que tengo un software propietario sensible (VHDL / Verilog) en un FPGA conectado a mi servidor para poder controlarlo mediante SSH. Ahora suponga que un atacante compromete mi servidor y puede comunicarse con el FPGA. ¿Podría el atacante leer el software confidencial de mi FPGA?

    

2 respuestas

7

La corriente de bits que controla la funcionalidad de su FPGA normalmente se denomina "configuración", no "software". La corriente de bits de configuración se genera mediante el uso de herramientas de síntesis de FPGA para compilar el código fuente de Verilog / VHDL.

Hay varias formas diferentes de transferir la configuración al FPGA cada vez que se "inicia". A grandes rasgos, son:

  • El sistema de desarrollo puede cargar la configuración directamente a través de la interfaz JTAG.
  • El propio FPGA puede cargar automáticamente la configuración desde un dispositivo EEPROM conectado. El dispositivo EEPROM a menudo también se programa a través de la interfaz JTAG.
  • La CPU del servidor puede cargar la configuración desde un archivo de disco.

Si un atacante obtiene el control de la CPU de su servidor, obviamente puede leer el archivo del disco si se está utilizando la tercera configuración.

Si la CPU del servidor tiene una conexión directa a la interfaz JTAG del FPGA, entonces el atacante podría leer la configuración del FPGA directamente desde el FPGA, o indirectamente leyendo el dispositivo EEPROM.

En una aplicación sensible a la seguridad, querrá usar la segunda configuración, con el FPGA leyendo la configuración desde EEPROM, y querrá asegurarse de que la CPU del servidor funciona no tiene acceso al puerto JTAG de FPGA / EEPROM. Obviamente, tampoco almacenará ningún código fuente de FPGA Verilog / VHDL en el servidor.

    
respondido por el Dave Tweed
1

A menos que el atacante pueda reprogramar la lógica, lea el flash / eeprom / boot rom o acceda a sus archivos de programación en la computadora, la respuesta es no. Realmente no hay manera de determinar completamente la configuración del conmutador en la capa de celdas que contiene la configuración a menos que tenga acceso directo a ellos a través del puerto de programación / JTAG.

Es posible que puedas inferir algunas configuraciones en algunas situaciones, pero apenas arañarías la superficie.

    
respondido por el placeholder

Lea otras preguntas en las etiquetas