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.